mirror of
https://github.com/shadowsocks/ShadowsocksX-NG.git
synced 2026-10-29 21:53:43 +00:00
63dac7a01bd157533cad1b124cb053ce99f781c2
Issue #49: introduce CatalogWorkflowDependencies as the composition-only adapter bundle and stop exposing implementation collaborators as workflow properties. MainApp now assembles all production adapters explicitly (the workflow creates no production defaults); tests assemble hermetic fakes via a shared fixture in CatalogFixtures. Subscription tests swap fetch behavior on the injected fake instead of mutating the workflow. An architecture deletion check fails when UI source files reference implementation collaborators or raw catalog/credential storage types, and a hermetic assembly test proves the workflow runs entirely on injected fakes.
ShadowsocksX-NG
🚧 重新实现进行中 —— 本仓库正在使用现代技术栈重写 ShadowsocksX-NG macOS 客户端。
新工程不再通过 git 子模块在仓库内构建依赖,而是直接复制上游项目发布好的可执行文件,以简化构建流程。
目录结构
.
├── ShadowsocksX-NG2/ # 新工程:现代化重写版本(开发中)
└── Legacy/ # 旧版工程完整源码,仅供参考,不保证可构建
旧版工程的功能说明与使用文档见 Legacy/README.md。
开发钩子
新 clone 后,在仓库根目录启用 Git hooks:
git config core.hooksPath .githooks
启用后,pre-commit 只检查暂存区中 ShadowsocksX-NG2/ 下的 .swift 文件:swift format 的结果写回暂存区、不修改工作区;SwiftLint 的 error 级违规拒绝提交,warning 仅提示。Legacy/ 和其他文件跳过;没有 NG2 Swift 文件时直接放行。含有 NG2 Swift 文件但缺少工具时,提交检查失败。工具安装与版本见 ShadowsocksX-NG2/README.md。
Languages
Swift
95.8%
Python
2.5%
Shell
1.4%
C
0.3%