bullswarm 0.34.0 → 0.35.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +143 -0
- package/data/openrouter-benchmarks.json +8875 -8902
- package/docs/design/dashboard-prototype.html +9 -2
- package/docs/design/dashboard-split/README.md +402 -0
- package/docs/design/step-page-0.35.0/README.md +394 -0
- package/docs/design/step-page-0.35.0/frames/failed-120.txt +19 -0
- package/docs/design/step-page-0.35.0/frames/failed-200.txt +19 -0
- package/docs/design/step-page-0.35.0/frames/failed-55.txt +18 -0
- package/docs/design/step-page-0.35.0/frames/finished-120.txt +19 -0
- package/docs/design/step-page-0.35.0/frames/finished-200.txt +17 -0
- package/docs/design/step-page-0.35.0/frames/finished-55.txt +20 -0
- package/docs/design/step-page-0.35.0/frames/real-failed-120.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-failed-200.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-failed-55.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-finished-120.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-finished-200.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-finished-55.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-running-120.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-running-200.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/real-running-55.txt +60 -0
- package/docs/design/step-page-0.35.0/frames/rendered-failed-120.txt +30 -0
- package/docs/design/step-page-0.35.0/frames/rendered-failed-200.txt +28 -0
- package/docs/design/step-page-0.35.0/frames/rendered-failed-55.txt +30 -0
- package/docs/design/step-page-0.35.0/frames/rendered-finished-120.txt +30 -0
- package/docs/design/step-page-0.35.0/frames/rendered-finished-200.txt +28 -0
- package/docs/design/step-page-0.35.0/frames/rendered-finished-55.txt +30 -0
- package/docs/design/step-page-0.35.0/frames/rendered-running-120.txt +30 -0
- package/docs/design/step-page-0.35.0/frames/rendered-running-200.txt +28 -0
- package/docs/design/step-page-0.35.0/frames/rendered-running-55.txt +30 -0
- package/docs/design/step-page-0.35.0/frames/running-120.txt +24 -0
- package/docs/design/step-page-0.35.0/frames/running-200.txt +21 -0
- package/docs/design/step-page-0.35.0/frames/running-55.txt +21 -0
- package/docs/design/tidy-0.35.1/README.md +296 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-home-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-home-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-run-finished-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-run-finished-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-run-running-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-run-running-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-step-detail-finished-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-step-detail-finished-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-step-overview-finished-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-step-overview-finished-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-step-overview-running-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-step-overview-running-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-task-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/colour/real-task-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/home-120.txt +16 -0
- package/docs/design/tidy-0.35.1/frames/home-200.txt +21 -0
- package/docs/design/tidy-0.35.1/frames/home-55.txt +26 -0
- package/docs/design/tidy-0.35.1/frames/real-home-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-home-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-home-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-run-finished-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-run-finished-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-run-finished-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-run-running-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-run-running-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-run-running-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-stats-model-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-stats-model-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-stats-model-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-stats-spending-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-stats-spending-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-stats-spending-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-failed-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-failed-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-failed-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-finished-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-finished-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-finished-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-running-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-running-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-detail-running-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-failed-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-failed-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-failed-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-finished-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-finished-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-finished-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-running-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-running-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-step-overview-running-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-task-120.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-task-200.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/real-task-55.txt +60 -0
- package/docs/design/tidy-0.35.1/frames/rendered-failed-120.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/rendered-failed-200.txt +28 -0
- package/docs/design/tidy-0.35.1/frames/rendered-failed-55.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/rendered-finished-120.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/rendered-finished-200.txt +28 -0
- package/docs/design/tidy-0.35.1/frames/rendered-finished-55.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/rendered-running-120.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/rendered-running-200.txt +28 -0
- package/docs/design/tidy-0.35.1/frames/rendered-running-55.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/run-120.txt +13 -0
- package/docs/design/tidy-0.35.1/frames/run-200.txt +16 -0
- package/docs/design/tidy-0.35.1/frames/run-55.txt +21 -0
- package/docs/design/tidy-0.35.1/frames/step-detail-120.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/step-detail-200.txt +29 -0
- package/docs/design/tidy-0.35.1/frames/step-detail-55.txt +46 -0
- package/docs/design/tidy-0.35.1/frames/step-overview-120.txt +28 -0
- package/docs/design/tidy-0.35.1/frames/step-overview-200.txt +29 -0
- package/docs/design/tidy-0.35.1/frames/step-overview-55.txt +30 -0
- package/docs/design/tidy-0.35.1/frames/task-120.txt +20 -0
- package/docs/design/tidy-0.35.1/frames/task-200.txt +21 -0
- package/docs/design/tidy-0.35.1/frames/task-55.txt +22 -0
- package/docs/design/tidy-0.35.1/run-v2/README.md +58 -0
- package/docs/design/tidy-0.35.1/run-v2/after-200.txt +38 -0
- package/docs/design/tidy-0.35.1/run-v2/after-55.txt +49 -0
- package/docs/design/tidy-0.35.1/run-v2/before-200.txt +50 -0
- package/docs/design/tidy-0.35.1/run-v2/before-55.txt +60 -0
- package/docs/design/tidy-0.35.1/step-v2/README.md +71 -0
- package/docs/design/tidy-0.35.1/step-v2/desktop-detail.txt +44 -0
- package/docs/design/tidy-0.35.1/step-v2/desktop-finished.txt +38 -0
- package/docs/design/tidy-0.35.1/step-v2/desktop-running.txt +24 -0
- package/docs/design/tidy-0.35.1/step-v2/phone-detail.txt +81 -0
- package/docs/design/tidy-0.35.1/step-v2/phone-finished.txt +71 -0
- package/docs/design/tidy-0.35.1/step-v2/phone-running.txt +46 -0
- package/docs/guide/cost.md +63 -0
- package/docs/guide/observing.md +251 -32
- package/docs/plans/dashboard-split.goal.txt +5 -0
- package/docs/plans/dashboard-split.program.json +94 -0
- package/docs/plans/meter-ledger.goal.txt +6 -0
- package/docs/plans/meter-ledger.program.json +8 -10
- package/docs/plans/step-page-0.35.0-build.goal.txt +8 -0
- package/docs/plans/step-page-0.35.0-build.program.json +164 -0
- package/docs/plans/step-page-0.35.0-design.goal.txt +6 -0
- package/docs/plans/step-page-0.35.0-design.program.json +49 -0
- package/docs/plans/step-page-0.35.0.program.json +98 -0
- package/docs/plans/tidy-0.35.1-colour.goal.txt +8 -0
- package/docs/plans/tidy-0.35.1-colour.program.json +88 -0
- package/docs/plans/tidy-0.35.1.goal.txt +11 -0
- package/docs/plans/tidy-0.35.1.program.json +302 -0
- package/docs/reference/cli.md +39 -2
- package/docs/reference/providers.md +64 -1
- package/mods/bullswarm/README.md +1 -1
- package/mods/bullswarm/hooks/pane.tsx +64 -69
- package/mods/bullswarm/hooks/runs.ts +17 -1
- package/mods/bullswarm/hooks/step.ts +474 -0
- package/package.json +1 -1
- package/src/cli.js +61 -11
- package/src/help.js +56 -0
- package/src/home-cli.js +392 -0
- package/src/lib/agent-events.js +144 -0
- package/src/lib/assignments.js +5 -1
- package/src/lib/attempt-stream.js +11 -1
- package/src/lib/cli-flags.js +2 -0
- package/src/lib/config.js +46 -4
- package/src/lib/quota-snapshot.js +50 -1
- package/src/lib/strategy.js +2 -1
- package/src/lib/subscription-cost.js +376 -8
- package/src/lib/tasks.js +11 -2
- package/src/lib/transcripts/claude-code.js +7 -3
- package/src/lib/transcripts/codex.js +7 -3
- package/src/lib/transcripts/grok.js +11 -3
- package/src/lib/transcripts/index.js +1 -0
- package/src/lib/usage-basis.js +132 -16
- package/src/lib/watch.js +388 -10
- package/src/meters/framework.js +94 -0
- package/src/meters/registry.js +368 -15
- package/src/provider-cli.js +23 -0
- package/src/providers/_schema.json +62 -0
- package/src/providers/claude-code/connector.json +71 -3
- package/src/providers/codex/connector.json +83 -2
- package/src/providers/grok/connector.json +57 -0
- package/src/strategy-cli.js +3 -2
- package/src/strategy-dashboard.js +2 -1
- package/src/workflow/budget-model.js +13 -0
- package/src/workflow/budget-view.js +27 -4
- package/src/workflow/cli.js +18 -1
- package/src/workflow/dash-kit.js +51 -35
- package/src/workflow/dashboard.js +614 -2836
- package/src/workflow/history-view.js +20 -13
- package/src/workflow/history.js +7 -0
- package/src/workflow/home-model.js +692 -0
- package/src/workflow/home-view.js +1076 -0
- package/src/workflow/reprice.js +260 -47
- package/src/workflow/rollup.js +121 -18
- package/src/workflow/run-model.js +989 -0
- package/src/workflow/run-view.js +1980 -0
- package/src/workflow/runs-cli.js +3 -4
- package/src/workflow/runs-view.js +205 -0
- package/src/workflow/stat-kit.js +250 -20
- package/src/workflow/stats-model.js +119 -25
- package/src/workflow/stats-view.js +241 -37
- package/src/workflow/step-model.js +2567 -0
- package/src/workflow/step-view.js +950 -0
- package/src/workflow/task-step.js +346 -0
- package/src/workflow/usage-view.js +16 -0
- package/src/workflow/v2-dispatch.js +8 -0
- package/src/workflow/v2-outcome.js +2 -1
- package/src/workflow/v2-runtime.js +262 -13
- package/src/workflow/v2-state.js +57 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,148 @@
|
|
|
1
1
|
# bullswarm changelog
|
|
2
2
|
|
|
3
|
+
## 0.35.1 — a calmer dashboard with honest active time
|
|
4
|
+
|
|
5
|
+
- durations: Home, Runs, Run, Step, and Stats use the union-based
|
|
6
|
+
`minutes.active` duration; `minutes.span` remains secondary, worker-minutes
|
|
7
|
+
still sum attempt clocks, and `workflow reprice` corrects stored terminal
|
|
8
|
+
minute fields.
|
|
9
|
+
- home: today leads with up to three active-or-most-recent run cards, while the
|
|
10
|
+
licence block uses one plain-word `pool · worker-minutes · weekly share · API
|
|
11
|
+
· subscription` row per pool and keeps Running and Budget visible.
|
|
12
|
+
- home: from 120 columns the three cards sit side by side, with the licence
|
|
13
|
+
block beneath them up to 159 columns and to their right from 160; below 120
|
|
14
|
+
they stack full width with the licence block beneath.
|
|
15
|
+
- home: the last-7-days band and the five-row recent list are back below
|
|
16
|
+
`budget · this week`, with the `Last 30 days`/`All time` toggle, the spend
|
|
17
|
+
chart, the by-pool/by-model/by-project lists, and the summary lines; the full
|
|
18
|
+
run list still lives only on Runs.
|
|
19
|
+
- run: the Run page now follows the Step grammar — `done of total` with running
|
|
20
|
+
and waiting ids, active-of-span clocks, a per-pool attempt mix, a phone glyph
|
|
21
|
+
strip (`p` opens phase boxes), and a live block backed by the selected
|
|
22
|
+
attempt's latest stream turn.
|
|
23
|
+
- run: spend is an honest partial subtotal (`at least` when attempts are still
|
|
24
|
+
running or unmeasured, `≈` for estimates) with measured/estimated/running/
|
|
25
|
+
unmeasured coverage and per-pool API splits; the timeline keeps phase rules
|
|
26
|
+
and one routed attempt row per worker, folds middle phases, and removes
|
|
27
|
+
licence bars, `so far`, ETA, and started/completed filler rows.
|
|
28
|
+
- money: a run, day, pool or period whose attempts were only partly priced now
|
|
29
|
+
shows the recorded subtotal marked `≈` with its coverage instead of reading
|
|
30
|
+
as unrecorded; strict totals stay strict and a subtotal is never summed into
|
|
31
|
+
one.
|
|
32
|
+
- stats: `Median run` and `Longest run` fall back per record to the recorded
|
|
33
|
+
span and say so, and the Spending chart fills its panel on the desktop grid
|
|
34
|
+
instead of drawing six narrow bars beside it.
|
|
35
|
+
- charts: a column chart sizes its tick gutter to the widest label the axis
|
|
36
|
+
will actually print, so a money axis reads `≈$160.00` rather than `≈$160.…`.
|
|
37
|
+
- step: the page is one header and four blocks — turns, result, task, cost. The
|
|
38
|
+
header says the verdict, the purpose, `pool · model · effort · reasoning`, one
|
|
39
|
+
clock (span only when it differs) and the route sentence once; the overview
|
|
40
|
+
prints one row per turn with only its non-zero counts (`35 commands`, `no
|
|
41
|
+
tools`), the counts at the end of the response on the desk and on their own
|
|
42
|
+
row on the phone, `Enter` expands a turn's full response and its tool rows
|
|
43
|
+
with each clock and measured duration, and the last turn points at the report
|
|
44
|
+
with `→ the report, shown under result`.
|
|
45
|
+
- step: the result card reads the report itself — its first lines, the diff's
|
|
46
|
+
changed paths, the step's `Shared-file requests` when its report has that
|
|
47
|
+
heading, and only the artifacts it left (`files` names the run directory once,
|
|
48
|
+
then `task · out · stream (N events) · diff`); the task card shows the
|
|
49
|
+
author's own prompt with `owns`/`after`/`affects` and the kernel wrapper's
|
|
50
|
+
size (`Enter on task: full text 2.4 KB · kernel wrapper 5.1 KB`); cost is two
|
|
51
|
+
plain-word rows (API rate and `<pool> plan`) with token classes under the
|
|
52
|
+
amount, `≈` for estimates, `—` with its reason for unknowns, and a closing
|
|
53
|
+
`measured from the … transcript` line.
|
|
54
|
+
- step: at 160 columns the activity takes the left column and result, task and
|
|
55
|
+
cost stack on the right so a finished step fits one screen; 120 narrows the
|
|
56
|
+
right column to 40; below that the page stacks result → activity → task →
|
|
57
|
+
cost, with `now` leading while the step runs. The footer carries the keys
|
|
58
|
+
once (`v detail (every event)`, `t filter`), and a live attempt says when its
|
|
59
|
+
cost will be measured instead of printing a guess.
|
|
60
|
+
- tasks: a single `bullswarm run` task uses the same Step model and view through
|
|
61
|
+
an adapter, preserving recorded fields and leaving unavailable effort,
|
|
62
|
+
verification, usage, money, and activity unavailable.
|
|
63
|
+
- step: an expanded turn shows its newest three tool rows with a
|
|
64
|
+
`↑ N earlier commands · Space page up` fold; `Space`, `PageUp` and `PageDown`
|
|
65
|
+
walk that window back through the older rows, and opening, collapsing or
|
|
66
|
+
changing the turn resets it.
|
|
67
|
+
- step: a tool that is still running keeps a spinner and its elapsed time, stays
|
|
68
|
+
the last expanded row and is counted in the collapsed turn's counts; a
|
|
69
|
+
sub-second tool prints no duration rather than `0s`, and a capture with no
|
|
70
|
+
summary falls back to its event kind instead of `summary unavailable`.
|
|
71
|
+
- step: the activity reader reads a capture's `.tail` file as well as its head,
|
|
72
|
+
merges the truncation marker and drops the overlap, so a long attempt's newest
|
|
73
|
+
events are visible instead of ending at the head cap.
|
|
74
|
+
- step: `t` cycles the activity lens turns → tools → errors → all and `f`
|
|
75
|
+
follows the tail on this page; Fleet keeps `f` everywhere else.
|
|
76
|
+
- codex: a `file_change` item keeps its path and its raw `changes` array, so the
|
|
77
|
+
Step page can name the kind and path of each change (capped at three) instead
|
|
78
|
+
of printing an empty summary.
|
|
79
|
+
- durations: every clock is h/m/s — a step or phase past an hour reads `2h04m`,
|
|
80
|
+
not `124m09s`, on the Run page, the Step page and the timeline alike.
|
|
81
|
+
- run: the `live` and `spend` columns are one aligned band at 120 columns and
|
|
82
|
+
wider; the running phase is never folded into the `↑ phases a–b` summary; and
|
|
83
|
+
the page keys and the wheel scroll the page body, so a timeline longer than
|
|
84
|
+
the terminal can be read.
|
|
85
|
+
- run: a paused run's live block still says `bullswarm workflow resume <id>
|
|
86
|
+
continues it` rather than leaving `last finished` to read as "any moment now".
|
|
87
|
+
- mod: `workflow tui --overview` keeps the goal preview and draws its milestone
|
|
88
|
+
rows flush to the pane border, the two shapes the Claude mod's pane parses.
|
|
89
|
+
- colour: the Step page, the Run page and the single-task page paint one meaning
|
|
90
|
+
per colour — green for work that went well (`✓`, `succeeded`, `verified`),
|
|
91
|
+
amber for work running now (`▶`, `●`, the spinner, `following ●`), red for
|
|
92
|
+
failures (`✗`, `failed`, an error count above zero), dim for the supporting
|
|
93
|
+
detail (clocks, counts, row labels, basis phrases, block rule dashes, footer
|
|
94
|
+
hints, pending marks), bold for identity and every money amount, and each pool
|
|
95
|
+
in the colour its bar has on Home. Response, task, report and command text
|
|
96
|
+
stay plain, the selected row is inverse, and in ASCII mode only bold, dim and
|
|
97
|
+
inverse remain.
|
|
98
|
+
- colour: the frames the records are reviewed against are rendered twice —
|
|
99
|
+
`docs/design/tidy-0.35.1/frames/real-*.txt` as text and
|
|
100
|
+
`docs/design/tidy-0.35.1/frames/colour/` with the escape codes kept, from the
|
|
101
|
+
one snapshot render (`scripts/render-tidy-0.35.1-frames.mjs --colour`), so a
|
|
102
|
+
reviewer can grep for a colour instead of trusting a screenshot.
|
|
103
|
+
- tasks: the single-task page names the task the way the Runs list does —
|
|
104
|
+
`<lane> task · <8-char id>` (`analyze task · 3155fb3c`) — instead of the full
|
|
105
|
+
UUID or a six-character prefix.
|
|
106
|
+
- home: a card's durations use the same h/m/s clock as the Step and Run pages
|
|
107
|
+
(`58m37s active of 58m38s`, `1h38m active of 1h39m`), never decimal minutes
|
|
108
|
+
like `active 725.95m`.
|
|
109
|
+
- runs: the page opens with the cursor on its first row — the first active run
|
|
110
|
+
when one is running — drawn inverse, so `Enter` opens the highlighted row, and
|
|
111
|
+
`Up` on the first row stays there.
|
|
112
|
+
- tests: the real-data tests and the frame script now run from a scrubbed
|
|
113
|
+
in-repo fixture, `tests/fixtures/home-351` (2.8 MB), built by
|
|
114
|
+
`scripts/build-test-home.mjs`: every id, time, status, pool, model, token
|
|
115
|
+
count, cost and event kind is as recorded, while goals, prompts, reports,
|
|
116
|
+
responses, commands and paths are marked placeholder text and project names
|
|
117
|
+
are aliases, so the suite needs no copy of anyone's home.
|
|
118
|
+
|
|
119
|
+
## 0.35.0 — the Step page tells the whole story
|
|
120
|
+
|
|
121
|
+
- step: the Step page leads with identity and verdict, the selected attempt,
|
|
122
|
+
retry history, route, money pair, activity, outcome, prompt, and artifacts.
|
|
123
|
+
- verification: execution success stays separate from the workflow's durable
|
|
124
|
+
`verified` result, so a successful action is not mistaken for accepted work.
|
|
125
|
+
- activity: the page follows a bounded per-attempt stream with capture-order
|
|
126
|
+
minimap, selection, filters, and explicit unavailable states instead of
|
|
127
|
+
inferring turns, tools, timing, usage, or subagents from prose.
|
|
128
|
+
- usage: API-rate and subscription figures remain a labeled pair; token source,
|
|
129
|
+
unknown values, pending live usage, and estimated bases stay visible across
|
|
130
|
+
retries rather than becoming zero or a bare dollar amount.
|
|
131
|
+
- providers: the guide and provider reference now list the optional normalized
|
|
132
|
+
stream fields each shipped capture can actually supply.
|
|
133
|
+
- watch: a truncated delegate response now gets one connector-declared recovery turn or a derived workspace/test report, with the recovery source persisted on the attempt.
|
|
134
|
+
- meters: a quota refusal forces a fresh meter read and marks the pool blocked until it clears, with the refusal age shown in Pools, Budget, and Usage.
|
|
135
|
+
- stats: single `bullswarm run` records retain their working directory so Stats and history derive the project while truly legacy records remain unknown.
|
|
136
|
+
- dashboard: the navigation footer keeps active run names visible and adds `+N more` when the terminal is too narrow.
|
|
137
|
+
- stats: model labels preserve provider/model identity at narrow widths instead of collapsing to a bare version.
|
|
138
|
+
- reprice: transcript matches can back-fill missing cwd and project fields for workflow attempts and single tasks, reporting the project changes.
|
|
139
|
+
- money: sub-cent API, subscription, budget, and strategy amounts keep three significant digits instead of rounding to `$0.00`.
|
|
140
|
+
- meters: a continuous, window-specific ledger records resolution and source, names each interval, attributes positive quota deltas to each attempt, shares overlaps by API cost, and reconciles same-pool totals at run finish.
|
|
141
|
+
- home: `home snapshot` creates a selective dashboard-readable copy of routing, meters, providers, task records, and chosen workflow runs without modifying the source.
|
|
142
|
+
- dashboard: the Home, Runs, Run and Step pages now live in their own model and
|
|
143
|
+
view modules; dashboard.js shrinks from 5,996 to 3,494 lines with every saved
|
|
144
|
+
frame rendering identically.
|
|
145
|
+
|
|
3
146
|
## 0.34.0 — every dollar says how it was measured
|
|
4
147
|
|
|
5
148
|
- usage: Claude, Codex, and Grok attempts now retain provider-reported or transcript-summed token classes, with the byte estimate and unknown kept as explicit fallbacks.
|