Repository navigation
✨ feat(metadata): 统一源树与发布物读取入口 - #65
mrbbbaixue wants to merge 1 commit into
Conversation
🚀 Deploying Preview to Cloudflare 🚀Preview Deployments by commit
|
|
第二步:Desktop仓库接入,并且实现Metadata缓存功能 |
审查结论能简化,但建议先修正确性问题,再合并。审查提交: 需要修复1. [P1] HTTP 文件去重不应忽略路径大小写位置:MetadataFlattener.cs:445–446
已复现:入口分别 Include 建议:文件身份比较由源实现决定,不能在展平器里统一忽略大小写。 2. [P1] 60 秒超时没有覆盖正文读取
已启动实际 HTTP 服务验证:立即返回响应头,64 秒后发送 建议:请求与正文读取共用明确的超时预算,而不是只设置 3. [P2] 入口越界检查发生在读取之后
已复现:指定允许根为 建议:路径规范化、确定源根和入口边界检查,都放在首次读取之前。 4. [P2] HTTP 入口仍然请求两次只有 已复现: 建议:复用首次读取的入口文档;若保留正文缓存,让两个入口一致使用它。 最值得做的简化
次要缺口:新校验器漏查 另有网络层契约冲突:新 验证
|
25f42b9 to
dc94f47
Compare
|
审查后修复已推送 000d880:删除LocalId手写百分号格式拒绝,完整键scope:icon%raw与scope/icon%raw可原样匹配;删除OfflineSource无效disk参数及不可达远程raw-cache分支,保留本地Source安全边界。完整Metadata测试428/428通过;实际production根/引用与22/22独立清单、本地RisingStorm完整清单、无磁盘缓存Include组合读取和原仓库CLI Build全部通过。没有修改原始数据/XSD。 |
584c730 to
ab6928e
Compare
- 源树与展平发布物共用 MetadataReader / MetadataClient:指定入口 metadata.xml 即可读取,Include 递归展开、菱形去重、路径限制在源根 - SchemaVersion 改由作者写在源根 metadata.xml,构建不再注入版本,读入口缺失直接失败 - 删除构建期修订标记 ContentRevision:构建参数、CLI、发布 XSD 与 CI 传递一并移除 - 修复叶子存根 Source 被当成待内联正文导致的无限请求链(Linux CI 卡死) - 保持按完整注册键精确匹配,旧资源地址与本地组合缓存兼容;移除冒号与百分号限制 - 删除兼容模式,统一语义与测试结构 - 文档补充单入口读取说明与可视化预览,新增三篇决策笔记,重生成路径清单与笔记索引
ab6928e to
b175dc1
Compare
变更
metadata.xml根节点写了SchemaVersion,无需先构建;build/export只负责合成单文件、解析变量与产出发布面。SchemaVersion(源根属性),缺失直接失败并清空Output/;命令行删除--schema-version=。ContentRevision:Build参数、CLI、发布 XSD 必填、build.sh、部署工作流传递一并移除;Tags/Commit的${TIMESTAMP}保留。Source被当成待内联正文追踪导致 URL 无限增长的问题;此前 Ubuntu CI 单元测试无进展 13 分钟后被取消,本地 Windows 因缓存路径长度限制掩盖了该问题。.agents/docs/visuals/metadata-authoring.html)。验证
dotnet test Metadata.sln:430 通过。Output/metadata.xml根节点为<Metadata SchemaVersion="1.0">,无修订属性、无Include。MetadataClient.RefreshRootAsync直读源树Metadata/metadata.xml:Fresh,15 Mods / 3 Applications,26/26 叶子清单加载成功。node scripts/verify-docs.mjs通过。