11 KiB
11 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Entries are generated from the git history via
_primitives/_rust/kei-changelog (a conventional-commits walker).
Regenerate a single version block with, e.g.:
_primitives/_rust/target/release/kei-changelog \
--from v0.14.2 --to v0.15.0 --version v0.15.0 --update CHANGELOG.md
Unreleased
Work in flight on
feat/v0.16-changelog-genand follow-up branches. Only placeholders — no corresponding commits exist yet. Any line that ships must be replaced with the real commit summary before release.
Added
- primitives:
keiseiCLI MVP —attach <brain-path>+statussubcommands for mounting a portable exobrain directory into Claude Code. First step of the v0.18 exobrain architecture (multi-client adapter surface prepared; onlyclaude-codeadapter ships in MVP). - primitives (v0.19 — multi-client exobrain):
keisei mount <brain-path>— attach a brain to EVERY detected AI client in one shot (Claude Code + Cursor + Continue + Zed).keisei detach— remove the brain from every client recorded in the marker, preserving user's other MCP/context-server entries.keisei list-adapters— tabular dump of every registered adapter and whether it's detected on this host.- 3 new
ClientAdapterimplementations:cursor(.cursor/mcp.jsonproject-local or~/.cursor/mcp.jsonglobal),continue(~/.continue/config.{yaml,json}— YAML preferred, JSON fallback),zed(~/Library/Application Support/Zed/settings.jsonon macOS or~/.config/zed/settings.jsonon Linux, undercontext_servers). keisei-attached.tomlschema v2 — carries a list of[[attachments]](client_type + config_path) instead of a singleclient_type. v1 markers read transparently (auto-migrated in memory).- New error variants:
AdapterFailed { client, reason }andConfigParseError { path, reason }.
- Placeholder: CHANGELOG.md generation wired through
kei-changelog(this file). - Placeholder:
.github/workflows/release.yml— tag-driven multi-platform release. - Placeholder: pre-built-binary install path in
install.sh(KEI_SKIP_RUST_BUILD=1). - added:
kei-mcp-serversingle-binary compile for 5 platforms (linux/darwin/windows × x64/arm64 where available) viabun build --compile— v0.18 Phase 1 of the exobrain distribution architecture. Ships as bare binaries +.sha256sums on every GitHub release;install.shdetects a dropped binary at_primitives/_rust/target/release/kei-mcp-server-<os>-<arch>and skips bun/npm build. Opt-out viaKEI_SKIP_MCP_BUILD=1. See_ts_packages/packages/mcp-server/BUILD.md.
Changed
- Placeholder: plugin / block format refresh targeted for v0.16.0.
Security
- primitives/keisei (v0.19.2 audit polish — M1):
keisei-attached.tomlmarker is nowchmod 0o600on unix (Windows unchanged — no equivalent bit). The marker carries the resolvedbrain_pathand every attached client's config path; restricting it to owner-only closes the residual "other local user can enumerate attached brains" surface. - primitives/keisei (v0.19.2 audit polish — L9): every manifest-sourced string printed by
statusandattach(brain name, brain path, client/config paths) is now scrubbed throughdisplay::sanitize_display, which replaces every ASCII control byte (< 0x20or== 0x7F) with?. Closes the escape-sequence injection surface from a maliciousbrain.namelike"evil\x1b[2Jpayload"that would otherwise clear the user's terminal or rewrite already-printed lines. - primitives/keisei (v0.19.2 audit polish — L12):
manifest.tomlis now capped at 64 KiB (Error::ManifestTooLarge { size, max }). The check runs offfs::metadatabeforeread_to_stringso an attacker-supplied 1 GB file can't exhaust memory inside the toml parser. Legit manifests are ~1 KB; the cap is three orders of magnitude of headroom.
Fixed
- Placeholder: hook-bypass edge case follow-up to v0.15.1.
- primitives/keisei (v0.19 audit hardening): close 3 Security HIGH + 3 Critic HIGH + 2 Critic MEDIUM findings. Path-escape guard on
mcp_server+memory/artifacts/manifests(absolute /../ canonical-mismatch →PathEscape); brain-name regex^[a-z][a-z0-9_-]{0,63}$(InvalidName); symlink-rooted brain inputs rejected (BrainIsSymlink— closes USB →$HOMEpivot); MCP-entry collision check across all 4 adapters (NameConflictinstead of silent clobber); dropped unusedrusqlitedep (no C toolchain tail);BrainPaths.{memory,artifacts,manifests}relaxed toOption<String>;$KEISEI_HOME/$HOMEresolver deduped intopaths.rsSSoT;fsx::write_atomicrewritten ontempfile::NamedTempFilefor Windows + cross-fs correctness; 5 adversarial integration tests added (16 total pass). - primitives/keisei (v0.19.2 polish): dropped unused
ClientAdapterimports frommount.rs+detach.rs;Error::NotAttachedandAttachRecord::has_clientnow carry explicit#[allow(dead_code)]markers documenting that they're reserved for future callers / test-only respectively.cargo check -p keiseiis warning-clean; integration suite is 19/19 pass (3 new:marker_file_has_0600_perms_on_unix,status_sanitizes_control_chars_in_brain_name,manifest_too_large_rejected).brain.rsmodule-level doc-comment now lists the v0.19 invariants (path confinement / symlink reject / name regex / manifest size cap) and flags schema v2 as v0.20.
Security
- Pinned all GitHub Actions (
ci.yml,release.yml) by full commit SHA to defend against CVE-2025-30066-class supply-chain attacks via mutable tag re-pointing. - Removed
|| bun installfallback fromrelease.ymlbuild-mcp-binary job — lockfile is now strictly REQUIRED (H4 audit finding). - Added
.github/dependabot.ymlfor weekly SHA update PRs on github-actions, npm, and cargo ecosystems.
0.15.0 — 2026-04-22
Added
- primitives:
kei-artifacttyped handoff pipeline (BMAD-style doc passthrough) (3f303b7) - blocks: 5 cognitive mode blocks + 2 manifest wirings (
fdfc690)
0.14.2 — 2026-04-22
Added
- hooks: runtime controls via
KEI_DISABLED_HOOKS+KEI_HOOK_PROFILE(v0.14.2) (1a448e8)
Removed
- genesis-scan from public kit (internal tool, Bundle-only) (
268226b)
0.14.1 — 2026-04-22
Added
- ci: GitHub Actions workflows +
.claude/worktreesgitignore (407e8b7)
Changed
- readme + install: reconcile all count drift (F4 RELEASE BLOCKER) (
0199fd4) - rust: misc schema/main refactor in 8 crates (assorted CP splits) (
61448b9) - mock-render: split
main.rs227 LOC into 4 cubes (F5a Constructor Pattern) (ad5977d)
Fixed
- kei-auth: remove
--keyCLI flag (F12 HIGH —/proc/cmdlineleak) (b449587) - kei-refactor-engine: retract 'git apply-ready' claim (F1 RELEASE BLOCKER) (
f50ef43) - kei-store: path-traversal guard (F2 RELEASE BLOCKER) + S3 stub gate (F7) + GitHub RULE 0.1 guard (F8) (
ad9c53f)
0.14.0 — 2026-04-22
Added
- primitives: 10 Rust crates extracted from LBM (Genesis-scrubbed) (
a5e6649) - ts-packages: 6 TS packages — MCP server + 5 external-API adapters (
7b647d5)
Changed
- rust-core: Constructor-Pattern splits in
kei-router+kei-auth(afed921)
0.13.0 — 2026-04-22
Added
- integration: deep-sleep wired into MANIFEST + sleep-setup Phase 3b + README (
bcd80f6) - primitives: 4 Rust crates for deep-sleep —
conflict-scan,refactor-engine,graph-check,store(0f75493) - skills:
/onboardauto-project-analyze with 3-mode apply (full-auto / step-by-step / full-manual) (1396139)
Changed
- readme: "Why Rust, not Python" paragraph in author note (
92c918a) - readme: clarify "my sample, not claim of originality" in author note (
47d2448) - readme: add "double sorry" disclaimer in author note (
3d5d768) - readme: move "From the author" to opening, expand with transformer-error context (
fd67315) - readme: add "From the author" note (
b103c3d)
0.12.0 — 2026-04-22
Added
- integration: Phase A incubation wired into trigger + install + README (
d72de64) - skills:
/sleep-on-it6-phase wizard +kei-sleep-queueCRUD + incubation prompt (30df6cb)
0.11.0 — 2026-04-22
Added
- integration:
--with-sleep-syncflag + README Cloud REM sync section (1dd05c6) - skills:
/sleep-setup5-phase wizard (click + 1 free-text URL) (b658f81) - hooks:
session-end-dumpcallskei-sleep-syncafter ingest (1ab39d5) - primitives:
kei-sleep-setupwizard +kei-sleep-synchelper + trigger template (4fdaab6)
0.10.0 — 2026-04-22
Added
- integration: register
genesis-scanin MANIFEST core+full + README +install.shsizing (93ba0a0) - hooks:
git-pre-commit-genesis— template for repo symlink into.git/hooks/pre-commit(670af3f) - primitives:
genesis-scanRust — patent-IP leak detector (CI / pre-commit) (5db8548) - integration: wire
kei-memoryinto MANIFEST + settings-snippet + README for v0.10 (0b5da5a) - skills:
/self-audit5-phase triage pipeline (334a867) - hooks: 3 self-audit triggers — stop / milestone / error-spike (
a5c3896) - primitives:
kei-memoryRust crate — offline session analyzer (Genesis-clean) (448fc07)
0.9.1 — 2026-04-21
Added
- install: interactive menu (whiptail / dialog / plain) + confirm screen +
--yes/--no-execute(4809269)
0.9.0 — 2026-04-21
Added
- install: modular profiles +
--add/--remove/--listincremental install (b1b8de0) - primitives:
MANIFEST.toml— SSoT for 21 primitives + 6 profiles (764a999)
Changed
- readme: install profiles table + migration note for v0.9.0 (
47931a3)
BREAKING: default install profile is now
minimal(wasfull). Re-run with--profile=fullto preserve prior behaviour.
0.8.0 — 2026-04-21
Added
- install: copy
_primitives/+ build Rust workspace; registeragent-fork-logger+site-wysiwydhooks (b0d9389) - hooks:
site-wysiwyd-checkPostToolUse(Edit | Write) drift advisory (c2041b4) - skills:
/site-createpipeline (phases 0–4 — phases 5–6 deferred) (839ae57)
Changed
- compose-solution: prior-art grep paths + phase-5 cross-refs for 10 pipelines + 21 primitives (
f664cbc) - readme: v0.8.0 — 73 blocks / 34 skills / 21 primitives / 6 hooks / 11 bridges + pipelines section (
ed7d566)