Hmbown / Hmbown/Codewhale

App-server: GET /v1/unread for GPUI NEW divider and conversation unread

Open
#6,164 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.