Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 07:25
· 505 commits to main since this release

Added

  • themes/win2k.json, the Windows 2000 "Windows Standard" scheme as a web
    theme: ButtonFace grey panels, a white window well, the navy title-bar blue
    as the interactive accent, and the 1px hard-edged ButtonHilight/ButtonShadow
    bevels the system drew instead of soft shadows.
  • themes/win2k.css, that theme's chrome, which tokens cannot express: win2k's
    own pixel cursors, the caption gradient on the masthead and dialog headers,
    pushed-button faces with the default button's black ring, sunken text wells
    and checkboxes, 16px arrow scrollbars, menu and dialog frames, and flat LED
    blocks where the cabinet drew glowing lamp domes. The page links it the first
    time the win2k theme is applied and never for another theme, read from the
    catalog's css name; GET /webui/themes/<name>.css serves a palette's
    companion sheet from themes/ the way the palettes themselves are served, so
    a themed skin stays a drop-in with no host rebuild and no page weight.

Changed

  • Skill triggers: lookup (was research) no longer steals the research
    tool; improve no longer fires on ordinary code edits; write-goal,
    mcp, and ponytail descriptions name the phrases that should load them.
    clanker gate skills-inventory now fails a frontmatter description longer
    than the 220-byte prompt clip, instead of listing a truncated trigger.
  • GET /api/sessions/search and clanker session search go through the
    sessions guest, so the Search page, the CLI, and the session_search
    tool share one hit shape (id, title, updated, archived, turn,
    role, snippet, more, truncated). The guest used to drop turn
    and archived, which is what the Search page jumps on.
  • clanker chat --help names the subcommands (rooms, send, history,
    subscribe) on the usage line. Bare chat is still chat rooms.
  • clanker config --help names dump on the usage line. Bare config is
    still a dump.
  • Web UI PatternFly radius and glass tokens follow the cabinet 2–4px plate
    scale instead of PatternFly's 16px/24px cards and blur. Engraved labels
    share --track-label; titles are untracked.

Fixed

  • gh_read caches GitHub responses under (url, token), not the URL
    alone, so a rotated GITHUB_TOKEN is not served another identity's
    body. Expired files in state/gh_cache/ are deleted on the next write.
  • GET /api/catalog no longer holds the catalog lock across a models.dev
    fetch, and the in-process snapshot is dropped when
    state/models-dev.json changes, so a clanker providers refresh from
    another process is visible without a restart.
  • clanker mcp recompiles a cached tool when its .wasm file changes,
    matching the agent loop.
  • Creating a board card that names a goal already mirrored by a live card
    returns that card instead of posting a second add. A retried HTTP POST or
    two browsers mirroring the same goal used to leave two cards; the fold
    now keeps the first.
  • clanker notify (and the peers notify tool) stamps a delivery id that is
    stable for a given message within a 60-second window, so a retry after a
    lost response is dropped by the inbox instead of stored twice. Pass id
    to pin a longer-lived key.
  • note_write of a sentence already in state/learnings.md returns
    duplicate and does not append a second bullet.
  • Trimming state/autolearn.jsonl, state/reasoning.jsonl, and
    state/token_stats.jsonl reads a bounded tail instead of the whole file.
    A log that had grown past its cap used to allocate without bound (autolearn
    with an unlimited read) and then fail to trim, so the file kept growing.
  • Session search no longer opens every conversation database when the FTS
    index already named the matching ids.
  • Parallel tool workers now receive the same agent sandbox extras as the
    sequential path, including the conversation session_id. A parallel
    kernel, debug, or jobs call used to land under "default" instead of the
    run's session.
  • clanker run --stream was documented and parsed, then refused as not an
    option for the command, so a monitor could not get the live usage lines
    the flag exists to print.
  • clanker chat send <room> with no message said clanker notify needed
    one. The two commands shared the same missing-argument token.
  • Session databases, their WAL sidecars, and the session full-text index are
    created owner-only (0600). sqlite3's default create mode left conversation
    text world-readable on a shared machine.
  • Trimming state/reasoning.jsonl keeps the owner-only mode; the rewrite
    used to drop it to the process umask.
  • A failed scheduled entry logs the task's length, not the task text.
  • Process-global DAP session and background-job tables are released at
    exit, so a debug-tool run that timed out no longer leaves a hash-map
    allocation in the DebugAllocator leak report.
  • clanker doctor no longer treats a backup snapshot named with an impossible
    calendar date (31 April, 29 February in a non-leap year) as the newest
    snapshot. Those names used to overflow into a later real day and win the
    lexicographic newest-name scan.
  • The Runs list labels a run "yesterday" on calendar day, not after 24 wall
    hours. The morning after a spring-forward a Sunday run was still "23 hours
    ago".