Repository navigation
DuckLocal v0.2.1
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 withducklocal 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
noteunder its value and atone(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). Usetype = "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
tableplot no longer needsx. ducklocal checkworks without--database. It runs every query in memory and lists any table no source defines underunresolved.
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:00instead of1 days 7200000000000 ns. - PIVOT without
INis still refused, because DuckDB counts it as two statements. The message now tells you how to fix it: name the values, as inPIVOT 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:\ProjvsE:\proj) is listed only once. - On Windows, the icon fills the taskbar square, and
ducklocal schemashows 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
- Fix/dashboard bars by @JetSquirrel in #30
- Comment on dashboard plots for an agent to review, plus copy table info and an update check by @JetSquirrel in #31
- Feat/dashboard comments by @JetSquirrel in #32
- Clear tech debt ahead of DuckDB 2.0: CI lint gate, DuckDB contract tests, and fixes by @JetSquirrel in #33
- Bump version to 0.2.1 by @JetSquirrel in #35
Full Changelog: v0.2.0...v0.2.1