@stevecastaneda/paseo-progress 1.3.0 → 1.4.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/OVERVIEW.md +1 -1
- package/README.md +34 -5
- package/client/launcher.tsx +2 -2
- package/client/panel.tsx +30 -10
- package/client/questions.tsx +20 -4
- package/client/settings.tsx +40 -0
- package/client/surfaces.ts +20 -8
- package/client/ticket-dialog.tsx +2 -1
- package/client/whats-new.tsx +120 -0
- package/client/write-up.tsx +3 -2
- package/dist/server/cli.js +140 -37
- package/images/1-panel.png +0 -0
- package/images/3-question.png +0 -0
- package/images/5-settings.png +0 -0
- package/index.client.tsx +12 -1
- package/index.server.ts +11 -2
- package/package.json +2 -1
- package/paseo-plugin.json +2 -1
- package/server/cli.ts +28 -11
- package/server/launcher.ts +81 -21
- package/server/question-mode.ts +61 -0
- package/server/skill.ts +15 -6
- package/server/store.ts +21 -4
- package/server/whats-new.ts +127 -0
- package/shared/dashboard.ts +9 -2
- package/shared/events.ts +9 -4
- package/shared/question-modes.ts +45 -0
- package/shared/rpc.ts +18 -0
- package/shared/settings.ts +10 -0
- package/shared/show.ts +3 -1
- package/shared/whats-new.ts +16 -0
- package/shared/write-up.ts +9 -8
- package/skills/paseo-progress/SKILL.md +26 -68
package/shared/write-up.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// A ticket's write-up (its Markdown source file) as simple blocks the dialog
|
|
2
2
|
// can draw without a Markdown renderer: headings, paragraphs, list items and
|
|
3
|
-
// code. Inline marks are kept as spans: `code` stays code, **bold**
|
|
4
|
-
// _emphasis_
|
|
3
|
+
// code. Inline marks are kept as spans: `code` stays code, **bold** stays
|
|
4
|
+
// bold, _emphasis_ loses its markers, and [links](url) keep only their text.
|
|
5
5
|
|
|
6
|
-
export type Span = { text: string; code?: boolean };
|
|
6
|
+
export type Span = { text: string; code?: boolean; strong?: boolean };
|
|
7
7
|
|
|
8
8
|
export type Block =
|
|
9
9
|
| { kind: "heading"; level: number; spans: Span[] }
|
|
@@ -20,11 +20,12 @@ export function spans(text: string): Span[] {
|
|
|
20
20
|
result.push({ text: part.slice(1, -1), code: true });
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
.replace(/(^|[\s(])[*_](\S(?:.*?\S)?)[*_](?=[\s).,;:!?]|$)/g, "$1$2");
|
|
27
|
-
|
|
23
|
+
part.replace(/!?\[([^\]]*)\]\([^)]*\)/g, "$1").split(/((?:\*\*|__).+?(?:\*\*|__))/).forEach((piece) => {
|
|
24
|
+
if (!piece) return;
|
|
25
|
+
const strong = /^(\*\*|__).+\1$/.test(piece);
|
|
26
|
+
const text = (strong ? piece.slice(2, -2) : piece).replace(/(^|[\s(])[*_](\S(?:.*?\S)?)[*_](?=[\s).,;:!?]|$)/g, "$1$2");
|
|
27
|
+
result.push(strong ? { text, strong } : { text });
|
|
28
|
+
});
|
|
28
29
|
});
|
|
29
30
|
return result;
|
|
30
31
|
}
|
|
@@ -1,92 +1,50 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: paseo-progress
|
|
3
|
-
description:
|
|
3
|
+
description: Keep the Paseo Progress dashboard live with the paseo-progress command. Use when working through a spec or a set of tickets, on any job over 5 steps or 30 minutes, or when the user asks for a progress dashboard.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Paseo progress
|
|
7
7
|
|
|
8
|
-
The user watches a live dashboard in Paseo
|
|
8
|
+
The user watches a live dashboard in Paseo for this worktree. Keep it live: run `paseo-progress` from inside the worktree the moment each change happens, so the dashboard is a side effect of the work. Write every line for a product manager, in plain words. `paseo-progress --help` is the reference for every command and flag.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## 1. Set up
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Run `paseo-progress show` and continue an open run for this job. A Finished run is closed, so `start` a new one, then add every ticket in order:
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
2. Add every ticket in order with `paseo-progress ticket add "Ticket 01: <title>" --estimate <minutes>`, with `--waits-for T02` on any that can't start before another finishes. Keep the "Ticket NN:" prefix: the dashboard shortens titles to it. When a ticket is written up somewhere, a spec file or an issue, pass `--source <path or link>` so the user can open it from the ticket. For a job without tickets, add its steps instead and pass `--item-label Step` to `start`; give a step `--source` only when it has a write-up.
|
|
18
|
-
3. `paseo-progress activity add "<one line: what this run will do>"`.
|
|
14
|
+
- Title each `"Ticket 01: <title>"`. The dashboard shortens titles to that prefix.
|
|
15
|
+
- Give each an `--estimate`, plus `--waits-for` when it can't start before another and `--source` when a spec file or issue describes it.
|
|
16
|
+
- For a job without tickets, add its steps and pass `--item-label Step` to `start`.
|
|
19
17
|
|
|
20
18
|
Done when `show` lists every ticket with an estimate.
|
|
21
19
|
|
|
22
|
-
## 2. Work
|
|
23
|
-
|
|
24
|
-
Record each change as it happens, on the ticket's id from `show` (T01, T02, ...):
|
|
25
|
-
|
|
26
|
-
| When | Command |
|
|
27
|
-
| --- | --- |
|
|
28
|
-
| You start a ticket | `ticket update T03 --status working --stage Build` |
|
|
29
|
-
| You move to the next stage | `ticket update T03 --stage Review`, then `Fixes`, then `Verify` |
|
|
30
|
-
| Something reviewable lands (a screenshot folder, a screen recording, a report, a preview URL) | `deliverable add "<what it shows>" <path or URL> --ticket T03` |
|
|
31
|
-
| A milestone the user would want in the story | `activity add "<one line>" --ticket T03` |
|
|
32
|
-
| Between bigger events | `ticker set "<what you are doing right now>"` |
|
|
33
|
-
| The ticket is finished | `ticket update T03 --status done`, then start the next one |
|
|
34
|
-
| The plan drops it | `ticket update T03 --status skipped --note "<why>"` |
|
|
35
|
-
|
|
36
|
-
Pass `--ticket` on every activity, deliverable and question that belongs to a ticket. The user presses a ticket to see its story: each stage and how long it took, with the activity, deliverables and questions tagged to it. Leave it off only for run-wide notes. Stage changes and notes are timed from your `ticket update` calls, so make them when the change happens.
|
|
37
|
-
|
|
38
|
-
Other sessions may add tickets (or steps) to the same run. When a command's output says another session added one, it is part of the plan: work it in order after your current one, the same as the ones you added.
|
|
39
|
-
|
|
40
|
-
A working ticket turns stuck on its own once it goes longer than its estimate without an update: a status, stage or note change, or activity tagged to it. When a ticket will run long, keep updating its stage, or raise its estimate with `--estimate`.
|
|
41
|
-
|
|
42
|
-
A subagent records the work you hand it. Paseo shows you as idle while you wait on it, so its updates are the only sign the work is still going; after 15 minutes without one, the dashboard warns that the work may have stopped. Mark the ticket working, then put this in the subagent's prompt with this worktree's absolute path and the ticket id filled in:
|
|
43
|
-
|
|
44
|
-
```text
|
|
45
|
-
Record progress on the Paseo dashboard as you work:
|
|
46
|
-
- at each new stage: cd <worktree> && paseo-progress ticket update T03 --stage <stage>
|
|
47
|
-
- between stages: cd <worktree> && paseo-progress ticker set "<what you are doing now>"
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
The `cd` puts the updates on this worktree's dashboard even when the subagent works in another checkout. When the subagent reports back, mark the ticket done.
|
|
51
|
-
|
|
52
|
-
## 3. Ask questions, and work around them
|
|
20
|
+
## 2. Work
|
|
53
21
|
|
|
54
|
-
|
|
22
|
+
Move each ticket through `--status working --stage Build`, then the stages `Review`, `Fixes` and `Verify`, then `--status done`. Along the way, record what the user would want to see: `deliverable add` for anything reviewable, `activity add` for milestones, `ticker set` for what you are doing right now. Tag each with `--ticket` unless it covers the whole run.
|
|
55
23
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
--recommend <letter> --ticket T03 --raised-by "Ticket 03 design review" \
|
|
61
|
-
[--background "<what they need to decide without opening the worktree>"] \
|
|
62
|
-
[--file <path or http(s) URL>=<what it shows>]
|
|
63
|
-
```
|
|
24
|
+
- A ticket past its estimate with no update turns stuck. Keep its stage current, or raise its `--estimate`.
|
|
25
|
+
- A ticket another session adds is part of the plan. Work it in order.
|
|
26
|
+
- `--status blocked` and `stuck set` are for things outside the run, like a service that's down or missing access.
|
|
27
|
+
- Put this in a subagent's prompt, with the worktree path and ticket id filled in. While you wait on it, its updates are the dashboard's only sign the work is moving:
|
|
64
28
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
- When the user asks about a question, answer in chat and also put the explanation on the question with `question update Q7 --background "<text>"`, so the dashboard carries it too.
|
|
71
|
-
- `question remove Q7` withdraws a question that no longer applies.
|
|
29
|
+
```text
|
|
30
|
+
Record progress on the Paseo dashboard as you work:
|
|
31
|
+
- at each new stage: cd <worktree> && paseo-progress ticket update T03 --stage <stage>
|
|
32
|
+
- between stages: cd <worktree> && paseo-progress ticker set "<what you are doing now>"
|
|
33
|
+
```
|
|
72
34
|
|
|
73
|
-
|
|
35
|
+
Done when every ticket is done or skipped, or waits on a question.
|
|
74
36
|
|
|
75
|
-
|
|
76
|
-
- A ticket held up by something outside the run (a service, access, a decision nobody has made): `ticket update T03 --status blocked --note "<what it waits on>"`. That shows as stuck. Set it back to `working` when it moves again.
|
|
77
|
-
- A blocker outside any ticket (a failing service, a missing key): `stuck set "<reason>" [--ticket T03]`, then `stuck clear S1` once it is gone.
|
|
37
|
+
## 3. Ask
|
|
78
38
|
|
|
79
|
-
|
|
39
|
+
When a decision belongs to the user, ask it with `question ask`, lettered `--option`s and your `--recommend`. Read `paseo-progress question ask --help` before your first question. It defines a big question, which you mark with `--big "<the test it meets>"`.
|
|
80
40
|
|
|
81
|
-
|
|
41
|
+
The user picks the question mode in Paseo's Settings, and `question ask` prints what that mode means for this question. Do what it prints. Record the user's reply ("Q7 A", or their own words) with `question answer Q7 A --words "<their words>"`, and do what that prints too.
|
|
82
42
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
3. `paseo-progress finish "<one line: the outcome>"`. It refuses, and says what is still open, until the steps above are done.
|
|
86
|
-
4. Run `paseo-progress show`.
|
|
43
|
+
- When the question is about how something looks, attach the screenshot or link with `--file`.
|
|
44
|
+
- When the user asks about a question, answer in chat and add the explanation with `question update Q7 --background`.
|
|
87
45
|
|
|
88
|
-
|
|
46
|
+
## 4. Finish
|
|
89
47
|
|
|
90
|
-
|
|
48
|
+
The job is over when every ticket is done or skipped and every question is answered. While questions wait on the user, leave the run open and tell the user in chat which ones. Then run `paseo-progress finish "<one-line outcome>"`, and settle whatever it lists if it refuses.
|
|
91
49
|
|
|
92
50
|
Done when `show` says Finished with the right outcome.
|