Skip to content

chore(release): promote dev to main for 4.4.0 - #892

Merged
mrgoonie merged 69 commits into
mainfrom
dev
Jun 18, 2026
Merged

chore(release): promote dev to main for 4.4.0#892
mrgoonie merged 69 commits into
mainfrom
dev

Conversation

@mrgoonie

@mrgoonie mrgoonie commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • Promote the current dev line to main for the 4.4.0 official release.
  • Includes Kiro skill/migrate support, Antigravity 2 migration path support, Codex hook migration hardening, ignored-skill preservation, hook self-heal fixes, doctor network-check reliability, and config/schema parity fixes.
  • Review/fix pass found a release blocker: dev-release version bumps updated package.json without regenerating cli-manifest.json, leaving the final [skip ci] PR head able to ship stale CLI metadata.
  • Fixed by 9eda3c04 and verified by Release Dev bot commit 24e360f8 (4.4.0-dev.16), where package.json and cli-manifest.json now match.

Linked Issues / Included PRs

No single release issue. Included merged PRs: #868, #870, #872, #873, #874, #875, #877, #879, #880, #882, #884, #885, #887, #888, #890.

Review Result

  • /ck:review-pr --fix --reply: blocker fixed.
  • Duplicate/prior implementation gate: clear. This PR is the intentional dev -> main aggregation release PR.
  • Project standards checked: CLAUDE.md, AGENTS.md, docs/code-standards.md, docs/system-architecture.md.
  • Remaining risk: medium release blast radius, but gates pass and the release metadata drift is now covered in dev and official release paths.

Test Results

  • Final PR head 24e360f8: PATH="$HOME/.bun/bin:$PATH" bun run ci:local passed locally.
  • Final PR head manifest/docs drift check: no meaningful drift, cli-manifest.json version 4.4.0-dev.16.
  • GitHub PR CI on 9eda3c04: Test, Metadata Deletions Check, Release Dry-Run Check passed.
  • GitHub Release Dev on 9eda3c04: passed and created 24e360f8 chore(release): 4.4.0-dev.16 [skip ci].
  • Pre-push hook on 9eda3c04: local CI parity plus extra UI vitest suite passed.
  • Bun tests: 5017 passed, 57 skipped, 0 failed.
  • UI vitest: 20 files passed, 153 tests passed.

Changes

  • 82 files changed before review fixes; review fix adds release metadata regeneration/validation wiring.
  • Major areas: src/commands/portable, src/commands/migrate, src/domains/installation/merger, src/commands/update, CLI docs/manifest, migration/update/health-check tests, release metadata automation.

Ship Mode

  • Mode: official
  • Target: main

github-actions Bot and others added 30 commits May 27, 2026 14:25
…tion

fix: migrate legacy statusline runner
fix: make SQLite driver optional for CLI updates
Network-group probes (DNS/TCP/TLS/HTTP) use short wall-clock timeouts and
ran in the same Promise.all as checkers that make synchronous child-process
calls (gh auth status, npm view, node --check). Those freeze the single
thread for up to ~1.5s; a frozen loop fires the probe timers the instant it
resumes - before the already-completed I/O callback runs - yielding false
"unreachable"/timeout results on a healthy connection.

- check-runner: run the network group against a free event loop, before the
  loop-blocking groups
- github-reachability: resolve via getaddrinfo (dns.lookup) instead of c-ares
  so it matches the path git/gh/fetch use; defer raceTimeout rejection one
  tick so a completed result wins over a spuriously-fired timer
ConfigManager caches loaded config in a process-global static. Bun shares
that static across test files in one process, so a sibling test that loads a
real ~/.claudekit/config.json (when CK_TEST_HOME is unset) leaves it
populated. config.test.ts cleared the cache only in afterEach, so its first
test ("should return default config when no config file exists") inherited the
leaked value and failed - but only on machines that actually have a
non-default config (clean CI runners see the default, so it stayed green).

Clear the static cache and global flag in beforeEach too, mirroring the
existing afterEach, so the test is independent of cross-file state.
setupTestPaths().cleanup() did `process.env.CK_TEST_HOME = undefined`, which
Node coerces to the literal string "undefined" rather than removing the var.
After cleanup getTestHomeDir() then returns "undefined", so PathResolver
resolves config/cache under a bogus relative "undefined/..." path instead of
restoring the production location.

Use Reflect.deleteProperty(process.env, "CK_TEST_HOME") to truly remove it,
matching the convention already used in the other test files (and satisfying
biome's lint/performance/noDelete rule, unlike the `delete` operator).
The /api/system/info handler detected Bun with `typeof Bun !== "undefined"`,
which is only true when the CLI itself runs under the Bun runtime. Under the
shipped Node build it is always null, so the dashboard Health Check always
showed "Bun — not found" even when bun is installed and on PATH.

Probe `bun --version` on PATH via the existing runCommand helper, exactly like
the sibling git/gh checks; map empty/error output to null so an absent bun
still shows "not found".
…cache-isolation

test: reset ConfigManager static cache before each config test
test: properly unset CK_TEST_HOME in test-paths cleanup
…path-probe

fix: detect bun via PATH in system info instead of in-process Bun global
…kills

feat(init): preserve ignored skills during updates
…racking

fix: converge hook self-heal tracking
kaitranntt and others added 25 commits June 10, 2026 21:04
fix(install): gate dynamic team hook rehydration
…t-loop-starvation

fix: prevent false-negative GitHub network checks in ck doctor
The Zod StatuslineThemeSchema accepts quotaLow/quotaHigh but the JSON
schema file still rejected them via additionalProperties: false, so
schema-driven config editing silently dropped the quota theme colors.
Mirror the Zod constraints in ck-config.schema.json and add a parity
test asserting the JSON schema theme keys exactly match the Zod shape,
plus a round-trip test that both keys survive CkConfigSchema parsing.
Match the engineer runtime default. Yellow at 85%+ collided with the
brightYellow model section; red follows the contextHigh convention.
…parity

fix(schema): add quotaLow/quotaHigh to ck-config JSON schema theme
feat: add Kiro skill and migrate support

@mrgoonie mrgoonie left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review result: Approve, posted as comment because GitHub does not allow the PR author to self-approve.

Findings after fix: no remaining blockers.

What I found and fixed:

  • The dev-release bot commit path could advance package.json while leaving generated CLI metadata stale. This made the final [skip ci] PR head capable of shipping stale cli-manifest.json data even though the parent PR CI passed.
  • Fixed in 9eda3c04 by regenerating CLI manifest/reference docs after release version bumps, including generated metadata in release commits, and adding prepublish validation for manifest/package version parity.
  • Verified by Release Dev creating 24e360f8 chore(release): 4.4.0-dev.16 [skip ci] with package.json and cli-manifest.json both at 4.4.0-dev.16.

Checks:

  • GitHub PR CI on 9eda3c04: Test, Metadata Deletions Check, Release Dry-Run Check all passed.
  • GitHub Release Dev on 9eda3c04: passed.
  • Final PR head 24e360f8: PATH="$HOME/.bun/bin:$PATH" bun run ci:local passed locally, including manifest/docs drift check and packaged CLI verification.
  • Pre-push hook on 9eda3c04: passed local CI parity plus extra UI vitest suite.

Duplicate/prior implementation gate: clear. This is the intentional dev -> main official release aggregation PR.
Project standards checked: CLAUDE.md, AGENTS.md, docs/code-standards.md, docs/system-architecture.md.

Remaining risk: medium release blast radius, but no unresolved review findings.

@mrgoonie mrgoonie added the ready to ship Reviewed and ready to merge label Jun 18, 2026
@mrgoonie
mrgoonie merged commit e6bed09 into main Jun 18, 2026
1 check passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 4.5.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready to ship Reviewed and ready to merge released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants