Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 00:13
· 129 commits to main since this release
8ab6487

Blitz 0.3.0 adds workspace search. You can find anything in a workspace by its words or its meaning: code, docs, the text of PDFs and notebooks, past chats, and notes. The release also adds a table viewer for CSV files of any size, and Find in file for the editor. It comes with a sweep through error handling across the app.

Workspace search

Each workspace gets its own search index. It's built in the background and kept current without you doing anything: it updates when the workspace opens, after each turn, and a minute after the last scan while you're idle.

  • What it searches:

    • your files, as git sees them
    • the text inside PDFs and Jupyter notebooks
    • the workspace's chats
    • your notes and plans

    Pick the sources for each search. By default it searches files and PDFs.

  • How it finds things: type words or "a quoted phrase".

    • Results are ranked by relevance.
    • Word forms count, so indexing finds indexed.
    • Parts of code identifiers and paths match too, such as turnsMu or cart/total.
    • Each result shows its file, its line and the passage, with your words marked.
  • Search by meaning (optional): set search.embedding_model to an embedding model from your provider (Gemini, OpenAI or Ollama). Search then also finds passages that mean what you asked, even when they don't share its words, and blends both kinds of results.

  • Summaries and tags (optional): turn on search.enrich and a model writes a short summary and tags for each file. For a CSV it also notes what each column holds. Search then matches on these too, and results show them.

    • It runs in the background and pauses while you're working.
    • It's capped by a daily limit, 200 files by default.
    • Secrets are removed before anything is sent.
  • Private by default: the index lives in ~/.blitz/workspaces/, never in your repository.

    • Files your permission rules block are never indexed or shown.
    • Dotfiles are only shown when show hidden is on. Files git ignores are left out entirely unless you also turn on search.include_ignored, and then show only with show hidden.
    • File contents leave your machine only if you turn on search by meaning or summaries.

Where to use it:

Where How
Desktop app Type in the search box (⌘K): matching passages appear under the matching file names. Search the workspace (⇧⌘F) is the full search, with source chips, a keyword/meaning switch, and the index's status with Scan again. Opening a result in a Markdown file shows its rendered preview, scrolled to the passage, with your words highlighted.
Settings Settings › Workspaces › Search turns search on or off and sets the default sources, search by meaning, summaries and their daily limit, and git-ignored files. Changes apply right away.
CLI blitz search <terms> (options: --in files,documents,chats,notes, --mode keyword|semantic|hybrid, --hidden, --json, --status, --reindex). In the terminal app: /search [files|documents|chats|notes|all] <terms>, /search status and /search reindex.
Agents A new read-only search_workspace tool, allowed in plan mode, so agents find the right files by meaning instead of guessing with grep.

Table viewer for CSV and TSV

CSV and TSV files now open as a table, whatever their size. A 175 MB file with 900,000 rows opens in under two seconds.

  • Search all columns at once, or filter by column:
    • comparisons: >25, <=0, !=10
    • ranges: 10..20
    • exact text: =north
    • empty cells: empty, !empty
    • otherwise, cells containing the text
  • Sort by clicking a column header: ascending, then descending, then off.
  • Column types: each column shows whether it holds numbers, dates or text, its range, and how many cells are empty.
  • Column meanings: with summaries on, each column also shows what it holds.
  • Encodings: commas, semicolons, tabs and pipes are detected, and older Latin-1 (Windows) files are read correctly.
  • Search results: a hit in a CSV opens at its row.

Find in file

Press ⌘F (Ctrl+F) to find in the open file. You can also click the magnifier in the file's toolbar, or use Find in file from ⌘K.

  • In a Markdown preview: a find bar shows "3 of 12". Enter and Shift+Enter step through the highlighted matches, and Escape closes the bar.
  • In the source: find and replace now opens at the top. It matches the app's look and language, and offers match case, regex and whole-word options.

More reliable

We reviewed how the whole app handles errors, open files and background processes, and fixed about 50 problems. Each of these could have led to a silently lost error, a leaked file handle, or a crash on an unexpected empty value. Among the fixes:

  • Revoking approvals: when you revoke saved approvals, you're told about any that couldn't be removed.
  • MCP servers: background MCP servers are always shut down cleanly.
  • Language servers: a slow language server no longer holds up the others.
  • Permission rules: a rule Blitz can't read is now shown, with the reason, next to your other permission rules.
  • PDF text: extracting text from a PDF now runs in a separate helper process, so a malformed PDF can't take Blitz down with it.

Good to know when upgrading

  • .agents/AGENTS.md is the new name for .agents/AGENT.md, following the common AGENTS.md convention. Running /setup (or the desktop wizard) on a project that uses the old name moves its content to .agents/AGENTS.md and updates the import lines in AGENTS.md, CLAUDE.md, GEMINI.md and BLITZ.md. It tells you if the old file is left for you to delete.

  • The first index takes a moment. Search builds the index in the background the first time a workspace opens. Until it's done, search says it's still indexing. blitz search waits for it.

  • "Workspace" and "project" now have definitions.

    • A workspace is a folder you opened in Blitz, plus everything Blitz keeps for it: chats, notes, the search index, and your private settings.
    • A project is what's in the repository, including its committed settings.

    The app and docs now use the two words consistently. See Words in the guide.

Docs: Workspace search · Desktop app · CLI

Verifying

checksums.txt lists every archive; its signature is checksums.txt.sigstore.json. Each desktop package has its own .sigstore.json. Verify against this repository's release workflow:

cosign verify-blob --bundle checksums.txt.sigstore.json \
  --certificate-identity-regexp '^https://github.com/retail-cortex/blitz/\.github/workflows/release\.yml@refs/tags/v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com checksums.txt
sha256sum --ignore-missing -c checksums.txt

Desktop app

Blitz_*_macos_universal.dmg and blitz-desktop_*.deb (Ubuntu 24.04, Debian 13 and later).

This release's macOS app is signed ad hoc and not notarized. The first time, open it from Finder's context menu (Open), or clear the quarantine flag:

xattr -d com.apple.quarantine /Applications/Blitz.app

macOS

The macOS CLI binaries aren't notarized by Apple. If you download one in a browser, Gatekeeper refuses to run it until you clear the quarantine flag:

xattr -d com.apple.quarantine blitz blitzd

You can also open it once through Finder's context menu (Open). A copy downloaded with curl isn't quarantined.

What's Changed

  • Workspace search: every file, PDF, chat and note, found by words or meaning by @rmcguinness in #4

Full Changelog: v0.2.1...v0.3.0