Conversation
…on edit Edit & resend refused a selected message that itself carried quotes or attachments: the replacement submit only carried the human-facing text, silently dropping the context the original answer was grounded in (apache#5109, reproduction cases A and B). The desktop edit now stages the selected message's quotes into the quote plate and its attachments into the attachment plate as retained refs, recording both on the revision draft. After the revision commit the staged attachment refs are swapped for the copied message's target-owned refs read back from the branch child transcript, so the replacement submit only claims files the new Session owns. A no-op send (text and staged context both unchanged) stays refused, and cancel restores the pre-edit plates. The chat-turn edit gate drops quotes and attachments from its disabled list; directory references keep the gate since they have no client-side restage path, and their two dead copy keys are removed. Part of apache#5109 Generated-by: GLM-5.3-Flash (ZCode)
The revision-actions restage work grows app-shell-revision-actions and app-shell token counts; the ledger follows the sources. Part of apache#5109 Generated-by: GLM-5.3-Flash (ZCode)
The renderer architecture ratchet freezes app-shell-revision-actions and app-shell at their base token counts. The staged-context gate, plate restage/restore helpers, and the draft shape move into the @maka/ui revision-staged-context module; the shell keeps thin orchestrators. Part of apache#5109 Generated-by: GLM-5.3-Flash (ZCode)
|
Marking draft while the renderer debt ratchet question is settled — see the gate comment below. The renderer architecture strict-base check freezes
Happy to do either — flagging before burning another CI round. |
Structural gate/stage signatures and a one-line restage call shave further renderer tokens (2305 against the frozen 2155 budget); the ledger follows. Remaining gap is tracked for the beginEdit extraction. Part of apache#5109 Generated-by: GLM-5.3-Flash (ZCode)
The renderer architecture ratchet freezes app-shell-revision-actions and app-shell at their base token counts, and the apache#5109 restage feature could not fit under them. The whole revision lifecycle — beginEdit, prepare, cancel, rollback, and the copy-attempt bookkeeping — now lives in @maka/ui/revision-staged-context; the desktop file is a thin assembler injecting the bridge, the locale catalog, and the attempt tracker. The duplicate pre-send gate in app-shell goes away with it: prepare owns the unchanged and mixed-context refusals, and one stale guard referencing removed draft fields goes with the duplication. Ledger: app-shell-revision-actions 2305->506/9->6, app-shell 13482->13344 /105->104, against a frozen 2155/8 and 13386/104. Part of apache#5109 Generated-by: GLM-5.3-Flash (ZCode)
Empty commit: the push event for c4d7065 did not start a workflow run. Part of apache#5109 Generated-by: GLM-5.3-Flash (ZCode)
|
No description provided. |
|
The ratchet conflict is resolved without touching the frozen budgets: the whole revision lifecycle (beginEdit / prepare / cancel / rollback + copy-attempt bookkeeping) moved into Measured against the frozen base budgets: Heads 0a5af05 / 0a5af05 have not started a CI run for a few hours (the |
Summary
Edit & resend refused a selected message that itself carried quotes or attachments: the replacement submit only carried the human-facing text, silently dropping the context the original answer was grounded in (#5109, reproduction cases A and B — case C, the TUI rewind side, landed in #5265).
The desktop edit now stages the selected message's quotes into the quote plate and its attachments into the attachment plate as retained refs, recording both on the revision draft:
The chat-turn edit gate drops quotes and attachments from its disabled list; directory references keep the gate, since they have no client-side restage path, and their two dead copy keys are removed together with the branches that rendered them.
Part of #5109 — with this, both clients restore the selected turn's quotes and attachments; directory references remain fail-closed on both.
Verification
@maka/uifull suitesession-todo-panel,prompt-rail-observer-identity,transcript-history-notice) fail identically on pristineupstream/mainvia stash rebuild;composer-plus-menufails only under full-suite concurrency and passes 11/11 in isolationnpm --workspace @maka/desktop run build:main(typecheck incl. renderer sources)check-locale-hygienebiome checkon all 7 changed filescheck:asf-headersAI use
Select exactly one:
Tool(s) and scope: GLM-5.3-Flash (ZCode) implemented the desktop/ui changes and tests under human direction and review.
Checklist
Does this PR entail a change in behavior?