diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 34fb634..b851c63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -76,6 +76,16 @@ jobs: throw "The desktop UI version labels do not match tag $tag" } + $updateNotesPath = Join-Path $PWD "..\docs\desktop-update.md" + if (-not (Test-Path -LiteralPath $updateNotesPath)) { + throw "Missing docs/desktop-update.md release notes" + } + $updateNotes = Get-Content -LiteralPath $updateNotesPath -Raw + $updateNotesHeading = "(?m)^# ToolKnit Desktop {0}\s*$" -f [regex]::Escape($releaseVersion) + if ($updateNotes -notmatch $updateNotesHeading) { + throw "docs/desktop-update.md must start with the release version $releaseVersion" + } + - name: Setup Node.js uses: actions/setup-node@v5 with: @@ -165,6 +175,7 @@ jobs: uses: softprops/action-gh-release@v2 with: name: ToolKnit Desktop ${{ github.ref_name }} + body_path: docs/desktop-update.md files: | toolknit-desktop/src-tauri/target/release/bundle/nsis/*.exe toolknit-desktop/src-tauri/target/release/bundle/nsis/*.exe.sha256 diff --git a/.gitignore b/.gitignore index fa32aa5..0366032 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ toolknit-desktop-changelog.md 2.0路线规划.md 排查记录.md .codex-backups/ +.mimosa/ # 第三方参考项目 开发文件/ diff --git a/README.md b/README.md index eb2ffed..05217ca 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ToolKnit Desktop — ToolKnit spider web hero -

ToolKnit Desktop 2.1

+

ToolKnit Desktop 2.3

本地文件工作台 · 桌面端、网页端与 AI Agent 工作流

@@ -17,7 +17,8 @@

- ToolKnit 2.1.1 + English README + ToolKnit 2.3.0 current release Windows 10/11 Local first Tauri 2.x @@ -45,20 +46,20 @@

Windows desktop 再用桌面端

Windows 本地优先版本,适合长期文件工作、离线处理和可视化编辑。

查看桌面端下载

- 2.1.1 安装包、校验文件和版本说明会同步到 Release。 + 2.3.0 安装包、SHA-256 校验文件和版本说明通过 GitHub Release 发布。 -## ToolKnit 2.1 +## ToolKnit 2.3 -ToolKnit Desktop 2.1 是一套面向 Windows 的本地文件工作台。它把常用文件处理、图像与 Markdown 创作、开发者工具、AI 内容生产、专业文档工作流和 IDE Agent 自动化放在同一个产品体系里。 +ToolKnit Desktop 2.3 是一套面向 Windows 的本地文件工作台。它把常用文件处理、图像与 Markdown 创作、开发者工具、AI 内容生产、专业文档工作流和 IDE Agent 自动化放在同一个产品体系里。 同一份本地文件可以被桌面端预览、被 CLI 批处理、被 MCP Agent 调用,并且拥有明确的输入、输出、进度、错误和安全边界。 - + @@ -67,7 +68,21 @@ ToolKnit Desktop 2.1 是一套面向 Windows 的本地文件工作台。它把

60

桌面工具

65

桌面工具

12

功能分类

46

MCP 能力

3

工作方式
-## 2.1 系列新功能 +## 2.3 核心更新 + +V2.3 新增 5 项桌面工具,并完成更新、依赖下载、管理员重启、圆角渲染和工具页交互的兼容性加固: + +- `提词器`:支持平滑滚动、镜像、专注模式,以及 Windows 系统识别或 ToolKnit 离线识别驱动的句子级语音跟随。 +- `PDF 加页码`:支持页面范围、编号方式、起始值、文本模板、位置和外观预览,以矢量指令写入页码。 +- `PDF 裁剪`:支持可视化框选、精确边距、统一或逐页调整,通过修改页面边界完成无损裁剪。 +- `背景移除`:使用按需下载的本地模型生成透明背景,支持边缘优化、背景预览和原始分辨率导出。 +- `Excel 转 PDF`:批量读取 XLSX、XLS 和 ODS,通过 ToolKnit 管理的本地 LibreOffice 运行时渲染,并兼容 WPS 工作簿。 + +同时完成一轮面向真实 Windows 环境的体验与兼容性加固:启动后空闲检查 GitHub Release,可延后提醒且不上传使用数据;安装器携带 WebView2 引导程序;依赖下载、安装阶段提示和管理员权限重启更可靠;工具页导航、导出弹窗与圆角渲染保持一致;PDF.js 使用兼容构建,修复旧版 WebView2 打开 PDF 失败的问题。 + +桌面端、Tauri、Rust crate 与 `@toolknit/cli` 版本统一为 `2.3.0`;发布门禁覆盖 65 个桌面工具帮助映射、46 项 MCP 能力、完整前端回归与 Rust 测试。 + +### 2.1 系列基础 2.1 系列新增 11 项桌面工具,并围绕自定义背景、玻璃拟态交互、依赖复用、任务生命周期和失败恢复完成一轮系统升级。新工具继续遵循本地优先原则,重型编辑器与算法模块按需加载,离开页面后会释放 Worker、Canvas、监听器和临时资源。 @@ -151,15 +166,15 @@ ToolKnit Desktop 2.1 是一套面向 Windows 的本地文件工作台。它把 ## 完整功能目录 -下面按桌面端的 12 个分类列出全部 60 项工具。名称对应应用内入口,支持的 CLI / MCP 能力会在相应工具成熟后提供同一套输入输出契约。 +下面按桌面端的 12 个分类列出全部 65 项工具。名称对应应用内入口,支持的 CLI / MCP 能力会在相应工具成熟后提供同一套输入输出契约。 - +
PDF Document Studio

PDF 文档工具 · 9 项

PDF Document Studio

PDF 文档工具 · 12 项

-`PDF 合并` · `PDF 拆分` · `PDF 转图像` · `PDF 编辑器` · `PDF 页面旋转` · `PDF 文件加密` · `PDF 文件解密` · `PDF 文件压缩` · `PDF 文字增强` +`PDF 合并` · `PDF 拆分` · `PDF 加页码` · `PDF 裁剪` · `PDF 转图像` · `PDF 编辑器` · `PDF 页面旋转` · `PDF 文件加密` · `PDF 文件解密` · `PDF 文件压缩` · `PDF 文字增强` · `Excel 转 PDF` -支持拖拽排序、逐页预览、选页导出、页面旋转、文字替换、文本与图像插入、追加合并、密码保护、扫描件增强和多等级压缩。PDF、密码和导出结果默认只在本机处理。 +支持拖拽排序、逐页预览、选页导出、页码写入、无损裁剪、页面旋转、文字替换、文本与图像插入、追加合并、密码保护、扫描件增强、多等级压缩和工作簿本地渲染。PDF、工作簿、密码和导出结果默认只在本机处理。 @@ -170,12 +185,12 @@ ToolKnit Desktop 2.1 是一套面向 Windows 的本地文件工作台。它把 支持逐页渲染、页码选择、PNG/JPG/WebP 输出、素材去重、标题正文备注提取、Markdown/TXT/JSON 导出、媒体清理,以及从主题和资料生成结构化大纲与可编辑 PPTX 草稿。PPT 渲染运行时按需下载。
PPT Presentation Studio

PPT 演示文稿工具 · 7 项

- +
Image Lab

图像工具 · 6 项

Image Lab

图像工具 · 7 项

-`图像裁剪` · `智能颜色替换` · `图片格式转换` · `图片压缩` · `长图拼接` · `图标生成器` +`图像裁剪` · `智能颜色替换` · `背景移除` · `图片格式转换` · `图片压缩` · `长图拼接` · `图标生成器` -支持常用比例与构图辅助线裁剪、区域保护颜色替换、JPG / PNG / WebP / BMP / GIF / SVG 互转、批量压缩、横向 / 纵向 / 无缝拼接图片或 PDF 页面,以及生成多尺寸 PNG、ICO、SVG 图标并打包 ZIP。 +支持常用比例与构图辅助线裁剪、区域保护颜色替换、本地模型背景移除、JPG / PNG / WebP / BMP / GIF / SVG 互转、批量压缩、横向 / 纵向 / 无缝拼接图片或 PDF 页面,以及生成多尺寸 PNG、ICO、SVG 图标并打包 ZIP。 @@ -194,12 +209,12 @@ ToolKnit Desktop 2.1 是一套面向 Windows 的本地文件工作台。它把 支持 MP4、AVI、MKV、MOV、WebM、FLV、WMV、TS、M4V 等格式转换,按精确时间点导出 PNG/JPG 单帧,以及从 30 秒以内片段生成调色板优化 GIF。
Sound Studio

音频工具 · 4 项

- +
Text Terminal

文本与转写 · 4 项

Text Terminal

文本与转写 · 5 项

-`Markdown 文档编辑器` · `音视频提取文字` · `文本统计器` · `文本格式化` +`Markdown 文档编辑器` · `音视频提取文字` · `提词器` · `文本统计器` · `文本格式化` -Markdown 编辑器提供 GFM、Mermaid、数学公式、标题大纲、草稿恢复与离线导出;Whisper 模型下载到本机后,可离线识别中英文音频和视频并输出 TXT、SRT、JSON;文本统计和格式化工具用于检查与整理纯文本内容。 +Markdown 编辑器提供 GFM、Mermaid、数学公式、标题大纲、草稿恢复与离线导出;Whisper 模型下载到本机后,可离线识别中英文音频和视频并输出 TXT、SRT、JSON,也可驱动提词器语音跟随;文本统计和格式化工具用于检查与整理纯文本内容。 @@ -261,7 +276,7 @@ CLI 和 MCP 默认要求明确输入与输出路径,不覆盖已有文件; ## 技术栈 -ToolKnit 2.1 采用轻量桌面容器与本地文件引擎组合,网页端、桌面端、CLI 和 MCP 共用清晰的输入输出边界。 +ToolKnit 2.3 采用轻量桌面容器与本地文件引擎组合,网页端、桌面端、CLI 和 MCP 共用清晰的输入输出边界。
Calculator utility

计算器工具 · 5 项

@@ -306,7 +321,7 @@ ToolKnit 2.1 采用轻量桌面容器与本地文件引擎组合,网页端、 @@ -324,10 +339,10 @@ ToolKnit 2.1 采用轻量桌面容器与本地文件引擎组合,网页端、 ## 产品预览

- ToolKnit Desktop 2.1 custom wallpaper and glass workbench + ToolKnit Desktop custom wallpaper and glass workbench

-

2.1 工作台首页 · 自定义壁纸 · 玻璃拟态卡片 · 统一搜索与分类导航

+

ToolKnit 工作台首页 · 自定义壁纸 · 玻璃拟态卡片 · 统一搜索与分类导航

ToolKnit.com 网页端 · 开箱即用

ToolKnit.com web version @@ -365,11 +380,9 @@ ToolKnit 2.1 采用轻量桌面容器与本地文件引擎组合,网页端、 ### 安装 Windows 桌面端 -从 [GitHub Releases](https://github.com/ZihangDong/toolknit-desktop/releases) 获取安装包。2.1.1 正式发布后,安装包、校验文件和版本说明会在 Release 页面同步提供。 - -正式安装包发布前请以仓库 Release 页面为准,并在运行前核对同页提供的 SHA-256 校验值。 +从 [GitHub Releases](https://github.com/ZihangDong/toolknit-desktop/releases) 获取 2.3.0 安装包、版本说明和对应的 `.sha256` 文件。请只从本仓库 Release 页面下载,并在运行前核对 SHA-256 校验值。 -**代码签名状态:** 2.1.1 尚未使用 SignPath 签名流程。项目已申请 SignPath Foundation 的开源代码签名支持;获批并完成集成后,后续版本将按照[代码签名政策](CODE_SIGNING_POLICY.md)签名。 +**代码签名状态:** 2.3.0 暂未进行 Authenticode 代码签名,因此 Windows 可能显示“未知发布者”或 SmartScreen 提示。确认下载地址和 SHA-256 后再继续安装;后续签名版本将遵循[代码签名政策](CODE_SIGNING_POLICY.md)。 ### 从源码运行 @@ -449,7 +462,9 @@ ToolKnit 的代码、文档、测试、设计和问题反馈都来自真实的 ## 捐赠支持 -如果 ToolKnit 对你的工作有帮助,欢迎用一次性捐赠支持测试设备、依赖镜像、文档维护和后续功能开发。捐赠不是付费外包承诺,但会帮助项目保持开源、纯净、可维护和持续更新。 +为了持续给大家免费更新 ToolKnit,作者仅 AI 开发与测试每月就要自掏腰包 500 多元,长期独自承担已越来越吃力。如果 ToolKnit 对你的工作有帮助,欢迎用一次性捐赠支持 AI 测试、兼容性设备、依赖镜像、文档维护和后续功能开发。 + +赞助后可经确认加入 ToolKnit 灰度体验群,提前体验版本并提交希望加入的功能。灰度群用于交流、测试和需求收集;赞助不代表购买功能,也不承诺实现或优先排期。

支持 ToolKnit 的支付宝和微信二维码 @@ -494,5 +509,5 @@ ToolKnit Desktop 和 CLI/MCP 源代码采用 [Apache License 2.0](LICENSE) 开 该协议不授予 ToolKnit 名称、Logo、视觉标识、域名、官网、托管网页服务、服务账号或其他独立运营产品的使用权。详见 [NOTICE](NOTICE)。

- ToolKnit Desktop 2.1 · Local-first tools for real work + ToolKnit Desktop 2.3 · Local-first tools for real work

diff --git a/README_EN.md b/README_EN.md index 9167ff5..7099dd3 100644 --- a/README_EN.md +++ b/README_EN.md @@ -2,7 +2,7 @@ ToolKnit Desktop — ToolKnit spider web hero -

ToolKnit Desktop 2.1

+

ToolKnit Desktop 2.3

Local file workbench · Desktop, web, and AI Agent workflows

@@ -18,7 +18,7 @@

Simplified Chinese README - ToolKnit 2.1.1 official release + ToolKnit 2.3.0 current release Windows 10/11 Local-first Tauri 2.x @@ -46,20 +46,20 @@

Windows desktop Use the desktop app

A local-first Windows app for long-running file work, offline processing, and visual editing.

View desktop downloads

- The 2.1.1 installer, checksum, and release notes are published through GitHub Releases. + The 2.3.0 installer, SHA-256 checksum, and release notes are published through GitHub Releases.
FFmpeg Whisper - LibreOffice + LibreOffice Three.js
-## ToolKnit 2.1 +## ToolKnit 2.3 -ToolKnit Desktop 2.1 is a local file workbench for Windows. It brings everyday file processing, image and Markdown creation, developer tools, AI content production, professional document workflows, and IDE Agent automation into one product system. +ToolKnit Desktop 2.3 is a local file workbench for Windows. It brings everyday file processing, image and Markdown creation, developer tools, AI content production, professional document workflows, and IDE Agent automation into one product system. The same local file can be previewed in the desktop app, batch-processed by the CLI, or called by an MCP Agent, with explicit input, output, progress, error, and safety boundaries. - + @@ -68,7 +68,21 @@ The same local file can be previewed in the desktop app, batch-processed by the

60

Desktop tools

65

Desktop tools

12

Categories

46

MCP capabilities

3

Ways to work
-## What's new in the 2.1 series +## What's new in 2.3 + +V2.3 adds five desktop tools and strengthens update handling, dependency downloads, administrator relaunch, rounded-corner rendering, and tool-page interactions: + +- `Teleprompter`: smooth scrolling, mirroring, focus mode, and sentence-level voice following driven by Windows speech recognition or ToolKnit offline recognition. +- `Add PDF Page Numbers`: page ranges, numbering styles, starting values, text templates, position and appearance previews, with page numbers written as vector instructions. +- `Crop PDF`: visual selection, precise margins, shared or per-page adjustments, and lossless cropping by changing PDF page boundaries. +- `Background Removal`: transparent-background generation with an on-demand local model, edge refinement, background preview, and source-resolution export. +- `Excel to PDF`: batch XLSX, XLS, and ODS conversion through a ToolKnit-managed local LibreOffice runtime, including WPS workbook compatibility. + +The release also hardens real-world Windows behavior: idle-time GitHub Release checks can be deferred without uploading usage data; the installer carries the WebView2 bootstrapper; dependency downloads, installation-stage messaging, and administrator relaunch are more reliable; tool navigation, export dialogs, and rounded-corner rendering are consistent; and a compatible PDF.js build fixes PDF loading on older WebView2 runtimes. + +The desktop app, Tauri bundle, Rust crate, and `@toolknit/cli` share version `2.3.0`. Release checks cover the 65-tool desktop help map, 46 MCP capabilities, frontend regressions, and Rust tests. + +### Foundation from the 2.1 series The 2.1 series adds 11 desktop tools and delivers a broader upgrade across custom backgrounds, glass interactions, local dependency reuse, task lifecycle management, and failure recovery. Heavy editors and algorithm modules load on demand, while Workers, canvases, listeners, and temporary resources are released when a tool closes. @@ -152,15 +166,15 @@ The 2.1 series adds 11 desktop tools and delivers a broader upgrade across custo ## Complete tool catalog -The 12 desktop categories below contain all 60 tools. Names correspond to in-app entries; CLI and MCP capabilities use the same input/output contracts as each tool becomes ready. +The 12 desktop categories below contain all 65 tools. Names correspond to in-app entries; CLI and MCP capabilities use the same input/output contracts as each tool becomes ready. - +
PDF Document Studio

PDF tools · 9

PDF Document Studio

PDF tools · 12

-`PDF Merge` · `PDF Split` · `PDF to Image` · `PDF Editor` · `PDF Page Rotate` · `PDF Encrypt` · `PDF Decrypt` · `PDF Compress` · `PDF Enhance` +`PDF Merge` · `PDF Split` · `Add PDF Page Numbers` · `Crop PDF` · `PDF to Image` · `PDF Editor` · `PDF Page Rotate` · `PDF Encrypt` · `PDF Decrypt` · `PDF Compress` · `PDF Enhance` · `Excel to PDF` -Supports drag sorting, page-by-page preview, page selection, rotation, text replacement, text and image insertion, append merge, password protection, scanned-document enhancement, and multiple compression levels. PDFs, passwords, and exported results are processed locally by default. +Supports drag sorting, page-by-page preview, selected-page export, page numbering, lossless cropping, rotation, text replacement, text and image insertion, append merge, password protection, scanned-document enhancement, multiple compression levels, and local workbook rendering. PDFs, workbooks, passwords, and exported results are processed locally by default. @@ -171,12 +185,12 @@ Supports drag sorting, page-by-page preview, page selection, rotation, text repl Supports page rendering, page selection, PNG/JPG/WebP output, duplicate asset filtering, title/body/notes extraction, Markdown/TXT/JSON export, media cleanup, and structured outlines plus editable PPTX drafts generated from a brief and source material. The PPT rendering runtime is downloaded on demand.
PPT Presentation Studio

PPT tools · 7

- +
Image Lab

Image tools · 6

Image Lab

Image tools · 7

-`Image Crop` · `Smart Color Replace` · `Image Format Converter` · `Image Compressor` · `Long Image Stitcher` · `Icon Generator` +`Image Crop` · `Smart Color Replace` · `Background Removal` · `Image Format Converter` · `Image Compressor` · `Long Image Stitcher` · `Icon Generator` -Supports ratio presets and composition guides for cropping, connected-region color replacement, JPG/PNG/WebP/BMP/GIF/SVG conversion, batch compression, horizontal/vertical/seamless stitching of images or PDF pages, and multi-size PNG, ICO, and SVG icon generation with ZIP output. +Supports ratio presets and composition guides for cropping, connected-region color replacement, local-model background removal, JPG/PNG/WebP/BMP/GIF/SVG conversion, batch compression, horizontal/vertical/seamless stitching of images or PDF pages, and multi-size PNG, ICO, and SVG icon generation with ZIP output. @@ -195,12 +209,12 @@ Supports MP3, AAC, WAV, FLAC, ALAC, OGG, WMA, and other formats, offline BPM ana Supports MP4, AVI, MKV, MOV, WebM, FLV, WMV, TS, M4V, and other formats, exact-time PNG/JPG frame export, and palette-optimized GIF creation from clips up to 30 seconds.
Sound Studio

Audio tools · 4

- +
Text Terminal

Text and transcription · 4

Text Terminal

Text and transcription · 5

-`Markdown Document Editor` · `Audio/Video Transcription` · `Text Statistics` · `Text Formatter` +`Markdown Document Editor` · `Audio/Video Transcription` · `Teleprompter` · `Text Statistics` · `Text Formatter` -The Markdown editor provides GFM, Mermaid, math, a heading outline, draft recovery, and offline export. After downloading a Whisper model locally, the app can transcribe Chinese and English audio/video offline and export TXT, SRT, and JSON. Text Statistics and Text Formatter help inspect and clean up plain text. +The Markdown editor provides GFM, Mermaid, math, a heading outline, draft recovery, and offline export. After downloading a Whisper model locally, the app can transcribe Chinese and English audio/video offline and export TXT, SRT, and JSON; the same local recognition can drive teleprompter voice following. Text Statistics and Text Formatter help inspect and clean up plain text. @@ -262,7 +276,7 @@ CLI and MCP require explicit input and output paths by default and do not overwr ## Technology stack -ToolKnit 2.1 combines a lightweight desktop container with local file engines. The web app, desktop app, CLI, and MCP share clear input/output boundaries. +ToolKnit 2.3 combines a lightweight desktop container with local file engines. The web app, desktop app, CLI, and MCP share clear input/output boundaries.
Calculator utility

Calculator tools · 5

@@ -307,7 +321,7 @@ ToolKnit 2.1 combines a lightweight desktop container with local file engines. T @@ -325,10 +339,10 @@ ToolKnit 2.1 combines a lightweight desktop container with local file engines. T ## Product previews

- ToolKnit Desktop 2.1 custom wallpaper and glass workbench + ToolKnit Desktop custom wallpaper and glass workbench

-

2.1 workbench home · Custom wallpaper · Glass cards · Unified search and category navigation

+

ToolKnit workbench home · Custom wallpaper · Glass cards · Unified search and category navigation

ToolKnit.com web version · ready to use

ToolKnit.com web version @@ -366,9 +380,9 @@ Open [ToolKnit.com](https://toolknit.com) to start using the web tools without i ### Install the Windows desktop app -Download the installer from [GitHub Releases](https://github.com/ZihangDong/toolknit-desktop/releases). The 2.1.1 installer, checksum files, and release notes are kept on the Release page. Verify the SHA-256 checksum before running the installer. +Get the 2.3.0 installer, release notes, and matching `.sha256` file from [GitHub Releases](https://github.com/ZihangDong/toolknit-desktop/releases). Download only from this repository's Release page and verify the SHA-256 checksum before running the installer. -**Code-signing status:** Version 2.1.1 does not use the SignPath signing workflow. The project has applied for SignPath Foundation open-source code-signing support; once approved and integrated, future versions will follow the [code-signing policy](CODE_SIGNING_POLICY.md). +**Code-signing status:** Version 2.3.0 is not yet Authenticode-signed, so Windows may display an “Unknown publisher” or SmartScreen prompt. Confirm the download source and SHA-256 checksum before continuing. Future signed releases will follow the [code-signing policy](CODE_SIGNING_POLICY.md). ### Run from source @@ -448,7 +462,9 @@ ToolKnit's code, documentation, tests, design, and issue reports are built throu ## Support the project -If ToolKnit helps your work, a one-time donation supports testing devices, dependency mirrors, documentation maintenance, and future development. Support is not a paid outsourcing promise; it helps the project remain open, clean, maintainable, and continuously updated. +Keeping ToolKnit free and continuously updated currently costs the author more than CNY 500 per month for AI-assisted development and testing alone, paid out of pocket. Carrying that cost alone is becoming difficult. If ToolKnit helps your work, a one-time donation supports AI testing, compatibility devices, dependency mirrors, documentation maintenance, and future development. + +After confirmation, supporters may join the ToolKnit preview group to test upcoming builds and submit feature ideas. The group is for discussion, testing, and collecting requirements; a donation is not a purchase of functionality and does not guarantee implementation or priority.

Alipay and WeChat donation QR codes for ToolKnit @@ -494,5 +510,5 @@ ToolKnit Desktop and the CLI/MCP source code are released under the [Apache Lice The license does not grant rights to the ToolKnit name, logos, visual identity, domains, official website, hosted web services, service accounts, or other independently operated products. See [NOTICE](NOTICE).

- ToolKnit Desktop 2.1 · Local-first tools for real work + ToolKnit Desktop 2.3 · Local-first tools for real work

diff --git a/docs/desktop-update.md b/docs/desktop-update.md new file mode 100644 index 0000000..970065a --- /dev/null +++ b/docs/desktop-update.md @@ -0,0 +1,31 @@ +# ToolKnit Desktop 2.3.0 + +> 此文件同时作为 GitHub Release 正文与桌面端更新页的唯一来源。标题版本必须与 +> Release Tag 去掉 `v` 后的版本完全一致。 + +## 新增工具 + +- 文本与转写分类新增“提词器”:粘贴台词或读取 TXT、Markdown、DOCX、PDF 文稿,支持平滑滚动、速度与字号调节、水平/垂直镜像和专注模式;句子级语音跟随可选自动选择、Windows 系统识别或 ToolKnit 离线识别,麦克风片段只在本机处理。 +- PDF 分类新增“PDF 加页码”:把一个或多个 PDF 展开成统一页面序列,实时预览页码范围、编号方式、位置与外观,页码由矢量指令直接写入,支持单个 PDF 或逐页 ZIP 导出。 +- PDF 分类新增“PDF 裁剪”:在可视化预览中框选保留区域或输入精确边距,支持全部页面统一裁剪与单页独立调整,通过修改页面边界实现,不截图压缩,支持单个 PDF 或逐页 ZIP 导出。 +- 图像分类新增“背景移除”:使用按需下载的本地抠图模型生成透明背景,支持前后对比、边缘优化、背景颜色预览和原始分辨率导出;模型推理和图片处理均留在本机。 +- PDF 分类新增“Excel 转 PDF”:批量读取 XLSX、XLS 和 ODS,支持工作表范围、方向、纸张与缩放设置;使用 ToolKnit 管理的本地 LibreOffice 运行时渲染,并针对 WPS 工作簿提供兼容导入路径。 + +## 更新体验 + +- ToolKnit 会在启动后的空闲时段后台检查已发布的 GitHub Release,不打断当前工作。 +- 全屏更新页会将当前版本、可用版本、更新说明与已验证的 GitHub Release 地址集中呈现。 +- 选择“我还不想更新”会将当前版本延后 24 小时;更高的新版本不会被旧延后记录隐藏。 + +## 可靠性与隐私 + +- Release 元数据仅在本机缓存六小时,降低网络请求和 GitHub API 压力。检查过程不会发送工具输入、文件路径、账户信息或使用历史。 +- 详细更新说明文件不可用时,应用会安全回退到 GitHub Release 正文;远端 Markdown 只作为文本呈现,不会执行其中的代码。 +- 在配置 Tauri 签名更新端点之前,“现在去更新”会打开对应 GitHub Release,让安装包与 SHA-256 校验值仍可见、可核对。 + +## 发布检查 + +- 每次桌面端发布、打 Tag 前都必须更新本文件。 +- 顶部版本必须与 `package.json`、Cargo 以及 Release Tag 保持一致。 +- V2.3 桌面目录固定为 12 个分类、65 项工具;CLI / MCP 保持 46 项已发布能力。 +- 将正式安装包及对应 `.sha256` 文件加入 GitHub Release。 diff --git a/toolknit-desktop/CHANGELOG.md b/toolknit-desktop/CHANGELOG.md index a23de99..1fdd2e5 100644 --- a/toolknit-desktop/CHANGELOG.md +++ b/toolknit-desktop/CHANGELOG.md @@ -3,6 +3,50 @@ > 与网页端完整更新历史保持同步: > https://toolknit.com/changelog.html +## v2.3.0 (2026-08-31) + +> 原规划的 2.2.0 未单独发布,其更新体验能力并入本版本。 + +### 新增工具 + +- 文本与转写分类新增“提词器”:粘贴台词或读取 TXT、Markdown、DOCX、PDF 文稿,支持平滑滚动、速度与字号调节、水平/垂直镜像和专注模式;句子级语音跟随提供自动选择、Windows 系统识别与 ToolKnit 离线识别(whisper.dll 本地推理)三种方式,关闭页面时停止麦克风、取消未完成识别并释放模型会话。 +- PDF 分类新增“PDF 加页码”:把一个或多个 PDF 展开成统一页面序列,支持页面排序、范围选择、跳过封面、连续或分文件编号、起始值与步长、自定义文本模板、九宫格位置与多种外观样式;页码由 PDF 矢量指令直接写入,可导出单个 PDF 或逐页 ZIP。 +- PDF 分类新增“PDF 裁剪”:在可视化预览中框选保留区域或输入精确边距(毫米 / PDF 点),支持全部页面统一裁剪与单页独立调整、撤销重做;裁剪通过修改页面边界实现,不会截图压缩,可导出单个 PDF 或逐页 ZIP。 +- 图像分类新增“背景移除”:使用按需下载的本地抠图模型生成透明背景,支持前后对比、边缘优化、背景颜色预览和原始分辨率导出;模型推理和图片处理均留在本机。 +- PDF 分类新增“Excel 转 PDF”:批量读取 XLSX、XLS 和 ODS,支持工作表范围、方向、纸张与缩放设置;使用 ToolKnit 管理的本地 LibreOffice 运行时渲染,并针对 WPS 工作簿提供兼容导入路径。 +- 三项新工具统一使用自定义下拉组件,保持键盘可访问与玻璃拟态视觉的一致性。 + +### 更新体验 + +- 启动后的空闲时段后台检查已发布的 GitHub Release,不打断当前工作;全屏更新页集中呈现当前版本、可用版本、更新说明与已验证的 Release 地址。 +- 选择“我还不想更新”将当前版本延后 24 小时;更高的新版本不会被旧延后记录隐藏。 +- Release 元数据仅在本机缓存六小时;检查过程不发送工具输入、文件路径、账户信息或使用历史;远端 Markdown 只作为文本呈现,不会执行其中的代码。 + +### 修复 + +- 提词器:进度条与已用 / 剩余时间改为跟随真实滚动位置匀速前进,不再按句子序号跳变,也不会在长句播放时长时间冻结在 0%。 +- 提词器:滚动速度按界面显示的预估时长自动推导,整个文稿的实际滚动时长与显示时长一致,调整字号或篇幅后不再出现“几乎不播放”或“进度条跑很快”。 +- 提词器:修复 “GLM-5.3”“2.3.0”“3.14” 等数字中的英文句点被误判为句子边界的问题;数字后跟空格的编号列表仍正常切分。 +- 提词器:修复播放 / 暂停图标在句间切换后消失的问题。 +- 提词器:修复程序化滚动后当前句同步可能永久失效,导致进度、高亮和自动结束全部冻结的问题。 +- 提词器:低帧率设备上播放不再随掉帧等比例变慢;播放期间暂停 WebGL 背景渲染,减少起播与滚动掉帧。 +- 提词器:播放滚动改为合成器驱动的 transform 平移(浮点亚像素精度),不再受显示缩放的物理像素网格量化影响——低速倍速(如 0.4x、1.0x)下不再出现卡顿和步进抽搐,任何倍速都能吃满屏幕刷新率匀速滚动;播放期间主线程不再逐帧重绘文字,进一步降低掉帧。镜像(水平/垂直)并入同一变换矩阵并修正了应用顺序,垂直镜像下滚动方向保持正确;暂停时浮点偏移落回原生滚动,滚轮、点句定位等手动交互不受影响。 +- 提词器:播放期间说明栏收起动画不再触发重复的视图重新定位,消除起播瞬间的顿挫。 +- 提词器:暂停与播放改为原地冻结、原地继续——不再自动重新定位当前句,起播后进度也不会瞬间前跳;播放期间面板收展与窗口缩放同样不会移动视图。 +- 提词器:控制栏改版——速度与字号改为渐升“音波”拖动条(50 根竖线、当前值以左点亮),支持拖动、点击与键盘微调,拖动时浮出数值徽标;播放 / 暂停改为白色平面图标;键盘 +/− 快捷键保留并与滑条双向联动,滑条聚焦时方向键只调节取值。 +- 提词器:桌面端语音跟随放开 WebView2 媒体权限,麦克风不再被静默拒绝;配合已下载的离线识别模型即可逐句跟随,系统识别能力仍取决于 WebView2 环境。 +- 提词器:离线识别模型未安装时,首页工具卡片点击直接弹出依赖下载引导(与音视频提取文字一致的拦截流程),不安装无法进入工具页;下载完成后自动进入,语音跟随启动中遇到模型缺失也会重新弹出门引并自动恢复跟随。 +- 提词器:语音跟随新增逐字阅读光标——当前朗读位置下方显示白色短光标条,随识别实时前进;语音跟随模式下加大行距以容纳光标;识别结果中的常见繁体字自动映射为简体参与匹配,避免繁体输出导致跟随失效。 +- 提词器:语音跟随实时窗口从 4.2 秒缩短到 3.2 秒,首条识别与后续跟随更快;音频上下文无法运行时立即明确报错而不是静默无声。 +- 音视频提取文字:识别结果中的常见繁体字自动重写为简体后再发布(JSON / SRT / TXT 同步处理),桌面端与 CLI 转写一致,不再出现“识别内容正确但混入繁体”的问题。 +- 工具页顶栏统一:提词器补齐“返回”按钮与 TOOL PAGE 页签,替换原品牌标识;“网页端版本”文案统一为“网页版本”,修复文本格式化页网页链接的下划线,支持作者按钮在提词器页恢复标准白底样式。 +- PDF 工具:修复在 WebView2 / 浏览器内核低于 Chromium 140 的设备上,所有 PDF 工具加载文件即报 “hashOriginal.toHex is not a function” 的问题。原因是 pdf.js 6.x 的 modern 构建依赖 `Uint8Array.prototype.toHex` 等新 API 计算文档指纹;桌面端全部 12 处引用切换为官方 legacy 构建(自带 polyfill),与 CLI 侧既有做法一致,pdfjs-dist 版本与安全修复保持 6.2.108 不变,worker 体积增加约 160 KB。 + +### 版本与界面标识 + +- 桌面应用、Tauri、Rust crate 与 `@toolknit/cli` 统一升级为 `2.3.0`;首页海报、设置页、帮助中心与全部工具页的视觉版本标识同步为 2.3。 +- 桌面工具目录扩展为 12 个分类 65 项。 + ## v2.1.1 (2026-08-25) ### 版本与界面标识 diff --git a/toolknit-desktop/README.md b/toolknit-desktop/README.md index 14a078a..e7e64b3 100644 --- a/toolknit-desktop/README.md +++ b/toolknit-desktop/README.md @@ -84,6 +84,15 @@ ToolKnit Desktop 是 ToolKnit 网页端的开源桌面配套版本。它面向
FFmpeg Whisper - LibreOffice + LibreOffice Three.js
+### v2.3.0 正式版 + +V2.3 在 V2.1 的本地安全基础上继续补齐真实工作流,并把桌面工具目录扩展到 12 个分类、65 项: + +- 新增提词器、PDF 加页码、PDF 裁剪、背景移除和 Excel 转 PDF。 +- 提词器支持本地离线语音跟随;背景移除使用本机模型;Excel 转 PDF 使用本地 LibreOffice 运行时,源文件不会上传。 +- 更新检查、WebView2 安装策略、管理员重启、窗口与控件圆角、依赖下载状态和工具页交互完成兼容性加固。 +- 桌面端、Tauri、Rust crate、CLI/MCP 和发布文档统一为 `2.3.0`,发布门禁覆盖 65 个桌面工具帮助映射与 46 项 MCP 能力。 + ### v2.1.1 版本修正 - 设置页、帮助入口和工具页的当前视觉版本标识统一为 2.1,与当前系列保持一致。 @@ -127,7 +136,9 @@ v2.1 将发布重点放在本地文件安全、PDF 编辑深度和真实失败 > 如果 ToolKnit 曾替你省下一次重复劳动、一个晚上的加班,或者把原本散掉的文件重新拢回秩序,欢迎把一点点支持留给它。 > -> 这些支持不会只停在一句感谢里,它们会被放回到测试设备、依赖镜像、文档、版本发布和 bug 修复里。每一笔都不算大,但都在帮它更稳地活下去。 +> 为了持续给大家免费更新 ToolKnit,作者仅 AI 开发与测试每月就要自掏腰包 500 多元,长期独自承担已越来越吃力。支持会用于 AI 测试、兼容性设备、依赖镜像、文档、版本发布和 bug 修复。 +> +> 赞助后可经确认加入 ToolKnit 灰度体验群,提前体验版本并提交希望加入的功能。灰度群用于交流、测试和需求收集;赞助不代表购买功能,也不承诺实现或优先排期。 diff --git a/toolknit-desktop/assets/id-photo/clothing/blouse-white-women.png b/toolknit-desktop/assets/id-photo/clothing/blouse-white-women.png new file mode 100644 index 0000000..7a5df00 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/blouse-white-women.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/jk-sailor-gray.png b/toolknit-desktop/assets/id-photo/clothing/jk-sailor-gray.png new file mode 100644 index 0000000..4c6aa90 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/jk-sailor-gray.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/jk-sailor-navy.png b/toolknit-desktop/assets/id-photo/clothing/jk-sailor-navy.png new file mode 100644 index 0000000..fa2e862 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/jk-sailor-navy.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/jk-vest-plaid.png b/toolknit-desktop/assets/id-photo/clothing/jk-vest-plaid.png new file mode 100644 index 0000000..1dc2cf2 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/jk-vest-plaid.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/shirt-blue-men.png b/toolknit-desktop/assets/id-photo/clothing/shirt-blue-men.png new file mode 100644 index 0000000..0a828fd Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/shirt-blue-men.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/shirt-white-men.png b/toolknit-desktop/assets/id-photo/clothing/shirt-white-men.png new file mode 100644 index 0000000..de68e81 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/shirt-white-men.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/suit-beige-women.png b/toolknit-desktop/assets/id-photo/clothing/suit-beige-women.png new file mode 100644 index 0000000..8456fd0 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/suit-beige-women.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/suit-charcoal-men.png b/toolknit-desktop/assets/id-photo/clothing/suit-charcoal-men.png new file mode 100644 index 0000000..4c156e1 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/suit-charcoal-men.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/suit-dark-women.png b/toolknit-desktop/assets/id-photo/clothing/suit-dark-women.png new file mode 100644 index 0000000..01cd97f Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/suit-dark-women.png differ diff --git a/toolknit-desktop/assets/id-photo/clothing/suit-navy-men.png b/toolknit-desktop/assets/id-photo/clothing/suit-navy-men.png new file mode 100644 index 0000000..1277215 Binary files /dev/null and b/toolknit-desktop/assets/id-photo/clothing/suit-navy-men.png differ diff --git a/toolknit-desktop/cli/README.md b/toolknit-desktop/cli/README.md index cefa526..98ca265 100644 --- a/toolknit-desktop/cli/README.md +++ b/toolknit-desktop/cli/README.md @@ -113,7 +113,7 @@ PDF、图片、音视频、文本和非 AI PPT 等本地工具不需要 AI Key ``` ```text -请用 ToolKnit 生成一份可编辑 AI 文档,主题是“开源工具箱 v2.0 发布说明”,输出 PDF、预览图和控件编号图。生成后先检查编号图,如果版式空白或元素重叠,请继续调整工程文件并重新渲染。 +请用 ToolKnit 生成一份可编辑 AI 文档,主题是“开源工具箱 V2.3 发布说明”,输出 PDF、预览图和控件编号图。生成后先检查编号图,如果版式空白或元素重叠,请继续调整工程文件并重新渲染。 ``` 查看完整中英文 Agent 手册: diff --git a/toolknit-desktop/cli/guides/agent-guide.en.md b/toolknit-desktop/cli/guides/agent-guide.en.md index c124427..8d3927a 100644 --- a/toolknit-desktop/cli/guides/agent-guide.en.md +++ b/toolknit-desktop/cli/guides/agent-guide.en.md @@ -163,7 +163,7 @@ Call ToolKnit MCP's toolknit_ppt_to_image to export slides 1 through 3 of this p When the user asks “make a PPT outline from these notes” or “plan an 8-slide talk,” the Agent should call `toolknit_ppt_outline`. This tool does not read PPTX and does not generate PPTX. It generates `outline.md`, `outline.json`, and `manifest.json` from the supplied text. If the source notes come from project files, read and summarize the text first, then pass the concise brief as `prompt`. Never put API keys in the prompt. ```text -Call ToolKnit MCP's toolknit_ppt_outline to generate an 8-slide Chinese PPT outline from the product notes I provided. The audience is open-source users, and the purpose is to help them understand ToolKnit 2.0's local-first and AI Agent capabilities and want to try it. Save into this workspace's toolknit-output folder. Resolve the output directory to an absolute path first and do not overwrite existing outputs. Report the outline.md, outline.json, manifest.json paths and missing-info list. +Call ToolKnit MCP's toolknit_ppt_outline to generate an 8-slide Chinese PPT outline from the product notes I provided. The audience is open-source users, and the purpose is to help them understand ToolKnit 2.3's local-first and AI Agent capabilities and want to try it. Save into this workspace's toolknit-output folder. Resolve the output directory to an absolute path first and do not overwrite existing outputs. Report the outline.md, outline.json, manifest.json paths and missing-info list. ``` ```text diff --git a/toolknit-desktop/cli/lib/mcp-server.mjs b/toolknit-desktop/cli/lib/mcp-server.mjs index c5f11c4..6808e8f 100644 --- a/toolknit-desktop/cli/lib/mcp-server.mjs +++ b/toolknit-desktop/cli/lib/mcp-server.mjs @@ -1,7 +1,7 @@ import { errorPayload, ToolKnitError } from './errors.mjs'; import { executeTool, listTools } from './tool-registry.mjs'; -const SERVER_INFO = Object.freeze({ name: 'toolknit', version: '2.1.1' }); +const SERVER_INFO = Object.freeze({ name: 'toolknit', version: '2.3.0' }); const SUPPORTED_PROTOCOLS = new Set(['2024-11-05', '2025-03-26', '2025-06-18']); function response(id, result) { diff --git a/toolknit-desktop/cli/lib/transcription-runtime.mjs b/toolknit-desktop/cli/lib/transcription-runtime.mjs index 180d698..5d18116 100644 --- a/toolknit-desktop/cli/lib/transcription-runtime.mjs +++ b/toolknit-desktop/cli/lib/transcription-runtime.mjs @@ -9,6 +9,7 @@ import { fileURLToPath } from 'node:url'; import { compactFfmpegError, resolveFfmpeg, runFfmpeg } from './ffmpeg-runtime.mjs'; import { cancellationError, isCancellationError, ToolKnitError, throwIfAborted } from './errors.mjs'; import { isPlaceholderAiApiKey, requestAiCompletion } from './core/ai-provider-core.js'; +import { simplifyChineseText } from './core/teleprompter-core.js'; const CLI_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); const PROJECT_ROOT = path.resolve(CLI_ROOT, '..'); @@ -331,6 +332,12 @@ export async function transcribeMedia({ input_path, output_dir, language = 'auto throwIfAborted(options.signal); const sources = { json: path.join(temporary, 'transcript.json'), srt: path.join(temporary, 'transcript.srt'), txt: path.join(temporary, 'transcript.txt') }; if (!await regularFile(sources.json) || !await regularFile(sources.srt) || !await regularFile(sources.txt)) throw new ToolKnitError('PROCESSING_FAILED', 'The transcription engine did not create every expected output.'); + // Whisper sometimes answers in traditional characters; publish simplified. + for (const filePath of [sources.json, sources.srt, sources.txt]) { + const content = await readFile(filePath, 'utf8'); + const simplified = simplifyChineseText(content); + if (simplified !== content) await writeFile(filePath, simplified, 'utf8'); + } report(options, 94, 'Publishing transcription results.'); const stem = safeStem(input); let suffix = 0; diff --git a/toolknit-desktop/cli/npm-shrinkwrap.json b/toolknit-desktop/cli/npm-shrinkwrap.json index b10cbb9..beaa54e 100644 --- a/toolknit-desktop/cli/npm-shrinkwrap.json +++ b/toolknit-desktop/cli/npm-shrinkwrap.json @@ -1,12 +1,12 @@ { "name": "@toolknit/cli", - "version": "2.1.1", + "version": "2.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@toolknit/cli", - "version": "2.1.1", + "version": "2.3.0", "license": "Apache-2.0", "dependencies": { "@napi-rs/canvas": "^1.0.1", diff --git a/toolknit-desktop/cli/package.json b/toolknit-desktop/cli/package.json index ca58356..985a7db 100644 --- a/toolknit-desktop/cli/package.json +++ b/toolknit-desktop/cli/package.json @@ -1,6 +1,6 @@ { "name": "@toolknit/cli", - "version": "2.1.1", + "version": "2.3.0", "license": "Apache-2.0", "description": "Local-first file processing CLI and MCP server for ToolKnit", "type": "module", diff --git a/toolknit-desktop/cli/toolknit.mjs b/toolknit-desktop/cli/toolknit.mjs index c9d23d1..abbe611 100644 --- a/toolknit-desktop/cli/toolknit.mjs +++ b/toolknit-desktop/cli/toolknit.mjs @@ -41,7 +41,7 @@ import { editAiTableProject, generateAiTableProject, inspectAiTableProjectFile, import { installTranscriptionModel, listTranscriptionModels, setCurrentTranscriptionModel, transcribeMedia } from './lib/transcription-runtime.mjs'; import { TaskRunner } from './lib/shared/task-runtime.mjs'; -const VERSION = '2.1.1'; +const VERSION = '2.3.0'; const CLI_ABORT_CONTROLLER = new AbortController(); let CLI_SIGNAL_COUNT = 0; diff --git a/toolknit-desktop/docs/agent-guide.en.md b/toolknit-desktop/docs/agent-guide.en.md index c124427..8d3927a 100644 --- a/toolknit-desktop/docs/agent-guide.en.md +++ b/toolknit-desktop/docs/agent-guide.en.md @@ -163,7 +163,7 @@ Call ToolKnit MCP's toolknit_ppt_to_image to export slides 1 through 3 of this p When the user asks “make a PPT outline from these notes” or “plan an 8-slide talk,” the Agent should call `toolknit_ppt_outline`. This tool does not read PPTX and does not generate PPTX. It generates `outline.md`, `outline.json`, and `manifest.json` from the supplied text. If the source notes come from project files, read and summarize the text first, then pass the concise brief as `prompt`. Never put API keys in the prompt. ```text -Call ToolKnit MCP's toolknit_ppt_outline to generate an 8-slide Chinese PPT outline from the product notes I provided. The audience is open-source users, and the purpose is to help them understand ToolKnit 2.0's local-first and AI Agent capabilities and want to try it. Save into this workspace's toolknit-output folder. Resolve the output directory to an absolute path first and do not overwrite existing outputs. Report the outline.md, outline.json, manifest.json paths and missing-info list. +Call ToolKnit MCP's toolknit_ppt_outline to generate an 8-slide Chinese PPT outline from the product notes I provided. The audience is open-source users, and the purpose is to help them understand ToolKnit 2.3's local-first and AI Agent capabilities and want to try it. Save into this workspace's toolknit-output folder. Resolve the output directory to an absolute path first and do not overwrite existing outputs. Report the outline.md, outline.json, manifest.json paths and missing-info list. ``` ```text diff --git a/toolknit-desktop/docs/cli-agent.md b/toolknit-desktop/docs/cli-agent.md index 25f006f..10fdd6b 100644 --- a/toolknit-desktop/docs/cli-agent.md +++ b/toolknit-desktop/docs/cli-agent.md @@ -1,6 +1,6 @@ # ToolKnit CLI and IDE Agent -ToolKnit Desktop and `@toolknit/cli` are separate v2.1 deliverables. The CLI runs file operations directly and never starts, drives, or depends on the desktop UI. +ToolKnit Desktop and `@toolknit/cli` are separate v2.3 deliverables. The CLI runs file operations directly and never starts, drives, or depends on the desktop UI. ## Installation and checks @@ -21,7 +21,7 @@ For a local release archive, install with npm's optional network checks disabled ```powershell npm pack .\cli -npm install --global --no-audit --no-fund --prefer-offline .\toolknit-cli-2.1.1.tgz +npm install --global --no-audit --no-fund --prefer-offline .\toolknit-cli-2.3.0.tgz ``` ## Command help @@ -154,13 +154,13 @@ AI table publication is atomic across the export, editable project, preview, and ## Planned AI polish contract -AI text polish is not registered as a CLI command or MCP tool in current v2.1. Its future interface will accept one bounded UTF-8 text input, an explicit style instruction, and a separately configured provider credential; it will return polished text only and never write a file by default. It will report `analyze` and `polish` phases, reject missing credentials, inputs above 12,000 UTF-16 code units, provider timeouts, malformed direction data, malformed text responses, and responses above 30,000 characters. +AI text polish is not registered as a CLI command or MCP tool in current v2.3. Its future interface will accept one bounded UTF-8 text input, an explicit style instruction, and a separately configured provider credential; it will return polished text only and never write a file by default. It will report `analyze` and `polish` phases, reject missing credentials, inputs above 12,000 UTF-16 code units, provider timeouts, malformed direction data, malformed text responses, and responses above 30,000 characters. The desktop application may offer provider-suggested styles, but a future headless caller must supply the chosen style explicitly. It must not read the desktop application's local storage or expose provider error bodies, prompts, API keys, or text content in diagnostics. ## Planned AI translation contract -AI translation is not registered as a CLI command or MCP tool in current v2.1. Its future interface will accept one bounded UTF-8 text input, an explicit target language, and a separately configured provider credential; it will return translated text plus optional aligned sentence pairs, without writing a file by default. It will report `translate` and `validate` phases, reject missing credentials, inputs above 12,000 UTF-16 code units, unknown target languages, provider timeouts, malformed responses, and responses above 60,000 characters. +AI translation is not registered as a CLI command or MCP tool in current v2.3. Its future interface will accept one bounded UTF-8 text input, an explicit target language, and a separately configured provider credential; it will return translated text plus optional aligned sentence pairs, without writing a file by default. It will report `translate` and `validate` phases, reject missing credentials, inputs above 12,000 UTF-16 code units, unknown target languages, provider timeouts, malformed responses, and responses above 60,000 characters. A later headless implementation must treat the caller's original input as authoritative: model-supplied source sentence fields may be used only after equivalence validation and can never replace the supplied source. It must not infer a Latin-script source language as English, read desktop-local credentials, or include prompts, API keys, or provider error bodies in logs. @@ -176,7 +176,7 @@ The source must be a non-symbolic regular file below 20 MB and 40 megapixels. Im ## Planned image conversion contract -Image format conversion is being hardened for a later CLI/MCP release. It is **not** registered as a CLI command or MCP tool in the current v2.1 package, so an IDE Agent must not claim it is available yet. +Image format conversion is being hardened for a later CLI/MCP release. It is **not** registered as a CLI command or MCP tool in the current v2.3 package, so an IDE Agent must not claim it is available yet. The future interface will accept one to 100 local JPG/JPEG, PNG, WebP, BMP, or GIF files, a validated target format, and one explicit output directory. It will reject non-regular files, files over 20 MB, images over 40 megapixels, unsupported target formats, duplicate inputs, concurrent conversion jobs, and failed writes. It will never overwrite an existing output and will report per-file success or failure, output paths, progress, cancellation, and a nonzero processing error when no file succeeds. @@ -184,13 +184,13 @@ The current desktop encoder preserves image dimensions. JPEG output is RGB becau ## Planned image compression contract -Image compression is also **not** registered as a CLI command or MCP tool in the current v2.1 package. The future interface will accept one to 100 local JPG/JPEG, PNG, or WebP files, a `high`, `medium`, or `low` quality policy, and one explicit output directory. It will apply the same 20 MB per-file and 40-megapixel limits as image conversion, run one conversion job at a time, and report each file's result without overwriting an existing output. +Image compression is also **not** registered as a CLI command or MCP tool in the current v2.3 package. The future interface will accept one to 100 local JPG/JPEG, PNG, or WebP files, a `high`, `medium`, or `low` quality policy, and one explicit output directory. It will apply the same 20 MB per-file and 40-megapixel limits as image conversion, run one conversion job at a time, and report each file's result without overwriting an existing output. An output is published only when it is strictly smaller than its source. BMP and GIF are intentionally outside the contract: the bundled encoder cannot safely provide a smaller BMP, and GIF handling can discard animation frames. JPEG and PNG quality policies affect their encoders. WebP is explicitly lossless in the desktop implementation, so the selected quality policy has no effect on WebP files and clients must report it as lossless optimization rather than imply lossy quality control. ## Planned icon generator contract -The icon generator is not registered as a CLI command or MCP tool in current v2.1. Its future interface will accept one local PNG/JPEG/WebP image and one explicit ZIP output path. It will reject non-regular files, input files above 20 MB, images above 20 megapixels, generated archives above 32 MB, canceled jobs, and unsafe or pre-existing output paths. A successful archive contains fixed-size PNG icons, `icon.ico`, `favicon.ico`, and an SVG wrapper; progress covers decoding, raster generation, archive creation, and atomic publication. +The icon generator is not registered as a CLI command or MCP tool in current v2.3. Its future interface will accept one local PNG/JPEG/WebP image and one explicit ZIP output path. It will reject non-regular files, input files above 20 MB, images above 20 megapixels, generated archives above 32 MB, canceled jobs, and unsafe or pre-existing output paths. A successful archive contains fixed-size PNG icons, `icon.ico`, `favicon.ico`, and an SVG wrapper; progress covers decoding, raster generation, archive creation, and atomic publication. It intentionally excludes BMP and GIF sources because static icon output cannot preserve GIF animation and these formats do not provide a useful, deterministic headless contract. It must never reuse a desktop-local provider key or depend on the desktop application being visible. @@ -234,7 +234,7 @@ Inputs above 1,000,000 UTF-16 code units, files above the corresponding UTF-8 si ## Planned text formatting contract -Text formatting is not registered as a CLI command or MCP tool in current v2.1. Its future interface will accept one explicit UTF-8 text file or UTF-8 standard input, one declared action, and one explicit UTF-8 output file. It will reject binary or undecodable input, input and output over 1,000,000 UTF-16 code units, more than 100,000 lines for line-oriented actions, unknown actions, unsafe paths, same-path writes, and unapproved output overwrites. Output is written to a temporary file and atomically published only after transformation succeeds. +Text formatting is not registered as a CLI command or MCP tool in current v2.3. Its future interface will accept one explicit UTF-8 text file or UTF-8 standard input, one declared action, and one explicit UTF-8 output file. It will reject binary or undecodable input, input and output over 1,000,000 UTF-16 code units, more than 100,000 lines for line-oriented actions, unknown actions, unsafe paths, same-path writes, and unapproved output overwrites. Output is written to a temporary file and atomically published only after transformation succeeds. The action set is `uppercase`, `lowercase`, `titlecase`, `capitalize`, `trim-spaces`, `trim-lines`, `remove-empty-lines`, `remove-duplicate-lines`, `sort-asc`, `sort-desc`, `add-line-numbers`, `remove-line-numbers`, `reverse-lines`, `reverse-text`, `to-half-width`, and `to-full-width`. Sorting uses the fixed `zh-Hans-u-co-pinyin` collator with numeric comparison. `remove-line-numbers` only removes an initial sequence of at least two consecutive line numbers beginning at 1, preventing an ordinary year or numeric heading from being silently deleted. A headless caller must receive structured progress and errors without echoing text content into logs. diff --git a/toolknit-desktop/index.html b/toolknit-desktop/index.html index 2cc7d22..94da875 100644 --- a/toolknit-desktop/index.html +++ b/toolknit-desktop/index.html @@ -6,6 +6,13 @@ ToolKnit Desktop + + + + + + +