enBoxer/src
en 863f7e584e Round 6 (Grok verification): fix the live-path breakers.
Grok round-6 verification was No-Go. Fixes:

A. LayoutSlot.id was written as 0 by every constructor
   (generate Stacked/Grid/main_strip, capture_from, the GUI pad
   literals), so the find-by-id lookups in resize_slot / move_slot
   never hit a tile and Free-mode Apply size/position always
   failed with "no layout slot for slot id N". Constructors now
   assign real 1-based ids (index+1, out.len()+1, i+2 for the
   strip); capture_from uses the slot id from the window tuple.
   layout::apply and reset_slot_lock now find the tile by id
   instead of by Vec index.

B. The `slots` IPC formatter emitted "{id} 0x{address} ..." while
   addresses already carry their own 0x prefix ("0xa"), producing
   "1 0x0xa ..."; the parser split on whitespace so any multi-word
   window title broke the field alignment. Both sides now use a
   tab separator and the address passes through unchanged.

C. examples/profile.yaml still shipped the dropped schema
   (window_match block + passthrough list). Replaced with a note
   that matching is by process tree and every mapped hotkey is
   intercepted.

D. CHANGELOG 0.1.0 still advertised passthrough (lines 19, 24)
   and window_match (27, 78). Annotated as removed.

E. Lying comments: launcher.rs called the prefix "per-team" (it is
   per-character); gui.rs::arm_auto_apply doc claimed it matched a
   regex.

F. arm_auto_apply still hardcoded an empty spawned-pid set and
   fell back to matching any client with a non-empty class -- the
   round-4 Item-3 placeholder was what actually ran. It now takes
   the real child pid and matches via pid_is_ancestor.

G. spawn_plan dropped the Child with no wait thread (zombie, same
   bug round-6 fixed in launch_game). Now reaps in a background
   thread.

H. page_session never refreshed the games list, so the dropdown
   was empty on first paint. Added a games_loaded flag and a
   one-shot refresh_games on first paint.

Plus: vfx env-var test race. toplevel_enabled_defaults_off_... and
capture_toplevel_is_gated_when_disabled both touch
ENBOXER_ENABLE_TOPLEVEL and cargo runs unit tests in parallel, so
the gated test intermittently saw the var set by its sibling (the
per-function `static` in session.rs does not serialise across
functions). Added a module-level ENV_LOCK in vfx::tests and
guarded both tests. Verified with three consecutive full runs.

Also: clippy unnecessary_cast in main_strip, and two rustdoc
warnings (raw <pid> and Arc<GbmDevice> read as HTML tags).

cargo test 103/103 (x3); clippy --all-targets -D warnings clean;
cargo doc --no-deps clean.
2026-09-17 08:24:03 +02:00
..
engine.rs Item 2 (Grok round 4): isboxer-style keybind tree UI. 2026-09-17 07:26:39 +02:00
games.rs Item 4 (Grok round 4): Session game-launcher dropdown. 2026-09-17 05:43:21 +02:00
gbm_runtime.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
gui.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
hotkey.rs Round 5 batch A (Grok review): games.yaml seed, pending_ipc fix, doc residue, dead passthrough_id. 2026-09-17 07:40:24 +02:00
hypr.rs Item 1 (Grok round 4): window layout manager rewrite + free-arrange mode. 2026-09-17 07:22:13 +02:00
launcher.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
layout.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
lib.rs Item 4 (Grok round 4): Session game-launcher dropdown. 2026-09-17 05:43:21 +02:00
lutris.rs Finish the project (T7..T15): layout wizard, broadcast, overlay, dmabuf, teams 2026-09-15 17:18:37 +02:00
macros.rs Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
main.rs Item 5+6 (Grok round 4): default profile name -> team, drop passthrough feature 2026-09-17 05:38:59 +02:00
overlay.rs Sweep: drop remaining T10/stub/follow-up markers 2026-09-16 17:16:16 +02:00
process.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
profile.rs Round 5 batch B (Grok review): live wiring for items 2, 4, 5, 6, 7, 9. 2026-09-17 08:16:05 +02:00
session.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
team.rs Item 3 (Grok round 4): replace regex window matching with process-tree tracking. 2026-09-17 05:42:06 +02:00
toplevel_export.rs toplevel_export: capture_via_export docstring contradiction (Grok round 3 #11) 2026-09-16 17:33:25 +02:00
vfx.rs Round 6 (Grok verification): fix the live-path breakers. 2026-09-17 08:24:03 +02:00
wayland_layer.rs Overlay: thread can be stopped externally instead of detaching (Bug #5) 2026-09-16 08:06:12 +02:00