Qiu Yuzhou
9fc6446237
refactor(ng2): remove manual and external PAC
2026-09-23 18:47:15 +08:00
Qiu Yuzhou
fd9be86149
refactor(ng2): add diagnostics workflow module as single UI-facing seam
...
诊断区收敛为 DiagnosticsWorkflow 深 module(Candidate 03,issue #43 ):事实
采样、轮询代际、raw 日志投影、报告准备与导出完成登记集中一个 seam,视图只
负责生命周期触发、呈现、剪贴板、保存面板与报告文件写入。侧栏与详情共享同
一份安全摘要;收集只读,不触碰目录、凭据、runtime 与系统代理设置。
目录不再把原始 ConfigurationCatalog 写入诊断快照:CatalogWorkflow 只输出
domain-neutral 聚合事实(计数 + 已知无效数),报告 builder 只接受已裁剪的
report facts。事件导出改为显式白名单派生(diagnosticReportLine):自由
detail、主机公布地址与 runtime 错误原文一律清洗,数量/端口/领域点名原因
保留;新增事件漏 case 无法编译。raw GUI 事件行与 wrapper agent.log 尾部仅
经显式查看/复制提供,永不进入报告(ADR-0006)。导出完成事件只在用户选择的
文件实际写入成功后登记。
RuntimeEventStore 事件改为携带封闭枚举原值,渲染发生在呈现边缘(白名单清
洗只可能作用于原值)。测试:新增 workflow interface 覆盖投毒导出、白名单、
raw/报告分离、缺失标注、只读、代际覆盖与取消;ADR-0006 与 CONTEXT.md 术语
同步入库。
2026-09-22 19:22:31 +08:00
Qiu Yuzhou
e242bbf426
feat(ng2): persist proxy mode selection and drop enabled-modes
...
模式选择(菜单唯一入口)随设置快照持久化,GUI 重启恢复所选模式;持久化
失败保留旧模式并点名呈现,不静默切换。外部 PAC 模式下保存设置时,模式从
新快照解析后与 URL 一起作为一个逻辑变更提交(清空 URL 回落 PAC 并同步
持久化),校验失败先于写入。重置偏好把模式回 PAC。
enabledModes 自 ADR-0002 停止偏好迁移后无任何写入方,且 2.0 无编辑 UI,
按死状态删除:内置三模式恒可选,外部 PAC 仍以已配置的有效 URL 为门槛
(ADR-0004)。
测试:模式持久化与重启恢复、持久化失败保留旧值、外部 PAC 一个逻辑变更
回落;makeController 的 proxyMode 参数改为可选以便测试走恢复路径。
2026-09-22 17:36:24 +08:00
Qiu Yuzhou
376b648ac4
refactor(login): independent opt-in login item
...
Drop the UserDefaults intent mirror and read the toggle state only from the
system login-item registration status (approval-pending counts as enabled);
default to off until the user enables it, and stop resetting it with proxy
preferences (ADR-0005).
2026-09-22 17:32:46 +08:00
Qiu Yuzhou
a7b1b1629a
refactor(settings): remove proxy mode selector
...
Keep mode switching in the status menu as the common control.
2026-09-22 16:31:14 +08:00
Qiu Yuzhou
3dc6043dc6
refactor(ng2): remove system-level shortcuts
...
Keep proxy controls explicit and leave existing shortcut preferences untouched.
2026-09-22 16:16:58 +08:00
Qiu Yuzhou
46ebe1d835
feat(ng2): simplify Legacy import and isolate default ports ( #42 )
2026-09-22 14:26:58 +08:00
Qiu Yuzhou
ea801d5f38
feat(catalog): remove node enable state
...
Migrate legacy enabled fields to v3 without preserving their semantics.
Keep recoverable invalid imports visible and filter them during activation.
2026-09-22 08:40:13 +08:00
Qiu Yuzhou
8d1cdf27d1
feat(ng2): Legacy 交接第二阶段(#37)
...
与导入分离的「切换到 2.0」确认流程(spec #21 D12):
- Domain/LegacyHandoff:硬编码白名单三个 Legacy label(.local/.http/.kcptun),
bootout 按 service target(覆盖 plist 缺失错位形态),print 退出码验证
(0/113),`launchctl kill SIGTERM` 有文档后备,绝不泛匹配、不 pkill;
残留 plist(含 KeepAlive 形态)读内容判活跃性后 disable,阻止下次登录复活;
系统代理按特征值判定归属(Legacy 自身 off 模式的判定镜像:本地 PAC URL
http://localhost :<port>/proxy.pac、SOCKS/HTTP 地址端口),仅清理归属为
Legacy 的服务,未知所有者点名保留;端口释放门禁用无复用选项的 bind 探测
(Legacy ss-local 带 --reuse-port),未释放不启动 2.0;Legacy 数据零删除。
- App 层:SystemConfigurationLegacyProxyCleaner(授权在最前、失败零影响、
事务回滚);WorkspaceLegacyAppController(共享 bundle id 需排除自身进程);
LegacyHandoffSheet 确认/进度/报告呈现,含旧登录项人工指引与残留提示;
主窗口工具栏入口 + 导入完成后「切换到 2.0」入口;交接成功经正常启停入口
启动 2.0(健康门禁走 #29 路径)。
- bootout 实弹验证(Further Notes #5)闭环:docs/research/
legacy-handoff-bootout-live-fire.md——bootout 未加载 label 退出码为 3
(非 print 的 113),KeepAlive 残留 kill 后复活、bootout 后不再加载,
结论已回写产品代码与测试。
2026-09-21 12:49:49 +08:00
Qiu Yuzhou
5e13c1716f
feat(ng2): managed plugins end to end ( #38 )
...
- 受管插件静态事实表(v2ray-plugin v1.3.2,来源/许可证/版本/重签)与
BundleManagedPluginProvider:受管集内且 bundle 内可执行文件在位才返回
绝对路径;与 Vendor 清单双向锚定(D6/D10)
- 服务器编辑器插件区:受管选择器(无 + 受管列表),选中受管项才显示
供应链事实与参数输入;集外引用显式「本版本未提供」并原样保留
- updateServer 插件落盘语义:「无」整体清除、参数写删钥匙串、集外不漂移
- wrapper 监听建立判定:3 秒未建立本地监听记 error 日志,监管继续(D10)
- 诊断导出新增受管插件清单(名称/版本/提供状态,无参数)
- 功能级兼容实测记录(docs/research/plugin-compat-record.md)与端到端
冒烟:契约插件路径 → sslocal 拉起 → v2ray-plugin 进程建立 → 停止链
2026-09-21 10:38:30 +08:00
Qiu Yuzhou
72f9a45a74
feat(ng2): add system proxy modes and health gate ( #29 )
2026-09-20 23:31:33 +08:00
Qiu Yuzhou
252b1a631a
docs(research): add Wayfinder Issue 7 — Legacy configuration migration and legacy feature boundaries audit
2026-09-20 07:25:24 +08:00
Qiu Yuzhou
1a4b96fe83
docs(research): wayfinder issue 18 — SIP003 plugin distribution and verification boundary
2026-09-20 07:19:05 +08:00
Qiu Yuzhou
5acd4f1256
docs(research): wayfinder issue 17 — legacy runtime safe handoff APIs
2026-09-20 07:14:52 +08:00
Qiu Yuzhou
6218944b29
docs(research): wayfinder issue 16 — app firewall × non-loopback listen
...
实测结论(macOS 27.0,HITL 确认):回环零交互;launchd 语境按二进制
归属,官方 sslocal(adhoc,linker-signed)主机地址态必弹裸名弹窗;
DevID 重签静默放行为首选缓解;应答按路径落库、升级不重弹;拒绝后
本机自连不可见,需 --getappblocked 检测与定向修复文案。原型在
research/firewall-nwlistener @ 94829fe。
2026-09-20 06:12:47 +08:00
Qiu Yuzhou
6b58925bbd
docs: Add research for wayfinder issue 12 (PAC HTTP server)
2026-09-20 03:43:15 +08:00
Qiu Yuzhou
940fb603a6
docs(agents): require explicit --repo on gh (fork has upstream remote)
2026-09-20 03:42:53 +08:00
Qiu Yuzhou
d9adfdc31f
docs: research PAC implementation options
2026-09-20 02:37:37 +08:00
Qiu Yuzhou
9ab38063d4
docs: Add research documents for Wayfinder issues 4 and 6
...
- Introduced "wayfinder-issue-4.md" detailing SIP-008 nested grouping extension and subscription compatibility boundaries, including decision summaries, evidence sources, and compliance constraints.
- Added "wayfinder-issue-6.md" outlining the approach for XcodeGen, SwiftPM, and external binary packaging release, covering official release facts, XcodeGen project structure, signing procedures, and CI validation requirements.
2026-09-20 01:10:29 +08:00
Qiu Yuzhou
85a9244930
docs: add agent skills configuration (issue tracker, triage labels, domain docs)
2026-09-19 23:57:22 +08:00