A read-only, board-scoped screen for running a daily standup inside Janus. It shows what moved since yesterday, what's still in flight, what's blocked and who was quiet — as a single list of rows ordered closest-to-done first, so attention goes to finishing rather than starting.
Seven stacked regions, full width, no side panel. Everything above the body is control; everything below it is context.
Open section starts as a count — present, not in the way.Default state — Flow grouping, 24-hour window, two people filtered, one row expanded.
Six proportional segments, sized by count, so the shape of the day reads at a glance. Each one is a link that drills into its own group — clicking Moved 12 switches the body to Activity grouping and shows exactly those twelve tickets, from whichever grouping you were in.
After clicking Moved — grouping switched to Activity, one section, the other segments dimmed.
| Segment | Body becomes | Notes |
|---|---|---|
| Moved | Activity grouping · the Moved section only | Transitioned inside the window, not into a done status. |
| Closed | Activity grouping · the Closed section only | Finished inside the window. |
| New | Activity grouping · the New section only | Created inside the window. |
| Other | Activity grouping · the Other section only | Touched — comment, PR, label — but never transitioned. |
| Blocked | Blocked tickets, in whatever grouping you are already in | Blocked is a property, not an activity bucket — so it narrows the board without regrouping it. |
| Stalled | Stalled tickets, in whatever grouping you are already in | Same — a property of a ticket. A stalled ticket has no activity bucket at all, so forcing it into Activity would leave it nowhere to sit. |
One line, 37px. Two elements are links, one is a disclosure control, the rest is read-only signal.
▸ / ▾. Clicking
anywhere on the row except a link does the same thing.Opening a row reveals four read-only blocks and no controls: the transition timeline with actor and source, blockers, pull requests with CI state, and the AI comment summary plus a context line. Its only interactive elements are links — the blocker key and the PR. Anything you want to do happens on the ticket page.
The same rows, filters and controls; only the section headers change. Switched by the header tabs or G.
Flow orders sections by the board's own statuses, closest-to-done first. Activity groups by what happened in the window, and closes with a Still in flight section for work that did not move — without it, a quiet day renders as an empty screen even though the board is full. People groups by assignee, volume-ordered, with Unassigned always last.
Nothing bespoke — the screen is assembled from the existing design system.
| Element | Treatment |
|---|---|
| Radius | 6px for cards and sections, 4px for chips and controls, 2px for inline code, pills fully rounded. |
| Type | Fixed scale — 11 micro · 12 labels · 13 rows and body-compact · 14 body · 16 headers. Monospace for keys, counts and times only. |
| Surfaces | background for the page · card for sections · muted for section headers and expanded rows · accent for row hover. |
| Status | The existing status chip — tinted wash with a coloured leading dot and default text. Colour resolves from the ticket's own board configuration. |
| Priority | The existing chevron glyph, where shape encodes rank, so it reads without colour and at 14px. |
| Emphasis | Only three accents: primary for links and the focused row, amber for stale, red for blocked. Everything else is neutral. |
| Motion | Expand/collapse only. Rows never reorder while the screen is being read. |
Every value is a theme token, so the same layout renders in the app's dark theme with no changes.
| Aspect | Behaviour |
|---|---|
| Filters | Board, window, grouping, people, pulse groups, search, stale threshold and sort all live in the URL, so the view is linkable and returning from a ticket restores it exactly. |
| Navigation | Key and title are real links. Plain click navigates to the ticket; ⌘/Ctrl-click and middle-click open a new tab; Back returns to the console on the row you left. |
| Pulse drill-down | Each segment is a link. Clicking an activity segment switches the body to Activity grouping and narrows it to that group; Blocked and Stalled narrow the grouping you are already in, since they are properties rather than buckets. Clicking again, or clearing its chip, restores everything, as does switching grouping by hand. ⇧-click adds a second. See §03. |
| Keyboard | JK move · ↵ expand · ←→ collapse a section · O open · / search · G grouping · 1–6 pulse groups · ⇧F full screen · Esc closes the innermost thing. |
| Nothing hides while filtered | Sections furthest from done start collapsed on an unfiltered board, but never once a filter or drill is on — collapsing rows someone explicitly asked for makes the pulse bar and the body disagree. |
| Freshness | Data refreshes in the background but the view holds still; changes surface as a “3 changes · refresh” chip rather than reordering rows mid-sentence. |
| Quiet Monday | When nothing moved, the in-flight sections still render and the quiet roster shows everyone — the screen is never blank. |
| Narrow screens | The row sheds its tail right-to-left — time, then counts, then the transition pair — keeping chevron, key, title, avatar and age. Facets collapse into one Filters button. |