github steipete/summarize v0.15.1

6 hours ago

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 --extract and 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_THREADS through Vitest 4 maxWorkers and add package bin/script regression coverage.
  • Dependencies: update workspace packages and replace deprecated @mariozechner/pi-ai with @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 typecheck during pnpm check so CI/release checks catch TypeScript errors.
  • Typecheck: include packages/core in the root typecheck script so core library errors fail the gate.
  • Tests: ignore invalid VITEST_MAX_THREADS overrides so Vitest never receives maxThreads below minThreads.
  • CLI version: stop baking a stale git SHA into the committed dist/cli.js wrapper 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.json rewrites 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 temporary CODEX_HOME so local Codex context cannot bleed into summaries with little or no extracted content (#215, thanks @anntnzrb).
  • Daemon: write ~/.summarize/daemon.json with 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 / --thinking for github-copilot/... calls so Copilot summaries do not fail with GitHub Models 400 errors.
  • Google document summaries: send temperature and maxOutputTokens inside Gemini generationConfig for document requests, and include API error details when Google rejects the payload (#209, thanks @vincent-peng).

npm proof

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

Don't miss a new summarize release

NewReleases is sending notifications on new releases.