Skip to content

feat(gtd): show GTD states first in the move picker - #658

Open
salmonumbrella wants to merge 1 commit into
maathimself:mainfrom
salmonumbrella:feat/gtd-move-picker
Open

salmonumbrella wants to merge 1 commit into
maathimself:mainfrom
salmonumbrella:feat/gtd-move-picker

Conversation

@salmonumbrella

@salmonumbrella salmonumbrella commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

@maathimself, with GTD on, the move picker now starts with the GTD states.

What changed

  • The move picker leads with Todo, Delegated, Watch, Reference and Someday, then Recent, Favorites and the folders as before.
  • Picking a state tags the message the same way the t/d/w/v/b keys do, so the Inbox copy stays and Undo works. This applies to all five pickers, including bulk.
  • Tagging several messages shows one toast with one Undo.
  • With GTD off, or on an account without GTD, the pickers look as they do on main. The one exception is the mobile reader sheet, which drew a double divider between sections and now draws a single one.

GTD states first in the move picker

Why

The GTD folders were listed as ordinary folders, so clicking one moved the message out of the Inbox without going through Done, and a thread could end up in two states. They now appear once, as tags.

Usage

No usage change.

Closes #657

Frontend only. Tests, lint and build pass, and I checked all five pickers with GTD on and off against a mocked API.


Contributor License Agreement

By submitting this pull request I confirm that:

  • I have read and agree to the Contributor License Agreement.
  • My contribution is my own original work (or I have identified any
    third-party material and confirmed it is compatible with the CLA).
  • I have the right to submit this contribution under the terms of the CLA.

With GTD on, every move picker now leads with a GTD section (Todo,
Delegated, Watch, Reference, Someday) above Recent. Picking a state tags
the message the way the t/d/w/v/b keys do: the Inbox copy stays, any
other state is dropped and Undo works. The GTD folders no longer appear
a second time as plain folders, where clicking one did an IMAP move that
skipped Done and the one-state-per-thread rule.

Core gains a move-picker-sections collector and buildMovePickerSections,
which replaces the Recent/Favorites/All block copied across the reader
dropdown and mobile sheet, the context menu and both bulk pickers. GTD
contributes through the collector; core imports no GTD code. Bulk
selections tag one message at a time through classifyManyWithUndo with
one toast and one Undo. With GTD off the pickers render as before.

If the folder list fails to load, the GTD section still shows above the
"No folders" message. Bulk tagging tags each message once, and its Undo
is dismissed when one of its threads later switches state. The mobile
reader sheet draws one line between sections instead of two.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

GTD states are hard to find in the move picker, and picking one there moves instead of tagging

1 participant