Max Lv:meow iOS 状态图标跟随应用图标的 PR #351 完成审查并推入跟进提交
在 meow-ios 让首页状态图标镜像所选应用图标的 PR #351(由 gengjiawen 提交,分支 fix/status-glyph-follows-app-icon)下,维护者 madeye 给出合并前审查:`AppIconStore` 是图标选择的唯一所有者,iOS 仍是持久化层,`current` 只在 iOS 接受切换后前进,被拒绝的切换会重新同步,重新选择已安装图标会跳过系统弹窗。tvOS 检查:tvOS 目标会编译 `App/Sources/Services` 与 `AppModel.swift`,而 `AppIconStore` 与 `appIconStore` 属性都在 `#if os(iOS)` 内,`MeowApp.swift` 与相关视图不在 tvOS 目标中,因此 `meow-tvos` 仍可构建。已推入跟进提交:rebase 到当前 main,另有提交 6d64f87 用 `scripts/generate-xcodeproj.sh` 重新生成 `project.pbxproj`(自动合并的那份已与 `project.yml` 漂移)。本地检查:`swiftformat --lint .` 与 `swiftlint --strict` 干净,`meow-tvos` 构建通过,`xcodebuild test`(iPhone 17)245 项 Swift Testing 测试与 XCTest 套件全部通过,含新增的 `AppIconStore`/`AppIcon model` 套件;首轮 3 项 `ShadowsocksAddServiceTests` 的 `load_config_from_str (validation)` 失败为已知 live-bootstrap-DNS 抖动,与本改动无关,重跑通过。CI 通过后合并。
作者原文@madeyeReviewed. Looks good, thanks @gengjiawen.
AppIconStoreis the single owner of the icon choice. iOS remains the persistence layer,currentonly advances once iOS accepts the switch, a declined switch re-syncs, and re-selecting the installed icon skips the system alert.- tvOS check: the tvOS target compiles
App/Sources/ServicesandAppModel.swift.AppIconStoreand theappIconStoreproperty are both under#if os(iOS), andMeowApp.swiftand the views aren't in the tvOS target, someow-tvosstill builds.- Pushed: rebased onto current
main, plus6d64f87, which regeneratesproject.pbxprojwithscripts/generate-xcodeproj.sh. The auto-merged one had drifted fromproject.yml.Local:
swiftformat --lint .andswiftlint --strictare clean.meow-tvosbuilds.xcodebuild test(iPhone 17): all 245 Swift Testing tests and the XCTest bundles pass, including the newAppIconStore/AppIcon modelsuites.- The first run had 3
ShadowsocksAddServiceTestsfailures withload_config_from_str (validation). That is the known live-bootstrap-DNS flake, not this change, and the suite passes on rerun.I'll merge once CI is green.