Skip to content

Latest commit

 

History

History
567 lines (373 loc) · 35.9 KB

File metadata and controls

567 lines (373 loc) · 35.9 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[4.3.4] - 2026-06-07

Security

  • GitHub Action command execution hardened — marketplace action now builds specsync invocations as bash argv arrays instead of shell strings, eliminating eval around user-provided args.
  • Release checksum verification fails closed — downloaded release archives now require matching .sha256 files before extraction.

Fixed

  • Action input validationrequire-coverage is validated as an integer from 0 to 100 before command execution.
  • MCP generated-spec test assertion — replaced a tautological unsigned comparison with a meaningful generated-spec count assertion.
  • VS Code extension license packaging — extension package includes the MIT license file so VSIX builds are complete.

CI

  • Repo-wide validation expanded — CI now builds/tests/lints the Astro docs site and compiles/packages the VS Code extension.
  • Spec gate requires full coverage — project spec CI now runs check --strict --require-coverage 100 --force.
  • Coverage threshold raised — tarpaulin minimum coverage increased from 40% to 43%.
  • Fledge tasks expanded — repository lanes now cover Rust, specs, docs, extension packaging, and audit checks.
  • Known transitive audit warning trackedRUSTSEC-2024-0384 is ignored explicitly while it remains pulled in through notify.

Specs

  • Utility helpers specced — added a dedicated spec for src/util.rs.
  • Companion files completed — backfilled testing.md companions and missing tasks.md/context.md files for legacy specs.

[v4.3.3] - 2026-05-18

Fixed

  • Word boundary added to RAW_STR regexes — prevents false matches where raw string patterns were incorrectly matching substrings of longer tokens (#262).

Site

  • New Astro-based marketing site at corvidlabs.github.io/spec-sync — replaces the prior mdBook. Includes a Languages registry, examples, blog, and migrated docs.

[4.3.2] - 2026-04-20

Fixed

  • Bare depends_on module names now resolve correctly — entries like run (no path separator) are resolved under specs/ instead of the project root, matching the behavior of deps.rs (#257, #258).

[4.3.1] - 2026-04-18

Added

  • --fix dry-run and backup modespecsync check --fix --dry-run previews changes without writing; --fix now creates timestamped backups before modifying specs (#243, #248).
  • Config path in error messages — validation errors now show which .specsync/config.toml is in effect (#244, #248).
  • Large file warnings — configurable size threshold (default 512 KB) warns when spec files are unusually large (#245, #248).

Fixed

  • ReDoS protection on custom regex rules — user-supplied patterns are now checked for catastrophic backtracking before compilation (#240, #247).
  • Deduplicated Levenshtein implementation — single shared function replaces two near-identical copies (#241, #247).
  • Scoring weight constants — magic numbers replaced with named constants (#242, #247).
  • Backup error propagation--fix now aborts if backup creation fails instead of silently continuing (#249, #252).
  • Duplicate size warnings — single configurable check replaces redundant size validation (#250, #252).
  • --dry-run without --fix warning — emits a helpful warning instead of silently doing nothing (#251, #252).
  • Production unwrap elimination — all .unwrap() calls in production code replaced with proper error propagation (#253).
  • Collapsible-if clippy warnings — resolved across the entire codebase (#253).

Security

  • Cleartext logging remediation — sensitive information no longer appears in log output (#238, #239).
  • time crate bumped to 0.3.47 — addresses CVE in time crate (#253).

Changed

  • CI: cargo-audit job — new CI step using rustsec/audit-check catches dependency CVEs on every PR (#253).
  • CI: coverage thresholdcargo-tarpaulin with 40% minimum coverage enforced in CI (#253).

[4.3.0] - 2026-04-18

Added

  • --explain per-criterion breakdownspecsync score --explain now prints a per-criterion table showing the score, weight, and a one-line rationale for every dimension. Makes it easy to see exactly why a spec lands at a given grade (#234).
  • Stub/TBD depth penalty — sections whose content is TBD, Coming soon, or equivalent placeholders are now penalized in the depth score. A spec filled with stubs can no longer score A (#235).

Fixed

  • Near-miss required headersspecsync check now reports near-miss section headers (e.g. Overviews instead of Overview) as actionable errors rather than silently missing them (#236).
  • A-grade stub cap — specs with a high ratio of stub sections are capped below A regardless of other scores (#236).

[4.2.1] - 2026-04-17

Fixed

  • Hardened section header matching — regex anchors, whitespace tolerance, and word boundaries prevent false positives and mismatched headers on sections with leading/trailing spaces or similar names (#232).
  • --fix insertion point corrected — new rows no longer append after non-export subsections on repeated runs; near-miss header detection broadened to catch more variants (#231).

Security

  • Redact API keys in Debug output — sensitive keys are now masked in debug/trace logs (#230).
  • Bumped time and rustls-webpki — addresses upstream advisories in both crates (#230).

[4.2.0] - 2026-04-12

Added

  • testing.md companion file — a new default companion file scaffolded alongside every spec. Contains sections for automated test locations, manual QA checklists, and edge cases/boundary conditions. Generated by specsync generate, specsync add-spec, and specsync new --full (#225).
  • design.md companion file (opt-in) — layout, component hierarchy, design tokens, and asset references. Enabled via [companions] design = true in .specsync/config.toml. Generated alongside other companions when enabled (#226).
  • YAML as source languageLanguage::Yaml variant added to export extraction. Detects .yaml/.yml files and extracts top-level mapping keys as symbols (#224).

[4.1.3] - 2026-04-11

Fixed

  • specsync merge now detects conflicts in all spec .md files — Previously, merge conflict detection only matched *.spec.md files, silently skipping tasks.md, requirements.md, context.md, and other markdown files under the specs directory. Now matches any .md file in the specs path (#215).

[4.1.2] - 2026-04-11

Fixed

  • specsync comment now respects --strict and --require-coverage — Previously, specsync comment hardcoded pass/fail as total_errors == 0, ignoring strict mode, enforcement level, and coverage requirements. PR comments could show "✅ Passed" even when specsync check --strict correctly failed with exit code 1. Now uses the same compute_exit_code() logic as check (#213).

[4.1.1] - 2026-04-11

Fixed

  • Unified comment and check validation pipelinesspecsync comment now uses the same run_validation() pipeline as specsync check, ensuring identical output. Previously, comment skipped .specsyncignore rules, inline specsync-ignore directives, and staleness checks (#209).
  • Stripped ANSI codes from PR comments — CI comments no longer contain color escape sequences from cargo build output (#209).
  • Marketplace action now uses specsync comment — the GitHub Action (action.yml) now uses specsync comment instead of specsync diff --format markdown when comment: true is set, producing identical PR comment output to the project's own CI workflow.
  • Fixed YAML parse error in action.yml — unindented --- inside a block scalar was treated as a YAML document separator, breaking the action. Comment body now uses printf instead of a raw heredoc (#211).

Added

  • YAML validation CI stepaction.yml is now validated with python3 -c "import yaml; yaml.safe_load(open('action.yml'))" in CI to catch parse errors before release (#211).

[4.1.0] - 2026-04-11

Added

  • specsync rehash command — regenerates .specsync/hashes.json from scratch without running validation. Useful after manual spec edits or when the hash cache is stale (#208).
  • Auto-gitignore hashes.jsonspecsync init and specsync migrate now automatically add .specsync/hashes.json to .gitignore. The hash cache is a local artifact and should not be committed (#208).
  • Force hash rebuild in CI — GitHub Action now runs specsync rehash before specsync check to ensure CI always validates against fresh hashes, not a stale cache (#208).

Changed

  • hashes.json removed from version control.specsync/hashes.json is no longer tracked in git. Existing tracked copies are removed during migration (#208).

Documentation

  • Updated all docs for v4.0.0 — CLI examples, config paths, GitHub Action usage, quickstart, and architecture docs now reflect the .specsync/ directory structure and v4 commands (#206).

4.0.0 - 2026-04-11

Breaking Changes

  • Directory restructure — all spec-sync metadata moves into .specsync/: config, registry, lifecycle history, change records, and archives. Root-level specsync.json and specsync-registry.toml are relocated automatically by specsync migrate.
  • Config format changespecsync.json is converted to .specsync/config.toml (TOML). Legacy JSON/TOML files at the root still work as fallback.
  • lifecycle_log removed from frontmatter — lifecycle history is extracted from spec YAML frontmatter into .specsync/lifecycle/*.json files. The lifecycle_log field is removed from specs during migration.
  • GitHub Action version — update workflows from @v3 to @v4.

Added

  • specsync migrate command — automated 3.x → 4.0.0 migration with 10 steps: version detection, backup, directory creation, config conversion, registry relocation, lifecycle extraction, frontmatter cleanup, gitignore, cross-project ref scanning, and version stamping. Supports --dry-run, --no-backup, --format json. Idempotent and safe to re-run (#198).
  • Full spec lifecycle managementspecsync lifecycle subcommands: status, promote, demote, set, history, guard, auto-promote, enforce. Specs track lifecycle stages (draft → review → stable → deprecated → archived) with configurable transition guards.
  • Lifecycle enforcement in CIspecsync lifecycle enforce --all validates lifecycle rules in CI. Available via GitHub Action with lifecycle-enforce: 'true'.
  • Change records.specsync/changes/ directory for tracking spec modifications over time.
  • Spec archival.specsync/archive/ directory for retired specs. Archive contents are version-controlled (not gitignored).
  • Migration backup.specsync/backup-3x/ with timestamped manifest preserves original 3.x files for rollback.
  • Cross-project reference scanning — migration detects depends_on refs to external repos and records them in .specsync/cross-project-refs.json.

Fixed

  • Archive not gitignored.specsync/archive/ is no longer excluded from git. Users who want to remove archived specs can delete them explicitly (#202).

Documentation

  • MIGRATION.md — comprehensive upgrade guide with breaking changes, step-by-step instructions, and FAQ.

3.8.0 - 2026-04-10

Added

  • Staleness detection — new specsync stale command identifies specs that haven't been updated since their source files changed. Also available via specsync check --stale (#189).
  • AST-based export parsing — tree-sitter powered export extraction replaces regex-based parsing for more accurate and reliable results across all supported languages (#192).
  • Batch operationsspecsync import --all-issues and --from-dir for bulk import; specsync score --format table|csv for tabular output; specsync generate --uncovered and --batch for generating specs in bulk (#191).
  • Declarative custom validation rules — define project-specific validation rules in config that are checked alongside built-in rules (#190).
  • Cross-repo spec content verificationspecsync resolve --verify fetches and validates referenced specs from remote repositories, ensuring cross-project refs point to real, valid content (#159, #195).
  • MCP resource support — agents can browse the spec tree via 5 new MCP resources (specsync:///specs, specsync:///specs/{module}, etc.) without knowing file paths (#194).

Fixed

  • Requirements convention docs — clarified that requirements belong in companion requirements.md files, not inline in specs (#163, #193).

3.7.0 - 2026-04-10

Added

  • --no-cache flag — discoverable alias for --force that skips the hash cache (#178).
  • Cache location hint — when specs are skipped due to caching, the path to .specsync/hashes.json is printed so users know where the cache lives (#178).

Fixed

  • Absolute paths in error messages — "No spec files found" now shows the full resolved path, making it immediately clear if you're in the wrong directory (#177).

Changed

  • Clearer help text for spec filterscheck and score help now documents all four matching modes: module name, filename stem, relative path, and absolute path (#179).

Closed

  • --json output for score — already supported via the global --json / --format json flags since v3.5.0 (#172).

3.6.2 - 2026-04-09

Fixed

  • specsync diff in PR context — auto-detects GITHUB_BASE_REF in GitHub Actions so diff compares against the PR base branch instead of HEAD (the merge commit), which previously always reported "No files changed" (#180).

Changed

  • Strict spec enforcement — spec-sync now dogfoods its own --enforcement-mode=strict in CI, catching spec drift in the tool itself (#182).
  • 100% spec file coverage — added specs for all 62 source files (26 new spec modules), up from 58% (#183).

3.6.1 - 2026-04-08

Fixed

  • specsync new frontmatter formattingfiles: and db_tables: fields no longer merge onto one line when source files are auto-detected (#174).
  • Empty dependency graph hintspecsync deps --mermaid and --dot now print a helpful message when no depends_on relationships exist, instead of rendering only disconnected nodes (#174).

3.6.0 - 2026-04-08

Added

  • Individual spec path filteringspecsync check and specsync score now accept spec file paths or module names as positional arguments, allowing validation/scoring of specific specs instead of the entire project (#170).
  • Dependency graph visualizationspecsync deps --mermaid and specsync deps --dot output the dependency graph as Mermaid flowchart or Graphviz DOT diagrams for documentation and debugging (#152).
  • specsync new command — quick-create a minimal spec with auto-detected source files and pre-populated exports. Use --full to also generate companion files (tasks.md, context.md, requirements.md) (#151).

3.5.0 - 2026-04-08

Added

  • Stub/placeholder detection — sections containing only "TBD", "N/A", "TODO", "Coming soon", or similar placeholders are now flagged as warnings and no longer inflate quality scores (#162).
  • Source-attributed export warnings — undocumented export warnings now show which source file the export comes from, making them actionable in large codebases (#165).
  • Requirements companion validation — warns when specs contain inline requirements sections (should be in requirements.md) and when companion files are missing (#163).
  • Score diagnosticsspecsync score now shows per-category breakdowns (completeness, structure, cross-references) with actionable improvement suggestions (#167).

Fixed

  • Header matching flexibility — fuzzy matching for common header variations like "Public API" → "Exports", "Tech Stack" → "Dependencies", reducing false negatives (#166).
  • Frontmatter parser edge cases — correctly handles tabs, trailing whitespace, and inline YAML comments in spec frontmatter (#161).
  • --fix header renaming — near-miss headers are now renamed in-place instead of duplicating the section (#164).

3.4.1 - 2026-04-07

Fixed

  • Added 6 missing depends_on entries to CLI and validator specs, resolving all specsync deps warnings.

3.4.0 - 2026-04-07

Added

  • specsync scaffold command — enhanced module scaffolding with auto-detected source files, custom template directories, and automatic registry registration (#138).
  • specsync deps command — cross-module dependency graph validation detecting cycles, missing deps, and undeclared imports (#139).
  • specsync comment command — post spec-sync check summaries as actionable PR comments with spec links, or print for piping (#140).
  • specsync changelog command — generate changelogs of spec changes between two git refs (#141).
  • specsync report command — per-module coverage report with stale and incomplete detection.
  • Graduated enforcement mode — new --enforcement-mode flag with three levels: warn (default), enforce-new (errors only for new specs), and strict (all warnings are errors) (#134).
  • External importersspecsync import supports GitHub Issues, Jira, and Confluence as spec sources (#123).
  • Interactive wizardspecsync wizard for step-by-step guided spec creation (#122).
  • 167+ new unit tests across config, parser, validator, generator, and export modules.
  • 100% spec coverage — resolved 9 undocumented export warnings and added 3 missing specs.
  • Community scaffolding — CONTRIBUTING.md, CODE_OF_CONDUCT.md, issue/PR templates.
  • Standalone workflow guide and onboarding documentation.

3.1.0 - 2026-03-30

Added

  • requirements.md companion file — a new per-module companion file scaffolded alongside tasks.md and context.md by specsync generate and specsync add-spec. The template includes User Stories, Acceptance Criteria, Constraints, and Out of Scope sections. This keeps the spec focused as a technical contract (authored by Dev/Architect) while giving Product/Design their own space for user stories and acceptance criteria.
  • AGENTS.md hook targetspecsync hooks install --agents installs spec-sync instructions into AGENTS.md, the emerging standard for multi-agent instruction files.

3.0.0 - 2026-03-30

Added

  • VS Code extension — first-class editor integration for SpecSync, published on the VS Code Marketplace as corvidlabs.specsync.
    • Inline diagnostics — errors and warnings from specsync check --json mapped directly to spec files with proper severity levels.
    • CodeLens quality scores — spec quality scores (0–100 with letter grades) displayed inline above spec files via specsync score.
    • Coverage webview — rich HTML report showing file and LOC coverage with VS Code theme-aware styling.
    • Scoring webview — detailed quality breakdown per spec with improvement suggestions.
    • Five commands — Validate Specs, Show Coverage, Score Quality, Generate Missing Specs, Initialize Config — all accessible from the Command Palette.
    • Status bar indicator — persistent status bar item showing pass/fail/error/syncing state with color coding.
    • Validate-on-save — debounced (500ms) automatic validation when spec or source files are saved.
    • Configurable settingsspecsync.binaryPath, specsync.validateOnSave, specsync.showInlineScores.
    • Activates automatically in workspaces containing specsync.json, .specsync.toml, or a specs/ directory.

Breaking Changes

  • Major version bump to v3. GitHub Action users should update to CorvidLabs/spec-sync@v3.

2.5.0 - 2026-03-30

Added

  • Schema column validation — SpecSync now parses SQL migrations (CREATE TABLE, ALTER TABLE ADD COLUMN) and validates documented columns in spec ### Schema sections against the actual database schema. Catches phantom columns (documented but missing from schema), undocumented columns (in schema but not in spec), and column type mismatches. Opt-in via schema_dir in specsync.json.
  • Destructive DDL support — migration parser correctly handles DROP TABLE, ALTER TABLE DROP COLUMN, ALTER TABLE RENAME TO, and ALTER TABLE RENAME COLUMN, ensuring the schema map accurately reflects state after all migrations replay in order.
  • Multi-language migration files — schema extraction now supports 16 file types (SQL, TypeScript, JavaScript, Python, Ruby, Go, Rust, PHP, Swift, Kotlin, Java, C#, Dart, and more), not just .sql.
  • PHP language support — full export extraction for PHP: classes, interfaces, traits, enums, public functions/constants, with visibility filtering and magic method exclusion.
  • Ruby language support — full export extraction for Ruby: classes, modules, public methods with visibility toggle tracking, attr_accessor/attr_reader/attr_writer, constants, and =begin/=end comment handling.
  • Expanded export parser test coverage for Go, Python, Java, C#, and Dart.
  • Achieved 100% spec coverage across all modules.

2.4.0 - 2026-03-28

Changed

  • Export validation uses allowlist — only ### Exported ... subsections under ## Public API now trigger export validation. Non-export subsections (### API Endpoints, ### Route Handlers, ### Component API, ### Configuration, etc.) are treated as informational and skipped. This fixes false errors when specs document private route handlers, component signals, service methods, or infrastructure concepts alongside validated exports (#60).

2.3.3 - 2026-03-28

Documentation

  • Companion files populated — all 28 companion files (context.md and tasks.md) across 14 modules now contain real content: architectural decisions, key files, implementation status, open tasks, known gaps, and completed work (#58).

2.3.2 - 2026-03-28

Fixed

  • action.yml YAML parse fix — quoted ${{ github.token }} default value to prevent YAML stream parse errors when external repos use the action (#56).
  • spec:check in CI — added spec validation to the CI pipeline so spec drift is caught automatically (#54).

Added

  • manifest.spec.md — spec for the manifest module, achieving 100% file coverage across all 23 source files (#55).
  • Config spec update — added manifest to config's depends_on for accurate cross-module references.

2.3.1 - 2026-03-28

Added

  • specsync-registry.toml — published module registry for cross-project spec resolution. Other projects can now verify refs to CorvidLabs/spec-sync@<module> via resolve --remote.

Documentation

  • New docs page: Cross-Project References — dedicated guide covering owner/repo@module syntax, registry publishing, remote verification, and CI usage.
  • CLI Reference — added missing commands: add-spec, init-registry, resolve, hooks. Added --format flag documentation.
  • Spec Format — documented cross-project ref syntax in depends_on field.
  • Quick Start — added add-spec, resolve, init-registry, and hooks commands.

2.3.0 - 2026-03-28

Added

  • --format markdown outputcheck and diff commands now accept --format markdown to produce clean, human-readable Markdown tables instead of plain text or JSON. Useful for pasting into PRs, docs, or chat.
  • SHA256 release checksums — release workflow now generates and publishes SHA256 checksums for all release binaries, improving supply chain verification.

Changed

  • Rolled up all v2.2.1 changes (manifest-aware modules, export granularity, language templates, robustness fixes) into this release.

2.2.1 - 2026-03-25 (unreleased — rolled into 2.3.0)

Added

  • Manifest-aware module detection — parses Package.swift, Cargo.toml, build.gradle.kts, package.json, pubspec.yaml, go.mod, and pyproject.toml to auto-discover targets and source paths instead of just scanning directories.
  • Export granularity control"exportLevel": "type" in specsync.json limits exports to top-level type declarations (class/struct/enum/protocol) instead of listing every member.
  • Configurable module definitions"modules" section in specsync.json lets you define module groupings with explicit file lists.
  • Language-specific spec templatesgenerate and --fix produce Swift, Rust, Kotlin/Java, Go, and Python templates with appropriate section headers and table columns.
  • AI context boundary awareness — generation prompt instructs the provider to only document symbols from the module's own files, not imported dependencies.

Fixed

  • Test file detection — expanded Swift patterns (Spec, Mock, Stub, Fake), added Kotlin/Java/C# patterns, and detect well-known test directories (Tests/, __tests__/, spec/, mocks/).
  • Check command no longer hangs on empty specs — returns clean JSON/exit 0 when --fix is used with no spec files.
  • Exit code 101 panic → friendly error — wraps main in catch_unwind, converts panics to actionable error messages with bug report link.

2.2.0 - 2026-03-25

Added

  • --fix flag for check command — automatically adds undocumented exports as stub rows in the spec's Public API table. Creates a ## Public API section if one doesn't exist. Works with --json for structured output of applied fixes. Turns spec maintenance from manual bookkeeping into a one-command operation.
  • diff command — compares current code exports against a git ref (default: HEAD) to show what's been added or removed since a given commit. Human-readable by default, --json for structured output. Essential for code review and CI drift detection.
  • Wildcard re-export resolution — TypeScript/JS barrel files using export * from './module' now have their re-exported symbols resolved and validated. Namespace re-exports (export * as Ns from) are detected as a single namespace export. Resolution is depth-limited to one level to prevent infinite recursion.

Changed

  • Spec quality scoring now accounts for --fix generated stubs (scored lower than hand-written descriptions).
  • Expanded integration test suite with 12 new tests covering --fix, diff, and wildcard re-exports (74 total integration tests, 131 total).
  • Updated cli.spec.md and exports.spec.md to 100% coverage for all new features.

2.1.1 - 2026-03-25

Fixed

  • Rust export extractor — strip raw strings, char literals with ", and multi-line string literals before scanning for pub declarations. Fixes false positives from test data inside r#"..."# blocks, and false negatives where '"' char literals confused the string regex into consuming subsequent source code.
  • CLI spec — added spec coverage for main.rs (CLI entry point).
  • Exports spec — expanded to 100% file coverage across all language extractors.

2.1.0 - 2026-03-24

Added

  • specsync hooks command — manage agent instruction files and git hooks for spec awareness. Supports Claude Code (CLAUDE.md), Cursor (.cursor/rules), GitHub Copilot (.github/copilot-instructions.md), pre-commit hooks, and Claude Code hooks. Subcommands: install, uninstall, status.

Security

  • Updated rustls-webpki from 0.103.9 → 0.103.10 to fix RUSTSEC-2025-0016 (CRL Distribution Point matching logic).

Fixed

  • Spec scoring now distinguishes placeholder TODOs from descriptive references (#37).

2.0.0 - 2026-03-20

Breaking Changes

  • --ai flag removed — replaced by --provider auto|claude|openai|ollama. Use specsync generate --provider auto for auto-detection, or --provider claude for a specific provider. Plain specsync generate remains template-only.

Added

  • Cross-project spec references — specs can now reference modules in other repos via cross_project_refs in config. Validated locally with specsync check, verified remotely with specsync resolve --remote.
  • Companion files — associate non-code files (migrations, configs, protos) with spec modules via companion_files config.
  • Spec registryspecsync registry reads specsync-registry.toml to list and discover specs across a project.
  • specsync resolve — new command to resolve cross-project references. --remote flag opt-in fetches registry files from GitHub repos.
  • Project scope definitionSCOPE.md explicitly defines what spec-sync does and doesn't do.

Changed

  • Unified AI provider selection under --provider flag with auto-detection support.
  • Remote ref verification groups HTTP requests by repo to minimize fetches.
  • Updated all docs, examples, and tests for the new CLI surface.

1.3.0 - 2026-03-19

Added

  • MCP server mode — run specsync mcp to expose spec-sync as a Model Context Protocol server, enabling any AI agent (Claude Code, Cursor, Windsurf, etc.) to validate specs, check coverage, and generate specs via tool calls.
  • Direct API support for Anthropic and OpenAI — specsync generate --provider anthropic|openai can call Claude or GPT APIs directly, no CLI wrapper needed. Set ANTHROPIC_API_KEY or OPENAI_API_KEY.
  • Auto-detect source directories — spec-sync now automatically discovers src/, lib/, app/, and other common source directories, so it works out-of-the-box on any project without manual config.
  • Spec quality scoringspecsync score rates spec files on completeness, API coverage, section depth, and staleness, outputting a 0–100 quality score with actionable improvement suggestions.
  • TOML configurationspecsync.toml is now supported alongside specsync.json. See examples/specsync.toml.
  • VS Code extension scaffoldvscode-extension/ directory with diagnostics, commands, and CodeLens integration (ready for Marketplace packaging).
  • Actionable error messages — all errors and warnings now include fix suggestions.
  • Expanded integration test suite (+884 lines).

Fixed

  • Resolved clippy and fmt CI failures on main (#29).

1.2.0 - 2026-03-19

Added

  • specsync generate --ai — AI-powered spec generation. Reads source code, sends it to an LLM, and generates specs with real content (Purpose, Public API tables, Invariants, Error Cases) instead of template stubs. Configurable via aiCommand and aiTimeout in specsync.json, or SPECSYNC_AI_COMMAND env var. Defaults to Claude CLI, works with any LLM that reads stdin and writes stdout.
  • LOC coverage trackingspecsync coverage now reports lines-of-code coverage alongside file coverage. JSON output includes loc_coverage, loc_covered, loc_total, and uncovered_files with per-file LOC counts sorted by size.
  • Flat file module detectiongenerate and coverage now detect single-file modules (e.g., src/config.rs) in addition to subdirectory-based modules.
  • aiCommand and aiTimeout config options in specsync.json.

Changed

  • Rewrote README for density — every line carries new information, no filler.
  • Documented generate --ai workflow, AI command configuration, and LOC coverage in README and docs site.
  • Streamlined docs site pages to complement rather than duplicate the README.
  • Updated CHANGELOG with previously missing 1.1.1 and 1.1.2 entries.

1.1.2 - 2026-03-19

Fixed

  • Resolved merge conflict markers in README.md.
  • Removed overly broad permissions from CI workflow (code scanning alert fix).

Changed

  • Bumped Cargo.toml version to match the release tag.

1.1.1 - 2026-03-18

Fixed

  • Corrected GitHub Marketplace link after action rename.
  • Renamed action from "SpecSync Check" to "SpecSync" for Marketplace consistency.
  • Updated all marketplace URLs to reflect the new action name.

Added

  • GitHub Marketplace badge and link in README.

1.1.0 - 2026-03-18

Added

  • Reusable GitHub Action (CorvidLabs/spec-sync@v1) — auto-downloads the correct platform binary and runs specsync check in CI. Supports strict, require-coverage, root, and version inputs.
  • watch subcommand — live spec validation that re-runs on file changes.
  • Comprehensive integration test suite — end-to-end tests using assert_cmd.

Changed

  • Updated crates.io metadata (readme, homepage fields).

1.0.0 - 2026-03-18

Added

  • Complete rewrite from TypeScript to Rust for language-agnostic spec validation with significantly improved performance and a single static binary.
  • 9 language backends for export extraction: TypeScript/JavaScript, Rust, Go, Python, Swift, Kotlin, Java, C#, and Dart.
  • check command — validates all spec files against source code, checking frontmatter, file existence, required sections, API surface coverage, DB table references, and dependency specs.
  • coverage command — reports file and module coverage, listing unspecced files and modules.
  • generate command — scaffolds spec files for unspecced modules using a customizable template (_template.spec.md).
  • init command — creates a default specsync.json configuration file.
  • --json flag — global CLI flag that outputs results as structured JSON instead of colored terminal text, for CI/CD and tooling integration.
  • --strict flag — treats warnings as errors for CI enforcement.
  • --require-coverage N flag — fails if file coverage percent is below the given threshold.
  • --root flag — overrides the project root directory.
  • CI/CD workflows with GitHub Actions for testing, linting, and multi-platform release binary publishing (Linux x86_64/aarch64, macOS x86_64/aarch64, Windows x86_64).
  • Configurable required sections, exclude patterns, source extensions, and schema table validation via specsync.json.
  • YAML frontmatter parsing without external YAML dependencies.
  • API surface validation: detects undocumented exports (warnings) and phantom documentation for non-existent exports (errors).
  • Dependency spec cross-referencing and Consumed By section validation.