Skip to content

feat(gtd): show GTD state indicators in inbox rows - #582

Open
salmonumbrella wants to merge 1 commit into
maathimself:mainfrom
salmonumbrella:feat/gtd-inbox-indicators-current
Open

salmonumbrella wants to merge 1 commit into
maathimself:mainfrom
salmonumbrella:feat/gtd-inbox-indicators-current

Conversation

@salmonumbrella

Copy link
Copy Markdown
Contributor

Summary

@maathimself, this brings #371 back onto current main now that #493, #535 and #538 have landed. Inbox and search rows show each GTD state on the message or thread. The backend metadata endpoint and frontend chips stay behind the plugin boundary from #368.

Waiting chips show the oldest labeled message’s age, because MailFlow does not store when a label was applied. They turn stale at 15 whole days.

Changes

  • Add a bounded, account-scoped label reader and plugin-owned metadata endpoint, including custom folder mappings and live copies matched by thread or Message-ID.
  • Add a neutral message-row slot for flat and threaded rows; GTD owns visibility, state order, colors and accessible age labels.
  • Batch visible rows per account, publish healthy batches independently, and guard stale responses, retries and session teardown.
  • Refresh after classification, undo, Done, unclassification, GTD events, reconnects and folder-map changes.

Replaces #371. Refs #368. #372 and #373 remain separate follow-ups in the maintainer’s requested order.

Testing

  • Node 22 CI-equivalent gate: backend lint, plugin-boundary lint, syntax and 2,421 tests; frontend lint, production build and 2,840 tests.
  • All 32 optional PostgreSQL tests passed against a disposable database, including metadata, thread counts and reply-draft lookup/ingestion.
  • Regression checks failed against the main integration and reintroduced cache/SQL defects, then passed with the feature restored.
  • Both production dependency audits passed the required high-severity threshold. Existing moderate advisories remain in qs and React Router; dependencies and lockfiles are unchanged.

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.

Keep the message-row slot neutral and expose bounded account-scoped label metadata through the plugin API. Resolve live thread and Message-ID copies with oldest labeled-message dates, and refresh the plugin cache safely across mutations, retries and session changes.
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