@botbuddy/cli 1.69.7 → 1.69.8
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 +4 -0
- package/claude-plugin/.claude-plugin/marketplace.json +1 -1
- package/claude-plugin/bb-status/.claude-plugin/plugin.json +1 -1
- package/claude-plugin/bb-status/README.md +5 -2
- package/claude-plugin/bb-status/hooks/register.js +20 -22
- package/daemon/bin/darwin-arm64/botbuddy-daemon +0 -0
- package/daemon/bin/linux-x64/botbuddy-daemon +0 -0
- package/daemon-release/darwin-arm64.json +4 -4
- package/daemon-release/linux-x64.json +4 -4
- package/daemon-release/manifest.json +5 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.69.8
|
|
4
|
+
|
|
5
|
+
- The bb-status band's context row is simpler: just `Context 45%`, right-aligned, without the token counts. It turns amber above 30% context use and red above 50%, on every surface, so a session running low on context stands out. The colour is judged on the rounded percent the row shows. The band's plugin version moves to 1.1.1, so `bb update` re-installs it.
|
|
6
|
+
|
|
3
7
|
## 1.69.6
|
|
4
8
|
|
|
5
9
|
- A new Claude Code session in a reused worktree binds its bb-status band even when the worktree's BotBuddy session was started by an earlier Claude session that has since gone. Before, the band said "BB identity belongs to another session" for as long as that BB session stayed live, and other sessions' `bb` commands in the worktree kept renewing it. The band now judges the holder by its Claude session: when the holder's transcript has been silent for 30 minutes, the band moves its cache aside to `.botbuddy/agent-state.superseded-<id>.json` and binds this session. The old BB session is not closed, so waits still running on it carry on, and it expires on its own. A holder whose Claude session is active is never replaced.
|
|
@@ -32,12 +32,15 @@ session. Once a surface draws the session again, the 5 s display tick does one
|
|
|
32
32
|
read and re-arms the relay.
|
|
33
33
|
|
|
34
34
|
**BOT-3211 context row.** The last row shows the session's context use as
|
|
35
|
-
Claude Code's status line has it, for example `Context 62
|
|
35
|
+
Claude Code's status line has it, right-aligned, for example `Context 62%`
|
|
36
|
+
(BOT-3217 dropped the token counts). The
|
|
36
37
|
mod reads it once with the free `$.session.usage()` (no `breakdown`) at
|
|
37
38
|
session start and resume, then only from the `session.measure` event the
|
|
38
39
|
engine pushes after each main-thread turn: no timer reads it. The row is hidden
|
|
39
40
|
while the runtime has no fill figure (a fresh or just-compacted session before
|
|
40
|
-
its next response), never shown as 0%.
|
|
41
|
+
its next response), never shown as 0%. It is dim up to 30%, amber (`warning`)
|
|
42
|
+
above 30% and red (`error`) above 50% (BOT-3217), judged on the rounded percent
|
|
43
|
+
it shows.
|
|
41
44
|
|
|
42
45
|
## Install
|
|
43
46
|
|
|
@@ -696,33 +696,31 @@ function bandLine(el, spec, widths, right) {
|
|
|
696
696
|
// Top-aligned: with a wrapped title, the id and status sit on its first line.
|
|
697
697
|
return el.Box({ key: spec.key, flexDirection: "row", alignItems: "flex-start", columnGap: 1, children });
|
|
698
698
|
}
|
|
699
|
-
// BOT-3211:
|
|
700
|
-
|
|
701
|
-
if (n >= 999500) return String(Math.round(n / 100000) / 10).replace(/\.0$/, "") + "M";
|
|
702
|
-
if (n >= 1000) return Math.round(n / 1000) + "k";
|
|
703
|
-
return String(n);
|
|
704
|
-
}
|
|
705
|
-
// The row's text, or null when the runtime has no fill figure (a fresh or
|
|
706
|
-
// just-compacted session): hidden, never "0%".
|
|
699
|
+
// BOT-3211/BOT-3217: "Context 62%", or null when the runtime has no fill
|
|
700
|
+
// figure (a fresh or just-compacted session): hidden, never "0%".
|
|
707
701
|
function contextText(c) {
|
|
708
|
-
if (
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
)
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
return Number.isSafeInteger(c.tokens) && c.tokens >= 0
|
|
719
|
-
? pct + " · " + tokens(c.tokens) + " of " + tokens(c.window)
|
|
720
|
-
: pct + " of " + tokens(c.window);
|
|
702
|
+
if (!c || !Number.isFinite(c.percent) || c.percent < 0 || c.percent > 100) return null;
|
|
703
|
+
return "Context " + Math.round(c.percent) + "%";
|
|
704
|
+
}
|
|
705
|
+
// BOT-3217: amber above 30%, red above 50%, judged on the rounded percent the
|
|
706
|
+
// row shows, so the colour always matches the number.
|
|
707
|
+
function contextColor(c) {
|
|
708
|
+
const pct = Math.round(c.percent);
|
|
709
|
+
if (pct > 50) return "error";
|
|
710
|
+
if (pct > 30) return "warning";
|
|
711
|
+
return null;
|
|
721
712
|
}
|
|
722
713
|
function contextLine(el, key) {
|
|
723
714
|
const text = contextText(context);
|
|
724
715
|
if (!text) return null;
|
|
725
|
-
|
|
716
|
+
const color = contextColor(context);
|
|
717
|
+
// Right-aligned on its own row (Jono, BOT-3217).
|
|
718
|
+
return el.Box({
|
|
719
|
+
key,
|
|
720
|
+
flexDirection: "row",
|
|
721
|
+
justifyContent: "flex-end",
|
|
722
|
+
children: [color ? el.Text({ color, children: [text] }) : dim(el, text)],
|
|
723
|
+
});
|
|
726
724
|
}
|
|
727
725
|
async function readContext($) {
|
|
728
726
|
try {
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"release_version": "1.69.
|
|
3
|
-
"source_commit": "
|
|
4
|
-
"source_sha256": "
|
|
2
|
+
"release_version": "1.69.8",
|
|
3
|
+
"source_commit": "704da4fe10bcbc13f1ca3abc6b0d47d2260e2c62",
|
|
4
|
+
"source_sha256": "2465657c2fe4fa188d73f3b7efda0f608144afcfd8d7eba465ece55ccb1204f3",
|
|
5
5
|
"target": "darwin-arm64",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "865f29aebd07e09de6c5b77fd5297db5a568c30843c4395e8ae4e927b0d4e7ad"
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"release_version": "1.69.
|
|
3
|
-
"source_commit": "
|
|
4
|
-
"source_sha256": "
|
|
2
|
+
"release_version": "1.69.8",
|
|
3
|
+
"source_commit": "704da4fe10bcbc13f1ca3abc6b0d47d2260e2c62",
|
|
4
|
+
"source_sha256": "2465657c2fe4fa188d73f3b7efda0f608144afcfd8d7eba465ece55ccb1204f3",
|
|
5
5
|
"target": "linux-x64",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "6ad28e621587a5a697621c54c5a9b09f90c79b0687a4ae1f25f380ef02843d4b"
|
|
7
7
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
|
-
"release_version": "1.69.
|
|
4
|
-
"source_commit": "
|
|
5
|
-
"source_sha256": "
|
|
3
|
+
"release_version": "1.69.8",
|
|
4
|
+
"source_commit": "704da4fe10bcbc13f1ca3abc6b0d47d2260e2c62",
|
|
5
|
+
"source_sha256": "2465657c2fe4fa188d73f3b7efda0f608144afcfd8d7eba465ece55ccb1204f3",
|
|
6
6
|
"targets": {
|
|
7
7
|
"darwin-arm64": {
|
|
8
8
|
"goos": "darwin",
|
|
9
9
|
"goarch": "arm64",
|
|
10
10
|
"binary": "daemon/bin/darwin-arm64/botbuddy-daemon",
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "865f29aebd07e09de6c5b77fd5297db5a568c30843c4395e8ae4e927b0d4e7ad",
|
|
12
12
|
"mode": "0755"
|
|
13
13
|
},
|
|
14
14
|
"linux-x64": {
|
|
15
15
|
"goos": "linux",
|
|
16
16
|
"goarch": "amd64",
|
|
17
17
|
"binary": "daemon/bin/linux-x64/botbuddy-daemon",
|
|
18
|
-
"sha256": "
|
|
18
|
+
"sha256": "6ad28e621587a5a697621c54c5a9b09f90c79b0687a4ae1f25f380ef02843d4b",
|
|
19
19
|
"mode": "0755"
|
|
20
20
|
}
|
|
21
21
|
}
|