| Filename | Latest commit message | Latest commit date |
|---|---|---|
deploy.sh: name the hazard the composer already implements — a new file plus a manifest line is inert until the next deploy, while editing a file already in the manifest is live in the running shell immediately. Registration is the dangerous act, not creation. patches/README: 0008 swaps the message delegate to one that does not carry the vendor control row (regenerate, speak, re-synthesize, copy, edit, raw, delete). Applying it would remove all seven. |
||
| .. | ||
| 0001-resume-offer.patch | ||
| 0002-think-fence-collision.patch | ||
| 0003-typed-chat-segments-tool-cards.patch | ||
| 0004-shell-keep-typed-segments-QML-compatible.patch | ||
| 0006-stepup-authenticate-through-pam.patch | ||
| 0007-shell-render-context-occupancy-and-stop-reading-hypr.patch | ||
| 0008-agent-surface-owned-message-delegate.patch | ||
| README.md | ||
patches/
⚠ 0008 IS BLOCKED — DO NOT APPLY.
0008-agent-surface-owned-message-delegate.patchswaps the message delegate tomodules/souveraine/agent/AgentMessage.qml, which does not yet carry the vendor message control row: Regenerate, Speak, Re-synthesize, Copy, Edit, Show-raw, Delete (ii-base/.../aiChat/AiMessage.qml:196-308). Applying it silently removes all seven. Audited 2026-08-12; unblock only once the row is carried over and the affordances are seen to work.
Staged shell changes that are not applied to the tree.
Why this directory exists
~/.config/quickshell/souveraine/*.qml are symlinks into this repo, and
quickshell reloads on write. So editing a file here edits the running shell,
immediately. When the agent is the one editing, that means an edit can take
down the process the agent's own turn is running inside — and a shell that
fails to compile does not come back on its own (see 29ec9fe: one bad root type
failed the whole qs.services module).
So the rule is: the agent writes patches, the human applies them. The
reload happens on a human's beat, when nothing is in flight, with a known-good
tree one git checkout away.
Applying
cd ~/Projects/souveraine
git am surfaces/quickshell/patches/0001-....patch
# then reload the shell yourself and watch it come up
Verify before trusting:
cd surfaces/quickshell
./deploy.sh
timeout 40 qs -c souveraine 2>&1 | grep -E "ERROR|Configuration Loaded"
If it does not come up, git reset --hard HEAD~1 and the patch is just a file
again.
Discipline
- One patch, one behaviour. Reviewable in a sitting.
- The patch's commit message says what it changes and what it deliberately leaves alone.
- A patch is untested against a running shell unless its notes say otherwise. Say which: verified / reasoned / untested.
- Applied patches get deleted from this directory in the same commit that applies them. This directory is a queue, not an archive — git keeps history.
In the queue
0001–0004 are still on disk and still unapplied — resume-offer,
think-fence collision, typed chat segments, and the QML-compat follow-up. They
carry their own notes in their commit messages; none has been described here.
Anything applied or retired is deleted from this directory by design.
Recently closed
- 0005 — config: never store a null option. Applied and committed as
f7e0e51. Null-valued options serialised intoconfig.jsonand segfaultedJsonAdapter::deserializeRecon the next launch — the session that wrote the option ran fine, every launch after it died ~10 s in. Replaced with tristate strings (auto/on/off), booleans still honoured. Verified live: shell loads clean, no nulls written back. - 0005 (earlier) — mount the agent island. Retired by
013a06a; the island left the bar to sit beside chat (2179b62). The number was reused.