Skip to content

Releases: ltspace/dowse

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 10:47

⚠️ Breaking: index rebuild required / 需要重建索引

The index schema is now v5 (a new tokenized path field powers the path: operator). After upgrading, dowse will refuse to open an older index and ask for a rebuild — open the app and run a rebuild (or dowse index) once. Your files are untouched; only the local index is regenerated.

索引结构升级到 v5(新增分词路径字段,支撑 path: 操作符)。升级后旧索引会提示需要重建——打开应用执行一次重建(或运行 dowse index)即可。不影响你的文件,只是重新生成本地索引。

New Features / 新功能

Advanced query operators / 高级查询操作符

Available everywhere — CLI, overlay, and MCP:

  • path:关键词 — match on the file path / 按文件路径匹配
  • mtime:>2026-01-01, mtime:<=2026-07 — filter by modified date (> >= < <=, YYYY-MM-DD or YYYY-MM) / 按修改日期筛选
  • size:>10mb, size:<500kb — filter by file size (kb/mb/gb, 1024-based) / 按文件大小筛选
  • OR (uppercase) groups alternatives; space-separated terms stay AND / 大写 OR 表示或,空格仍是与
  • -term or NOT term — exclude / 排除词

Plain queries behave exactly as before; malformed operands (e.g. mtime:>abc) return a clear error instead of silently searching the literal text.

Full settings panel / 完整设置面板(Ctrl+,)

The overlay's rules panel grew into a two-tab settings panel:

  • General: rebind the summon hotkey visually (with rollback if the new combination is taken), transparency effect and tier, autostart, interface language (follow system / 中文 / English) — all previously tray-only or config-file-only. / 呼出热键可视化重绑(冲突自动回滚)、透明度、开机自启、界面语言,均不再需要手改 config.json。
  • Index rules: unchanged from 0.9.0. / 索引规则页保持不变。

Unified "Add folder" / 加根路径统一

The overlay's "Add folder" now uses the same incremental path as dowse add: only the new folder is scanned (NTFS MFT fast enumeration included), other roots stay untouched, and the completion report includes the oversize-skip count. / 浮窗"添加文件夹"接入 dowse add 的增量补扫:只扫新目录(含 NTFS MFT 快车道),完成报告含超限跳过计数。


Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 15:15

0.9.0 — 增量加根、索引规则可配置、MCP 搜索增强

Added

  • dowse add <目录> 增量补扫:往已有索引再加一个文件夹,只扫这个新目录,其它根的文档原样保留——不再需要全量重建。走与全量重建同一条 NTFS MFT 快速枚举,规则同样生效,重复补扫幂等。
  • 索引规则可配置:排除目录、追加文本扩展名、单文件体积上限(默认 20MB)不再硬编码。CLI 用 dowse rules show / set,浮窗按 Ctrl+, 打开规则面板可视化编辑;规则持久化在索引目录旁,重建/增量/启动对账三条路径统一生效。重建报告现在会点名有多少文件因体积超限被跳过。
  • MCP search 工具对齐 CLI:新增 sort(relevance / mtime / size)、逗号分隔多扩展名 extoffset 分页并返回 total_hits 总数;非相关性排序不再返回无意义的 BM25 分数。index_status 顺带报告当前索引规则。
  • 浮窗搜索历史:打开过结果的查询词自动记住(本地保存最近 10 条),输入为空时列出——↑↓/Enter 复用,Delete 删单条,可一键清空。
  • 性能埋点:热键呼出到窗口可见、击键到结果渲染两项延迟现在写入日志(%LOCALAPPDATA%\dowse\logs),README 的设计目标从此可实测。

Fixed

  • MFT 快车道补上目录排除:此前 NTFS 管理员快速枚举路径不排除 node_modules/target/.git 等目录(与常规遍历路径不一致),现已对齐——同一目录两条路径的索引结果完全相同。

SHA-256 见 checksums.txt。安装包未签名,SmartScreen 拦截时选"更多信息 → 仍要运行"。

v0.8.3

Choose a tag to compare

@github-actions github-actions released this 14 Jul 15:25

0.8.3 — GUI 安装包自带 dowse 命令

Added

  • 安装包捆绑 CLI(#13):setup.exe 现在把 dowse 命令行一并装好并写入用户 PATH——装完 GUI,新开终端即可用 dowse,claude mcp add dowse -- dowse mcp 对所有用户开箱成立;卸载时自动清理 PATH。
  • MCP 工具注解:search / preview / index_status 带上 titlereadOnlyHint,MCP 客户端可据此自动放行只读调用。
  • 隐私政策(PRIVACY.md)、Claude Desktop 桌面扩展包(dowse-0.8.3.mcpb,可直接双击安装)、官网 https://lter.space/dowse/

Changed

  • 中文名定为「问渠」。
  • 本版暂停发布 MSI:捆绑 CLI 后超出 15MB 安装包预算(16.96MB),且 WiX 不执行 PATH 钩子;NSIS setup.exe(14.31MB,预算内)为唯一安装器,待正式支持 WiX Environment 后恢复。

SHA-256 见 checksums.txt。安装包未签名,SmartScreen 拦截时选"更多信息 → 仍要运行"。

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 13 Jul 01:47

Install the CLI with cargo install dowse (crates.io), or grab the desktop installer below. Installers are unsigned; SmartScreen will prompt on first run (More info → Run anyway). Verify downloads against checksums.txt (SHA-256).

Includes the 0.8.1 and 0.8.2 changes:

Changed

  • Crate README now carries the MCP Registry ownership marker (mcp-name)
    required for listing on the official registry.

Fixed

  • Fixed a docs.rs build failure: the crate pinned a Windows documentation
    target, which docs.rs's Linux build machine cannot cross-compile a C
    dependency for. Documentation now builds with the default Linux target;
    the Windows-only API surface is visible in a local build instead.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 17:05

Install the CLI with cargo install dowse (crates.io), or grab the desktop installer below. Installers are unsigned; SmartScreen will prompt on first run (More info → Run anyway). Verify downloads against checksums.txt (SHA-256).

Added

  • dowse status reports the index location, document count, on-disk size,
    root directory, and last-updated time. dowse search gained --ext
    (comma-separated extension filter) and --sort (relevance / mtime / size);
    non-relevance sort orders hide the otherwise meaningless BM25 score, and an
    empty query now returns a clear error instead of an empty result set.

Changed

  • The dowse-core and dowse-cli crates are merged into a single dowse
    package that is both the search library and the command-line tool. The CLI is
    installable with cargo install dowse; consumers that want only the search
    engine can depend on the crate with default-features = false to leave out
    the CLI and its dependencies.
  • Rustdoc coverage was completed across the crate: the crate root and public
    items are documented, several with runnable examples, and missing_docs is
    now enforced as a lint.
  • CI gained a dependency security audit and a non-Windows compile check.

Fixed

  • Malformed-file panic protection, previously scoped to PDF extraction only,
    now wraps every format the extractor handles. A panic while extracting any
    one file is caught and downgraded to "no text" for that file, rather than
    risking a poisoned shared index-updater lock that could stall the watch and
    OCR pipelines.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 13:17

Upgrading from an earlier version: the index schema is now version 4. You must rebuild the index once after updating (tray menu → rebuild). Opening an older index reports a clear error asking for a rebuild.

Added

  • The interface now follows the system language, Chinese or English. Overlay dropdowns, the search placeholder, result count, empty-state guidance, preview hints, the pin tooltip, the shortcut bar and shortcut overlay, plus the tray tooltip, the tray and right-click menus, and the folder-selection dialog are all drawn from a dictionary. A Chinese system UI shows Chinese; everything else shows English. The choice is made once at startup, with no runtime switch.

Changed

  • Text is now tokenized by script: CJK runs go to jieba, Latin/digit runs split on alphanumeric boundaries, and every token is lowercased. Searches are now case-insensitive (api matches API), and hyphenated or mixed terms are found by their parts (covid, 19, and covid-19 all match covid-19). Token positions are sequential, which makes quoted phrase queries more accurate. Chinese segmentation is unchanged.
  • The index schema is now version 4 (see the upgrade note above).

Fixed

  • Fixed a bug where incremental indexing could stop permanently after the index writer collided with a real-time anti-virus scan. Reopening the writer hit a lock-ordering deadlock and never recovered, so files renamed or created after the collision were not indexed until the next full rebuild. Reopening now reuses the existing write lock and recovers cleanly.

Installers are unsigned; Windows SmartScreen will prompt on first run (More info → Run anyway). Verify your download against checksums.txt (SHA-256).

v0.6.1 现场故障修复:OCR 批量提交 / 建索引进度全程可见 / 索引文件夹可见可改

Choose a tag to compare

@ltspace ltspace released this 12 Jul 01:55

真机现场故障修复

用户实测:选一个含 15,287 篇文本 + 14,906 张图片的目录建索引,暴露四个连带症状——根因是同一个:OCR 识别结果写回索引原来是每识别一张图就单独 commit 一次,15k 张图片对应 15k 次重量级 tantivy commit(每次都重写段元文件、可能触发合并),把磁盘 IO 打爆。

  1. 进程偶发崩溃 —— 高频建删文件撞上杀毒/EDR 软件的实时扫描(v0.6.0 的重试保护只包了全量重建入口,OCR 写回和增量更新两条写入端路径没有同等保护)。旧实现还有一个真实的数据丢失 bug:写入端一旦被判定"已死",无论提交成不成功都无条件把图片标记"已处理",后续所有图片的识别结果会被静默丢弃、且没有任何报错信号。
  2. 快捷键唤起窗口卡顿数秒 —— 系统级磁盘 IO 争用拖慢整机调度;呼出路径本身审计确认不含任何锁等待。
  3. 完成报告"另有 N 张图片在后台识别"的计数永远不动 —— 原来是重建完成那一刻的静态快照,从未订阅任何进度事件。
  4. 建索引期间搜索不出任何结果 —— 前端引导层状态判定跟建索引状态耦合过紧。

修复

  • OCR 结果写回改为批量提交(32 张或 5 秒窗口,先到者触发),commit 次数从"每张一次"降两个数量级
  • 把原本只保护全量重建的"杀软扫描瞬时冲突 → 重试 + 退避"机制扩展到增量更新OCR 写回两条写入端路径,统一共享同一套探测逻辑;写入端撞死后重开新 writer 整批重做(幂等安全)
  • 修复"提交失败仍标记已处理"的数据丢失 bug——失败的批次现在会退回队列下次重试,不会再无声消失
  • 建索引进度全程可见:文本阶段大号滚动计数 + 当前文件(中段省略长路径),OCR 回填阶段常驻"图片识别 N / M"进度条(不遮挡搜索结果),窗口隐藏后重新呼出自动续播当前进度,托盘图标 tooltip 同步显示
  • 崩溃取证:进程 stdout/stderr 重定向到 %LOCALAPPDATA%\dowse\data\logs\dowse.log(按体积轮转,2 个文件封顶),叠加 panic hook 记录崩溃线程/位置/信息

索引文件夹可见可改

  • 托盘新增"索引:<目录> · N 篇"只读信息项和"更改索引文件夹…"菜单项(选完新目录即整次重建,重建期间两个动作项置灰防重入)
  • 浮窗空态补一行当前索引根路径;已有索引时额外提供"更改文件夹"链接级入口

其他

  • 远程会话(RDP)不再无条件强制降级为纯色材质——新版 Windows 的 RDP 图形管线通常能正常渲染 Acrylic/Mica,一刀切预判反而误伤真实能渲染出来的场景

验证

本机压力复测:15,102 个文件(10,002 篇文本 + 5,100 张图片,5,100 张由官方基准语料的 100 张放大 51 倍构造)建索引,全程零崩溃,OCR 全量识别完成(pending: 0),OCR'd 图片内容与普通文本均可正常搜索命中。cargo test --workspace 全绿(含真实 OCR 引擎驱动的集成测试)。