Chief Home: a pinned Needs you section lists the Feed's open requests

Merged
TE
2d ago
+878-4

Correction (Leo, 2026-11-03): he asked to see permission items, not a pinned card by default; #34110 makes it opt-in. Its look is not yet verified.

This PR is the Chief Home part. The Feed side (#33705) already posts these as open requests and pins them at the top of the Feed. Until now nothing showed them in Chief Home.

What changes

  • Chief Home shows a pinned Needs you card under the header while the Feed has open requests (opt-in since #34110). It lists the requests the Feed pins, in the Feed's order (FeedModel.needsYou = listSections.requests), read from the Feed's own model. There is no second store.

  • Each row says what the request is and who asked, using the Feed row's own text (FeedRowContent's headline and who/where, plus the age). A click on the row opens the request's source:

    • its link (a held PR, a sign-in page) through the Feed's own open;
    • otherwise the tab or agent chat that asked;
    • otherwise the Feed Inbox, with the request selected.
  • One-click answers: approve, confirm, sign-in, review and the other answers the Feed row offers in one click sit at the end of the row. They are the Feed's own FeedAnswerControls, so they answer through FeedModel.answer and add no new logic. A question or a choice opens instead, because it needs typing or picking.

  • Past three requests the rest are counted ("2 more"), and the count opens the Feed.

  • It is hidden when nothing waits (no empty-state chrome), and it shows only in a Chief's conversation.

  • It sits over the transcript, under the header and above the message box, so showing, hiding or resizing it moves no message (no layout shift).

  • Observation and cleanup: one ObservationStream per Chief Home reads whether anything waits, and the card's SwiftUI view observes only its own rows. It wakes only on a Feed change and starts no timer. The watch is cancelled when the conversation stops being a Chief's and in HomeHostView's deinit.

  • Variants: three styles under Debug Settings > Feed > "Needs you in Home" (feed.needsYouStyle), switched live:

    • rows (default): one line each, with answers at the end.
    • cards: the Feed list's request cards.
    • bar: one line with the count and the first request.

    I picked rows. It is the shortest card that still answers in place, so it covers the least of the chat. cards repeats each request's full prompt, which is too tall over the chat, and bar hides who asked.

References used: cursor/live/getting-started-checklist (a quiet rounded card with its label on the left and a count beside it) and claude/live/session-running-with-side-panels (a centered column, with what is pinned staying put while the transcript scrolls).

Prior art kept: #22646 (the agent pane's Needs you list) and #24071 (that header badge moved to the App Store, off by default) are untouched, and no chat-header badge is added. No *Chief* file and no Chief-area path is changed.

Localization: one new string, needsYou.more ("%lld more"), in CmuxNextFeed's xcstrings with every locale that table carries (en, de, fr, ar, es, zh-Hant, zh-Hans, ko, ja and the rest). The title reuses the Feed's existing "Needs you" (group.needsYou). The Debug Settings labels are developer-only and, like the other tunables, not localized.

Testing

HomeNeedsYouTests (CmuxNextAppTests) has five tests:

  • the section lists exactly the Feed's open requests in the Feed's order (priority, then newest; no notice, no answered request);
  • past the limit the rest are counted;
  • it hides when nothing waits, and an answer through the Feed's path removes the row;
  • only a Chief's conversation shows it;
  • the section sits under the header and above the message box, and the transcript keeps its frame with or without it.

Runs:

  • Red at fc6f8cc34b146d9b85bf1e70311e5a076ce9309e (the test only): fleet package-test-lane.sh suite Packages/macOS/CmuxNext HomeNeedsYouTests fails to compile the test: value of type 'HomeNativeTranscriptView' has no member 'pinnedSection', cannot find 'FeedNeedsYouView' in scope.
  • Green at cbd8579a2a932a72c72d9e62506fb0b880311820: the same suite passes, 5 tests. cmux-ci compile-check --app passes at 7f93b17, whose source is the same as this head (the later commit changes only the test).
  • Review follow-ups are fixed in 7f93b17; the rest are in #33830.

Not run

  • No live DEV build check of the card yet, and no screenshots. Switch variants live under Debug Settings > Feed > Needs you in Home.

Agent session: agent session

šŸ¤– Generated with Claude Code