chat: ctrl+enter queues a follow-up, and a click takes a queued message back - #1714
Conversation
…ken back Squash of task/implement-click-to-unqueue-on-co-ee1caf onto dev: queueing moves from ctrl+q onto ctrl+enter, the queue draws one row per message, a click takes one back out of the session's queue (session.Agent.UnqueueFollowUp, across the wire as MethodUnqueueFollowUp), and the standing-order chord is retired in favour of /standing <words>. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t does not name ctrl+enter The take-back never worked through the normal launch. A hosted chat's agent is the telemetry tee (countingAgent), whose FollowUp hands the surface a copy of the stream; the surface named that copy on a click, and the promoted remote.Agent.UnqueueFollowUp had no receipt for it, so it answered false and the row stayed. The tee now maps each copy to the stream it copies. And the ctrl+enter queue clause this branch added to the keys row is removed at the owner's request: the foot is back to dev's shape, and the chord is named on the key sheet and on the queued block's dim line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At the owner's request the keys row under the box keeps to plain enter while a turn runs: enter steers it in · esc interrupt. The chord still stops and sends on a terminal that can send it, and the key sheet still lists it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stood While a turn runs and there are words in the box, the keys row reads enter steers it in · ctrl+enter queue · esc interrupt, on a terminal that can send the chord. The stop-and-send chord keeps working and stays on the key sheet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… under the queue The queued block's rows are led by a new vocabulary slot, GFollowUp (↵, geometry, like the rest of the prompt family), instead of the hollow circle a waiting task wears. The dim line under the block is gone at the owner's call; a row now lights under the pointer only where a click would take it back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GFollowUp now draws GReplyIn's byte, at the owner's pick. The two are told apart by position (a question's room versus the block above the box), and TestOneGlyphOneMeaning carries that argument. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-queue-click-unqueue # Conflicts: # internal/remote/callclass.go
The lock law (internal/guard's TestEveryLockInTheGuardedTreeUnlocksFromADefer) wants defer Unlock directly under every Lock; the lookup moves into its own function so the lock is never held across the round trip to the engine. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
d8cba35 to
2a3870d
Compare
…ng the message FollowUp carries text alone, so queueing over a picture left the picture on the tray to ride out with the next send while the manual said it was spent. The key now refuses in one line and changes nothing, as the standing chord it replaced did, and the foot does not offer it in that state. The manual and the take-back's comment say what the code does. (Review on #1714.) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ctrl+enter queues only non-empty words behind this conversation's running turn; at rest, on the new-chat start page, over a /command, in a room, the roster or the rewind bar it is plain enter. A decoded chord is honoured without the kitty reply (modifyOtherKeys); the hint still waits for it. A take-back marks its row until the session answers, so a turn ending during the round trip neither starts the removed message nor drops it. The words merge into this conversation's own composer (appended to a draft, paste chips renumbered, plain slash tags kept), in click order. Only rows this window queued light and take a click. Queued rows fit their width. The manual and change entry say what the code does, including that /standing keeps pictures and a picked harness on the tray. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…window The client drops a follow-up's take-back receipt when its stream ends, not only on a take-back or a dead connection. The engine treats a take-back as a driver door and honours it only from the connection that queued the message. The wire format and remote.Version are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-queue-click-unqueue # Conflicts: # internal/tui3/input.go
Brings in #1699 (slash chips anywhere) and #1723. enterLine keeps this branch's shape (no marked argument) and #1699's plain-tag snapshot: park(line, false, plain), submitShown/submitImagesShown(..., plain). A queued follow-up's own demoted ranges join #1699's resting door words on its transcript line, so a slash word backspaced to plain before ctrl+enter stays plain when its turn starts. A draft holding a live send-door tag is a command, so ctrl+enter takes enter's road for it instead of queueing the words and dropping the tag. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
followRecall named its answer flag `settled`, a field name the live-state seam law reserves for transcript blocks leaving the live state. It is not a block and has no edge, so it is renamed rather than exempted. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Her merge of origin/dev (654cf26) resolved enterLine the same way this branch already did; the code is identical, so this side is kept. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Taking over: @ZeroPoint95, I drove this in the real binary on both roads (plain
Also checked by hand: a dev-build window queues with Left for later, not done here:
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings in #1662 (startup and home off the UI loop) and the v0.6.0 roll-up. startChatEnter keeps #1662's renewLater shape with this branch's enterLine(): the start page's ctrl+enter is its enter. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> # Conflicts: # internal/tui3/chatstart.go
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Synced with dev (#1662, #1730), now at |
AbirAbbas
left a comment
There was a problem hiding this comment.
Verified by hand on both roads and across old/new engine builds: ctrl+enter queues mid-turn, a click takes a queued message back under the draft, and plain tags stay plain. Merging.
TL;DR:
ctrl+enterqueues a message for after the turn. Each queued message gets its own dim↳row above the box, and clicking a row takes it back.Added
MethodUnqueueFollowUp(client and server). An older engine just answers "no", so the row stays put.GFollowUp(↳). It shares the reply arrow's character, told apart by position, and that argument is recorded inTestOneGlyphOneMeaning.Changed
ctrl+q→ctrl+enter.ctrl+qis now unbound on purpose.ctrl+enterfromenter. Elsewhere it stays a newline.ctrl+enter queues words alone — …) and changes nothing. The foot doesn't offer it then either.after yield · N.enter steers it in · ctrl+enter queue · esc interrupt.ctrl+enter queuetakes the slotctrl+shift+enter stops and sendsused to have.ctrl+shift+enterstill works and is still on the?sheet.ctrl+enterno longer marks a draft as a rule. Use/standing <words>.Fixed
countingAgent(the telemetry tee incmd/codeaf) handed the surface a copy of each queued stream, so the take-back named a stream the engine never minted and always gotfalse.Removed
queued for after this turn · click takes one back · ctrl+enter queues the draft).↑never reaches the queue. It stays the key for the parked block and history.Manual and docs
keys.md,screen.md,hints-and-tips.md,standing-orders.md, the icon design doc and the change entry all say what the code does now.Checked
make pr-ready: laws, manual andinternal/tui3all pass.devtoo (checked in a detached worktree atorigin/dev). Not caused by this branch:cmd/codeaf:TestDoOnTheRunEngine…×4 (/private/varvs/varpath mismatch)internal/session:TestNewAdmissionReadsSettingsChangedBeforeItsCreation,TestHeldBeltRunStopsWithoutPreparingRepositoryTry it
make build && bin/codeafStart a turn, type, press
ctrl+enter, then click the↳row.🤖 Generated with Claude Code