> Make the root of the workspace a virtual manifest. It might
> be tempting to put the main crate into the root, but that
> pollutes the root with src/, requires passing --workspace to
> every Cargo command, and adds an exception to an otherwise
> consistent structure.
> Don’t succumb to the temptation to strip common prefix
> from folder names. If each crate is named exactly as the
> folder it lives in, navigation and renames become easier.
> Cargo.tomls of reverse dependencies mention both the folder
> and the crate name, it’s useful when they are exactly the
> same.
Source:
https://matklad.github.io/2021/08/22/large-rust-workspaces.html#Smaller-Tips
Exposes a new method from the SessionBuilder: `desktop_size`
This function takes a `DesktopSize` object that will be used during
the handshake.
Issue: ARC-136
- Fixes a bunch of typos
- Moves gigantic HEX-string represented binaries to separate `*.bin` files in crates\graphics\src\zgfx\mod.rs (it was messing with typos check)
This adds support for RDP6 32bpp bitmaps.
- RDP6 RLE implementation
- `RDP6_BITMAP_STREAM` pdu parsing
- New CLI arguments to select color depth and color reduction
- Unit tests and fuzzing for implemented functionality
Test bpp32 mode without lossy compression (RGB colorspace)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 <IP_ADDRESS>
```
Test bpp32 mode with lossy compression (YCoCg colorspace, subsampling, color loss)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 --lossy-bitmap-compression <IP_ADDRESS>
```
Issue: ARC-149
This replaces `x509-parser` crate with `x509-cert` crate:
- `x509-cert` crate has less dependencies, and
- we have common dependencies with it (`der` crate).
This adds the `shutdown` method to `Session`.
The body is not yet implemented, but frontend code can be modified
to call it as of now.
Once the implementation is complete, no change on frontend code
will be required.
- Remove Tauri client.
It was useful when initially prototyping the Web Component, but now
it’s more of a maintenance burden. It’s notably not convenient to
check in CI. Since we now have another native alternative that does
not require any GPU (`ironrdp-client`), it’s probably a good time to
part ways.
- Move wasm package into the workspace.
- Move Rust crates into a `crates` subfolder.
- Introduce `xtask` crate for free-form automation.