Skip to content

DuckLocal v0.2.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 17:51
· 117 commits to main since this release
5f90a88

Heads up: extensions no longer install themselves

Until now, a query that needed a DuckDB extension you didn't have (an https:// path, a spatial function) quietly downloaded it from extensions.duckdb.org. That broke the README's promise of no network use you didn't ask for. The window no longer does this, which matches the CLI. Extensions you've already installed still load on their own. To add a new one, install it from the Extensions tab.

Dashboards

  • Comment on a plot. Hover a plot and click the speech bubble to start a thread, then reply, resolve or reopen it. Threads are saved next to the spec in NAME.dash.comments.json. An agent can answer them with ducklocal comments FILE (--reply, --resolve, --reopen, --add), and its replies show up on the plot within about a second.
  • See the SQL behind a plot. Hover a plot and click SQL to see the query that last ran, with sources and current picks filled in. From there you can copy it or open it in a query tab.
  • Sort a table. Click a column header to cycle through descending, ascending and query order. NULLs sort last.
  • Bars are easier to read. A series is drawn in one colour, and every category gets a label. When the labels don't fit, the chart turns horizontal. A bar over dates shows skipped days as gaps.
  • Series have distinct colours. Charts, pies and maps use eight distinct hues, with separate shades for dark mode. A plot with several series shows a key.
  • Cards and text panels. A card can take a note under its value and a tone (accent, good, warning, critical). A row of cards shares one value size. Values shrink to fit instead of being cut off, and float noise is rounded off (11,439,704.020000005 → 11,439,704.02). Use type = "text" for a panel that holds text and runs no query.
  • Smaller fixes. Scrolling down a dashboard no longer stops on the first table. Short tables are only as tall as their rows. A table plot no longer needs x.
  • ducklocal check works without --database. It runs every query in memory and lists any table no source defines under unresolved.

Elsewhere in the app

  • Copy table info, in a table's context menu in the sidebar, copies its name, kind, estimated row count and columns as a Markdown table.
  • Update check. Click the version in the status bar to ask GitHub whether a newer release exists. On macOS this is also in the menu, along with an option to check at launch. That option is off by default.
  • Intervals display the way DuckDB writes them: 1 day 02:00:00 instead of 1 days 7200000000000 ns.
  • PIVOT without IN is still refused, because DuckDB counts it as two statements. The message now tells you how to fix it: name the values, as in PIVOT t ON col IN ('a', 'b') USING sum(x).
  • Sidebar headings are now quieter labels, so they don't look like databases, and they switch language along with the rest of the app. A dashboard opened under two spellings of its path (E:\Proj vs E:\proj) is listed only once.
  • On Windows, the icon fills the taskbar square, and ducklocal schema shows relative paths even when your shell's casing differs from the disk's.

Under the hood

  • CI now fails on formatting or clippy warnings.
  • New tests pin the DuckDB behaviour DuckLocal relies on (catalog columns, error wording, type rendering, and reading files written by v1.5.5), in preparation for DuckDB 2.0.

What's Changed

Full Changelog: v0.2.0...v0.2.1