August 11, 2026
64 recorded commits · 6 named repos · 10 private repos
⋈Today Casey kept turning absence into something the system could name: Annie's replies learned to survive a vanished surface, an empty success stopped masquerading as her voice, and the subconscious thread learned to carry and heal its own history. On the phone, chat and dock began yielding cleanly to the keyboard; in the shell, the agent left the cramped top bar and took her place beside the conversation. Then the public ledger was born under the pressure of the day itself—forty commits across two visible repositories in its first captured slice—and immediately had to learn that credentials, branches, and even a calendar date can lie unless somebody stays long enough to make them answer.
Narrator ran 7:21 p.m. · covered through 6:24 p.m. · the ledger continued afterward
- Private work 10 private repos
Activity was recorded across 10 private repos. Names, subjects, counts, and links stay private.
- souveraine35 changes
- osk: retire the dead dual-keyboard path7:21 p.m. · fb5e9bb · internal Gitea record only
- agent sessions: show conversations, not storage ghosts6:47 p.m. · dd19ab2 · internal Gitea record only
- bar: finish the shared resource widget6:40 p.m. · 12da479 · internal Gitea record only
- patches: retire the old top-bar agent mount6:40 p.m. · 013a06a · internal Gitea record only
- osk: recover with Squeekboard, not Stevia6:37 p.m. · 62638e0 · internal Gitea record only
- chat: raise the keyboard when the field is tapped6:24 p.m. · 692455c · internal Gitea record only
- dock: yield the bottom edge to the keyboard5:21 p.m. · 41d13c9 · internal Gitea record only
- turns: never mistake an empty success for Annie5:09 p.m. · 7842c04 · internal Gitea record only
- subconscious: heal persisted tool-call history4:05 p.m. · dfc72d7 · internal Gitea record only
- agent sessions: leave the bar and sit beside chat3:43 p.m. · 2179b62 · internal Gitea record only
- patches: keep island work outside turn fix3:01 p.m. · 3bdc1c8 · internal Gitea record only
- turns: survive the surface disappearing3:01 p.m. · 3aa7019 · internal Gitea record only
- island: fix three defects found by actually loading the shell2:46 p.m. · 783f096 · internal Gitea record only
The island had never been load-tested. All three were fatal or noisy and none were visible by reading.
- bar: one BarContent for every device, layout as data2:40 p.m. · 391e239 · internal Gitea record only
ii-base and ii-phone each carried a 357-line BarContent to express eight differences, all of them either "is this widget shown" or "which slot is it in". No behaviour differed. Every bar edit had to be made twice or diverge silently against the pin.
- patches: queue 0005, mount the agent island2:22 p.m. · d87d611 · internal Gitea record only
- agent sessions: use shellPath convention for collector path2:21 p.m. · b211842 · internal Gitea record only
- agent sessions: one collector, one island2:19 p.m. · 47ce2d1 · internal Gitea record only
Collector emits a single JSON envelope for every agent session (Souveraine, Claude Code, Codex) and always exits 0; a failing provider reports available:false rather than taking the envelope down.
- face: recreate a refused rig socket2:08 p.m. · 928bd8d · internal Gitea record only
Quickshell retains the failed QLocalSocket object, so toggling its requested state cannot reconnect. Replace the Socket body until the host answers.
- agentsd: collapse the scan predicate2:05 p.m. · e7929e4 · internal Gitea record only
- agentsd: drop dead limit collection from the session parser2:05 p.m. · d739f35 · internal Gitea record only
- agentsd: one collector for claude, codex and souveraine sessions2:03 p.m. · 60a2978 · internal Gitea record only
- face: keep knocking until the rig answers2:03 p.m. · 5afa132 · internal Gitea record only
- face: expose the two live gaze links2:02 p.m. · e314d4f · internal Gitea record only
Let the remote shell deploy accept the assets its caller already staged, so a successful composition does not fail after switching the tree.
- face: reconnect to the rig after host startup1:33 p.m. · 8fd1a72 · internal Gitea record only
- subconscious: carry her thread across restarts1:18 p.m. · 9149c40 · internal Gitea record only
One unreadable conversation.json aborted the whole listing, so hydration returned an error, the caller read it as no prior thread, and a fresh conversation opened on every boot. Skip the damaged record and warn.
- api: carry ordered text and image parts across the message boundary12:30 p.m. · cfad688 · internal Gitea record only
`Message.content` was `String`, so an attachment could not reach the substrate even though everything downstream was ready for it: the session already stores `ContentBlock::Image`, `run_turn` already builds OpenAI multi-part content, and the provider client already speaks `image_url`. The whole pipe was plumbed and the tap was welded shut at the door.
- rescue: preserve unversioned source copy found on [host]11:06 a.m. · c367a4d · internal Gitea record only
~/souveraine on the build box is a full copy of this repo with no .git at all, newest sources 2026-08-09 21:07. Audited by hashing every file and querying this repo's object database: 1545 checked, ten unknown after excluding the vendored upower submodule.
- subagent: send task as user message, not folded into system prompt10:48 a.m. · 517d8c1 · internal Gitea record only
- memory: gate write over an existing file, report the delta10:33 a.m. · e498e72 · internal Gitea record only
write replaces a whole file and reported success identically whether the file grew, held, or was erased. Replacing an existing file now requires overwrite: true, and the refusal names append/edit as the likely intent. Every write returns a WriteDelta so the result carries magnitude; a write that drops a file below half its former size says so loudly.
- patches: queue QML compatibility fix9:37 a.m. · d290b12 · internal Gitea record only
- shell: keep typed segments QML-compatible9:35 a.m. · 23cebc5 · internal Gitea record only
- patches: queue typed chat segments8:56 a.m. · 52f379f · internal Gitea record only
- shell: render typed chat segments8:54 a.m. · 8c434df · internal Gitea record only
Keep assistant, reasoning, tool-call, and tool-return frames structured through the sidebar delegate. Tool cards bind returns by wire id and fold their output by default.
- patches: queue think-fence collision fix8:10 a.m. · f17fa7c · internal Gitea record only
- shell: stop sensor calls closing an open reasoning fence8:09 a.m. · a8f7f62 · internal Gitea record only
A tool_call/tool_return arriving while a <think> block was open emitted its own self-closing fence, whose </think> closed the outer block early. Every reasoning token after that point rendered as prose, and the stray close left the trailing assistant text mis-segmented. Append inside the open fence instead; only open one when arriving in prose.
- Pixel3Arch12 changes
- ci: prove both keyboard modes ship7:28 p.m. · ca717b7 · internal Gitea record only
- squeekboard: make dictation a real dependency7:26 p.m. · 98129d3 · internal Gitea record only
- squeekboard: own every keyboard mode7:22 p.m. · 3794aa9 · internal Gitea record only
- viewtop package: preserve the launcher pkgrel7:04 p.m. · 63b564b · internal Gitea record only
- squeekboard: keep daily and terminal layouts distinct6:47 p.m. · d69e35e · internal Gitea record only
- viewtop session: keep Squeekboard across login6:37 p.m. · 47f9893 · internal Gitea record only
- squeekboard: embed the keyboard we actually drew6:24 p.m. · 0da4708 · internal Gitea record only
- usb-signaller: stop truncating the HID helper4:54 p.m. · 03ccc49 · internal Gitea record only
- squeekboard: give dictation a pulse3:42 p.m. · d42775e · internal Gitea record only
- ci: provide PAM headers to the ARM build2:38 p.m. · b272d1b · internal Gitea record only
- fingerprint: build the PAM module from its owned source1:51 p.m. · 6e0242d · internal Gitea record only
- ci: cross-build the fingerprint PAM module1:33 p.m. · b2281f0 · internal Gitea record only
- SouveraineOS9 changes
- docs: elmyra answered, and the site map lost a layer9:57 p.m. · b87e433 · internal Gitea record only
TASK-36 said the load path had never executed. It ran 2026-08-11 — LoadNanoappResponse decoded, success byte set, and six gauges came off a flat baseline at 2502 and 2990 against a 2500 floor. Recorded with Casey's numbers and the two things that would otherwise compress away: the margin carries intent, and the proximity veto is a separate job from the threshold.
- tasks: squeekboard is the sole OSK; add 71 (mobile scanner recon) and 73 (self-dashboard)7:57 p.m. · c9d40b2 · internal Gitea record only
- keyboard: make Squeekboard the single path3:44 p.m. · 89cf93f · internal Gitea record only
- distribution: add ViewTop to the laptop body2:40 p.m. · d8820da · internal Gitea record only
Record update delivery as a per-body offer and local candidate activation after a live shell push killed an active conversation.
- tasks: 69 stage 1 and 70 island built2:23 p.m. · 74e3bc5 · internal Gitea record only
- tasks: the message API carries images now, the surface still does not12:31 p.m. · 9669b0c · internal Gitea record only
Reconciles the two owning docs with souveraine cfad688. Sub-scope A was always half-landed: the substrate was multimodal end to end and the HTTP door was text-only, so the TUI could see and every other surface was blind. The door opens; nothing walks through it yet.
- task 72: plan owned agent surface9:36 a.m. · 315f4d8 · internal Gitea record only
- task 72: record typed segment patch8:55 a.m. · d796f53 · internal Gitea record only
- task 72: surfacing pane tool primitives and honest bottom bar8:33 a.m. · 3ab4f77 · internal Gitea record only
- souveraine-speech4 changes
- speech: stream VibeVoice through the public queue10:48 a.m. · f6ec2a2 · internal Gitea record only
- speech: uncap VibeVoice and add cancellable queue8:24 a.m. · f89f7f9 · internal Gitea record only
- speech: keep VibeVoice request path unbounded12:34 a.m. · be9219d · internal Gitea record only
- speech: restore VibeVoice on RX 56012:28 a.m. · ea43970 · internal Gitea record only
- souveraine-viewtop3 changes
- ci: version packages from full history2:38 p.m. · 991f766 · internal Gitea record only
- packaging: publish ViewTop for the laptop1:53 p.m. · 1bcbfa5 · internal Gitea record only
- input: let application popups take their touches1:06 p.m. · a073ea5 · internal Gitea record only
Firefox extension and Bitwarden popups were rendered above their parent but absent from client hit testing, so every contact fell through to the toplevel beneath. Walk application popups at the same origin and in the same parent-by-parent order used by rendering, including popup area outside the parent bounds.
- souveraine-lens1 change
- ui: keep new-note prompts inside the lens6:50 p.m. · 0bf2dbc · internal Gitea record only