Borrowing a descriptor requires it to be open at that moment, so the
broker entry cannot check a raw number through a borrow. Check both
numbers with getsockopt first, as main did, which keeps the rejection of
closed descriptors and makes the borrow's safety claim true.
The entry exits 126 either way, so this only restores the contract. Pin
that rejection with an integration test against the real binary.
Detach from the terminal with rustix and std, and drop the remaining
unsafe process, poll, and shutdown calls from the tests through small
shared helpers. Prune the rustix features nothing ended up using, and
record which call sites stay on libc and why in the agent guidance.
The local gate serializes tests because of a native font race. nextest
gives each test its own process, so the whole suite can run in parallel
while iterating. It is local only: it skips doctests and the isolated
render tests, so the gate stays as it is. Add it to the Nix shell.
Add deny.toml and a dependency-policy job covering the whole workspace.
Bans, licenses, and sources block; advisories report without blocking,
so a newly published advisory cannot fail an unrelated pull request.
zbus 6 absorbed zvariant, zvariant_derive, and zbus_names, so RustSec
now lists them as unmaintained. ksni still requires zbus 5, so those
advisories are ignored with that reason until it moves.
Both packages now state their MIT license instead of leaving the check
to detect it. The configurator is marked publish = false: it has an
unversioned path dependency and cannot be published.
- Run the daemon overlay fixture as the test binary itself: a startup hook
runs the production readiness handshake, and a child that exits before
readiness is the same binary launched under a dedicated name. The launch
error text stays as it was; per-candidate failures stay on a typed error.
- Port the GTK popup Wayland proxy to Rust, reading message layouts from the
protocol tables compiled into wayland-client and wayland-protocols.
- Move the process-site, config-writer, and shared-dependency guards to Rust
tests in tests/repository_guards, run by every cargo test, retire the C#
copies, and add a guard that keeps Python out.
- Make version check, bump, and release tags C# only, keeping the
packaging-hotfix rules, and restore the code-health report's status lines.
- Require the .NET SDK for tools/lint-and-test.sh, which runs the same plan
as ci lint-and-test, and drop Python from Nix inputs and CI packages.
* feat(boards): add Cartesian and isometric paper backgrounds
Integrate session appearance editing, recovery, configurator templates, previews, eraser-safe rendering, and PNG/PDF exports. Avoid redundant paper rendering on cache hits and preserve pending edits when using the visible palette.
* docs: clarify Rust readability and whitespace checks
* feat(boards): improve paper editing and picker menus
Add a scalable paper editor with a size slider, typed spacing, wheel controls, and a configurable Edit Board Paper action. Expose paper, rename, and pin actions through board menus with matching rendering, cursor, hover, and click priority.
Consume the release after outside menu dismissal so the picker stays open and underlying controls remain untouched. Cover board and page menu dismissal and subsequent clicks through the real pointer router.
Validation: tools/lint-and-test.sh passed, including strict Clippy, all-feature and no-default-feature workspace tests, and isolated rendering checks. The dismissal regression failed before the fix and passes with it.
* feat(menus): add cascading submenus with delayed hover navigation
* feat(shortcuts): unify key glyph labels across the overlay
Use shared glyphs and short key names in shortcut labels and the input HUD while preserving canonical config and terminal spellings. Keep help and command-palette search matching canonical key names, and give narrow keycaps a consistent minimum width.
Validation: formatting and whitespace checks passed. The preceding review reported 4,623 passing all-feature library tests with 10 ignored; full CI and manual UI validation were not run for this patch.
* feat(boards): edit paper drafts with the color picker
Open the color popup on the paper draft while preserving Apply and Cancel. Keep colors opaque, hide unsupported controls, and prevent wheel input from reaching the underlying sheet or page grid. Always restore the accepted target color when typed shorthand returns to the opening value.
Remove the board-paper validation artifacts and update the architecture reference.
Validation: the full tools/lint-and-test.sh gate passed, including packaging and repository tools, strict Clippy, all-feature and no-default-feature workspace tests, and isolated rendering tests.
Move action, tool, color, and board identities into a dependency-light domain layer. Preserve existing public paths through direct re-exports and pin serialization, schema, rendering, and boundary compatibility with focused tests.