Skip to content

vscode: idle-state engagement umbrella — menu of complementary surfaces when the triage queue is empty #979

@amrmelsayed

Description

@amrmelsayed

Exploratory umbrella issue. Frames the broader concept of what an engineer does when the focus-mode triage queue is empty. Picks a coherent vocabulary across multiple candidate sub-surfaces — but doesn't itself ship any one surface; that's the job of the per-surface sub-issues (#968 already exists; Vim-Snake and puzzles are listed below as candidates).

The trigger this umbrella addresses

Codev's workflow rhythm: spawn builders, wait, triage gates as they fire, repeat. #800's focus mode handles the busy side of the queue (multiple builders blocked, serve them one at a time). The empty side — when no builder is at a gate, no PR needs review, no message awaits — is a real interstitial state that today is dead time. The engineer context-switches off Codev, loses momentum, returns slow when something does fire.

There isn't one right thing to put in that empty space — there's a menu of complementary surfaces, picked by mood and minutes available. This issue defines that menu and the common UX vocabulary across it.

Two value axes, four-quadrant framing

Sub-surfaces split cleanly along two axes — who benefits (the project vs the engineer's own skill / state) × what kind of work (purposeful action vs recreation).

Project benefits Engineer benefits
Purposeful action Action queue (#968) — small grooming / curation microtasks on the backlog, lessons, reviews (none listed yet — possible future: "spend 5 min reading a teammate's review you haven't seen"?)
Recreational / break (deliberately empty — recreation that helps the project blurs into busy-work) Vim-Snake skill-builder — game that teaches Vim motions via Snake controls. Brain puzzles — short cognitive puzzles for a mental reset

The menu offers what fits the engineer's current state. Some interstitials are 30 seconds (file a follow-up, relabel an issue); some are 2-3 minutes (a quick Snake round); some are "I need a mental break from this" (a puzzle).

Candidate sub-surfaces

Three concrete ideas in flight or proposed. Each has (or will have) its own issue for the actual implementation.

1. Action queue (#968) — project-grooming microtasks

Surfaces one project-improving microtask at a time: relabel an issue, classify protocol, file a missed follow-up, dedupe lookalike issues, leave a quick comment on a sibling PR. Do / Skip / Exit vocabulary. Already filed; depends on #800 as a hard prereq. The "project benefits" quadrant.

2. Vim-Snake skill-builder (new — file as sub-issue at this umbrella's plan-gate)

The classic Snake game, controlled via Vim motions (hjkl for movement, possibly w/b for word-jumps, gg/G for snap-to-edges). The snake eats apples, grows, dies on collision — same as classic Snake. The win is that the engineer's reflex muscle memory for Vim builds up via gameplay rather than rote drill. Educational without feeling like a lecture; 1–3 min per round.

Design surface (for the sub-issue's plan-gate, not this umbrella):

  • Surface (editor-tab webview à la vscode: editor-tab webview for rich backlog search #920? sidebar webview? command palette modal?)
  • Vim-motion vocabulary (start with hjkl only, add w/b/gg/G as the player ramps?)
  • Difficulty progression / scoring (or no scoring — just "play till you tire")
  • Theme integration (uses VSCode color tokens so it doesn't visually clash)

3. Brain puzzles (new — file as sub-issue at this umbrella's plan-gate)

Short cognitive puzzles for a mental reset between heavy triage sessions. Single round = 2–5 min. Not productivity-coded — explicitly a break, not a microtask.

Design surface (also deferred to sub-issue plan-gate):

  • Puzzle type — logic puzzles, pattern-matching, spatial reasoning, word-shape (exact format TBD; the umbrella doesn't pre-decide)
  • Generated vs curated content (procedural avoids running-out-of-puzzles; curated lets quality stay high but requires authoring)
  • Difficulty selection (one-knob easy/medium/hard? adaptive?)
  • Surface (same options as Vim-Snake)

Common UX vocabulary (set by this umbrella)

All sub-surfaces share the entry point and the choice metaphor:

  • Entry: when #800's focus-mode queue exhausts, the exit screen offers "Continue with..." + a list of available sub-surfaces. Or summoned directly via Cmd+K I ("idle") / palette / sidebar action when the user just wants one.
  • Menu: at most one sub-surface active at a time. The engineer picks; nothing is auto-launched.
  • Exit: every sub-surface exposes the same Exit action (Esc keystroke). Returns the engineer to the regular sidebar state.
  • No streaks / no graded performance: even the games. The umbrella's purpose is to fill dead time with something the engineer chose, not to score the engineer. Sub-surfaces may have intrinsic progression (puzzles get harder, Snake difficulty ramps) but never a "you've done X today!" badge.

Design questions for plan-approval (umbrella-scoped)

  1. Default menu order. When the exit screen lists candidates, which appears first? Project-value (vscode: idle-state action queue — surface small grooming / curation tasks when the triage queue is empty #968) first emphasises Codev's character; engineer-value (puzzles / Snake) first emphasises the "you've earned a break" framing. Or context-aware (if there are project items in the queue, offer those; if not, offer recreation)?
  2. Sub-surface lifecycle. Each sub-surface is a separate sub-issue. Should the umbrella commit to a shipping order (e.g. vscode: idle-state action queue — surface small grooming / curation tasks when the triage queue is empty #968 first as the foundational concept, then puzzles, then Snake), or land them as each becomes ready?
  3. Discovery vs default. The first time a user lands on the menu, do we explain what each option is (one-time tour), or trust that the labels are self-explanatory?
  4. Mood-mapping. Do we just list the surfaces, or describe them by mood ("want to tidy something?" / "want a quick game?" / "want a break?")? The latter is more inviting but more opinionated.
  5. Engineer-quadrant project-flavored sub-surface? Today's table has a deliberately empty quadrant (recreation that helps the project). Is that empty by definition (recreation can't help the project) or because we haven't thought of one yet? E.g. "spend 5 min reading a recent teammate review you haven't seen" sits ambiguously between action queue and learning surface.

What this umbrella isn't

  • Not a new product surface itself. It's a framing and vocabulary. The actual sub-surfaces (vscode: idle-state action queue — surface small grooming / curation tasks when the triage queue is empty #968, Vim-Snake, puzzles) each ship via their own issue.
  • Not a notification source. Nothing in the menu interrupts the user — only appears when they look.
  • Not auto-launching. Even the menu itself isn't pushed; it's offered via the focus-mode exit screen + explicit command.
  • Not a productivity tracker. Sub-surfaces don't report engineer activity anywhere — no "you spent X minutes on grooming this week" surface.

Acceptance (loose pending plan-gate)

  • Umbrella vocabulary documented somewhere durable (likely codev/resources/arch.md once a sub-surface ships) — entry / menu / exit, the mood-pick framing, the no-grading commitment
  • At least two sub-surfaces from different quadrants exist as separate filed issues with consistent UX vocabulary
  • When focus-mode's queue drains (vscode: focus mode — sequentially triage blocked builders, one at a time, with auto-advance #800), the exit screen surfaces the menu rather than just closing silently
  • User who never uses any of these surfaces sees zero change to the rest of the extension (opt-in by definition — empty queue + no menu interaction = same as today)

Why "project" / not feature

Frames a broader product concept with multiple sub-surfaces. Each sub-surface (incl. #968 and the to-be-filed Vim-Snake / puzzles) is its own implementation issue. This umbrella's job is to keep them consistent.

Related

Metadata

Metadata

Assignees

Labels

area/vscodeArea: VS Code extensionprojectNew project or feature

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions