Releases: slothflowlabs/duckle
Duckle v0.0.10
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
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
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
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
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
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
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).