diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 866d8cd..4d95ef4 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -17,6 +17,7 @@ | workplan | TAMQ-WP-0006 | finished | — | workplans/TAMQ-WP-0006-shell-native-message-routing.md | | workplan | TAMQ-WP-0007 | finished | — | workplans/TAMQ-WP-0007-terminal-output-notifications.md | | workplan | TAMQ-WP-0008 | finished | — | workplans/TAMQ-WP-0008-reply-shorthand-stable-output.md | +| workplan | TAMQ-WP-0009 | active | — | workplans/TAMQ-WP-0009-interactive-recipient-composer.md | | task | TAMQ-WP-ADHOC-2026-08-24-T01 | done | — | workplans/ADHOC-2026-08-24.md | | task | TAMQ-WP-0001-T01 | done | — | workplans/TAMQ-WP-0001-statehub-bootstrap.md | | task | TAMQ-WP-0001-T02 | done | — | workplans/TAMQ-WP-0001-statehub-bootstrap.md | @@ -51,3 +52,6 @@ | task | TAMQ-WP-0008-T02 | done | — | workplans/TAMQ-WP-0008-reply-shorthand-stable-output.md | | task | TAMQ-WP-0008-T03 | done | — | workplans/TAMQ-WP-0008-reply-shorthand-stable-output.md | | task | TAMQ-WP-0008-T04 | done | — | workplans/TAMQ-WP-0008-reply-shorthand-stable-output.md | +| task | TAMQ-WP-0009-T01 | progress | — | workplans/TAMQ-WP-0009-interactive-recipient-composer.md | +| task | TAMQ-WP-0009-T02 | todo | — | workplans/TAMQ-WP-0009-interactive-recipient-composer.md | +| task | TAMQ-WP-0009-T03 | todo | — | workplans/TAMQ-WP-0009-interactive-recipient-composer.md | diff --git a/workplans/TAMQ-WP-0009-interactive-recipient-composer.md b/workplans/TAMQ-WP-0009-interactive-recipient-composer.md new file mode 100644 index 0000000..3151f19 --- /dev/null +++ b/workplans/TAMQ-WP-0009-interactive-recipient-composer.md @@ -0,0 +1,70 @@ +--- +id: TAMQ-WP-0009 +type: workplan +title: "Interactive recipient-aware message composer" +domain: communication +repo: tmux-amq +status: active +owner: codex +topic_slug: coulomb-social +planning_priority: P0 +planning_order: 14 +created: "2026-08-24" +updated: "2026-08-24" +--- + +# Interactive recipient-aware message composer + +Make bare `@` safe for ordinary unquoted prose while keeping the selected +recipient visible and switchable. + +## Required operator contract + +Running `@` without arguments opens an inline composer whose prompt is the +selected repository, for example `@flex-auth: `. Plain text is read directly +from the terminal, so apostrophes and other shell punctuation do not require +quoting. Tab cycles through the other repository windows in the managed +session, preserving the draft. Enter queues the message and Ctrl-C cancels it. + +The initial recipient is the latest durable inbound sender when available. If +there is no message history, use the first other repository in the session. +The existing `@ MESSAGE` shorthand remains a non-interactive fast path and +retains normal shell quoting rules. + +## Expose session recipients to the generic command + +```task +id: TAMQ-WP-0009-T01 +status: progress +priority: high +``` + +Encode the addressable repository list in the tamq-owned generic `@` shim, +without changing shell configuration or trusting arbitrary repository names. +Exclude the current repository from the interactive recipient cycle. + +## Implement the terminal composer + +```task +id: TAMQ-WP-0009-T02 +status: todo +priority: high +``` + +Add a small terminal-local editor that displays `@recipient: `, accepts literal +UTF-8 prose, handles backspace and Ctrl-U, cycles recipients on Tab without +losing the draft, submits on Enter, and restores terminal settings on every +exit path. Ctrl-C cancels without queuing a message. + +## Prove and document the interaction + +```task +id: TAMQ-WP-0009-T03 +status: todo +priority: high +``` + +Cover recipient ordering, shim metadata, non-TTY rejection, punctuation, +editing and cancellation with pseudo-terminal tests. Run the full checks, +install the build, exercise the composer in the live two-window session, and +update README and SCOPE.