Files
steve 7f4decee26 Reindex command, implicit note shorthand, add→addfile rename
- 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>
2026-03-29 13:58:04 +01:00

2.6 KiB

1. Client Compatibility Check

  • 1.1 Create client/MIN_ENGINE_VERSION file with initial value 2.0.0
  • 1.2 Add MinEngineVersion variable to client/cmd/root.go (set via ldflags, default dev)
  • 1.3 Update client/Makefile to read MIN_ENGINE_VERSION file and inject via -ldflags "-X cmd.MinEngineVersion=..." alongside existing Version
  • 1.4 Add CheckEngineVersion(minVersion string) method to client/internal/api/client.go that calls GET /api/v1/status, parses version field, and compares against minVersion using semver major.minor.patch
  • 1.5 Add versionChecked bool field to Client struct; guard CheckEngineVersion so it runs at most once per Client instance
  • 1.6 Call CheckEngineVersion at the start of Client.do() (before executing the actual request); skip if MinEngineVersion is empty or dev
  • 1.7 On version mismatch: print Error: kb client vX.Y.Z requires engine vM.N.P+ (connected engine is vA.B.C)\nUpdate your engine image to engine-vM.N.P or later. to stderr and os.Exit(1)
  • 1.8 On status endpoint unreachable: skip version check silently (let the actual request surface the error)

2. Release Script — Client

  • 2.1 Create release-client.sh extracting client-specific logic from release.sh: version bump of client/VERSION, Go binary build, git tag client-vX.Y.Z, Gitea release with binary assets
  • 2.2 Release notes template: include MinEngineVersion requirement (e.g. "Requires engine v2.0.0+")
  • 2.3 Pass MIN_ENGINE_VERSION to make all in the build step

3. Release Script — Engine

  • 3.1 Create release-engine.sh extracting engine-specific logic from release.sh: version bump of engine/VERSION, Docker image build (nvidia + rocm), git tag engine-vX.Y.Z, Gitea release, image push
  • 3.2 Release notes template: include Docker pull commands with engine-vX.Y.Z prefixed tags

4. Cleanup

  • 4.1 Remove old release.sh (replaced by the two new scripts)
  • 4.2 Update Docker image tag format in release scripts from vX.Y.Z-nvidia to engine-vX.Y.Z-nvidia (and same for rocm/latest)

5. Testing

  • 5.1 Test client version check passes when engine version >= MinEngineVersion
  • 5.2 Test client version check fails with correct error message when engine version < MinEngineVersion
  • 5.3 Test client skips version check when MinEngineVersion is empty or dev
  • 5.4 Test client skips version check when engine is unreachable
  • 5.5 Dry-run release-client.sh --dry-run --gitea and verify correct tag format and build
  • 5.6 Dry-run release-engine.sh --dry-run --gitea and verify correct tag format and image names