Skip to content

Optimize UI display and using blessed privileged operations#2

Merged
jdjingdian merged 5 commits intomainfrom
newui_dev
Mar 16, 2026
Merged

Optimize UI display and using blessed privileged operations#2
jdjingdian merged 5 commits intomainfrom
newui_dev

Conversation

@jdjingdian
Copy link
Copy Markdown
Owner

@jdjingdian jdjingdian commented Mar 16, 2026

v1.1 — UI 重设计 & 授权机制升级

背景

此 PR 将应用从旧版基于 AppleScript/osascript 的权限提权方案,完整迁移至 SMJobBless(Blessed) 特权助手机制,同时对整体 UI 架构进行了彻底重写,从 CoreData + 单页 ContentView 演进为 SwiftData + NavigationSplitView 的现代 macOS 应用结构。


主要变更

授权机制

  • 移除基于 osascript 的临时提权方式
  • 引入 SMJobBless 特权助手(RouteHelper target),通过 XPC 安全通信执行 /sbin/route 特权操作
  • 支持 Helper 安装、状态检测与自卸载

UI 架构重写

  • 整体布局改为 NavigationSplitView(侧边栏 + 主内容区)
  • 侧边栏支持路由分组过滤,分组可增删,删除当前分组后自动跳转"所有路由"
  • 路由列表使用 Table 展示,支持行内操作按钮(编辑 / 管理分组 / 删除)、右键菜单及双击编辑
  • 新增系统路由表视图(netstat 输出),可查看全部 191+ 条系统路由,本应用添加的路由以蓝色标注
  • 系统路由表支持"仅显示我的路由"过滤切换,状态跨页面持久化(@AppStorage

数据层

  • 从 CoreData 迁移至 SwiftData(@model),提供迁移兼容器(CoreDataMigrator)
  • 路由与分组为多对多关系,手动维护双向关联
  • RouterService(@observable)统一管理路由激活状态、系统路由表刷新及 Helper 通信

其他

  • 更新应用图标
  • 新增中文本地化支持
  • 删除大量废弃代码(ContentView、RouterCore、ProcessHelper、旧 CoreData stack 等)

破坏性变更

  • 数据格式从 CoreData 迁移至 SwiftData,首次启动会自动执行迁移,旧数据格式不向后兼容

@jdjingdian jdjingdian merged commit 6532837 into main Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant