Repository navigation
Conversation
…nflict-pr-head # Conflicts: # crates/monocode-gpui/src/inbox.rs
…tic marks, fixtures Phone side of the shared inbox contract: protocol types and request helpers, scope/group/mark/undo/stale logic, a store with persisted last page, offline handling and polling at the catalog's cadence, a provider, and a fixture client behind EXPO_PUBLIC_INBOX_FIXTURES. Co-Authored-By: Claude <noreply@anthropic.com>
Persist per-item done and snooze state next to Seen, add the slim camelCase response types and pure list/page/slim/diff functions for the phone Inbox, share the provider patch parser, and document the protocol.
… them The list only knew items by repository, so the Inbox had no reason to show for GitHub. Add best-effort review-requested and mentions searches per repository and set attention_reason on the matching rows.
Add the inbox.list/item/diff/checks/mark/start/media handlers in mobile_host/inbox.rs. A list is the cached snapshot, answered at once, with a background refresh through the desktop Inbox; provider reads run off the UI thread; triage is saved with the desktop's read state; inbox.start reuses the session.start path and its command-id dedupe; images and avatars resolve through the allowlisted media adapters from an opaque key or index.
… the catalog
Items the NotificationTracker reports as newly appeared and that carry a
review request, mention, assignment or failed pipeline go out as category
`inbox` with data {kind, key}, unless the desktop Inbox is on screen. The
workspace catalog gains `inbox: true`.
The undo toast, its timer and the swipe-action buttons move to ui/ so the Sessions list can use the same ones. Adds an archive icon.
…ld hide rows, pull to refresh, grouping menu and glass segments The host serves the phone from the desktop Inbox's snapshot only while the desktop's filters and projects would not narrow it; otherwise it keeps a second snapshot fetched with default filters over the desktop's and the Monos' projects. A watching phone refreshes it after 30 s. `inbox.list` takes `refresh: true` for pull to refresh and answers when that fetch ends (20 s at most). On the phone the scope switch becomes GlassSegments, the grouping menu moves to GroupMenu (SwiftUI picker on iOS, ChoiceMenu on Android) behind a shared GlassMenuButton, chip rows keep the page swipe out of their drag (useKeepsSwipe), and LiquidView gains `interactive` for native glass without an onPress. Also runs cargo fmt over the Inbox files.
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
This was referenced Nov 1, 2026
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.
What changed
The phone gets an Inbox: a third page on each project, next to New session and Sessions. It lists the same GitHub, Linear, Jira, GitLab and Azure DevOps items as the desktop Inbox. The desktop serves it through the pairing link, so the phone never holds provider credentials.
Phone
ChoiceMenuon Android). Swipe a row to mark it done, snooze it, or mark it read or unread, with an Undo toast. There are also offline and error banners, a loading skeleton, and pull to refresh.inboxnotification category. Tapping one opens the item.ui/(UndoToast,SwipeAction,useToast). NewGlassSegmentsandGlassMenuButton.LiquidViewgainsinteractive, so native glass reacts to touch without anonPress.useKeepsSwipekeeps a sideways-scrolling chip row from turning the page.inbox: true, so an older desktop app leaves it out.Desktop host
inbox.list,inbox.item,inbox.diff,inbox.checks,inbox.mark,inbox.startandinbox.media, inshell/mobile_host/inbox.rs. The wire types and triage state live inmonocode-core(mobile/inbox.rs,inbox/patch.rs), and the protocol is written up indocs/native/mobile-inbox-protocol.md.refresh: true(pull to refresh) waits for a fresh fetch, 20 s at most.Depends on #1225
The phone rows show each item's author, and the host reads the viewer login per provider. Both (
Item.author,Snapshot.viewers) come from #1225 (Inbox author filter). This branch merges #1225's head, so the diff here includes it until #1225 lands. Review the commits after "Merge #1225 …".Stacked on top of this: #1288 (Monos in sessions, archive with Undo).
How it was tested
cargo clippy -p monocode-core -p monocode-gpui --all-targets --profile native-dev -- -D warnings: clean.cargo test -p monocode-core: 689 passed. Nativeinboxtests: 14 passed, including the phone triage and separate-fetch tests.cargo fmt --check: clean for the touched files.main.rsandtests/review_wheel_tmp.rsare already unformatted onmainand left alone.mobile:tsc --noEmitclean,npm run lint0 errors (2 existing warnings indictation.ts), and vitest 32 files / 224 tests passed.cargo testformonocode-gpui(disk space on the build machine) and an on-device run of this exact branch.