Fixes
- Packaging: publish the CLI with a resolved core package dependency so registry installs work outside the workspace.
0.15.0 - 2026-05-15
Features
- CLI providers: add GitHub Copilot CLI as
--cli copilot/--model cli/copilot, including config, auto fallback, daemon model discovery, and Chrome extension settings (#211, thanks @izecell). - CLI extraction: fall back to OpenAI vision OCR for image-only PDFs when markitdown returns only page headers, so
--extractand forced preprocessing can recover scanned PDF text (#204, thanks @mvance).
Fixes
- Test/release gates: ignore local Clawpatch metadata during format checks, align Node typings with the Node 24 engine floor, and cover media path/cache wiring.
- Test gates: wire
VITEST_MAX_THREADSthrough Vitest 4maxWorkersand add package bin/script regression coverage. - Dependencies: update workspace packages and replace deprecated
@mariozechner/pi-aiwith@earendil-works/pi-ai. - CLI performance: add opt-in startup/first-output tracing and avoid network LiteLLM catalog refreshes on fixed-model summary streaming and finish-line cost estimation.
- Chrome extension slides: harden slide payload loading against malformed cache/stream data and clear stale thumbnails before retrying updated slide images.
- Release gate: run
pnpm typecheckduringpnpm checkso CI/release checks catch TypeScript errors. - Typecheck: include
packages/corein the root typecheck script so core library errors fail the gate. - Tests: ignore invalid
VITEST_MAX_THREADSoverrides so Vitest never receivesmaxThreadsbelowminThreads. - CLI version: stop baking a stale git SHA into the committed
dist/cli.jswrapper so checkout builds report the current commit. - Chrome extension: keep local-video slide E2E shutdown from hanging, reject malformed media durations and non-video YouTube container URLs, and sanitize invalid advanced settings before they reach daemon requests.
- Parsing: reject non-decimal timestamp hrefs, malformed transcript clocks, malformed podcast durations, and non-decimal slide/retry numeric settings.
- Timestamps: reject malformed transcript, key-moment, slide, summary, and side-panel chat timestamps before they become prompt context or seek links.
- Slides: wait for background slide extraction to finish before URL flows exit, avoiding late cache writes during daemon shutdown.
- Daemon slides: ignore request-provided slide output directories and keep extracted slide artifacts under
~/.summarize/slides(#220, thanks @Hinotoi-agent). - Chrome extension automation: require confirmation before side-panel agent automation tools run, and report cancelled calls without applying navigation side effects (#219, thanks @Hinotoi-agent).
- Chrome extension automation: guard the artifacts bridge so browser JS can only read or write artifacts while extension-owned automation has armed the tab (#222, thanks @Hinotoi-agent).
- Chrome extension hover: ignore synthetic hover events and block hover summaries for localhost, private-network, link-local, and non-HTTP(S) URLs (#218, thanks @Hinotoi-agent).
- Refresh-free: keep
~/.summarize/config.jsonrewrites and their config directory owner-only when updating free model candidates (#217, thanks @Hinotoi-agent). - CLI progress: keep Ctrl+C responsive while spinners are active and forward interrupts to active CLI model backends so child processes are not left running (#216).
- Codex CLI: isolate normal summary runs with
--ephemeral,--ignore-user-config,--ignore-rules, a temporary cwd, and a sanitized temporaryCODEX_HOMEso local Codex context cannot bleed into summaries with little or no extracted content (#215, thanks @anntnzrb). - Daemon: write
~/.summarize/daemon.jsonwith owner-only permissions and tighten existing config paths before rewriting daemon tokens or captured provider env values (#214, thanks @Hinotoi-agent). - GitHub Models: ignore OpenAI-only request options such as
openai.thinking/--thinkingforgithub-copilot/...calls so Copilot summaries do not fail with GitHub Models400errors. - Google document summaries: send
temperatureandmaxOutputTokensinside GeminigenerationConfigfor document requests, and include API error details when Google rejects the payload (#209, thanks @vincent-peng).
npm proof
- CLI npm: https://www.npmjs.com/package/@steipete/summarize/v/0.15.1
- CLI tarball: https://registry.npmjs.org/@steipete/summarize/-/summarize-0.15.1.tgz
- CLI integrity: sha512-LMzEUN9Wbw1zRm/CRNHxTZUcYq7JnCcLduk9LXK0dynY2BakLEUaKJ90BMMAzOi4+YpaNftZsDuvzzfezxMkXw==
- Core npm: https://www.npmjs.com/package/@steipete/summarize-core/v/0.15.1
- Core tarball: https://registry.npmjs.org/@steipete/summarize-core/-/summarize-core-0.15.1.tgz
- Core integrity: sha512-UCATFi1STRyElyGYwg4EmAk55r530MAtIKzhjla616MiH0D1zBgP1TSWYrNRnZrk9fvKo0JPFp1FtmxVzfdNiQ==
- npm latest: @steipete/summarize 0.15.1, @steipete/summarize-core 0.15.1
- Install smoke: pnpm dlx @steipete/summarize@0.15.1 --version => 0.15.1
- Deprecated CLI 0.15.0: broken workspace dependency; use 0.15.1 or newer.
Proof
- pnpm -s check
- pnpm -s build
- bash scripts/release.sh verify
- pnpm -s build:bun:test
- bash scripts/release.sh chrome
- bash scripts/release.sh firefox
Asset checksums
c043f33b65f9bab30255ed6b59df8eb710c1d1cac7cae0f5b01b236dccf0bd19 dist-bun/summarize-macos-arm64-v0.15.1.tar.gz
1cd339ce73b5c4845182713795a332d459351a02fbb5ba6ff5d54a5b2eb6f34f dist-bun/summarize-macos-x64-v0.15.1.tar.gz
2e042c4d505d48094b5dd15c3e1c21a3de2287e9adb3483f682afd7bfbe566af dist-chrome/summarize-chrome-extension-v0.15.1.zip
6924c80a612ca9a2d99b971813f5c82da7fd27b41f51bbcf7501cecaeab08e05 dist-firefox/summarize-firefox-extension-v0.15.1.zip