Skip to content

feat(updater): add release notes tab and one-time post-install dialog - #418

Open
WilliamWang1721 wants to merge 19 commits into
Kuddev:mainfrom
WilliamWang1721:feat/update-release-notes
Open

WilliamWang1721 wants to merge 19 commits into
Kuddev:mainfrom
WilliamWang1721:feat/update-release-notes

Conversation

@WilliamWang1721

Copy link
Copy Markdown
Contributor

Result / 用户结果

新增设置“更新内容” Tab。自动安装成功后首次启动展示一次当前版本的 GitHub Release description,支持 Markdown 富文本,重启不重复展示。

Design / 设计边界

复用现有 TextView、安装交接记录和带锁的持久化状态。保存对应版本的 Release body;Tab 与弹窗共用视图。没有新增依赖或安装权限。

Evidence / 验证依据

  • 完成两轮独立审查;本地编译、架构、格式和国际化检查通过。
  • 功能提交 8e0896c 的五平台原生测试及 Release 检查全部通过:
    https://github.com/WilliamWang1721/pebrel/actions/runs/36748073849
  • 已同步最新上游 8cedb51,没有落后;同步仅涉及 Android 验收及 README,功能代码与验证版本一致。
  • 回归覆盖富文本、版本匹配、成功安装/回滚、单次展示、关闭按钮及 Escape。
  • 未进行真实安装、原生截图或真实 DPI 的手工验收。

Required Review / 必须确认

  • 遵循贡献、架构和项目约束。
  • 按职责划分模块,没有重复行为权威。
  • 架构检查通过,预算未提高。
  • 覆盖成功与失败,验证限制已说明。
  • 使用类型化国际化 ID、匹配占位符和英文回退。
  • 无治理规则变更。

AI assistance: GPT-6 Codex.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The single-version cache can evict pending update notes and prevent the promised offline post-install dialog.

Review effort: Balanced
Findings: 1 Medium severity · 1 Low severity

Open (2)
What changed in this PR

Adds version-specific release notes to Settings and a one-time post-install dialog.

Changes:

  • Caches, snapshots, fetches, and acknowledges release notes.
  • Adds shared Markdown UI and Settings navigation.
  • Defers the dialog until a visible window exists.
File Description
nebula_app/​src/​update_download/​handoff/​tests.rs Tests successful and rolled-back handoffs.
nebula_app/​src/​update_download/​handoff.rs Snapshots notes and verifies completed updates.
nebula_app/​src/​update_check/​release_notes.rs Implements release-note persistence and retrieval.
nebula_app/​src/​update_check/​fallback.rs Extends fallback release metadata.
nebula_app/​src/​update_check.rs Caches bodies and emits installed-update events.
nebula_app/​src/​gpui_shell/​workspace/​windowing/​transfer_tests.rs Tests visible-window deferral.
nebula_app/​src/​gpui_shell/​workspace/​windowing/​shell_events.rs Routes process-level shell events.
nebula_app/​src/​gpui_shell/​workspace/​windowing.rs Extracts shell-event dispatching.
nebula_app/​src/​gpui_shell/​workspace/​update_dialog.rs Queues and claims installed notes.
nebula_app/​src/​gpui_shell/​workspace/​residency.rs Handles the new shell event variant.
nebula_app/​src/​gpui_shell/​workspace.rs Updates dialog exports.
nebula_app/​src/​gpui_shell/​settings_pane/​tests.rs Updates navigation expectations.
nebula_app/​src/​gpui_shell/​settings_pane/​search_header.rs Tests release-note search terms.
nebula_app/​src/​gpui_shell/​settings_pane/​navigation.rs Adds the release-notes section.
nebula_app/​src/​gpui_shell/​settings_pane/​initialization.rs Initializes release-note view state.
nebula_app/​src/​gpui_shell/​settings_pane/​about.rs Links About to the internal section.
nebula_app/​src/​gpui_shell/​settings_pane.rs Renders the release-notes section.
nebula_app/​src/​gpui_shell/​release_notes.rs Adds shared Markdown view and dialog.
nebula_app/​src/​gpui_shell/​mod.rs Registers UI module and event.
nebula_app/​i18n/​zh-CN.json Adds Chinese UI messages.
nebula_app/​i18n/​en-US.json Adds English UI messages.
architecture/​notes/​nebula_app/​update_check/​2026-09-30-installed-release-notes.md Records persistence design.
architecture/​notes/​nebula_app/​gpui_shell/​workspace/​windowing/​2026-10-01-installed-notes-visibility.md Records visibility lifecycle design.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +13 to +15
fn cache_path() -> PathBuf {
nebula_settings::settings_dir().join("updates/release-notes.json")
}

## Status

Implemented; regression validation pending.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants