release: ship v1.5.0 with on-device writing suggestions
Some checks failed
deploy-site / deploy (push) Failing after 33s
portable-unsigned / portable-windows (push) Failing after 4m7s
release / release-windows (push) Failing after 3m16s

Adds next-sentence suggestions while typing, weekly input insights and a
personal phrase memory to the desktop app, and fixes custom instructions so
they process the text instead of inserting the instruction's own wording.
Local model requests are now bounded and individually cancellable.

Bumps the product version to 1.5.0 (Android/iOS build 1050000), refreshes the
landing and web download links, and records the new INPUT feature rows and the
open verification gaps in the infrastructure map.
This commit is contained in:
Yun Chan 2026-09-23 16:04:27 +09:00
parent 99f06c253c
commit 5c11ee2fde
104 changed files with 14410 additions and 174 deletions

View file

@ -325,5 +325,192 @@
"keybinding.ui.recordHint": "请输入组合键(例如:Ctrl+Shift+Q)或单个键(例如:F5)",
"keybinding.ui.recordAgain": "重新输入",
"keybinding.ui.saveFailed": "无法保存快捷键",
"keybinding.ui.globalEnabled": "启用全局快捷键"
"keybinding.ui.globalEnabled": "启用全局快捷键",
"input.tab": "输入",
"input.consent.title": "输入数据收集",
"input.consent.description": "可选功能。我们统计按键与点击次数并测量鼠标移动距离,用于展示你的输入模式。我们从不保存你按下了哪些键。",
"input.consent.collect": "收集键盘与鼠标统计",
"input.consent.running": "正在收集。",
"input.consent.stopped": "收集已关闭,不会记录任何内容。",
"input.consent.pause": "暂停收集",
"input.consent.learnText": "学习我输入的文本",
"input.consent.learnTextHint": "读取当前聚焦的输入框以学习你的措辞。密码框始终跳过。",
"input.consent.excludedApps": "排除的应用",
"input.consent.excludedAppsPlaceholder": "keepassxc.exe, 1password.exe",
"input.consent.excludedAppsHint": "以逗号分隔的可执行文件名。在这些应用中不读取也不统计。",
"input.consent.clearAll": "删除已收集的数据",
"input.suggestion.title": "下一句建议",
"input.suggestion.description": "预测你即将写下的句子并显示在光标旁。接受后即插入。",
"input.suggestion.enabled": "输入时显示建议",
"input.suggestion.modelReady": "本地模型已就绪。",
"input.suggestion.modelMissing": "本地模型未运行 — 建议保持关闭。",
"input.suggestion.delay": "延迟 (ms)",
"input.suggestion.minPrefix": "最少字符数",
"input.suggestion.modelDefault": "使用默认模型",
"input.suggestion.overlayInteractive": "允许点击建议框",
"input.suggestion.overlayVisible": "建议正在显示",
"input.suggestion.keyHint": "接受、切换与关闭都是全局快捷键 — 可在设置 > 快捷键中修改。",
"input.suggestion.requestNow": "立即建议",
"input.suggestion.usage": "今天已使用 {{requests}}/{{budget}} 次",
"input.suggestion.lastSkip": "上次跳过原因:{{reason}}",
"input.insights.title": "最近 {{days}} 天",
"input.insights.keystrokes": "按键",
"input.insights.clicks": "点击",
"input.insights.words": "输入单词",
"input.insights.sentences": "句子",
"input.insights.mouseDistance": "鼠标移动",
"input.insights.perDayMeters": " 米/天",
"input.insights.phrases": "个人短语",
"input.insights.empty": "尚无收集到的活动。",
"input.insights.topApps": "输入最多的应用",
"input.insights.appRow": "按键 {{keystrokes}} · 点击 {{clicks}}",
"input.insights.privacyNote": "本设备仅保存计数与距离。按键内容永不保存。",
"input.phrases.title": "个人短语",
"input.phrases.description": "从你的输入与听写中学习的句子,用于贴合你的表达习惯。",
"input.phrases.empty": "尚未学习任何内容。",
"input.phrases.delete": "删除短语",
"input.feedback.excludedSaved": "已保存排除列表。",
"input.feedback.cleared": "已删除收集的数据。",
"popup.suggestion.hintAccept": "接受",
"popup.suggestion.hintNext": "下一个",
"popup.suggestion.hintDismiss": "关闭",
"popup.suggestion.loading": "生成中…",
"keybinding.ui.sectionInput": "输入建议",
"keybinding.action.suggestionAccept": "接受建议",
"keybinding.action.suggestionAccept.desc": "将建议句插入当前应用。",
"keybinding.action.suggestionNext": "下一条建议",
"keybinding.action.suggestionNext.desc": "切换到下一个候选。",
"keybinding.action.suggestionDismiss": "关闭建议",
"keybinding.action.suggestionDismiss.desc": "隐藏当前建议。",
"input.suggestion.timeout": "响应上限 (ms)",
"input.suggestion.latency": "上次响应:{{ms}} 毫秒",
"input.suggestion.slowWarning": "比输入速度慢 — 试试更小的模型。",
"input.diagnostics.title": "实时诊断",
"input.diagnostics.app": "当前应用:{{app}}",
"input.diagnostics.unknownApp": "(未知)",
"input.diagnostics.noSnapshot": "尚未读取输入框 — 请点击文本栏并输入。",
"input.diagnostics.readable": "输入框可读 ({{source}}, {{length}} 字符) — 建议可用。",
"input.diagnostics.notReadable": "此应用不公开输入框文本 — 无法读取,因此不生成建议。",
"input.diagnostics.password": "密码字段 — 按设计阻止读取。",
"input.diagnostics.caretFallback": "无法获取光标位置,改用文档末尾作为输入位置。",
"input.diagnostics.composing": "IME 组合中 — 建议会稍后出现,不会被阻止。",
"input.suggestion.onScreenLabel": "浮层状态",
"input.suggestion.onScreen": "显示中",
"input.suggestion.offScreen": "未显示",
"input.suggestion.generating": "生成中…",
"input.kbView.knowledge": "知识库",
"input.kbView.insights": "输入洞察",
"input.insights.tabs.overview": "概览",
"input.insights.tabs.keyboard": "键盘",
"input.insights.tabs.mouse": "鼠标",
"input.insights.tabs.apps": "应用",
"input.insights.tabs.phrases": "短语 · 建议",
"input.insights.chars": "输入字符",
"input.insights.wordChars": "字符",
"input.insights.backspaces": "退格",
"input.insights.shortcuts": "快捷键",
"input.insights.doubleClicks": "双击",
"input.insights.scrollTicks": "滚动",
"input.insights.activeMinutes": "活跃时间",
"input.insights.activeDays": "记录天数",
"input.insights.streak": "最长连续",
"input.insights.peakDay": "最高输入日",
"input.insights.perDayAverage": "日均",
"input.insights.mouseDistanceTotal": "移动距离合计",
"input.insights.hourlyTitle": "按小时 (0-23)",
"input.insights.dailyTitle": "每日趋势",
"input.insights.wordsDailyTitle": "每日单词",
"input.insights.distanceDailyTitle": "每日鼠标移动",
"input.insights.topHoursHint": "Busiest hours: {{hours}}",
"input.insights.mouseNote": "Mouse travel is the sum of per-axis absolute deltas (Manhattan), the same measure ActivityWatch uses.",
"input.insights.appsHint": "Top apps by typing volume. The bar is that app’s share of all keystrokes.",
"input.insights.suggestions": "建议",
"input.insights.suggestionsTotal": "已生成",
"input.insights.suggestionsAccepted": "已接受",
"input.insights.acceptRate": "接受率",
"input.insights.avgLatency": "平均响应",
"input.insights.suggestionHistory": "最近建议",
"input.insights.accepted": "已接受",
"input.insights.notAccepted": "未接受",
"input.insights.noSuggestions": "No suggestions recorded yet.",
"input.insights.samplesNote": "{{count}} learned samples.",
"input.insights.collectedAt": "Last capture {{at}}",
"input.insights.rangeLabel": "区间",
"input.insights.rangeDays": "{{days}} 天",
"input.insights.headerSummary": "Last {{days}} days · {{keys}} keystrokes · {{apps}} apps",
"input.insights.disabledHint": "Input collection is off. Turn it on in Settings > Input and statistics will collect here.",
"input.insights.statsMovedHint": "详细统计在 知识库 > 输入洞察 中查看。",
"input.chart.max": "最大 {{value}}",
"input.chart.noData": "尚无数据。",
"input.unit.perDay": "/天",
"input.unit.perDayMeters": "米/天",
"input.unit.meters": "米",
"input.unit.ms": "毫秒",
"input.unit.percent": "%",
"popup.suggestion.warming": "正在准备模型…",
"popup.suggestion.hintGenerating": "生成中…",
"keybinding.action.suggestionPrev": "上一条建议",
"keybinding.action.suggestionPrev.desc": "移动到上一条候选。",
"input.insights.tabs.graph": "图谱",
"input.graph.description": "Your sentences are stored as nodes and their relations as edges (what follows what, which share terms) so suggestions can pull personal context. Local only.",
"input.graph.nodes": "句子节点",
"input.graph.followsEdges": "接续关系",
"input.graph.sharesEdges": "术语共享关系",
"input.graph.topEdges": "最强关联",
"input.graph.recentNodes": "最近节点",
"input.graph.searchLabel": "搜索句子",
"input.graph.searchPlaceholder": "e.g. meeting schedule",
"input.graph.searchAction": "搜索",
"input.graph.neighbors": "关联句子",
"input.graph.empty": "The graph is empty. Enable \"Learn the text I type\" in Settings > Input and it fills up.",
"input.graph.kindFollows": "接续",
"input.graph.kindShares": "术语共享",
"popup.suggestion.generating": "生成中… ({{seconds}} 秒)",
"keybinding.ui.auditClear": "没有快捷键冲突或无效设置。",
"keybinding.ui.auditIssues": "{{count}} 个快捷键问题",
"keybinding.ui.auditInvalid": "{{action}}:{{reason}}",
"keybinding.ui.auditConflict": "{{action}} 与 {{conflicts}} 冲突",
"keybinding.ui.auditUnknown": "未知问题",
"input.flow.title": "可能的专注时段",
"input.flow.empty": "按小时的输入数据还不够。",
"input.flow.hour": "{{hour}}:00",
"input.flow.window": "分数 {{score}} · 每天活跃 {{minutes}} 分钟 · 编辑 {{friction}}%",
"input.friction.title": "编辑阻力",
"input.friction.value": "每 100 个字符 {{count}} 次",
"input.friction.band.steady": "稳定",
"input.friction.band.watch": "留意",
"input.friction.band.high": "高",
"input.appQuality.title": "按应用划分的建议质量",
"input.appQuality.empty": "还没有按应用划分的建议记录。",
"input.appQuality.row": "已接受 {{accepted}}/{{total}} · {{rate}}% · {{latency}}ms",
"input.phrases.metadata": "{{source}} · {{count}}次 · {{app}}",
"input.phrases.appUnknown": "通用",
"input.privacy.title": "本地数据凭据",
"input.privacy.localOnly": "这些数据仅保存在此设备上。",
"input.privacy.rawKeys": "不会保留单个按键事件和原始键码。学习文本样本会在下方单独列出。",
"input.privacy.activityRetention": "活动保留期",
"input.privacy.suggestionRetention": "建议保留期",
"input.privacy.learnedRetention": "学习文本保留期",
"input.privacy.activityBuckets": "活动分桶",
"input.privacy.typingSamples": "输入样本",
"input.privacy.personalPhrases": "个人短语",
"input.privacy.suggestions": "建议记录",
"input.privacy.days": "{{days}} 天",
"input.privacy.untilDeleted": "直到删除",
"input.exclusion.recommendation": "{{app}} 出现了 {{samples}} 次重复不可读输入({{reason}})。",
"input.exclusion.reason.repeated-unreadable": "反复不可读",
"input.exclusion.reason.repeated-empty": "反复为空",
"input.exclusion.addButton": "将 {{app}} 加入排除列表",
"input.feedback.recommendationSaved": "已将 {{app}} 加入排除列表。",
"popup.suggestion.sourceModel": "本地模型",
"popup.suggestion.sourceMemory": "本地记忆",
"popup.suggestion.continuations": "续写",
"popup.suggestion.related": "相关",
"popup.suggestion.phrases": "短语",
"popup.suggestion.appPhrases": "应用短语",
"input.privacy.typingSamplesRetention": "输入文本样本保留期",
"input.privacy.unavailable": "本地数据凭据暂不可用,因此不显示数量和保留期。",
"input.feedback.clearFailed": "无法删除已收集的数据。",
"input.feedback.excludedFailed": "无法保存排除列表。",
"input.feedback.recommendationFailed": "无法将 {{app}} 添加到排除列表。"
}