Skip to content

Releases: ltspace/dowse

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 引擎驱动的集成测试)。