v1.9.0
·
25 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
kb v1.9.0
v1.9.0 is a design release for the web board with one small data change:
every task now records when it last changed. The schema gains an
updated_at column (migrated in place, backfilled from moved_at), and the
CLI, MCP and web API task shapes carry updatedAt next to movedAt. The
web API also gains PUT /api/comments/{id} for editing a comment in place.
Web UI
- New theme. Stone (light) and charcoal (dark) neutrals with one acid lime
accent on primary actions, selection, and the brand mark. Focus rings use
ink so they stay visible on white. Links keep a blue of their own; every
other colour on the board is a semantic status, priority, or label hue. - Rounder geometry: 18px columns and dialogs, 14px cards, pill-shaped primary
buttons, and a little more air inside columns. - Search is a Spotlight-style dialog on every device: the header shows a
magnifier, and the magnifier,/, or the palette's filter command open a
centred field with the filter syntax under it. Typing filters the board
behind the dialog live; Enter or Escape closes it and the query stays
applied, marked by a dot on the magnifier. On phones the filter sheet
keeps the quick filters and labels, and the column tab bar hides a hidden
column's tab. - Column headers show a status dot, the column name, and a count badge instead
of a coloured underline. - The markdown editor shows one pane at a time. A Preview toggle in the
toolbar swaps the text for the rendered markdown and back; the formatting
tools stay in place while previewing. - The AI draft in the card editor is a single composer: the prompt and the
Draft action share one control, and the keyboard shortcut sits on the label
line. - Settings are laid out on one grid, so labels, fields, and actions line up
across the AI and integration sections. A saved API key or token is shown
as a saved state with Replace and Remove instead of an empty password box.
The AI section opens with the endpoint state (model and host) above the form. - Label suggestions and the label filter row are scoped to the active project.
Only labels that project's cards carry are offered; all projects still show
the whole list. - The card detail opens as a centred modal at every width instead of a
resizable side panel; on phones it is still a full-height sheet. The
#/t/<seq>route is unchanged. - Comments are a list again: the composer sits behind an "Add a comment"
row instead of a permanently open editor, and each comment has Edit next to
Delete. Editing opens the same inline markdown editor as the description. - Every control is drawn by the board rather than the browser, so the UI
reads the same on every OS: selects open a listbox with keyboard navigation
and type-ahead, due dates open a month grid with Today and Clear, checkboxes
are a lime box with an ink tick, tooltips are the board's own, and "discard
changes?" prompts use the board's dialog instead of the system confirm.
Number fields lose the spinner and text areas lose the resize grip. - A geometry pass puts every control on whole pixels: bordered bars (header,
filter row, dialog heads and feet, editor toolbar and footer) are sized so
their centred children land on integer offsets, chips use a 4px gap, the
label editor in the card dialog is the same 32px as its neighbours, the AI
composer is 44px, and the bulk bar is centred on a whole pixel. On phones a
blocker link ellipsizes instead of running past the modal, the editor's
Preview toggle stays in view when the toolbar scrolls, and focusing a text
field no longer zooms the page. - Cards carry a light wash of their priority hue: red for high, amber for
medium, blue for low. The Cancelled column starts hidden (Display options
turns it back on), and the "Add task" row at the foot of each column is
gone; the New task button and the + in every column header add cards. - In the card's property grid the priority, due and project pickers are the
same 28px as the status and effort segments beside them. - Columns can sort by recently updated or recently created, newest first,
alongside position, priority and due date. Recently updated is the
default; Display options or the palette switch it. Under a time sort a
drag between columns still moves the card, while a drop inside its own
column does nothing because the sort decides the order. The card's
Created line shows the last update when it differs from the move. - The board has a logo: a lime kanban mark next to the wordmark in the
header, as the tab icon, and as the home-screen icon on phones. - Toasts stack at the top centre of the screen, above any open dialog,
and stay clickable while a dialog is up. - A refresh only rebuilds the cards that changed. Cards whose data,
selection, focus and filters are unchanged keep their nodes, so a single
update no longer repaints the whole board. - A dropped card no longer bounces back to its source column before the move
lands. Refreshes that arrive while move requests are in flight are held, so
a multi-card move never paints a half-applied order.
Dependencies
Go 1.26.5 remains the toolchain. google.golang.org/adk/v2 stays at 2.2.0
because 2.3.0 requires Go 1.26.6.
- modernc.org/sqlite 1.56.0 to 1.58.0 (SQLite 3.53.4; recovery behaviour
unchanged, no change to kb's WAL or busy-timeout setup). - charm.land/bubbletea/v2 2.0.8 to 2.0.9 and charm.land/bubbles/v2 2.1.1 to
2.2.1. - google.golang.org/genai 1.66.0 to 1.71.0.
- google.golang.org/grpc 1.83.0 to 1.83.1 (indirect), closing the HTTP/2 DATA
frame memory-exhaustion advisory. - actions/upload-artifact 4.6.2 to 7.0.1 in the quality workflow.
Upgrade
Make a cold backup of the data directory first. Then, with Go 1.26.5 or newer:
GOTOOLCHAIN=local go install github.com/RandomCodeSpace/kb@v1.9.0
kb versionThe release provides CGO-free binaries for Linux amd64 and arm64, macOS amd64
and arm64, and Windows amd64. Each binary records Go 1.26.5 in its embedded
build metadata.