feat(desktop): Mission Inbox — Cần bạn / Đang bay / Xong with in-place open - #96
Merged
Conversation
…e open Home's inbox now leads with three mission sections derived from the stores that already know the answer: Cần bạn (pending approvals and user-input requests from needsYouStore — both 46010 and 46040 families), Đang bay (active agent turns, now carrying channel ids), and Xong (recent conversation outcomes). Sections are pure derivation (missionInbox.ts) over a new reference-stable getNeedsYouForAll snapshot (generation-invalidated, cleared on every prune path), mapped to existing InboxItems by conversation id — no rival store, reset on community switch. Clicking a row opens the conversation in place through Home's existing detail surface; rows without a feed item fall back to the channel thread context using the request's real 64-hex root event id — never a conversation UUID posing as an event id, and never a silent no-op. The '→ channel' affordance uses the same id discipline. Home now ingests 46040 user-input requests live (per-channel subscriptions using the same filter as useChannelUserInput, wired through useLiveHomeFeedActions) and resolves them on 46041 answers and 46042 resolutions, so Cần bạn clears without visiting the channel. The subscription effect keys on a joined channel-id string, immune to array-identity churn from callers. Store note: this branch originally carried its own 46040 extension routing user input through the approval lifecycle; it was dropped in favor of #80's canonical separate-family store when that merged. Three grok-4.5 review rounds: r1 flagged the store conflation and identity gaps; r2 (post-unification) found production-impossible feed shapes, silent clicks, and UUID-as-event-id navigation; r3 verified the live ingest/resolve path and click table, with the final subscription-stability fix applied by the orchestrator. Fixes #81 Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
oscarlehuu
force-pushed
the
feat/issue-81
branch
from
August 7, 2026 06:42
a1f5e23 to
51474df
Compare
oscarlehuu
added a commit
that referenced
this pull request
Aug 7, 2026
* fix(desktop): translate Mission Inbox section labels to English PR #96 shipped the Mission Inbox with Vietnamese section labels (Cần bạn / Xong / Đang bay) left over from the design prototype, while every other string in the product is English — the empty states right under those headers already say "Nothing needs you" and "Nothing ready to review". Rename to Needs you / Ready to review / In flight and update the e2e assertions. Verified: biome + tsc clean, mission-inbox.spec.ts smoke 1/1. Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com> * fix(desktop): biome import-type + format fixes blocking Desktop Fast Two pre-existing lint/style/useImportType errors on main (merged while main CI runs were cancelled) fail Desktop Fast on any new branch: MessageComposer.tsx and useMentionSendFlow.ts. Auto-fixed with biome, plus formatting of the widened label object literal. Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com> --------- Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
This was referenced Aug 8, 2026
e2e shard 4 is a dead lane: cancelled at the 30m timeout on 6/6 consecutive main runs since #95
#109
Closed
This was referenced Aug 10, 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.
Summary
Mission-control series (#81, spike decision: Inbox 3 sections, thread opens in place):
needsYouStorePure derivation (
missionInbox.ts) over a new reference-stablegetNeedsYouForAllsnapshot (generation-invalidated, cleared on every prune path), mapped to existing InboxItems by conversation id. No rival store; community-reset wired.In-place open & navigation discipline
Row click → Home's existing detail surface (Buzz's Inbox thread surface with composer — reviewer-accepted as the in-place surface for the locked decision). No feed item → fall back to channel thread context using the request's real 64-hex root event id; no real id → plain channel open. Never a conversation UUID posing as an event id, never a silent no-op.
Live 46040 on Home
Per-channel live subscriptions (same
buildChannelUserInputFilterasuseChannelUserInput) throughuseLiveHomeFeedActions; resolve on 46041 ANSWER + 46042 RESOLVED — Cần bạn clears without visiting the channel. Subscription effect keys on a joined id string (immune to caller array-identity churn — protects the pre-existing 46010 subscriptions too).Store unification note
This branch originally extended
needsYouStoreby routing 46040 through the approval lifecycle; that variant was dropped for #80's canonical separate-family store when #94 merged. Only branch store delta:getNeedsYouForAll+ its cache discipline.Tests & verify
22 unit tests (sections from unified store, identity mapping, allCache, store lifecycle) · e2e: production-shaped live 46040 → Cần bạn row → in-place detail (URL unchanged) + real 46041 answer resolution + channel fallback navigation, ×2 green, hash-distinct screenshots ·
pnpm run check+tscclean (AppShell held at the 1000-line ratchet).Built by gpt-5.6-luna max (build + three fix rounds); reviewed by grok-4.5 across three rounds — r1 store conflation + identity gaps; r2 production-impossible feed shapes, silent clicks, UUID-as-event-id; r3 verified live ingest/resolve + click table ('fix A then approvable' — the subscription-stability fix A applied by the orchestrator).
Fixes #81