Changelog

What shipped, when — newest first.

Brightfield v0.1.7 — type SQL into a chart, and export a Protocol's report

What to try. Type SQL in the chart palette: its result previews first, and you then keep it as a step or as a filter. A filter or a sort can also be applied from the grid's cursor, and it is recorded as a step of the Protocol. An agent-written Protocol now opens with its charts drawn, and from the command line its report exports to PDF and each of its panels to PNG or data.

Also changed. A right-hand legend starts under its plot's title, so it no longer covers the title. The grid shows doubles, and the band shows its range, to two decimal places. The shelf's mark cell no longer shows a chevron, since it does not yet open a list. The EDGAR↔GLEIF crosswalk chart's colour legend is back, below the grid. A release whose packaged artifacts carry no DuckDB engine now fails before it is published, and rustls is at 0.23.46, for four TLS advisories. Still an early preview, macOS only, unsigned.

v0.1.7 release notes on GitHub →

Arcform v0.2.1 — FineType tools that work with finetype 0.6.62

What shipped. A patch release with two fixes. The arc mcp tools taxonomy and generate no longer offer a priority argument: finetype 0.6.62 removed the flag it was passed to, so any call that set it failed, and arc's CI now runs all five FineType tools against a pinned finetype release with every argument they advertise. And with ARC_SQL_READER=duckdb, a step holding a statement DuckDB warns about while parsing it, such as PRAGMA threads = 4, is read again instead of being refused as unreadable. curl -fsSL https://install.meridian.online/arc | bash installs it.

Arcform docs → · v0.2.1 release notes on GitHub →

Arcform v0.2.0 — the first release, with an install script and an MCP server for agents

What shipped. Arcform's first published release. curl -fsSL https://install.meridian.online/arc | bash installs arc for macOS or Linux, on x86_64 and aarch64, with DuckDB built in; cargo install arcform --locked --features mcp,bundled-duckdb builds the same from crates.io. arc mcp serves arc to an AI agent over the Model Context Protocol: an agent can create a Protocol, record SQL and command steps into it, run it, describe a table with table_describe and look at the results with sql_query, a read-only SELECT capped at 100 rows by default. What the agent leaves behind is a versioned arcform.yaml anyone can rerun, not a scratchpad. The same two looks are on the command line as arc table describe and arc sql query. Beside them: fetching and unpacking data, SQL modelling on DuckDB, operators for embeddings, UMAP maps, entity resolution, Parquet export and DuckLake publishing, FineType semantic types, Frictionless Data Package descriptors, and a history of every change to a Protocol that travels with it through git.

Arcform docs → · v0.2.0 release notes on GitHub →

Brightfield v0.1.6 — design the chart of the file you open, and keep its versions

What to try. Open a CSV or a Parquet, from the picker or the welcome screen's catalogue, and design its chart. A shelf band under the hero's header holds a cell for each channel: put a column from the Outline's list on x, y or colour by its chips, or with z and the channel, and u takes back the last one. Tab on a shelf entry turns its list to settings. An axis lists its scale, range, ticks, grid, zero, reverse, title and tick format, and a click on any part of an axis lands on its row. Colour lists its scheme, picked by eye from a strip of ramps, its scale (linear, diverging about a pivot, or steps), where its legend goes (right, below the plot, or nowhere), reverse and domain. The chart redraws on each change, and a field that cannot take what you typed says why. Save writes the chart into a file beside the Protocol, each edit on its own line, and the chart is drawn from it when the Protocol is reopened. Closing with unsaved edits asks whether to save and close, close without saving, or keep editing, and the Versions panel, the ledger's fifth, lists each saved version with what changed and steps the chart back to any of them.

Also new. The window takes the design system's square look, with line tabs on the rails and panes. A numeric column in the Outline's list shows its rug in place of its type. The grid has a cell cursor that moves with the grid's keys. A chart file can now carry tick formats for numbers and dates, fixed axis ends, zero and nice, reversed axes and gridlines left out, and the warning banner names any attribute this build does not read. Each release now installs the published Homebrew formula and runs the installed copy before it is called done. Still an early preview, macOS only, unsigned.

v0.1.6 release notes on GitHub →

Finetype v0.6.62 — one value is enough to read a duration, a time zone or a log timestamp

What shipped. finetype infer -i and ft_infer read a single value in its datetime category when its shape says so: PT30M is now an ISO 8601 duration, America/New_York an IANA zone, 04/Mar/2024:05:06:07 +00 a Common Log Format timestamp, and 04-03-24 a two-digit-year date, read the way DuckDB's CSV sniffer reads it. Before, the same values were read as an identifier, a continent, plain text and a time. The multi-symbol amount pattern now reads the amount to its end, so finetype validate no longer accepts R$ 1 apple as an amount. Common Log Format accepts the +00 and +00:00 offsets DuckDB writes and reads. release_priority leaves the taxonomy, with the --priority flag. And the CLDR tables gain each date-pattern locale's default numbering system, which says that ar-SA writes ١٥/١/٢٠٢٤, not 15/01/2024.

Finetype docs → · v0.6.62 release notes on GitHub →

Brightfield v0.1.5 — a welcome screen, a point map, and a protocol behind the file you open

What shipped. The first screen is now a welcome screen whose catalogue holds real datasets: the EDGAR↔GLEIF crosswalk in its two forms, and California Housing, which opens from a copy bundled in the app with no network. Opening a CSV or a Parquet also builds a one-step protocol that says what was opened, so the outline and inspector rails describe the file, and the ledger rail is now the run record (Log, Quality, Rows, Editor) with a Run control on its strip that runs the protocol. The canvas draws a hero pane and a grid pane side by side; the edge between them drags and the split comes back on the next open, and the grid can lay its columns out as brushable rows and move between the canvas and the ledger. A pair of longitude and latitude columns is drawn as one point map through a named projection with a graticule. A positional axis can be log or symlog, and a binned column bins in that space, so a long-tailed column can be spread across its bins. A histogram whose fill names a column stacks its categories, and a control on the plot reads them as shares within each bin. Resting the pointer on a mark reads the row beneath it out of the engine, a press inside a committed brush moves it, and the status band leads with a live count of selected rows out of the total. Opening a file is quicker: a small file is read into the engine once and every numeric column's distribution is counted in a single pass, and the remote start fetches on a worker so the window keeps answering. The banner that says the data changed on disk now offers Reload, and a saved protocol reopens to its data file from any working directory. Still an early preview, macOS only, unsigned.

v0.1.5 release notes on GitHub →

Finetype v0.6.61 — registry expressions return what they name, and ft_detail becomes an aggregate

What shipped. ft_detail is now a DuckDB aggregate that shares ft_profile's state, so the explanation it returns is of the verdict ft_profile gave over the same rows, where before it pooled a chunk and could explain a type ft_profile never gave. Its three scalar forms retire, which breaks callers of the removed forms: ft_detail(list(col)) becomes ft_detail(col). Each transform and decompose expression in the registry now returns a value on each of its own type's samples, and CI runs every expression on every sample to keep it that way. A REGEXP_EXTRACT with no group index had returned the whole match, so a URL's hostname read https://example.com, an ARN's partition read arn:aws:, and an E.164 number's country code read +614 for +61412345678. And the profile-eval accuracy measurement is re-run against the 0.6.60 release binary and written into a dated, tracked report.

Finetype docs → · v0.6.61 release notes on GitHub →

Finetype v0.6.60 — finetype validate verifies check digits, not only shape

What shipped. finetype validate now verifies a column's check digit and not only its shape, so a value that merely looks like an LEI or an ISBN no longer clears validation on the identifier columns crosswalks are joined on. A CSV sniff that could confirm itself against a file's own last line now requires a real data row to follow the one it lands on. profile's free-text classification is measured across repeated draws of real-world columns for whether the same label comes back twice, establishing the first stability baseline for that measurement. And invalid LEI values in the evaluation corpus are replaced with ones that pass the checksum they were meant to test.

Finetype docs → · v0.6.60 release notes on GitHub →

Finetype v0.6.59 — a release attaches the DuckDB extension and taxonomy catalogue, and the extension is stamped with its own build

What shipped. A tagged release now attaches the DuckDB extension and the taxonomy schema catalogue as downloadable, checksummed assets for every supported platform, alongside the existing CLI tarballs. The extension itself is now stamped with the version of the git ref it was built from, closing a gap where the previous build step silently skipped that stamp and the artifact carried whatever version happened to already be on disk.

Finetype docs → · v0.6.59 release notes on GitHub →

Brightfield v0.1.4 — open your own file, and the window is one arrangement

What shipped. Open a CSV or a Parquet from the front door and a dashboard is generated from it, a tile per column chosen from what the column means: a histogram that keeps the unfiltered total behind the brushed subset, ranked bars with the count inside the bar, a tile for a date column, and a scatter for a pair of numbers. Around it the window is now one arrangement: the protocol outline on the left, an inspector on the right where the Controls column was, Steps and the spec editor along the bottom, and rails that collapse. The chart canvas follows the theme, the command palette reaches the chart view, and the status rail says what a chart holds when nothing is running. The protocol viewer reads the same manifest rules as the tool that runs them. Still an early preview, macOS only, unsigned.

v0.1.4 release notes on GitHub →

Finetype v0.6.58 — constraints follow the declared type, and a CSV is sniffed before it is read

What shipped. Every field constraint is now routed by the type the field declares, so a declared type carries its own bounds rather than whichever ones the inference happened to pick. A CSV's shape is sniffed first and then read with the column list the sniff pinned, which is what stops a ragged or oddly quoted file from being read as a different table than the one on disk. Model training is reproducible at a seed, and the training criterion rejects a trainer that takes no step. The repository also gains a measurement of whether a static embedding changes what a 2D map looks like, with its two floors, which is the evidence behind the embedding work rather than a change to the extension.

Finetype docs → · v0.6.58 release notes on GitHub →

Finetype v0.6.57 — two classifier accuracy fixes: naics.title and jurisdiction

What shipped. Two classifier accuracy fixes: naics.title now reads the entity name, and jurisdiction now reads the postal code or state code — both were previously reading a mismatched field. The taxonomy's published sample for representation.identifier.numeric_code no longer looks like a NAICS code, since it isn't one. Every published sample in the taxonomy is now checked against the pattern it's meant to match.

Finetype docs → · v0.6.57 release notes on GitHub →

Brightfield v0.1.3 — a .dmg install alongside the tarball

What shipped. A second way to install: Brightfield.app inside a .dmg, for anyone who wants an icon in the Dock and a double-click launch rather than a terminal and a tarball. The tarball install is unchanged, and both downloads are the same build. Underneath, a navigation move now serves its domain facts from cache instead of re-deriving them, and a plot above the drawn-primitive ceiling samples itself rather than stalling.

v0.1.3 release notes on GitHub →

Brightfield v0.1.2 — sampled-plot domains corrected, crosshair clipped to its own plot

A correctness release for dashboards with more than one plot.

What shipped. A sampled plot's positional domain was being read from only its first mark; it now reads from all of them, so a sampled dashboard no longer clips series that should be visible. The same fix applies to a sampled plot's colour domain, which was previously refused rather than drawn. A spec's fixed-domain instruction is now honoured instead of overridden by the data. The hover crosshair no longer bleeds into a neighbouring plot — it clips to the plot the pointer is actually in. A bar cross-filter now draws only the part of each bar the selection produced, rather than the whole bar.

v0.1.2 release notes on GitHub →

Finetype v0.6.55 — the LEI pattern widens to ISO 17442's full range

What shipped. The LEI pattern now covers the full alphanumeric LOU-prefix range ISO 17442 defines, so more legal-entity identifiers classify correctly instead of falling through to a weaker type. The published docs are now checked against the CLI they document, with gates that fail on a claim the tool no longer backs.

Finetype docs → · v0.6.55 release notes on GitHub →

Brightfield v0.1.1 — cross-filter ink, a histogram shorthand, and a settled zoom

The second brightfield release, one week after v0.1.0.

What shipped. A committed cross-filter now leaves ink on the plot that produced it, instead of vanishing once the selection settles. x: {bin: col} with y: {count:} draws a histogram without a separate binning step. A navigation zoom now settles into a persisted extent and re-queries against it, and an interval slider drives that same zoom through a sustained drag. Confidence bands on a fit are dashed, distinct from the fit line itself, and a fit that has outlived its frame says so in the ink rather than staying silent. Every Arrow chunk of a mark now draws — previously only the first chunk did, so a large result could render as though it were partial. The CLI reports a real --version and --help, and refuses to run a build whose version doesn't match its release tag. First launch gets a returnable front door and chrome worth seeing before a spec is loaded.

v0.1.1 release notes on GitHub →

Finetype v0.6.54 — the value encoder halves in size

What shipped. The value encoder now stores in half precision: the shipped binary drops from 67.4 MB to 52.1 MB. The NAICS validator accepts the three official hyphenated sector ranges it previously rejected. A compact YYYYMMDD date is now validated by date range rather than by its eight-digit shape, so an eight-digit number that isn't a real date no longer passes as one.

Finetype docs → · v0.6.54 release notes on GitHub →

Brightfield v0.1.0 — the first public release

Brightfield — the native macOS app that renders Mosaic specs and protocol graphs on your GPU — is public. One command installs it:

curl -fsSL https://install.meridian.online/brightfield | bash

or, with Homebrew: brew install meridian-online/tap/brightfield.

Works today. It opens on a curated gallery of starts — bundled examples plus the EDGAR ↔ GLEIF crosswalk protocol graph — so there is something to render the moment it launches. A single binary, no server, no account. Every bundled example draws with the network switched off, and it reports nothing: no telemetry, no update check.

Not yet. Linux and Windows builds — the renderer is portable, and the Brightfield page takes your email if you want to hear the moment Linux lands. The deeper data work is also still ahead: pointing it at your own sources and shaping data in place.

Install Brightfield → · v0.1.0 release notes on GitHub →