App-server: GET /v1/unread for GPUI NEW divider and conversation unread
- Dominant language
- Rust
- Stars
- 41k
- Forks
- 3.6k
- Avg merge
- 13h 59m
- Merged PRs (30d)
- 299
Description
GPUI Hmbown/codewhale-apps#638 landed the messaging-style transcript (collapsed activity, date separators, NEW divider) on `a89545e` with a truthful client-side fallback. Probed on throwaway Codewhale 0.9.13 (`93e511c2c7a9`):
* `GET /v1/unread` — 404
* `GET /v1/transcript` — 404 (not invented; sessions/threads already serve the log)
* `GET /v1/messages` — 404 (not invented)
GPUI NEW uses `last_read_item` against the existing client-side Ready set. Do not invent a second unread store in the desktop.
Reconcile `crates/tui/src/runtime_api.rs` against today's tip before adding a route. If unread already exists under another path (threads/summary, sessions, or a last-read field on those), name it. Otherwise serve per-conversation unread / last-read so the NEW divider and the conversation list share one Engine-owned state, with a mark-read that matches opening the conversation after the divider has been seen.
Related: Hmbown/codewhale-apps#638 (NEW divider), Hmbown/codewhale-apps#633 (unread in the list).
Contributor guide
Research direction
Start by reconciling crates/tui/src/runtime_api.rs with today's tip, then inspect existing threads, sessions, summary, and last-read fields before adding a route. Read related issues Hmbown/codewhale-apps#638 and #633 for the NEW divider and list behavior. Done means one Engine-owned per-conversation unread or last-read state, with marking read aligned to opening a conversation after the divider is seen.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend-api-design
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100