StandupBrief — VS Code Extension
Personal standup-brief dashboard, surfaced directly inside VS Code: PRs awaiting your review, PRs you authored, open incidents, and recent local commits — all in one place.
Part of the standup-brief monorepo. This package is the VS Code surface; core data fetching lives in standup-brief-core.
Features
- Sidebar TreeView with grouped sections for pull requests, issues, and incidents
- Full webview dashboard that adopts your current VS Code theme
- Status bar item showing an urgent-count badge with one-click refresh
- Auto-refresh on a configurable interval
- GitHub + Microsoft sign-in via VS Code's built-in
vscode.authentication providers
- Copy current brief as Markdown for pasting into standups, issues, or notes
All views are rendered from a single BriefResult (see standup-brief-core/types) so the tree, webview, and status bar stay consistent.
Install
Install the packaged VSIX directly:
code --install-extension standup-brief.vsix
The shipped artifact lives at dist/standup-brief.vsix (~84 KB).
To build the VSIX from source:
pnpm -F standup-brief build
pnpm -F standup-brief package
Configuration
Twelve settings, organized into four groups under Settings → Extensions → StandupBrief.
General
| Setting |
Default |
Description |
standupBrief.refreshIntervalMinutes |
15 |
How often (minutes) to auto-refresh the brief. |
standupBrief.staleAgeDays |
7 |
Age (days) after which a PR or review request is considered stale. |
standupBrief.recentCommitsHours |
24 |
Lookback window (hours) for the "recent activity" commit section. |
standupBrief.statusBar.enabled |
true |
Show the status bar item summarising urgent items and pending reviews. |
standupBrief.watchedRepos |
[] |
Repository names to flag for extra attention (highlighted and bumped in priority). Empty = none. |
Azure DevOps
| Setting |
Default |
Description |
standupBrief.ado.organization |
"" |
Azure DevOps organization name (required). |
standupBrief.ado.project |
"" |
Azure DevOps project name (required). |
standupBrief.ado.viewerEmail |
"" |
Your Azure DevOps account email; required for authored-PR queries. |
standupBrief.ado.viewerObjectId |
"" |
Your AAD object id; required for reviewer queries. Find via az ad signed-in-user show --query id -o tsv. |
standupBrief.ado.repoFilter |
[] |
Optional allow-list of ADO repo names; empty = include all. |
GitHub
| Setting |
Default |
Description |
standupBrief.github.viewerLogin |
"" |
Your GitHub login (e.g. octocat). |
standupBrief.incidentRepos |
[] |
GitHub repos scanned for open incidents. Entries are { owner, name } objects. |
Local Git
| Setting |
Default |
Description |
standupBrief.gitRepos |
[] |
Local repos for the "recent activity" section. Entries are { name, path, branch? } (branch defaults to main). |
Commands
All commands are available under the StandupBrief category in the command palette.
| Command ID |
Palette Title |
Description |
standupBrief.open |
StandupBrief: Open Dashboard |
Open the full webview dashboard. |
standupBrief.refresh |
StandupBrief: Refresh |
Force a fresh fetch of the brief. |
standupBrief.openPR |
StandupBrief: Open PR |
Open a PR in the browser (invoked from TreeView items). |
standupBrief.copyMarkdown |
StandupBrief: Copy Brief as Markdown |
Copy the current brief to the clipboard as Markdown. |
standupBrief.signIn |
StandupBrief: Sign In |
Trigger GitHub + Microsoft sign-in via VS Code auth. |
standupBrief.setAdoPat |
StandupBrief: Set ADO PAT |
Store an Azure DevOps PAT in SecretStorage (fallback auth). |
standupBrief.setGithubPat |
StandupBrief: Set GitHub PAT |
Store a GitHub PAT in SecretStorage (fallback auth). |
standupBrief.diagnoseAuth |
StandupBrief: Diagnose Auth |
Diagnose GitHub and ADO authentication status. |
standupBrief.showLogs |
StandupBrief: Show Logs |
Reveal the extension output channel. |
standupBrief.openSettings |
StandupBrief: Open Settings |
Jump to the extension's settings page. |
Authentication
The extension uses VS Code's built-in vscode.authentication providers for both GitHub and Microsoft (AAD) sign-in — no PAT needed for the primary path. Tokens are issued and refreshed by VS Code; the extension never stores them itself.
If sign-in is unavailable, run StandupBrief: Set GitHub PAT or StandupBrief: Set ADO PAT to store a fallback token in VS Code SecretStorage.
Note: ADO requests currently send the Microsoft session token as a Bearer token. Full PAT-based Basic auth inside AdoClient is on the roadmap.
Screenshots
Validation screenshots are regenerated on demand via the PowerShell capture script:
pnpm -F standup-brief build
pnpm -F standup-brief package
pwsh packages/vscode/scripts/capture-screenshots.ps1
Outputs (gitignored) land in packages/vscode/test-artifacts/screenshots/:
| File |
Contents |
vscode-sidebar-treeview.png |
Activity Bar + StandupBrief tree view |
vscode-webview-dashboard.png |
Full webview dashboard panel |
vscode-status-bar.png |
Cropped status-bar strip |
The script launches an isolated VS Code instance (dedicated --user-data-dir
and --extensions-dir under $env:TEMP) so it does not perturb your primary
profile. It is idempotent: existing screenshots and isolated dirs are deleted
at the start of each run.
Implementation note — test-electron vs PowerShell
An earlier design used @vscode/test-electron + Electron capturePage() to
automate capture from inside an Extension Host (Option A in the design notes).
VS Code 1.85 ships with Electron 25, where @electron/remote is deprecated
and BrowserWindow is not reachable from the extension-host Node process
without bespoke IPC — brittle enough that we standardised on the PowerShell
wrapper (Option B) as the validation protocol. The internal command
standupBrief._loadFixture (env-var gated by STANDUP_BRIEF_ALLOW_FIXTURES=1,
otherwise a no-op) is retained so Option A can be wired up later without
another round-trip.
Roadmap
- ADO PAT (Basic auth) support in
AdoClient for environments where AAD sign-in isn't viable
- Marketplace publishing (currently sideload-only via VSIX)
- Telemetry opt-in for usage and error reporting
Development
Source lives in packages/vscode/src/. The extension is bundled with esbuild (esbuild.config.mjs) into dist/extension.js.
To iterate locally:
- Open the monorepo in VS Code.
- Run
pnpm -F standup-brief build (or pnpm -F standup-brief watch for incremental builds).
- Press F5 to launch an Extension Development Host with the extension loaded.
Useful scripts:
pnpm -F standup-brief build # one-shot esbuild bundle
pnpm -F standup-brief watch # rebuild on change
pnpm -F standup-brief typecheck # tsc --noEmit
pnpm -F standup-brief lint # biome check src
pnpm -F standup-brief package # produce dist/standup-brief.vsix
There is no runtime test suite yet — pnpm -F standup-brief test is a no-op and typecheck is the current gate. Unit tests for the webview and tree providers are tracked alongside the roadmap items above.