@harborppm/cli 0.65.0 → 0.66.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/README.md +1 -1
- package/dist/app.mjs +3 -1
- package/lib/cli.mjs +1 -1
- package/lib/format.mjs +8 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -189,7 +189,7 @@ harbor review [WORDS] [--mine|--owner NAME] [--portfolio P] [--done]
|
|
|
189
189
|
the review: programs worst first, with next moves
|
|
190
190
|
(reads only; harbor submit moves a task to In review)
|
|
191
191
|
harbor thanks [TASK "LINE"] [--to NAME] a one-line thanks for a task (--milestone, --decision);
|
|
192
|
-
on its own, the thanks you were given
|
|
192
|
+
on its own, the thanks you were given in the last 30 days
|
|
193
193
|
harbor bridge run the review as a meeting: one project a screen,
|
|
194
194
|
what changed since the last one, log decisions,
|
|
195
195
|
actions and risks live, post the summary to chat
|
package/dist/app.mjs
CHANGED
|
@@ -3285,6 +3285,7 @@ function barnaclesOf(project, tasks, people, now, slip = null) {
|
|
|
3285
3285
|
return {
|
|
3286
3286
|
since,
|
|
3287
3287
|
from,
|
|
3288
|
+
settling: from === "start" && since.slice(0, 10) > today,
|
|
3288
3289
|
planned,
|
|
3289
3290
|
added: added.length,
|
|
3290
3291
|
share: planned > 0 ? added.length / planned : null,
|
|
@@ -19581,6 +19582,7 @@ function barnaclesData(b) {
|
|
|
19581
19582
|
return {
|
|
19582
19583
|
measuredFrom: b.from === "baseline" ? "when the baseline was set" : "a week after its first task was made",
|
|
19583
19584
|
since: b.since,
|
|
19585
|
+
settling: b.settling,
|
|
19584
19586
|
planned: b.planned,
|
|
19585
19587
|
added: b.added,
|
|
19586
19588
|
addedPercent: b.share == null ? null : Math.round(b.share * 100),
|
|
@@ -20950,7 +20952,7 @@ const HARBOR_TOOLS = [
|
|
|
20950
20952
|
tool({
|
|
20951
20953
|
name: "scope_growth",
|
|
20952
20954
|
title: "Barnacles: work added since the plan was set",
|
|
20953
|
-
description: "How much a project's plan has grown since it was set (barnacles): tasks made after the baseline was set (or, without a baseline time, after the project's first week of tasks), as a count and a percent of what was planned, by week (weekOf is a Monday) and by who added them (who is null for tasks made before Harbor kept track, or by a form). daysOfWork puts them at the crew's pace (tasks finished a week over the last six); slipDays is how late the project runs against its planned end (the likely finish at that pace, or the end date's move from the baseline), and daysLine says how much of it the added work explains." + DATA_NOTE,
|
|
20955
|
+
description: "How much a project's plan has grown since it was set (barnacles): tasks made after the baseline was set (or, without a baseline time, after the project's first week of tasks), as a count and a percent of what was planned, by week (weekOf is a Monday) and by who added them (who is null for tasks made before Harbor kept track, or by a form). daysOfWork puts them at the crew's pace (tasks finished a week over the last six); slipDays is how late the project runs against its planned end (the likely finish at that pace, or the end date's move from the baseline), and daysLine says how much of it the added work explains. settling is true while a project without a baseline is still in its first week (since is in the future): nothing counts as added yet, and setting a baseline counts from now." + DATA_NOTE,
|
|
20954
20956
|
input: object({
|
|
20955
20957
|
harbor: harborArg,
|
|
20956
20958
|
project: string().min(1).max(200).describe("Project id, name or key.")
|
package/lib/cli.mjs
CHANGED
|
@@ -205,7 +205,7 @@ export const HELP = `harbor: Harbor from the terminal
|
|
|
205
205
|
the review: programs worst first,
|
|
206
206
|
each with its next move (reads
|
|
207
207
|
only; harbor submit moves a task)
|
|
208
|
-
harbor thanks [--all] [--given] thanks
|
|
208
|
+
harbor thanks [--all] [--given] your thanks, last 30 days
|
|
209
209
|
harbor thanks TASK "LINE" [--to NAME] a one-line thanks for a task
|
|
210
210
|
harbor thanks --milestone NAME|--decision TITLE "LINE" [--to NAME]
|
|
211
211
|
the same for a milestone or a
|
package/lib/format.mjs
CHANGED
|
@@ -643,6 +643,13 @@ export function whyText(r) {
|
|
|
643
643
|
/** A project's barnacles, as scope_growth answers it: the growth, its cost in days, by week and by who. */
|
|
644
644
|
export function barnaclesText(r) {
|
|
645
645
|
const head = [`Barnacles · ${r.project}`];
|
|
646
|
+
if (r.settling) {
|
|
647
|
+
head.push(
|
|
648
|
+
`The plan is still being written: ${r.planned} task${r.planned === 1 ? "" : "s"} so far, and nothing counts as added until ${monthDay(r.since)}, a week after its first task.`,
|
|
649
|
+
`harbor baseline "${r.key ?? r.project}" --set counts from now instead.`,
|
|
650
|
+
);
|
|
651
|
+
return head.join("\n");
|
|
652
|
+
}
|
|
646
653
|
if (!r.added) {
|
|
647
654
|
head.push(`Nothing added since the plan was set (${r.since.slice(0, 10)}): ${r.planned} task${r.planned === 1 ? "" : "s"}, as planned.`);
|
|
648
655
|
return head.join("\n");
|
|
@@ -1198,7 +1205,7 @@ export function catchupText(r) {
|
|
|
1198
1205
|
m.added ? `${m.added} added` : null,
|
|
1199
1206
|
m.health ? `now ${HEALTH[m.health.to] ?? m.health.to} (was ${HEALTH[m.health.from] ?? m.health.from})` : null,
|
|
1200
1207
|
].filter(Boolean);
|
|
1201
|
-
out.push(` ${m.project}: ${bits.join(", ")}`);
|
|
1208
|
+
out.push(` ${m.key ? `${m.key} ` : ""}${m.project}: ${bits.join(", ")}`);
|
|
1202
1209
|
}
|
|
1203
1210
|
}
|
|
1204
1211
|
const more = r.handed.length > r.lookFirst.filter((l) => l.kind === "handed").length;
|