TRIP and sim
d8789c783d
feat: 统一聊天面板(官方 shadcn)+ 1.3.14 审计修复批 + CVE 补丁 ( #767 )
...
* fix(deps): patch tauri-plugin-shell CVE (GHSA-c9pr-q8gx-3mgp)
@tauri-apps/plugin-shell (npm) 与 tauri-plugin-shell (crate) 的声明下限
——npm `^2.0.1`、crate `"2"`——都落在 GHSA-c9pr-q8gx-3mgp 影响范围
(`< 2.2.1`,CRITICAL:`open` 端点作用域校验绕过,可致 RCE)。本项目
src/lib/ipc/utils.ts 正是通过该 `open` 端点打开外链,属受影响用法。
两个 lockfile 实际已解析到 2.3.5,但清单声明的下限仍是漏洞版本,供应链
扫描(SkillSpector SC4)因此读取到 2.0.1 报警。此处仅把两侧声明下限抬到
最新安全版 2.3.5,使清单与锁定版本一致、扫描不再命中;解析版本不变,无
运行时行为变化。
Closes #668
* fix(audit): 1.3.14 审计修复一批(Apple Speech 取消/IME 保存锁死/侧向键卡死/火山429 等)
- CRIT Apple Speech 取消/超时不终止 SFSpeechRecognitionTask(SendableTask+cancel_flag+[task cancel]+100ms 轮询)
- HIGH windows_ime 未安装分支反致设置保存事务锁死(抽纯函数 keyboard_list_pref_short_circuit)
- HIGH 侧向键 Released 卡死自愈 + macOS flags 类位竞态 + Linux 显式拒绝
- HIGH coordinator/hotkey_loops unused_assignments clippy 回归
- MED 火山 429 限流不重试(RateLimited)/ Heatmap clamp / 授权失败反馈 / SendInput 分类单一真相 / SendInputOptions 收敛
- 清理 删死码 ?? '重启' / side_aware 死字段 / 孤儿 MarketplaceModal
cargo test 552-0 / npm build 绿。windows cfg 部分需 CI 四平台验证。
* feat(chat): 统一聊天面板组件库——官方 shadcn base 组件按 CLI 规则内嵌
@shadcn/react 官方 primitive + base-rhea registry 原文内嵌 components/chat/ui/
(message-scroller/marker/bubble/message/card/empty/input-group/button/input/
textarea/spinner,仅按 CLI 规则改 import 路径;button 保留 3 行 React18 inert
归一)。Tailwind v4 作用域隔离:utilities source(none) + @source 只扫聊天文件、
无层导入压过 global.css;官方主题 shadcn/tailwind.css + tw-animate-css。
胶囊同款思考动画(orbFeed 单 GL 源镜像多头像)、GitHub 头像(CSP img-src 放行)、
出现/消失生命周期 hook。平台门控:非 darwin 构建 DCE 掉 Less Computer chunk。
删除旧自制 Marker/MessageScroller 组件。
* feat(panels): QA/LC 浮窗重写为官方 message-scroller-demo 同款骨架
Card + Empty + InputGroup + MessageScroller 官方组合;QA=Message 带头像形态
(右 GitHub / 左旋转 orb),LC=Marker 工具行形态(无头像)。
语音状态只在输入区:录音红光/转译黑光绕输入组跑圈,问题落定即停;
思考头像行门控在用户消息落定之后(修「AI 头像先出现、动画抽搐」)。
LC 事件空轮自愈 + mount 后 less_computer_sync 重放(webview 冷加载丢
user 事件导致「后端在跑前端空白/用户的话不显示」)。纯白背景、官方
24px 圆角、出现/消失动画(chat-panel:shown/closing)。
* fix(backend): 聊天面板后端配套——命令注册/非激活面板/事件缓冲/生命周期
- 恢复桌面 invoke_handler 的 qa_submit_text / qa_toggle_recording(此前删
qa_window_pin 时误删相邻项,真机报 Command qa_submit_text not found)
- QA/LC 窗口转非激活 NSPanel(胶囊同管线:NonactivatingPanelMask +
CanJoinAllSpaces|FullScreenAuxiliary),chat_panel_focus_keyboard 改主线程
makeKeyAndOrderFront:打字不激活 app、主窗口不再被带出、frontmost 保持
用户原 app(划词选区在多轮期间仍可读)
- Less Computer 事件按全局单调 seq 写入环形缓冲(fresh user 清空、cap 2048
丢最旧),新命令 less_computer_sync 供前端 mount 重放(仅 less-computer
窗口可调);附 2 个单测
- show/hide 生命周期:show 发 chat-panel:shown 并作废挂起 hide;hide 先发
chat-panel:closing、240ms 后真正隐藏(AtomicU64 世代防快速关-开竞态)
- QA/LC 窗口统一固定 420×540;删除 qa_window_pin / less_computer_window_resize
整链(无消费方)
---------
Co-authored-by: sim <sim@local>
2026-07-06 22:21:16 +08:00
351e0211bd
集成 1.3.14 → beta(主窗 UI 大改 + 一批 fix/feat) ( #761 )
...
* fix(insertion): macOS 让「恢复剪贴板」开关真正生效,修复被回退的 #525
#525 的 macOS 剪贴板恢复(commit 4b4d219)被 Android 移植 commit 1ea467a
连同 cfg 门控一起回退:整套恢复机制被重新 #[cfg] 排除出 macOS,macOS insert()
退回「只写剪贴板 + Cmd+V」,于是设置里的「恢复剪贴板」开关在 macOS 上完全无效
——无论开关开还是关,剪贴板都被留成转写文字。
- 把共享的剪贴板恢复机制(ClipboardRestorePlan / schedule_clipboard_restore /
restore_clipboard_after_delay / should_restore_clipboard 等)的 cfg 从
not(any(macos,android,ios)) 放宽为 not(any(android,ios)),重新纳入 macOS
(移动端仍排除;Windows/Linux 不变)。
- macOS insert() 改为:保存原剪贴板 → 写转写文字 → Cmd+V → 仅当「恢复剪贴板」
开关开启且粘贴成功时按 CLIPBOARD_RESTORE_DELAY 延迟恢复;粘贴失败则保留转写
文字供手动粘贴、不恢复。开 = 恢复,关 = 保持现状,开关说了算。
- 删除随之失效的 macos_insert_status_after_paste;恢复相关单测在 macOS 也运行。
Windows/Linux 专用项(insert_with_clipboard_restore / paste_keys /
simulate_paste(shortcut) / 其 insertion_success_status 变体)的 macOS 排除保持不变。
* fix(less-computer): 护栏 sudo/dd/chmod/chown 等设为不可批准,修批准注入畸形规则 (#679 )
旧审批流对所有命中 pattern 一律 format!("Bash({p}:*)") 生成 allow 规则:
- 对带空格/参数的子串("sudo " → "Bash(sudo :*)","dd if=" → "Bash(dd if=:*)",
"chmod -r 777 /"、"chown -r")生成的串既不等于 deny "Bash(sudo:*)" 等(故 deny
没被移除、批准静默失效),又把畸形规则注入了 allowed_tools。
改为:新增 guard::deny_rule_for_pattern(pattern),把「可批准」命令(rm -rf / git
push --force / git reset --hard / git clean 等)映射到其在 default_deny_rules 里的
**精确** deny 规则;提权/毁盘/系统级命令(sudo / dd / mkfs / chmod / chown / shutdown
/ reboot / 管道执行 / fork 炸弹)返回 None = 不可批准,即使被批准也保持拦截
(fail-closed),不再注入畸形 allow。审批流用 filter_map 取精确规则,移除的 deny 与
加入的 allow 严格一致。
附单测:每个可批准 pattern 的映射规则确实存在于 default_deny_rules;危险系统命令一律
不可批准。
* fix(ui): unify macOS shell top inset with sidebar/background surface
The 28px top inset that clears the macOS overlay traffic lights sat on the
content wrapper with no background, so it exposed the lighter WindowChrome
glass (--ol-window-bg) as a full-width band above the sidebar and panel —
reading as an extra top row that the Windows build (no inset) doesn't have.
Paint that wrapper with the same --ol-app-shell-bg the sidebar/background
already use, so the inset blends into one continuous surface with the panel
card floating on top. One property; token carries its own light + dark
values; no layout, token, or other UI changes.
* fix(capsule): 胶囊跟随鼠标光标所在屏,修复多屏/多 Space 只在第一块屏显示
多屏 + 多桌面下胶囊只出现在第一块屏、其他屏闪一下就消失。根因:定位
(position_capsule_bottom_center) 用 AX caret 选屏,多数 App 取不到 caret 矩形就
跌回胶囊自己的 current_monitor(第一块屏);而去重缓存 capsule_layout_snapshot 也
用 current_monitor,与定位看的不是同一块屏 → 胶囊一落第一块屏即被判“无变化”跳过
重定位,被锁死。两条路都没跟踪鼠标。
- 新增 mouse_cursor_point():CoreGraphics CGEventGetLocation 取光标,坐标系与 AX
一致、零权限、永远可用
- focused_input_target_monitor → capsule_target_monitor,选屏改“光标优先”(caret
仅兜底),选屏循环抽成 monitor_for_anchor_point
- 定位与去重快照统一走 capsule_target_monitor,彻底消除不一致
- 保留 CAN_JOIN_ALL_SPACES(Spaces 契约强制且本就正确:帧落在光标屏→只那块屏显示)
- 扩展 macos-capsule-spaces 契约测试,grep 守护“光标优先 + 两路共用同一函数”
Windows 路径未动(本就跟随输入 App 屏且快照一致)。
验证:cargo check + lib 纯函数单测 + check:macos-capsule-spaces 全过。
* feat(less-computer): 边缘发光改用 EdgeGlow 式四层模糊堆叠 + iridescent 配色
把 Less Computer 全屏彩虹边缘发光从原来「两条都带模糊的软光带」改成
EdgeGlow(github.com/vector4wang/EdgeGlow,MIT)的实现方式,让彩虹「实线」
更清晰、发光更有层次。
- 4 层模糊堆叠:最内一条 0.5px 锐利彩虹实线(对应 EdgeGlow blur=0 那层,
定义边缘),外面叠 3 层逐渐变宽、变虚的光晕(blur 3/8/15px),得到
霓虹灯管式发光。原生用 CAShapeLayer + 高斯模糊,这里用 CSS「边框遮罩环
+ filter:blur」等价复刻。
- 配色移植 EdgeGlow 默认的 iridescent(Apple Intelligence 高饱和霓虹:
紫→蓝→青→绿→金→橙→红→粉),按 12 段均匀铺满 360°。
- 流光整圈 8s/圈通过 --lcg-angle 旋转(只动渐变角度不动元素形状,GPU 友好),
光晕层各带不同周期呼吸;实线用 normal 保色准,光晕用 screen 叠加增亮。
保留 issue #470 的隐藏即卸载发光层(零 GPU)逻辑、pointer-events:none、
prefers-reduced-motion 降级与 --lcg-radius 圆角变量。纯视觉、仅 macOS、单文件。
* fix(vault): Windows 凭据读取瞬时失败重试,修概率性「火山引擎未配置」
Windows Credential Manager(CredReadW)在登录后/并发下读 manifest+各 chunk 条目
时可能瞬时失败。任一条目读失败会让整组凭据看起来为空 → load_keyring_credentials
返回 Err → load_credentials 回退到空默认值 → 概览页显示「火山引擎未配置」,但下
一次听写重读成功,所以是「概率性」且「实际可正常使用」。凭据 chunk 越多,单次
load 读取次数越多,命中瞬时失败的概率越高。
修法:仅在 Windows 上对非 NoEntry 的读错误做几次短退避重试(4 次 / 60·n ms)。
NoEntry 是确定的「未存储」,立即返回不付重试延迟。macOS/Linux 保持原单次行为
——它们的读错误是 ACL 拒绝,重试无益,且未缓存的错误路径下次调用本就会重读,
加 sleep 只会拖慢 macOS 首次 Keychain 授权流程。纯后端、cfg 隔离,零 PC-macOS 影响。
* fix(asr): 火山引擎连接增加超时与重试,修弱网下无法语音输入
connect_async 此前既无超时也无重试:弱网下 TLS/WebSocket 握手可能挂到 OS 级
TCP 超时(几十秒),期间用户卡在「Starting」;而协调器全局超时只覆盖
await_final_result,不覆盖 open_session,所以握手挂起完全不受约束。单次网络
抖动(连接被重置/瞬时 DNS 失败)也会直接让整次听写失败。
修法:每次握手包 5s 超时,最多 3 次尝试、250·n ms 退避。AuthRejected(凭据被拒)
短路不重试——重试不会变好只会拖慢报错。把请求构造抽成 build_connect_request
(connect_async 消费 request 且 http::Request 非 Clone,需每次重建)。
桌面与安卓共享此路径,改动对两端等效;最坏耗时从「无界(~75s)」降到有界(~15s)
并新增抖动可恢复,对 PC 端只增不减。
* feat(coding-agent): OpenCode CLI 适配器,语音 Agent 可选 OpenCode 后端 (issue #579 )
把 OpenCode 当作与 Claude Code 同类的 coding agent CLI 接入,照既有 coding_agent
适配模式(不另造架构),复用同一套 CodingAgentRequest / CodingAgentEvent /
CodingAgentError / 审批护栏链路。
后端:
- coding_agent/opencode.rs(新):detect_opencode(opencode --version)、
build_opencode_args(opencode run --format json --model --dir
[--dangerously-skip-permissions],prompt 作为 argv)、parse_opencode_json_line
(NDJSON:text/tool_use/error;text 块累计,EOF 合成 Completed)、
run_opencode_agent(取消/超时 kill,护栏经 OPENCODE_CONFIG_CONTENT 注入)。
- coding_agent/args.rs:CodingAgentProvider 枚举(claude-code-cli/opencode-cli,
未知回落 Claude)+ from_pref/default_exe。
- coding_agent/guard.rs:build_opencode_guard_config —— 把高风险 bash 前缀翻译成
OpenCode permission.bash deny glob + webfetch deny,审批放行的前缀显式 allow。
- coordinator/dictation_voice_agent: run_less_computer_once 按 coding_agent_provider
分派 Claude / OpenCode 运行器;两路都 fail-closed(护栏生成失败即中止,不裸跑)。
审批拦截探测/重跑放行链路 provider 无关,自动复用。
- commands: coding_agent_detect_opencode 命令(已注册 lib.rs)。
前端:
- CodingAgentSection: OpenCode 选项从「即将支持」改为可用 + 选中后探测安装状态并提示。
- ipc: codingAgentDetectOpencode + OpenCodeDetection。
- i18n: opencodeReady / opencodeMissing(5 语言,替换 providerOpenCodeSoon)。
验证:cargo check + cargo test(492 通过)+ npm run build 均通过。
Refs #579
(#579 还含「语音润色模型配置」:prefs 字段已存在但全链路未实现/未接 UI,
转写直接进 agent 未经语音润色模型整理 —— 故用 Refs 不用 Closes。)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* fix(coding-agent): OpenCode 防参数注入 + 可配置 Agent 可执行文件路径 (#638 )
注入风险(@H-Chris233 评审):`opencode run` 的 prompt 作为最后位置参数,但之前缺
end-of-options 分隔。以 `-` / `--` 开头的 prompt(语音转写或被 prompt 注入诱导)会被
OpenCode 当作 flag 解析,可绕过护栏(混入 --dangerously-skip-permissions、--dir 改写
工作目录等)。修复:build_opencode_args 末尾追加 `--`,运行器把 prompt 接在其后;新增单测。
可配置路径(@PR-Agent 指出之前 hardcode "opencode"):新增 prefs.coding_agent_exe,
语音 Agent 路径据此取 exe(留空回退默认 claude / opencode),检测命令亦用配置路径;
设置「高级 → Less Computer」新增「可执行文件路径」输入;补 5 语言 i18n。
* fix(updater): 安装失败可见化 + 手动下载兜底 + 错误写日志 (#706 )
下载完成后若 install() 抛错,旧代码把 status 置成 'error',而 UpdateDialog 不渲染 error 态 → 弹框消失、错误只 console.error,用户表现为「下载后无反应、重启仍旧版」(#706 )。
- 新增独立状态 installError:仅下载/安装失败用它;'error' 仍表示「检查失败」,行为不变(CheckUpdateButton 按钮内轻提示、后台自动检查都不弹框,零回归)。
- 失败弹框留在原地显示真实错误 + 「手动下载」按钮直达 GitHub Releases 兜底。
- 新增 Rust IPC log_client_error,把前端更新错误写进 openless.log(webview console 不入文件日志),便于用户「导出日志」后定位真因。
- 5 个 i18n 文件补 updateDialog.installError / manualDownload。
注意:这是兜底(失败可见 + 可诊断),不解决 ad-hoc/quarantine 机器自动更新真正成功的问题——那需要 Apple Developer ID 签名 + 公证(本次暂缓)。
* 手动补:dictation/ipc 拆分后的 OpenCode + updater 改动迁移
* fix: AutoUpdate 兼容性修复(补回 CheckUpdateOptions + Android 参数类型)
* fix(audio-cue): 重建/唤醒退化的 AudioContext,修「用久了提示音消失」
长时间使用后「开始录音」提示音与设置页「试听」双双静音,且重启才恢复。
根因在 audioCue.ts 的 AudioContext 单例 sharedCtx 从不检查/恢复运行期状态:
- WKWebView/WebView2 在频繁录音抢占音频会话后,ctx 可能转入 WebKit 非标准的
`interrupted` 态。旧代码只判断 `suspended`,interrupted 被当作可直接排期 →
排到非 running 的 ctx 上,无声且不尝试 resume → 永久静默(macOS 最可能根因)。
- ctx 也可能被系统 `closed`。closed 无法复活(resume 必拒、createOscillator 必抛、
被 catch 静默吞掉),而 getContext 从不重建 → 永久静默。
- 胶囊窗口与设置窗口各持一份 ctx,都会这样退化 → 两处提示音同时失效。
修复:
- 新增纯函数 audioContextActionForState(state):closed→recreate / running→ready /
其余(suspended/interrupted/未知非运行态)→resume,单一真相、可单测。
- getContext 在 ctx 为 closed 时丢弃重建(并清空挂在旧 ctx 上的 activeVoices)。
- playRecordStartCue / primeAudioCue 改用该分类器,把 interrupted 一并按 resume 唤醒。
公共 API 签名不变,仅 AudioCue.tsx / RecordingInputSection.tsx 复用,行为向后兼容。
tsc --noEmit 通过;audioCue.test.ts 新增 5 条状态分类断言,全部通过。
* fix(macos): onboarding Accessibility authorization page stuck (#703 follow-up)
Root cause: permissions::request_accessibility() was called in setup(),
which runs BEFORE the AppKit event loop is live. On some macOS versions,
AXIsProcessTrustedWithOptions depends on the run loop for XPC to tccd.
When the event loop isn't ready, TCC may not show the dialog but still
consumes the one-time prompt. Later calls from the onboarding page's
'grant accessibility' button silently return Denied, trapping users on
the onboarding page. Recovery requires System Settings grant + app
restart, but users had no clear restart action — only a text hint.
Changes:
- lib.rs: Remove setup() TCC prompt. The prompt is now exclusively
triggered by user action on the onboarding page, aligning with
Apple HIG (explain why → then prompt).
- Onboarding.tsx:
* onGrantAccessibility now checks the TCC result: skip
openSystemSettings when already granted (previously always opened)
* New tccPromptShown state distinguishes 'never attempted' vs
'already denied' for correct button labels
* Denied state now shows a prominent 'Restart OpenLess' button
calling restartApp()
- PermissionsSection.tsx: Same fix for settings page accessibility
row — check TCC result, guide to System Settings when denied,
show 'Restart App' button
- i18n: Add onboarding.actionRestart + settings.permissions.restart
for zh-CN / zh-TW / en / ja / ko
Closes: macos-onboarding-accessibility-stuck
* chore(release): publish 1.3.13
* fix(audio-cue): recover when resume() is rejected or wakes non-running
Long sessions park the shared AudioContext in 'suspended' / WebKit
'interrupted' after the system audio session is repeatedly preempted by
ASR and recording. The earlier fix only recreated a 'closed' context: a
rejected resume() was swallowed and a resume() that resolved without
reaching 'running' scheduled voices on a frozen currentTime, both of
which leave the start cue permanently silent until the app restarts.
Treat both "won't wake" states as recoverable — discard the dead context
and retry once on a fresh one, bounded to avoid infinite recreation. The
decision is extracted into the pure, unit-tested cueActionAfterResume.
* chore(release): integrate 1.3.14
* fix(ipc): 去除 coding-agent.ts/index.ts 中 OpenCodeDetection 和 codingAgentDetectOpencode 的重复声明
integrate/cloud-sync-20260621 合并后 IPC barrel 出现重复 export(beta 已含 PR #638 的
OpenCode 适配器,integrate 分支又加了一份)。合并去重,npm build 通过。
* style(less-computer): 气泡/审批/发送按钮改用 accent 主题 token
把 LessComputerPanel 里三处硬编码渐变(#3d6bff→#7a55f2)替换为
--ol-accent-solid-bg / --ol-accent-solid-ink,跟随浅/深主题。
* feat(capsule/asr/ui): 胶囊即时显示与预测展开、Apple 语音修复、弹窗全局遮罩
胶囊入场(延迟出现 / 无入场动画 / 亮起→卡→展开):
- 按下热键即「乐观显示」胶囊并播入场动画,不等麦克风就绪;level_handler 首帧 PCM
到达后从预备态翻正式态、光条点亮(新增 warming 标志贯穿 emit_capsule payload)
- 修入场动画被吞:入场帧把发给前端的事件挪到 window.show 之后再 emit
- 预测式展开:光条按历史平均加载时长(EMA + localStorage 跨会话学习)从按下就平滑
展开,就绪早则加速补满、未就绪则慢爬至 90%,消除「亮起→卡→突然展开」
Apple 语音(说中文识别成英文 / 偶发不可用):
- initWithLocale 跟随用户工作语言主语言,修 init 无参落系统首选语言(英文)导致
中文被英文引擎误识别
- on-device 优先(requiresOnDeviceRecognition):离线可用 + 隐私 + 不受网络波动/限流
- isAvailable 就绪轮询等待,修刚 init 时瞬时不可用就报错的竞态
弹窗遮罩:Modal 用 createPortal 到 body,修被 WindowChrome/FloatingShell 常驻
will-change: transform 祖先困住 fixed 遮罩(登录弹窗浮在亮着的设置页上、无全局压暗)
服务页 Apple 语音文案优化(zh-CN/zh-TW)
---------
Co-authored-by: 吕柏青 <lubaiqing9@gmail.com >
Co-authored-by: sim <sim@local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-04 23:41:41 +08:00
sim
8d74b3e0eb
chore(release): prepare 1.3.13-Beta.1
2026-06-25 14:59:31 +08:00
sim
a4df800d66
chore(release): publish 1.3.12
...
- add OpenCode CLI provider support for voice agent workflows
- improve updater fallback/error visibility and compatibility
- bump app, Tauri, and Cargo versions to 1.3.12
2026-06-24 12:42:25 +08:00
Andy Jiang
950ad58006
chore(release): 1.3.11
2026-06-21 13:55:15 +08:00
sim
dbdc73f278
chore(release): 1.3.10 (stable / 正式版)
2026-06-18 00:33:00 +08:00
sim
412dc9968a
chore(release): 1.3.10-4 (beta)
2026-06-17 23:30:58 +08:00
TRIP and sim
6c99ddf1f7
fix(updater): revert signing pubkey to 1DEAA803 to repair auto-update ( #705 )
...
Auto-update was broken on every platform: builds since aaf4ccc embed pubkey
6F4B5994, but shipped 1.3.8 stable users trust 1DEAA803 and CI now signs with
1DEAA803 again. A key the installed app doesn't trust => download succeeds,
install() signature verification fails => "downloads but never updates".
Revert the desktop updater pubkey to 1DEAA803 so it matches both the CI
signing key and android/updater.rs (which already hardcodes 1DEAA803). This
also repairs Android auto-update, which was signing-vs-verifying mismatched.
One line, no logic change.
Co-authored-by: sim <sim@local>
2026-06-17 23:30:01 +08:00
sim
f94f9be07a
chore(release): 1.3.10-3 (beta)
...
Re-cut of the 1.3.10-2 beta from the synced cloud beta branch (supersedes the
-2 pre-release, which was deleted). Identical code to 1.3.10-2 — version-number
bump only. Bundles #701 persistence split, #702 top-bar unification, #703
onboarding accessibility gate, on top of 1.3.10-1 audit fixes.
2026-06-17 18:57:05 +08:00
sim
aa643b972d
chore(release): 1.3.10-2 (beta) — macOS top-bar unification + onboarding accessibility gate
...
Bundles the two macOS UX fixes already merged into beta:
- #702 unify macOS shell top inset with sidebar/background surface
- #703 require macOS Accessibility grant before first-run onboarding completes
Version synced across package.json, package-lock.json, tauri.conf.json,
Cargo.toml, Cargo.lock. Local release build verified (1.3.10-2 installs and
runs; top bar seamless; first-run requires Accessibility).
2026-06-17 17:54:09 +08:00
appergb
6aad6e814f
chore(release): 1.3.10-1 (beta) — audit fixes batch 1+2 (critical Android updater, security hardening, correctness bugs)
2026-06-17 11:45:38 +08:00
TRIP
121bb11447
fix: audit batch 1 — critical Android updater + security hardening + bug fixes ( #695 )
...
14 confirmed audit findings: critical Android auto-update fix (SUPPORTED_ABIS), security hardening (exe allowlist, window-scoped approval, update-URL validation, remote PIN rate-limit/entropy, mirror order, prompt sanitization), correctness bugs (prefs race, hotkey spawn race, voice-agent focus clear), build-hygiene, and Android robustness. All-platform CI green; 446 tests pass.
2026-06-17 11:13:27 +08:00
Andy Jiang
e05025a7e7
chore(release): 1.3.9 (stable / 正式版)
...
内存优化:webview 代码分割 + i18n 按需加载(index 440→285KB) + 胶囊录音帧节流 + qa/less-computer/glow 窗口懒创建(idle WebKit 进程 5→2)。含 #661 暗色模式。
2026-06-15 21:39:49 +08:00
Andy Jiang
bdfaa89f05
perf(macos): lazy-create qa/less-computer/glow windows — 3 fewer idle WebKit processes
...
These 3 windows were declared in tauri.conf.json and created eagerly at startup, each holding a resident WKWebView content process even though they're rarely shown. Remove them from tauri.conf; create on first show via WebviewWindowBuilder (ensure_qa_window / ensure_less_computer_window / ensure_less_computer_glow_window) with config matching the old declarations exactly. QA drag-fix (make_qa_window_draggable_macos) was startup-only — re-applied on create. Drops ~3 resident WebKit processes (~30-50MB each) when idle.
Tradeoffs to verify on macOS: (1) first QA/Less-Computer open builds the webview before showing (slight first-use delay); (2) QA emit-race is benign (first emit = idle/empty = panel default); Less-Computer's first turn bubble could be missed on cold open (recovers next emit) — verify. Confirm QA still drags + positions; glow shows over fullscreen.
2026-06-15 17:00:04 +08:00
Chris233
8e8f5fdeb5
Merge pull request #658 from HKLHaoBin/feat/android-release-pipeline
...
feat(android): 对齐移动端构建与发布流水线
2026-06-14 14:12:03 +08:00
Andy Jiang
a5188b8935
chore(release): 1.3.8 (stable / 正式版)
...
fix(macos): 胶囊转非激活 NSPanel,可叠加在全屏 app 之上(在 1.3.7 跨桌面修复之上)。注:Cargo.lock 的 tauri-nspanel 依赖由 CI/构建时解析。
2026-06-14 11:34:59 +08:00
Andy Jiang
ffeb0c4412
chore(release): 1.3.7 (stable / 正式版)
...
性能优化批 + macOS 胶囊跨桌面&全屏修复 + ink-4 对比度(AA)修复 + 清理 12 个死文件。将以 stable 渠道(v1.3.7-tauri)推送给所有用户(in-app updater + Homebrew)。
2026-06-14 00:07:49 +08:00
Andy Jiang
2e27f70472
chore(release): bump version to 1.3.6-5 (Beta)
...
性能优化:发布 profile(LTO/strip)、空闲轮询修复(托盘麦克风/全局热键/coding-agent supervisor)、LLM 连接复用、流式 markdown 帧率节流、胶囊每帧 style 提取。
fix(macos): 胶囊跨桌面/全屏跟随(collectionBehavior 绝对值)。fix(a11y): 恢复 --ol-ink-4 WCAG AA 对比度。chore: 删除 12 个未编译的孤儿 coordinator/*.rs。
2026-06-13 23:33:16 +08:00
HKLHaoBin and Cursor
aaf4ccce92
chore(updater): rotate minisign pubkey for CI release signing
...
Pair with TAURI_SIGNING_PRIVATE_KEY set via gh secret set. Old pubkey superseded for new tag releases.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-13 21:44:25 +08:00
baiqing
24049d9472
chore(release): bump version to 1.3.6-4 (Beta) — 回退 AURA 界面大改到旧外观、保留功能 + ASR 本地引擎可切换 + 风格页性能修复( #656 ) + macOS capsule 监听修复( #649 )
2026-06-13 14:18:23 +08:00
HKLHaoBin
1ea467a001
feat(android): port Android APK runtime onto beta
2026-06-12 18:13:12 +08:00
吕柏青
e2af9ba38e
chore(release): 1.3.6-3
2026-06-08 17:30:38 +08:00
吕柏青
cf933cb347
fix(less-computer): 长按松手停录音(latch不再被5s轮询重置) + 全屏弧形彩虹描边浮层(点击穿透/无缝) + 流式进场动画 + 文案
2026-06-05 20:52:49 +08:00
吕柏青 and Claude Opus 4.8
d6ca97d493
feat(less-computer): streaming chat popup window + inline approval scaffolding
...
Adds a macOS-only fluid chat popup (window label=less-computer) for the Less Computer voice agent. Streams user bubble + assistant Delta + tool chips + final result/cost as the agent runs, instead of only showing the final capsule. Content-adaptive height (bottom-anchored, clamped 120-520, scrolls past max), non-movable, always-on-top, frost aesthetic mirroring the QA panel. Esc / close button dismiss. High-risk guard hits surface an inline Approve/Deny card; Approve re-runs the task once with that pattern lifted from the deny list. Windows/Linux keep it hidden and inert (no hotkey, no emit). i18n added to all 5 locales.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 15:07:08 +08:00
吕柏青
bd435b9e5e
chore(release): bump version to 1.3.6-2 (Beta) — 翻译会话参与对话感知润色( #583 ) + 快速录音提示音丢失修复( #584 ) + 正式发版自动更新 Homebrew cask( #586 )
2026-06-04 13:17:17 +08:00
吕柏青
d1a5b75c2b
chore(release): bump version to 1.3.6-1 (Beta) — MediaPlayPause 线控录音 + Toggle 冷却( #545 ) + 多屏胶囊跟随( #569 ) + 本地模型管理( #559 ) + Linux 磨砂回退( #553 )
2026-06-01 15:08:50 +08:00
吕柏青
acac9f67d9
chore(release): bump version to 1.3.5-1 (Beta) — 录音开始合成提示音
...
本次只动版本号,功能改动已在 #560 落盘:
- 按下录音热键进入 recording 即播放 Web Audio 合成提示音,提醒「已开始录音」
- 新增 audioCueOnRecord 开关(默认开启),录音与输入设置可关闭 + 试听
2026-05-31 14:02:47 +08:00
吕柏青
b7c6217519
chore(release): bump version to 1.3.4-14 (Beta) — Linux fcitx5 状态弹窗 + Sherpa 本地 ASR 状态同步 + DashScope 重复修复
...
本次只动版本号,逻辑改动已在以下 PR 落盘:
- #520 Linux fcitx5 候选框听写状态提示 + AppImage 插件自动安装 + 热键启动容错
- #523 Sherpa 本地 ASR 状态同步修复(active settings 顺序 + Qwen3 tokenizer 缓存校验)
- #527 Sherpa 本地 ASR asset 与 state handling 修复
- DashScope (bailian) ASR 部分语句重复输出修复
- pr-agent.yml CI 配置调整
2026-05-25 20:55:51 +08:00
baiqing
a38d6b50e1
chore(release): bump version to 1.3.4-13 (Beta) — 设置界面重构 + 加入 Beta 渠道 / 麦克风 / 市场登录
...
本次只动版本号,逻辑改动已在 #521 落盘:
- 设置界面分节化、整体文案精简
- 「加入 Beta 渠道」迁到高级页底部、独立成节;关于页改为正式版「检查更新」按钮
- 麦克风选择改为 SelectLite 下拉(选中行实时音量条 + 打勾)
- 扩展市场 / 风格市场登录统一走共用 GithubLoginModal,弹窗尺寸不再跳动
- 弹窗动画 de-jank(去掉 blur 滤镜),各处弹窗动画时长缓动统一
- 共享 reqwest 客户端(net.rs)+ 仅连接层失败做指数退避重试
2026-05-23 08:55:35 +08:00
baiqing and Claude Opus 4.7
82ab2439fb
chore(release): bump version to 1.3.4-12 (Beta) — 磨砂玻璃质感 + ASR/Windows/Linux 修复
...
自 v1.3.4-11-beta-tauri 以来的改动:
- feat(ui): 给划词追问框与语音胶囊加磨砂玻璃质感(#519)
- fix(linux): 修复 Linux 主窗口控件(#518 / issue #517)
- fix(windows): 缩短 Windows IME 提交超时(#514 / issue #491)
- fix(windows): 流式 SendInput 节流(#513 / issue #491)
- feat(asr): 新增更大的 Foundry Whisper 模型(#512 / issue #511)
- fix(asr): 修复智谱 ASR endpoint 处理(#510 / issue #507)
- fix(ui+network): 更新/登录/网络检测/市场加载四项修复
- fix(asr): 修复智谱批量 ASR 分片(#509 / issue #508)
本次只动版本号,逻辑改动已在上述 PR 落盘。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 08:52:37 +08:00
baiqing
ce6818cc6f
chore(release): bump version to 1.3.4-11 (Beta) — UI 多语言精简 + SavedToast 统一定位 + Windows 听写后 SendInput 降压
...
合并 #503(fix(windows): reduce SendInput pressure after dictation):
听写结束后降低 SendInput 调用压力,优化 coordinator/dictation/insertion 路径。
合并 #505(fix(ui): 统一 SavedToast 弹框位置与进出方向):
SavedToast 默认停靠右上角,新增 slideFrom 属性支持 right/top 两种进出方向,
SettingsModal 用 slideFrom="top" + absolute 锚定内容区。
合并 #506(refactor(ui): 精简多语言文案 + 设置/风格/市场界面与图标重构):
精简 en/ja/ko/zh-CN/zh-TW 过长功能描述文案,
风格包卡片与编辑器抽屉改用 framer-motion 进出动效,
Settings/Marketplace/shared/Icon 界面重构。
本次只动版本号,逻辑改动已在 #503 #505 #506 落盘。
2026-05-20 18:23:11 +08:00
baiqing
b5dddb496a
chore(release): bump version to 1.3.4-10 (Beta) — Windows 流式插入 12ms flush
...
合并 #502(fix(windows): buffer streaming SendInput events):
SSE delta 在 12ms 时间窗内合并后再调用 type_unicode_chunk,
显著降低 Windows 流式输入路径上的 SendInput 调用频率与 CPU 占用。
mpsc 由 tokio unbounded 切到 std sync::mpsc,typer 任务里
用 recv_timeout 实现 flush 窗口,断开/失败后仍能 drain 完剩余 delta,
并把缓冲写入逻辑抽到 flush_streaming_insert_buffer 单元函数。
本次只动版本号,逻辑改动已在 #502 落盘。
2026-05-19 21:28:15 +08:00
baiqing
fbcf4993a1
chore(release): bump version to 1.3.4-9 (Beta) — Windows capsule/QA Acrylic 回退
...
回退 #487 引入的 Windows capsule/QA 浮窗 apply_acrylic 调用 (PR #496 ),
解决浅色背景下 220×84 胶囊出现深色矩形的视觉 bug。
本次只动版本号,不携带其他逻辑改动。
2026-05-19 14:52:49 +08:00
baiqing
bd5dcb8a57
chore(release): bump version to 1.3.4-8 (Beta) + fcitx5 路径抓取/安装前缀修复
...
v1.3.4-7 显示:fcitx5 包名替换后构建本身已成功([100%] Built target openless),
但下一步立刻 exit 1。根因有两个:
1) cmake -LA 抓不到值
fcitx5 5.0.14 把 FCITX_INSTALL_ADDONDIR / FCITX_INSTALL_PKGDATADIR
设为普通变量而非 CACHE,cmake -LA 看不到 → grep 退码 1 → set -e -o pipefail
触发整步退出。
改从 configure 阶段 message(STATUS ...) 的输出抓(CMakeLists.txt 已经打印)。
2) CMAKE_INSTALL_PREFIX 默认 /usr/local 路径错
fcitx5 在 Ubuntu 上运行时只扫 /usr/lib/<arch>/fcitx5/,默认 prefix=/usr/local
会让 .deb 把插件安到 /usr/local/lib/fcitx5/,运行时找不到。
显式 -DCMAKE_INSTALL_PREFIX=/usr 强制 Debian 系标准路径。
历史 v1.3.4-3 其实也是这条 bug 路径,只是 cmake -LA 那行先挂掉没人意识到。
提取失败时打印 cmake-configure.log 末 50 行作为诊断。
2026-05-18 21:34:38 +08:00
baiqing
9bae92b4df
chore(release): bump version to 1.3.4-7 (Beta) + Linux fcitx5 包名拆分修复
...
v1.3.4-6 加的 apt-cache search 诊断揭示真因:Ubuntu 22.04 universe 在
v1.3.4-3 (Apr 2026) 之后把 fcitx5-dev 这个 meta 包移除了,源里只剩拆分后的
libfcitx5{core,utils,config}-dev 等子包。这也解释了 -4/-5/-6 为何连挂同样错误
"Unable to locate package fcitx5-dev":根本就找不到这个 umbrella 包了。
CMakeLists.txt 实际只 find_package(Fcitx5Core / Fcitx5Utils / Fcitx5Module),
对应:
libfcitx5core-dev
libfcitx5utils-dev
fcitx5-modules-dev
另外 fcitx5 CMake config 文件依赖 KDE 的 extra-cmake-modules (ECM),
和 libfcitx5config-dev 作为传递依赖一起补上。
诊断块保留(apt-cache search / os-release / sources.list.d),未来若再变包名
能立刻拿到证据。
2026-05-18 21:22:43 +08:00
baiqing
1960e0d602
chore(release): bump version to 1.3.4-6 (Beta) + 修 Linux CI fcitx5-dev 安装
...
v1.3.4-4 / -5 的 Linux 构建在 "Build fcitx5 plugin" 步骤连挂两次,
错误一致:"E: Unable to locate package fcitx5-dev"。同一 job 前面的
"Install Linux bundle deps" 步骤明明已经 apt-get update + 装好了一堆
universe 包,到 fcitx5 这步突然找不到 —— 表象与 GitHub Actions
ubuntu-22.04 runner 镜像弃用过渡期里 apt 元数据漂移的现象一致。
release-tauri.yml "Build fcitx5 plugin" 步骤增加三层防御:
1) sudo add-apt-repository -y universe(已启用则 no-op)
2) 本步骤内重新 sudo apt-get update,独立于上游 step 缓存
3) 安装失败时打印 apt-cache policy / search / os-release / sources.list.d
便于以后排查
同 commit 同时 bump 五处版本到 1.3.4-6 重发,让 PR #487/#488/#489
三个 Windows P0 修复带上 Linux 包一起进 Beta 通道。
2026-05-18 20:56:58 +08:00
baiqing
801bc0089b
chore(release): bump version to 1.3.4-5 (Beta) — Windows P0 三连修
...
包含 PR #487 / #488 / #489 三个修复,供 Windows 实机验证:
- #489 快捷键二次按键失效(toggle/stop 失灵,只能 ESC)
→ coordinator.rs hotkey_bridge_loop 改 block_on 顺序 await
- #487 capsule/qa 透明遮罩看不清
→ lib.rs Windows 下追加 apply_acrylic 兜底
- #488 autostart catch fall-through 复活主窗口(#468 残留)
→ App.tsx catch 加 return + 改善 warn 诊断
2026-05-18 20:23:18 +08:00
baiqing
cb2c233ebe
chore(release): bump version to 1.3.4-4 (Beta) — Windows #468 静默启动前端兜底
...
合并 PR #474 后随版本号一起出 Beta 包,供 Windows 端验证
startMinimized 兜底是否彻底关掉 #468 漏窗最后一公里。
2026-05-18 15:37:24 +08:00
TRIP and baiqing
b4e806e3ca
fix(windows): 静默启动 #468 最后一公里 - 前端兜底 ( #474 )
...
* fix(windows): 修复 #466 #468 #469 IME 切回 / 静默启动 / QA 焦点 + #470 capsule 诊断 (#471 )
集中修复 4 个 Windows-only bug:
- #469 IME 切不回 — restore_profile 对称补 legacy TSF ChangeCurrentLanguage + ActivateLanguageProfile,回归点是 c3b59329 升级激活路径时漏改恢复路径。现代 ActivateProfile 失败降为 warn(legacy 已完成视觉切回)。
- #468 Win11 静默启动失效 — single-instance 回调读 start_minimized,true 时跳过 show_main_window;托盘 / CLI intent 路径不受影响。
- #466 QA 弹窗 X/ESC 关不掉 — Win 上从 SW_SHOWNOACTIVATE 切到 Tauri window.show + set_focus,让 webview 拿键盘焦点。配套 focus-dance:begin_qa_session 抓选区前临时把焦点还给用户原 app,抓完再 refocus QA;多轮场景下用 GetWindowThreadProcessId 区分本进程窗口,刷新 qa_focus_target,避免 stale HWND。
- #470 录音胶囊不显示 — 加 per-process 一次性诊断 log(CapsuleState 用 capsule_state_log_name 显式短名,不走 Debug 防字段扩展时泄露),下次能直接定位 prefs / state / Win32 哪一环失败。
pr_agent 五轮迭代到 No major issues + No security concerns;Cloud 评审建议的 begin_qa_session 双锁 TOCTOU 已合并为单 scope。三平台 build + pr_agent CI 全绿。
#470 没标 closes,是 refs—需要真机日志才能定位真因,先 ship 诊断手段。
* chore(release): bump version to 1.3.4-3 (Beta) — Windows #466 #468 #469 修复
* fix(settings-ui): 权限页徽章不换行 + 本地 ASR 区块 Win 灰显
权限页 (Settings → 快捷键 → 权限):
- Pill 组件加 whiteSpace:nowrap + flexShrink:0 → "已安装"徽章在 Win
窄宽下不再被挤成 3 行(每个汉字一行)。
- 行内 message span 加 whiteSpace:nowrap + overflow:hidden +
textOverflow:ellipsis + minWidth:0 → 长文本("Windows 低层键盘 hook
已安装")超宽时省略号收尾,徽章保持完整。
- zh-CN 描述大段精简:descAcc / descNoAcc / micDesc / accDesc /
hotkeyDesc / networkDesc / windowsImeDesc / windowsIme.* 都改短,
减少 Win 上拥挤感(用户反馈 zh 文案过长)。
高级页 (Settings → 高级 → 本地 ASR):
- Windows 上把"本地 ASR 模型(实验性)"标题区 + 警告小字 + Qwen3 行
整组 opacity:0.45 灰显 —— Qwen3 在 Win 是 stub 不支持,那条"实验性"
主线在 Win 没意义;用户视觉关注点应落到下方独立的 Foundry 行(Foundry
保持正常颜色)。Toggle 的 disabled 行为已经在原 onToggle 条件里,本次
纯加视觉灰显。
* fix(windows): 前端 App.tsx 在 show 主窗口前读 startMinimized 兜底
#471 在 Rust 端 setup() / single-instance callback 都加了 start_minimized
suppression,本机日志确认 Rust 路径完全正确("[main] start_minimized=true
→ 跳过初始 show")。但用户在 Win11 1.3.4-3 上仍然「重启进桌面那一刻主
窗口就出来了」。
定位到最后一条遗漏路径在前端:App.tsx 里 mount 时一条 useEffect 无条件
通过 IPC 调 `getCurrentWindow().show()`,把 Rust 端已经 suppress 的窗口
又拉出来 —— 这条路径 Rust log 完全看不见(走的是 plugin-window 的
showWindow IPC,不经过我们的 show_main_window helper)。
那条 useEffect 当初是给 issue #163 引入的:Windows 权限探测可能死锁让
首屏卡灰,所以前端兜底 force show 一次。
修法:show 前先读 prefs.startMinimized,true 就 return。读 prefs 失败
(极少数情况)保持原 show 行为,不让 #163 的兜底语义丢失。
closes #468 (the actual one this time, Rust + JS 双端都收敛了)
---------
Co-authored-by: baiqing <lbx12309@icloud.com >
2026-05-18 15:29:33 +08:00
TRIP and baiqing
859fd5370f
feat(updater): Beta 渠道接通 auto-update(Builder.endpoints runtime 切换) ( #465 )
...
* feat(updater): Beta 渠道接通 auto-update(Builder.endpoints runtime 切换)
CLAUDE.md 之前的论断「tauri-plugin-updater 2.10 Builder 不暴露 endpoints()」在
2.10.1 已不成立 —— Builder 现在有 .endpoints(Vec<Url>) -> Result<Self>,build()
里 self.endpoints.unwrap_or_else(|| self.config.endpoints.clone()) 走 runtime 覆盖。
实现 channel-aware 自动更新(不 fork plugin、不写自定义下载/签名校验):
Rust(~100 行新增)
- commands.rs::app_check_update_with_channel:
Stable → webview.updater_builder().build()?.check()(默认 endpoints 从 tauri.conf)
Beta → fetch_latest_beta_release() → 拼镜像 + 直连两份 -beta manifest URL
→ builder.endpoints(urls)?.build()?.check()
- AppUpdateMetadata 字段形状对齐 plugin 的 UpdateMetadata(rid + currentVersion
+ version + body + rawJson),前端 new Update(metadata) 即可复用 plugin 的
download / install / close。
- lib.rs 注册新 command。
前端(~30 行改动)
- AutoUpdate.tsx::checkForUpdates 从 import('@tauri-apps/plugin-updater').check
改为 invoke('app_check_update_with_channel');其余 download / install / close
全走 plugin 原生 JS API(new Update(metadata) 后链式调用)。
- SettingsModal::BetaChannelControl 删掉「打开 GitHub 下载」按钮 ——
auto-update 接管了,手动下载路径冗余;保留「最新 Beta 版本号 + 刷新」做信息透明。
- i18n 5 个 locale 改 betaChannelDesc 文案,把「需要手动下载安装」改成
「自动接收最新 Beta 版本」。betaChannelDownloadBtn 等 i18n key 暂留(无用但无害)。
物理隔离仍生效:Beta tag 的 manifest 文件名带 -beta 后缀,跟 Stable 的
latest-{tgt}-{arch}.json 在 GitHub Release assets 里是分开两份;即使代码逻辑
错把 Beta URL 给 Stable 用户也是 HTTP 404,不会拿到错档。
验证:cargo test --lib serial 270 / 0 / 0;tsc clean;vite build clean。
* feat(settings): BetaChannelControl 加版本比对 + 「立即更新」按钮
之前 BetaChannelControl 在 toggle 打开后,只机械显示「最新 Beta: vX-beta-tauri」,
不管本机版本是不是已经等于那个 tag。用户报告:「显示有最新 Beta,但应该比对版本号」。
修复:
- parseVersionFromBetaTag("v1.3.4-1-beta-tauri") → "1.3.4-1"
- semverGreater(remote, local) 做 SemVer 风格比对(支持 X.Y.Z 和 X.Y.Z-N,覆盖
本仓库实际版本格式;prerelease 按 SemVer 规则 lower than no-prerelease)
- 本机 >= 最新 → 「最新 Beta: vX」 + 蓝色「已是最新」chip
- 本机 < 最新 → 「最新 Beta: vX」 + 「立即更新」按钮(蓝色高亮)
- 「立即更新」点击 → useAutoUpdate.checkForUpdates → 走和全局「检查更新」按钮
完全相同的 download/install 流程,UpdateDialog 直接挂在 BetaChannelControl 内部
- 用户的第二个 feature 诉求:「在 Beta 渠道旁边一键检查 + 自动更新」 = 这个按钮
i18n 5 个 locale 加 4 个 key:betaChannelUpToDate / betaChannelUpdateNow /
betaChannelUpdateNowTitle / betaChannelChecking。
* chore(release): bump 1.3.4-1 → 1.3.4-2 for Beta channel
`-2` 后缀让 appVersion.ts 的 IS_BETA_BUILD 仍判为 Beta,UI BETA 标签照常显示。
配本 PR 的 Beta auto-update + BetaChannelControl「立即更新」按钮,1.3.4-1 用户
切到 Beta 渠道后点检查会发现 1.3.4-2 并走 auto-update 流程一键升上来。
发布 tag:v1.3.4-2-beta-tauri。
---------
Co-authored-by: baiqing <lbx12309@icloud.com >
2026-05-17 11:15:06 +08:00
TRIP and baiqing
0ecb3bd5a4
chore: bump 1.3.4-1 + sidebar 底部行折成单行 ( #462 )
...
* feat(shell): sidebar 底部行折成单行(设置 + 版本)
把 sidebar 底部「⚙ 设置」和「版本 v1.3.x」从上下两行折成一行:
- 设置按钮 display 由 flex 改成 inline-flex,去掉 label 的 flex:1
(不再撑满 sidebar 宽度)
- 版本 chip(含 BETA 标)用 marginLeft: auto 推到行尾
外观更紧凑、纵向更省、视觉重心从两行散开收到一行。
* chore(release): bump version 1.3.3 → 1.3.4-1 for Beta channel
`-1` 后缀让 appVersion.ts 的 IS_BETA_BUILD 自动判为 Beta,UI 上的
BETA 标签会自动恢复显示。bump-version.sh 不收带 dash 的 prerelease
格式,所以这次手动同步 5 个文件(package.json / package-lock.json
root + nested / tauri.conf.json / Cargo.toml / Cargo.lock)。
发布 tag 仍走 v<v>-beta-tauri:v1.3.4-1-beta-tauri。
---------
Co-authored-by: baiqing <lbx12309@icloud.com >
2026-05-17 10:18:21 +08:00
baiqing
e6749b1d71
chore(release): bump version 1.3.2-3 → 1.3.3 for Beta channel
...
为 v1.3.3-beta-tauri 发布周期 bump 版本,5 个版本字段同步:
- package.json
- package-lock.json (root + packages[""])
- src-tauri/tauri.conf.json
- src-tauri/Cargo.toml
- src-tauri/Cargo.lock (cargo update -p openless)
含本周期 Beta 主要改动:
- Pro 风格"清晰结构"提示词 v1.7(回 v1.3.0 设计哲学)+ Light 模式语音纠错
- 「我的发布」改为弹框形态(搜索/登录/关闭三段顶部布局,已下架 5 分钟自动消失,Modal 进入动画)
- Marketplace URL 硬编码 apic.openless.top(Settings 不再输入)
- 风格市场按钮移到 Style 页刷新左
- list cache (sessionStorage, 5min) 重开秒呈现 + optimistic UI (like/upload)
- GitHub OAuth Device Flow Phase 1(client_id Ov23liyv3nEucG7oMHNE,登录后自动填 marketplaceDevLogin)
- 上传 picker 两步式确认 + z-index 修复
2026-05-16 17:26:35 +08:00
baiqing
efa94afc27
chore(release): bump version to 1.3.2-3 (Beta)
2026-05-15 12:35:02 +08:00
baiqing
5695d8c467
chore(release): bump version to 1.3.2-2 (Beta)
2026-05-15 08:42:08 +08:00
baiqing
e0a48ce801
chore(release): bump version to 1.3.2-1 (Beta)
2026-05-14 15:00:15 +08:00
baiqing
eca6fae8c0
chore(release): bump version to 1.3.1 (Stable)
2026-05-14 12:58:30 +08:00
baiqing
d3f56c2926
chore(release): v1.3.1-20 — Wayland callout 三命令 + Qwen3-ASR 长语音修复
...
- PR #433:Wayland callout 补全 --toggle-qa / --cancel-dictation
三命令并列 + 五语言同步翻译
- PR #434:本地 Qwen3-ASR 末段静默 padding 修末 chunk 丢内容;
动态超时 max(15, ceil(audio_s × 0.6) + 10) 修长录音超时
2026-05-13 23:11:13 +08:00
baiqing
38f202a010
chore(release): v1.3.1-19 — SelectLite zoom 偏移 + 闪动修复(PR #428)
...
bump 1.3.1-18 → 1.3.1-19,6 处版本号手动同步(bump-version.sh regex 不收
Beta 版本号):package.json / package-lock.json (root+nested) / tauri.conf.json
/ Cargo.toml / Cargo.lock(openless)。
[变更]
- SelectLite 下拉位置在 html.zoom != 1 下不再右偏(fontScale 的 large 档影响
最大);CSS zoom 在 WKWebView 下让 getBoundingClientRect 返回 post-zoom
坐标但 position:fixed 用 pre-zoom 坐标,positionPopover 现在补偿 zoom 转回。
- 下拉打开瞬间的位置闪动消除(popoverMounted state 触发 useLayoutEffect 同步
二次定位,替代 requestAnimationFrame 的 post-paint 校正)。
- 移除 macOS 走原生 <select> 的旁路分支,三平台统一自定义 popover。
2026-05-13 14:27:34 +08:00
baiqing
b4aa4972dd
chore(release): v1.3.1-18 — Wayland CLI 触发修复 #420
2026-05-13 12:47:03 +08:00
baiqing
c5bdb02595
chore(release): v1.3.1-17 — Mac native select + 胶囊白底升 0.85 + ASR 行清理
...
[SelectLite]
- macOS 走原生 <select>(NSPopUpButton),不再用自定义 portal popover——
WKWebView 里 portal+position:fixed 的位置漂移问题反复修不干净
- Win/Linux 仍用自定义 popover:popover 锁到 trigger 宽(width 不再用 minWidth),
避免内容撑大跑出 trigger 范围
- positionPopover 横向 maxLeft 用 rect.width,两帧 left 一致
[Capsule]
- pill 白底 alpha 0.62 → 0.85(用户:"让白色更白一些")
- cancel/confirm 按钮保持 1.3.0 stable 取值;thinking 字号 17/weight 600/cap-shine
动画保留
- 此前 v1.3.1-9 ~ v1.3.1-15 多轮 alpha 微调 / NSVisualEffectView 实验全部回退
[Settings ASR 行]
- 下拉只保留云端 provider,删 disabled 的本地引擎条目
- 本地引擎激活时下拉锁住 + 显示一行"ASR 提供商已被接管"提示
- i18n 五语言加 settings.providers.asrProviderTakenOver
[版本]
1.3.1-8 → 1.3.1-17,四处版本号同步
2026-05-12 21:58:51 +08:00