Commit Graph
68 Commits
Author SHA1 Message Date
yenharvey 4a076d4506 chore(release): 开发版 0.3.2-dev 2026-10-22 18:43:31 +08:00
yenharvey a5126ac090 chore(release): 0.3.1 2026-10-22 17:48:52 +08:00
yenharvey 58d5d4b2f7 chore(release): 开发版 0.3.1-dev 2026-10-22 16:31:42 +08:00
yenharvey 393656df5e chore(release): 0.3.0
产品数据升到 data-v8:并入青简词库后的 dict.qj、补充词库 dicts/general.qj,去掉用不上的含章·知微。
2026-10-22 15:33:17 +08:00
yenharvey b2f0052a4c fix(windows): 切到英语键盘布局时收起悬浮状态条
原来监听的 ITfActiveLanguageProfileNotifySink 只报文字服务,跨语言切到纯键盘布局(ENG)时不来,状态条一直留着。
改用 ITfInputProcessorProfileActivationSink,别的输入法或键盘布局被激活都发 ImeSwitched。

Closes #722
2026-10-21 10:05:10 +08:00
bfxh c7027872fe ci: 加 rustdoc 文档门禁,并修掉它报出的文档断链与裸标签 (#738)
RUSTDOCFLAGS=-D warnings 跑 cargo doc,core 与 windows job 各一处;修掉 main 上公开文档链私有项、断链、裸 HTML 标签与跨 cfg 断链。
2026-10-21 09:30:14 +08:00
bfxh fcad240c62 fix(windows): 应用被强行结束后收掉它的会话,候选窗不再残留 (#587)
应用被任务管理器结束或崩溃时 DLL 来不及发 CloseSession,候选窗一直挂到点别处才消失;连接断开后由 Server 收掉这条连接开过的会话。
2026-10-16 14:29:39 +08:00
Chao Song cc08b48c3c feat(windows): 按需云联想快捷键与自动联想开关 (#564)
组句中按 Ctrl+Alt+J 手动请求云候选,结果置前;可关掉自动联想、调停键等待和最短间隔,新旧设置都能改。

Closes #177
2026-10-15 19:24:20 +08:00
yenharvey f8b1167434 chore: 合并 main 到 refactor/render-engine
- 菜单编号:macOS 设置 5、符号面板 6;Windows 符号面板 7、旧版设置 8
- Linux 打包带上设置程序与 hicolor 八档图标
- 用户文档里的设置指路改成新设置的页名,内容取 main 的
2026-10-15 15:20:10 +08:00
yenharvey 686cdbfbb7 chore(release): 开发版 0.2.2-dev 2026-10-14 09:58:09 +08:00
yenharvey f65ea74c9d chore(release): 0.2.1 2026-10-14 09:56:34 +08:00
yenharvey 49a5cd8523 feat(windows): 符号面板,按 ↑ 或悬浮条「符」、任务栏右键菜单打开
- 这一版原生画:单独的分层窗口,Direct2D 绑在合成器的 DIB 上,GDI 画不出彩色 emoji;下一版换 qingjian-render
- 按键与鼠标同 macOS;Server 侧状态在 dispatch/panel,格子复用 Core 的 Grid
- 没在组句时打开:Frame::symbol_panel 让空缓冲不算空帧,IndicatorState::symbol_panel 随 ModeSync 让 DLL 进组句态吃键
- 每行几格挪进 Core(PanelSection::columns),mac 与 Windows 共用
- 老 DLL(协议 < 9)不认识颜文字 / 符号候选,发给它时降级成 Emoji,免得整条帧解析失败
2026-10-13 19:18:12 +08:00
Metal 1d60399eb5 fix(tsf): 屏幕外假矩形退回鼠标定位 (#585) 2026-10-13 14:00:20 +08:00
yifayun 4b1db1c9a6 fix(tsf): 没在组句的数字在 Test 阶段交还应用 (#345)
没在组句时敲的数字先问 Server,Passthrough 时 OnTestKeyDown 就不吃,由应用原生收键,不再经 InsertTextAtSelection 插入。修好网页每格一个输入框的验证码里数字重复(123 → 112233),以及只报 IS_NUMERIC_PASSWORD 的数字密码框倒序;注音等要 Consumed 的数字照旧。

Closes #296
Closes #465
Closes #504
2026-10-13 10:51:18 +08:00
FAR 271366836c feat(windows): 标点切换快捷键、多组翻页键与系统 Ctrl + Space 开关 (#309)
[shortcut] toggle_punctuation(如 ctrl+.)切换当前中英模式的全 / 半角标点,缺省关;[shortcut] extra_page_keys 可同时启用 [] ,. -= 几组翻页键,缺省空。
设置的中英切换键里加「Ctrl + Space(系统)」,读写 Windows 当前用户的输入法 / 非输入法切换热键,也影响其他简体中文输入法。
2026-10-12 19:20:18 +08:00
FAR 2eafe07718 feat(windows): 可选默认英文与按应用记住中英模式 (#308)
新增 [general] default_english 与 remember_mode_per_app,缺省都关,保持所有应用共用一份中英模式;打开后新应用从指定模式开始、切回应用时恢复它自己的中英状态(只记在本次 Server 运行期间)。
2026-10-12 19:10:07 +08:00
yenharvey 2442be7e4d test(tsf): 锚点的两个测试共用全局行高,加锁排队
并行跑时一个测试记下的行高会被另一个读到,CI 上时好时坏。
2026-10-12 17:11:36 +08:00
toolsfox d062760449 fix(windows): 候选窗锚点折叠到组句起点,残片矩形补回整行 (#259)
微信等应用对非空范围的 GetTextExt 只回终点处一像素残片,候选窗逐键上下跳、贴下方时盖住输入行。改为量组句起点(同小狼毫),量不出退整段、再退鼠标;高度不足的残片按上次正常行高补回整行。每次取锚记一行日志。

Refs #258
2026-10-12 14:43:27 +08:00
bfxh ccfd2fdf4a fix(windows): 拉不起 Server 时不再吞拼音字母,开机等 Server 的窗口期不再死键盘 (#251)
断连时只在自启拉起的宽限期(3 秒)内吞中文模式的字母;宿主拉不起 Server(提权应用、登录界面、找不到 exe)或宽限过了还没连上,字母原样交给应用,连上后恢复。
2026-10-12 14:43:15 +08:00
yenharvey c834b31d60 feat(windows): 任务栏「中 / 英」右键菜单加「旧版设置…」
- 与 macOS 输入法菜单一致:新设置程序打不开时,回退入口在平时点「设置…」的同一个菜单里
- 新增 IndicatorCommand::OpenLegacySettings,Server 起同目录的 qingjian-settings-legacy.exe;下个版本删旧版时一并删
2026-10-12 10:29:38 +08:00
yenharvey 4a3e963dfe chore(release): 开发版 0.2.1-dev 2026-10-10 14:16:07 +08:00
yenharvey 7eb7b74c37 chore(release): 0.2.0 2026-10-10 14:09:48 +08:00
yenharvey 4955ce0ef1 fix(windows): 应用图标加深绿圆角底,16px 单独画像素版
原图细长透明,任务栏 16px 只剩两根细绿条,深色任务栏上看不清。
2026-10-10 11:19:50 +08:00
yenharvey 402986a819 fix(windows): 不给英文候选时英文模式的字母原样交给应用
英文模式(english_candidates 关或应用在 english_candidates_off 名单里)与 Caps 下,
没在组句的字母原先也在 OnTestKeyDown 吃掉、再由输入法插入文本;Photoshop 画布没有文本框,
应用收不到按键,W / H / V 等单键快捷键全部失灵。
- InputSettings 新增 english_candidates,Server 按会话的 exe 名算好下发(老 Server 不带按给)
- DLL 据此不吃这些字母;组句中照旧
- Photoshop.exe 进 Windows 缺省名单:英文候选开着时字母会进组句,同样收不到快捷键
2026-10-10 10:50:53 +08:00
yenharvey 5fcba715b5 feat(windows): 鼠标点候选窗口上屏候选或它的译词
候选窗只在候选与译词的点击区域收鼠标,其余照旧穿透,按下不抢焦点;点中的目标交给 Router 按数字键 / 译词键同一套上屏。
Server 写不了文档,上屏的字挂在焦点会话上,DLL 下一拍轮询随 Update.commit 取走写进去,赶在轮询前来的键把它接在结果前面。
协议升到 8(本周期第一次升,Linux 插件一起改);更老的 DLL 读不到 commit,不收它们的点击。

Closes #199
Closes #233
2026-10-09 20:54:42 +08:00
yenharvey 4cc9b40c8d chore(release): 切回 0.1.5-dev 开发版本 2026-09-29 14:13:58 +08:00
yenharvey b6c68352a5 chore(release): 合并主线并准备 0.1.5-beta.1
合并三平台共用发布流程、更新检查和最新输入改动,接入含章模型的数据打包与安装路径。保留已确认的 beta 更新日志和网盘入口,修复未发布节阻断发布索引的问题。
2026-09-29 12:31:24 +08:00
yenharvey c8c64cfb83 chore(release): 版本推到 0.1.5-dev 2026-09-24 11:11:38 +08:00
yenharvey f7abaefcb1 chore(release): 0.1.4 2026-09-24 11:10:46 +08:00
yenharvey ae6216bd9a chore(release): 撤回 0.1.4,版本回到 0.1.4-dev 2026-09-24 10:33:42 +08:00
yenharvey cb7c0eab6d chore(release): 版本推到 0.1.5-dev 2026-09-24 10:18:40 +08:00
yenharvey 1ba7db61df chore(release): 0.1.4 2026-09-24 10:16:40 +08:00
yenharvey 795a0c70d2 feat(update): 检查更新(只提示)与版本索引的 ed25519 签名
新 crate qingjian-update:读官网的 releases.json、验签名、按平台 / CPU / 渠道挑比当前新的版本,结果写 update.json;
[update] check / channel 配置;macOS 输入法菜单、Windows 任务栏「中 / 英」图标的右键菜单与两端「关于」页提示,
点开下载页,不下载不安装;-dev 本地包不检查(QINGJIAN_UPDATE_VERSION 可顶替版本号来测)。
发版侧 tools/release-sign 给索引签名,release.yml 没配 QINGJIAN_INDEX_SIGNING_KEY 时门禁失败。设计见 docs/design/update.md。

macOS 菜单里「有新版本」这一行必须放在普通条目那一组:放在最后一条分隔线之后时 IMK 每次按键都新建会话、打不了字
(对照构建逐个验过,见 update.md)。
2026-09-23 16:56:17 +08:00
yenharvey 464c2599cd fix(windows): 中英模式所有应用共用一份,切换键可多选并适配系统 Ctrl+Space
- 中英模式存在 Server、所有应用共用一份(与搜狗一致):用户在某个应用里切了用 ModeChanged 报上去,
  激活、线程得到焦点、轮询时用 SyncMode 取回跟上;悬浮状态条上点「中 / 英」直接改这一份。
  之前各应用各记一份,后台线程激活时报的模式会盖掉前台的,新打开的程序偶尔一打开就是英文。
- 只在前台窗口属于本进程时轮询:后台进程会一直以为自己在前台,它们来取模式会让悬浮条在切走输入法后
  又冒出来;真在前台的应用有时收不到「得到焦点」,启动后悬浮条要等打开设置程序才出现。
- 切换键改成勾选、可多选:单击 Shift(缺省)/ 单击 Ctrl / Ctrl+Alt+Space,配置写成列表,老配置的单个值照读,
  ctrl+space 转成 ctrl+alt+space。
- 系统的「输入法/非输入法切换」(缺省 Ctrl+Space)不进勾选项但照微软拼音适配:它翻的输入法开关
  关 = 英文、开 = 中文;我们切模式时把开关写成一致,按一下就切;开关一变作废被截走 Space 的那次「单击 Ctrl」。
- 会话号改用线程 id:TSF 的 client id 各进程都是同样那几个值,不同应用在 Server 那边撞成同一个会话。
- 协议版本保持 7:一个版本周期里只升一次。
- 任务栏点中 / 英触发的 compartment 回调里不再回写转换模式:在它自己的 OnChange 里写会报 0x8000FFFF。
2026-09-23 16:29:51 +08:00
yenharvey 66fb9cea79 fix(windows): 升级 / 卸载时 DLL 不再把刚结束的 Server 拉起来
安装程序结束 Server 后,正在打字的应用里 DLL 连不上会立刻重新拉起它,exe 与 mmap 着的数据文件又被占住,替换时报错误代码 5。
安装与卸载期间持有互斥体 Global\QingjianInstaller,DLL 看到它就不拉;0.1.3 的旧 DLL 不认得它,所以 Server exe 先改名腾位再结束、
并放到最后安装,新 exe 落地前旧 DLL 拉不起任何 Server。
2026-09-23 16:29:11 +08:00
yenharvey 5da1e0797c feat(windows): 任务栏中 / 英图标右键菜单,悬浮条全屏时收起
右键任务栏图标弹出菜单:切中文 / 英文、全角标点、显示或隐藏悬浮条、打开设置;后三项经协议 v7 的 Indicator 消息交给 Server,打勾状态随 ModeSync 下发(UWP 沙箱读不到配置文件)。前台是全屏应用时悬浮条收起,退出全屏后回来。
2026-09-23 12:04:54 +08:00
BROX_Lighters. 0a640894b3 fix(windows): 统一 Tab 与 Shift+Tab 的候选翻页行为 (#160)
组句时 Shift+Tab 一律上一页;中文模式 Tab 没有整句补全时翻到下一页,不再交还应用。与 macOS 一致。
2026-09-18 15:20:05 +08:00
yenharvey d710b10481 fix(windows): Shift 字母进组句的开关下发给 DLL,内置英文模式开关运行中翻转时增删语言栏按钮
shift_letter = "compose" 时没在组句的 Shift+字母之前被 DLL 直接放给应用,Core 收不到,
⇧C 接 pan 出「C盘」只在已经组句时成立;现在随 InputSettings 下发,开着时 DLL 吃掉送 Server。
内置英文模式的中 / 英按钮原来只在激活时按开关登记一次,设置窗口改完要切走再切回输入法才跟上。
2026-09-18 11:15:21 +08:00
yenharvey b0ca582949 feat(windows): 中英切换键可配置,内置英文模式可关,设置由 Server 经协议下发 (#95)
单击 Shift(缺省)/ 单击 Ctrl / Ctrl+Space / 不切换;关掉内置英文模式后固定中文。DLL 不读配置文件,两项随 SessionOpened / ModeSync 下发。

Closes #81
2026-09-18 11:15:21 +08:00
yenharvey 0a12420817 fix(windows): 安装脚本加回 BOM 并改完成页提示,完整性级别改用 read_unaligned
#122 合并后的收尾:iss 的 UTF-8 BOM 被编辑器删了;完成页直接提示注销或重启;TOKEN_MANDATORY_LABEL 从字节缓冲读出来不保证对齐。
2026-09-18 00:05:21 +08:00
YIMING LI 8e16d0fc82 fix(windows): 拼音显示位置生效、DLL 自拉 Server、简拼联想只问整句 (#122)
拼音显示位置的设置随帧下发给 DLL;Server 没起来时 DLL 在 Medium 完整性级别下自己拉起;安装完成页加提示;简拼下云联想只请求整句。
2026-09-18 00:04:22 +08:00
洁白的云朵 e2d78a734d fix(windows): v 模式支持小键盘输入 (#150)
小键盘的数字与运算符键原来解不出字符,DLL 直接放行给应用,v 模式里敲小键盘进不了缓冲区。
2026-09-18 00:02:10 +08:00
ym lee 96820dde4c fix(windows): 按 review 收尾:CI 两处、激活时缺省值盖设置、判键回到原口径
- `ipc_loop.rs` / `pipe.rs`:开会话现在多回一条 `SessionOpened`,期望的条数从 5 改成 6
  (`pipe.rs` 那个是读 6 条、只取其中的 `KeyResult`)
- `protocol_loop.rs`:`EngineClient::open` 改成返回元组之后这个文件没跟着改 ——
  它是 `#![cfg(unix)]`,Windows 上根本编不到,只有 CI 会红
- `Activate`:`connect()` 已经把 Server 下发的设置应用了,紧接着的
  `apply_input_settings(InputSettings::default())` 又把它盖成缺省值,要等下一拍 `SyncMode` 才改回来 ——
  关掉内置英文模式的人每次激活都会先登记上中 / 英按钮、之后也不会撤。缺省值改成只在没连上 Server 时用。
- `eats_key`:字母判定回到原来的口径(组句外 Shift + 大写归应用,V / U / I 例外),
  `push_shifted` / `apply_chinese` 那条属于另一个改动,这个 PR 不带。

另外按 review 去掉了「`-` `=` 由壳自己插入」那个提交:main 上已经有通用机制
(Server 放行没吃掉的按键时由 DLL 自己把字符插进文档),不用为它单开一条路。
2026-09-17 22:22:36 +08:00
ym lee 281c3e1395 feat(windows): 中英切换键可配置,设置由 Server 经协议下发
新增 `[shortcut] switch_mode`(单击 shift / 单击 control / ctrl+space / 不切换)与
`[general] english_mode`(关掉后青简固定中文模式),设置「通用」页两项。四条切换入口——
切换键、语言栏按钮、悬浮状态条、任务栏转换模式——都汇到 `service/mode.rs::set_english_mode`,
`english_mode` 关着时一处拦住,此时连语言栏按钮都不登记。

**DLL 不读配置文件**:这两个值在按键到达之前就要知道(单击判定在 `OnTestKeyUp`、要不要登记语言栏按钮),
而 DLL 跑在每个应用进程里、拿不到 Server 那份配置,`%APPDATA%\Qingjian` 对 AppContainer 里的商店应用
也读不到(那个目录里有输入日志和 `.env`,不该给它加 ACE)。所以由 Server 读配置、经协议下发:
`InputSettings` 随 `OpenSession` 的回包带一次,之后每一拍 `SyncMode` 跟着走,DLL 不读文件、不查 mtime,
设置改完约 320 ms 生效、不用切走再切回输入法。

`SessionOpened` **只回过协议版本对得上的 DLL**:老的 `open` 是只写不读,多回一条会被它当成下一次 `Poll`
的应答而报错,那条连接就废了(旧 DLL 在没重启的应用里还会活很久)。老 DLL 从 `ModeSync` 那一拍也能拿到
同一份(多余的字段 serde 直接忽略),只是慢一拍。协议版本 4 → 5。

另两处:Ctrl+Space 走 TSF 保留键,系统「输入法/非输入法切换」占着它时不重复登记、把切换交给系统那条路,
免得两边各切一次正好抵消;「激活后 1.2 s 忽略 compartment 写回」只在 `switch_mode = "ctrl+space"` 时开
(别的切换键不借系统那条路,激活时本来就是中文)。

对应 PR #95 的审阅意见。
2026-09-17 22:17:06 +08:00
yenharvey 137821ade9 chore(release): 版本推到 0.1.4-dev
0.1.3 已发(macos-v0.1.3 / windows-v0.1.3);CHANGELOG 开 0.1.4 一节。
2026-09-17 16:55:39 +08:00
yenharvey b5d50b5123 chore(release): 0.1.3
macOS 与 Windows 共用版本号:四个壳去掉 -dev,CHANGELOG 填发版日期,补安装后注销重登的提示、#28 与两位贡献者。
2026-09-17 16:13:39 +08:00
yenharvey 49b4feca26 feat(core): 双拼下用 Shift+V / Shift+U 进表达式与问字模式
双拼下 v / u / i 是音节键,之前字母模式键整个让位,两个模式缺省进不去。
照搜狗 / 微软双拼的做法:中文模式、没在组句时按住 Shift 敲模式键进入,
缓冲区存大写前缀,之后与全拼同路。Windows DLL 对 Shift+V / U / I 一律送
Server,全拼下放行后自己插入。

Fixes #11
2026-09-17 12:16:52 +08:00
yenharveyandWhiteCloud-OuO 2de094f286 feat(tsf): 任务栏中 / 英图标换成设计稿,按 DPI 选档、按任务栏主题填色,Caps Lock 显示 A
SVG 预栅格化成四档 alpha 蒙版随仓库提交,mode/icon.rs 按 GetDpiForSystem 挑档、按 SystemUsesLightTheme 填黑或白;
浅色任务栏上不再是白字。Caps 键抬起通知系统重取图标。box 真机验过。

Co-authored-by: WhiteCloud-OuO <1227866042@qq.com>
2026-09-17 10:58:31 +08:00
Tsuk1ha ed01256423 fix(tsf): 数字与标点按当前键盘布局解析 (#115)
用 ToUnicodeEx 按当前布局解析主键盘数字、OEM 标点与空格,不再写死美式键位;bit 2 不动 dead key 状态。字母、小键盘与 AltGr 处理不变。
2026-09-16 15:32:01 +08:00
yenharvey 9283b98eb6 chore(release): Windows 下一版与 macOS 同号 0.1.3,不再走 alpha
版本号两端共用:一个版本号一节 CHANGELOG、说明一致;哪个平台发了就打哪个平台的标签,
只发一个平台的补丁就开新号、那一节全是该平台的条目。三个 Windows crate 改成 0.1.3-dev。
2026-09-16 11:39:31 +08:00