Repository navigation
Releases: yjid/kensaku
Release list
Kensaku v1.0.12
Search inside documents, code, and even screenshots — instantly and locally.
What's New in v1.0.12
Proximity Search (near[x])
- Match terms that appear within a specific distance:
mouse near[5] buttonfinds documents where the terms sit within 5 words of each other. - Supports chaining (
a near[3] b near[2] c) and the filter syntaxnear:5. Distances are safely clamped to 100.
Portable Mode & Data Directory Override (#68)
- Windows Portable Release (
.zip): A self-contained portable distribution (kensaku-portable-1.0.12-x64.zip) is now available alongside installers. Keeps all config, index, metadata, and OCR state in a localdata\directory next to the executable. KENSAKU_DATA_DIR: Environment variable override supported across platforms for headless, containerized, Nix, and isolated setups.
Multilingual & Multi-Format Search Support
- Added comprehensive documentation (
docs/LANGUAGES.md) covering CJK (Chinese, Japanese, Korean) unigram + bigram segmentation, OCR multi-script routing (Latin, Hanzi, Hangul, Arabic, Cyrillic), and 50+ programming/data language extensions.
Fixes & Reliability
- macOS Sequoia Permissions Loop (#73): Bundled
Info.plistwith explicit TCC privacy usage descriptions (NSDocumentsFolderUsageDescription, etc.) and hardened thumbnail preview fallback to prevent permission prompts when summoning Kensaku viaAlt+Space. - Theme First-Paint Flicker (#72): Pre-paint theme resolution in
index.htmleliminates dark-mode flashes on light OS themes. - Office XML Entities: Decoded XML entity references (
&,<,>,",') across DOCX, PPTX, XLSX, EPUB, and ODT documents. - Excel Cell Text: Fixed cell text accumulation across split
<t>tags in shared strings. - PDF Extraction Budget: Guaranteed character boundary slicing to prevent UTF-8 panic on single-page PDFs.
- Ignore Engine Rule Deduplication: Properly merges rules when
.gitignoreand.kensakuignorecoexist in the same folder.
Windows on ARM (added post-release)
- Native ARM64 builds are now part of this release:
Kensaku_1.0.12_arm64_en-US.msi,kensaku_1.0.12_arm64-setup.exe,kensaku-portable-1.0.12-arm64.zipandkensaku-cli-windows-aarch64.exe. Built from the same source as the x64 assets, staged against Microsoft's SHA-256-pinnedonnxruntime-win-arm64-1.31.0.zip, so PP-OCR loads natively on Snapdragon laptops.SHA256SUMScovers every asset including these.
Full Changelog: v1.0.11...v1.0.12
Kensaku v1.0.11
Kensaku 1.0.11
Search inside documents, code, and even screenshots — instantly and locally.
New: Indra OCR engine
- A third OCR engine, ported natively to Rust on the same ONNX Runtime as
PP-OCR: orientation and deskew, script routing to four CTC recognizers,
RTL reordering, and Hangul composition. - Text matches the Python reference at 97–100% on the sample pages.
- The ~27 MB model pack (v1.1.0, SHA-256-pinned) downloads only if you pick
Indra; it falls back to PP-OCR, then Tesseract. Doctor, Settings, and the
setup wizard report engine availability. - PP-OCR remains the default engine. PP-OCR and Indra now share one ONNX
Runtime per process.
New: launcher-only setup wizard
- Folder, OCR-quality, and shortcut steps. You cannot proceed past the OCR
step until the selected engine is ready; pack downloads show progress and a
verifying phase. - Closing the window just hides Kensaku — it keeps running in your tray.
Improved
- Existing model artifacts are checksum-verified at startup instead of
trusted by filename; corrupt files are re-downloaded automatically. - The initial scan shows "Verifying files" instead of a stuck 0%.
Fixed
- No more scans of your home directory before setup finishes. A fresh or
corrupt config once made the mid-setup OCR-pack download trigger a crawl of
the default roots (your entire home folder, includingAppData, MTP phone
mounts, and network locations). The indexer now refuses to scan anything
until you have chosen your folders, for the GUI and the daemon alike. - Watcher reliability: fixed a regression that made four watcher tests
fail on Windows since 1.0.10, exposing that the live-update path under
AppData-pruned roots was silently treated as excluded. - Agent CLI builds again: the CLI stopped compiling after the vendored
OCR crate landed (a Cargo patch-table scoping issue), which is what blocked
the earlier 1.0.11 attempt. The daemonrescancommand now also honors the
folders you picked in setup when the daemon was already running.
Credits
- Models: PaddleOCR PP-OCRv6 tiny by PaddlePaddle (Apache-2.0).
- Indra weights by Datalab (indra-ocr),
under a modified OpenRAIL-M license; SHA-256-pinned pack. - ONNX wrapper:
paddleocr_rs_onnx(MIT).
What's Changed
New Contributors
Full Changelog: v1.0.10...v1.0.11
Kensaku 1.0.10
Kensaku 1.0.10. OCR that actually works, better defaults, and Windows fixes.
OCR, fixed end to end (#60)
- Searching for a word inside a screenshot finds it. PP-OCR glued words together ("Open settings" became "Opensettings"), so word search never matched.
- Scanned PDFs are OCR'd. JPEG, Flate and black-and-white scans were skipped silently before.
- PP-OCR is now the default engine and works on Windows, macOS (Apple silicon) and Linux. The installers include its runtime. Tesseract is the automatic fallback, for example on Intel Macs.
- Images that couldn't be OCR'd are retried instead of staying empty forever. Downloading the PP-OCR pack or switching engines re-reads images.
- Settings shows the truth. "Verified" means PP-OCR read a test image correctly. If it can't run, Settings says why and which engine is reading instead.
- Your existing index repairs itself. On first launch, images and PDFs are re-read once.
Better defaults (existing settings you changed are kept)
- Videos, music, archives, fonts and design files are findable by name. Their contents are not read.
- Full-text search for big documents: up to 100 MB files and 4 MB of text (was 20 MB / 1 MB).
- Setup pre-selects Documents, Desktop, Downloads and Pictures, and the first run matches your system's light or dark mode.
- Indexing runs at background priority.
~/Library(macOS) andAppData(Windows) are skipped when you index your home folder.
Also
- Windows:
in:"C:\Users\me\My Docs"works. Backslashes were being dropped (#61). - Windows tray: a click shows Open/Quit and a double-click opens search. Before, a click opened and instantly closed the window (#62).
- Setup can be minimized while it indexes (#62).
- "Rebuild index" works in place instead of restarting the app (#57).
- New: content-depth settings and an optional OCR image-size cap (#57). Health and update indicators in the status bar.
Verified on
Tests and clippy pass on Linux. Real PP-OCR models read 104/104 test lines and pass an image plus scanned-PDF test on Linux, macOS and Windows. Installers and the CLI build on all three.
Known limitations
- Builds are not yet code-signed.
- PP-OCR needs Apple silicon on Macs (Intel Macs use Tesseract).
- JPEG 2000, fax and JBIG2 scans aren't decoded yet.
Kensaku 1.0.9
Kensaku 1.0.9 - bugfix release.
Fixed
- macOS: no more repeated folder-access prompts during indexing. Tesseract and pdftoppm now read files through stdin instead of opening them themselves, so macOS stops asking for permission once per file. Linux and Windows are unchanged. (#51, fixes #50)
- macOS: Kensaku no longer indexes its own storage. On macOS the index lives in
~/Library/Application Support/kensaku, which isn't a hidden folder, so a home-folder crawl walked Kensaku's own index, database and thumbnails. Both the crawler and the live file watcher now skip it on every platform. Leftover entries are cleaned up automatically on the next crawl. (#53, fixes #52) - macOS: Eco mode now actually slows down under load. It reads the system load average like Linux does, instead of never throttling. (#53)
- Windows: the accurate OCR engine works out of the box. Windows can include an older, incompatible
onnxruntime.dllin System32, which made accurate OCR silently fall back to Tesseract. The installers now ship ONNX Runtime 1.31.0 next tokensaku.exe, and Kensaku loads that copy first. (#55, #56, fixes #54. Thanks @shavyamChitranshi1)
Verified on
Tests and clippy pass on Linux, macOS and Windows. Bundles and the CLI build on all three.
Known limitations (unchanged)
- Builds are not yet code-signed.
- Auto-updater not wired up (use Settings > About > Check for updates).
- The standalone CLI daemon on Windows still uses Tesseract for OCR (ONNX Runtime is bundled with the desktop app only).
- Thumbnails: image files only.
- Visual search: beta, not in results yet.
Kensaku 1.0.8
Kensaku 1.0.8 - bugfix release.
Fixed
- Console windows no longer flash on the desktop during index rebuild on Windows. Tesseract (OCR), pdftoppm (PDF thumbnails), and external extractors are console applications; spawning them without CREATE_NO_WINDOW flashed a console window per file. Added CREATE_NO_WINDOW to all child-process spawn sites. (Reported by a user on Win 11.)
- "Check for updates" button added to Settings ? About (was hardcoded "1.0.0", now shows real version and opens the latest release page).
Also
- README restored to polished version with hero and dashboard screenshots.
- Added roadmap section with discussion links for feature requests.
- Marketing launch kit and growth plan prepared.
Known limitations (unchanged)
- Builds are not yet code-signed.
- Auto-updater not wired up (manual check button added).
- OCR: Tesseract (default) + optional PP-OCRv6 pack.
- Thumbnails: image files only.
- Visual search: beta, not in results yet.
Kensaku 1.0.7
A persistence bugfix release, one day after 1.0.6.
Fixed
- The chosen theme (light / dark) now survives closing and reopening the app. The launcher rebuilds its webview on every summon, and the frontend was restoring the theme from localStorage - which does not survive that - instead of the durable config file. The persisted config is now the single source of truth, theme picks update the shared config copy so a later Settings save can no longer write an old theme back, and Settings shows the correct active swatch after a remount.
Also
- README refreshed: a differentiators table against filename-only search tools, measured Windows numbers (9 MB installer, about 20 MB of memory idle in the tray), and a contributing section with concrete first steps.
Kensaku 1.0.6
Kensaku 1.0.6 - the Windows polish release: true launcher behavior, a calmer Apple-style UI, and a home screen that shows what you actually opened.
Home & recents
- Recents now rank by what you actually opened through Kensaku (persisted opens, falling back to modified time), with "Opened 5m ago" labels and a deterministic order that no longer reshuffles across refetches
- Home never renders dead tiles under a restored query; Tab visibly walks the recents and scrolls to follow past the fold
Search & results
- Results cards match the home tiles: 16:10, softened selection ring, smaller and denser grid
- Borderless Spotlight-style search field, tighter spacing, Apple-style radius scale with continuous (squircle) corners
- Removed the flickering search progress bar; the result count stays visible while searching
Windows platform
- True launcher behavior: starts hidden to tray, Alt+Space to summon, no ghost-frame flash, webview cleanup via the process API
- Start-at-sign-in runs in the background with no console window
- Real memory (RSS) reporting in Stats
- App icon embedded in the installer and uninstaller; NSIS uninstall is a full cleanup
OCR & setup
- Auto-switches to the PP-OCRv6 pack when Tesseract is missing; setup mirrors the real engine state
- Setup wizard survives losing focus; folder picker with validated manual entry
Kensaku v1.0.5
What's Changed
- Fix: theme choice never saves in 1.0.4 by @ren-at-gochi-s-workspace[bot] in #31
- Fix red CI on master (clippy: items after a test module) by @ren-at-gochi-s-workspace[bot] in #32
New Contributors
- @ren-at-gochi-s-workspace[bot] made their first contribution in #31
Full Changelog: v1.0.4...v1.0.5
Kensaku v1.0.3
Changelog
All notable changes to Kensaku. Format: Keep a Changelog;
versioning: SemVer.
[1.0.3] — 2026-10-27
Changed
- Scope: Ask-a-file, the local model query refinement,
kensaku-cli ask, and video previews are removed. - Quick shortcut: Settings label, Wayland note, and
kensaku --togglefor desktop keys. - Keyboard: Cmd/Ctrl+C copies the selected path, Cmd/Ctrl+I opens details.
- Time travel: "last Tuesday" and "N days ago" become time filters.
- README: speed-first hero, measured performance section, new hero image.
[1.0.2] — 2026-10-27
Added
- Grid or list results, chosen in the results bar and in Settings.
- Sort dropdown: Best match, Newest, Oldest, Largest, Name.
- Previews for PDFs (first page) and images, shown on cards and in Quick Look (Space).
- Recent files shown as a list on the home screen.
- Save-search and layout controls on the same row as the category filters.
- Tesseract OCR is found inside the app first, before PATH and system installs.
Changed
- Thumbnails and previews use one 240px size.
- Filters, sort, and layout share one pill style.
- Setup folder step: clearer selection, neutral checkboxes, centered layout.
- Dark-mode borders use the theme color.
- Settings labels: "Meaning search" and "Local model" replace the AI wording.
Fixed
- Release workflow stages only installable files and checks that artifacts arrived.
[1.0.1] — 2026-10-27
Changed
- New UI: neutral light and dark themes with no accent color, the Mac system
font, and Apple-style motion curves. - Header is search and Settings only.
- Results are a grid of square cards with infinite scroll. Only what is on
screen is rendered. - Hover shows a slim info bar with size, image dimensions, and age.
- Sort is an icon row. Right-click a result for Open, Show in folder, Copy
path, and Details. - Onboarding starts with no folders selected.
Added
- Show thumbnails setting (Settings → Search), on by default.
- Thumbnails are sent to the UI as data URLs, so they render on every platform.
Fixed
- Infinite scroll no longer repeats the same page request.
- Thumbnails are generated for every visible image, not only the first 30.
[1.0.0] — 2026-10-27
Kensaku 1.0 is the first release with the full agent surface, optional local
LLM, the search-quality pass, and a cleaned public documentation set. The
desktop app, daemon, CLI, and MCP/HTTP transports are read-only by default and
local-first.
Added
- Agent surface v2:
find_symbol(tree-sitter for Rust, Python, JavaScript,
TypeScript),.gitignore/.cursorignoreparity at index time
(include_ignoredopts out), keyset cursors past the 10k exhaustive cap,
andagent_scoped_rootsread-only scoping with resolved-path containment. - Loopback HTTP/SSE transport:
kensaku-cli serveexposes the MCP tools on
127.0.0.1with a bearer token, JSON or SSE responses, and read-only
/healthand/searchendpoints.reindexis never available there. - One-click agent connect for Claude Desktop, Claude Code, and Cursor via
Settings → Agents (atomic merge,.bakbackup), mirrored by
kensaku-cli connect <client> [--write]. - Optional local LLM (Ollama / LM Studio / OpenAI-compatible; off by default):
a query compiler that validates filter keys and values before showing chips,
and/askwith path+line citations and no-retrieval-no-answer semantics.
Non-loopback endpoints require explicit consent and show a cloud indicator in
the app; the default remains fully local. facet_benchand aKENSAKU_SEARCH_BENCH=1mode formem_probe, plus the
golden-query integration set in CI.
Changed
- Search performance: interned extensions (no per-entry
String), content
schema v3 with indexedextand fastsizefilter pushdown, allocation-light
rayon-folded facets (release p50 3.1 ms at 100k, 17.3 ms at 1M), parallel
metadata materialization, a path index only for trie queries, and parallel
fuzzy scoring. Fullsearch_response_fastp50 is 207 ms at 1M and 24 ms at
100k; the fuzzy filename tier is 3.6–5.2 ms. Content indexes rebuild once to
v3 and preserveindex.legacy-*. - The Tantivy writer stays single-threaded with a 16 MB arena after measuring
the 1M trade-off (2 threads were 1.9× faster but used ~47 MB more peak RSS). - Doctor now checks free disk space alongside its existing per-root
readability, database, index, watcher, extractor, model, OCR, and version
checks. The reset marker/restart path has an automated smoke test. RELEASING.mdnow documents the draft-release workflow, which uploads every
bundle, CLI binary, andSHA256SUMSto a draft GitHub release on tag push.- Project version is
1.0.0in the app, CLI, Tauri config, and docs.
Fixed
- The ONNX runtime loads dynamically, so older glibc toolchains link again.
Accurate OCR probes the runtime, contains loader/run panics, reports the
engine unavailable when the library is missing, and falls back to Tesseract
instead of losing the file. - Agent root scoping resolves
..,.and symlinks before comparison;
out-of-scope reads are rejected. - One-click connect uses the platform Claude config directory, detects
project-scoped Claude Code entries, and writes atomically with full-name
.bakbackups. - The query compiler rejects invalid filter values instead of silently
downgrading them to text terms. - PP-OCRv6 is compiled into normal builds; Setup/Settings present Tesseract and
PP-OCRv6 as an either/or choice, and the unsupported native-OCR option is
disabled rather than faked. - The fake visual/native paths from the automated pass were removed. Visual
search remains a Settings → Beta model-download experiment and is not wired
into search.
Release notes
- Bundles and the CLI are unsigned. See
INSTALL.mdfor how to verify a
download and what the OS warnings mean. Signing/notarization and the
auto-updater are follow-ups after 1.0. - Linux:
.deb,.rpm,.AppImage; macOS: universal.dmg; Windows:.msi
and NSIS.exe; pluskensaku-clifor each platform andSHA256SUMS.
[0.3.3] — 2026-10-26
Fixed
- Images and PDFs were not indexed for existing installs. Early UI configs
stored exclusions with a leading dot (.jpg,.pdf), which the v1 migration
did not normalize, so those files were skipped forever. A v2 migration strips
dotted document/image extensions and bumps the config version. Restart after
upgrading; the startup crawl picks the files up. - Thumbnails were blank. The Tauri asset scope used
$APPCONFIG, which is
<config>/<identifier>, while thumbs live at<config>/kensaku/thumbs. The
scope now starts with$CONFIG/kensaku/thumbs/**. - Search took 5–9 s. Snippets called the full extractor (PDF/OCR) inside the
query. They now read plain text directly or a cached extraction only; a second
batched request fills them after the results paint. Measured: 3.86 s → 0.14 s. - The metadata DB was 310 MB for 382 rows. Startup now vacuums when free
pages exceed 20%, caps the WAL at 64 MB, and checkpoints after crawls
(310 MB → 604 KB). - Image previews no longer run OCR; previews are debounced and sequenced.
content_docsreports the real Tantivy document count.
Changed
- Release pipeline builds bundles and CLI binaries as workflow artifacts;
publishing is done withgh(seedocs/RELEASING.md). - Packaging:
benchis now a cargo example andkensaku-cliis a separate
crate, so Tauri bundles exactly one binary. This fixes the macOS universal
build failing while trying to copy the extra binaries.
[0.3.1] — 2026-10-26
Fixed
- OCR could not be turned on. The Settings switch was a disabled placeholder
andocr_enabledwas never read by the backend. The switch now persists to
config, extraction is gated on it, and changing it re-scans only images. - OCR silently produced nothing when tesseract had no language data. Settings
now reports engine/language status, can downloadeng.traineddata(~4 MB) into
Kensaku's own directory, and shows platform install commands when the engine is
missing. Doctor gained an OCR check.
Changed
content_pendingcolumn lets a settings change re-process only the affected
files; pending images with no extractable text have stale documents removed.
[0.3.0] — 2026-10-26
The open-source launch. Seven focused changesets on top of v0.2.0.
Added
- Agent surface.
kensaku-cliwithsearch,state, andmcp; an MCP stdio
server exposingsearch,read_snippet, andindex_stateover the same
read-only index. Token-budgeted snippets, ranked and exhaustive modes, path/ext/
lookback filters. Seedocs/AGENTS.md. - Real static embeddings. Manual safetensors (F32/F16) + BERT WordPiece loader
for potion-base-8M, loaded once via a global registry; automatic re-embed when
the model id changes. Hashing estimator remains the fallback. - Image support. Lazy cached thumbnails (320 px JPEG), dimensions, 64-bit dHash,
perceptual near-duplicate groups merged intofind_duplicates, thumbnail-forward
results and preview. - Query semantics.
re:regex execution, truename:/content:field scoping
in BM25,mode:exhaustive, and a semantic candidate prefilter. - Robustness. Single-instance lock, atomic config writes with corrupt-file
backup, unavailable-root preservation, 8-second extraction timeout on a bounded
pool, directory-rename subtree rewrite, Windows cloud-placeholder guard. - Launch plumbing. Start at login, rotating local crash log (256 KiB) with a
Doctor check, unsigned multi-OS draft release workflow, CLI artifacts. - Tests and CI. 77 Rust tests (parser, config migration, extraction, fuzzy
relevance, ranking, MCP/CLI, images, crash log),clippy -D warnings, web and
rust workflows, benchmark methodology.
Changed
- Ranking n...
Kensaku v1.0.2
What's Changed
- UI polish: thumbnail cards, shared controls, one type and radius scale by @yjid in #23
- Release 1.0.2 by @yjid in #25
Full Changelog: v1.0.1...v1.0.2