Skip to content

Workbook v0.4.2

Choose a tag to compare

@github-actions github-actions released this 08 Aug 23:03
· 306 commits to main since this release
0f648eb

Quality and hardening for the web board, plus safety limits on task storage,
from nine reviewed pull requests.

Web board

  • Saving a new task returns you to the board, and a Create more toggle
    keeps a clean form open for the next task instead (#41).
  • New tasks land on the board optimistically: the card renders immediately
    while the save is still in flight, and a refused save offers the draft back
    instead of losing it (#46).
  • Card descriptions are hidden by default to keep columns scannable; a board
    setting restores the previous behavior (#38).
  • Labels are edited as removable chiclets instead of one comma-separated text
    field (#40).
  • Tasks whose status matches no column appear in an explicit unknown-status
    section, matching the terminal board, instead of being hidden (#42).
  • The dependency search popup closes when it loses focus (#47).

Limits and hardening

  • Task fields are bounded — title 500 bytes, description 64 KiB, labels
    100 bytes each and 50 per task — and Workbook refuses to read a Git object
    over 4 MiB, so one oversized task can no longer exhaust memory in every
    clone. Web request bodies are capped at 1 MiB and the board server gains
    connection timeouts. The limits are documented in the README (#44).
  • The web handler is built from a named options struct, and serve-level tests
    fail if the delete/restore or depend/free wirings are ever swapped (#43).

Performance and tooling

  • The benchmark harness measures the agent hot loop (workbook next,
    workbook show), warm board reads, and the sync watcher's steady-state CPU
    and memory; a replacement api-update p95 target is proposed with evidence
    under docs/performance/ (#45).
  • go test -short ./... is the supported fast suite for local iteration and
    parallel agents; the release and installer build tests share the ambient Go
    build cache instead of cold-compiling everything per test (#39).