| Age | Commit message (Collapse) | Author |
|
Iterated the Phase-0 spike from "self-verified headless" to "works on the
CF-AX3": a live, 3D-tilted client window you can type into, with a visible
cursor and pointer/touch routed through the transform. Real-seat confirmed.
Safety / escape (a black-screen lockout had forced reboots):
- session escape hatch on --run (mirrors src/input.cpp): Esc + Ctrl+Alt+Backspace
quit, Ctrl+Alt+F1..F12 VT-switch, SIGINT/SIGTERM clean-terminate.
- 15s DEAD-MAN auto-exit, reset by pressing P (also a keyboard-liveness probe);
UNBOX_SPIKE_TIMEOUT overrides. Guarantees the spike can never lock the machine.
- persistent crash-survivable log at $HOME/rml-spike.log (UNBOX_SPIKE_LOG),
fflush+fsync per line (was on tmpfs /tmp -> lost on reboot); loud diagnostics
for backend/modeset/client-connect/map/import.
Black screen / no window fixes:
- present path works on real DRM+gles2 (blue bg + marker confirmed on panel);
dark-blue clear + marker rect make "empty vs not-presenting" diagnosable.
- xdg wired from new_toplevel/new_popup (was new_surface -> no role -> no
configure -> client never mapped); foot now maps as a live surface element.
- WAYLAND_DISPLAY exported so spawned clients connect.
Interactivity:
- keyboard focus enter + key forward to the focused client (was never sent
without a pre-existing keyboard device); typing reaches foot.
- visible wlr-plane cursor (xcursor theme load + set; never drawn into RmlUi).
- pointer + touch hit-tested via RmlUi pick through the 3D transform, mapped to
surface-local, forwarded via wl_seat (criterion-3 pointer confirmed at edges).
Live update loop (was frozen on frame #1):
- send wlr_surface_send_frame_done to all mapped surfaces+subsurfaces each frame
(client lives as an imported texture, not a wlr_scene node).
- re-import the surface's CURRENT buffer per commit, gated on the surface commit
SEQUENCE not the buffer pointer (foot recycles a buffer pool -> same pointer,
new contents); double-buffered wlr_buffer lock/release so the client is never
starved. reimports now track commits ~1:1 (was capped 3:1).
--verify ALL PASS (criteria 1-7), kernel suite green, build + build-asan clean.
Spike target stays build_by_default:false, out of the shipped binary.
|
|
Transparent distributed compilation: setup-distcc.sh configures ccache
(prefix_command=distcc) + ~/.distcc/hosts locally and a locked-down distccd on a
remote builder, so a plain ninja/meson test offloads compiles automatically and
falls back to local when the remote is down. build-remote.sh (renamed from the
machine-specific build-remote.sh) builds + installs the pacman package on the
fast box. start-unbox now takes its wallpaper from $HOME/.config/unbox/wallpaper
(or $UNBOX_WALLPAPER) instead of a hardcoded filename.
Machine/network specifics (hosts, private IPs) are NOT committed: the helpers
read packaging/remote.local (gitignored); packaging/remote.local.example is the
committed template with setup instructions for a new network.
|
|
Constitution (AGENTS.md), orchestrator workflow with the header-contract
read rule and harness-growth duties (ORCHESTRATOR.md), wlroots-seeded
glossary, 4 safety reflexes, owner-agent briefs, 3 skills, and the living
plan (notes/plan.md) with hardware-verified facts, settled decisions, and
the slice 1-9 roadmap (tasks.md). Slice 0 done; next: toolchain bootstrap.
|