Skip to content

fix(desktop): preserve queued input and stable queue controls - #266

Draft
wangtsiao wants to merge 1 commit into
7df-lab:mainfrom
wangtsiao:fix/desktop-queue-controls-20261108
Draft

wangtsiao wants to merge 1 commit into
7df-lab:mainfrom
wangtsiao:fix/desktop-queue-controls-20261108

Conversation

@wangtsiao

Copy link
Copy Markdown
Contributor

Changes

  • Preserve all Native queued input fields when steering, including images, audio, skills, and mentions. Resolve the current queued input by ID rather than resending its display preview.
  • Use stable source/target IDs for drag-and-drop and convert to Native's one-based positions at drop time. A draining queue no longer moves the wrong message.
  • Show queue action errors with an accessible alert and retain retry controls. Prevent text-only editing from discarding non-text context, and do not restore an edit draft when removal failed.
  • Guard repeated actions and retain pending/error/cleanup state across conversation navigation. After a confirmed successful steer followed by failed removal, retry cleanup without steering again.

Verification

  • Added 19 transport, hook, DOM drag, and rendered-control regression tests. The initial regression set also reproduced the failures against main at 4228c9d.
  • Full Desktop suite: 945 passed, 1 skipped, 0 failed using XDG_CONFIG_HOME in a temporary directory because the local home is read-only.
  • tsc --noEmit, electron-vite build, and git diff --check passed.
  • Local protocol artifacts were copied unchanged from the checked-in TUI Native generated files at the same base commit; the generator was not rerun locally because Cargo is unavailable.
  • bun run lint could not run because the repository's Desktop installation does not provide the biome executable.
  • Independent review found no new blocking issue in this scoped patch.

Known boundary

This does not make queue-to-steer atomic. The existing two RPCs can still race with server queue draining; a lost steer response or unmounted composer also prevents reliable client-side deduplication. Exactly-once transfer needs a separate Native operation that claims the original queue ID and deduplicates retries. This PR remains draft and does not change the server protocol or claim that race is fixed.

No merge or deployment requested.

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