Repository navigation
MacWave 3.0.2
Build number: 283F2358
新增
--ver增加新用法:现在wave install jq --ver 1.0与wave install jq --ver=1.0都有效
(此前--ver写在帮助里却不可用:不在参数白名单内,任何用法都会返回Input contains illegal fields.)。
同时--flag=value对长参数统一生效,--limit-rate=300K、--proxy=...不再被读成=300K。
安全加固
- 名字与版本号白名单:包名、版本号、远端
@common里的bin_name、依赖引用,一律只允许
[A-Za-z0-9][A-Za-z0-9._+-]*。含/ \ % @ :、空白、..或以-/.开头一律拒绝——
它们在进入 URL 或文件路径之前就被挡下,而不是拼接进去再说。 - 最终路径必须落在安装目录内:所有会被创建、改名、删除的路径都会先归一化并校验是否位于
BASE_DIR(bin/、links/、deps/、downloads/tmp)之内,防路径穿越与软链接逃逸。 - shell 侧再兜一层:
surfboard/depsmanager.sh会独立复核目标路径是否在BASE_DIR内,
即使有调用方绕过 Python 校验也写不出去。
CI
format-test现在跑 Python 3.14 + 3.15 两条矩阵线(3.15 由 Homebrew 提供,因为
actions/python-versions还没有 3.15.0 正式版)。- 新增 随机化端到端回归 job:每次随机抽 10–20 个包(必含
wget,>40MB 重抽),
随机指定/不指定版本号、随机长/短参数、10% 概率插入非法参数、1–2 个不存在的版本、
1–2 个非法版本;-C随机打断 0–3 次、--skip-ssl、--limit-rate(瞬时 + 全程速度复核)、
5% 概率在 Mach-O 重定向中途打断;list/search/info/selfupdate/link/linkquery/unlink各 5 次;
5 个非法命令与-h/--help/-V/--version(含非法参数);每次随机挑一个安装目录(33% 为~/test dir)。 - 运行时在拿到
GH_TOKEN/GITHUB_TOKEN时会给api.github.com带上鉴权,缓解未认证
60 次/小时的限流(token 只发给 api.github.com)。
不设
--latest的CI-Update20261010为独立的 CI 变更说明,本 Release 才是 3.0.2 版本发布。
附件
| 附件 | 说明 |
|---|---|
| 30 个源码文件 | 3.0.2 的全部源码,逐个单独上传(清单见下) |
format-test.yml |
更新后的 CI 工作流源码 |
MacWave-3.0.2.tar / MacWave-3.0.2.tar.gz |
3.0.1 以来改动的全部文件(运行时 + CI),保持仓库相对路径,解到仓库根目录即可 |
源码文件按 2.5 的附件格式平铺上传(附件名即文件名,不含目录),对照见下表:
| 来源目录 | 文件 |
|---|---|
lib/ |
wave.py help.py configerror.py configpaths.py selfupdate.py selfupdate.sh install.sh uninstall.sh |
pkg/ |
pkginstaller.py pkginstaller.sh pkginfohelper.py uninstaller.py pkgversionparser.py pkgunzip.sh linker.py |
scripts/ |
audit_deps.py random_test.py configpath_test.sh deps_test.sh format_test.sh link_test.sh sandbox_test.sh selfupdate_test.sh |
surfboard/ |
depsinstaller.py depsinstaller.sh depsmanager.sh depsversionparser.py querier.py tagger.sh transfer.sh |
八个 scripts/*_test.sh 与 scripts/audit_deps.py 是仓库自身的测试/审计脚本,2.5 起就一并附在 Release 里;
.Pseudocode/pkg/pkginstaller.py 是按设计不可执行的伪代码,未附上。
两个归档内容一致;打包时已归一化 mtime 与属主,因此同内容每次打出相同 SHA256:
MacWave-3.0.2.tar = 99795b99…,MacWave-3.0.2.tar.gz = 02d2dd3f…。
同步
- README(中英文)已标注 3.0.2;官网版本号已同步。
configdata的versiondata/latest_version已改为3.0.2/2026-10-10/283F2358,
并补上updatedata/3.0.2/(install.sh与wave selfupdate按「正在安装的完整版本号」查迁移数据,
补丁版本要各放一份),所以安装脚本与wave selfupdate现在拉取的就是 3.0.2。