Skip to content

Releases: calionauta/bb-plugin-stelow

v0.78.1

Choose a tag to compare

@github-actions github-actions released this 07 Oct 01:51
bbd89af

0.78.1 (2026-10-07)

Bug Fixes

  • the flow drawer says what it is, and a field grid stops holding a fixed column on a phone (#348) (e93ee87)

v0.78.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 01:28
927dae4

0.78.0 (2026-10-07)

Features

  • floating bulk bar, flow detail in a side drawer, and a card that works at 375px (#346) (597528f)

v0.77.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 23:56
342e77e

0.77.0 (2026-10-06)

Features

  • the bucket card is edited in the card, and the gallery fills its own width (#344) (1682e28)

v0.76.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 23:02
48bb225

What changed

A worker reporting "The question could not be recorded" used to stop with the card idle,
no pending question, and nothing on the card to say why. The README carried a runbook telling
people where to look — in a file that opens by declaring the manual lives on the Stelow site,
not there.

The gap

The card is marked awaiting-answer before the blocking wait and set back to running when
the call ends, which happens before the persist is attempted. So a failed write left a
card that was idle, had no question waiting, and carried no trace of what happened. The only
evidence was a plugin-log line nobody reads — a phantom wait by this project's own rule:
any user-facing wait needs a live question behind it.

The fix

The failure now records itself, on the card's trail and in Needs attention, naming the
cause, the fact that nothing was lost, and the one action that resumes it. The inbox entry
dedupes per card rather than per error, because the same broken handle fails on every
ask and a reader wants one entry whose count grows rather than a row per attempt.

The line names which worker thread to message: a card with restarts has more than one in
its history, so "the worker thread" was a place a reader could not find.

Documentation

The README section is removed, and its content moved to
Board and inbox — which
the README already links. There it can say what six compressed lines could not: that this is
an interrupted write rather than lost work, why the card looks idle, what a single
SQLITE_BUSY means versus repeated non-busy errors, and what to do about each.

The page explains it. The product now shows it.

v0.75.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 22:01
5cb7e49

What changed

The board stops pretending to be a tool you drive by hand, and the phone layout stops being
a narrower version of the desktop one.

Breaking

  • A card is no longer moved by hand. Dragging a card between columns and clicking a
    stage chip to change stage are both gone. The workflow is the agent's to drive, and a
    person asks it in the conversation instead — the board reads as a status report rather
    than as a manual tool. Nothing else about a card changed: the stage timeline still shows
    where the card is, what each stage produced, and why a stage was skipped.
  • A column's delete-all moved into its column header. It used to render in the flow
    between the header and the cards, which pushed the Archived column's cards out of line
    with every other column.

Features

  • The phone board is a second layout, not a narrower first one. Below md the board is
    a snap-scrolling rail of near-full-width columns with the next column's edge peeking in,
    so a thumb moves one column at a time and the reader can see there is another. The 2026
    consensus names the horizontally-scrolling desktop grid on a phone as the failure mode
    rather than the fallback; this is the pattern that shipped instead.

Bug Fixes

  • The disclosure chevron now rotates. DisclosureSection tracked its open state but
    never passed it to the chevron, so 20 of its 23 callers relied on a CSS group-open:
    variant that this very file had already abandoned once — "never CSS group-open hope,
    which froze arrows in place before". The Machine receipts toggle was one of the 20. A
    second instance rendered <details> with no group class at all, so its arrow could not
    move under any circumstances.
  • The lint gate now exists. The pre-commit hook has said "lint for dead code" since it
    was written, and oxlint exits 0 with warnings — so it passed while the tree carried 45
    of them. Findings present today are recorded in scripts/lint-baseline.json and the gate
    fails only when the set grows, wired into quality:shape so both the hook and CI enforce
    it. Six of the 45 were this branch's own, created when it moved code between files.
  • No RPC result carries a key holding undefined, and the delete-all no longer leaves a
    column's cards misaligned.

Deliberately not here

No spend ceiling, and no flow drawer yet. A budget module was written, tested and
removed earlier because nothing called it; the gap is stated in FEATURES.md instead.
The metrics drawer is the next piece of this work.

v0.74.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 19:25
914239d

What changed

Nine changes from asking what a Stelow worker actually costs to start, and whether the
prompt machinery was telling the truth about it. Two findings came from the live database
and one of them contradicted what the code looked like it did.

The prompt's shared prefix, measured on live workers

Provider caching is prefix matching, so the reusable region ends at the first byte that
differs. The state dir sat at character ~106, ahead of the entire 10 KB clause block every
build path renders identically — so every new thread re-paid nearly its whole prompt, and
so did every band-boundary handoff, which starts a new thread by design.

before after
shared prefix of the prompt, two cards 0.6% 90.5%
first snapshot served from cache, three live workers — 99.3% / 99.1% / 89.3%

Fleet-wide across 74 threads the cache read 60,386,501 tokens against 54,840,152 fresh.

Features

  • A worker's orientation cost is measured and shown on the card. A skill load is a
    toolCall naming a SKILL.md, so reads before the first bb stelow advance are
    orientation spent before work. Reported, never blocked.
  • A worker's token figure is shown for nearly every worker, and says what it is.
    acp-opencode — which 8 of 10 workers run on — emits no usage event at all and reports a
    context-window reading instead. Both families are read now, and an estimate is labelled
    (est.) rather than presented as a measurement. 1 of 10 workers reporting a figure
    before, 10 of 10 after.
  • A refused retry records why and names an exit. Five real runs hit the auto-retry's
    stage guard with the card already advanced and every one parked silently — which is why
    auto_retry_count read 0 across the fleet.

Bug Fixes

  • Every prompt resolves its reading list from bb stelow playbook. All six spawn paths
    told the worker to load the stelow-workflow-* glob — seventeen skills, 215,756 bytes of
    entry documents — while the CLI_EQUIVALENTS clause in the same prompt said to run the
    playbook and never discover skills that way.
  • One ask contract, rendered by every spawn path. The structured-ask block was pasted
    into five builders and had already drifted: two lacked the "never write waiting text"
    guard and the restart path lacked the timeout rule.
  • A provider rate limit and an unowned card no longer advise "Answering below resumes the
    worker".
    False for both — nothing is pending, and the reader was pointed at a box whose
    answer goes nowhere.
  • No RPC result carries a key holding undefined. The board failed outright on any
    board whose stored defaults predate red-first.
  • The run bundle's token evidence reads both families and states its provenance, and the
    history row shows a dash rather than nothing when a provider reports no usage.
  • A clause that renders the literal word undefined now fails a test, and the
    owed-clause list is derived from the clause bag so a new clause is covered at once.

Deliberately not here

No spend ceiling. A budget module was written, tested with eight sections, and
removed — nothing called it: no UI set a limit, no column stored one, no pass checked
one. A tested module with no consumer reads as a shipped feature. The gap is stated in
FEATURES.md instead: 87,296 to 477,684 tokens per worker thread, with nothing comparing
that to a limit.

v0.73.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 21:58
bcdc669

0.73.1 (2026-10-05)

Bug Fixes

  • board card checkbox no longer overlaps the title (#334) (c0cdfee)

v0.73.0

Choose a tag to compare

@calionauta calionauta released this 05 Oct 19:51
9144725

0.73.0 (2026-10-05)

Features

  • red-first frozen acceptance gates with upstream sync (65e388b)
  • red-first run knob in creation prefs with server seed wiring (67f2844)

Bug Fixes

  • preserve explicit red_first across reseed and pin seed writes (07934f3)

v0.72.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 00:15
11d8827

0.72.1 (2026-10-04)

Bug Fixes

  • terminal cards serve no expired questions (#330) (e5b8d10)

v0.72.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 23:35
f3ee548

0.72.0 (2026-10-04)

Features

  • bucket editable parked cards plus bulk start/archive/delete (#326) (edc12ab)
  • inbox set-aside filter, verify-blockage notice, and quieter git and question surfaces (#327) (a7c521e)