Open Previously Seen on its own screen with 9 - #342
Merged
Conversation
The web app's 9 jumps to Previously Seen; the TUI now gives those threads a screen of their own, on HEY's own route for them, ordered by when they were seen. The tab sits in the box row just before Labels, the arrows walk through it, and the box's own number or esc lands back on the list it was opened over. A covered Imbox hides its seen threads; this screen is the way to look at them. Every thread action works there — reply, forward, move, labels, collections, and the triage keys — reading its selection from the screen's list and filing out of the Imbox, which is whose threads these are whatever source the screen was opened over. A thread moved out, trashed, marked spam or marked unseen is not previously seen any more, so it leaves the screen and the list refills from below. The screen opens before its first page answers, the way a box switch does: the tab is selected there and then, so the ribbon reads on past it to Labels rather than asking for the screen again.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a dedicated, paginated Previously Seen TUI screen using HEY’s typed SDK endpoint.
Changes:
- Adds
9shortcut and subnavigation for Previously Seen. - Supports navigation, pagination, and thread actions.
- Adds SDK paging integration, tests, and README documentation.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
README.md |
Documents Previously Seen navigation. |
internal/tui/tui_test.go |
Updates subnavigation test. |
internal/tui/mail.go |
Implements the screen, navigation, paging, and actions. |
internal/tui/mail_test.go |
Tests Previously Seen behavior. |
internal/tui/content.go |
Generalizes list-row removal. |
internal/tui/collections_test.go |
Updates collection navigation tests. |
internal/mail/page.go |
Adds typed Previously Seen paging. |
internal/mail/page_test.go |
Tests endpoint and cursor handling. |
go.mod |
Adds a local SDK replacement. |
go.sum |
Removes the previous SDK checksums. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
robzolkos
force-pushed
the
previously-seen-screen
branch
from
August 26, 2026 17:39
edf15d7 to
0c7315b
Compare
robzolkos
force-pushed
the
previously-seen-screen
branch
from
August 26, 2026 18:54
0c7315b to
31140a3
Compare
Collaborator
|
Addressed the review feedback: the PR now uses the published SDK, documents the typed Previously Seen endpoint, and supports selection and bulk replies from the Previously Seen screen. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
From a customer report (HEY CLI card 10240722474): the web app's
9jumps to Previously Seen, and the TUI had no answer to it — nor any way to see what a covered Imbox hides without lifting the cover.What this does
Previously Seen gets a screen of its own, backed by HEY's route for it, which orders threads by when they were seen — an ordering the Imbox's own pages don't offer.
9shortcut. The arrows walk through it both ways, the box's own number or esc lands back on the list the screen was opened over, and the screen opens the moment the tab is stepped on — spinner while the first page loads, like a box switch — so the ribbon reads on past it to Labels instead of ringing the fetch twice.isays "Already in Imbox" and the move picker doesn't offer it. A thread moved out, trashed, marked spam or marked unseen is not previously seen any more: it leaves the screen and the list refills from below.next_history_urlback into the seen route — the URL names/imbox, but its cursor belongs to the seen ordering, so it never goes back to the box.Depends on
basecamp/hey-sdk#129 (
GetImboxSeen). Draft until that ships — the last commit pointsgo.modat a local SDK checkout and gets dropped for a pin on the released version (plus the usual nix vendorHash refresh).