The skip list in script/upstream/utils/config.ts matched .github/VOUCHED.md,
but upstream actually ships .github/VOUCHED.td (typo extension), so the file
fell through to manual resolution every merge. Broaden the pattern to
.github/VOUCHED.* so both variants are handled.
Also make skip-files removeFile report the real git rm stderr on failure
and retry once. Transient index contention silently flipped a file to
not-found in a recent run with no signal about why — now we'll see the
error and shake off intermittent lock failures automatically.
Transforms feed git-reported repo-relative paths into Bun.file() and
Glob.scan(), both of which resolve against cwd. Running the script from
script/upstream/ (as the README suggests) silently broke every file
lookup, causing pre-merge transforms to return zero results and i18n
auto-resolve to crash with ENOENT.
Uses 'git merge-base --is-ancestor' per tag (parallelized) to mark
upstream versions reachable from HEAD with a '✓ merged' annotation.
Kilo's own package version no longer tracks upstream, so semver
comparison isn't reliable; the ancestor check is the source of truth
and handles non-linear merge history correctly.
The catalog: protocol only resolves when the package is part of the root
workspace. script/upstream is intentionally decoupled from the monorepo
so it can run during upstream merges (when the workspace may be in a
half-broken state), which means 'cd script/upstream && bun install'
failed with 'failed to resolve catalog:'. Pin to the version currently
in the root catalog.
Previously the check trimmed each separator cell before comparing
against the allow-list, which meant `| --- | --- |` passed as
`---`. The documented rule requires the tight `|---|---|` form;
compare the raw cell so space-padded separators fail too.
Prettier pads markdown table cells for column alignment, which turns any
content change into a table-wide realignment diff. Markdown was only in
prettierignore for packages/kilo-vscode/; the root formatter still
repadded docs elsewhere (e.g. TESTING.md, kilo-docs, AGENTS.md).
Adds *.md to the root .prettierignore, documents the convention in
AGENTS.md, and adds script/check-md-table-padding.ts + a workflow to
enforce it. Existing padded tables in Kilo-owned docs have been
rewritten via the script's --fix mode.
Swap --text-strong for --text-base so the Auto-Approve tool headers
use the same CSS variable pattern as other settings pages (Providers,
Agent Behaviour, etc.).
Replace undefined --text-strong-base CSS variable (which fell back to
literal white) with the actual --text-strong token and a theme-aware
VS Code foreground fallback, so tool headers on the Auto-Approve
settings page stay readable under light themes.
Fixes#8879
Add an explicit initialDiffStyle field to the openDiffVirtual message flow so each caller declares the desired diff style up front while having `unified` diff as default to prevent regressions.
The large auto-generated models-snapshot.ts is replaced with a minimal
stub, and its compiled outputs (.js, .d.ts) are added to .prettierignore
to prevent formatting of generated files.
Update installation tests to reference @kilocode/cli instead of
opencode-ai for npm/bun/pnpm version lookup assertions. Adjust
session schema decoding test to omit the patch field from
SummaryFileDiff, matching the kilo-specific schema shape.
Route the autocomplete model setting through getAutocompleteModel() in
settings.ts, AutocompleteServiceManager, and ChatTextAreaAutocomplete so
that missing, empty, or removed model IDs all resolve to codestral
instead of being passed through to the FIM call.
Refresh JSON Schema snapshots and adjust unit tests to reflect recent
schema modifications in the opencode tool definitions.
- Mark bash `description` field as optional and update its prefix text
- Add i18n key fields (headerKey, questionKey, labelKey, descriptionKey)
to the question tool snapshot
- Flip bash parameter test from rejecting to accepting missing description
- Remove stale blank line in snapshot file