@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.
Files changed (56) hide show
  1. package/dist/lib/editorial-skills-catalogue.d.ts +15 -1
  2. package/dist/lib/editorial-skills-catalogue.d.ts.map +1 -1
  3. package/dist/lib/editorial-skills-catalogue.js +66 -59
  4. package/dist/lib/editorial-skills-catalogue.js.map +1 -1
  5. package/dist/lib/entry-resolver.d.ts +22 -0
  6. package/dist/lib/entry-resolver.d.ts.map +1 -0
  7. package/dist/lib/entry-resolver.js +42 -0
  8. package/dist/lib/entry-resolver.js.map +1 -0
  9. package/dist/lib/stage-affordances.d.ts +31 -0
  10. package/dist/lib/stage-affordances.d.ts.map +1 -0
  11. package/dist/lib/stage-affordances.js +37 -0
  12. package/dist/lib/stage-affordances.js.map +1 -0
  13. package/dist/pages/dashboard/affordances.d.ts +41 -0
  14. package/dist/pages/dashboard/affordances.d.ts.map +1 -0
  15. package/dist/pages/dashboard/affordances.js +87 -0
  16. package/dist/pages/dashboard/affordances.js.map +1 -0
  17. package/dist/pages/dashboard/affordances.ts +95 -0
  18. package/dist/pages/dashboard/data.d.ts +24 -0
  19. package/dist/pages/dashboard/data.d.ts.map +1 -0
  20. package/dist/pages/dashboard/data.js +49 -0
  21. package/dist/pages/dashboard/data.js.map +1 -0
  22. package/dist/pages/dashboard/data.ts +56 -0
  23. package/dist/pages/dashboard/header.d.ts +13 -0
  24. package/dist/pages/dashboard/header.d.ts.map +1 -0
  25. package/dist/pages/dashboard/header.js +70 -0
  26. package/dist/pages/dashboard/header.js.map +1 -0
  27. package/dist/pages/dashboard/header.ts +80 -0
  28. package/dist/pages/dashboard/section.d.ts +37 -0
  29. package/dist/pages/dashboard/section.d.ts.map +1 -0
  30. package/dist/pages/dashboard/section.js +117 -0
  31. package/dist/pages/dashboard/section.js.map +1 -0
  32. package/dist/pages/dashboard/section.ts +132 -0
  33. package/dist/pages/dashboard.d.ts +30 -21
  34. package/dist/pages/dashboard.d.ts.map +1 -1
  35. package/dist/pages/dashboard.js +34 -799
  36. package/dist/pages/dashboard.js.map +1 -1
  37. package/dist/pages/dashboard.ts +44 -980
  38. package/dist/pages/entry-review.d.ts +25 -0
  39. package/dist/pages/entry-review.d.ts.map +1 -0
  40. package/dist/pages/entry-review.js +148 -0
  41. package/dist/pages/entry-review.js.map +1 -0
  42. package/dist/pages/entry-review.ts +185 -0
  43. package/dist/pages/help.d.ts +10 -5
  44. package/dist/pages/help.d.ts.map +1 -1
  45. package/dist/pages/help.js +113 -99
  46. package/dist/pages/help.js.map +1 -1
  47. package/dist/pages/help.ts +113 -99
  48. package/dist/pages/index.d.ts +13 -1
  49. package/dist/pages/index.d.ts.map +1 -1
  50. package/dist/pages/index.js +39 -24
  51. package/dist/pages/index.js.map +1 -1
  52. package/dist/pages/index.ts +43 -27
  53. package/dist/server.d.ts.map +1 -1
  54. package/dist/server.js +23 -3
  55. package/dist/server.js.map +1 -1
  56. package/package.json +4 -4
@@ -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 (calendar stages + review states diagrams)
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
- * Ported from `editorial-help.astro`. The audiocontrol original
18
- * referenced the two hardcoded sites (`audiocontrol.org ·
19
- * editorialcontrol.org`) in the cover imprint; here we render the
20
- * configured site hosts instead.
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. 01 <span class="dot">·</span> Manual <span class="dot">·</span> Internal — for operators
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 editorial calendar, the review pipelines, the skills that drive them, and the desk where you watch the whole thing happen.
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>1.0</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 — stages and states', page: 'p. 01' },
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">Stages · States</span>
85
+ <span class="eh-section-sig">Pipeline · Verbs · Sidecar</span>
81
86
  </header>
82
87
  <p class="eh-lead">
83
- Two state machines run in parallel. The <em>calendar stage</em> tracks where a piece of content lives in its lifecycle. The <em>review pipeline</em> tracks whether a specific draft version has been annotated, revised, and approved. They are orthogonal — a piece in <em>Drafting</em> may have three review workflows open against three different draft files, and a piece can reach <em>Published</em> without ever having been through review.
88
+ One state machine, six stages on the line, two off the line. Each entry has a sidecar JSON file at <code>.deskwork/entries/&lt;uuid&gt;.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="Calendar stages">
86
- <span class="eh-state-label">Fig. 1 — Calendar stages</span>
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">captured</div></div>
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">keywords</div></div>
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">Drafting</div><div class="hint">writing</div></div>
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">※</div><div class="name">Review</div><div class="hint">iteration</div></div>
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">✓</div><div class="name">Published</div><div class="hint">live</div></div>
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. An entry can be paused at any stage but does not walk backwards.</p>
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="Review pipeline states">
101
- <span class="eh-state-label">Fig. 2 — Review pipeline (per draft, orthogonal)</span>
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">open</div>
119
+ <div class="loop-node">/deskwork:add</div>
104
120
  <div class="loop-arrow">→</div>
105
- <div class="loop-node">in-review</div>
121
+ <div class="loop-node">/deskwork:iterate</div>
106
122
  <div class="loop-arrow">⇄</div>
107
- <div class="loop-node">iterating</div>
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;">approved</div>
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;">applied</div>
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;">cancelled (any state here)</div>
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">Every transition is validated by the pipeline's <code>VALID_TRANSITIONS</code>. <em>applied</em> means the draft has been written to its destination file; <em>cancelled</em> means the workflow was abandoned with the source untouched.</p>
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 track and per entry; these lists are for when you are driving Claude Code directly.</p>
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>Promote and set keywords.<code>/deskwork:plan &lt;slug&gt;</code></li>
135
- <li>Scaffold the draft file.<code>/deskwork:draft &lt;slug&gt;</code><span class="note">or click "scaffold" in the studio.</span></li>
136
- <li>Write the prose. No skill; this is the human doing the work.</li>
137
- <li>Open a review workflow.<code>/deskwork:review-start &lt;slug&gt;</code></li>
138
- <li>Annotate in the browser, then iterate.<code>/deskwork:iterate</code></li>
139
- <li>Approve writes to the destination file.<code>/deskwork:approve</code></li>
140
- <li>Mark published. Then commit + push by hand.<code>/deskwork:publish &lt;slug&gt;</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 &lt;uuid&gt;</code></li>
151
+ <li>Approve to graduate Ideas → Planned. Seeds plan.md.<code>/deskwork:approve &lt;uuid&gt;</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 &lt;uuid&gt;</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>Five columns: <em>Ideas · Planned · Drafting · Review · Published</em>. Each row shows slug, title, stage-specific metadata (keywords for Planned; dates for Published), a file-present dot, and the active review workflow stamp when one exists.</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>scaffold →</code> calls <code>/deskwork:draft</code>. <code>publish →</code> calls <code>/deskwork:publish</code>.</p>
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> blog, 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>
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, backed by <code>/deskwork:review-report</code>. 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>
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>Longform review</h4>
229
- <p><code>/dev/editorial-review/&lt;slug&gt;</code>. The draft renders inside the review surface. Select text for a margin note; double-click anywhere to edit the markdown in place; approve, iterate, or reject from the fixed strip.</p>
243
+ <h4>Entry review</h4>
244
+ <p><code>/dev/editorial-review/entry/&lt;uuid&gt;</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>5</kbd> jump to stage columns. In a longform review: <kbd>e</kbd> / double-click toggles edit mode; <kbd>a</kbd> approves; <kbd>i</kbd> iterates; <kbd>r</kbd> rejects; <kbd>j</kbd>/<kbd>k</kbd> step through margin notes; <kbd>?</kbd> shows a full shortcuts overlay.</p>
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 draft version shows up in the browser without a reload.</p>
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>. A row lands in <em>Ideas</em>. Slug is generated; calendar is committed-able.</p>'),
245
- },
246
- {
247
- title: 'Promote to Planned',
248
- op: 'terminal',
249
- body: unsafe('<p>The idea has shape. Run <code>/deskwork:plan &lt;slug&gt;</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 &lt;site&gt; &lt;slug&gt;</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/&lt;uuid&gt;.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: 'Write the prose',
258
- op: 'editor',
259
- body: unsafe('<p>This is the human half. Open the scaffolded file and write the dispatch. The voice skill is not invoked yet it comes in at review time.</p>'),
262
+ title: 'Iterate the idea',
263
+ op: 'browser then terminal',
264
+ body: unsafe('<p>Open <code>/dev/editorial-review/entry/&lt;uuid&gt;</code>. Leave margin notes on <code>idea.md</code>. Click <em>Iterate</em>; back in Claude Code run <code>/deskwork:iterate &lt;uuid&gt;</code>. The agent revises using the site voice, writes the next version, bumps <code>iterationByStage.Ideas</code>.</p>'),
260
265
  },
261
266
  {
262
- title: 'Open the review workflow',
263
- op: 'terminal',
264
- body: unsafe('<p><code>/deskwork:review-start &lt;slug&gt;</code> prints the dev URL: <code>/dev/editorial-review/&lt;workflow-id&gt;</code>. The draft renders inside the review chrome. State: <em>open</em>.</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 &lt;uuid&gt;</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: 'Annotate in the browser',
268
- op: 'browser',
269
- body: unsafe('<p>Select text the <code>Mark</code> pencil appears category dropdown type a note → <em>Leave mark</em>. Repeat for each correction. The state flips to <em>in-review</em> on your first action.</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: 'Iterate',
273
- op: 'browser then terminal',
274
- body: unsafe('<p>Click <em>Iterate</em>. State becomes <em>iterating</em>. Back in Claude Code, run <code>/deskwork:iterate</code>. The agent revises using the site voice skill, writes v2 to the journal, flips back to <em>in-review</em>. Polling surfaces v2 in the browser without a reload.</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: 'Approve and write',
278
- op: 'browser then terminal',
279
- body: unsafe('<p>Click <em>Approve</em>. State becomes <em>approved</em>. Run <code>/deskwork:approve</code>. The approved version is written to the blog file on disk; state becomes <em>applied</em>.</p>'),
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 &lt;uuid&gt;</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: 'Mark published',
288
- op: 'studio or terminal',
289
- body: unsafe('<p>Click <code>publish →</code> on the Drafting or Review row, or run <code>/deskwork:publish &lt;slug&gt;</code>. The entry moves to <em>Published</em>; today\'s date is stamped as <code>datePublished</code>.</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 &lt;uuid&gt; --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 &lt;uuid&gt;</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 &lt;uuid&gt;</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 &lt;stage&gt;</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:review-report</code> shows which voice-skill principles are drifting. Feed the observations back into the voice skills. The cycle compounds.</p>'),
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 — longform review</h4>
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 the draft</dd>
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>r</kbd></dt><dd>rejectcancels the workflow</dd>
347
+ <dt><kbd>b</kbd></dt><dd>blockout 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 Drafting</dd>
349
- <dt><kbd>4</kbd></dt><dd>jump to Review</dd>
350
- <dt><kbd>5</kbd></dt><dd>jump to Published</dd>
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/&lt;slug&gt;</dt><dd>longform review</dd>
368
+ <dt>/dev/editorial-review/entry/&lt;uuid&gt;</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>Review state transitions</h4>
374
+ <h4>Stage transitions</h4>
364
375
  <table class="eh-transitions">
365
- <thead><tr><th>from</th><th>to</th></tr></thead>
376
+ <thead><tr><th>verb</th><th>effect</th></tr></thead>
366
377
  <tbody>
367
- <tr><td>open</td><td class="arrow">→ in-review, cancelled</td></tr>
368
- <tr><td>in-review</td><td class="arrow">→ iterating, approved, cancelled</td></tr>
369
- <tr><td>iterating</td><td class="arrow">→ in-review, cancelled</td></tr>
370
- <tr><td>approved</td><td class="arrow">→ applied, cancelled</td></tr>
371
- <tr><td>applied</td><td>— terminal</td></tr>
372
- <tr><td>cancelled</td><td>— terminal</td></tr>
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 &lt;stage&gt;</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>(per-site calendarsee config)</dt><dd>the single calendar file per site</dd>
380
- <dt>.deskwork/review-journal/pipeline/</dt><dd>per-workflow review state, one JSON per id</dd>
381
- <dt>.deskwork/review-journal/history/</dt><dd>every event (versions, states, comments)</dd>
382
- <dt>(blog content dir see config)</dt><dd>blog post source directory</dd>
383
- <dt>plugins/&lt;plugin&gt;/skills/&lt;name&gt;/</dt><dd>one skill = one directory</dd>
391
+ <dt>.deskwork/entries/&lt;uuid&gt;.json</dt><dd>entry sidecarsource 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: <code>npx tsx packages/studio/src/server.ts</code>.</dd>
390
- <dt>no galley to review</dt><dd>start one with <code>/deskwork:review-start --site &lt;site&gt; &lt;slug&gt;</code>.</dd>
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/&lt;uuid&gt;</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 1.0</span><span>·</span><em>The cycle compounds.</em><span>·</span>
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"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"}