Commit Graph
342 Commits
Author SHA1 Message Date
yenharvey 4f37e9fd65 feat(settings): 新设置程序的候选页加上小键盘数字(Windows)
#354 只接了旧版 Windows 设置;新设置程序是主入口,按平台支持表只在 Windows 显示,macOS、Linux 记为待实现。文档同步到按键页与设置页。
2026-10-26 11:28:47 +08:00
chleo ff843799fc feat(windows): 小键盘数字支持选词与直输配置 (#354)
中文组句中小键盘数字以前只能选词,打编号、型号时得切英文;加 [general] numpad_digit,缺省 select 照旧选词,direct 让数字进组句一起上屏。

Closes #217
2026-10-26 11:28:47 +08:00
yenharvey 635b359235 docs: 去掉 #783 带进来的冲突标记
crate-notes 的 Linux 一节合成一段:保留 #730 的切换键说明与 #783 的云服务接线;统计页删掉旧稿残留。
2026-10-26 11:21:41 +08:00
yenharvey 345b36bdeb docs(user): 安装页去掉与中英文页重复的 Caps Lock 一节,重新添加只在直接替换 app 时需要
Caps Lock 与系统切换 ABC 的关系中英文页已经讲了,这里改成链过去;改配置文件不受系统登记影响,删掉那句;安装包每次都会重新登记。英文版同步。
2026-10-26 11:09:19 +08:00
weiyang-byte cf82cfad7d docs(user): 补写 Caps Lock 与系统「切换 ABC」开关的关系、替换后重新注册的步骤 (#276)
新用户实测踩到的两处:系统用 Caps Lock 切换 ABC 时青简的中英切换按不出来;直接替换 app 后要重新添加输入法。
2026-10-26 11:09:00 +08:00
wangxiyu0023 279700be92 feat(core): 为显式选区翻译提供独立的提供方 (#779)
选区翻译与组句联想共用一个 Predictor,接本地翻译会被壳当成开了云联想;加可选的独立提供方,不配置时行为不变,配置了但不可用时不回退云端。
2026-10-26 10:37:16 +08:00
Haoyu Xi 3e7e72eb83 feat(core): 英文模式也使用自定义短语 (#794)
dont → don't 这类短语以前只在中文模式出;英文模式也插进来,只出内容不含汉字的,中文短语(含右键置顶加的)留在中文模式,免得英文模式按空格上屏中文。
2026-10-26 10:35:23 +08:00
jubeater 5e58194c6b feat(linux): 云联想补齐按需触发、用量统计与释义兜底 (#783)
Linux 的云服务只差按需联想、用量统计、释义兜底三项,对齐 Windows。
顺带两处 bamboo-slip 修复:Wayland 会话直连剪贴板(连不上回退 X11);秘密输入框聚焦时关输入法,免得密钥经云联想上报。

Closes #418
2026-10-26 10:01:27 +08:00
Haoyu Xi b28260c33e feat(core): 双拼整串配不出音节时按每键一个声母的简拼读 (#792)
双拼 im、zm 这类简拼以前整串报不能切分、什么都不出;整串一个音节都配不出时按每键一个声母再读一次,能正常解出的输入不走这条。

Closes #765
2026-10-26 09:51:54 +08:00
Haoyu Xi dd2657e305 feat: 词库导入支持只有词的表,读音按随包词库派生 (#787)
只有词的 txt 与混了无读音行的 Rime 词库以前认不出或静默丢词;现在按随包基础词库与领域词库派生读音,四个导入入口都接上。

Closes #698
2026-10-26 09:50:20 +08:00
yenharvey e60ffa13c5 docs(user): 英文版补上 Linux 中英切换提示 2026-10-26 09:38:01 +08:00
xiaomao49 243e41c3d5 feat(linux): 中英切换时弹「中 / 英」提示 (#751)
Linux 切中英没有任何视觉反馈;KeyResult 带上切换后的模式,Fcitx5 插件用框架的输入法信息气泡提示,跟随「切换输入法时显示输入法信息」设置。
2026-10-26 09:32:20 +08:00
Danche23 fd047a8eb2 fix(windows): 补全候选生僻字的系统字体回退 (#793)
扩展区汉字在雅黑与游ゴシック里没有字形,深翻页时显示成方框或空白;字体清单末尾补上系统可选的宋体扩展字体。

Closes #789
2026-10-26 09:32:16 +08:00
Haoyu Xi efa83b3e44 feat(core): sj 的时间候选增加 yyyyMMddHHmmss 时间戳 (#785)
取单号、追溯串时直接要一个时间戳。

Closes #778
2026-10-26 09:32:12 +08:00
Haoyu Xi 281e0d367f fix(core): 双拼末尾落单键拼出整词时不再让英文词排第一 (#786)
双拼末尾落单的一键是还没敲完,连同前面的音节拼出整词时按中文读法,英文退到后面、空格不再把整串当英文上屏。

Closes #753
2026-10-26 09:29:38 +08:00
Haoyu Xi 9c0d4474f2 feat(core): 中文模式下英文候选可限数量与最高位次 (#772)
中文模式下英文候选可以限两件事:[general] english_max_in_chinese 限数量(1–4,缺省 4 即 1 条精确词 + 3 条补全),english_min_position 限有中文候选时英文最高排第几(1–9,缺省 1 不限制;没有中文候选时英文照旧第一)。缺省值下行为不变;完全关闭仍用「打拼音时也给英文词」。三个平台的 Server 与共用设置页都接上了,Linux 改配置后也会重新读 english_in_chinese。

Closes #768
2026-10-23 15:46:26 +08:00
Haoyu Xi 66d62093ef fix(core): 关闭「打拼音时也给英文词」后不再把英文词并入整句 (#770)
关掉「打拼音时也给英文词」后,整句分词仍把内置英文词当句尾(nanine 出「那nine」)。现在开关关着时英文尾段整条路都停:nanine 回到「那你呢」,单独打 nine 也回到拼音读法。开关缺省开着,缺省行为不变。

Closes #766
2026-10-23 15:35:37 +08:00
jacklaoz 6cd1d091ba build(linux): 在容器里打 deb / rpm,Server 认发行版的系统数据目录 (#631)
apps/linux/packaging/build.sh 在容器里打 deb 与 rpm:Rust 部分在 Ubuntu 22.04 里编一次,fcitx5 插件分别对着 Debian 13 / Fedora 42 编;每种包 Server 与数据一个包、fcitx5 插件一个包。smoke/ 把打好的包拿到五个发行版的干净容器里装包自检。

resources.rs 认 /usr/share/qingjian 等系统数据目录,装在 /usr/bin 时不再误认成开发目录。flatpak 先不打。

Refs #101
2026-10-23 14:37:10 +08:00
jacklaoz 0f17aa15d5 feat(linux): IBus 前端,安装脚本按机器上的框架装对应前端 (#628)
GNOME 默认的输入法框架是 IBus:加一个 IBus 前端(纯 Rust,与 Fcitx5 插件共用同一个 Server),安装脚本按机器上有哪个框架装对应的前端(--frontend auto/fcitx5/ibus/both),可选把 Server 装成随登录启动的 systemd 用户服务。

协议类型搬进 qingjian_platform::protocol::linux,两个前端共用。GNOME Wayland 上组句中按应用快捷键时先把拼音上屏到原来的框。

合并 main 时保留 #351 的 --fcitx4(单独一支,不与 --frontend 同用)。
2026-10-23 13:43:26 +08:00
Haoyu Xi 10e86493d8 feat(dictionary): 导入只有词没有拼音的词表,读音从随包词库派生 (#718)
只有词、没有拼音的词表(每行 词 / 词<Tab>词频 / 词<Tab>读音[<Tab>词频],也认 Rime 的头)也能导入:词表写了读音就用它,其次整词在词库里就用词库读音,再按词库最长匹配切分,切不动的单字取词频最高的读音;一个词只写一条。字不在参考词库里的词跳过并列出。

这次只做 Core 与 CLI(--import-words / --import-to),设置程序的导入页另做。关联 #698。
2026-10-23 11:37:52 +08:00
yu20zhou 401e8fd88e feat(core): 连续上屏西文译词时词间自动补空格 (#754)
上屏译词接在西文词后面时原来粘在一起(hello + world 得 helloworld)。西文词间空格是外语的语法,不看自动空格开关:上文末字与译词都是用空格分词的文字(或上文是西文句读)时补一个空格,日语译词、汉字上文不补。

顺带修上屏译词的退格计数:补的空格已单独记成一次直通,译词那条不再重复算进去。
2026-10-23 10:32:30 +08:00
yenharvey 4f884e4985 docs: README 与安装页写明官方发布渠道,目前没有上架包管理器
有人在包管理器里发了自称官方的青简、版本跟不上,用户以为是我们没修 bug。
2026-10-22 19:39:12 +08:00
yenharvey 11bc654811 feat: 知意与含章·知微做成实验功能,设置里下载启用
合入本地 experiment/zhiyi-engine:Core 本地模型可选通变 / 知微 / 知意(知意分省电、均衡、准确三档),设置「实验功能」页下载、启用、删除,进度条与逐块校验;mac 走 Metal,Windows 走 ONNX Runtime 只用 CPU;读不到光标前文时按应用、按输入框取最近打的字。
冲突:设置的短语页、快捷键页说明按 main 的新功能留;用户文档 local-model.md、preferences.md 已在 main 拆分,实验功能的说明搬进 input/sentence.md、getting-started/settings.md、advanced/config-file.md。
2026-10-22 17:20:40 +08:00
yenharvey 17f819b753 feat: 打「用户名@」时候选列出常见邮箱的完整地址
Core 的 email_completions 原来只给 Android 用,桌面的英文直输段接上,地址按快捷候选上屏、不记学习。
直输段里按空格选中地址时不再把空格交给应用。
网址本来就能在英文直输段里打(www.example.com),不另做模式。

Closes #508
2026-10-22 15:04:39 +08:00
yenharvey b6319013e8 feat: 候选右键菜单:置顶、降权、删除(#749)
macOS、Windows 右键候选(macOS 也可 ⌃ 点按)弹出菜单,菜单由青简自己画:
bamboo-slip 新增 PopupMenu 组件(与设置页下拉菜单同一套样式),
qingjian-render 的 render_menu 出位图,壳只给不抢焦点的弹出窗、管悬停与点击。

- 置顶:给当前输入码加一条比同码短语都高的自定义短语(封顶 999),可在设置里看到、改、删;取消置顶删掉它
- 降权:记进学习数据 user-demoted.tsv,每降一次往后挪一格,词库词也能降;可取消
- 删除:原来 Shift + 数字删候选的那套,挪进菜单;Shift + 数字删候选去掉,回到普通符号
- 菜单项与动作在平台层 candidate_menu,两个壳共用;Esc 只关菜单,敲键、候选窗重画或收起时关
- Linux 候选窗由 Fcitx 画,暂无此菜单
2026-10-22 14:39:00 +08:00
yenharvey 95b2e19684 feat(phrases): 自定义短语改按权重排
固定位置 1–9 换成可以直接填的权重(1–999,新建 10,可以相同):同一个输入码下权重大的在前,
相同的按列表顺序,都排在普通候选前面;与短语同字的普通候选去掉,不再出两遍。
旧配置的 position 读进来换成权重(第 1 位是 10),保存时原地改成 weight、注释保留。
Android 常用语的输入码上限与 Core 一致(32 个字母),以前存下的超长码转换时跳过,不再让整组常用语挂不上。
2026-10-22 12:23:34 +08:00
yenharvey c1afdf808f docs: 架构说明只写自己的做法,不再拿别的输入法作依据 2026-10-22 12:22:28 +08:00
yenharvey c398f17c91 feat: 横排且高亮移动键选 ← / → 时,↑ / ↓ 在拼音行与候选之间切换
原来 ← / → 把拼音行和候选连成一条,要改拼音得先把高亮退到第一个候选,打句子时没法在中间改拼音。
这种组合下改成两区:↑ 进拼音行(候选不画高亮,空格照样上屏原来那个)、← / → 只移拼音光标,↓ 回候选,开了横排展开时再 ↓ 展开;矩阵第一行 ↑ 回拼音行、不收起;拼音行里再 ↑ 才开符号面板。
规则放在 Core 的 candidate::arrows::route,mac 与 Windows 两个壳只记焦点、执行动作;竖排、或横排用 ↑ / ↓ 移高亮时按键不变。
2026-10-22 11:39:09 +08:00
yenharvey d83b639773 fix(core): 多音字的少见读音按读音占比打分,打平的切分按整句得分挑
语言模型按字形计数,区 的 qu 撑起来的分会原样落到 ou 上:ou 首选 区、双拼 jie 首选 家、ditu 拼出 的图。
词库加载时记下多音字全部读音的词频(dictionary/readings.rs),命中带上 reading_total,词级排序与整句词图都扣 -ln(读音占比)。
切分器只按结构排,shang ou 与 shan gou 打平时贪心取前者,整句只拿它转、山沟 没机会比;打平的几种各转一遍,取路径分最高的。
冻结回放:词 8167 → 8226、整句 2827 → 2788(掉的多是用 di 打 的、du 打 都 的习惯,和日志里当时选了错句的统计假象)。

Closes #670
Refs #200
2026-10-22 10:53:00 +08:00
yenharvey 372317facd docs(android): Android 没有本地整句模型
平台差异表里 Android 那格写成了 ✓,实际随包只有词库与二元语言模型;Android 页开头也补一句,长句首选不如桌面版。
2026-10-22 10:52:50 +08:00
yenharvey 9b2acacae0 ci(android): CI 编 Android,发版出签名的 APK
ci.yml 加 android job 编 debug APK,Kotlin 与 Gradle 以前没有任何检查。
release.yml 加 android job:带产品数据出 arm64 APK,签名后 apksigner 验过才上传;v 标签连 Android 一起发,单发用 android-v。
APK 的 versionName / versionCode 改从 core/Cargo.toml 算,发版门禁同样核对它;0.3.0 起 Android 与桌面同号,成熟度用「预览版」标注。
.qj 不再设 noCompress,APK 从 225 MB 降到 95 MB,只多在首次启动解压时花几秒。
README、译本与用户文档把 Android 从「需从源码构建」改成下载 APK;发版文档补签名密钥的生成与 Secrets。
2026-10-22 10:01:35 +08:00
yenharvey 90943c8b26 fix(android): 设置页说明照桌面设置的写法精简
各项说明缩成一行,只说这项做什么,去掉格式、协议、识别原理这类技术词。
「释义兜底」改叫「补充译词」,文档跟着改;关于页的版本后面标「预览版」。
2026-10-22 10:00:32 +08:00
yenharvey eb5158aa4a feat(windows): 知意只用 CPU,不接 DirectML
集显上 DirectML 因每次序列长度不同,均衡档一次 200 ms,CPU 两线程 28 ms;
安装包改带 CPU 版 ONNX Runtime,少一个 18 MB 的闭源 DirectML.dll。
2026-10-21 20:17:27 +08:00
yenharvey 6c77d8124f docs(user): 用户文档英文版
docs/user 的 45 页全部译成英文,标题层级与原文一致,锚点已换成英文标题。
设置项保留中文原名、括号里附英文,读者能在只有中文的设置界面里对上;系统界面用英文系统的正式名称。
其他外语没有译本的页,官网先显示这一版。
2026-10-21 20:06:37 +08:00
yenharvey 381947ab4b docs(user): 用户文档加 i18n 目录,定好译本的约定与锚点工具
docs/user/i18n/<语言>/ 与原文目录结构一一对应,语言代码与官网一致固定为 zh-Hant、en、ja、es、vi、de,先建好目录免得各写各的。
README 写明结构、原文改了怎么办、译法(界面只有中文,保留中文原名附译名)、术语表和贡献步骤。
没有译本时官网显示替补版本:繁体看简体,其余外语先看英文、再看中文。
tools/docs/i18n-anchors.mjs:译本里的锚点先照抄中文,跑一次按「目标页第几个标题」换成译文标题的锚点,并列出对不上的链接。
2026-10-21 20:06:36 +08:00
yenharvey a20a38acaf docs(user): 用户文档按用户要做的事重新分组
功能越加越多,原来按早期设置页搭的结构塞不下:几个大页(按键、拼音方案、主题)越写越长,同一功能散在几页。
现在分为开始使用、打字、学语言、个性化、AI 服务、各平台、隐私与帮助、进阶八组,一个功能只在一页讲全,别处一句话加链接。
配置键名、文件路径、文件格式只放进阶组,其他页只写「设置 → 某页 → 某项」,面向普通用户不出现实现词。
设置程序的 ⓘ 链接表、各 README、issue 模板与代码注释里指向旧页面的链接一并改到新地址。
2026-10-21 20:06:25 +08:00
yenharvey 99f64f3bc6 build(installer): 取 ONNX Runtime 时用 TLS 1.2 2026-10-21 19:59:06 +08:00
yenharvey b8881c7456 feat(windows): 知意走 ONNX Runtime,有显卡用 DirectML,没有退 CPU 省电档
qingjian-neural 把知意的前向抽成 candle / ONNX 两个实现,分词与序列拼法共用;
Windows Server 按 [model] name 加载,设置下载 zhiyi-onnx,安装包带上 ONNX Runtime 1.24.4 与 DirectML。
2026-10-21 19:47:52 +08:00
yenharvey 3be348d4e4 feat(settings): 「实验功能」页下载、启用、删除知意与含章·知微
两边同时取清单,先回来的先下,不通换另一边;逐块与整包核对 SHA-256,解到临时目录再换进模型目录。
mac 壳按 [model] name 加载,换档当场生效。Windows、Linux 登记待实现。
2026-10-21 19:16:08 +08:00
yenharvey 9eceadb357 docs: README 译本挪到 docs/i18n/,补繁体中文与日西越德四种语言,徽章加图标
README.md 留根目录,各语言译本统一放 docs/i18n/,按当前支持的学习语言各出一份,另加繁體中文。
语言栏里当前语言显示成加粗文字、不再是链接。
平台徽章加上图标(shields 已不带 Windows 图标,内嵌一个 SVG),补 Android 徽章,加下载量与 CI 状态。
2026-10-21 18:40:51 +08:00
yenharvey 04068a5c0f feat(core): 读不到光标前文时按应用、按输入框取最近打的字当前文
- 输入记录按应用分开,每个 256 字、最多 16 个应用;换应用不串
- [model] context_memory_seconds(缺省 60,0 不过期)没打字就不算前文,太旧的前文没参考意义
- mac 进输入框时从头记;Linux 本来每个输入上下文一份;Windows 的 DLL 还不报换输入框,等知意 Windows 版一起做
2026-10-21 16:35:47 +08:00
yenharvey db5d6fe325 feat: 拼音行按高亮候选切分,可选显示带调拼音
- 一串拼音有几种分法时,拼音行按高亮候选的读音切(ganga 高亮 尴尬 是 gan'ga、刚啊 是 gang'a),应用里的行内拼音跟着换;Core 的 Query::spelled / follow,mac、Windows、Linux 壳在高亮变化时重切
- [general] show_tones(设置 → 候选 → 拼音行显示声调,缺省关):候选窗口顶部的拼音换成高亮候选的带调读音,简拼也换成完整读音;读音与输入对不上的不换;应用里的拼音不带调
- 声调先按词库里的词取,整句从左往右取最长的词,没标的字按单字声调表补,拿不准的不标;注音、九宫格不标
- Frame 加 window_preedit 给候选窗口单独一串拼音,DLL 不读,不升协议版本
- Linux 的 Fcitx 面板与行内拼音共用一串,声调先不接,设置表登记待实现
2026-10-21 16:04:34 +08:00
yenharvey 4a5d60952b build: 安装包与数据包不再带含章·知微
三个桌面平台都是有含章·通变就不加载知微,而通变一直随包,知微从来用不上,白占 53MB。
用户自己放进数据目录 models/hanzhang-zhiwei/ 的仍然认。data-fetch 兼容还带着知微的 data-v7。
2026-10-21 15:06:25 +08:00
yenharvey 0ca1b95419 feat: 并入青简词库,已清洗的进基础词库,其余作补充词库随包
- dict-convert lexicon --general / --cleaned:基础词库已有同读音的补声调、词频不动;读音不同的新读音按 1/8 收;
  其余按两边同读音词在对数坐标拟的直线换算词频。已清洗的 21.2 万条写 dict-cleaned.tsv,pack dict 与 dict.tsv
  合成 dict.qj(34.5 万条);其余 129 万条写 dicts/general.qj(GPL-3.0-or-later),缺省开着,设置「词库」页可关。
  都不进 bigram 分词,dict.tsv 除声调外不变,语言模型不用重跑
- 补充词库低主词库一档:不当前缀补全、精确命中不进排序第一档、兜底与词图格子预选多扣 2、不计入总词频;
  词图选中它的整词照样插到最前
- 「敲的拼音本身就是一个词就不走敲错路径」只认语言模型认识的主词库词,否则 zanen / jiusi 纠不回 咱们 / 就是
- 领域词多音字按语料猜读音打平时取 Unihan 靠前的读音,结果不再每次跑都不一样

冻结回放:词首选 8104 → 8167、整句 2845 → 2827(逐条核实词 25 好 2 坏、整句 14 好 12 坏,其中 2 条是当时选错的 输入狂);
整句评测集首选 37.6% → 38.9%、前三 43.4% → 46.0%。
2026-10-21 15:05:10 +08:00
yenharvey 0c9344883a feat(dictionary): 词库拼音可带数字声调,.qj 存声调
- TSV 拼音列认 `ni3 hao3`(轻声 5 或 0)与不带调两种写法,查词一律去调;导入用户词库同样认
- 五个音节以内的声调压进词目原来的 16 位填充,更长的放 TSPL / TONE 两节;旧文件读出来是不知道
- `Match::tones` 给显示用
- dict-convert 的 phrases / domain_words / mixed_words / brand / mined_words 统一成「词 拼音 词频」,
  mined_words 拼音留空;重编的 dict.tsv 与 lm 一元、二元表和改之前一致
2026-10-21 14:01:09 +08:00
yenharvey c3a1d56d41 feat(settings): 拼音和形码不能都关,下拉菜单支持变灰的项
两个都关时引擎偷偷按全拼,界面却写着关,像是坏了。现在一边关着时另一边的「关」变灰点不了;手改配置都关时仍按全拼兜底。
bamboo-slip 的 Menu 加 disabled,变灰的项不响应悬停与点击。补上双拼与形码混输的测试。
2026-10-21 13:12:11 +08:00
yenharvey bd4355d86a feat: 导入五笔词库,跟形码方案的码表合并
「导入词库」看第二列认格式:多字词的编码连着写就当形码词库,存进用户目录 code_dicts/,文件头记着导入时选的形码方案,载入方案时并进它的码表,不用整份换码表。
拼音导入遇到这种文件直接拒绝(#536 是五笔码表被当拼音词库导入,显示成功却打不出);认不出格式时提示每列该写什么。
形码词库和拼音词库共用开关与移除;mac / Windows 看到 code_dicts/ 变了就重装方案。Linux 还没有形码,安卓提示暂不支持。

Refs #536
2026-10-21 13:12:10 +08:00
jubeater 3b5828462e feat(linux): 中英切换键与默认英文模式可配置 (#730)
Linux Server 读 [shortcut] switch_mode、[general] default_english 与 english_mode,设置程序在 Linux 上显示切换键与默认英文模式;Fcitx5 / Fcitx4 把 Ctrl 报成 VK 0x11 以认单击 Ctrl。

Closes #703
2026-10-21 11:23:47 +08:00
yenharvey b2f0052a4c fix(windows): 切到英语键盘布局时收起悬浮状态条
原来监听的 ITfActiveLanguageProfileNotifySink 只报文字服务,跨语言切到纯键盘布局(ENG)时不来,状态条一直留着。
改用 ITfInputProcessorProfileActivationSink,别的输入法或键盘布局被激活都发 ImeSwitched。

Closes #722
2026-10-21 10:05:10 +08:00
yenharvey cb2110ba59 docs(windows): 搜索框候选窗在上方只写 Windows 10 2026-10-21 09:43:06 +08:00