Releases: scripthungry/squirrelix
Releases · scripthungry/squirrelix
Release list
v0.5.15
Fixed
- Ecto runner no longer emits colliding heads when a parameter is inferred as
repo(e.g.def find(repo, repo)). Codegen passes aCodegen.Targetreserved set into parameter name resolution. - Metadata/
Inferreringress now validatesparamslength against SQL$nplaceholders and rejects return columns missing booleannullable?with structured errors instead of crashing.
Changed
TypedQuery.resolve_parameter_names/2takes an explicit reserved-name set; helper inventory lives inCodegen.Runtime.reserved_names/0.- Introduced
Squirrelix.QueryMetadata.parse/2as the typed boundary for metadata and inferrer keywords;Column.cast/1/Column.to_spec/1normalise return shapes. Explicit param name overrides via%{type: type, name: "…"}. generate/3/check/3expand the project root and metadata map keys; metadata maps are adapted to the inferrer pipeline internally.- Row-type name collisions return
Error.RowTypeNameCollision(via prepare/check); sharedSourceReffor location context. - Drift comparison no longer treats
//as a line comment (Elixir floor division).
Full notes: CHANGELOG.md
v0.5.14
Added
- Optional Ecto Repo runner:
mix squirrelix.gen --runner ecto(andcheck) generates Repo-first functions viaEcto.Adapters.SQL.query!/3/query/3for connection checkout, Sandbox, and transactions — not schemas or changesets. Default remains--runner postgrex. - Mix
--repo MODULEwith--inferreads connection settings from an Ecto Repoconfig/0(precedence: flags →--url→DATABASE_URL→--repo→PG*→ defaults).
Changed
- ROADMAP non-goals: freeze “first-class Ecto ORM integration”; allow the optional Repo runner /
--repoinfer path above.
Docs
- Document optional Repo integration purpose (connection ownership / Sandbox / transactions — not schemas) in the Phoenix cookbook, Configuration (
--repo,--runner), Getting Started, and README FAQ.
Hex: https://hex.pm/packages/squirr_elix
Docs: https://hexdocs.pm/squirr_elix/0.5.14
v0.5.13
Docs
- Trim README to end-user orientation; move roadmap / contributing / performance / release notes under
docs/(off HexDocs). HexDocs extras are README, CHANGELOG, andguides/only (#93). - Point issue #24 readiness at
docs/ROADMAP.mdas the canonical non-goals freeze (verification, not a product-boundary laundry list).
v0.5.12
Changed
- Pin local and CI quality cells to Elixir 1.20.2 / OTP 28.5 via
mise.toml, CI matrix, Hex publish, examples, and README; bump the 1.19 matrix cell to 1.19.5 and the 1.18 OTP pin to 27.3.4. - Move GitHub Actions majors to current stables (
actions/checkout@v7,actions/cache@v6,actions/upload-artifact@v7) in workflows and examples. - Align CI/Hex Postgres service images on postgres:17.
Fixed
- Avoid OTP 28.0 runtime regex recompilation (performance warning) by running on OTP 28.5.
v0.5.11
Changed
- Format generated modules once on the write path:
Codegen.prepare_directory/4passesformat: falsetoOutput.prepare_write/3aftergenerate_module/3has already formatted (avoids a secondCode.format_string!/1) (#88). - Memoises Postgres OID→type and column-nullability catalog lookups inside
Postgres.inferrer/1for the lifetime of a generate/check pass; plan column sources use tuple indexing instead ofEnum.at/2(#88).
Docs
- Clarify independence from Gleam Squirrel (not affiliated / endorsed) (#88).
- Add
docs/PERFORMANCE.md,mix bench(bench/micro.exs), and soft CI microbench reporting on the quality matrix cell (summary only; no absolute timing gates) (#88). - Add
docs/README.mdclarifyingdocs/(hand-written) vsguides/(ExDoc guides) vsdoc/(generated, gitignored); split README Guides / Project documentation sections (#88).
v0.5.10
Changed
- Lower the Elixir requirement to
~> 1.18(stdlibJSONfloor). Recommend Elixir 1.20+ for gradual typing / compiler typechecking; generated Dialyzer@specs remain for Dialyzer on all supported versions (#85). - CI matrix compiles and tests on Elixir 1.18, 1.19, and 1.20 (every cell is a hard gate); Dialyzer / Reach / ExDNA / format / Credo stay on 1.20. Hex publish remains on Elixir 1.20 (#85).
Fixed
- Supervise Postgrex connections in ExUnit setup so Elixir 1.18 does not fail
on_exitcleanup withGenServer.stop{:EXIT, :normal}(#85).
v0.5.9
Changed
- Move SQL directory discovery from
Squirrelix.CLIintoSquirrelix.Discover(connection parsing stays onCLI); codegen sharesTypeMapper.row_typespec/1for generated row field typespecs (#52).
v0.5.8
Changed
- Make
file_systeman optional dependency used only bymix squirrelix.gen --watch; missing dep raises a clear install hint (#50).
Fixed
- Serialize async test compiles of the same generated module name to avoid flaky
MyApp.SQL“currently being defined” failures under CI parallelism.
Docs
- Document the intentional libpq-aligned
sslmode=require→[verify: :verify_none]mapping and point adopters atverify-ca/verify-fullfor peer verification (#70).
v0.5.7
Fixed
- Strip trailing
!/?nullability override aliases after applying force-nullability (#64) - Fail
--inferon Postgres< 16withUnsupportedPostgresVersion(#65) - Nested-array encode/decode runtime helpers (#67)
Added
- Hard-reject multi-statement
.sqlfiles; dollar-quote-aware single-statement check (#66)