-
Version 0.16.0 - Windows
All checks were successfulRust / build (push) Successful in 2m1sreleased this
2025-07-12 12:51:00 +02:00 | 0 commits to main since this release- BREAKING:
inherent
, added in v0.15.1, has been removed. - BREAKING: the
Grid
trait has been split intoGrid
andGridMut
.- As the name suggests, one is read only while the other can also write.
Grid
previously required impls to provide panicing variants (get
,set
) and hat default implementations for the non-panicing variants (get_optional
,set_optional
). Now it is the other way around to avoid double checking.
- BREAKING: Some methods of structs have moved into methods of traits. See features.
- BREAKING:
CharGrid::load_utf8
has been removed. - FEATURE: Added
Window
andWindowMut
as 2D equivalents of a slice- They can be created for any
Grid
orGridMut
and implement those traits themselves. - Windows are defined by their x- and y-ranges in the original grid.
- Windows into windows and zero-sized windows are both supported.
- They can be split into two horizontally or vertically.
- The contents can be copied into a new
ValueGrid
. .window
and.window_mut
helpers have been added to containers. For windows, those will also pre-compute the ranges while reducing type nesting.
- They can be created for any
- FEATURE: Moved
ValueGrid
methodsget_col
,set_col
,get_row
andset_row
into theGrid
/GridMut
traits, making them available for windows and bitmaps as well. - FEATURE: Moved
CharGrid
methodsget_col_str
,set_col_str
,get_row_str
andset_row_str
into the newCharGridExt
/CharGridMutExt
traits, making them available for windows as well.
- BREAKING:
-
Version 0.15.2
All checks were successfulRust / build (push) Successful in 1m59sreleased this
2025-07-03 19:25:17 +02:00 | 19 commits to main since this release- FIX: UnexpectedPayloadSize { actual: 0, expected: 0 } when loading a command only packets
-
Version 0.15.1
All checks were successfulRust / build (push) Successful in 1m54sreleased this
2025-06-28 08:35:39 +02:00 | 24 commits to main since this release- FEATURE: most types now implement
Hash
- FEATURE:
Grid
trait functions are now inherent to the implementing types, so they can be used without an additional import
- FEATURE: most types now implement
-
Version 0.15.0
All checks were successfulRust / build (push) Successful in 1m55sreleased this
2025-05-24 13:45:17 +02:00 | 29 commits to main since this release- FEATURE: Several types are now
Copy
, includingBinaryOperation
and ZST commands. - FEATURE: CharGrid now accepts inexactly sized
str
s forset_row_str
andset_col_str
. - FEATURE: Many conversion functions have been implemented for references. In many cases, this can be used to reduce the number of allocations needed. This also makes it possible to send a reference to a command.
- FEATURE: Packets can now be serialized to a preexisting buffer.
rand
has been updated to v0.9 for better compatibility with the 2024 edition of rust.- The packet payload is now
None
instead of a zero-lengthVec
.
- FEATURE: Several types are now
-
Version 0.14.1
All checks were successfulRust / build (push) Successful in 1m56sreleased this
2025-05-04 12:06:21 +02:00 | 45 commits to main since this release- FIX: many examples used
UdpSocket::bind
instead ofUdpSocket::bind_connect
- FIX #5: The display now stops reading UTF-8 chars for the
CharGridCommand
when encountering a null byte. The library has been changed to add spaces instead.
- FIX: many examples used
-
version 0.14.0
All checks were successfulRust / build (push) Successful in 1m54sreleased this
2025-05-03 11:48:56 +02:00 | 49 commits to main since this releaseThis is a big breaking change for the library.
- BREAKING: To support commands implemented outside the library, the
Command
enum has been renamed toTypedCommand
. - BREAKING: Connections have been removed. While this sounds like a huge change, the connections were thin wrappers around the underlying transports.
- BREAKING: The commands have been renamed to better reflect their usage.
- BREAKING: Nearly all calls to
panic!
,.unwrap()
and.expect()
have been removed and signatures changed to reflect that. Apart from out-of-bounds accesses on the containers, the library will not crash your app anymore. - BREAKING: The
BitVec
type alias has been renamed toDisplayBitVec
because of an issue in cbindgen that affectedservicepoint_binding_c
. - FEATURE: Add
UdpSocketExt
to easily use aUdpSocket
in a way similar to the old connections. - FEATURE:
Command
is now a new trait that gets auto-implemented if the required supertraits are. - FEATURE: Each command is now a struct with public fields. This means a command can be mutated and functions can declare specific types in their signatures.
- FEATURE: Containers like
CharGrid
andBitmap
have gotten newTryInto
implementations for their command struct. That means to send a bitmap to the top left of the screen with default compression, you can writeBitmapCommand::from(bitmap)
. - FEATURE: Some structs and enum values have been annotated with a
repr
attribute to make them usable in language bindings.
Migration Guide
- Some functions now return
None
orErr
when called improperly. To keep the old behavior, add an.expect()
or.unwrap()
. - Replace usages of
servicepoint::BitVec
withservicepoint::DisplayBitVec
.
Connection
Connection::Fake
can be replaced byFakeConnection
- though the usefulness of that decreased.Connection::Websocket
does not have an equivalent anymore. You should use tungstenite directly by first turning the command into a packet and then the packet into aVec<u8>
.- Instead of
Connection::open
useUdpSocket::bind_connect
after addingUdpSocketExt
to the imports. - Instead of calling
socket.send(command)
, usesocket.send_command(command)
.
Command names
v0.13 v0.14 Command::Clear ClearCommand Command::Utf8Data CharGridCommand Command::Brightness GlobalBrightnessCommand Command::BitmapLinearWin BitmapCommand Command::Cp437Data Cp437GridCommand Command::CharBrightness BrightnessGridCommand Command::HardReset HardResetCommand Command::FadeOut FadeOutCommand Command::BitmapLegacy BitmapLegacyCommand Command::BitmapLinear BitVecCommand { operation: Overwrite } Command::BitmapLinearAnd BitVecCommand { operation: And } Command::BitmapLinearOr BitVecCommand { operation: Or } Command::BitmapLinearXor BitVecCommand { operation: Xor } Known issues
- The examples use
UdpSocket::bind
instead ofbind_connect
, which makes them crash at runtime because the system call fails. This is fixed in v0.14.1
- BREAKING: To support commands implemented outside the library, the
-
version 0.13.2
All checks were successfulRust / build (push) Successful in 2m10sreleased this
2025-02-17 22:42:55 +01:00 | 106 commits to main since this release- The language bindings are not part of the main repository anymore. Links to the new repositories can be found in README.md.
- FEATURE:
impl Default for CompressionCode
- FIX: building the library without any features enabled works as expected
-
version 0.13.1
All checks were successfulRust / build (push) Successful in 7m22sreleased this
2025-02-15 12:19:00 +01:00 | 115 commits to main since this release- Metadata changes
- More tests
-
version 0.13.0
Some checks failedRust / build (push) Has been cancelledreleased this
2025-01-16 21:33:01 +01:00 | 132 commits to main since this release- BREAKING: slight API restructure, everything public is now in the top level crate
- FEATURE:
Command::Utf8Data
to send text without any encoding issues - FEATURE:
ValueGrid::wrap
andCharGrid::wrap_str
-
version 0.12.0 Stable
released this
2024-11-23 22:57:46 +01:00 | 143 commits to main since this release- BREAKING: new bindings based on UniFFI
No changes to the rust library.