@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 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 this month
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 you were given this month
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harborppm/cli",
3
- "version": "0.65.0",
3
+ "version": "0.66.0",
4
4
  "description": "Harbor from the terminal: a full-screen app with everything, plus commands for scripts and agents.",
5
5
  "keywords": [
6
6
  "harbor",