v0.26.0
v0.26.0 (May 8, 2026)
✦ Stability & Strategic Alignment Release
Summary: Completes four independent hardening initiatives from the v0.25.0 session:
- Browser smoke test action — new Incident Studio action type for AI-guided web application verification, aligned with VS Code 1.119 browser agent tools
- Auto model selection regression fix — preserves literal
'auto'string through all normalize helpers so Auto model UI state doesn't collapse - Smart rate-limit fallback — one-shot intelligent fallback on 429/quota/overloaded errors with cache reset before first streamed chunk
- View controls UI polish — improved header button readability with larger icons/labels and dedicated CSS context
Quality gates: typecheck ✓ | build ✓ | 736/736 tests ✓
Added
Browser Smoke Test Action (VS Code 1.119 Alignment)
New browser-smoke-test action type in Incident Studio enables AI-guided smoke testing of web applications. Opens project's dev server in VS Code simple browser and generates structured verification checklist:
User trigger keywords:
browser smoke,smoke test,ui smokebrowser test,browser checkverify ui,verify browser,open browser
AI generates report with:
- Smoke result (PASS/FAIL)
- Verified endpoints (URL → HTTP status → pass/fail)
- Detected issues
- Recommended next step
Implementation across four contract layers:
-
Action Matrix (
incidentCliActionMatrix.ts):- Entry ID:
project-browser-smoke-test - Scope:
project(project-scoped incidents only) - Stability:
advanced - Command:
rapidkit dev
- Entry ID:
-
Prompt Policy (
incidentStudioPromptPolicy.ts):- Added to
INCIDENT_ACTION_ALLOWLIST - Risk class:
non-mutating-executable(read-only, no mutations) - Risk level:
low(safe to execute automatically) - No impact review required
- No verify-path required
- Can complete incident without external verification
- Added to
-
Payload Contracts (
incidentStudioPayload.ts):- Integrated into
buildIncidentActionExecutionMetadatanon-mutating branch - Consistent risk classification across all layers
- Integrated into
-
Action Routing (
welcomePanel.ts):- New
RoutingResulttype variant:'browser-smoke-test' - Keyword matching for natural-language routing
- Inline query builder that:
- Detects running dev server port from
runningServersregistry - Opens VS Code simple browser with detected URL (graceful fallback if unavailable)
- Generates AI-driven endpoint verification checklist
- Detects running dev server port from
- New
Model Selection Regression Fix
Fixed v0.25.0 regression where literal string 'auto' was being normalized to null/undefined, breaking Auto model selection flow. All three normalize helpers now preserve 'auto' as a real model value:
normalizeSelectedModelId(raw)inApp.tsx: converts only empty string → null;'auto'preservednormalizeRequestedModelId(raw)inwelcomePanel.ts: converts only non-string or empty → undefined;'auto'preservednormalizePreferredModelId(raw)inaiService.ts: converts only empty string → undefined; any other string (including'auto') preserved
Impact: Auto model selection now flows correctly through all three layers without collapsing to no-selection state.
Smart Rate-Limit Fallback
Implements intelligent one-shot fallback on retryable model errors (429, rate limit, quota, service unavailable, overloaded, busy):
Error detection:
isRetryableModelRequestError(err): regex matches 429, rate limit, quota, unavailable, overloaded, busy, service unavailable, model unavailable
Fallback flow:
selectFallbackModelForFailure(failedModel): resets model selection cache and callsselectModelAuto()for alternative- If auto-select picks same model, falls back to raw model registry for different option
emittedFromPrimaryguard: only retries if zero chunks streamed from primary (prevents duplicate partial responses)- Returns updated
modelIdif fallback succeeds
Regression test: new test validates that when autoModel throws 429, fallbackModel is called and full response is returned with correct fallback modelId. All 15 tests in aiService.test.ts passing.
Incident Studio View Controls UI
Improved readability of Maximize and Lite/Full view toggle buttons in header:
- Font-size: 10.2px for labels, 12px for icon symbols
- Font-weight: 800 (bold)
- Letter-spacing: 0.01em for visual clarity
- Min-height: 24px, padding: 4px 10px, gap: 6px
- CSS context
.incident-header-group--viewisolates sizing to View toggles only
Fixed
- driftGuard test assertion: Updated
context: ctx, requestIdcheck to match multi-line object formatting inApp.tsx(split into two separate assertions). Pre-existing formatting drift from earlier refactoring, no behavioral change to stop-generation contract.
Quality Gates
- ✓
npm run typecheck: 0 TypeScript errors - ✓
npm run build: esbuild main + webview build clean - ✓
npm run test: 736/736 tests passing- aiService.test.ts: 15/15 (includes new fallback test)
- driftGuard.test.ts: 11/11 (updated assertion)
- incidentStudioPromptPolicy.test.ts: policy checks passing
Files Changed
v0.25.0 hot-fixes + browser-smoke-test action:
- src/core/aiService.ts — smart fallback + normalize helper
- src/ui/panels/incidentStudioPromptPolicy.ts — browser-smoke-test allowlist + policy
- src/ui/panels/welcomePanel.ts — model normalization + routing + inline query builder
- webview-ui/src/App.tsx — model normalization + View controls styles
- webview-ui/src/components/AIIncidentStudio.tsx — View controls UI
- webview-ui/src/lib/incidentCliActionMatrix.ts — browser-smoke-test action entry
- webview-ui/src/lib/incidentStudioPayload.ts — browser-smoke-test payload contracts
- webview-ui/src/styles-tailwind.css — View controls CSS
- src/test/aiService.test.ts — new fallback test
- src/test/driftGuard.test.ts — assertion fix
- package.json — version 0.25.0 → 0.26.0
- CHANGELOG.md, RELEASE_NOTES.md — documentation updates
Compatibility
- ✓ No breaking changes (all changes backward-compatible)
- ✓ VS Code 1.119+ recommended for full browser agent tools integration
- ✓ Graceful fallback if VS Code simple browser unavailable
- ✓ Model normalization preserves existing behavior (only converts truly empty values)