Skip to content

Releases: A-cat-with-carrots/TypeAnything

v0.8.1 — issues #10 #11 #13 #14 一并修

06 Jun 04:26

Choose a tag to compare

4 个 issue 一次性修。

#11 症状 2 — chip 选风格无需 key 也能保存

之前每次保存都过 LLM classify。装完未配 key 必失败 → lang.txt 残留无前缀裸值。

  • 每个 chip 加 data-category="A|B|C|D":lang→A,clique/medium/persona→B,cross chip 单独 C 或 D
  • 点 chip → input 暂存 category。save 直接写 X:name完全跳过 LLM
  • 自由输入仍走 classify。失败保持 lang.txt 旧值,不假默认

#10 — 小屏仍超 84px

v0.8.0 用了 SM_CXFULLSCREEN/SM_CYFULLSCREEN + 钳客户区,漏算非客户区(外框比客户区大 14×39px)+ 用错工作区源。

  • 改用 SystemParametersInfo(SPI_GETWORKAREA) 取真实工作区
  • frameless 设置完后再 GetWindowRect外框实际尺寸,比工作区大就缩
  • 位置溢出 → 滑回 workarea 边界

#13 — Win+Space 装完看不到 TypeAnything

原因:installer 提权运行,写的 HKCU 是管理员账户的 hive,不是当前交互用户。HKLM CTF\TIP 注册了系统级但用户输入法列表没加。

  • ta-settings 加 --register-ime 一次性 CLI flag:LoadLibrary("input.dll") + InstallLayoutOrTip("0804:{TIP-CLSID}{LANG-PROFILE-GUID}", 0)
  • installer 末尾用 CreateProcessWithTokenW(shell-user-token) 调起来,写入正确的 HKCU
  • Win+Space 应立即看到 TypeAnything

#14 — 候选窗塌成一个点

weasel.yaml(候选窗样式母本)没部署。WeaselDeployer 缺母本编不出 build\weasel.yaml,高 DPI fallback 把窗算 0px 不可见。

  • 新增 IDR_DATA_WEASEL_YAML 资源(18 KB)
  • 部署到 <install_dir>\data\weasel.yaml 与其他 base data 一起
  • WeaselDeployer 现在能正常 merge → build\weasel.yaml 生成 → 候选窗可见

其它

DisplayVersion 0.8.0 → 0.8.1。

下载

ta-installer.exe(16.01 MB)覆盖装。升级覆盖装会触发 pending-on-reboot(v0.7.x 起每次都这样),按提示重启即可。

v0.8.0 — 稳定性专项(issues #10 #11 #12 + 错误文案人话化)

04 Jun 16:08

Choose a tag to compare

3 个 issue 一次性修,外加 UX 政策调整。

1. issue #11 — 未配 API key 时 Enter 翻译静默失败

症状:装完默认 keyring.json 空 + schema.yaml api_key=""。用户打中文按 Enter,什么都不发生。后台 log 显示 http_status=0/err 但 UI 零反馈。

:processor.cc 检测到 api_key 空时,直接 ShellExecute ta-settings.exe --page model 弹出「模型配置」面板(从注册表 HKLM\Software\WeaselRoot 读路径)。

同时,翻译路径返回 401 / 403 时,同样弹该面板(key 失效场景)。

2. issue #10 — 设置面板在小屏 (1536×864 / 125%) 看不全 + 无法 resize

  • 默认尺寸不再固定 700×786,按屏幕尺寸钳制:min(700, screen_w - 80) × min(786, screen_h - 80),下限 480×520
  • min size 560×600 → 480×520(小屏也能缩到适配)
  • frameless resize 边框 6px → 8px(高 DPI 屏幕边缘更易抓)

3. issue #12 — 覆盖装 DLL 被锁 → pending-on-reboot 但 UI 报 success

  • installer C++ 端:检测到 reboot_needed=true 时,emit needs_reboot:true JSON 到 UI(不走 PushStatus)
  • 新增 nativeRebootNow binding:AdjustTokenPrivilegesSE_SHUTDOWN_NAMEExitWindowsEx(EWX_REBOOT | EWX_RESTARTAPPS),重启后自动恢复打开的应用
  • UI 新增 #page-done-reboot 页:「装好了 — 但需要重启电脑生效」+ 两个按钮(稍后重启 / 立即重启)
  • 清装路径不变,仍走原 done 页

4. UX 政策 — 删除「查看日志」按钮 + 错误文案改人话

为什么:log 是开发者制品。把按钮塞给用户 = 让用户当 debugger。

  • humanizeClassifyError() 翻译表:
    • API key / 未配置 → 「请先在『模型配置』填 API key」
    • 401 / 403 → 「API key 无效或没有权限,请检查」
    • 429 → 「调用过于频繁,请稍后再试」
    • 5xx → 「AI 服务端故障,请稍后再试」
    • 无法解析 / parse → 「模型回复格式不兼容,建议换 DeepSeek / OpenAI」
    • 网络 / network → 「网络异常,请检查代理 / VPN 后重试」
    • fallback → 「保存失败:<原文>」
  • 错误 toast 不再带「查看日志」链接

后台 4 路日志(classify / translate / update / install)继续写,作为诊断材料 + 给 issue 附件用,但 UI 不再主动暴露。

其它

DisplayVersion 0.7.11 → 0.8.0。

下载

ta-installer.exe(15.99 MB)覆盖装。注意:本次升级覆盖装可能触发 pending-on-reboot 流程(v0.8.0 才有的功能),完成页会提示是否立即重启。

v0.7.11 — 尺寸再压一行 + 透明滚动槽

04 Jun 01:25

Choose a tag to compare

  • installer 宽 600 → 576(-24px)
  • ta-settings 高 810 → 786(-24px)
  • 灰色滚动条:scrollbar-width thin + track 透明,宽 10 → 8px。Win11 默认灰底槽不再出现

DisplayVersion 0.7.10 → 0.7.11。

下载

ta-installer.exe(15.98 MB)

v0.7.10 — 按钮再多一行底距 + 安装窗体收窄

04 Jun 01:15

Choose a tag to compare

  • 两 app main padding-bottom 44 → 68(+24px ≈ 一行),按钮离底边再远一行
  • 安装窗口宽 640 → 600(-40px),更紧凑

DisplayVersion 0.7.9 → 0.7.10。

下载

ta-installer.exe(15.98 MB)

v0.7.9 — 按钮贴底统一

03 Jun 17:31

Choose a tag to compare

两 app 按钮统一贴底 + 比之前多一行底距。

  • .page flex column + min-height 100% → actions 永远贴底
  • .actions { margin-top: auto; padding-top: 20px }
  • main bottom-padding 44px(installer 原 20 / ta-settings 原 28 → 统一 44)

DisplayVersion 0.7.8 → 0.7.9。

下载

ta-installer.exe(15.98 MB)

v0.7.8 — 安装窗口高度压缩

03 Jun 17:15

Choose a tag to compare

改了什么

  • 安装窗口 640×420 → 640×380(少一行)
  • 「取消 / 开始安装」按钮固定贴底(margin-top: auto),不再卡在中间留大片空白

DisplayVersion 0.7.7 → 0.7.8。

下载

ta-installer.exe(15.98 MB)

v0.7.7 — 修复 frameless 窗口拖拽 + 布局

03 Jun 17:04

Choose a tag to compare

修了 v0.7.6 引入的 bug

标题栏拖不动

v0.7.6 frameless 化之后窗口拖不动了。原因:WebView2 host 在父窗口里放了一个 child HWND,所有鼠标事件先经过 child,OS 的 WM_NCHITTEST 根本到不了我们 subclass 的 HTCAPTION 分支。

修:

  • C++ 新加 nativeStartDrag binding:ReleaseCapture + SendMessage(WM_NCLBUTTONDOWN, HTCAPTION) 直接踢 OS 进入原生 drag loop
  • JS 在 .titlebar mousedown 时(跳过 .window-controls / input / button)调用该 binding

两个 app 都修。

布局微调

  • installer titlebar 删掉「完成」/「安装中」徽章——和正文 H1 重复
  • window-controls 紧贴窗口右边缘(与 Win11 原生一致)
  • pure-toggle / brand 用 margin-right 单独控制留白

DisplayVersion 0.7.6 → 0.7.7。

下载

ta-installer.exe(15.98 MB)覆盖装即可。

v0.7.6 — frameless 窗口(现代风)

03 Jun 16:42

Choose a tag to compare

改了什么

标题栏 ↔ 现代 frameless 设计

仿 Claude / Spotify / VSCode:去掉 OS 自带的黑/灰标题条,HTML 自绘 titlebar 占满顶部。

改动

  • WS_CAPTION + WS_SYSMENU(无 OS 标题条 + 无系统菜单)
  • 保留 WS_THICKFRAME(DWM 阴影 + 圆角 + Aero Snap 全在)
  • WM_NCCALCSIZE 返 0:client 占满整个窗
  • WM_NCHITTEST subclass:顶部 42px 是 HTCAPTION(拖拽),右上 100px 是 HTCLIENT(让 HTML 按钮收点击),边缘 6px 是 HTLEFT/HTTOP/...(resize)
  • HTML 右上角加 2 个按钮:min(细横线)+ close(细 X),hover 用 GitHub 红

两个应用都改

  • ta-installer.exe(安装向导)
  • ta-settings.exe(托盘菜单的「切换风格」/「模型配置」面板)

配套

DisplayVersion 0.7.5 → 0.7.6。

下载

ta-installer.exe(15.98 MB)

升级方式:双击 ta-installer.exe 覆盖装。

v0.7.5 — 标题栏配色修正

03 Jun 16:09

Choose a tag to compare

改了什么

标题栏不再是黑色 + 左上角图标隐藏

v0.7.3 把 body 切到蓝白配色,但 ApplyMica 还在强开 DWMWA_USE_IMMERSIVE_DARK_MODE=TRUE,导致 白色窗体上面盖一条黑色 title bar,视觉断裂。

修:强制 dark=FALSE,让 Win11 caption 跟 body 一致变浅色。

顺手把 title bar 左上角的小鱼图标也隐了(WS_EX_DLGMODALFRAME + WM_SETICON NULL)—— 已经有 HTML titlebar 显示「神仙鱼 TypeAnything」品牌,OS 那个小图标是重复噪音。任务栏图标不受影响,仍是鱼。

同步改了:

  • ta-installer(安装向导)
  • ta-settings(托盘菜单的「切换风格」/「模型配置」面板)

顺带修了 v0.7.0 起的暗 bug

DisplayVersion 之前锁在 0.6.5 进注册表,v0.7.0 ~ v0.7.4 装完检查更新时都误报「有新版本」(v0.7.4 已修,此版改为 0.7.5)。

下载

ta-installer.exe(15.97 MB)

升级方式:双击 ta-installer.exe 覆盖装。

v0.7.4 — 可观测性 + 托盘光标 + 安装器蓝白

03 Jun 14:34

Choose a tag to compare

改了什么

1. 可观测性(4 个日志文件)

issue #2(type) 报错让我们意识到:报错信息谜语 = 我们也修不动。这版加了 4 路日志,所有日志只记 host/path/model(绝不记 API key),1 MB 自动 rotate。

日志 路径 触发时机
分类 %APPDATA%\Rime\typeanything_classify.log 切换风格保存
翻译 %APPDATA%\Rime\typeanything_translate.log Enter 落地
更新检查 %APPDATA%\Rime\typeanything_update.log 托盘点检查更新
安装 <install_dir>\typeanything_install.log ta-installer.exe 全程

统一格式:

[2026-06-03 21:23:45] CLASSIFY target="English"
  host=api.deepseek.com path=/v1/chat/completions model=deepseek-chat
  http_status=200
  response[0..500]={"id":"...","choices":[{"message":{"content":"A"}}]...}
  parsed="A"
  result=A
---

UX 同步升级

  • 分类失败 toast 加 「查看日志」 链接 → notepad 打开
  • 检查更新失败 dialog 变 MB_YESNO → 「查看日志」 打开
  • 安装失败 dialog 直接贴 最后 30 行日志 + 日志绝对路径,方便附到 issue

2. issue #2 鲁棒性升级(分类失败修复)

  • Anthropic 响应 shape 兼容"content":[{"type":"text","text":"A"}] 也能正确提取(之前误抓 "type" 字段名 → (type) 报错)
  • max_tokens 4 → 16:4 token 太严,verbose 模型输出 Type: A / {"type":"A"} 中途被截断
  • classify parser 反向扫:从末尾找 A/B/C/D,避免被 Answer / Category / Because 首字母误匹配
  • CLASSIFY 提示词加严:明确禁止 JSON / 引号 / Type: / Category: 前缀

3. 托盘菜单光标 ↔ 双向箭头(v0.7.3 没修干净的)

v0.7.3 修了 TRAYICON_CLASS 的 hCursor,但 TrackPopupMenu 真正的 owner 是 WEASEL_IPC_WINDOWServerImpl)。WS_DISABLED + WS_EX_TRANSPARENT 风格 + 边界 hit-test 仍会产生 resize 光标。

修:ServerImplWM_SETCURSOR handler 强制 IDC_ARROW,无视 hit-test 结果。

4. 安装包 UI 跟随主程序换蓝白

ta-installer 自己的 WebView2 安装向导从 Claude 暖灰咖换成 ta-settings 一致的 GitHub 蓝白:#FAFBFC 底 / #0969DA accent / #1F2328 主文字。

5. 安装管线 33 步全程验证

冷装失败之前是黑盒——installer 显示 ✓ 但用户实际看不到候选框。这版每步带验证:

  • WeaselRoot registry 写后读回比对
  • 每个二进制 + UI + base data + opencc 文件 file_size > 0 校验
  • default.custom.yaml 写后 grep schema: typeanything 确认 schema_list 钉对
  • TIP CLSID + LanguageProfile 子键 probe
  • WeaselDeployer 用 PID + exit code 跑(之前 fire-and-forget)
  • typeanything.prism.bin 存在 + freshness 检查
  • WeaselServer 启动 3 秒后 FindWindowW(L"WeaselServerWnd") liveness 探测

任一步失败 → 弹窗显示最后 30 行日志 + 日志路径。

6. 修了 v0.7.0 起的暗 bug

DisplayVersion 锁在 0.6.5。v0.7.0 / 0.7.1 / 0.7.2 / 0.7.3 装完都写 0.6.5 进注册表,导致检查更新比对时 0.6.5 < 0.7.x → 总报"有新版本"。这版改为 0.7.4

下载

ta-installer.exe(15.97 MB)

升级方式:双击新 ta-installer.exe,覆盖装即可。