Skip to content

Repository files navigation


Scrute

Visual search through git history. Type a word, see every commit where it appears, in messages, in code, and in file paths.

Windows Rust MIT 2.1 MB

Scrute window

A desktop application. One executable, nothing to install and nothing left behind: the local server and the interface are embedded in the binary, and the WebView2 profile lives under %LOCALAPPDATA%\Scrute rather than beside the file.

Install

Grab Scrute.exe from the releases and run it. WebView2 ships with Windows 11 and recent Windows 10, so there is no runtime to install.

Building from source:

scrute build           release build
scrute dist            build, verify, and place the binary in dist\
scrute                 list every task

Or directly:

cargo build --release --target x86_64-pc-windows-msvc

The MSVC target matters: build.rs locates the Windows SDK resource compiler to embed the icon and version metadata. Without it the build still succeeds, the executable just carries the default icon, which is why tools/verify_release.ps1 gates every build in CI.

Search syntax

Syntax Example Effect
word1 word2 login bug AND, both must match
word1 OR word2 login OR docs OR, either matches
NOT word login NOT bug Exclusion
-word login -bug Exclusion, shorter form
"exact phrase" "bug fixed" Literal phrase

Every dimension is case insensitive.

What it searches

Three dimensions, merged into one timeline:

  • Commit messages, through git log --grep
  • Code changes, through git log -G, so a word added or removed in a diff is found even when no message mentions it
  • File paths, through git log --name-only

Each commit in the timeline is a dot. Matching dots light up, coloured by which dimension matched. Clicking a result expands the full message, the file list, and the diff hunks that actually contain the term.

Architecture

src/main.rs      window, local server, routes
src/git.rs       git invocation with a timeout
src/search.rs    query parsing, boolean combination, the three dimensions
templates/       index.html, the whole interface
icons/           master .ico plus the derived window and interface icons
tools/           icon generation, release verification

The window comes from winit and wry, the layer Tauri is built on, used without the framework. That keeps a single executable and no JavaScript toolchain. Rendering goes through WebView2.

The server binds loopback only. The API takes a repository path as a parameter, so binding every interface would let anyone on the network read git history from this machine.

Development

scrute check          fmt, clippy and tests, the same gates as CI
scrute dev            debug build, launched with the console attached
scrute release 0.5.0  bump the version, run every gate, build, tag

See CONTRIBUTING.md.

License

MIT. See LICENSE.

About

Visual search through git history. Type a word, see every commit where it appears, in messages, in code, and in file paths.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages