# CHANGELOG
## [0.2.2] - 2026-07-06
### Added
- `source::config_file::detect_languages(dir) -> Vec<Language>` — 独立检测目录下所有编程语言
### Changed
- `Contract::resolve_language()` / `auto_detect()` 内部改用 `detect_languages`
- `detect_language()` 标记为 `#[deprecated]`
### Fixed
- 示例和集成测试统一加 `#[allow(deprecated)]`,消除编译警告
## [0.2.1] - 2026-07-05
### Added
- `Language::default_build_tool()` — Language → BuildTool 映射
- `Language::default_registry()` — Language → Registry 映射
- `Contract::auto_detect(repo_path)` — 扫描 `src/`、`packages/`、`apps/` 自动生成契约
- `contract::load_or_default(repo_path)` — load 失败则 auto_detect
- `Contract::resolve_language()` — scope 语言声明兜底探测
- 36 个补充测试(auto_detect 集成、Language 默认方法、semver 边界、RoadmapError display)
### Changed
- 测试覆盖率提升至 99.05%(519/524)
- 示例 `contract.rs` 从 164 行缩减至 63 行,利用新 API
- CI workflow 统一命名:`publish-*` / `test-*` → `release-*`
- `release-rust.yml`:合并 check(测试+覆盖率)→ release(cargo publish)
### Fixed
- 6 个 clippy warning(`should_implement_trait`、`manual_strip`、`collapsible_if`、`loop_counter`)
### Removed
- `examples/git_submodule.rs`(git2 示例,逻辑已进入实验室阶段)
## [0.2.0] - 2026-07-05
### Added
- `VersionSource` trait(原 `TagSource`)
- `source::language` 模块
- 35 个单元测试覆盖纯逻辑全分支
- 7 个集成测试覆盖 I/O 边界
- 10 个版本号异常场景测试(pre-release、build metadata、大写 V)
- 新增 pre_publish 配置(package archetype)
### Changed
- **破坏性重构**:`source::git` → `source::git_tag` + `source::config_file`,职责分离
- **破坏性重构**:`version_status` → `verify_version`,移至 `contract::version`
- **破坏性重构**:`VersionStatus` → `VersionState`,命名反映多字段快照语义
- **破坏性重构**:`detect_language_by_files` → `source::config_file::detect_language`
- **破坏性重构**:`read_all_config_versions` → `source::config_file::read_config_versions`
- **破坏性重构**:`VersionSourceError` → `TagError`
- git tag 读取从 `git2` 迁移至 `gix`(快 14x)
- 引入 `semver` crate 替代手写 semver 解析
- `Contract::load()` 现在展开 `Auto` → `SourceType::detect()`
- 测试文件按模块一一对应拆分(contract_* / source_*)
- 所有测试零 CLI git 依赖
- 将默认测试阈值从 70% 提升至 80%
- 添加 GitSubmoduleEditor 及 submodule 示例,更新文档以反映 gix 优先的混合策略
## [0.1.5] - 2026-07-03
### Added
- `source::roadmap` 模块:ROADMAP.md 解析、进度统计、格式验证(纯文本,零新增依赖)
- `RoadmapVersion`、`RoadmapProgress`、`RoadmapChecklistItem`、`RoadmapIssue` 类型
- 101 单元测试覆盖解析、进度统计、格式验证、v 前缀标准化
- 5 集成测试覆盖端到端解析、错误显示、真实文件验证
### Fixed
- `test-rust` CI coverage 阈值检查:LCOV 直解析增加空 LF/LH 守卫和除零防护
### Coverage
- 行覆盖率:98.85%(514 / 520)
- 全部 142 测试:101 单元 + 36 集成 + 5 文档
## [0.1.4] - 2026-07-03
### Added
- `source::changelog` 模块:CHANGELOG 解析、release notes 提取、版本存在性校验(`parse-changelog`)
- 集成测试套件:15 个测试覆盖 contract 加载、SourceType 检测、Registry 序列化
- `.githooks/pre-commit`:Rust 变更自动跑测试
- `test-rust` CI workflow:release 触发,build + test + coverage 阈值 95%
### Changed
- 依赖:新增 `parse-changelog = "0.6"`(零额外依赖)
- `contract/mod.rs` 的 `load()` / `load_from_str()` 调用者以外不再直接使用
- `contract/source.rs` 的 `SourceType::detect()` 通过集成测试覆盖全部 5 种文件
### Coverage
- 单位测试覆盖率:98.39%(区域)/ 99.31%(行)
- 全部 115 测试:75 单元 + 36 集成 + 4 文档
## [0.1.3] - 2026-07-03
### Added
- `source::git` 模块:Git tag 读取、scope 过滤、版本一致性检查
- `GitSourceError` 类型化错误处理
- `VersionStatus` 版本一致性检查结果
- semver 排序(修复字符串排序 `v10 < v9` 问题)
- 43 单元测试覆盖 tag 读取、scope 过滤、semver 排序
### Changed
- 依赖:新增 `git2 = "0.19"`(必选)
- `contract/source.rs` 保持单文件,`source/` 以顶层模块存在
- `lib.rs` 新增 `pub mod source`
## [0.1.2] - 2026-07-02
### Changed
- `contract/model.rs` 拆分为 4 个独立模块:`stage.rs`、`platform.rs`、`source.rs`、`scope.rs`
- `model.rs` 更名为 `core.rs`
### Added
- `version.rs` 独立模块(已有,确认结构)
- README.md、CHANGELOG.md(首次补充)
## [0.1.1] - 2026-07-02
### Added
- `Language::as_str()` / `BuildTool::as_str()` 显示方法
- `Registry: Display`
- `SourceType::detect()` 按文件自动检测
- `Contract::validate()` 契约验算(scope 目录存在性检查)
- `validate_version()` / `normalize_version()` 版本号工具
- `read_all_config_versions()` 配置文件版本提取
- 可选的 `clap` feature(`SourceControl` / `Pipeline` / `Registry` / `SourceType`)
- `version.rs` 独立模块(31 单元测试 + 4 文档测试)
## [0.1.0] - 2026-07-02
### Added
- 四维契约模型:`Stage` / `Platform` / `Source` / `Scope`
- YAML 序列化(`serde` 直接标注,零镜像类型)
- 枚举类型替代字符串:`SourceControl`、`Pipeline`、`Registry`、`Language`、`BuildTool`
- `Contract::default()` 全维度默认值
- 便捷访问器:`scope_release()`、`scope_test_threshold()`、`find_scope_by_path()`
- `detect_language_by_files()` 语言探测
- `ContractError` 类型化错误处理