Skip to content

Releases: queria-io/fdl

v0.18.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 22:38

v0.18.2 (2026-11-03)

This release is published under the MIT License.

Bug Fixes

  • Refuse a version past retention in fdl url, and explain how FDL works (#35, 1130813)

Detailed Changes: v0.18.1...v0.18.2

v0.18.1

Choose a tag to compare

@github-actions github-actions released this 03 Nov 05:36

v0.18.1 (2026-11-03)

This release is published under the MIT License.

Bug Fixes

  • Compare a rebuild over HTTP with the new files where they were written (c0f091a)

A working catalog of a repository over HTTP writes new data files to a local folder, but comparing with the parent read them under the repository's URL. The read failed (404), the commit fell back to making a version, and every rebuild made one even when nothing changed.


Detailed Changes: v0.18.0...v0.18.1

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 05:05

v0.18.0 (2026-11-03)

This release is published under the MIT License.

Bug Fixes

  • Send the file's Content-Type to signed URLs, ask again for expiring ones, plan withdrawals from files.json (be180a3)

Features

Withdraw versions that hold data that must not be published: delete the tags that point at them, the data files no kept version reads, then their catalogs, and mark them withdrawn. Without --yes it only prints the plan. The spec now deletes data files before catalogs, so a stopped run can be run again.

Rewrite refs.json after a push or a tag moves a ref, as the spec asks. A host that keeps refs.json itself may refuse the write with 403. Add fdl tag to list, create and delete tags, which never move.

  • Upload straight to storage through a batch of signed URLs (a2b59cd)

Add POST ?batch to the HTTP protocol, after Git LFS's batch API: a host hands out upload URLs for files written once, and the writer sends them straight to storage. A host without batches, or a file it will not sign for (413), goes through the host as before.


Detailed Changes: v0.17.0...v0.18.0

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 01:35

v0.17.0 (2026-11-03)

This release is published under the MIT License.

Bug Fixes

  • Compare rows by value and check the description first (5d17ae5)

hash() gives NULL and empty nested values the same hash, so rows are compared with EXCEPT ALL once the counts match. The dataset.json check runs before reading rows, table names are escaped, and the message no longer names the checked-out version as where the branch is.

  • Count a table's rows as a reader would (ca8c020)

dataset.json took rows from ducklake_table_stats, which keeps counting rows that were deleted or updated. Rows are now the live data files' records less what their delete files remove.

Documentation

  • Add a guide to reading without DuckDB (b61328e)

Features

  • Credential helper in fdl's config, views in dataset.json, and annotations (#30, e082f2b)

BREAKING CHANGE: tokens saved by fdl login are no longer read. Set FDL_TOKEN or a credential helper in fdl's config. dataset.json and version.json write annotations instead of extensions.

  • Make no version when nothing changed (fc08213)

fdl commit compares the working catalog's last snapshot with the parent's. No new snapshot, or the same tables, views, columns and rows (as a multiset) and the same dataset.json, prints "Nothing to commit" and leaves the branch. Files are compared first, so rows are read only for tables written to new files. --allow-empty makes the version anyway; rows that cannot be read are taken as changed.

Breaking Changes

  • Tokens saved by fdl login are no longer read. Set FDL_TOKEN or a credential helper in fdl's config. dataset.json and version.json write annotations instead of extensions.

Detailed Changes: v0.16.0...v0.17.0

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 23:21

v0.16.0 (2026-11-01)

This release is published under the MIT License.

Documentation

  • Compare files.json with Git's reachability bitmap (181a738)

Features

  • Index each table's files in files.json, not version.json (74412af)

files.json sits beside the catalog as an optional index made from it, like Git's commit-graph. version.json names it with its size and sha256. Tables with a renamed column are marked, and readers without DuckLake must not read a table with deletes or renamed columns. Expiry deletes the index with the catalogs.

  • List each table's files in version.json (1134b2d)

Readers without DuckDB (a Worker reading Parquet by range) need to know which files make up a table at a version. commit now writes tables with each data file's path under data_dir, rows, bytes, footer size and its delete file.


Detailed Changes: v0.15.0...v0.16.0

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 05:31

v0.15.0 (2026-11-01)

This release is published under the MIT License.

Features

  • Read tables from *.table.yml files beside the description (3ffa77a)

A table can be described in its own file next to what builds it. fdl commit adds the tables in *.table.yml / *.table.json below the description's folder, skipping hidden folders.


Detailed Changes: v0.14.1...v0.15.0

v0.14.1

Choose a tag to compare

@github-actions github-actions released this 01 Nov 04:02

v0.14.1 (2026-11-01)

This release is published under the MIT License.

Bug Fixes

  • Name fdl in the User-Agent of HTTP requests (f1fa818)

Cloudflare's browser integrity check refuses the default Python-urllib agent with 403 (error code 1010), so checkout from such a host failed.


Detailed Changes: v0.14.0...v0.14.1

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 03:49

v0.14.0 (2026-11-01)

This release is published under the MIT License.

Documentation

  • Add a Japanese translation of every page (0d7bb97)

English stays the source. The Japanese pages live under docs/ja/ and are served at /ja/.

  • Bring in dataset.json and pushing over HTTP from the implementation (0e7817b)

Port the specification and CLI text of fdl#23 into the new pages: dataset.json in each version, the HTTP push requests, fdl login and commit --dataset.

  • Fix review findings in the spec and guides (53e8cc4)

Name the HTTP repository as the exception to where new data files go, say a host answers HEAD requests, list withdrawal among the changes a version allows, add dataset.json to the second commit example, pass DATA_PATH in the README reader, and say versions have one parent.

  • Rewrite the documentation with Blume and split the specification into pages (8bfdb79)

Guide pages (getting started, concepts, how it works, guides) explain the format the way Git's documentation does; docs/spec/ is the normative specification, with the data_path and DuckLake format rules written in. GitHub Pages now builds the site with Blume.

  • spec: Settle the open questions (b98a88f)

Add refs.json, ASCII-only ref names, one parent per version in 0.1, optional SSH signatures (version.json.sig and signers in fdl.json), withdrawal, and leave retention defaults to hosts. Remove the open questions page.

Features

  • Describe every version in dataset.json (4608dec)

dataset.json is now part of a version, listed in version.json with its hash. fdl commit reads it, refuses tables, columns and keys the format does not know, and fills in types, nulls, row counts and comments from the catalog. --attach is gone.

  • Push to a repository over HTTP (659399b)

A host can take pushes over plain HTTP: GET, HEAD and conditional PUT, a listing, and uploads in parts for large files. The writer needs a token (fdl login, or FDL_TOKEN) instead of keys to the storage.

DuckDB cannot write data files over HTTP, so a working catalog of such a repository writes new files to a folder beside it and reads the published ones where they are; commit makes both relative again and push uploads the new ones. commit --attach keeps a file beside the version.

  • Read the description from dataset.yml too (c04b6e8)

fdl commit looks for dataset.json, then dataset.yml, in the current directory. Licenses may be written as bare SPDX identifiers.


Detailed Changes: v0.13.0...v0.14.0

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 01:12

v0.13.0 (2026-11-01)

This release is published under the MIT License.

Features

  • Give each repository an id in fdl.json (389ec96)

init writes a UUID that never changes, so a copy of a repository can tell it holds the same one. Repositories started without one still read.


Detailed Changes: v0.12.1...v0.13.0

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 08:00

v0.12.1 (2026-10-30)

This release is published under the MIT License.

Bug Fixes

  • Publish as fdl-cli on PyPI (37afe71)

PyPI refuses the name fdl as too similar to an existing project. The command and the import name stay fdl.


Detailed Changes: v0.12.0...v0.12.1