胡飞
|
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 |
|