Skip to content

feat(shell): align native menus, activation, startup readiness, and macOS smoke #169

Description

@Wangnov

背景

WebView 内部已支持 11 种语言并具备恢复机制,但原生壳层仍未达到同等完整度:窗口标题与 macOS 菜单固定为中英混排;第二次启动的恢复/聚焦错误被静默丢弃;窗口在前端确认退出 listener 注册前就 visible,极早关闭事件可能没有可见反馈。

Windows 已有 packaged lifecycle smoke,macOS 普通 PR CI 仍不打包,菜单、Cmd+Q、单实例、IPC/CSP 等只在 tag release 或人工使用时暴露。

当前证据

  • src-tauri/tauri.conf.json:18-26:原生窗口标题固定为中文。
  • src-tauri/src/lib.rs:65-95:macOS App/Quit 固定中文,Edit/Window 固定英文。
  • src-tauri/src/lib.rs:102-107:single-instance 的 unminimize/show/focus 结果全部忽略。
  • src-tauri/tauri.conf.json:24src/app/components.tsx:86-122:窗口立即 visible,前端 quit listener 到 React effect 才注册。
  • .github/workflows/win-installer-check.yml:112-119 已有 Windows packaged smoke;.github/workflows/ci.yml:59-67 的 macOS PR job明确不 bundle。

验收标准

  • 定义原生 title/menu 的系统语言或应用语言策略,统一产品名并保留标准 Edit 快捷键与 About 元数据。
  • 第二次启动可从 minimized/hidden 状态恢复并聚焦;失败写入日志,并用 request-attention 等方式降级。
  • 引入 frontend-ready 握手、启动事件排队或延迟 show,确保极早关闭/退出不会丢确认或留下无反馈窗口。
  • 对相关路径变更执行 macOS unsigned packaged smoke:启动、IPC/CSP、单实例、Cmd+Q/menu Quit、最小化/关闭。
  • 正式签名与公证秘密仍只用于 release;PR smoke 不扩大 secret 暴露面。
  • x64/arm64 与系统语言差异形成可重复的验收矩阵。

占位说明

对应 Draft PR 只保留实施入口,不修改原生菜单、启动流程或 CI,不应合并。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: P2Important product completeness or reliability follow-up

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions