Requests
PR reviews assigned to me, oldest-first by default. This is the only section
with a layout cycle — D in the T transient steps A → B → C → D. All four
render the same four example PRs below so you can compare:
upside#16570— 2d, open, CI pass, approved, I'm @-mentioned, and a live review session is already running (gold tint +◉).upside#16568— 15d, draft, bot-authored, no local clone.reapit#123— 4h, open, CI failing / changes-requested, team requested.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.
| Key | Toggle | Effect |
|---|---|---|
D | Layout | cycle A → B → C → D |
@ | Mention | off → me → team → me+team |
F | Age | all / 1d / 3d / 7d / 14d / 30d |
C | CI | filter by CI state |
B | bot-authors | hide → show → mentioned |
b | 🤖 bot-pending | hide PRs whose latest activity is a bot (default on) |
c | 💬 needs-my-reply | hide PRs whose latest non-bot activity is someone else, i.e. awaiting my reply (default off) |
o | ⏳ waiting-others | hide PRs where I posted last and am waiting on others (default on) |
M | ↩ replied-to-me | only PRs where a human replied in a thread I took part in |
R | reviewed | cycle show → hide-mine → hide-any (default hide-any) — see below |
s | sort ⇅ | flip oldest↔newest (seeds the r picker) |
X | ⚠ conflict | hide mergeable = CONFLICTING PRs (default on) |
x | 📝 draft | hide 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 aggregatereview_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