Skip to content

Releases: slothflowlabs/duckle

Duckle v0.0.10

25 May 12:38

Choose a tag to compare

Release: bump tauri.conf.json to 0.0.10

v0.0.10 ships:
- Duckie AI Assistant (local Qwen + llama.cpp + chat panel)
- 5 SaaS REST aliases (Slack, Discord, Telegram, Twilio + 4 PM tools)
- 6 AI transforms (embed, llm, classify, chunk, pii, dedupe)
- src.dynamodb + src.kinesis via direct HTTP + AWS SigV4 (no AWS SDK)
- src.git, src.odata, src.soap, src.ftp, src.clipboard, src.email,
  src.webhook, snk.email
- code.javascript (via boa), code.wasm (via wasmi), code.shell
- XML response support in src.rest
- production-ready README rewrite

Counts move 269 -> 292 available, 11 -> 5 preview, 21 -> 16 planned.

Duckle v0.0.9

25 May 07:55

Choose a tag to compare

Engine: src.soap + XML response support in src.rest

Adds RestResponseFormat::Xml to RestSourceSpec so any REST request can
parse an XML body via the same element-path walker src.xml uses. The
walker is extracted into a free fn (walk_xml_to_rows) shared between
src.xml and the new REST/SOAP path; src.xml's own behavior is unchanged.

src.soap is a thin alias: matches!() in the planner adds defaults of
method=POST, Content-Type text/xml; charset=utf-8, responseFormat=xml,
plus an optional SOAPAction header from the soapAction prop. The user
supplies the envelope as `body` and the row_path as the element walk
into the response (e.g. Envelope/Body/GetUsersResponse/Users/User).

The XML walker now matches local-name when comparing row_path segments
to element names, so `Envelope/Body/Foo` matches a `soap:Envelope/soap:
Body/Foo` document without forcing the user to spell the namespace
prefix every time. Exact-match (`soap:Envelope/...`) still works since
both sides are local-stripped.

Counts move 268 -> 269 available, 24 -> 23 planned.

Duckle v0.0.8

25 May 06:27

Choose a tag to compare

Release: fix v0.0.7-class bug where binary loaded devUrl

cargo build --release without --features custom-protocol makes
tauri-codegen embed http://localhost:5173 as the asset URL instead of
the frontend/dist directory, so the published binary opens with
ERR_CONNECTION_REFUSED inside the Tauri WebView. tauri build sets the
feature automatically; the raw cargo invocation in release.yml did not.

- Declare custom-protocol feature on duckle-desktop that forwards to
  tauri/custom-protocol so release.yml can pass it.
- Pass --features custom-protocol in the release workflow.
- Add CI desktop-release-build job that runs the exact release command
  AND greps the built binary for the embedded JS chunk; this would have
  caught the v0.0.7 bug before tagging.
- Bump tauri.conf.json version 0.0.5 -> 0.0.8.

Duckle v0.0.5

23 May 17:18

Choose a tag to compare

Release: fix binary path - workspace target/, not apps/desktop/target/

Cargo workspaces put compiled binaries in <workspace>/target/, not
in the per-crate target/. The release stage was looking in the wrong
directory and every platform's 'Stage release asset' step failed
with 'cp: target/release/duckle: No such file or directory'.

Re-tagging v0.0.5 to re-trigger the release matrix.

Duckle v0.0.4

23 May 09:34

Choose a tag to compare

Duckle v0.0.4. Catches the engine up to DuckDB v1.5.3 (the actual latest).

Highlights

  • DuckDB CLI v1.4.4 -> v1.5.3 (latest stable). v0.0.3 stayed on v1.4.4 because v1.5 introduced a regression in the fts PRAGMA's table visibility within a single -c invocation. Fixed by refactoring xf.ai.text_search to run as two CLI calls sharing the temp DB (Phase 1 stages the upstream; Phase 2 builds the BM25 index + final SELECT). The two-step works on both v1.4 and v1.5.
  • All 62 engine tests pass against v1.5.3, including the CI integration jobs for Postgres / MySQL / MinIO.

The avro community extension still has no v1.4+ or v1.5+ build, so src.avro stays preview until upstream catches up.

Downloads

Same set as v0.0.3 (Windows / macOS / Linux: .exe, .msi, .dmg, .app.tar.gz, .AppImage, .deb, .rpm).

Duckle v0.0.3

23 May 09:06

Choose a tag to compare

Duckle v0.0.3. The DuckDB-runnable engine surface effectively closes here: every category I could express on the embedded DuckDB engine now has at least one functional component, with live CI on Postgres / MySQL / MinIO services.

Highlights since v0.0.2

Engine

  • DuckDB CLI bumped to v1.4.4 (was v1.1.3 in v0.0.2 -> v1.2.2 -> v1.4.4 now). 10 extensions pre-fetched on first launch: httpfs, azure, sqlite, postgres, mysql, excel, iceberg, delta, vss, fts. Spatial is lazy-loaded so the small install promise stays intact.

New sources

  • Apache Iceberg, Delta Lake (new lakehouse group)
  • MotherDuck (ATTACH md:)
  • HTTP (any URL via httpfs)
  • Excel (.xlsx, native v1.2+ reader)
  • Spatial (GeoJSON / Shapefile / GeoPackage / KML / GPX / GML via ST_Read; lazy GDAL)
  • MinIO / R2 / B2 (S3-compatible endpoint)
  • PostgreSQL, MySQL, MariaDB, CockroachDB (relational via DuckDB extensions; live CI for PG + MySQL)

New sinks / modes

  • Relational sinks now support overwrite, append, truncate, and upsert (ON CONFLICT / ON DUPLICATE KEY via passthrough)
  • TSV file sink

New transforms

  • CDC group complete: Diff Detect, SCD Type 1, SCD Type 2, Merge / Upsert
  • Pivot group complete: Pivot, Unpivot, Denormalize, Normalize, Transpose
  • Window Aggregate
  • Vector Similarity Search (vss, cosine / L2 / inner product, top-K)
  • Full-Text Search (fts, BM25 over chosen columns, top-K)
  • Data quality group complete: Column Profile, Describe, Histogram, Standardize, Fuzzy Deduplicate, Record Match, Schema Validate

New control flow

  • Replicate / Tee, Merge Streams
  • Switch / Conditional Split (Duckle's first multi-output node; case_1..N + default with first-match-wins semantics)

Quality / UX

  • First-launch installer pre-fetches every common extension with per-extension progress
  • CI matrix runs on Ubuntu / Windows / macOS; live integration jobs for Postgres, MySQL, and MinIO
  • Engine no longer silently passes data through unimplemented ctl.* nodes
  • Concurrent-pipeline temp DB collision fixed
  • 62 engine tests, all green

Downloads

  • Windows: Duckle_0.0.3_x64-setup.exe, Duckle_0.0.3_x64_en-US.msi
  • macOS: Duckle_0.0.3_aarch64.dmg, Duckle_aarch64.app.tar.gz
  • Linux: Duckle_0.0.3_amd64.AppImage, Duckle_0.0.3_amd64.deb, Duckle-0.0.3-1.x86_64.rpm

Duckle v0.0.2

22 May 15:04

Choose a tag to compare

First published Duckle build. A tiny, local-first ETL / ELT desktop studio; the DuckDB engine downloads on first launch.

Highlights:

  • Visual designer: drag, wire, run, with generated SQL and a live row preview on every node.
  • Sources: CSV, TSV, Parquet, JSON / NDJSON, SQLite, DuckDB, and S3 / GCS / Azure via httpfs.
  • 40+ transforms: filter (with a reject port), join, aggregate, window, window aggregate, pivot, unpivot, CDC diff detect, plus data-quality validators.
  • Sinks: files, SQLite, DuckDB, and cloud object storage.
  • Schedules (cron / interval / file watch), context variables, and reusable SQL routines.

Downloads below: Windows (.exe installer / .msi), macOS (.dmg), Linux (.AppImage / .deb / .rpm).