7f4decee26
- Add `kb reindex` command with confirmation prompt and --yes flag - Add implicit note shorthand: `kb "my note"` submits a note directly - Rename `add` to `addfile`, remove --note/--title/--type flags - Add client-side file extension validation before upload - Add `kb examples` command for common usage patterns - Update README, SKILL.md, and main specs - Archive completed changes and sync delta specs BREAKING: `kb add` renamed to `kb addfile`, `kb add --note` replaced by `kb "text"` Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33 lines
2.4 KiB
Markdown
33 lines
2.4 KiB
Markdown
## Why
|
|
|
|
Client and engine are currently locked to the same version number and released together via a single script. This means a client-only bug fix (e.g. output formatting) forces a full engine Docker image rebuild and push, and vice versa. Decoupling versions allows each component to be released independently on its own cadence, while a compatibility check ensures users don't run a client that requires engine features not yet deployed.
|
|
|
|
## What Changes
|
|
|
|
- **Separate version files** — `client/VERSION` and `engine/VERSION` may diverge (they already exist as separate files, but are currently always set to the same value)
|
|
- **Split release script** — Replace single `release.sh` with `release-client.sh` (builds Go binaries, tags `client-vX.Y.Z`, creates release) and `release-engine.sh` (builds Docker images, tags `engine-vX.Y.Z`, creates release, pushes images)
|
|
- **Client compatibility check** — Client embeds a `MinEngineVersion` constant (set at build time or in code). On every command that contacts the engine, the client calls `GET /api/v1/status`, compares the engine's reported version against `MinEngineVersion`, and hard-fails with an actionable error if the engine is too old. No skip flag, no warning — just a clear error with upgrade instructions.
|
|
- **Tag naming convention** — `client-vX.Y.Z` and `engine-vX.Y.Z` replace the current `vX.Y.Z` tag format. **BREAKING** — existing tag format changes.
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
|
|
(none)
|
|
|
|
### Modified Capabilities
|
|
|
|
- `go-client`: Add engine version compatibility check requirement (hard fail if engine version < MinEngineVersion)
|
|
- `engine-api`: Status endpoint already returns `version` — no change needed, but delta spec documents the contract that the version field is required for compatibility checking
|
|
- `docker-deployment`: Compose files pin engine image tag; release script changes affect image tagging
|
|
|
|
## Impact
|
|
|
|
- `release.sh` — replaced by `release-client.sh` + `release-engine.sh`
|
|
- `client/cmd/root.go` — new `MinEngineVersion` constant
|
|
- `client/internal/api/client.go` — version check on first API call
|
|
- `client/Makefile` — may inject `MinEngineVersion` via ldflags alongside `Version`
|
|
- Git tags — new naming convention (`client-v*`, `engine-v*`)
|
|
- Gitea releases — two separate releases per independent release cycle
|
|
- `engine/compose.nvidia.yaml`, `engine/compose.rocm.yaml` — add pinned image tag
|