Releases: diffo-dev/artefactory
Releases · diffo-dev/artefactory
artefactory_neo4j 0.3.0
0.3.0 — 2026-05-13
Tooling
- Igniter task
mix artefactory_neo4j.install— preferred installation method; configures Bolty inruntime.exs, addsBoltyto the supervision tree, and installs theartefactdependency automatically. usage-rules.md— consumer-facing AI agent guidance, compatible with theusage_ruleshex package ecosystem.usage_rulesdev dependency added.
Dependencies
- Bumps
artefactrequirement to~> 0.3.0.
artefact_kino 0.3.0
0.3.0 — 2026-05-13
Side-by-side layout options
description_lines:option — reserves a fixed-height description area of exactly N lines. Content is clipped if longer; space is held empty if there is no description. Ensures two side-by-side panels share the same header height regardless of description length. Closes #39.panel_height_px:option — fixes the total widget height. The header takes what it needs; the graph row fills the rest. Prevents page reflow as artefacts grow across panels in a progressive-reveal livebook.
Bug fix
- Node colours are now derived from a deterministic string hash of the label name rather than the label's position in the sorted list. The same label string always produces the same colour regardless of how many other labels exist in the artefact — a node can be followed by colour across panels without thinking about it. Closes #39.
Dependencies
- Bumps
artefactrequirement to~> 0.3.0.
artefact 0.3.0
0.3.0 — 2026-05-13
Mermaid import
Artefact.Mermaid.from_mmd!/2— parse a Mermaidgraphsource string into an%Artefact{}. Accepts the round-trip format produced byexport/2and the broader Mermaid legacy graph syntax. Supports YAML front matter titles,accDescr:descriptions, node label conventions (name<br/>labelsandLABEL · name), andclick id "tooltip"node descriptions.Artefact.UUID.from_name/1— derive a deterministic UUIDv7-shaped UUID from a stable name string. Used byfrom_mmd!/2to anchor node identity on the Mermaid node id, ensuring repeated imports bind correctly viacombine!/2.export/2updated to emitclick id "description"tooltip lines for nodes with adescriptionproperty — present in source, visible on hover, recovered on import.
Bug fix
combine!/2no longer raisesduplicate relationship idswhen the two input artefacts have disjoint relationships.harmonise/5inArtefact.Opnow reindexesrels_from_bwith an offset so ids never clash. Closes #38.
Tooling
- Igniter task
mix artefact.install— preferred installation method; wires the formatter. usage-rules.md— consumer-facing AI agent guidance, compatible with theusage_ruleshex package ecosystem.
v0.2.0
0.2.0 — 2026-05-05 (breaking)
Artefact
API shape
- All public ops now have two variants:
new/1,compose/3,combine/3,harmonise/4,graft/3return{:ok, %Artefact{}} | {:error, error}.new!/1,compose!/3,combine!/3,harmonise!/4,graft!/3return%Artefact{}directly or raise the error struct. Behaviour matches 0.1.5's raise-everywhere — the!variants are the gentle migration path.
validate/1shape::ok | {:error, %Artefact.Error.Invalid{reasons: [...]}}(was{:error, [reason_strings]}).validate!/1raisesArtefact.Error.Invalid(wasArgumentError).- Closes #23, #25.
Errors as structured values
- New
:sploderuntime dependency ({:splode, "~> 0.3"}). Artefact.Error— Splode root with two error classes (:invalid,:operation).Artefact.Error.Invalid— validation rule violations;:reasonsfield carries the list of human-readable strings.Artefact.Error.Operation— op-specific outcomes;:op,:tag,:detailsfields. SeeMIGRATION.mdfor the full per-op tag table.- Errors are real Elixir exceptions — raisable by the
!variants, pattern-matchable as struct values from the non-!variants, and aggregatable by Splode-using callers (e.g. UsTwo libraries).
Module reorg (internal)
Artefact.Op— implementation home for the operations.Artefact.Validator— implementation home for validation rules; surfaced viadefdelegatefromArtefact.- The
Artefactmodule is now a thin macro facade plus the%Artefact{}struct definition. Future internal refactors won't churn the consumer-visible surface.
Migration
See MIGRATION.md for the migration guide. TL;DR — append ! to every op call and you're done; use the non-! variant + with/case if you want explicit error handling.
ArtefactKino
- Bumps
artefactrequirement to~> 0.2.0.ArtefactKino.new/1,2continues to validate its input viaArtefact.validate!/1, which now raisesArtefact.Error.Invalidinstead ofArgumentErrorwhen an invalid artefact is passed in. Behaviour is otherwise unchanged.
v0.1.5
0.1.5 — 2026-05-05
Artefact:
Artefact.is_artefact?/1,Artefact.is_valid?/1,Artefact.validate/1,Artefact.validate!/1— public validation API. Closes #26, #27Artefact.UUID.valid?/1— UUIDv7 format predicate; used internally by validation and exposed for callers- All public ops (
new/1,compose/3,combine/3,harmonise/4,graft/3) now validate their input artefacts and validate the produced artefact before returning — corruption fails at the call site rather than several steps downstream. Closes #30 (empty/invalid uuid rejected at op input), #24 (non-list:labelsrejected at op input) Artefact.graft/3enforces the no-new-islands rule — every new node inargsmust reach a bind-only key viaargs.relationships; raisesArgumentErrorlisting orphan keys otherwise. Closes #29- Validation rule-set: artefact uuid is UUIDv7; node uuid is UUIDv7; node
:labelsis a list of strings; node:propertiesis a map; relationship:typeis a non-empty string; relationship:from_id/:to_idreference an extant node; node uuids, node ids and relationship ids are unique within the graph
ArtefactKino:
ArtefactKino.new/1,2now callsArtefact.validate!/1on its input — a hand-built%Artefact{}with malformed fields (non-list labels, missing uuid, dangling relationship endpoint, etc.) raisesArgumentErrorwith structured reasons instead of a cryptic render-time error. Closes #28. Bumpsartefactrequirement to~> 0.1.5for the new validation API.
v0.1.4
What's Changed
artefact:
- 20 artefact merge3 by @matt-beanland in #21
artefact_kino - 19 collapsible kino centre panel by @matt-beanland in #22
Full Changelog: v0.1.3...v0.1.4
v0.1.3
0.1.3 — Mermaid export, description field, Artefact.combine/3
v0.1.2
v0.1.1
v0.1.0
artefact and artefact_kino v0.1.0