249 Commits
Author SHA1 Message Date
胡飞 bd34cc4643 feat(tray): 关闭按钮询问「最小化到托盘 / 退出应用」,并修复 Windows 重复启动
关闭行为从「托盘可用就隐藏」改成先看用户偏好:

1. 新增 `AppSettings.close_button_behavior`(`ask` / `minimize_to_tray` / `quit`,
   默认 `ask`,未知值回退 `ask`),`main_window_close_action(tray_ready, behavior)`
   纯策略三态:托盘不可用一律 `RequestQuit`,不与偏好互动 —— 宁可退出也不能
   制造用户找不到、也没法恢复的隐藏窗口。
2. `AskUser` 弹窗的两条出路各自渲染按钮(`tray-close-minimize` / `tray-close-quit`),
   带「记住我的选择」,勾选后落盘。刻意不用默认 ok/cancel footer:默认 footer
   只有两个固定按钮,「取消」兼职退出会让 Esc 和点遮罩也走成退出应用;而
   `button_props` 跟在 `confirm` 之后设置还会把 `show_cancel` 重置、吞掉第二个
   按钮(前一版就是这么丢的)。
3. 「记住」勾选框放在独立 entity:弹窗 body 由 `Root` 渲染,`NavopApp::notify`
   重绘不到它。`close_choice_prompt_open` 防连点叠窗,关窗复位。
4. 设置页通用页新增「关闭窗口行为」下拉,与弹窗写同一份偏好;托盘不可用时
   该设置不生效。

Windows 单实例:interprocess 的命名管道带 `FILE_FLAG_FIRST_PIPE_INSTANCE`,名字
已存在时返回 `ERROR_ACCESS_DENIED(5)` 而非 `AddrInUse`,且错误原样透传、无 error
kind 归一化,旧判定永不命中 ⇒ 第二个实例把自己当主实例、起出完整进程。改为
`instance_name_taken()` 认 `AddrInUse` 或 `raw_os_error` ∈ {5, 231},其余错误不
误判为「已占用」。

运行:`cargo test -p one-core --lib settings`(112 passed)、`cargo test -p main`
(634 passed);`cargo check -p main --all-targets`、`cargo clippy -p main
--all-targets`(改动文件零告警)通过。Windows 重复启动与弹窗交互仍需真机冒烟。
2026-09-18 16:30:52 +08:00
胡飞 eff17b78aa docs(tray): 同步托盘设计稿与实际实现
设计稿与落地代码在四处已不一致,按实现真相修正:

- 后端选择:macOS/Windows/Linux 统一用 tray-icon(Linux 走其 ksni feature),
  不再是「Linux 用独立 ksni crate」两套后端。
- window_visibility 签名去掉 cx: &mut App;恢复路径改为两段式
  (main_window_target 借用内 + show_main_window 借用外),并说明原因:
  在 GPUI 借用内同步调用 makeKeyAndOrderFront/NSApplication::activate 会让
  AppKit 同步回调 on_active_status_change 重入 App 借用。
- 图标处理:改为解码 PNG 并缩放到 32px RGBA,不再手写 ARGB32 变换。
- 测试策略:补充源码守卫清单(关闭策略、菜单/点击映射、图标解码、
  thread_local 保活、命令通道分离、原生恢复在借用之外)。
2026-09-17 15:36:25 +08:00
user.email 5728b011f9 feat(resource-view): 资源工作台 v2 区域化布局与 Shell 覆盖
- manifest/resource_view 引入 left/center/right/bottom 四区域布局,取代 navigation/tree/statusBar 与 per-page tabs
- extension-runtime / universal-plugins / resource_view 适配 v2 manifest 与布局绑定
- 全局导航布局与工作区资源树(workspace_explorer)适配
- terminal / terminal_view 相关调整
- 补充 Resource Workbench v2 设计文档
2026-09-15 10:01:57 +08:00
user.email 9b4758ebb0 docs(plans): 记录独立审查修复与保留决策 2026-09-11 20:13:55 +08:00
user.email 0be37a2770 docs(plans): 记录数据库值模型改造的实施状态
同步 T01-T09 完成项、验证证据与 T10-T12 阻塞项,明确 typed_batch 为权威值、rows/binary_cells 为兼容投影的决策。
2026-09-11 18:28:06 +08:00
user.email fb62a53723 docs(superpowers): 提交数据库值模型重构计划与原生资源工作台 specs 2026-09-10 12:19:28 +08:00
胡飞 ca20c801c8 feat(file-manager): migrate remote delete to global SFTP executor 2026-08-27 08:57:13 +08:00
胡飞 3877891692 feat: harden background transfers and zmodem uploads 2026-08-26 22:45:57 +08:00
胡飞 cc6e1519fc docs(terminal): update optimization review notes 2026-08-26 16:41:44 +08:00
胡飞 7689e9f386 fix(rdp): Windows 独立窗口改用系统 mstsc 2026-08-24 10:16:01 +08:00
胡飞 66fabf6b30 docs(remote-desktop): record GPUI quit observer Windows verification 2026-08-18 23:43:21 +08:00
胡飞 282b3049e2 test(remote-desktop): cover GPUI quit observer shutdown 2026-08-18 23:43:21 +08:00
胡飞 1b812a77cd docs(remote-desktop): record polled shutdown Windows verification 2026-08-18 23:43:21 +08:00
胡飞 e9205382b9 fix(remote-desktop): await RDP drain with supported executor APIs 2026-08-18 23:43:21 +08:00
胡飞 90b0c9ad05 test(remote-desktop): cover polled RDP shutdown interruption 2026-08-18 23:43:21 +08:00
胡飞 1eaa9b583a fix(remote-desktop): keep cancellation test on public report API 2026-08-18 23:43:21 +08:00
胡飞 9fadd85cfb test(remote-desktop): preserve RDP drain state on cancellation 2026-08-18 23:43:21 +08:00
胡飞 9e298cf1d6 fix(remote-desktop): import GPUI global context trait 2026-08-18 23:43:21 +08:00
胡飞 3a78b796bb fix(remote-desktop): serialize RDP typelib generation 2026-08-18 23:43:21 +08:00
胡飞 002a2edab4 test(remote-desktop): enable GPUI Windows test support 2026-08-18 23:43:21 +08:00
胡飞 a5d0311e82 fix(remote-desktop): fail closed on platform RDP quit 2026-08-18 23:43:21 +08:00
胡飞 a32fd41177 fix(remote-desktop): fail closed on RDP dispatcher rejection 2026-08-18 23:43:21 +08:00
胡飞 2fdffcadbc fix(remote-desktop): bound native RDP application shutdown 2026-08-18 23:43:21 +08:00
胡飞 0748e7f2cb docs(remote-desktop): record detached RDP cleanup verification 2026-08-18 23:43:21 +08:00
胡飞 f92b4a516a docs(remote-desktop): record native RDP close verification 2026-08-18 23:43:21 +08:00
胡飞 21aa430827 docs(remote-desktop): record native RDP tab integration 2026-08-18 23:41:35 +08:00
胡飞 9c8a669589 feat(remote-desktop): pump native RDP events on UI thread 2026-08-18 23:41:35 +08:00
胡飞 fabcdc9e75 feat(remote-desktop): classify native RDP HRESULTs 2026-08-18 23:21:33 +08:00
胡飞 682a27786e feat(remote-desktop): expose native presentation fallback 2026-08-18 23:21:33 +08:00
胡飞 9c206db070 feat(remote-desktop): wire native RDP presentation lifecycle 2026-08-18 23:08:29 +08:00
胡飞 255e315513 feat(remote-desktop): classify native RDP event diagnostics 2026-08-18 22:27:01 +08:00
胡飞 e64a3a6ff8 feat(remote-desktop): reduce native RDP events on owner thread 2026-08-18 22:27:00 +08:00
胡飞 80cfc89360 docs(remote-desktop): record extended reason verification 2026-08-18 22:27:00 +08:00
胡飞 dd0ebc2199 docs(remote-desktop): record ActiveX event runner evidence 2026-08-18 22:27:00 +08:00
胡飞 ac8814d080 feat(remote-desktop): add ActiveX RDP event sink 2026-08-18 22:27:00 +08:00
胡飞 f5398b7350 feat(remote-desktop): decode typed RDP host events 2026-08-18 22:27:00 +08:00
胡飞 8474baf689 feat(remote-desktop): add minimal RDP connection slice 2026-08-18 22:27:00 +08:00
胡飞 7af4eb77ee feat(remote-desktop): set ActiveX UI parent window 2026-08-18 22:27:00 +08:00
胡飞 1c6bec8454 feat(remote-desktop): add ActiveX child presentation controls 2026-08-18 22:27:00 +08:00
胡飞 f1000c3ce2 feat(remote-desktop): create hidden ActiveX child host 2026-08-18 22:27:00 +08:00
胡飞 c00a54b345 test(remote-desktop): cover cleanup ownership retries 2026-08-18 22:27:00 +08:00
胡飞 04b764e46d feat(remote-desktop): expose host lifecycle state 2026-08-18 22:27:00 +08:00
胡飞 f42b1abdcd test(remote-desktop): exercise native credential transport 2026-08-18 22:27:00 +08:00
胡飞 81fc4760c3 feat(remote-desktop): enforce Windows RDP callback quiescence 2026-08-18 22:27:00 +08:00
胡飞 0cac6dce86 docs(remote-desktop): record Windows RDP credential ABI evidence 2026-08-18 22:27:00 +08:00
胡飞 b0766645c5 feat(remote-desktop): add zeroizing Windows RDP credentials transport 2026-08-18 22:27:00 +08:00
胡飞 d7901dc927 docs(remote-desktop): record Windows RDP callback ABI evidence 2026-08-18 22:27:00 +08:00
胡飞 eb9916aa29 feat(remote-desktop): add owned Windows RDP event bridge 2026-08-18 22:27:00 +08:00
胡飞 4e4168d2d3 docs(remote-desktop): record Windows RDP host ABI evidence 2026-08-18 22:27:00 +08:00
胡飞 e44c8604cd docs(remote-desktop): record Windows RDP probe runner evidence 2026-08-18 22:27:00 +08:00