Changelog
View SourceUnreleased
0.1.1 - 2026-07-28
Breaking changes
- Raised the minimum supported Elixir version from 1.17 to 1.18.
Added
- Support JSON responses defined directly in Phoenix controllers, including OpenAPI schemas and TypeScript interfaces.
- Infer OpenAPI types for literal response values and fields guarded by
&&orunless.
Fixed
- Generate valid YAML for nested objects, arrays, and polymorphic schemas.
- Preserve flat request parameter shapes and detect qualified
Ecto.Changeset.cast/3calls. - Quote response property names that are not valid TypeScript identifiers.
- Regenerate compiler output when routers, schemas, project configuration, or other source files change.
- Recover from invalid compiler manifests without unsafe term decoding.
0.1.0 - 2026-03-07
Added
- Ecto schema type inference (all types including Enum, arrays, embeds)
- JSON view AST extraction (field detection, nested views,
$refgeneration) - Router introspection (paths, verbs, path parameters)
- OpenAPI 3.1 spec generation (JSON and YAML)
- TypeScript
.d.tsoutput with correct types, optional?, enum unions, array syntax mix phoenix_spec.gentask- Mix compiler for auto-regeneration on file changes
- Optional field detection via
@optionaland inline conditionals @field_typesannotation for computed fields- Embedded schemas (
embeds_one→ inline object,embeds_many→ array) - Request body schemas from controller and schema
changeset/2cast fields - Response status code inference from controller AST
- Operation summaries and unique operationIds
- Error responses (404, 422) by action type
- Association traversal (
comment.user.name) - Schema inference from aliases when no struct pattern match
- Inline map literal detection as object schemas
- Fallback extraction from private functions and action inline maps
- Non-controller route filtering (LiveView, OpenApiSpex, etc.)
- Polymorphic
oneOfschemas from multipledata/1struct clauses