v2.4.0
Added
-
ff-cli enrich <file>(#111) — repairs a playlist this CLI did not build. Items that carry asourceandprovenancebut noinlineManifestlabel title-only on the FF1 tombstone, and show an empty tile in the app's grid for every live-code work: the app can rasterize an image, video, or SVG source, but not an HTML page. A playlist of computational art is mostly live HTML, so that is the case that looks broken.Each item is resolved by its
provenance.contractand given a manifest. Nothing else is touched —source,duration,title,idanddisplayare curator decisions and survive as found, and an item the indexer cannot resolve is reported rather than guessed at.DP-1 records an EVM coordinate as
chain: "evm", which names Ethereum, Polygon, Arbitrum, Optimism, Base and Zora alike, and the indexer's answer collapses back to the same word. Those items are skipped unless--assume-ethereumasserts the network, because picking a member unasked risks attaching a different artwork's artist and still to a document you then sign.In-place writes are atomic, crash-durable, and refuse to run over an input that changed while the lookup was in flight.
--outputwrites elsewhere and is the right choice for a file under active editing.
Fixed
INDEXER_API_URLis gated onNODE_ENV(#112), so a stray value in a.envcannot silently redirect token lookups. The production endpoint stays hardcoded.- The find-command indexer mock speaks the real GraphQL contract and rejects operations it does not model (#110, #112), so the suite can no longer stay green over a broken client protocol. It is also hermetic — the release gate no longer races a live service, which is what left 2.3.0 unshipped for two weeks.
Known limitation: extended ACLs are not preserved by in-place replacement, since Node exposes no portable way to read them. Use --output for a playlist carrying them.