Requests

PR reviews assigned to me, oldest-first by default. This is the only section with a layout cycleD in the T transient steps A → B → C → D. All four render the same four example PRs below so you can compare:

  1. upside#16570 — 2d, open, CI pass, approved, I'm @-mentioned, and a live review session is already running (gold tint + ).
  2. upside#16568 — 15d, draft, bot-authored, no local clone.
  3. reapit#123 — 4h, open, CI failing / changes-requested, team requested.
  4. upside#16571 — 1d, open, CI running, needs my reply.

See the colour legend and shape-family for glyph/colour meanings.

Layout A — Full (default)

wt-badge · age₃ · repo#N · [icon @ activity ◉] · title. The primary icon folds CI+review into one shape (hub.el:2699).

{hd}Requests (4){/} ⇅
{c}⎇ {/} {y}2d{/} upside{gd}#16570{/} {g}●{/}{gd bd}@{/}{ac}◉{/} {gd}CSE-201: refactor token cache{/}
{dm bd}↓ {/}{r}15d{/} upside#16568 {bo}π{/}   {dm}bump: dependency update{/}
{dm bd}↓ {/} {dm}4h{/} reapit#123 {r}◐{/}{c bd}@{/}  CSE-204: fix pubsub timeout
    {y}1d{/} upside#16571 {y}◐{/}{gd}💬 {/} CSE-205: retry policy for webhook

The row for PR 1 is gold-tinted end to end because a live session is reviewing it; per-column colours (icon green, @ gold, age yellow) still show through (add-face-text-property … append, hub.el:2711).

Layout B — Scoped

icon · @activity · title (hub.el:2694). Drops age / repo / number — the phase-aware minimal signal. is gone but the active row keeps its gold tint.

{hd}Requests (4){/}
{g}●{/} {gd bd}@{/} {gd}CSE-201: refactor token cache{/}
{bo}π{/}   {dm}bump: dependency update{/}
{r}◐{/} {c bd}@{/}  CSE-204: fix pubsub timeout
{y}◐{/} {gd}💬 {/} CSE-205: retry policy for webhook

Layout C — Label

icon · state-label₁₆ · title (hub.el:2684). The label is the human-readable state (dim, fixed 16-col) from decknix--hub-format-row-label.

{hd}Requests (4){/}
{g}●{/} {dm}approved       {/} {gd}CSE-201: refactor token cache{/}
{bo}π{/} {dm}draft          {/} {dm}bump: dependency update{/}
{r}◐{/} {dm}CI failing     {/} CSE-204: fix pubsub timeout
{y}◐{/} {dm}awaiting review{/} CSE-205: retry policy for webhook

Layout D — Minimal

wt-badge · age₄ · detail · icon · repo#N · title (hub.el:2672). High-signal, compact; the phase is implied by the glyph. This is what the retired sidebar-demo.txt §5 showed.

{hd}Requests (4){/}
{c}⎇ {/}  {y}2d{/} {gd bd}@{/} {g}●{/} upside{gd}#16570{/} {gd}CSE-201: refactor token cache{/}
{dm bd}↓ {/} {r}15d{/}   {bo}π{/} upside#16568 {dm}bump: dependency update{/}
{dm bd}↓ {/}  {dm}4h{/} {c bd}@{/}   {r}◐{/} reapit#123 CSE-204: fix pubsub timeout
     {y}1d{/} {gd} 💬 {/} {y}◐{/} upside#16571 CSE-205: retry policy for webhook

Section-header badges

The Requests (N) header grows badges for active filters (hub.el:2581):

{hd}Requests (4){/} {gd bd}@{/}          mention filter = me        (M-… / @)
{hd}Requests (4){/} {c bd}@{/}          mention filter = team
{hd}Requests (4){/} {bo}🤖{/}         bot-authors = show
{hd}Requests (4){/} {bo}🤖{/}{gd bd}@{/}        bot-authors = mentioned-only
{hd}Requests (4){/} ⇅          sort reversed (newest-first)

Toggles (the T → Requests group)

Each toggle owns one signal — no toggle does another's job, so they compose freely to fine-tune the list. The label beside each key in the transient is spelled out (not icon-only) so the state is unambiguous.

KeyToggleEffect
DLayoutcycle A → B → C → D
@Mentionoff → me → team → me+team
FAgeall / 1d / 3d / 7d / 14d / 30d
CCIfilter by CI state
Bbot-authorshide → show → mentioned
b🤖 bot-pendinghide PRs whose latest activity is a bot (default on)
c💬 needs-my-replyhide PRs whose latest non-bot activity is someone else, i.e. awaiting my reply (default off)
o⏳ waiting-othershide PRs where I posted last and am waiting on others (default on)
M↩ replied-to-meonly PRs where a human replied in a thread I took part in
Rreviewedcycle showhide-minehide-any (default hide-any) — see below
ssort ⇅flip oldest↔newest (seeds the r picker)
X⚠ conflicthide mergeable = CONFLICTING PRs (default on)
x📝 drafthide draft PRs (default on)

The reviewed filter (R)

Cycles three states so you can focus on PRs that still need a review from someone:

  • show — every request, regardless of review status.
  • hide-mine — hide PRs I have already reviewed or commented on (my_review ∈ APPROVED / CHANGES_REQUESTED / COMMENTED). PRs only a colleague has touched stay visible.
  • hide-any (default) — also hide PRs a colleague has engaged with: another human's standing review (APPROVED / CHANGES_REQUESTED / COMMENTED) or a conclusive aggregate review_decision. Someone else is already on it.

In hide-mine and hide-any a PR resurfaces when it genuinely wants you again:

  • a real re-request (you reviewed and the author re-requested you),
  • a direct @-mention by name in a comment or review, or
  • the review has gone stale — the author moved the PR forward since it was reviewed (a commit landed after it, or changes were requested and every inline thread is now resolved).

These signals (re_requested, comment_mentioned, others_reviewed, review_stale) are computed by the hub daemon and read from github-reviews.json; being a merely still-requested reviewer no longer forces an already-approved PR to stay visible.

Reviewing from the picker (r)

r opens the Requests picker (consult). Select a row to act on it, or — because the picker no longer requires a match — paste a PR URL that isn't in the list and press RET to review it directly. The review launches through the same path as the C-c A c r quick action, so it inherits the pr-review purpose's provider / model / auto mode.

Source

  • Renderer + layout cycle: agent-shell/hub-bulk/decknix-agent-shell-hub.el:2563
  • Primary icon / age / activity icons: agent-shell/hub/decknix-hub-icons.el
  • Active-review tint: decknix--hub-request-tint-active, hub.el:2711