@basou/cli 0.72.0 → 0.73.0
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/dist/index.js +60 -19
- package/dist/index.js.map +1 -1
- package/dist/program.js +60 -19
- package/dist/program.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -13971,6 +13971,17 @@ var BOARD_HTML = `<!doctype html>
|
|
|
13971
13971
|
table.matrix th.stage { font-weight: 400; font-size: 12px; text-align: center; min-width: 64px; }
|
|
13972
13972
|
table.matrix th.stage b { display: block; font-size: 13px; }
|
|
13973
13973
|
table.matrix td.cell { text-align: center; font-size: 18px; line-height: 1; }
|
|
13974
|
+
.stage-meanings { display: none; list-style: none; padding: 0; margin: 6px 0 0; font-size: 12px; color: var(--fg-2); }
|
|
13975
|
+
/* Six stages do not fit beside their meanings below about 600px: each is
|
|
13976
|
+
drawn by its id, the meanings are listed under the matrix, and a lane
|
|
13977
|
+
name wraps. After the rules above, which it overrides. */
|
|
13978
|
+
@media (max-width: 600px) {
|
|
13979
|
+
table.matrix th.stage { min-width: 0; padding: 4px 2px; }
|
|
13980
|
+
table.matrix th.stage .meaning { display: none; }
|
|
13981
|
+
table.matrix td.cell { font-size: 16px; padding: 4px 2px; }
|
|
13982
|
+
table.matrix th:first-child { max-width: 10em; overflow-wrap: anywhere; }
|
|
13983
|
+
.stage-meanings { display: block; }
|
|
13984
|
+
}
|
|
13974
13985
|
.st::before { display: inline-block; width: 1.2em; }
|
|
13975
13986
|
.st.done::before { content: "\\25CF"; color: var(--done); }
|
|
13976
13987
|
.st.part::before { content: "\\25D0"; color: var(--done); }
|
|
@@ -14259,6 +14270,13 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14259
14270
|
k, el('div', { class: 'v', text: num(t.value) }), sub === null ? null : el('div', { class: 's', text: sub })
|
|
14260
14271
|
]));
|
|
14261
14272
|
});
|
|
14273
|
+
return section(S.sections.summary, false, [el('div', null, [prose(s.text), reported()]), tiles]);
|
|
14274
|
+
}
|
|
14275
|
+
|
|
14276
|
+
// The observations outside, which the record holds in its summary, in a
|
|
14277
|
+
// section of their own after the lanes.
|
|
14278
|
+
function observations(b) {
|
|
14279
|
+
var s = b.summary;
|
|
14262
14280
|
var observed;
|
|
14263
14281
|
if (s.observed.length === 0) {
|
|
14264
14282
|
observed = el('p', { class: 'muted', text: S.observed.none });
|
|
@@ -14301,17 +14319,11 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14301
14319
|
])
|
|
14302
14320
|
].concat(rows))]);
|
|
14303
14321
|
}
|
|
14304
|
-
var
|
|
14305
|
-
var children = [
|
|
14306
|
-
el('div', null, [prose(s.text), reported()]),
|
|
14307
|
-
tiles,
|
|
14308
|
-
observedHeading,
|
|
14309
|
-
observed
|
|
14310
|
-
];
|
|
14322
|
+
var children = [observed];
|
|
14311
14323
|
if (s.previous_record === 'unreadable' && s.observed.length > 0) {
|
|
14312
14324
|
children.push(el('p', { class: 'muted', text: S.observed.previousUnreadable }));
|
|
14313
14325
|
}
|
|
14314
|
-
return section(S.
|
|
14326
|
+
return section(S.observed.heading, true, children);
|
|
14315
14327
|
}
|
|
14316
14328
|
|
|
14317
14329
|
var SVGNS = 'http://www.w3.org/2000/svg';
|
|
@@ -14543,16 +14555,24 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14543
14555
|
]);
|
|
14544
14556
|
};
|
|
14545
14557
|
var union = e.active_ms.union;
|
|
14558
|
+
// Over the daily rows, today's included (one more than the days elapsed),
|
|
14559
|
+
// so that the first day is a day; the sub-text names the divisor.
|
|
14546
14560
|
var perDay = union === null || !e.period_days ? null : union / e.period_days;
|
|
14547
14561
|
var perWorked = union === null || !e.active_days ? null : union / e.active_days;
|
|
14562
|
+
var perDaySub = [
|
|
14563
|
+
perDay === null ? null : fill(S.effort.perDayOver, { days: num(e.period_days) }),
|
|
14564
|
+
perWorked === null ? null : fill(S.effort.perDayWorked, { time: hm(perWorked) })
|
|
14565
|
+
].filter(function (part) { return part !== null; }).join(DOT);
|
|
14548
14566
|
var tokens = e.sessions_without_tokens ? fill(S.effort.withoutTokens, { n: e.sessions_without_tokens }) : null;
|
|
14567
|
+
// Each tool's time is the union of its sessions' intervals, as Active is.
|
|
14568
|
+
var unionOf = function (ms) { return ms === null ? null : S.effort.toolUnion; };
|
|
14549
14569
|
var tiles = el('div', { class: 'tiles' }, [
|
|
14550
14570
|
tile(S.effort.elapsed, e.elapsed_days === null ? S.effort.notMeasured : fill(S.effort.days, { days: e.elapsed_days }),
|
|
14551
14571
|
e.time_zone === null ? fill(S.effort.from, { date: e.start }) : fill(S.effort.fromZone, { date: e.start, zone: e.time_zone })),
|
|
14552
14572
|
tile(S.effort.active, hm(union), e.active_days === null ? null : fill(S.effort.daysWorked, { n: e.active_days })),
|
|
14553
|
-
tile(S.effort.claude, hm(e.active_ms.claude),
|
|
14554
|
-
tile(S.effort.codex, e.active_ms.codex === null && union !== null ? S.effort.noCodex : hm(e.active_ms.codex),
|
|
14555
|
-
tile(S.effort.perDay, hm(perDay),
|
|
14573
|
+
tile(S.effort.claude, hm(e.active_ms.claude), unionOf(e.active_ms.claude)),
|
|
14574
|
+
tile(S.effort.codex, e.active_ms.codex === null && union !== null ? S.effort.noCodex : hm(e.active_ms.codex), unionOf(e.active_ms.codex)),
|
|
14575
|
+
tile(S.effort.perDay, hm(perDay), perDaySub),
|
|
14556
14576
|
tile(S.effort.outputTokens, num(e.output_tokens), tokens)
|
|
14557
14577
|
]);
|
|
14558
14578
|
var commits = e.commits === null ? S.effort.notMeasured : e.commits.map(function (c) {
|
|
@@ -14590,8 +14610,13 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14590
14610
|
})
|
|
14591
14611
|
)));
|
|
14592
14612
|
}
|
|
14613
|
+
// The meaning is the head's title too, as a screen reader reads it and a
|
|
14614
|
+
// pointer that hovers shows it, and the text beside the id is left out of
|
|
14615
|
+
// what a screen reader reads, so that it is read once.
|
|
14593
14616
|
var head = el('tr', null, [el('th', { text: S.matrix.lane })].concat(x.stages.map(function (s) {
|
|
14594
|
-
return el('th', { class: 'stage'
|
|
14617
|
+
return el('th', { class: 'stage', title: s.meaning }, [
|
|
14618
|
+
el('b', { text: s.id }), el('span', { class: 'meaning', 'aria-hidden': 'true', text: s.meaning })
|
|
14619
|
+
]);
|
|
14595
14620
|
})));
|
|
14596
14621
|
var rows = x.lanes.map(function (lane) {
|
|
14597
14622
|
return el('tr', null, [el('th', { text: lane.name })].concat(lane.cells.map(function (c) {
|
|
@@ -14603,6 +14628,11 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14603
14628
|
})));
|
|
14604
14629
|
});
|
|
14605
14630
|
children.push(el('div', { class: 'scroll' }, [el('table', { class: 'matrix' }, [head].concat(rows))]));
|
|
14631
|
+
// What each stage means, drawn where a narrow screen gives a stage its id
|
|
14632
|
+
// alone (and hidden where the heads say it).
|
|
14633
|
+
children.push(el('ul', { class: 'stage-meanings' }, x.stages.map(function (s) {
|
|
14634
|
+
return el('li', null, [el('b', { text: s.id }), ' ' + s.meaning]);
|
|
14635
|
+
})));
|
|
14606
14636
|
var legend = el('div', { class: 'legend' });
|
|
14607
14637
|
['done', 'part', 'blocked', 'shelved', 'none', 'unverified'].forEach(function (s) {
|
|
14608
14638
|
legend.appendChild(el('span', null, [el('span', { class: 'st ' + s }), stateName(s)]));
|
|
@@ -14758,8 +14788,10 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14758
14788
|
var b = page.board;
|
|
14759
14789
|
// The board's own title, so that boards open in other tabs can be told apart.
|
|
14760
14790
|
document.title = b.heading.title;
|
|
14761
|
-
|
|
14762
|
-
|
|
14791
|
+
// Where each lane stops, right under the summary's tiles, and the lanes,
|
|
14792
|
+
// before the observations and the charts of the effort.
|
|
14793
|
+
[heading(b), summary(b), matrix(b), lanes(b), observations(b), effort(b, false), measures(b), composition(b),
|
|
14794
|
+
turns(b), recordRepos(b), recordComponents(b), footnotes(b)]
|
|
14763
14795
|
.forEach(function (node) { root.appendChild(node); });
|
|
14764
14796
|
}
|
|
14765
14797
|
|
|
@@ -14789,8 +14821,8 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14789
14821
|
// measured no base, ahead or fetch time (drawn as '-') and held the
|
|
14790
14822
|
// commits behind as behind_main.
|
|
14791
14823
|
function reposTable(list, missing, older) {
|
|
14792
|
-
var labels = [S.live.repo, S.live.branch, S.live.head, S.live.lastCommit, S.live.commits, S.live.uncommitted, S.live.base, S.live.behind, S.live.ahead, S.live.fetchedAt];
|
|
14793
|
-
var numeric = [4, 5,
|
|
14824
|
+
var labels = [S.live.repo, S.live.branch, S.live.head, S.live.lastCommit, S.live.commits, S.live.files, S.live.uncommitted, S.live.base, S.live.behind, S.live.ahead, S.live.fetchedAt];
|
|
14825
|
+
var numeric = [4, 5, 6, 8, 9];
|
|
14794
14826
|
var head = el('tr', null, labels.map(function (label, i) { return el('th', { class: numeric.indexOf(i) !== -1 ? 'n' : '', text: label }); }));
|
|
14795
14827
|
var rows = list.map(function (r) {
|
|
14796
14828
|
var at = 'repos[' + r.path + ']';
|
|
@@ -14808,6 +14840,7 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14808
14840
|
el('td', { text: value('head', r.head, function (h) { return h.slice(0, 7); }) }),
|
|
14809
14841
|
el('td', { text: value('last_commit', r.last_commit, when) }),
|
|
14810
14842
|
el('td', { class: 'n', text: num(r.commits) }),
|
|
14843
|
+
el('td', { class: 'n', text: num(r.files) }),
|
|
14811
14844
|
el('td', { class: 'n', text: num(r.uncommitted) }),
|
|
14812
14845
|
el('td', { text: unmeasured('base', r.base, String) }),
|
|
14813
14846
|
el('td', { class: 'n', text: value(older ? 'behind_main' : 'behind', r.behind, num) }),
|
|
@@ -14829,7 +14862,7 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14829
14862
|
return section(S.live.repos, false, children);
|
|
14830
14863
|
}
|
|
14831
14864
|
// The components the record found, by the lanes its registry counts them
|
|
14832
|
-
// in, then those in no lane, those not registered, and those gone.
|
|
14865
|
+
// in, then those in no lane (folded), those not registered, and those gone.
|
|
14833
14866
|
function recordComponents(b) {
|
|
14834
14867
|
var c = b.components;
|
|
14835
14868
|
if (!c) return section(S.live.components, false, [el('p', { class: 'muted', text: S.record.componentsUnread })]);
|
|
@@ -14855,7 +14888,15 @@ var BOARD_HTML = `<!doctype html>
|
|
|
14855
14888
|
c.lanes.forEach(function (lane) {
|
|
14856
14889
|
children = children.concat(group(lane.name, lane.components, S.record.noComponentInLane));
|
|
14857
14890
|
});
|
|
14858
|
-
|
|
14891
|
+
// Those in no lane can be most of them: folded under how many they are.
|
|
14892
|
+
if (c.uncounted.length > 0) {
|
|
14893
|
+
children.push(el('details', null, [
|
|
14894
|
+
el('summary', { text: fill(S.record.uncountedFolded, { n: num(c.uncounted.length) }) }),
|
|
14895
|
+
el('ul', null, c.uncounted.map(item))
|
|
14896
|
+
]));
|
|
14897
|
+
} else {
|
|
14898
|
+
children = children.concat(group(S.record.uncounted, c.uncounted, S.record.none));
|
|
14899
|
+
}
|
|
14859
14900
|
children = children.concat(group(S.record.unacknowledged, c.unacknowledged, S.record.none));
|
|
14860
14901
|
children.push(el('h3', { text: S.record.gone }));
|
|
14861
14902
|
children.push(c.gone === null ? el('p', { class: 'muted', text: S.record.goneUnknown })
|
|
@@ -16522,7 +16563,7 @@ function installExperimentalNotice(program2, names = EXPERIMENTAL_COMMANDS, writ
|
|
|
16522
16563
|
function readBuildStamp() {
|
|
16523
16564
|
if (false) return void 0;
|
|
16524
16565
|
try {
|
|
16525
|
-
return JSON.parse('{"version":"0.
|
|
16566
|
+
return JSON.parse('{"version":"0.73.0","commit":"fdfa3a5","committedAt":"2026-10-20T20:30:59+09:00"}');
|
|
16526
16567
|
} catch {
|
|
16527
16568
|
return void 0;
|
|
16528
16569
|
}
|