@deskwork/studio 0.10.1 → 0.11.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/lib/editorial-skills-catalogue.d.ts +15 -1
- package/dist/lib/editorial-skills-catalogue.d.ts.map +1 -1
- package/dist/lib/editorial-skills-catalogue.js +66 -59
- package/dist/lib/editorial-skills-catalogue.js.map +1 -1
- package/dist/lib/entry-resolver.d.ts +22 -0
- package/dist/lib/entry-resolver.d.ts.map +1 -0
- package/dist/lib/entry-resolver.js +42 -0
- package/dist/lib/entry-resolver.js.map +1 -0
- package/dist/lib/stage-affordances.d.ts +31 -0
- package/dist/lib/stage-affordances.d.ts.map +1 -0
- package/dist/lib/stage-affordances.js +37 -0
- package/dist/lib/stage-affordances.js.map +1 -0
- package/dist/pages/dashboard/affordances.d.ts +41 -0
- package/dist/pages/dashboard/affordances.d.ts.map +1 -0
- package/dist/pages/dashboard/affordances.js +87 -0
- package/dist/pages/dashboard/affordances.js.map +1 -0
- package/dist/pages/dashboard/affordances.ts +95 -0
- package/dist/pages/dashboard/data.d.ts +24 -0
- package/dist/pages/dashboard/data.d.ts.map +1 -0
- package/dist/pages/dashboard/data.js +49 -0
- package/dist/pages/dashboard/data.js.map +1 -0
- package/dist/pages/dashboard/data.ts +56 -0
- package/dist/pages/dashboard/header.d.ts +13 -0
- package/dist/pages/dashboard/header.d.ts.map +1 -0
- package/dist/pages/dashboard/header.js +70 -0
- package/dist/pages/dashboard/header.js.map +1 -0
- package/dist/pages/dashboard/header.ts +80 -0
- package/dist/pages/dashboard/section.d.ts +37 -0
- package/dist/pages/dashboard/section.d.ts.map +1 -0
- package/dist/pages/dashboard/section.js +117 -0
- package/dist/pages/dashboard/section.js.map +1 -0
- package/dist/pages/dashboard/section.ts +132 -0
- package/dist/pages/dashboard.d.ts +30 -21
- package/dist/pages/dashboard.d.ts.map +1 -1
- package/dist/pages/dashboard.js +34 -799
- package/dist/pages/dashboard.js.map +1 -1
- package/dist/pages/dashboard.ts +44 -980
- package/dist/pages/entry-review.d.ts +25 -0
- package/dist/pages/entry-review.d.ts.map +1 -0
- package/dist/pages/entry-review.js +148 -0
- package/dist/pages/entry-review.js.map +1 -0
- package/dist/pages/entry-review.ts +185 -0
- package/dist/pages/help.d.ts +10 -5
- package/dist/pages/help.d.ts.map +1 -1
- package/dist/pages/help.js +113 -99
- package/dist/pages/help.js.map +1 -1
- package/dist/pages/help.ts +113 -99
- package/dist/pages/index.d.ts +13 -1
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +39 -24
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/index.ts +43 -27
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +23 -3
- package/dist/server.js.map +1 -1
- package/package.json +4 -4
package/dist/pages/help.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The Compositor's Manual — `/dev/editorial-help`.
|
|
3
3
|
*
|
|
4
4
|
* Static (read-only) operator manual. Renders six sections:
|
|
5
|
-
* I — the working model (
|
|
5
|
+
* I — the working model (eight-stage pipeline + universal verbs)
|
|
6
6
|
* II — three tracks (longform / shortform / distribution)
|
|
7
7
|
* III — the skill catalogue (specimen grid)
|
|
8
8
|
* IV — the studio surfaces, described
|
|
@@ -14,10 +14,15 @@
|
|
|
14
14
|
* `editorial-skills-catalogue.ts` so a single edit shows up here, in
|
|
15
15
|
* any future docs generator, and in any CLI inventory.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* Pipeline-redesign vocabulary (Phase 6, Task 37): the longform model
|
|
18
|
+
* is the entry-centric eight-stage pipeline (Ideas → Planned →
|
|
19
|
+
* Outlining → Drafting → Final → Published; Blocked / Cancelled
|
|
20
|
+
* off-pipeline) operated by universal verbs (`/deskwork:add`,
|
|
21
|
+
* `/deskwork:iterate`, `/deskwork:approve`, `/deskwork:publish`,
|
|
22
|
+
* `/deskwork:block`, `/deskwork:cancel`, `/deskwork:induct`). The
|
|
23
|
+
* stage-named skills of the prior model (`plan`, `outline`, `draft`,
|
|
24
|
+
* `pause`, `resume`, `review-start`, `review-cancel`) are retired.
|
|
25
|
+
* Shortform + distribution still use the workflow-object model.
|
|
21
26
|
*/
|
|
22
27
|
import { KIND_LABEL, SKILLS_SORTED, } from "../lib/editorial-skills-catalogue.js";
|
|
23
28
|
import { html, unsafe } from "./html.js";
|
|
@@ -37,27 +42,27 @@ function renderCover(ctx, now) {
|
|
|
37
42
|
return unsafe(html `
|
|
38
43
|
<header class="er-pagehead er-pagehead--centered eh-cover">
|
|
39
44
|
<p class="er-pagehead__kicker eh-cover-kicker">
|
|
40
|
-
Vol.
|
|
45
|
+
Vol. 02 <span class="dot">·</span> Manual <span class="dot">·</span> Internal — for operators
|
|
41
46
|
</p>
|
|
42
47
|
<h1 class="er-pagehead__title eh-cover-title">
|
|
43
48
|
The Compositor's <em>Manual</em>
|
|
44
49
|
</h1>
|
|
45
50
|
<p class="er-pagehead__deck eh-cover-dek">
|
|
46
|
-
Everything you need to move a thought from notebook to published dispatch without asking a colleague. The
|
|
51
|
+
Everything you need to move a thought from notebook to published dispatch without asking a colleague. The eight-stage pipeline, the universal verbs, the entry sidecar that holds the truth, and the desk where you watch the whole thing happen.
|
|
47
52
|
</p>
|
|
48
53
|
<p class="er-pagehead__imprint eh-imprint">
|
|
49
54
|
<strong>Sites</strong><span>${sitesInline || ctx.projectRoot}</span>
|
|
50
55
|
<span class="sep">§</span>
|
|
51
56
|
<strong>Issued</strong><span>${formatIssueDate(now)}</span>
|
|
52
57
|
<span class="sep">§</span>
|
|
53
|
-
<strong>Revision</strong><span>
|
|
58
|
+
<strong>Revision</strong><span>2.0</span>
|
|
54
59
|
<span class="sep">§</span>
|
|
55
60
|
<strong>Desk</strong><a href="/dev/editorial-studio">/dev/editorial-studio</a>
|
|
56
61
|
</p>
|
|
57
62
|
</header>`);
|
|
58
63
|
}
|
|
59
64
|
const TOC_ENTRIES = [
|
|
60
|
-
{ id: 'sec-model', num: '§ I', title: 'The working model —
|
|
65
|
+
{ id: 'sec-model', num: '§ I', title: 'The working model — pipeline and verbs', page: 'p. 01' },
|
|
61
66
|
{ id: 'sec-tracks', num: '§ II', title: 'Three tracks — longform, shortform, distribution', page: 'p. 02' },
|
|
62
67
|
{ id: 'sec-catalogue', num: '§ III', title: 'The skills, alphabetised', page: 'p. 03' },
|
|
63
68
|
{ id: 'sec-studio', num: '§ IV', title: 'The Editorial Studio, described', page: 'p. 08' },
|
|
@@ -77,42 +82,53 @@ function renderModelSection() {
|
|
|
77
82
|
<header class="eh-section-head">
|
|
78
83
|
<span class="eh-section-num">§ I</span>
|
|
79
84
|
<h2 class="eh-section-title">The working model</h2>
|
|
80
|
-
<span class="eh-section-sig">
|
|
85
|
+
<span class="eh-section-sig">Pipeline · Verbs · Sidecar</span>
|
|
81
86
|
</header>
|
|
82
87
|
<p class="eh-lead">
|
|
83
|
-
|
|
88
|
+
One state machine, six stages on the line, two off the line. Each entry has a sidecar JSON file at <code>.deskwork/entries/<uuid>.json</code> that holds its current stage, its per-stage iteration counter, and its history. The calendar markdown (<code>calendar.md</code>) is regenerated from sidecars — the sidecar is the source of truth, the markdown is the rendered view.
|
|
84
89
|
</p>
|
|
85
|
-
<div class="eh-state-diagram" aria-label="
|
|
86
|
-
<span class="eh-state-label">Fig. 1 —
|
|
90
|
+
<div class="eh-state-diagram" aria-label="Eight-stage pipeline">
|
|
91
|
+
<span class="eh-state-label">Fig. 1 — On-pipeline stages (forward-only)</span>
|
|
87
92
|
<div class="eh-stage-chain">
|
|
88
|
-
<div class="eh-stage-box"><span class="num">01</span><div class="ornament">◇</div><div class="name">Ideas</div><div class="hint">
|
|
93
|
+
<div class="eh-stage-box"><span class="num">01</span><div class="ornament">◇</div><div class="name">Ideas</div><div class="hint">idea.md</div></div>
|
|
89
94
|
<div class="eh-stage-arrow">→</div>
|
|
90
|
-
<div class="eh-stage-box"><span class="num">02</span><div class="ornament">§</div><div class="name">Planned</div><div class="hint">
|
|
95
|
+
<div class="eh-stage-box"><span class="num">02</span><div class="ornament">§</div><div class="name">Planned</div><div class="hint">plan.md</div></div>
|
|
91
96
|
<div class="eh-stage-arrow">→</div>
|
|
92
|
-
<div class="eh-stage-box"><span class="num">03</span><div class="ornament">✎</div><div class="name">
|
|
97
|
+
<div class="eh-stage-box"><span class="num">03</span><div class="ornament">✎</div><div class="name">Outlining</div><div class="hint">outline.md</div></div>
|
|
93
98
|
<div class="eh-stage-arrow">→</div>
|
|
94
|
-
<div class="eh-stage-box"><span class="num">04</span><div class="ornament"
|
|
99
|
+
<div class="eh-stage-box"><span class="num">04</span><div class="ornament">¶</div><div class="name">Drafting</div><div class="hint">index.md</div></div>
|
|
95
100
|
<div class="eh-stage-arrow">→</div>
|
|
96
|
-
<div class="eh-stage-box"><span class="num">05</span><div class="ornament"
|
|
101
|
+
<div class="eh-stage-box"><span class="num">05</span><div class="ornament">※</div><div class="name">Final</div><div class="hint">index.md</div></div>
|
|
102
|
+
<div class="eh-stage-arrow">→</div>
|
|
103
|
+
<div class="eh-stage-box"><span class="num">06</span><div class="ornament">✓</div><div class="name">Published</div><div class="hint">live</div></div>
|
|
97
104
|
</div>
|
|
98
|
-
<p class="eh-state-caption">Forward-only.
|
|
105
|
+
<p class="eh-state-caption">Forward-only on the pipeline. Each stage has one primary artifact; <code>/deskwork:approve</code> graduates the entry by exactly one stage and seeds the next-stage file from the just-approved one.</p>
|
|
99
106
|
</div>
|
|
100
|
-
<div class="eh-state-diagram" aria-label="
|
|
101
|
-
<span class="eh-state-label">Fig. 2 —
|
|
107
|
+
<div class="eh-state-diagram" aria-label="Off-pipeline stages">
|
|
108
|
+
<span class="eh-state-label">Fig. 2 — Off-pipeline (parking lots)</span>
|
|
109
|
+
<div class="eh-stage-chain">
|
|
110
|
+
<div class="eh-stage-box"><span class="num">⊘</span><div class="ornament">∥</div><div class="name">Blocked</div><div class="hint">resumable</div></div>
|
|
111
|
+
<div class="eh-stage-arrow">⇄</div>
|
|
112
|
+
<div class="eh-stage-box"><span class="num">×</span><div class="ornament">⊗</div><div class="name">Cancelled</div><div class="hint">abandoned</div></div>
|
|
113
|
+
</div>
|
|
114
|
+
<p class="eh-state-caption"><em>Blocked</em> is a process flag: out of pipeline, work paused, resumable. <em>Cancelled</em> is a semantic flag: intent abandoned, rare resume. Both record <code>priorStage</code> so <code>/deskwork:induct</code> can return the entry where it left off, with iteration counters preserved.</p>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="eh-state-diagram" aria-label="Universal verbs">
|
|
117
|
+
<span class="eh-state-label">Fig. 3 — The universal verbs</span>
|
|
102
118
|
<div class="eh-review-loop">
|
|
103
|
-
<div class="loop-node"
|
|
119
|
+
<div class="loop-node">/deskwork:add</div>
|
|
104
120
|
<div class="loop-arrow">→</div>
|
|
105
|
-
<div class="loop-node"
|
|
121
|
+
<div class="loop-node">/deskwork:iterate</div>
|
|
106
122
|
<div class="loop-arrow">⇄</div>
|
|
107
|
-
<div class="loop-node">
|
|
123
|
+
<div class="loop-node">operator review</div>
|
|
108
124
|
<div class="loop-arrow" style="grid-column: 3;">↓</div>
|
|
109
|
-
<div class="loop-node terminal-ok" style="grid-column: 4;"
|
|
125
|
+
<div class="loop-node terminal-ok" style="grid-column: 4;">/deskwork:approve</div>
|
|
110
126
|
<div class="loop-arrow" style="grid-column: 5;">→</div>
|
|
111
|
-
<div class="loop-node terminal-ok" style="grid-row: 3; grid-column: 1;"
|
|
127
|
+
<div class="loop-node terminal-ok" style="grid-row: 3; grid-column: 1;">/deskwork:publish</div>
|
|
112
128
|
<div class="loop-arrow" style="grid-row: 3; grid-column: 2;">←</div>
|
|
113
|
-
<div class="loop-node terminal-x" style="grid-row: 3; grid-column: 3 / span 3;"
|
|
129
|
+
<div class="loop-node terminal-x" style="grid-row: 3; grid-column: 3 / span 3;">/deskwork:block · /deskwork:cancel · /deskwork:induct</div>
|
|
114
130
|
</div>
|
|
115
|
-
<p class="eh-state-caption">
|
|
131
|
+
<p class="eh-state-caption">Same verbs at every stage. <code>iterate</code> revises the current-stage artifact. <code>approve</code> advances by exactly one stage — there is no “approve but stay.” <code>block</code> and <code>cancel</code> step off the line; <code>induct</code> returns an entry to the pipeline (defaults: <em>Blocked/Cancelled</em> → <code>priorStage</code>; <em>Final</em> → <em>Drafting</em>; any other on-pipeline stage requires explicit <code>--to</code>).</p>
|
|
116
132
|
</div>
|
|
117
133
|
</section>`);
|
|
118
134
|
}
|
|
@@ -124,20 +140,19 @@ function renderTracksSection() {
|
|
|
124
140
|
<h2 class="eh-section-title">Three tracks</h2>
|
|
125
141
|
<span class="eh-section-sig">Longform · Shortform · Distribution</span>
|
|
126
142
|
</header>
|
|
127
|
-
<p>Each track is a canonical run order for its kind of content. The studio surfaces the next move per
|
|
143
|
+
<p>Each track is a canonical run order for its kind of content. The studio surfaces the next move per entry; these lists are for when you are driving Claude Code directly.</p>
|
|
128
144
|
<div class="eh-tracks">
|
|
129
145
|
<div class="eh-track">
|
|
130
146
|
<p class="eh-track-title">Longform</p>
|
|
131
|
-
<p class="eh-track-sub">Blog posts · dispatches</p>
|
|
147
|
+
<p class="eh-track-sub">Blog posts · dispatches · docs</p>
|
|
132
148
|
<ol class="eh-track-steps">
|
|
133
|
-
<li>Capture the idea.<code>/deskwork:add "Title"</code></li>
|
|
134
|
-
<li>
|
|
135
|
-
<li>
|
|
136
|
-
<li>
|
|
137
|
-
<li>
|
|
138
|
-
<li>
|
|
139
|
-
<li>Approve
|
|
140
|
-
<li>Mark published. Then commit + push by hand.<code>/deskwork:publish <slug></code></li>
|
|
149
|
+
<li>Capture the idea — mints sidecar + idea.md.<code>/deskwork:add "Title"</code></li>
|
|
150
|
+
<li>Iterate the idea until it has shape.<code>/deskwork:iterate <uuid></code></li>
|
|
151
|
+
<li>Approve to graduate Ideas → Planned. Seeds plan.md.<code>/deskwork:approve <uuid></code></li>
|
|
152
|
+
<li>Iterate the plan; approve when set. Seeds outline.md.<code>/deskwork:iterate · /deskwork:approve</code></li>
|
|
153
|
+
<li>Iterate the outline; approve when set. Seeds index.md (Drafting).<code>/deskwork:iterate · /deskwork:approve</code></li>
|
|
154
|
+
<li>Iterate the draft; approve when set. Stage becomes Final.<code>/deskwork:iterate · /deskwork:approve</code></li>
|
|
155
|
+
<li>Approve again to publish. Stamps datePublished.<code>/deskwork:publish <uuid></code><span class="note">Then commit + push by hand.</span></li>
|
|
141
156
|
</ol>
|
|
142
157
|
</div>
|
|
143
158
|
<div class="eh-track">
|
|
@@ -215,24 +230,24 @@ function renderStudioSection() {
|
|
|
215
230
|
<div class="eh-panel">
|
|
216
231
|
<p class="eh-panel-head">Primary surfaces</p>
|
|
217
232
|
<h4>Calendar panels</h4>
|
|
218
|
-
<p>
|
|
233
|
+
<p>Six on-pipeline columns: <em>Ideas · Planned · Outlining · Drafting · Final · Published</em>, plus parking-lot panels for <em>Blocked</em> and <em>Cancelled</em>. Each row shows slug, title, the per-stage iteration counter (<code>iterationByStage</code>), a file-present dot for the current stage's primary artifact, and any review state.</p>
|
|
219
234
|
<h4>Next-move column</h4>
|
|
220
|
-
<p>Per row, the studio surfaces either a copy-to-clipboard command (for cognitive work that lives in Claude Code) or a one-click button (for mechanical transitions). <code>
|
|
235
|
+
<p>Per row, the studio surfaces either a copy-to-clipboard command (for cognitive work that lives in Claude Code) or a one-click button (for mechanical transitions). <code>approve →</code> calls <code>/deskwork:approve</code>. <code>publish →</code> calls <code>/deskwork:publish</code>. <code>block</code> / <code>cancel</code> / <code>induct</code> appear contextually.</p>
|
|
221
236
|
<h4>Shortform coverage matrix</h4>
|
|
222
|
-
<p>For each <em>Published</em>
|
|
237
|
+
<p>For each <em>Published</em> entry, a row of platform cells (reddit, linkedin, youtube, instagram). Shaded cells are covered by a DistributionRecord; empty cells surface the exact <code>/deskwork:shortform-start</code> command to copy.</p>
|
|
223
238
|
<h4>Voice-drift signal</h4>
|
|
224
|
-
<p>A small panel on the right
|
|
239
|
+
<p>A small panel on the right. Names the two voice-skill categories that are producing the most operator corrections. Shows once you have at least five terminal workflows on record.</p>
|
|
225
240
|
</div>
|
|
226
241
|
<div class="eh-panel">
|
|
227
242
|
<p class="eh-panel-head">Secondary surfaces</p>
|
|
228
|
-
<h4>
|
|
229
|
-
<p><code>/dev/editorial-review/<
|
|
243
|
+
<h4>Entry review</h4>
|
|
244
|
+
<p><code>/dev/editorial-review/entry/<uuid></code>. The current-stage artifact (idea.md, plan.md, outline.md, or index.md) renders inside the review surface. Select text for a margin note; double-click anywhere to edit the markdown in place; approve, iterate, block, or cancel from the fixed strip. The review is keyed by entry uuid, not workflow id.</p>
|
|
230
245
|
<h4>Shortform review</h4>
|
|
231
246
|
<p><code>/dev/editorial-review-shortform</code>. Cards grouped by platform. Each card has a version header, an editable textarea, and save · approve · iterate · reject controls.</p>
|
|
232
247
|
<h4>Keyboard</h4>
|
|
233
|
-
<p>In the studio: <kbd>1</kbd>–<kbd>
|
|
248
|
+
<p>In the studio: <kbd>1</kbd>–<kbd>6</kbd> jump to on-pipeline columns. In an entry review: <kbd>e</kbd> / double-click toggles edit mode; <kbd>a</kbd> approves (graduates by one stage); <kbd>i</kbd> iterates; <kbd>b</kbd> blocks; <kbd>j</kbd>/<kbd>k</kbd> step through margin notes; <kbd>?</kbd> shows a full shortcuts overlay.</p>
|
|
234
249
|
<h4>Polling</h4>
|
|
235
|
-
<p>Both routes poll every 8–10 seconds when idle. If the agent runs <code>/deskwork:iterate</code> in Claude Code, a new
|
|
250
|
+
<p>Both routes poll every 8–10 seconds when idle. If the agent runs <code>/deskwork:iterate</code> in Claude Code, a new version of the current-stage artifact shows up in the browser without a reload.</p>
|
|
236
251
|
</div>
|
|
237
252
|
</div>
|
|
238
253
|
</section>`);
|
|
@@ -241,42 +256,32 @@ const RUNTHROUGH_STEPS = [
|
|
|
241
256
|
{
|
|
242
257
|
title: 'Capture an idea',
|
|
243
258
|
op: 'terminal',
|
|
244
|
-
body: unsafe('<p>You have a title in mind. Run <code>/deskwork:add "Your Title"</code>.
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
title: 'Promote to Planned',
|
|
248
|
-
op: 'terminal',
|
|
249
|
-
body: unsafe('<p>The idea has shape. Run <code>/deskwork:plan <slug></code>. You are prompted for target keywords and topic tags; they land on the calendar row. The studio\'s Planned column now shows it with a tag strip.</p>'),
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
title: 'Scaffold the draft',
|
|
253
|
-
op: 'studio or terminal',
|
|
254
|
-
body: unsafe('<p>Click the <code>scaffold →</code> button on the row, or run <code>/deskwork:draft --site <site> <slug></code>. The blog file appears with frontmatter filled in, and the entry moves to <em>Drafting</em>.</p>'),
|
|
259
|
+
body: unsafe('<p>You have a title in mind. Run <code>/deskwork:add "Your Title"</code>. The sidecar lands at <code>.deskwork/entries/<uuid>.json</code> with stage <em>Ideas</em>; <code>idea.md</code> is initialised; <code>calendar.md</code> regenerates from sidecars.</p>'),
|
|
255
260
|
},
|
|
256
261
|
{
|
|
257
|
-
title: '
|
|
258
|
-
op: '
|
|
259
|
-
body: unsafe('<p>
|
|
262
|
+
title: 'Iterate the idea',
|
|
263
|
+
op: 'browser then terminal',
|
|
264
|
+
body: unsafe('<p>Open <code>/dev/editorial-review/entry/<uuid></code>. Leave margin notes on <code>idea.md</code>. Click <em>Iterate</em>; back in Claude Code run <code>/deskwork:iterate <uuid></code>. The agent revises using the site voice, writes the next version, bumps <code>iterationByStage.Ideas</code>.</p>'),
|
|
260
265
|
},
|
|
261
266
|
{
|
|
262
|
-
title: '
|
|
263
|
-
op: 'terminal',
|
|
264
|
-
body: unsafe('<p
|
|
267
|
+
title: 'Approve into Planned',
|
|
268
|
+
op: 'browser or terminal',
|
|
269
|
+
body: unsafe('<p>Click <em>Approve</em> on the review surface or run <code>/deskwork:approve <uuid></code>. Stage graduates to <em>Planned</em>. <code>plan.md</code> is seeded from <code>idea.md</code>; <code>iterationByStage.Planned</code> starts at 0.</p>'),
|
|
265
270
|
},
|
|
266
271
|
{
|
|
267
|
-
title: '
|
|
268
|
-
op: 'browser',
|
|
269
|
-
body: unsafe('<p>
|
|
272
|
+
title: 'Plan, then outline, then draft',
|
|
273
|
+
op: 'browser then terminal',
|
|
274
|
+
body: unsafe('<p>Same loop at each stage. <code>/deskwork:iterate</code> revises the current-stage artifact (<code>plan.md</code>, then <code>outline.md</code>, then <code>index.md</code>). <code>/deskwork:approve</code> graduates by exactly one stage. There is no “approve but stay.”</p>'),
|
|
270
275
|
},
|
|
271
276
|
{
|
|
272
|
-
title: '
|
|
273
|
-
op: 'browser
|
|
274
|
-
body: unsafe('<p>
|
|
277
|
+
title: 'Approve into Final',
|
|
278
|
+
op: 'browser or terminal',
|
|
279
|
+
body: unsafe('<p>When the Drafting <code>index.md</code> is good, approve once more. Stage becomes <em>Final</em>. The same <code>index.md</code> is the artifact at Final — Final is the “ready to publish” stage, not a separate file.</p>'),
|
|
275
280
|
},
|
|
276
281
|
{
|
|
277
|
-
title: '
|
|
278
|
-
op: 'browser
|
|
279
|
-
body: unsafe('<p>Click <
|
|
282
|
+
title: 'Publish',
|
|
283
|
+
op: 'browser or terminal',
|
|
284
|
+
body: unsafe('<p>Click <code>publish →</code> on the Final row, or run <code>/deskwork:publish <uuid></code>. Stage becomes <em>Published</em>; today\'s date is stamped as <code>datePublished</code>; <code>calendar.md</code> regenerates.</p>'),
|
|
280
285
|
},
|
|
281
286
|
{
|
|
282
287
|
title: 'Commit by hand',
|
|
@@ -284,9 +289,14 @@ const RUNTHROUGH_STEPS = [
|
|
|
284
289
|
body: unsafe('<p>The UI does not commit. Review the diff, commit and push when ready. This is deliberate — the operator holds the pen.</p>'),
|
|
285
290
|
},
|
|
286
291
|
{
|
|
287
|
-
title: '
|
|
288
|
-
op: '
|
|
289
|
-
body: unsafe('<p>
|
|
292
|
+
title: 'Park or abandon, when needed',
|
|
293
|
+
op: 'terminal',
|
|
294
|
+
body: unsafe('<p>Stuck on a source or a decision? <code>/deskwork:block <uuid> --reason "waiting on source"</code> moves the entry to <em>Blocked</em> with <code>priorStage</code> recorded. Done with it for good? <code>/deskwork:cancel <uuid></code>. Both preserve the sidecar and history; nothing is deleted.</p>'),
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
title: 'Induct back into the pipeline',
|
|
298
|
+
op: 'terminal',
|
|
299
|
+
body: unsafe('<p><code>/deskwork:induct <uuid></code> brings the entry back. From <em>Blocked</em> or <em>Cancelled</em>, the default destination is <code>priorStage</code>. From <em>Final</em>, the default is <em>Drafting</em>. From any other on-pipeline stage, you must pass <code>--to <stage></code> explicitly. <code>iterationByStage</code> is preserved — pick up where you left off.</p>'),
|
|
290
300
|
},
|
|
291
301
|
{
|
|
292
302
|
title: 'Cross-post',
|
|
@@ -296,7 +306,7 @@ const RUNTHROUGH_STEPS = [
|
|
|
296
306
|
{
|
|
297
307
|
title: 'Reconcile and reflect',
|
|
298
308
|
op: 'cadence',
|
|
299
|
-
body: unsafe('<p><code>/deskwork:
|
|
309
|
+
body: unsafe('<p><code>/deskwork:doctor</code> reports drift between sidecar truth and rendered <code>calendar.md</code>; <code>/deskwork:status</code> gives a compact roll-call. Feed comment-annotation observations back into the voice skills. The cycle compounds.</p>'),
|
|
300
310
|
},
|
|
301
311
|
];
|
|
302
312
|
function renderRunthroughSection() {
|
|
@@ -328,13 +338,13 @@ function renderReferenceSection() {
|
|
|
328
338
|
</header>
|
|
329
339
|
<div class="eh-reference">
|
|
330
340
|
<div class="eh-ref-block">
|
|
331
|
-
<h4>Keyboard —
|
|
341
|
+
<h4>Keyboard — entry review</h4>
|
|
332
342
|
<dl>
|
|
333
343
|
<dt><kbd>e</kbd> / dbl-click</dt><dd>toggle edit mode</dd>
|
|
334
344
|
<dt>select text</dt><dd>leave a margin note</dd>
|
|
335
|
-
<dt><kbd>a</kbd></dt><dd>approve
|
|
345
|
+
<dt><kbd>a</kbd></dt><dd>approve — graduates by one stage</dd>
|
|
336
346
|
<dt><kbd>i</kbd></dt><dd>iterate (hand off to Claude Code)</dd>
|
|
337
|
-
<dt><kbd>
|
|
347
|
+
<dt><kbd>b</kbd></dt><dd>block — out of pipeline, resumable</dd>
|
|
338
348
|
<dt><kbd>j</kbd> / <kbd>k</kbd></dt><dd>step through margin notes</dd>
|
|
339
349
|
<dt><kbd>?</kbd></dt><dd>shortcuts overlay</dd>
|
|
340
350
|
<dt><kbd>esc</kbd></dt><dd>close overlay or cancel comment</dd>
|
|
@@ -345,50 +355,54 @@ function renderReferenceSection() {
|
|
|
345
355
|
<dl>
|
|
346
356
|
<dt><kbd>1</kbd></dt><dd>jump to Ideas column</dd>
|
|
347
357
|
<dt><kbd>2</kbd></dt><dd>jump to Planned</dd>
|
|
348
|
-
<dt><kbd>3</kbd></dt><dd>jump to
|
|
349
|
-
<dt><kbd>4</kbd></dt><dd>jump to
|
|
350
|
-
<dt><kbd>5</kbd></dt><dd>jump to
|
|
358
|
+
<dt><kbd>3</kbd></dt><dd>jump to Outlining</dd>
|
|
359
|
+
<dt><kbd>4</kbd></dt><dd>jump to Drafting</dd>
|
|
360
|
+
<dt><kbd>5</kbd></dt><dd>jump to Final</dd>
|
|
361
|
+
<dt><kbd>6</kbd></dt><dd>jump to Published</dd>
|
|
351
362
|
</dl>
|
|
352
363
|
</div>
|
|
353
364
|
<div class="eh-ref-block eh-ref-block--stacked">
|
|
354
365
|
<h4>URL patterns</h4>
|
|
355
366
|
<dl>
|
|
356
367
|
<dt>/dev/editorial-studio</dt><dd>calendar desk</dd>
|
|
357
|
-
<dt>/dev/editorial-review/<
|
|
368
|
+
<dt>/dev/editorial-review/entry/<uuid></dt><dd>entry review (current-stage artifact)</dd>
|
|
358
369
|
<dt>/dev/editorial-review-shortform</dt><dd>shortform cards</dd>
|
|
359
370
|
<dt>/dev/editorial-help</dt><dd>this manual</dd>
|
|
360
371
|
</dl>
|
|
361
372
|
</div>
|
|
362
373
|
<div class="eh-ref-block">
|
|
363
|
-
<h4>
|
|
374
|
+
<h4>Stage transitions</h4>
|
|
364
375
|
<table class="eh-transitions">
|
|
365
|
-
<thead><tr><th>
|
|
376
|
+
<thead><tr><th>verb</th><th>effect</th></tr></thead>
|
|
366
377
|
<tbody>
|
|
367
|
-
<tr><td>
|
|
368
|
-
<tr><td>
|
|
369
|
-
<tr><td>
|
|
370
|
-
<tr><td>
|
|
371
|
-
<tr><td>
|
|
372
|
-
<tr><td>
|
|
378
|
+
<tr><td>add</td><td class="arrow">→ Ideas (mints sidecar + idea.md)</td></tr>
|
|
379
|
+
<tr><td>iterate</td><td class="arrow">→ same stage, next iteration</td></tr>
|
|
380
|
+
<tr><td>approve</td><td class="arrow">→ next stage by exactly one</td></tr>
|
|
381
|
+
<tr><td>publish</td><td class="arrow">Final → Published (stamps datePublished)</td></tr>
|
|
382
|
+
<tr><td>block</td><td class="arrow">→ Blocked (records priorStage)</td></tr>
|
|
383
|
+
<tr><td>cancel</td><td class="arrow">→ Cancelled (records priorStage)</td></tr>
|
|
384
|
+
<tr><td>induct</td><td class="arrow">Blocked/Cancelled → priorStage; Final → Drafting; otherwise --to <stage></td></tr>
|
|
373
385
|
</tbody>
|
|
374
386
|
</table>
|
|
375
387
|
</div>
|
|
376
388
|
<div class="eh-ref-block eh-ref-block--stacked">
|
|
377
389
|
<h4>File locations</h4>
|
|
378
390
|
<dl>
|
|
379
|
-
<dt>
|
|
380
|
-
<dt
|
|
381
|
-
<dt
|
|
382
|
-
<dt>
|
|
383
|
-
<dt
|
|
391
|
+
<dt>.deskwork/entries/<uuid>.json</dt><dd>entry sidecar — source of truth (stage, history, iterationByStage)</dd>
|
|
392
|
+
<dt>(per-site calendar — see config)</dt><dd>calendar.md — regenerated from sidecars; never edit by hand</dd>
|
|
393
|
+
<dt>(per-entry workspace — see config)</dt><dd>idea.md · plan.md · outline.md · index.md (one per stage)</dd>
|
|
394
|
+
<dt>.deskwork/review-journal/pipeline/</dt><dd>shortform workflow state, one JSON per id</dd>
|
|
395
|
+
<dt>.deskwork/review-journal/history/</dt><dd>shortform events (versions, states, comments)</dd>
|
|
396
|
+
<dt>.deskwork/{templates,prompts,doctor}/</dt><dd>per-project overrides — see <code>/deskwork:customize</code></dd>
|
|
384
397
|
</dl>
|
|
385
398
|
</div>
|
|
386
399
|
<div class="eh-ref-block">
|
|
387
400
|
<h4>First-run tripwires</h4>
|
|
388
401
|
<dl>
|
|
389
|
-
<dt>404 on /dev/*</dt><dd>the dev routes only run when <code>deskwork-studio</code> is up. Start it
|
|
390
|
-
<dt>
|
|
402
|
+
<dt>404 on /dev/*</dt><dd>the dev routes only run when <code>deskwork-studio</code> is up. Start it with the documented launch command.</dd>
|
|
403
|
+
<dt>nothing to review</dt><dd>capture an entry first: <code>/deskwork:add "Title"</code>, then visit <code>/dev/editorial-review/entry/<uuid></code>.</dd>
|
|
391
404
|
<dt>iterate doesn't trigger</dt><dd>the agent has to run <code>/deskwork:iterate</code>. The browser button just marks the workflow; Claude does the writing.</dd>
|
|
405
|
+
<dt>calendar.md drift</dt><dd>run <code>/deskwork:doctor</code>. The sidecar is truth — calendar.md is regenerated from it.</dd>
|
|
392
406
|
</dl>
|
|
393
407
|
</div>
|
|
394
408
|
</div>
|
|
@@ -397,7 +411,7 @@ function renderReferenceSection() {
|
|
|
397
411
|
function renderColophon() {
|
|
398
412
|
return unsafe(html `
|
|
399
413
|
<footer class="eh-colophon">
|
|
400
|
-
<span>End of manual</span><span>·</span><span>revision
|
|
414
|
+
<span>End of manual</span><span>·</span><span>revision 2.0</span><span>·</span><em>The cycle compounds.</em><span>·</span>
|
|
401
415
|
<a href="/dev/editorial-studio" style="color: inherit;">back to the studio</a>
|
|
402
416
|
</footer>`);
|
|
403
417
|
}
|
package/dist/pages/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"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"}
|