Releases: kdr/overcast
Releases · kdr/overcast
Release list
v0.0.11
v0.0.10
VS Code extension: CLI discovery under GUI PATH + empty-window onboar…
v0.0.9
Release v0.0.9 (#106) ## Summary - Bump version to 0.0.9 across all surfaces (`package.json`, `package-lock.json`, `src/version.ts`, `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`) via `npm version 0.0.9 --no-git-tag-version` + `sync-version`. ## Ships since v0.0.8 - Provider restructure: `examples/providers/` → `providers/` + `shipped:` ref scheme; drop the wayback source (#104) ## Release process (RELEASING.md) - [x] Bump + sync on `release-v0.0.9` branch - [ ] Merge this PR - [ ] Tag `main`: `git tag v0.0.9 && git push origin v0.0.9` (triggers `release.yml`: npm OIDC publish + bun binaries on the GitHub Release) - [ ] Verify: `npm view @kdrrr/overcast version` Made with [Cursor](https://cursor.com) Co-authored-by: Cursor <cursoragent@cursor.com>
v0.0.8
Release v0.0.8 (#103)
## Release v0.0.8
Version bump `0.0.7 → 0.0.8` across all synced surfaces (`package.json`,
`package-lock.json`, `src/version.ts`, `.claude-plugin/plugin.json`,
`.claude-plugin/marketplace.json` — `node scripts/sync-version.mjs
--check` passes), plus one small doc-drift fix folded in.
### What ships since v0.0.7
**New verbs**
- `graph` — case knowledge graph ("connect the dots") (#101)
- `situation` — live monitoring page over the case + `/situation` (#98)
- `voice` — speaker verification over `voice-print` indexes (#86)
- `screenshot` — browser screen capture (+ `browser:` source) (#91)
- `reconstruct` — speculative camera reposition / novel-view synthesis
via fal (#93)
- `chronolocate` — sun/shadow chronolocation, pure offline solar math
(#87)
- `archive` — global cross-case media buckets with `archive:` refs (#85)
- `devices` + actionable `exif`/`verify` forensic triage (#84)
**New OSINT sources**
- `dispatch` police CAD / calls-for-service via Socrata (no key) (#100)
- `flights` ADS-B via OpenSky + `yandeximg` reverse image (#90)
- `overpass` OSM features + `firms` NASA active fires (#95)
- `wayback` deleted-web recovery (#87)
- `dork` (Serper) + `shodan` host recon (#83)
- Identity/records sources: `username` / `person` / `phone` / `property`
/ `plate` (#94)
**Enhancements**
- `brief`/`case status` restructured around lines of investigation
(shared mission renderer) (#97)
- `enhance --ops ela` / `--ops panorama` image forensics + stitching
- Chair console voice dictation (Web Speech API mic) (#92)
- MCP consume bridge documented example source (#74); Cloudglue opt-in
memory provider (#72)
- Docs/skills/coverage sync incl. 8 new CSI skills (#96, #102);
dependency bumps (#75–#81)
### Doc-drift fix in this PR
`overcast --help` env listing (`ENV_GROUPS` in `src/cli.ts`) now
includes four knobs already documented in README/docs: `DETECT_PY`,
`OVERCAST_VOICE_MODEL` / `OC_VOICE_DEVICE`, `OVERCAST_GRID_FONT`,
`OVERCAST_TAILSCALE_CMD`. Skills regen is a no-diff; README/docs
verified against `overcast commands --json` (38 verbs, 26 sources, all
32 skills covered).
### After merge (release procedure)
```bash
git checkout main && git pull
git tag v0.0.8 && git push origin v0.0.8 # triggers release.yml → npm publish (OIDC) + binaries
```
Verified locally: `npm run typecheck` clean, `npm test` 1090/1090 pass,
`node scripts/sync-version.mjs --check` clean.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Version metadata sync plus help-text additions; no runtime logic
changes in the diff.
>
> **Overview**
> **Release v0.0.8** — version is bumped from `0.0.7` to `0.0.8`
everywhere it is synced (`package.json`, `package-lock.json`,
`src/version.ts`, `.claude-plugin/plugin.json`,
`.claude-plugin/marketplace.json`).
>
> The only non-version change in the diff extends **`ENV_GROUPS` in
`src/cli.ts`** so top-level help lists env vars that were already
documented elsewhere: `OVERCAST_TAILSCALE_CMD`, `DETECT_PY`,
`OVERCAST_VOICE_MODEL` / `OC_VOICE_DEVICE`, and `OVERCAST_GRID_FONT`.
Feature work since v0.0.7 is described in the PR body but is not part of
this diff.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
bbc8b3c2bbf3cef4c3ab4ce61ee0711512f6993a. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
v0.0.7
Bump to 0.0.7: pi 0.80.3, zod 4, TypeScript 6, tinycloud 0.3.8 (#54) Pulls the latest majors and refreshes the version surface for a new npm publish (`@kdrrr/overcast@0.0.7`). ## Package bumps | Package | From | To | Notes | |---|---|---|---| | `@earendil-works/pi-*` (×4) | `0.80.1` | `0.80.3` | Patch, same minor. Floated the pinned-version invariant forward (CLAUDE.md, `version.ts`, 4 test/e2e assertions). | | `zod` | `^3.24.1` | `^4.4.3` | Major. No fallout — not imported in `src` (effectively a dead dep). | | `typescript` | `^5.7.2` | `^6.0.3` | Major. One fix (below). | | **tinycloud** (CLI prereq) | rec. `0.3.7` | rec. `0.3.8` | `RECOMMENDED_TINYCLOUD` + docs/skills. Kept the **≥0.3.7 feature minimums** (see/extract) and provenance notes. | | version | `0.0.6` | `0.0.7` | Synced to `plugin.json` + `marketplace.json`. | `tsup`/`tsx`/`vite`/`playwright` already float to latest via caret; `@types/node` kept at 22 to match `engines.node >=22`. ## TS 6 fix TypeScript 6 tightened side-effect imports (new `TS2882`), breaking `import "./theme.css"` in the chair web app (its tsconfig sets `types: []`, so no `vite/client`). Added a minimal `web/chair/src/vite-env.d.ts` with `declare module "*.css"`. ## Verification - `typecheck` (src + web/chair under TS 6) ✓ - unit **734/734** ✓ (rebound the doctor test to the `RECOMMENDED_TINYCLOUD` constant so it won't re-break on the next bump) - `build` (tsup + vite web) ✓ - offline e2e **171/171** ✓ — compiled bun binary reports `pi 0.80.3`, `skills.in_sync (31 verbs)` - **live e2e (real data) 567/568** ✓ — real Cloudglue/ElevenLabs/FAL/Apify/Tavily, bun binary at pi 0.80.3 - 1 SKIP: `skill_claude` (opt-in `OC_E2E_CLAUDE=1`, skipped to save credit) - 1 FAIL: `segment.local.nomatch` — pre-existing local GroundingDINO threshold flake (2 boxes on a no-match prompt); the **FAL** path of the same test passes with 0. Unrelated to the dep bumps. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Major toolchain bumps (TypeScript 6, zod 4, pi 0.80.3) affect build and the pi harness integration; the segment threshold change alters default local `enhance --ops segment` precision/recall with no code-path changes elsewhere in `src`. > > **Overview** > **Release 0.0.7** refreshes the version surface (`package.json`, plugin manifests, `src/version.ts`) and moves the pinned **pi** stack from `0.80.1` to **`0.80.3`**, with e2e/unit assertions updated to match. > > **Dependency majors:** **`zod` ^3 → ^4** and **`typescript` ^5 → ^6** in `package.json` / lockfile. TS 6 required a minimal **`web/chair/src/vite-env.d.ts`** (`declare module "*.css"`) because the chair tsconfig omits `vite/client` and side-effect CSS imports now error as TS2882. > > **Docs & runtime guidance:** recommended **tinycloud** CLI is **`0.3.8`** (`RECOMMENDED_TINYCLOUD` in `src/verbs/setup.ts`, README, skills, `docs/providers.md`). The doctor unit test now asserts against that constant instead of a hardcoded version string. > > **Local segment behavior:** `enhance_segment.py` raises the default **`SEGMENT_THRESHOLD`** from **0.3 → 0.5** for GroundingDINO-tiny so absent-object prompts are less likely to produce false-positive cutouts (override via `SEGMENT_THRESHOLD`). > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 60f257cef51c9036b10de6bd4e6bd9f5235ad702. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
v0.0.6
Release v0.0.6 (+ docs audit) (#43) Preps the v0.0.6 patch release and lands a full documentation audit of CLAUDE.md, README, skills, reference docs, and per-verb CLI help against the verb registry (`overcast commands --json`) and the actual implementations. ## Docs audit fixes **Registry / CLI help (source of truth for generated skills):** - `see`: removed the phantom `--embed` flag — declared in help but never read by the implementation (`overcast see img.jpg --embed` silently did nothing). Also scrubbed the stale `see --embed` comments and the dead `TargetEntry.seed` field in `src/state/target.ts`. - `provider --preset` help: added missing `basic-clip` to the preset enum. - `wall --source` help + error: added missing `x` and `lens` source types. - `setup` summary: added the implemented-but-unlisted `memory` subcommand. - `monitor --alert` help: clarified it's a file sink (records already stream to stdout). **README:** - Fixed the `skills install` block: there is no interactive menu and no `--global` flag; it copies all shipped skills into `~/.claude/skills` (`--harness claude-code` is the only target). - Split `view` / `crop` / `wall` out of the **Senses** table into an **Inspect** table, matching the registry's grouping. **docs/flows.md:** - Visual-DB provider-class bullet now covers `face-cluster` + `basic-clip`; sources bullet now covers `lens`. - Command matrix gains the missing `image`, `cluster`, `similar` rows. - New flow **18. Copycat sweep (x + lens reverse-image)** covering the `x:` refs (`x:@handle`, `x:video:<q>`, `x:image:<q>`), `lens:` reverse-image search, and the geometry-gated `image match` layer. - Preset list gains `basic-clip`. **docs/providers.md:** preset table gains `basic-clip` → `similar:basic-clip`; visual-db samples list gains `face_cluster.py`. **Skills (fixed in `src/skill-gen.ts` templates, regenerated):** - visual-target-search: `overcast image ./clip.mp4 …` → `overcast image match …` (the bare form errors); noted that `see --detect` requires binding a detection provider first. - copycat-sweep: corrected the score-scale caveat — face similarity is 0–100 (percent), but `image match` reports a RANSAC inlier count + 0–1 inlier ratio (there is no 0–100 image similarity). - media-bug-triage: `frame://<record-id>@<timestamp>` → `@<seconds>` (the parser only accepts numeric seconds). **test/e2e/README.md:** live-case list gains the missing `14_face`, `15_crop`, `17_face_cluster`, `25_case_setup`. Confirmed accurate during the audit (no changes needed): CLAUDE.md/AGENTS.md, all env vars, pinned versions (pi 0.80.1, tinycloud ≥0.3.4 / rec 0.3.7, node ≥22), source-ref grammars, slash-command list, record contract, provider transports, and per-verb flag coverage for the other 24 verbs. ## Release v0.0.6 `npm version 0.0.6 --no-git-tag-version` + `sync-version` — package.json, package-lock.json, `src/version.ts`, and both `.claude-plugin/*.json` bumped in lockstep (`sync-version.mjs --check` passes). ## Verification - `npm run typecheck` clean - `npm test`: 542/542 unit tests pass - `npm run test:e2e` (offline fixtures): 164/164 pass - `skills generate` is byte-stable against the committed skills ## After merge (per RELEASING.md) ```bash git checkout main && git pull git tag v0.0.6 && git push origin v0.0.6 ``` The tag push triggers `release.yml`: npm publish via OIDC trusted publishing + cross-compiled bun binaries attached to the GitHub Release. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Mostly documentation and help text; the only runtime-adjacent change is removing the documented-but-unimplemented `see --embed` flag and stale target `seed` field, which should not affect working flows. > > **Overview** > **Release v0.0.6** — version bumped in lockstep across `package.json`, lockfile, `src/version.ts`, and Claude plugin manifests. > > **Docs & skills audit** so README, `docs/flows.md`, `docs/providers.md`, generated skills, and `verbs.md` match the registry and real behavior: > > - **README**: Corrects `skills install` (no menu/`--global`; copies to `~/.claude/skills`). Splits **Inspect** (`view` / `crop` / `wall`) out of the Senses table. > - **`docs/flows.md`**: Documents visual DB index types (`face-cluster`, `basic-clip`), `lens` sources, command-matrix rows for `image` / `cluster` / `similar`, the **copycat sweep** flow (X + Lens + geometry-gated `image match`), and the `basic-clip` preset. > - **Skills** (templates in `src/skill-gen.ts` + committed outputs): `image match` subcommand, `frame://@<seconds>`, detection-provider note for `see --detect`, and copycat score-scale caveats (face 0–100 vs RANSAC inliers/ratio). > > **CLI help / registry fixes** in verb specs: drops undocumented **`see --embed`** from help and removes the unused `TargetEntry.seed` field; **`setup`** summary lists **`memory`**; **`wall --source`** and **`provider --preset`** include **`x`**, **`lens`**, and **`basic-clip`**; **`monitor --alert`** clarified as file-only (stdout already streams records). > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 405dc379a2724a00c0d2664feba06f1399f91cb9. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
v0.0.5
v0.0.4
v0.0.3
Release v0.0.3 (#16) Patch release **v0.0.3**, cut from current `main` per [RELEASING.md](RELEASING.md). ## What ships since v0.0.2 - #15 — Add `face` verb + collection lifecycle, backed by tinycloud ≥ 0.3.4 ## This PR Version-only bump. `npm version 0.0.3 --no-git-tag-version` + `scripts/sync-version.mjs` propagated `0.0.3` to all four surfaces: - `package.json` / `package-lock.json` - `src/version.ts` (`OVERCAST_VERSION`) - `.claude-plugin/plugin.json` - `.claude-plugin/marketplace.json` (`metadata.version` + `plugins[].version`) `node scripts/sync-version.mjs --check` ✅ all surfaces match. ## After merge Tag `main` to trigger `release.yml` (npm OIDC publish + bun binaries): ``` git checkout main && git pull git tag v0.0.3 && git push origin v0.0.3 ``` <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Mechanical version string updates only; no logic, API, or dependency changes in the diff. > > **Overview** > **Release v0.0.3** — version-only bump from **0.0.2** to **0.0.3** across every published version surface, with no application or dependency changes in this diff. > > `package.json` and `package-lock.json` are updated for npm; **`OVERCAST_VERSION`** in `src/version.ts` drives CLI `--version` and TUI branding; **`.claude-plugin/plugin.json`** and **`.claude-plugin/marketplace.json`** (metadata + plugin entry) stay aligned for the Claude plugin marketplace. Functional work for this release (e.g. the `face` verb from #15) is already on `main`; this PR only cuts the release label. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 27b8808520a71b240a36d89498088bb3dc63d12f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
v0.0.2
Fix broken npm install + release v0.0.2 (#14)
## Problem
`npm install -g @kdrrr/overcast@0.0.1` **fails for everyone**:
```
npm error Error: Cannot find module '.../@kdrrr/overcast/scripts/brand-pi.mjs'
npm error code: 'MODULE_NOT_FOUND'
```
The `postinstall` runs `node scripts/brand-pi.mjs`, but `scripts/` was
never in
the `files` whitelist, so the script isn't in the published tarball →
the
postinstall errors and npm rolls the whole install back. The dev `npm
link`
masked this because the working tree has `scripts/` on disk.
## Fixes
**1. Ship the script** — add `scripts/brand-pi.mjs` to `files` (just
that one
file; the dev-only `bun-sidecar.mjs` / `sync-version.mjs` stay
unpublished).
**2. Make the rebrand actually work, and never block install** — the
postinstall
was *also* silently no-op'ing on normal installs:
- The resolver called
`require.resolve("@earendil-works/pi-coding-agent/package.json")`,
which throws `ERR_PACKAGE_PATH_NOT_EXPORTED` (pi's `exports` map only
exposes
`"."`). It fell back to a single *nested* path, so it found nothing
whenever pi
is **hoisted**. Replaced with a raw-fs walk up the `node_modules` chain
(immune
to `exports`) covering nested + hoisted layouts, plus a resolve-based
fallback
for symlinked (pnpm) stores.
- Wrapped `main()` so a cosmetic branding failure (e.g. read-only global
`node_modules`) warns and exits 0 instead of aborting the install.
## Release
This PR also **cuts `v0.0.2`** (the patch that ships the fix) by folding
the
version bump into the same PR — `npm version 0.0.2
--no-git-tag-version`, which
syncs every surface (`package.json`, `package-lock.json`,
`src/version.ts`, both
`.claude-plugin/*.json`). After merge, push the `v0.0.2` tag to trigger
`release.yml`. `RELEASING.md` documents this fold-into-PR pattern.
## Verification
Packed the tarball and ran a clean `npm install` (scripts **enabled**)
into a
fresh dir:
- install exits `0` (previously aborted)
- `scripts/brand-pi.mjs` is present in the tarball
- the **hoisted** pi gets `piConfig.name="overcast"` (previously stayed
unbranded)
- `npm run typecheck` clean; `npm test` → 150/150 pass; `sync-version
--check` clean
---------
Co-authored-by: KDR <kdr@KDRs-MacBook-Pro.local>