Skip to content

feat: multi-message send queue aligned with Qoder IDE - #31

Merged
luoxuanzao merged 1 commit into
mainfrom
feat/multi-message-queue
Aug 18, 2026
Merged

feat: multi-message send queue aligned with Qoder IDE#31
luoxuanzao merged 1 commit into
mainfrom
feat/multi-message-queue

Conversation

@luoxuanzao

Copy link
Copy Markdown
Member

Summary

  • Replace the single queued-message slot with a FIFO multi-message send queue, aligned with the Qoder IDE send-queue UI: a collapsible panel above the composer shows "Waiting to send N" with one row per pending turn (drag handle, text preview, edit and delete actions).
  • While a response is streaming, further sends stack into the queue instead of replacing the previous pending message; entries drain one per turn end in send order, and rows can be drag-reordered, edited back into the composer, or deleted individually.
  • Stop semantics rework: interrupting a streaming turn no longer withdraws queued content into the composer. The queue is preserved as-is and the head entry is still sent after the interrupted turn settles (stop = "skip this turn, continue with the next").
  • Queue UI strings localized in all ten locales; queue panel styling aligned with the IDE (bare icon buttons via scoped specificity over Obsidian's default button chrome, rounded row hover, no divider lines).

Verification

  • npm run typecheck
  • npm run lint
  • npm run test (3348 tests, incl. new queued-message-controller suite: FIFO render/drain, per-item edit/delete, drag reorder, collapse/expand, clear)
  • npm run build
  • npm run release:check
  • npm run audit:prod
  • Tested affected qodercli behavior against a real CLI when applicable (manual pass in the test vault: multi-enqueue while streaming, collapse, per-item edit/delete, drag reorder, FIFO drain at turn end, stop preserves queue and drains head)

Safety

  • No credentials, private vault content, internal URLs, or personal paths are included
  • User-visible changes are documented in CHANGELOG.md

Replace the single queued-message slot with a FIFO queue panel above
the composer: collapsible header with pending count, per-entry drag
handle for reordering, edit (withdraw into composer) and delete
actions. Entries drain one per turn end in send order.

Stopping a streaming turn now preserves the queue and still sends the
head entry after the interrupted turn settles (stop = skip this turn),
instead of withdrawing queued content into the composer.

Queue strings are localized in all ten locales.

Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
@luoxuanzao
luoxuanzao merged commit 3cee7e2 into main Aug 18, 2026
10 checks passed
@luoxuanzao
luoxuanzao deleted the feat/multi-message-queue branch August 18, 2026 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant