github dualeai/seek v0.16.1

latest release: v0.16.2
5 hours ago

v0.16.1 makes index failures clear, fixes cancellation handling, strengthens
cache publication, and updates Go, Zoekt, other Go modules, and pinned workflow
actions.

Search and indexing

  • Searches with matches exit 0. A valid search with no matches exits 1 without
    an error. Usage, indexing, and search failures exit 2.
  • Invalid queries and paths, missing Git or Universal Ctags, and index limits
    now have direct messages. Tool and limit errors include a remedy.
    --verbose adds technical details.
  • Caller cancellation now propagates through concurrent corpus searches.
    Explicit corpus errors stop the command. Independent worker failures in
    discovered Git repositories warn and skip that repository. Worker panics
    terminate Seek.
  • A failed initial build stops the search. A recoverable refresh failure can
    keep a published index searchable with a warning. Index-limit failures never
    search stale shards.
  • Seek checks HEAD and dirty-file metadata before it records an index as
    current. New repositories without HEAD can index untracked files.
  • Single-dash Zoekt queries remain query text. Unknown long options fail and can
    suggest a valid option. Near-subcommand words such as gcc remain queries.

Zoekt and cache upgrade

  • Zoekt moves from a0f5789d25cb to df97bab6f7bb. It now preserves field
    filters inside parentheses, detects binary content that starts with NUL, and
    continues content indexing after a per-file Ctags timeout. A sym: query can
    omit that timed-out file.
  • Zoekt now uses its go-git path by default after upstream git cat-file memory
    problems.
  • v0.16.0 caches are not reused. Their identity changes from
    zoekt-a0f5789d25cb to zoekt-index-v16-feature-v12. The first search for a
    corpus builds a new cache; cache collection later removes the old one.
    Future Zoekt-only updates rotate this token only when Zoekt changes its index
    format or feature version.

Index limits

Folder indexes allow 1,000,000 candidate files and 10 GiB of indexed bytes.
Git applies limits of 10,000,000 candidate entries and 10 GiB separately to its
committed and working-tree indexes. A scoped Git search can use a bounded
fallback when the full repository exceeds a limit; an unscoped search reports
the error. file: filters apply after indexing and do not reduce these limits.

Requirements and install

Source builds require Go 1.27.0. Git is required for Git-backed searches, and
Universal Ctags is required to build or update an index. The tagged README
incorrectly says Go 1.25+ and links to the prior Zoekt query documentation; use
the matching query documentation.

Install Universal Ctags first. Then install this release:

curl -sSfL \
  https://raw.githubusercontent.com/dualeai/seek/v0.16.1/install.sh |
  sh -s -- v0.16.1

Known issue

After a cached repository switches to an unborn branch with
git switch --orphan and has untracked files, Seek can retain results from the
prior committed branch. Commit the new branch, or run seek gc --all before
you rely on the results. The latter evicts all unlocked Seek corpora.

Focused tests and direct cache-upgrade and orphan-branch checks passed on the
tagged commit.

Seek changelog: v0.16.0...v0.16.1

Zoekt changes: a0f5789d25cb...df97bab6f7bb

Don't miss a new seek release

NewReleases is sending notifications on new releases.