Files
ShadowsocksX-NG/ShadowsocksX-NG2
Qiu YuzhouandDeepSeek Harness e7116a5ebd test: merge duplicated cases into the stronger one
Every case here restates a rule another test already pins with the same or a
wider input class:

- the activation group case is byte-identical to its neighbour, minus an extra
  assertion; the rule snapshot version guard is re-driven with a second value
  of the same schemaVersion check; the global-mode deployment-failure case is
  a mode-literal copy of the strictly stronger direct-mode one; the clear-
  failure case duplicates the deferred-retry sibling
- two RuntimeDocument projection cases only re-map locals, already asserted as
  full array equality; the IPv6-LAN endpoint case repeats the direct-mode case
  (the derivation reads only ports)
- the three HTTP export cases varied only listenerMode while the derivation
  ignores it and one name contradicted its own expectation; one loop over all
  listener modes now states the real rule
- the 0700/0600 permission baseline is one AtomicFileWriter behavior and stays
  pinned through RuntimeFileStoreTests, which also covers self-heal and atomic
  replace

The command-boundary case keeps its mixed-scenario isolation check (four
commands, four independent adapter counters) and drops only its unfalsifiable
queriedTargetIDs claim.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-21 01:46:29 +08:00
..
2026-10-20 17:21:44 +08:00

ShadowsocksX-NG2

ShadowsocksX-NG 的现代化重写版本,面向 macOS 15+ / Apple Silicon(arm64)。新工程的源码与构建配置位于本目录,旧版归档见仓库首页。

依赖的 sslocal、v2ray-plugin 与 Cloak ck-client 使用上游发布的可执行文件。HTTP 入站由 shadowsocks-rust 直接提供,不再携带 Legacy Privoxy。

开发、构建与测试

准备 Xcode/Swift 工具链、Task、XcodeGen 和 SwiftLint;工具基线与安装说明见开发指南。

从本目录执行首次构建,先获取外部二进制,再生成工程:

Scripts/fetch-external-binaries.sh
task gen:prj
task build

Debug 默认使用 ad-hoc 签名,无需证书;Developer ID 配置与发布门槛见签名与分发。工程配置以 project.yml 为准,生成的 .xcodeproj 不入库。

从仓库根目录运行统一验证:

task --exit-code --taskfile ShadowsocksX-NG2/Taskfile.dist.yml validate
# 按指定顺序只运行所需关卡:
task --exit-code --taskfile ShadowsocksX-NG2/Taskfile.dist.yml validate -- lint test

默认顺序为 lint → test → test:smoke → build,失败即停止,日志与结果保存在 ShadowsocksX-NG2/.build/validation/。在本目录内可直接运行 task --exit-code validate。单项任务、证据读取与测试边界见开发指南。

文档导航

文档 内容
开发、构建与测试 验证入口与产物、单项任务、代码风格工具、Git hooks、文档语言
工程结构与源码搜索 源码分层、测试目录、跨 target 文件约束、搜索方法
外部二进制、签名与分发 供应链校验、Debug/Release 签名、发布门槛、依赖升级
内置规则快照 来源、转换语义、维护脚本与离线检查
订阅、插件与监听配置 订阅资料、用户插件、Cloak、本地与局域网监听、配置恢复
服务器库加密格式 加密文件格式与外部解密约定(English)

领域术语与已定设计见术语表和架构决策记录。docs/design/ 与 docs/research/ 为历史设计和研究记录,判断当前实现时以代码为准。