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
Added
:idfilter forStorage.query/2for exact instance ID matches.:status_infilter forStorage.query/2to match instances with any of the given statuses.- V03 migration to convert
workflow_instances.idfromuuidtovarchar(255).
Changed
- BREAKING:
workflow_instances.idchanged fromuuidtovarchar(255)in V03 to support the newkey::valuebusiness key format. - BREAKING: The Ecto schema primary key type changed from
:binary_idto:string. - Bumped the
hephaestusdependency from~> 0.2.0to~> 0.3.0. - Removed internal
normalize_id/1; IDs are no longer uppercased on read.
0.2.1 - 2026-04-09
Fixed
- Fixed
migrated_version/1query for thepublicschema — the previous query concatenatednspname || '.' || relnameand compared against a value without thepublic.prefix, so it always returned 0 on the default schema. Now uses separaterelname/nspnamecomparisons, matching the Oban pattern. - Fixed
record_version/2to always include the schema prefix usingquoted_prefix(e.g.,"public".workflow_instances). - Made V01 migration fully idempotent:
create→create_if_not_existsfor table and indexes. Safe to re-run if table comments are lost. - Made V02 index creation idempotent:
create→create_if_not_exists. - Added
quoted_prefixto opts (viawith_defaults/2) following Oban's pattern. - Added migration tests for
migrated_versionon thepublicschema and when comment is NULL.
0.2.0 - 2026-04-08
Added
- Versioned migration system following Oban's pattern (
V01,V02, ...). HephaestusEcto.Migrations.Postgresorchestrator with version tracking via PostgreSQL table comments.HephaestusEcto.Migration.up/1anddown/1now accept:versionand:prefixoptions.HephaestusEcto.Migration.migrated_version/1to query the current schema version.- Migration V02:
workflow_versioninteger column onworkflow_instances(NOT NULL, default 1). - Composite index on
(workflow, workflow_version). workflow_versionfield in Ecto schema (HephaestusEcto.Schema.Instance).Serializer.to_db/1returns a 5-tuple includingworkflow_version;Serializer.from_db/5restores it.Storage.put/2persistsworkflow_version(immutable on upsert).Storage.query/2supports:workflow_version(integer equality) and:workflow_family(LIKE prefix match) filters.
Changed
- Refactored
HephaestusEcto.Migration— extracted original migration logic into the internal versioned migration module under the Postgres migrations namespace. - Bumped
hephaestusdependency to~> 0.2.0.
0.1.1 - 2026-04-08
Fixed
Serializer.to_db/1andSerializer.from_db/4now serialize/deserialize theruntime_metadatafield fromHephaestus.Core.Instance, preventing data loss on persistence.
Changed
- Bumped
hephaestusdependency to~> 0.1.4(required forruntime_metadatasupport).
0.1.0 - 2026-04-07
Added
- Ecto schema (
HephaestusEcto.Storage.WorkflowInstance) for persisting workflow instances in a singleworkflow_instancestable with JSONBstatecolumn and GIN indexing. HephaestusEcto.Serializerfor converting betweenHephaestus.Instancestructs and database records.HephaestusEcto.Storageimplementing theHephaestus.Storagebehaviour with full CRUD operations (save/2,get/2,delete/2,list/1).HephaestusEcto.Migrationmodule for creating and dropping theworkflow_instancestable.mix hephaestus_ecto.gen.migrationtask for generating migration files into the host application.- Concurrency test suite validating parallel writes and reads.
- Full
@moduledocand@docdocumentation for all public modules and functions. - README with setup, usage, and architecture overview.
- Hex package configuration with MIT license.