Skip to content

Releases: RandomCodeSpace/kb

v1.12.3

Choose a tag to compare

@github-actions github-actions released this 14 Sep 11:10
Immutable release. Only release title and notes can be modified.
22d8c10

v1.12.3

Web UI fixes on top of the v1.12.2 theme.

  • Scoped labels are two-tone again: the scope on its solid hue, the value on
    the tint, with the theme's small radius and no border. v1.12.2 had
    flattened type::bug into a dot and a separator.
  • Embedded UI assets carry a content ETag with Cache-Control: no-cache.
    Browsers used to cache app.css and app.js heuristically and kept the
    previous build after a release until a hard refresh. They now revalidate
    on every load and receive a 304 until the build changes.

CI: pushes to main upload the full-tree Go coverage profile to SonarCloud
instead of the changed packages only (#385).

v1.12.2

Choose a tag to compare

@github-actions github-actions released this 14 Sep 10:27
Immutable release. Only release title and notes can be modified.
16da5f6

v1.12.2

Effort is now mandatory on every task, and the web board has a new look.

Effort defaults to S with a warning

Every surface that creates a task fills an empty effort with S and says so,
so nobody mistakes an assumed value for a chosen one:

$ kb add "Ship it" -p web
kb: warning: #12 assumed status todo, priority low, effort S; pass --status, --prio, and --effort to choose
added #12 Ship it
  • kb add warns on stderr about every default it relied on.
  • The MCP add_task tool returns a warnings list with one entry per assumed
    default; its description tells agents to pass status, prio, and effort.
  • The web API's POST /api/tasks stores S when effort is omitted.
  • The web form offers only S, M, and L, shows which defaults are still in use
    as you edit, and confirms them in the toast on save. Quick add warns when
    priority or effort was not given.

Existing tasks with no effort are left alone until edited.

Web UI

  • One neutral light theme. The dark theme and the theme toggle are gone.
  • Flat ink primary button, soft-fill chips and buttons without borders, small
    radii on controls and labels.
  • Priority shows as a coloured top edge on the card instead of a background
    wash. Checklist chips turn amber when part done and green when complete.
  • Label hues skip the violet band.
  • The shipped-today counter and the label filter row are removed from the
    header; labels still filter from card chips, the search syntax, and the
    command palette.

v1.12.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 06:28
Immutable release. Only release title and notes can be modified.
c761234

v1.12.1

Project creation now has an explicit CLI command:

kb project create website --json
kb add "Build landing page" -p website --json
kb list -p website --json
  • kb project create <name> saves an empty project without creating a task.
    Repeating it succeeds and leaves the existing project unchanged.
  • kb project list includes saved projects with zero tasks, including projects
    whose last task was removed. Terminal and browser project lists still derive
    their entries from tasks.
  • kb help <command> and command-specific --help show positional arguments,
    supported flags, examples, JSON output, and exit codes. Root help includes the
    project creation workflow. Help requests do not open the database.

Existing kb add ... -p <name> commands continue to create projects implicitly.
Every new task still requires an explicit project. No database migration or new
dependency is needed.

v1.12.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 19:54
Immutable release. Only release title and notes can be modified.
74b2bc6

kb v1.12.0

v1.12.0 completes the map-related audit backlog #353-#367 while retaining
Go 1.26.5 exactly.

Board and editor behavior

  • Dirty card editors require the advertised uppercase D to discard edits.
    Lowercase d leaves the confirmation open. The mouse Discard button still works.
  • ADR editor cursors remain visible with CJK and emoji text. ADR, card, import,
    and settings inputs share the same terminal-cell viewport rule.
  • Markdown images display their labels without fetching remote resources in
    cards, details, or previews.
  • Web AI skill requests use the existing four-minute forge deadline and respect
    shorter request deadlines and cancellation.

CLI behavior

Task JSON includes zero-valued fields and empty arrays. Scripts can distinguish
exit codes 1 for operational failures, 2 for usage, 3 for missing entities,
and 4 for ambiguous, conflicting, or refused operations. Successful commands
and help return 0. The README documents each command's JSON shape.

kb restore accepts only cancelled tasks. Use kb move <id> todo to reopen
another state. Link and unlink errors identify the missing task separately from
a missing edge. kb comment add --author sets the comment author without
changing the board namespace.

Forge and MCP behavior

Forge failures retain useful HTTP status, stop writing request errors into the
TUI, and report oversized responses and first-page rate limits. AI drift-summary
failures remain visible while preserving the drift result. Authenticated HTTP
is refused except for localhost and numeric loopback addresses.

MCP rejects task titles, descriptions, and comment bodies larger than 1 MiB
before writing. Updating another field preserves an omitted existing value.
Startup reuses the common local-store lifecycle and warning policy. Signal
cancellation closes the store; the POSIX SIGTERM regression runs on Linux and
macOS, with normal startup checks retained on Windows.

Build and release checks

The real-browser smoke covers board load, creation, movement, native SSE updates,
and persistence after reload. A separate privacy regression checks that remote
images cause no network requests. CI checks committed CSS against its Tailwind
source, verifies the CLI download hashes for all supported build targets, and
selects TUI performance checks for rendering changes.

Pointer fixtures fail instead of silently skipping when their assumptions drift.
Theme contrast logging accompanies visibility assertions. Targeted error tests
verify persisted state after rejection. The existing full-mode 96.4% coverage
threshold remains enforced; no coverage threshold was lowered.

The release workflow binds downloaded binaries and SHA256SUMS to hashes of the
actual locally built upload assets, then attests and verifies all six files.
With the GitHub CLI, verify a downloaded binary using:

gh attestation verify kb-linux-amd64 --repo RandomCodeSpace/kb --signer-workflow RandomCodeSpace/kb/.github/workflows/release.yml

Use your asset's filename, or SHA256SUMS. Add --source-digest and the full
release commit SHA to require a particular source revision. Build attestations
are available from this release onward.

Go version and remaining work

Go 1.26.5 is a hard restriction. The maintainer explicitly accepts vulnerabilities
caused by this standard-library version. The pinned govulncheck v1.8.0 gate
reports those findings and rejects reachable third-party vulnerabilities,
scanner failures, and unexpected toolchains. Accepted risk is not a clean scan.

The seven previously reported reachable Go findings are GO-2026-5026,
GO-2026-5972, GO-2026-6088, GO-2026-6089, GO-2026-6090, GO-2026-6091,
and GO-2026-6218, with fixes above the permitted Go version.

The default data directory remains ~/.local/share/kb on Linux, macOS, and
Windows, unless KB_DATA or --data overrides it. Make a cold backup of the whole
data directory before upgrading.

The older issues #205, #217, #237, #299, #301, #302, and #304 remain separate
follow-up work. This release does not claim physical-terminal verification.

v1.11.1

Choose a tag to compare

@github-actions github-actions released this 12 Sep 18:09
Immutable release. Only release title and notes can be modified.
a4996c0

kb v1.11.1

v1.11.1 corrects the build toolchain to Go 1.26.5, the required maximum.
It retains the application fixes and scoped-label behavior from v1.11.0.
The immutable v1.11.0 binaries were built with Go 1.26.8 and do not meet
this toolchain restriction.

Accepted Go vulnerabilities

The maintainer explicitly accepts vulnerabilities caused by the required
Go 1.26.5 standard library. These findings are reported during CI and release
verification. They are accepted risk, not fixed vulnerabilities.

The pinned govulncheck v1.8.0 gate accepts standard-library findings only
for Go 1.26.5. It still rejects reachable third-party vulnerabilities,
scanner errors, and an unexpected toolchain.

The Go 1.26.5 scan reported seven reachable standard-library findings:
GO-2026-5026, GO-2026-5972, GO-2026-6088, GO-2026-6089, GO-2026-6090,
GO-2026-6091, and GO-2026-6218. It reported no reachable third-party findings.
The fixed Go version for these findings is 1.26.6, above the required maximum.

Verification

Builds and tests use Go 1.26.5 exactly. The existing full-suite, native-platform,
migration, and startup checks remain in place, with their documented platform
and short-mode skips. No physical-terminal validation is claimed.

The release ticket
records the candidate checks, release dry run, published tag, and artifact
verification. The original readiness fixes and remaining audit backlog are
listed in the v1.11.0 notes.

Upgrade

Make a cold backup of the data directory first. With Go 1.26.5 installed:

GOTOOLCHAIN=local go install github.com/RandomCodeSpace/kb@v1.11.1
kb version

The release provides CGO-free binaries built with Go 1.26.5 for Linux amd64
and arm64, macOS amd64 and arm64, and Windows amd64.

v1.11.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 17:25
Immutable release. Only release title and notes can be modified.
b5d6596

kb v1.11.0

v1.11.0 adds single-colon scoped labels and fixes startup, task-update, and
safety issues found in the readiness audit. Stored label text stays unchanged.

Readiness

The release candidate meets the automated readiness bar on GitHub-hosted
Linux, macOS, and Windows runners. Linux runs the complete Go suite. macOS
and Windows run the store, TUI, CLI, MCP, web, and root package tests with
-short, plus built-binary task and web/MCP startup checks. Existing platform
and short-mode skips remain in effect.
CI evidence for the merged candidate.

Go is pinned to 1.26.8. govulncheck v1.8.0 reported no affected vulnerabilities
and now gates CI and release verification.

Both reproduced audit blockers are fixed:

  • SQLite data paths: the
    store and TUI watcher share escaped DSN construction for relative, Windows,
    and reserved-character paths.
  • MCP task references:
    project-preserving updates resolve sequence numbers and UUID prefixes
    through the store and retain the resolved task ID for the write.

Readiness is based on automated CI evidence. Physical-terminal validation
remains tracked in #304.
Remaining audit work is linked in the
readiness backlog.

Labels

  • A single colon scopes a label the way a double colon always has. type:bug
    now reads as scope type, value bug, alongside GitLab's type::bug. This
    is the shape GitHub-style labels take once they are on a card, so they get
    two-tone chips and scope filters without being rewritten.
  • The double colon is read first, so a::b is never the value :b. The
    reader also accepts one space after a single colon, though a tag cannot
    carry whitespace today, so type: bug is refused at the store as before.
  • Everything scoped follows: the web board and the TUI render the scope
    quietly, every label in a scope shares one hue, the label picker groups by
    scope and answers type: as well as type::, and adding a second label in a
    scope replaces the first, as it does for ::.
  • The project scope stays project:: only. The label picker refuses to create
    project: labels in either spelling, so a decoy that looks like the project
    chip cannot exist.

Dependencies

  • google.golang.org/grpc 1.83.1 to 1.83.2 (indirect), closing the xDS server
    crash advisory. kb runs no xDS server; the bump only clears the alert. Go
    moves to 1.26.8.

Upgrade

Make a cold backup of the data directory first. Then, with Go 1.26.8 or newer:

GOTOOLCHAIN=local go install github.com/RandomCodeSpace/kb@v1.11.0
kb version

The release provides CGO-free binaries for Linux amd64 and arm64, macOS amd64
and arm64, and Windows amd64. Release binaries are built with Go 1.26.8.

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 00:51
Immutable release. Only release title and notes can be modified.
00d136f

kb v1.10.0

v1.10.0 is a breaking release: kb no longer has an active project. A task's
project is named on the command that creates it, and nothing else decides
where a task lands. kb project use, kb project current, the KB_PROJECT
environment variable, the state.json file in the data directory, and the
web endpoint PUT /api/projects/active are gone. The database schema is
unchanged.

The stored default caused misfiling. Two shells or two agents sharing one data
directory filed tasks into each other's project, and switching project in the
web UI silently changed where the next kb add landed. With the project on
the command, every caller says where its task goes and no caller can change
that for another.

CLI

  • kb add "title" -p <name> names the project. --project and
    --tag project::<name> are equivalent spellings. Without one, add refuses
    with no project given: pass -p <name> or --tag project::<name>.
  • kb list -p <name> shows one project. Without -p, every project is listed.
  • Commands addressed by task number (update, done, move, cancel, rm,
    comment, link) need no project. kb update <id> -p <name> still moves a
    task to another project.
  • kb project list remains. Its table loses the ACTIVE column and its --json
    rows lose the active field. kb project use and kb project current are
    removed.
  • KB_PROJECT is no longer read, and state.json is neither read nor written.

MCP

  • The add_task tool's project argument is required.

TUI

  • The board opens on all projects unless it remembers a switcher scope in its
    own preferences file under .kb-tui/. p and P still switch the view.
  • The new-card editor requires a project when the scope is all projects.

Web UI

  • The board keeps its selected project in the browser only. Switching it no
    longer affects the CLI, the TUI, or another browser tab.
  • PUT /api/projects/active is removed.

Migration

  • Replace kb project use x with -p x on each kb add.
  • Drop KB_PROJECT from shell profiles and agent configurations; it has no
    effect.
  • Scripts that relied on the stored default must pass -p <name> to kb add.
  • state.json in the data directory is unused and can be deleted.
  • MCP clients must pass project to add_task.
  • Anything that called PUT /api/projects/active must stop; the endpoint is
    gone.

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.10.0
kb version

The 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.

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 16:47
Immutable release. Only release title and notes can be modified.
234b7b0

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 version

The 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.

v1.8.2

Choose a tag to compare

@github-actions github-actions released this 08 Sep 13:12
Immutable release. Only release title and notes can be modified.
268ff46

kb v1.8.2

v1.8.2 fixes the AI connection test and tool-calling probe against
OpenAI-compatible servers other than OpenAI. The database schema, the CLI
verbs, the MCP tools, and the web API are unchanged.

AI

  • The tool-calling probe behind Test connection forces its one function with
    the standard tool_choice form ({"type":"function","function":{"name":...}})
    instead of OpenAI's allowed_tools extension. llama.cpp, vLLM, LM Studio,
    and most proxies reject the extension with HTTP 400, which kb reported as
    "check the model name and the API key" even when both were right. The fix
    is in plasmid v0.1.4, which this release picks up.

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.8.2
kb version

The 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.

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 08 Sep 08:11
Immutable release. Only release title and notes can be modified.
701b49e

kb v1.8.1

v1.8.1 makes the web board update by server push instead of polling and fixes
AI base URLs whose path is not /v1. The database schema, the CLI verbs, and
the MCP tools are unchanged.

Web UI

  • GET /api/events streams board changes as Server-Sent Events. The browser
    subscribes once, refreshes on each change, reconnects on its own, and replays
    a missed change on reconnect. An idle board makes no requests. Polling
    remains only as a fallback for browsers without EventSource.
  • Changes made from the CLI, the TUI, or an MCP client appear in the browser
    within about half a second, detected through the same SQLite data-version
    signal the TUI uses.

AI

  • The AI base URL keeps any API version already in its path. A URL such as
    https://generativelanguage.googleapis.com/v1beta/openai is used as given
    instead of gaining a second /v1. URLs with no version segment, such as
    https://api.groq.com/openai, still get /v1 appended, and OpenAI,
    OpenRouter, Ollama, and vLLM addresses are unaffected.
  • A generic 4xx from an AI endpoint now asks you to check both the model name
    and the API key, since some providers report a bad key with HTTP 400.

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.8.1
kb version

The 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.