14 Commits
Author SHA1 Message Date
devmobasa b7bfbd6df6 fix(broker): validate inherited descriptors before borrowing them
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.
2026-10-30 22:53:29 +01:00
devmobasa 66e9259f6f refactor: finish moving kernel calls off raw libc
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.
2026-10-30 20:13:25 +01:00
devmobasa 1dafb9385b docs: add nextest as the fast local test run
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.
2026-10-30 19:25:15 +01:00
devmobasa e009114d63 ci: enforce a dependency policy with cargo-deny
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.
2026-10-30 19:25:05 +01:00
devmobasa 0cd97c313c chore: update Rust toolchain to 1.99.1 2026-10-27 10:13:17 +01:00
devmobasa 46302a300a docs(agents): describe the newly enforced Rust style rules
State the rules behind the pedantic lints in plain terms, and note that
pedantic lints are enabled one at a time, never as the whole group.
2026-10-26 14:31:40 +01:00
devmobasa 87e1d057f7 refactor: standardize Rust style across the workspace 2026-10-22 09:26:12 +02:00
devmobasa 36a83dc9e6 refactor(tooling): remove Python from tests, guards, and release tools
- 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.
2026-10-04 18:38:34 +02:00
devmobasa 53d122a5ba feat: board grid backgrounds - Cartesian and isometric board paper (#390)
* 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.
2026-09-13 17:59:41 +02:00
devmobasa fb8fa95477 fix: preserve input release ownership and upgrade to Rust 1.98.1 2026-09-04 22:24:07 +02:00
devmobasa 71345ff988 docs: align repository guidance with GTK configurator 2026-08-05 15:41:12 +02:00
devmobasa ac4ea4ed25 refactor(domain): centralize shared value types
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.
2026-07-17 00:32:42 +02:00
devmobasa ff1fa49807 refactor: unify binary and library module graph 2026-07-14 16:51:36 +02:00
devmobasa e5c2633822 docs: add repo-wide and module-scoped AGENTS guidance 2026-06-27 17:36:08 +02:00