Activity tab + Bolts intent picker#86
Open
dnapoleon wants to merge 1 commit into
Open
Conversation
…p of the tab bar
- New tab order: Activity → Bolts → Specs → Overview
- Activity tab fills the whole pane (removed the resizable bottom strip and persisted height)
- Bolts tab's scrollable content now extends to the bottom of the pane
Intent picker on the Bolts tab — replaces the "Current/Next Intent" display
- Dropdown lists every intent in the workspace; backend-active intent is marked (current)
- Selecting an intent updates the view immediately (in-session, no persistence across reloads)
- Default selection on first load is the backend's current/queued intent
Per-intent progress bar
- Percent complete now reflects only the selected intent (done / total bolts for this intent)
- Backend computes per-intent stats from the full bolt arrays (before display truncation), so older completions still count
- Breakdown line ("X in progress, Y queued, Z blocked") is also scoped to the selected intent
Filtered Up Next — shows only queued/blocked bolts belonging to the selected intent
Filtered Completions (now titled just "Completions")
- Shows completed bolts for the selected intent
- Removed the global 10-completion cap on the backend so per-intent lists are accurate
- Globally-recent completions are still available in the Activity tab
Styling tweaks on the picker
- Smaller dropdown font (12px / 600 weight)
- Inner <div class="container"> adds 4px of breathing room around the picker + progress block
- Removed the orange top border on the Bolts tab for visual consistency with other tabs
Backend plumbing
- QueuedBoltData, ActiveBoltData, CompletedBoltData each gained intent, intentNumber, intentName fields, resolved by looking the bolt's raw intent string up against state.intents (matches against number, name, combined ${number}-${name}, and folder basename — covers SAMX's full-folder-name convention)
- boltsData postMessage payload now includes boltIntents: { number, name }[] and intentStats: Record<string, BoltStats>
- Webview app.ts splits activity fields off the incoming bolts payload into dedicated state used by the Activity tab
Tests — fixture objects in webviewMessaging.test.ts and webviewProvider.test.ts updated to include the new fields; all 412 tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Take it or leave it. I needed a more organized way to see it.
Summary
Activity → Bolts → Specs → Overview). Fills the whole pane; resize handle and persisted height removed.(current). Selection is in-session, not persisted across reloads.Backend plumbing
QueuedBoltData,ActiveBoltData,CompletedBoltDataeach gainedintent,intentNumber,intentNamefields, resolved by matching the bolt's rawintentstring againststate.intentsby number, name, combined\${number}-\${name}, and folder basename (covers full-folder-name conventions like007-platform-tenant-access).boltsDatapostMessage payload now includesboltIntents: { number, name }[]andintentStats: Record<string, BoltStats>.app.tssplits the legacy activity fields off the incoming bolts payload into dedicated state used by the Activity tab.Test plan
(current)🤖 Generated with Claude Code