Skip to content

Releases: diffo-dev/artefactory

artefactory_neo4j 0.3.0

13 May 04:27
5abc508

Choose a tag to compare

0.3.0 — 2026-05-13

Tooling

  • Igniter task mix artefactory_neo4j.install — preferred installation method; configures Bolty in runtime.exs, adds Bolty to the supervision tree, and installs the artefact dependency automatically.
  • usage-rules.md — consumer-facing AI agent guidance, compatible with the usage_rules hex package ecosystem.
  • usage_rules dev dependency added.

Dependencies

  • Bumps artefact requirement to ~> 0.3.0.

artefact_kino 0.3.0

13 May 04:27
5abc508

Choose a tag to compare

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 artefact requirement to ~> 0.3.0.

artefact 0.3.0

13 May 04:26
5abc508

Choose a tag to compare

0.3.0 — 2026-05-13

Mermaid import

  • Artefact.Mermaid.from_mmd!/2 — parse a Mermaid graph source string into an %Artefact{}. Accepts the round-trip format produced by export/2 and the broader Mermaid legacy graph syntax. Supports YAML front matter titles, accDescr: descriptions, node label conventions (name<br/>labels and LABEL · name), and click id "tooltip" node descriptions.
  • Artefact.UUID.from_name/1 — derive a deterministic UUIDv7-shaped UUID from a stable name string. Used by from_mmd!/2 to anchor node identity on the Mermaid node id, ensuring repeated imports bind correctly via combine!/2.
  • export/2 updated to emit click id "description" tooltip lines for nodes with a description property — present in source, visible on hover, recovered on import.

Bug fix

  • combine!/2 no longer raises duplicate relationship ids when the two input artefacts have disjoint relationships. harmonise/5 in Artefact.Op now reindexes rels_from_b with 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 the usage_rules hex package ecosystem.

v0.2.0

09 May 03:30
b277abc

Choose a tag to compare

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/3 return {:ok, %Artefact{}} | {:error, error}.
    • new!/1, compose!/3, combine!/3, harmonise!/4, graft!/3 return %Artefact{} directly or raise the error struct. Behaviour matches 0.1.5's raise-everywhere — the ! variants are the gentle migration path.
  • validate/1 shape: :ok | {:error, %Artefact.Error.Invalid{reasons: [...]}} (was {:error, [reason_strings]}).
  • validate!/1 raises Artefact.Error.Invalid (was ArgumentError).
  • Closes #23, #25.

Errors as structured values

  • New :splode runtime dependency ({:splode, "~> 0.3"}).
  • Artefact.Error — Splode root with two error classes (:invalid, :operation).
  • Artefact.Error.Invalid — validation rule violations; :reasons field carries the list of human-readable strings.
  • Artefact.Error.Operation — op-specific outcomes; :op, :tag, :details fields. See MIGRATION.md for 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 via defdelegate from Artefact.
  • The Artefact module 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 artefact requirement to ~> 0.2.0. ArtefactKino.new/1,2 continues to validate its input via Artefact.validate!/1, which now raises Artefact.Error.Invalid instead of ArgumentError when an invalid artefact is passed in. Behaviour is otherwise unchanged.

v0.1.5

09 May 03:18
b752ccc

Choose a tag to compare

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, #27
  • Artefact.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 :labels rejected at op input)
  • Artefact.graft/3 enforces the no-new-islands rule — every new node in args must reach a bind-only key via args.relationships; raises ArgumentError listing orphan keys otherwise. Closes #29
  • Validation rule-set: artefact uuid is UUIDv7; node uuid is UUIDv7; node :labels is a list of strings; node :properties is a map; relationship :type is a non-empty string; relationship :from_id/:to_id reference an extant node; node uuids, node ids and relationship ids are unique within the graph

ArtefactKino:

  • ArtefactKino.new/1,2 now calls Artefact.validate!/1 on its input — a hand-built %Artefact{} with malformed fields (non-list labels, missing uuid, dangling relationship endpoint, etc.) raises ArgumentError with structured reasons instead of a cryptic render-time error. Closes #28. Bumps artefact requirement to ~> 0.1.5 for the new validation API.

v0.1.4

05 May 10:33
241d218

Choose a tag to compare

What's Changed

artefact:

Full Changelog: v0.1.3...v0.1.4

v0.1.3

30 Apr 14:03

Choose a tag to compare

0.1.3 — Mermaid export, description field, Artefact.combine/3

v0.1.2

21 Apr 13:05
28a74c3

Choose a tag to compare

v0.1.2 Pre-release
Pre-release

What's Changed

Full Changelog: v0.1.1...v0.1.2

v0.1.1

21 Apr 04:17
a1bea2b

Choose a tag to compare

v0.1.1 Pre-release
Pre-release

What's Changed

Full Changelog: v0.1.0...v0.1.1

v0.1.0

20 Apr 09:55

Choose a tag to compare

v0.1.0 Pre-release
Pre-release
artefact and artefact_kino v0.1.0