On a fresh CI runner, multiple Turbo tasks starting in parallel can race
to extract the Gradle wrapper zip, producing ClosedFileSystemException.
Run ./gradlew --version before turbo test:ci to ensure the wrapper is
fully extracted before any parallel task touches it.
Re-enable @kilocode/kilo-jetbrains in bun turbo typecheck (package.json) and
bun turbo test:ci (test.yml). Add Java 21 setup to the typecheck workflow so
Gradle can run. Fix three serialization test failures:
- KiloProfile200Response with null balance / with organizations: Effect's HttpApi
OpenAPI generator emits balance and currentOrgId as non-nullable even though
the server schema uses Schema.NullOr. Add fixProfileNullable step to
OpenApiSpecNormalizer that wraps these fields in anyOf: [{schema}, {type:null}]
before Kotlin client generation, plus regression tests.
- model limit context and output deserialize with large values (NoSuchMethodError):
compileTestKotlin was not invalidated when the generated API type changed, leaving
stale bytecode referencing the old ProviderConfigModelsValueAnyOfLimit class.
Wire compileTestKotlin -> fixGeneratedApi in backend/build.gradle.kts so API
regeneration always invalidates test compilation.
- Add kilocode_change markers around Java 21 setup in test.yml (required
by annotation checker for .github/** changes)
- Fix test-ci.ts: use ./gradlew.bat (not bare gradlew.bat) on Windows so
bun's shell can locate and execute the wrapper script
- Fix HistorySessionActionsTest: delete two items races — use waitFor
instead of fixed-duration flush so both coroutine deletes complete before
asserting; sort IDs for ordering-independent comparison
- Add setup-java@v4 (temurin 21) step to test.yml so Windows runner has
the JDK required for Gradle Kotlin compilation
- Fix SessionRecoveryTest: existing-session flow (controller("ses_test"))
calls showSession() after history load, setting showSession=true;
update show=false -> show=true in 7 assertSession calls that tested
this flow
Covers the "Node.js 20 is deprecated" warning emitted by actions/checkout,
actions/setup-node, actions/cache, actions/upload-artifact and
actions/download-artifact on their older releases.
Every bumped line carries an inline `# kilocode_change` marker since these
workflow files are shared with upstream OpenCode. When upstream bumps its
own action versions we just drop the markers on merge.
Keeps the 4vcpu host change in test.yml (already annotated with
# kilocode_change). The Node 20 deprecation warning stays for now;
`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` already forces the v4 actions to
Node 24 at runtime, so the warning is informational and CI still works.
Bumping all actions would require 40+ kilocode_change markers across
shared upstream workflows and invite conflicts on every upstream merge —
we'll pick up the version bumps when upstream does.
- Bump all active workflows to action versions that natively target Node 24:
checkout@v6, setup-node@v6, cache@v5, upload-artifact@v7, download-artifact@v8.
Resolves the "Node.js 20 is deprecated" warning in CI logs. The kept
`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24` env stays as a no-op safety net (also
in upstream OpenCode).
- test-runner: when running under GitHub Actions, emit a `::warning::`
annotation per flaky file and append a markdown table to
`$GITHUB_STEP_SUMMARY`. mikepenz/action-junit-report already surfaces
failures from the JUnit XML, but flakies pass cleanly on retry and were
invisible in the UI.
- Lower default runner concurrency from `os.cpus().length` to `min(4, cpus)`.
The bottleneck in CI is shared resources (OAuth callback ports, global
filesystem like `~/.local/share/kilo`), not CPU, so eight parallel Bun
processes were triggering port/FS races instead of going faster.
- Raise per-test timeout from 30s to 60s. Slow `spawn` on Windows was
tripping the 30s limit on tests that were just slow, not broken
(e.g. `session/prompt.test.ts` at ~86s, `provider/provider.test.ts` at ~54s).
- Retry failing files once and surface them as FLAKY in the summary plus a
dedicated section. Bugs still fail on every attempt; contention recovers.
- Drop CI runners from 8vcpu to 4vcpu to match upstream OpenCode — with
concurrency capped at 4, the extra cores bought us nothing.
- Add concurrency settings to cancel outdated runs when new commits are pushed
- Add contents: read permission for security hardening
- Remove redundant required job that checked test results
packages/app is not actively maintained so its E2E tests on Windows
and Linux are no longer useful. Disable the e2e job with `if: false`
and remove it from the required gate job's dependencies.
* feat: changelog generation
* refactor: rename all ENV variables to KILO prefix
* refactor: publish rework
* refactor: publish rework
* refactor: unify git commiter action
* refactor: add all kilobots to the team