Changelog

Fresh off the board.

2026.09.08

This release fixes two card UI glitches (hover action trails and oscillating card width), lets read-only visitors rearrange cards locally, ships a 1Password-based secret resolution system for the container, refines the Claude code-review CI workflow, and rolls up a batch of dependency updates.

New

  • Read-only visitors can now rearrange cards locallyDrag-and-drop reordering is no longer blocked for visitors who don't have write access. Their changes stay local and are not persisted to the server. c99b9e1

Improved

  • Container resolves all application secrets from 1Password at bootKamal now ships a single OP_SERVICE_ACCOUNT_TOKEN to the host. The container image includes the op CLI and scripts/entrypoint.sh starts the app under op run --environment, so every secret is resolved inside the container at startup. Adding a new secret requires only a 1Password edit and bun ship — no manifest lists to update. 4182287 28a5a05 f121a53 ba17a30

Fixed

  • Task action buttons no longer leave a hover trail when scanning a listThe edit and remove buttons on task rows were fading out too slowly because both the enter and exit transitions shared an ease-in curve. The exit now uses a faster ease-out fade, and the transition is scoped to only the properties that actually change. The same fix applies to .comment-delete rows. 6643b1c
  • Card detail panel no longer oscillates when content is near the width thresholdThe grow/shrink decision was reading a measurement its own outcome produced, causing cards whose content landed near 560 px to flip back and forth roughly ten times a second. The threshold is now evaluated at the base width so the decision settles after one pass. 6a9e024 653c58f

This release is focused entirely on internal tooling and CI infrastructure. It introduces a PR validation workflow with automated Claude code review and self-repair, stabilizes the test suite across Linux and CI environments, and improves test runner performance and reliability.

Fixes a concurrency bottleneck in container agents that inherited a pinned executionDirectory from before per-card directories existed. The pin caused all runs for an agent to queue behind a single slot; this release drops it during container profile normalization and adds validation and behavioral test coverage to prevent regressions.

Fixed

  • Container agents no longer queue behind a single execution slotAgents created before per-card directories were introduced carried a pinned executionDirectory in their companion config. In a container, that pin meant directoryAvailable() allowed only one run at a time regardless of how many slots the machine measured. The 0.8.0 migration moved the pin instead of removing it; this fix drops it in both places that normalize a container profile while leaving deliberate pins on native installs untouched. 886f57b dac1fc5