source-links.md lives in packages/kilo-docs/ so changes to it already
trigger the docs link checker. The source code path triggers belong
only in source-check-links.yml (the freshness gate).
- Move generated source-links.md into packages/kilo-docs/ so the
existing docs link-checker (docs-check-links.yml) validates URLs
- Add --check flag to extract-source-links.ts for CI freshness check
- Replace lychee step in source-check-links.yml with freshness check
- Merge source-link exclusions into packages/kilo-docs/lychee.toml
- Remove standalone source-links-lychee.toml (no longer needed)
- Remove source-links.md from .gitignore (file is now committed)
- Add source code path triggers to docs-check-links.yml
Extract user-facing URLs from packages/kilo-vscode/ and packages/opencode/src/
into a markdown file that lychee can check for broken links. Reuses the same
Kilo-Org/lychee-action used by the docs link checker.
- script/extract-source-links.ts: Bun script that greps TS/TSX/JS/JSX source
files and filters out API endpoints, localhost, examples, templates, vendored
code, tests, and stories
- script/source-links-lychee.toml: lychee config with exclusions for sites that
block automated checks (GitHub, OpenAI, etc.)
- .github/workflows/source-check-links.yml: CI job that runs on PRs touching
extension or CLI code, plus weekly scheduled runs
The smoke-test job in the publish workflow has been blocking releases
due to infrastructure issues with the external kilo-bench runner.
Changes:
- Set `if: false` on the smoke-test job so it is skipped
- Remove smoke-test from the publish job's `needs` list
- Add comments explaining the disable and how to re-enable
The smoke-test job definition is preserved intact for easy re-enablement.
This workflow triggers a webhook when a pull request is closed and merged, specifically for branches containing 'feat'. It sends relevant PR data to a specified webhook URL.
- Add check-kilocode-change script in packages/kilo-vscode/package.json
- Update CI to use the script instead of inlined grep
- Document the check in root AGENTS.md alongside knip
The timestamp approach incorrectly deleted valid baselines that Playwright
didn't rewrite (because they already matched). Instead, read the Storybook
index.json to compute the expected set of screenshot filenames, and only
remove baselines that don't correspond to any current story.
The previous approach of removing all baselines before regeneration caused
spurious changes because Playwright produces slightly different PNGs across
runs (within tolerance but different bytes). Also, skipped stories had their
baselines permanently deleted.
Instead, create a timestamp marker before the test run and delete only
screenshots that weren't touched by Playwright (i.e., stale baselines for
removed stories). This also reverts the spurious baseline changes from the
previous auto-commit.
Add a 'format:check' step to the test-vscode workflow so PRs that
introduce formatting drift in packages/kilo-vscode are caught before
merge. Uses the existing 'format:check' script (prettier --check .)
already defined in packages/kilo-vscode/package.json.
Ref: #6919
- Replace gh run list --limit 1 with timestamp-based API polling to
avoid picking up an older or unrelated smoke-test run
- Pass release_tag instead of cli_version so kilo-bench downloads from
the exact draft release, not just the first one found for a version
- Add 60s clock skew buffer for runner/GitHub time drift
* feat(vscode): add knip dead code detection to agent-manager
Add knip to the kilo-vscode package to detect and prevent dead code in
the agent-manager. This includes:
- knip.json config scoped to src/agent-manager/ and webview-ui/agent-manager/
- CI pipeline step in test-vscode.yml to run knip on every PR
- Clean up unused exports: narrow interfaces/types to non-exported where
only used locally, remove unused re-exports from FileTree.tsx and
review-comments.ts
* expand knip scope to entire kilo-vscode package
- Widen project scope from agent-manager only to src/**/*.ts and
webview-ui/**/*.{ts,tsx}
- Exclude vendored src/services/autocomplete/** from analysis
- Enable ignoreExportsUsedInFile for component Props patterns
- Delete 4 dead files: legacy-migration barrel/messages, settings
barrel, webview telemetry util
- Trim barrel re-exports in cli-backend, telemetry, browser-automation
to only what consumers actually import through the barrel
- Unexport private helpers: getNonce, joinCspDirectives,
NEW_EXTENSION_IS_STILL_EXPERIMENTAL flag, getVSCodeAPI,
dispatchMockProviders, errorCodes
- Narrow 5 unused exported types to non-exported
migrate default model IDs from kilo/auto to kilo-auto/frontier and related references across the codebase. update defaults in gateway constants, VSCode provider, tests, UI defaults, and e2e seed. align docs and examples to use kilo-auto/frontier and kilo-auto/free. this is a breaking change for existing configurations
BREAKING CHANGE: update default model IDs to kilo-auto/frontier and kilo-auto/free
kilo/auto and kilo/auto-free no longer used as defaults; update all
references accordingly
Add Storybook + Playwright visual regression testing for the VS Code
extension's composite webview UI. This tests the full composition of
kilo-ui components with extension-specific contexts and styles.
- .storybook/ config with kilo-vscode theme defaults
- StoryProviders mock wrapper for DataProvider, SessionContext, etc.
- 7 composite stories: tool+permission, permission dock, tool cards,
chat idle/busy, multi-tool assistant message
- Playwright config on port 6007 with auto-discovery
- CI workflow updated with parallel kilo-vscode visual regression job
- Exported SessionContext and LanguageContext for story use
- Add package.json to Storybook cache key (dep version changes invalidate cache)
- Add res.ok check before parsing Storybook index JSON
- Remove duplicate maxDiffPixelRatio (already in playwright.config.ts)
- Use parseInt for PLAYWRIGHT_WORKERS to handle non-numeric values
The workflow now:
1. Runs --update-snapshots to write new/changed baselines
2. Commits any changes back to the branch
3. Fails the job if baselines changed, so the PR author is notified
This avoids silently accepting visual changes — the author must pull
and review the updated baselines.
- Add @playwright/test, playwright.config.ts (Chromium, 1280x720)
- Test file auto-discovers all stories from Storybook's index.json
- Screenshots cropped to #storybook-root, grouped per component
- CI workflow on Blacksmith with Storybook/Playwright/Bun caching
- Paths filter: only runs when kilo-ui or its deps change
- Auto-commits missing baselines back to the branch via CI
- Skips head-only (Font, Favicon) and non-deterministic (Typewriter) stories
- Documented in CONTRIBUTING.md