Watch
1
0
Fork
You've already forked souveraine
0
Commit graph souveraine/surfaces/quickshell/patches
Author SHA1 Message Date
Fimeg
aa6cd4e219 patches: the queue is empty, and the README said otherwise for a day
0007 and 0010 landed in 6f12fce and their files were removed in that same
commit, but this list went on describing them as pending. 0001 and 0006 have
now landed too. A queue file is a claim with a shelf life; so is the README
that indexes it.

The durable notes from the removed entries are kept under Recently closed --
the halt wording is coupled to migraine_text() in src/server/turn.rs, and the
context pill and the tokens endpoint measure different things and must not be
shipped side by side unlabelled.
2026-08-13 08:33:16 -04:00
Fimeg
6edebaeca5 stepup: authenticate through PAM, not a dead pkcheck branch
StepUpAuth ran `souveraine-pam-auth`, else `pkcheck --action-id
org.souveraine.stepup`. Neither exists: no such binary was ever written
and no polkit action was ever shipped, so both branches failed and every
grant request was silently denied. The header also described passing a
password through SOUVERAINE_STEPUP_PASSWORD, which the code never set.

Now a PamContext against the system souveraine-stepup service, shipped by
cc541d1. The prompt is not owned here: pamMessage raises
promptRequired(family, message, secret) and a surface answers with
respond(). An empty answer is legitimate, not a cancel -- the FPC factor
prompts "Touch and hold" and consumes its ticket on a blank response.

Deliberately unchanged: grant model, TTL, revocation and break-glass all
still live in the shell. Moving them to sessiond is a separate pass.

Authorship: this patch is Rook's work, staged in surfaces/quickshell/
patches/ on 2026-08-12. The patch file carried my identity in its From
header but I did not write it; recording that here rather than wearing it
silently.

Verified: /usr/lib/qt6/bin/qmllint exit 0 against the composed tree, gate
proven able to reject (exit 255 on a deliberately broken control).
Untested: no shell has loaded this and no surface calls respond() yet.
2026-08-13 08:24:07 -04:00
souveraine
ec87e6a9dc shell: offer resume instead of forcing it 2026-08-13 08:21:39 -04:00
Fimeg
57e53adac3 patches: retire the queue discipline; the shell was never in the agent's cgroup 2026-08-12 20:12:12 -04:00
Fimeg
6f12fceea9 shell: apply 0007, 0010, 0011 — context occupancy, halt register, /new
0007 was fixing a live error: the server has carried named ContextPressure
fields since r463, so event.tokens was undefined and the pill assignment
failed on every turn. Applied and verified against the running shell.

0010 renders a halt in her own register rather than the tool's name.
0011 renames the reset command to /new, which is what clearMessages() does.
2026-08-12 19:50:32 -04:00
Fimeg
0733bfaff7 patches: queue 0011 — the reset command is /new 2026-08-12 19:37:38 -04:00
Fimeg
e50ddee567 patches: queue 0010 — halt rendered in her own register 2026-08-12 18:55:20 -04:00
Fimeg
b9f404cbaf patches: 0007 unblocked — the running server carries f266136 2026-08-12 17:39:19 -04:00
Fimeg
b56635e0f2 patches: 0008/0009 landed; queue is 0001, 0006, 0007
Verified against a running shell rather than a clean load, which immediately
found two faults every prior gate had called clean. Both controls dropped from
0008 recorded as decisions so a later session does not restore them.
2026-08-12 14:54:35 -04:00
Fimeg
93fe30a8e7 shell: land the owned message delegate and the speech fixes
Applied 0009 then 0008 (0008's re-synthesize control calls a function 0009
adds). Casey applied and reloaded; verified against a running shell rather
than from a clean load.

0009 Speech.qml
  stop() could not stop. playProc ran `sh -c "mpv ... || ffplay ..."` — a
  compound command, so sh does not exec-replace itself and SIGTERM killed the
  wrapper while the player kept sounding as an orphan. Reproduced directly.
  That is the back-to-back TTS slam: every stop left audio playing and the
  next speak started a second player over it. Shell dropped; the pid held is
  now the pid making noise. ffplay fallback deleted rather than repaired —
  needing a fallback is what forced the wrapper that broke the kill.
  resynthesize() added, bypassing the cache: the button existed for "that came
  out wrong" and, being keyed on the same text, always replayed the identical
  file. synthesizing/playing split out of one `speaking` boolean.

0008 AiChat.qml
  One line: delegate AiMessage -> AgentMessage. The vendor block named 8 tools;
  the registry holds 19. The 11 it could not see were exactly the interiority
  surface — outfit, nickname, subagent, atmosphere, reach, consult, itinerary,
  todo, schedule, halt, intrusive.

  regenerate and edit dropped deliberately, per Casey: text regeneration is not
  possible (Ai.regenerate() already returned advice) and there is no in-place
  edit (the vendor wrote to a local array the server never sees). delete is
  armed and states that it hides locally only. Do not restore them.

Queue entries removed here, per the directory's own discipline.
2026-08-12 14:50:57 -04:00
Fimeg
cb3785bcbd patches: correct the queue; retire 0002 as obsolete, clear landed 0003/0004
The queue section claimed 0001-0004 were all unapplied. Verified with
git apply --check in both directions: 0003 landed as 8c434df, 0004 as
23cebc5, and 0002 can no longer apply at all.

0002 patched inThinkBlock in services/Ai.qml. That variable no longer
exists - typed segments made the think-fence collision impossible by
construction rather than by escaping harder. Retired, not abandoned.

0001 and 0006 were on disk and undescribed. Both now carry their
reasoning here. 0007's block records the specific installed version it
waits on, since 'needs the server first' is not actionable a month
later.

A queue is not an archive; git keeps history.
2026-08-12 14:12:26 -04:00
Fimeg
ba13d56afc patches: queue 0009 speech stop/resynthesize; unblock 0008
0008 was blocked because the owned delegate carried none of the vendor's
seven message controls. df11bba carries five and drops two deliberately;
the header now records which and why rather than only lifting the warning.

0009 depends on nothing but is a prerequisite for 0008's re-synthesize
control doing anything real.
2026-08-12 13:55:35 -04:00
Fimeg
1951d2b69b shell: document which edits are live and block patch 0008
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.
2026-08-12 13:24:34 -04:00
Souveraine
6d0f891d6e shell: own the agent message delegate and the reasoning card
TASK-72 step 2. AgentMessage consumes the typed segment list and dispatches
to owned primitives; ThinkingCard draws reasoning as a segment kind rather
than as <think> punctuation inside a flattened string, which removes the
think-fence collision class by construction.

MessageTextBlock and MessageCodeBlock are deliberately reused from the vendor
snapshot: they are markdown renderers, not agent vocabulary.

Composed by MANIFEST, imported by nothing. The activating edit is queued as
patch 0008. Qt6 qmllint: zero syntax findings; remaining warnings are the
widget-resolution class the vendor AiMessage also produces (38 vs 46).

Not verified: nothing has loaded this. No real tool round has rendered here.
2026-08-12 13:11:19 -04:00
Fimeg
5a20307ddd patches: queue 0007, render context occupancy and stop reading hyprctl errors as cursor
Requires f266136 in the running server; without it the pill honestly shows
an em dash rather than a wrong number. Unapplied, unloaded.
2026-08-12 12:20:11 -04:00
Fimeg
e784fe48a3 patches: queue 0006, step-up authenticates through PAM
Authored in a parallel session (Rook, Codex side) on 2026-08-12; committed
here because untracked is the fragile state, not because authorship is mine.
Finding stands on its own: StepUpAuth called souveraine-pam-auth, a binary
never written, and fell back to pkcheck against an action never shipped, so
every grant request was silently denied. Unapplied, unloaded.
2026-08-12 12:20:11 -04:00
Fimeg
d02df0c6bd patches: the queue is 0001-0004, say so 2026-08-12 09:24:06 -04:00
Fimeg
b5671b0b8a patches: retire the stale 0005 entry, record what closed 2026-08-12 09:23:39 -04:00
Fimeg
013a06aacf patches: retire the old top-bar agent mount 2026-08-11 18:40:35 -04:00
Fimeg
3bdc1c8e3c patches: keep island work outside turn fix 2026-08-11 15:01:38 -04:00
Fimeg
3aa7019eb5 turns: survive the surface disappearing 2026-08-11 15:01:18 -04:00
Fimeg
d87d6117a4 patches: queue 0005, mount the agent island 2026-08-11 14:22:42 -04:00
Fimeg
d290b12441 patches: queue QML compatibility fix 2026-08-11 09:37:09 -04:00
Fimeg
52f379f230 patches: queue typed chat segments 2026-08-11 08:56:08 -04:00
Fimeg
f17fa7c31b patches: queue think-fence collision fix 2026-08-11 08:10:39 -04:00
Fimeg
aaea09fdd6 shell: patches queue — agent stages, human applies
The composed config is symlinked into the repo and quickshell reloads on
write, so an agent editing QML edits the live shell mid-turn. Stage changes
as patches instead; the human applies and reloads on their own beat.

First in the queue: 0001-resume-offer — the agent-established hook offers
the latest thread instead of silently attaching it. Explicit resume paths
and the e4e6594 amnesia fix are untouched. Untested against a running
shell.
2026-08-10 23:04:59 -04:00