July 30, 2026
29 public commits · 6 public repos · 255 private commits
- Private work 6 repos sealed
255 commits count toward the day. Names, subjects, and links stay private.
- souveraine 9 changes
- 7:13 p.m. · 0b57daa
Deliberate, never automatic. The autonomous gate it replaces recycled the tunnel 652 times in 90 minutes and could not be switched off, because 'nmcli connection down' fired the dispatcher that brought it back up.
- 3:26 p.m. · 15af38a
The ticker instantiation in AiChat referenced qs.modules.souveraine. subconscious, but those files were absent from the deploy MANIFEST, so a deploy left the import unresolved. Add SubconsciousTicker/EventPanel + a qmldir mirroring the dial/selection modules.
- 3:22 p.m. · 4caca36
Revises the prior fix: the model's reply is already complete in final_content before the paced stream loop, so truncating to needlessly dropped the unstreamed tail. On SSE receiver-drop, stop streaming but commit the FULL reply (interrupt flag skips the pointless N+1 and marks the turn); the surface recovers the whole reply on resume.
- 3:17 p.m. · 483902a
Re-mount SubconsciousTicker in AiChat (lost in the 07-30 relocation out of the ii tree). The view is decoupled; it just needed its host back.
- 3:17 p.m. · 426dcf6
turn.rs streaming loop returned early on tx.send failure (receiver gone) before the session commit, orphaning the turn: the assistant's partial reply never landed, so the next turn's history snapshot read the user's follow-up with no preceding reply -> a user->user gap. The model then answered as if from nowhere (the 'whatever it was...' non-sequitur), model-independent and intermittent. Commit the partial like an interrupt instead, the way the cancel branch already does, so the thread links.
- 2:24 p.m. · 3bc363a
Best-effort mirror step after the edge publish: PUT each built pkg to /api/packages/Fimeg/arch/edge so the Packages page stays current. Never fails the publish; 409 = bump to republish. Runs only on public (same gate as the publish job).
- 12:57 p.m. · 25898a9
The subconscious three-tier surface (SubconsciousTicker + SubconsciousEventPanel) is Souveraine-original, not upstream ii. It lived under ii-base/modules/ii only because it had never been re-homed, so the ii -> souveraine shell migration silently stranded it: the files survived, but the running shell (qs -c souveraine) never loaded them, and the feature dropped off the device.
- 9:18 a.m. · 0ef2395
Speech resolves voice per active agent (agents[].voice_id from the list), with the system voice as fallback — two agents on a host need not match. Souveraine.qml carries voice_id into the agents map and adds a turn clock (turnStartedAt/turnElapsedMs) + a 60s agent-inventory refresh. Ai.qml declares pendingFilePath and imports qs.modules.common.functions so StringUtils.ttsClean no longer aborts the stream-finished handler.
- 9:18 a.m. · e9bf33e
AgentSummary carries voice_id, sourced from agent.json (_souveraine) via get() rather than the DB config_json column, which is write-once at create and drifts on later edits. The list endpoint is the surface's only unauthenticated view of an agent, so voice travels there; /v1/agents/:id is token-gated.
- 7:13 p.m. · 0b57daa
- Pixel3Arch 6 changes
- 7:51 p.m. · e351afe
Deferring this package did not avoid the work, it moved it onto the device. A plain 'pacman -Syu' dead-locked tonight: hyprgrass pinned hyprland=0.56.0 while hyprtoolkit needed the newer aquamarine, so nothing could move until the plugin was rebuilt by hand. A Hyprland plugin is pinned to one exact compositor version, so it has to republish in lockstep with every bump. Now in packages.yml with an ABI sanity check.
- 7:22 p.m. · 9ad69ea
The OSK's dictation key spawns it by name, so it is load-bearing for the keyboard and was owned by no package — rootfs-overlay reaches a device on a flash, and this phone runs pacman -Syu. Every fix since has been hand-carried. /usr/bin, not /usr/local/bin, which shadows.
- 3:05 p.m. · e9320be
souveraine-stt: 3-state machine (idle|recording|transcribing|error) written to $XDG_RUNTIME_DIR/souveraine-stt/state; --status reads it. Collapse whisper's embedded newlines before ydotool (typing \n sent Enter, chopping dictation). Fix the dead pw-record wait-loop.
- 2:12 p.m. · 410f942
Dual-publish: alongside the release-assets edge (the phone's source of truth), also PUT each built package to /api/packages/Fimeg/arch/edge so the Packages page is populated and the registry can be evaluated as the eventual home (clean edge/stable split, no hand-rolled repo-add). The mirror step is best-effort and never breaks the release publish; a 409 means (name,version) is immutable -- bump to republish. Auth/SigLevel for pointing pacman here is unsolved by design until the registry is proven.
- 1:53 p.m. · 0eccd6f
9 built *.pkg.tar.zst binaries and two stale bare VCS clones (pkgs/stevia/stevia, pkgs/squeekboard/squeekboard) had been committed and were bloating the repo; the stale clone made makepkg abort packages.yml with 'not a clone of <url>'. Remove them, gitignore *.pkg.tar.zst + the VCS checkout dirs, and set SRCDEST out-of-tree in CI so clones never land in a package dir again.
- 1:49 p.m. · e306218
Wire the 8 hand-installed packages into the edge CI publisher so they reach pacman -Syu: pulse-native-provider, souveraine-osk-switch (any), hexagonrpc-blueline, tqftpserv-blueline, blueline-edge-sense, souveraine-stevia, souveraine-squeekboard, usb-signaller (aarch64 cross).
- 7:51 p.m. · e351afe
- SouveraineOS 6 changes
- 7:13 p.m. · d64579a
An agent landing here got nothing. Says what the project is, the reading order, and the rule that keeps being broken: ls by date and read, do not grep — these documents argue, and the argument is the content.
- 3:08 p.m. · 4df694c
- 2:19 p.m. · 051da9e
- 1:57 p.m. · ee68f5b
Pixel3Arch packages.yml now publishes all 14 device packages; pacman -Sl souveraine-aarch64 is the manifest. Update TASK-25 status/acceptance + record the four cross-build shapes and the committed-junk CI trap. DUMP for the session. STATE.md last-updated 2026-07-30.
- 12:59 p.m. · 66dbb60
Migrations have been silently lossy: the subconscious surface was stranded for over a week by the ii -> souveraine shell move, and five packages went stale, both because there was no list of what exists to tick off. SHELL-SURFACES.md is that list — every shell surface and first-party service, the contract it is defined against, its substrate today, and whether it reaches the glass.
- 11:36 a.m. · d4ea575
TASK-43 gains the §Scene composition design settled 2026-07-30: the texture/content wall, pose (geometry, the agent's) and expose (legibility, gate-veiled) as authority-split verbs, the selection surface as a scene element not a layer surface, and the primary-selection/data-control source now wired (234a631) with its owed refinements named.
- 7:13 p.m. · d64579a
- souveraine-viewtop 4 changes
- 8:01 p.m. · 0077776
The two intents were advertised in the verb table and had no state behind them: Surface carried no geometry beyond size and no legibility at all, so nothing could act on either. Adds Pose (identity by default) and the exposure actually in force.
- 11:35 a.m. · 234a631
Brokers zwp_primary_selection_v1 and zwlr_data_control_manager_v1, the combination wl-paste --primary --watch relies on to observe selections without focus. data-control is created against the primary-selection state so a data-control client sees primary selections too. This is the selection source the shell's action menu (TASK-18) reads once viewtop is the session.
- 11:30 a.m. · ad2b6cb
Serve wlr-layer-shell and, on new_layer_surface, override the requested layer with the one derived from the surface's furniture role. INTERFACE-ARCHITECTURE §1 found the pill's z-order was a documented guarantee the code did not enforce — a layerrule in a Lua file a reload could lose, so an ii restart could bury the pill under the dock and stop it taking touch. Being the compositor is the chance to derive the layer from what the surface IS rather than trust a rule.
- 11:22 a.m. · 61cf90a
pose — rotation and scale about a pivot. Geometry is the agent's outright (doctrine §13), so the compositor honors it rather than adjudicating it; it is applied to the paint and used for inverse input-mapping, which is the real cost of a rotated surface.
- 8:01 p.m. · 0077776
- souveraine-speech 3 changes
- 2:19 p.m. · f10e34b
whisper-server keeps ggml-large-v3-turbo loaded once at boot (RX 560/Vulkan) and serializes inference via its mutex. sttd.py becomes a stdlib-only field- name shim (audio->file) that passes the {"text":...} response through verbatim; clients unchanged.
- 12:55 p.m. · b1470ca
Casey's standing instruction was to delete the shim, not patch it. Document the removal plan, the live lever-map (samplers work on base; instructions need a non-base talker; speed is a no-op), and the verify-before-remove ordering.
- 12:39 p.m. · ccc3cf7
Voice is no longer annie-only. Document the registered clones (annie + the kyutai voice-donations set), the clone-from-reference recipe, the ref_text/ICL repetition trap, the tts-compat voice-routing fix on :7863, and how an agent selects its own voice (_souveraine.voice_id -> agent list -> Speech.qml).
- 2:19 p.m. · f10e34b
- souveraine-updater 1 change
- 2:24 p.m. · 1540559
Best-effort mirror after the edge publish: PUT the built pkg to /api/packages/Fimeg/arch/edge. Never fails the publish; 409 = bump to republish.
- 2:24 p.m. · 1540559