Skip to content

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 03 May 22:00
· 126 commits to main since this release

Release 0.15.0

We've added compile-time NewType generation, expanded schema validation diagnostics, and built a comprehensive meta-test framework to catch schema decay, missing conformance tests, and diagnostic drift — keeping your pipelines correct before they run.

What's New

  • NewType Source Generator for Columns: You can now use [FlowthruColumn("TypeName", typeof(BackingType))] to generate NewType record structs at compile-time, eliminating manual boilerplate. Two new diagnostics — FT1003 (invalid backing type) and FT1004 (conflicting backing types across uses) — catch schema mistakes immediately during the build, not at runtime.
  • FlowthruConfig Validation: New diagnostics FT3001 and FT3002 enforce that your configuration class is partial and that all IItem properties carry the [ConfigSection] attribute, catching common wiring mistakes early.
  • Format Extension Conformance Tests: Added conformance fixtures for CSV, Excel, and Parquet serializers to verify round-trip behavior on complex row shapes (PositionalRecord, OptionalEnum). These fixtures are automatically discovered and validated by the meta-test framework.
  • Meta-Test Framework for Diagnostics: A comprehensive suite of meta-tests under scripts/_test/ ensures your pipeline infrastructure stays correct:
    • conformance-presence: Verifies every feature declared in the capability matrix has a matching conformance test fixture, so claimed support is actually tested.
    • dead-schemas: Finds unused schema declarations, helping you keep test data clean as your fixtures evolve.
    • dead-fixtures: Identifies unused test fixture files to prevent bitrot and confusion.
    • diagnostic-id-registration: Validates that all diagnostic IDs (FT*) are properly registered in AnalyzerReleases.Unshipped.md, catching ID collisions and drift.
    • project-mirror: Ensures your project structure stays consistent across test projects.
  • Format Capability Matrix: We've added auto-generated documentation showing which row-shape features each format extension supports on top of the universal baseline (CLR primitives, BCL scalars, nullable types, enum mapping). See docs/reference/extensions/capability-matrix.md.

Bug Fixes

  • Diagnostic Check Soft-Skip: The row-features inventory check now gracefully handles missing scratch documents in CI environments, since docs/scratch/ is gitignored. The check still fires locally where drift is most likely to be caught.
  • Coverage Upload Dependency: The coverage:upload task now depends on coverage:sync, fixing CI failures when the test step exits early before coverage flags are prepared.

🚀 Features

  • finish data compat testing layer and refactors (f2e3b2c7)
  • wrap up data feature matrix & optimize example runs (e7e6b9c3)

🩹 Fixes

  • phase 1 of diagnostic setup (1b27a9f7)
  • set up second phase on data extension surface (f9dc25a5)
  • add metatest compat matrix for storage extensions (f1a4a99f)
  • resolve scratch doc reference (c5c48456)

❤️ Thank You

  • Spencer Elkington