Qiu Yuzhou
3a10b7524c
refactor: consolidate subscription update execution ownership
2026-10-25 22:30:19 +08:00
Qiu Yuzhou
34caebf322
feat: add GUI-scoped subscription automatic updates ( #1516 )
...
* feat: add GUI-scoped subscription automatic updates
* fix: drain newly due subscription updates during a batch
* style: use segmented subscription update pickers
2026-10-25 20:21:06 +08:00
Qiu Yuzhou
b6b9349d64
style: resolve SwiftLint violations
2026-10-23 01:10:40 +08:00
Qiu Yuzhou
507917ab67
refactor(ng2): store secrets directly in server library records
2026-10-18 17:58:30 +08:00
Qiu Yuzhou
d8a11f7b6b
feat: encrypt persistent server library
2026-10-18 07:57:10 +08:00
Qiu Yuzhou
fba9e0250f
feat(servers): add subscription update with inline feedback
2026-10-14 21:37:20 +08:00
Qiu Yuzhou
ebcd7ab2e2
feat(connectivity): add manual server connectivity tests
2026-10-14 00:53:52 +08:00
Qiu Yuzhou
c49d605a5b
chore(ng2): remove fork issue references from comments
2026-10-13 00:38:06 +08:00
Qiu Yuzhou
e50f671975
feat(servers): add ordered favorites
2026-10-09 23:20:11 +08:00
Qiu Yuzhou
f23a24f203
feat(servers): add node creation and modification timestamps
...
CatalogEntry gains createdAt/updatedAt and the catalog document moves to
v5 (reads v1-v5, writes v5). Modification time is structure-sensitive:
editing a node's own fields bumps the node, a group's direct child set
or order changes bump the group, and a moved node keeps its timestamps.
No-op writes and unchanged subscription refreshes bump nothing; the
refresh rebuild compares per node, so surviving leaves keep theirs. All
times are passed in by callers as now: Date - one moment per logical
commit, the domain layer stays clock-free. Legacy documents load with
nil (unknown, never backfilled); duplicates and imports stamp fresh
times at the moment of the operation.
Semantics are recorded as glossary term 节点时间戳 and ADR 0031. No UI
in this change.
2026-10-09 18:04:48 +08:00
Qiu Yuzhou
bdcbc6cd60
feat(servers): separate details from edit forms
2026-10-06 12:25:13 +08:00
Qiu Yuzhou
fb428f12bc
refactor(app): 按分层重组 App/ 源码目录
...
App/ 根目录原有 73 个散落源文件,已无法从目录读出任何分组信息。
按「目录即分层」重组为 Composition / Application / Presentation / UI /
PlatformEffects / Resources 六个目录,UI 层再按子视图分目录(Workspace、
Home、Servers(含 Plugin)、Subscriptions、Rules、Settings、Diagnostics、
StatusMenu)。纯移动:类型名、模块名与 import 均未改动,App/ 根层不再有
散落文件。
配套改动:
- project.yml:Core 测试镜像的 excludes 由裸文件名改为 `**/` 递归形式。
XcodeGen 的 exclude 不跨 `/`,裸名只匹配 App 根层;MainApp.swift 下移后
旧写法会静默失效,把 @main 组合根编进测试镜像。info.path 与
entitlements.path 指向 App/Resources/;并排除 `**/*.md`——App/ 下任何
非源码文件都会被 XcodeGen 收进 Resources 阶段并封进签名后的 bundle。
- SkeletonTests 的架构守卫由「默认扫描全部 App/ + 7 个豁免文件 + 1 个豁免
前缀 + 4 个豁免目录」改为正面圈定 App/UI/,豁免登记全部删除;新增运行时
适配器放进 Application/ 即自动落在扫描范围外,无需再登记。
- README 工程结构说明同步;根 .gitignore 的生成物路径随 Resources/ 归位。
验证:clean build 0 error;task test 1022 用例全通过(含两个架构守卫);
task format 无改动(证明纯移动);task lint 与移动前同为 21 条内容型
warning;packaging-gate.sh ALL CHECKS PASSED,确认 plist/entitlements 归位
后签名与 entitlements 语义不变。
注意:迁移时须先删旧的生成物再 xcodegen generate,否则遗留的 App/Info.plist
会被当作普通资源扫进 Resources 阶段。
2026-10-05 19:56:18 +08:00