All notable changes to dashbrew are recorded here.
The format follows Keep a Changelog and the project follows Semantic Versioning.
Nothing yet.
Big v2 themed feature drop. Old v1.0 configs keep working unchanged; every new field is optional with sensible defaults.
bindings: [{key, label, action}]. Pressing the bound key on the focused pane runs a shell action.fire_and_forget (spawn, ignore output) and replace_pane (spawn, capture stdout, show until reset).output_as: "text" | "inherit" on replace_pane actions. inherit routes the action’s stdout through the component’s normal data parser so a chart action can return new numbers, a histogram action can return new bins, etc.Ctrl+K action palette aggregating every binding across every component, fuzzy filterable, run with Enter.replace_pane action is in flight, sticky output afterwards until R (refetch + resume schedule) or Esc (clear only).Esc.timeout_seconds, defaulting to 30 seconds.ctrl+c, ctrl+k, shift+arrows, H/J/K/L, a/A, r/R, esc) or any key that conflicts with a component type’s internal keys (e.g. space on todo).default, dracula, nord, gruvbox-dark, tokyo-night, catppuccin-mocha, solarized-light.style.theme: "auto" to detect terminal background via OSC 11 and pick the dark or light default automatically.style.palette.{background, foreground, dim, accent, success, warning, error, border, borderFocused} layered on top of the active theme.component.style.{palette, borderType} so one pane can break from the dashboard-wide theme (useful for alerts panes, etc.).$DASHBREW_THEMES_DIR or $XDG_CONFIG_HOME/dashbrew/themes so users can ship their own without recompiling.-t / --theme NAME to override the active theme at startup, --list-themes to print the registry.✓).style.layout.gap to put a configurable number of whitespace cells between adjacent panes inside row/column containers.style.focusMode: "highlight" to dim every non-focused pane so the focused one visually pops.titleAlign: "left" | "center" | "right" with adaptive title-cell borders. The title cell only draws the border edges that face inward toward the pane, so a right-aligned title gets left and bottom borders, a centered title gets left, right, and bottom, and a left-aligned title keeps right and bottom.icon field that prepends a literal glyph to the title.barStyle modes: single (theme accent), alternate (accent / dim), gradient (LAB-blended dim to accent by value), and map (per-bin colors via barColors).JoinVertical was treating an empty footer slot as one row, plus footer reservation was using stale viewport state. Both fixed; the pane now hits its allocated height exactly.fire_and_forget actions killing the spawned shell before it could finish: the runner now hands ownership of the cancel to the wait goroutine instead of deferring it on the closure.msg.Width, msg.Width typo in the not-yet-initialized resize branch (was supposed to be msg.Width, msg.Height).bubbles/viewport rather than fixed truncated text, so a long action output (cat README.md, tail -n 500 file) can be paged with arrow keys, page-up/down, home/end, or the mouse wheel.default theme moved from #444444 (which was barely visible on dark terminals) to #bd93f9. Existing configs that set style.border.focusedColor still win.Initial public release.
text, list, todo, chart, histogram, table.script (shell command), api (HTTP GET with optional JSONPath extraction), and direct file paths for todo.row / column direction and flex sizing.refresh_interval (seconds) and chart-specific refresh_mode: "append" for accumulating series.style.border.{type, color, focusedColor}.Shift+arrow / H J K L for navigation between panes, R to refresh the focused pane, A to enter add mode (todo), Space to toggle a todo, Ctrl+C to quit.label, field (JSONPath-style key for object rows), and flex.