@deskwork/studio 0.21.0 → 0.22.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 (67) hide show
  1. package/dist/pages/dashboard/adjacent-section.d.ts +38 -0
  2. package/dist/pages/dashboard/adjacent-section.d.ts.map +1 -0
  3. package/dist/pages/dashboard/adjacent-section.js +61 -0
  4. package/dist/pages/dashboard/adjacent-section.js.map +1 -0
  5. package/dist/pages/dashboard/adjacent-section.ts +71 -0
  6. package/dist/pages/dashboard/data.d.ts +35 -4
  7. package/dist/pages/dashboard/data.d.ts.map +1 -1
  8. package/dist/pages/dashboard/data.js +69 -5
  9. package/dist/pages/dashboard/data.js.map +1 -1
  10. package/dist/pages/dashboard/data.ts +84 -5
  11. package/dist/pages/dashboard/press-queue.d.ts +16 -0
  12. package/dist/pages/dashboard/press-queue.d.ts.map +1 -0
  13. package/dist/pages/dashboard/press-queue.js +91 -0
  14. package/dist/pages/dashboard/press-queue.js.map +1 -0
  15. package/dist/pages/dashboard/press-queue.ts +112 -0
  16. package/dist/pages/dashboard/section.d.ts.map +1 -1
  17. package/dist/pages/dashboard/section.js +7 -0
  18. package/dist/pages/dashboard/section.js.map +1 -1
  19. package/dist/pages/dashboard/section.ts +7 -0
  20. package/dist/pages/dashboard/shortform-section.d.ts +86 -0
  21. package/dist/pages/dashboard/shortform-section.d.ts.map +1 -0
  22. package/dist/pages/dashboard/shortform-section.js +189 -0
  23. package/dist/pages/dashboard/shortform-section.js.map +1 -0
  24. package/dist/pages/dashboard/shortform-section.ts +228 -0
  25. package/dist/pages/dashboard.d.ts.map +1 -1
  26. package/dist/pages/dashboard.js +34 -1
  27. package/dist/pages/dashboard.js.map +1 -1
  28. package/dist/pages/dashboard.ts +40 -1
  29. package/dist/pages/entry-review/index.d.ts.map +1 -1
  30. package/dist/pages/entry-review/index.js +24 -2
  31. package/dist/pages/entry-review/index.js.map +1 -1
  32. package/dist/pages/entry-review/mobile-sheet.d.ts +65 -0
  33. package/dist/pages/entry-review/mobile-sheet.d.ts.map +1 -0
  34. package/dist/pages/entry-review/mobile-sheet.js +170 -0
  35. package/dist/pages/entry-review/mobile-sheet.js.map +1 -0
  36. package/dist/pages/masthead-menu.d.ts +38 -0
  37. package/dist/pages/masthead-menu.d.ts.map +1 -0
  38. package/dist/pages/masthead-menu.js +126 -0
  39. package/dist/pages/masthead-menu.js.map +1 -0
  40. package/dist/pages/masthead-menu.ts +128 -0
  41. package/dist/pages/masthead.d.ts +85 -0
  42. package/dist/pages/masthead.d.ts.map +1 -0
  43. package/dist/pages/masthead.js +99 -0
  44. package/dist/pages/masthead.js.map +1 -0
  45. package/dist/pages/masthead.ts +155 -0
  46. package/dist/pages/mobile-bar.d.ts +72 -0
  47. package/dist/pages/mobile-bar.d.ts.map +1 -0
  48. package/dist/pages/mobile-bar.js +88 -0
  49. package/dist/pages/mobile-bar.js.map +1 -0
  50. package/dist/pages/mobile-bar.ts +129 -0
  51. package/dist/pages/shortform-review-mobile-sheet.d.ts +76 -0
  52. package/dist/pages/shortform-review-mobile-sheet.d.ts.map +1 -0
  53. package/dist/pages/shortform-review-mobile-sheet.js +159 -0
  54. package/dist/pages/shortform-review-mobile-sheet.js.map +1 -0
  55. package/dist/pages/shortform-review-mobile-sheet.ts +185 -0
  56. package/dist/pages/shortform-review.d.ts +18 -0
  57. package/dist/pages/shortform-review.d.ts.map +1 -1
  58. package/dist/pages/shortform-review.js +62 -111
  59. package/dist/pages/shortform-review.js.map +1 -1
  60. package/dist/pages/shortform-review.ts +68 -140
  61. package/dist/pages/shortform.d.ts.map +1 -1
  62. package/dist/pages/shortform.js +0 -1
  63. package/dist/pages/shortform.js.map +1 -1
  64. package/dist/pages/shortform.ts +0 -1
  65. package/dist/server.js +41 -1
  66. package/dist/server.js.map +1 -1
  67. package/package.json +2 -2
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Shortform-by-platform section renderer (Step 2.2.9 — studio-mobile-first).
3
+ *
4
+ * Per DESIGN-STANDARDS.md § Desk information architecture, the Desk's
5
+ * second section absorbs the legacy `/dev/editorial-review-shortform`
6
+ * page as four platform tiles (LinkedIn / Reddit / YouTube / Instagram),
7
+ * each collapsible to reveal that platform's open workflows. Tiles share
8
+ * the longform-pipeline tile shape (data-stage-tile + aria-expanded +
9
+ * data-stage-section attrs) so the existing `dashboard/stage-tiles.ts`
10
+ * client controller can drive both. `data-stage-section-group="shortform"`
11
+ * partitions single-expand state so longform and shortform open
12
+ * independently.
13
+ *
14
+ * Per DESKWORK-STATE-MACHINE.md Commandment III, rows do NOT render
15
+ * `.er-stamp` / `er-stamp-<state>` chrome. The pre-v7 shortform page
16
+ * rendered review-state stamps inline; this section does not.
17
+ *
18
+ * Per THESIS Consequence 2, rows are navigation-only. The trailing `⋮`
19
+ * placeholder anchor links to `/dev/editorial-review/<workflow.id>`;
20
+ * Step 2.2.10 lands the v0.20-style row popover with stage-aware verbs
21
+ * once the shortform verb-routing pieces (issues G.1-G.6) land. This
22
+ * commit does NOT smuggle verb-routing in early. Tracked in
23
+ * https://github.com/audiocontrol-org/deskwork/issues/263.
24
+ *
25
+ * TRANSITIONAL SHAPE: this row's `er-row-shell` markup is a strict
26
+ * subset of the longform row shell defined in
27
+ * `dashboard/section.ts:renderRow`. Longform shells carry three
28
+ * children (`er-row-drawer`, `er-row-fg`, `er-row-menu`); this shell
29
+ * carries only the `er-row-fg`. Step 2.2.10's popover wire-up is
30
+ * purely additive on the existing shape — it inserts the missing
31
+ * `er-row-menu` (and possibly `er-row-drawer` if a swipe gesture is
32
+ * scoped in). Keep the two row paths' attribute conventions aligned
33
+ * (data-row-shell, data-platform, data-site, data-slug already match)
34
+ * so the unification stays straightforward.
35
+ */
36
+
37
+ import { html, unsafe, type RawHtml } from '../html.ts';
38
+ import type { DraftWorkflowItem } from '@deskwork/core/review/types';
39
+ import type { Platform } from '@deskwork/core/types';
40
+ import { DASHBOARD_PLATFORM_ORDER } from './data.ts';
41
+
42
+ /** Per-platform display metadata. Mirrors desk-states-v7.html:632-655. */
43
+ interface PlatformChrome {
44
+ /** Two-character badge inside the tile (replaces the longform stage glyph). */
45
+ readonly badge: string;
46
+ /** Display name on the tile. */
47
+ readonly name: string;
48
+ /** CSS variant suffix for `.er-platform-badge--<variant>`. */
49
+ readonly variant: string;
50
+ }
51
+
52
+ const PLATFORM_CHROME: Record<Platform, PlatformChrome> = {
53
+ linkedin: { badge: 'in', name: 'LinkedIn', variant: 'linkedin' },
54
+ reddit: { badge: 'r/', name: 'Reddit', variant: 'reddit' },
55
+ youtube: { badge: '@', name: 'YouTube', variant: 'youtube' },
56
+ instagram: { badge: 'IG', name: 'Instagram', variant: 'instagram' },
57
+ };
58
+
59
+ /**
60
+ * Render the shortform section head — `<div class="er-desk-section-head
61
+ * er-desk-section-head--shortform">` matching the mockup's
62
+ * `.desk-section-head.shortform` shape. Glyph + label + caption count.
63
+ */
64
+ export function renderShortformSectionHead(totalCount: number): RawHtml {
65
+ return unsafe(html`
66
+ <div class="er-desk-section-head er-desk-section-head--shortform">
67
+ <span class="er-desk-section-head-glyph" aria-hidden="true">⊟</span>
68
+ <span class="er-desk-section-head-label">Shortform · by platform</span>
69
+ <span class="er-desk-section-head-count">· ${totalCount} ${totalCount === 1 ? 'workflow' : 'workflows'}</span>
70
+ </div>`);
71
+ }
72
+
73
+ /**
74
+ * Render one platform tile. Shares its tile shape + a11y attrs with the
75
+ * longform stage tile so the stage-tiles.ts client controller drives
76
+ * both. Empty platforms get `disabled` + `.is-empty` so the operator
77
+ * sees the platform exists but cannot drill into nothing.
78
+ */
79
+ export function renderShortformPlatformTile(
80
+ platform: Platform,
81
+ count: number,
82
+ ): RawHtml {
83
+ const chrome = PLATFORM_CHROME[platform];
84
+ const isEmpty = count === 0;
85
+ const classes = isEmpty
86
+ ? 'er-stage-tile er-stage-tile--shortform is-empty'
87
+ : 'er-stage-tile er-stage-tile--shortform';
88
+ const disabledAttr = isEmpty ? ' disabled' : '';
89
+ const sectionId = `shortform-${platform}`;
90
+ return unsafe(html`
91
+ <button class="${classes}" type="button"
92
+ data-stage-tile="${sectionId}"
93
+ data-stage-section-group="shortform"
94
+ aria-expanded="false"
95
+ aria-controls="${sectionId}"${unsafe(disabledAttr)}>
96
+ <span class="er-platform-badge er-platform-badge--${chrome.variant}" aria-hidden="true">${chrome.badge}</span>
97
+ <span class="er-stage-tile-name">${chrome.name}</span>
98
+ <span class="er-stage-tile-count"><span class="num">${count}</span></span>
99
+ <span class="er-stage-tile-chev" aria-hidden="true">›</span>
100
+ </button>`);
101
+ }
102
+
103
+ function fmtRelTime(iso: string, now: Date): string {
104
+ const t = new Date(iso).getTime();
105
+ const s = Math.max(0, Math.floor((now.getTime() - t) / 1000));
106
+ if (s < 60) return `${s}s ago`;
107
+ const m = Math.floor(s / 60);
108
+ if (m < 60) return `${m}m ago`;
109
+ const h = Math.floor(m / 60);
110
+ if (h < 48) return `${h}h ago`;
111
+ return `${Math.floor(h / 24)}d ago`;
112
+ }
113
+
114
+ /**
115
+ * Render a single shortform workflow row. Mirrors the v0.20 row-affordance
116
+ * shape: shell + foreground (slug + title + channel) + meta column (ts +
117
+ * version) + trailing `⋮`. The `⋮` is a navigation placeholder anchor —
118
+ * Step 2.2.10 wires the stage-aware row popover.
119
+ */
120
+ export function renderShortformRow(
121
+ workflow: DraftWorkflowItem,
122
+ now: Date,
123
+ ): RawHtml {
124
+ // workflow.id is typed as `string` on DraftWorkflowItem; UUIDs are the
125
+ // current shape but the type system doesn't enforce that. Encode the
126
+ // path segment so a future non-UUID id (e.g. one containing `?`, `#`,
127
+ // space) doesn't silently produce a broken link.
128
+ const reviewLink = `/dev/editorial-review/${encodeURIComponent(workflow.id)}`;
129
+ const search = [workflow.slug, workflow.channel ?? '', workflow.platform ?? '']
130
+ .join(' ')
131
+ .toLowerCase();
132
+ const channelMarkup: RawHtml = workflow.channel
133
+ ? unsafe(html`<span class="er-row-shell-channel">${workflow.channel}</span>`)
134
+ : unsafe('');
135
+ // The workflow `slug` is the post slug; we surface it as the row's
136
+ // primary handle (consistent with longform rows). The workflow `id` is
137
+ // the navigation key (uuid in the review-pipeline store).
138
+ return unsafe(html`
139
+ <div class="er-row-shell er-row-shell--shortform"
140
+ data-row-shell data-search="${search}"
141
+ data-workflow-id="${workflow.id}"
142
+ data-platform="${workflow.platform ?? ''}"
143
+ data-site="${workflow.site}"
144
+ data-slug="${workflow.slug}">
145
+ <div class="er-row-fg er-shortform-row-fg">
146
+ <div class="er-shortform-row-body">
147
+ <span class="er-row-shell-slug"><a href="${reviewLink}"
148
+ title="open the review surface">${workflow.slug}</a></span>
149
+ ${channelMarkup}
150
+ </div>
151
+ <div class="er-shortform-row-meta">
152
+ <span class="er-shortform-row-ts">${fmtRelTime(workflow.updatedAt, now)}</span>
153
+ <span class="er-shortform-row-version">v${workflow.currentVersion}</span>
154
+ </div>
155
+ <a class="er-row-shell-link" href="${reviewLink}"
156
+ aria-label="Open shortform review for ${workflow.slug}"
157
+ title="open the review surface">⋮</a>
158
+ </div>
159
+ </div>`);
160
+ }
161
+
162
+ /**
163
+ * Render the platform's row group — the `<div class="er-row-group">`
164
+ * container holding all rows for that platform. The container carries
165
+ * the `data-stage-section` attr the stage-tiles.ts controller targets
166
+ * to apply `data-collapsed`.
167
+ */
168
+ function renderPlatformRowGroup(
169
+ platform: Platform,
170
+ workflows: readonly DraftWorkflowItem[],
171
+ now: Date,
172
+ ): RawHtml {
173
+ const sectionId = `shortform-${platform}`;
174
+ if (workflows.length === 0) {
175
+ // Empty platform — still emit the row-group container so the
176
+ // controller's `[data-stage-section="<id>"]` selector resolves. The
177
+ // tile is `disabled` so it cannot expand anyway; the empty container
178
+ // is structurally inert.
179
+ return unsafe(html`
180
+ <div class="er-row-group" id="${sectionId}" data-stage-section="${sectionId}"></div>`);
181
+ }
182
+ const rows = workflows.map((w) => renderShortformRow(w, now).__raw).join('');
183
+ return unsafe(html`
184
+ <div class="er-row-group" id="${sectionId}" data-stage-section="${sectionId}">
185
+ ${unsafe(rows)}
186
+ </div>`);
187
+ }
188
+
189
+ /**
190
+ * Section data shape — the renderer reads counts + workflows per platform
191
+ * from the dashboard's loadDashboardData() output. Caller passes the
192
+ * ordered Map directly (insertion order = display order).
193
+ */
194
+ export interface ShortformSectionData {
195
+ readonly shortformByPlatform: ReadonlyMap<Platform, readonly DraftWorkflowItem[]>;
196
+ readonly totalCount: number;
197
+ }
198
+
199
+ /**
200
+ * Compose the full shortform section: head + 4 platform tiles + per-
201
+ * platform row groups, in `DASHBOARD_PLATFORM_ORDER` order. All 4
202
+ * platforms render even when zero — empty tiles communicate platform
203
+ * existence (per § Empty-state rendering, "the absence of items is
204
+ * information about the pipeline shape").
205
+ *
206
+ * API shape note: this helper iterates platforms internally (single
207
+ * call → whole section), whereas the longform `renderStageSection` is
208
+ * called per-stage by `dashboard.ts` (caller iterates). The asymmetry
209
+ * is intentional: longform stages share a uniform shape across all
210
+ * eight stages, so the caller-iterates pattern keeps the loop visible
211
+ * in `dashboard.ts`. Shortform's four platforms share a section head
212
+ * and ordered iteration constraint that lives more cleanly inside the
213
+ * composer. If a future surface needs both shapes via a common
214
+ * abstraction, the unification belongs there, not here.
215
+ */
216
+ export function renderShortformSection(
217
+ data: ShortformSectionData,
218
+ now: Date,
219
+ ): RawHtml {
220
+ const sectionHead = renderShortformSectionHead(data.totalCount);
221
+ const tilesAndGroups = DASHBOARD_PLATFORM_ORDER.map((platform) => {
222
+ const workflows = data.shortformByPlatform.get(platform) ?? [];
223
+ const tile = renderShortformPlatformTile(platform, workflows.length);
224
+ const group = renderPlatformRowGroup(platform, workflows, now);
225
+ return `${tile.__raw}${group.__raw}`;
226
+ }).join('');
227
+ return unsafe(html`${sectionHead}${unsafe(tilesAndGroups)}`);
228
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/pages/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAElE;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA2CjB"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/pages/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AActD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAElE;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA8EjB"}
@@ -33,9 +33,13 @@
33
33
  import { html, unsafe } from "./html.js";
34
34
  import { layout } from "./layout.js";
35
35
  import { renderEditorialFolio } from "./chrome.js";
36
+ import { renderMasthead } from "./masthead.js";
37
+ import { renderMastheadMenu } from "./masthead-menu.js";
36
38
  import { loadDashboardData, DASHBOARD_STAGE_ORDER } from "./dashboard/data.js";
37
39
  import { renderStageSection, renderDistributionPlaceholder, } from "./dashboard/section.js";
38
40
  import { renderHeader, renderFilterStrip } from "./dashboard/header.js";
41
+ import { renderShortformSection } from "./dashboard/shortform-section.js";
42
+ import { renderAdjacentSection } from "./dashboard/adjacent-section.js";
39
43
  /**
40
44
  * Render the studio dashboard. Async because sidecar reads hit disk;
41
45
  * the route handler in server.ts awaits the result before sending it.
@@ -43,25 +47,52 @@ import { renderHeader, renderFilterStrip } from "./dashboard/header.js";
43
47
  export async function renderDashboard(ctx, getIndex) {
44
48
  // Touch the parameter so the unused-param check stays satisfied.
45
49
  void getIndex;
46
- const data = await loadDashboardData(ctx.projectRoot);
50
+ const data = await loadDashboardData(ctx.projectRoot, ctx.config);
47
51
  const now = ctx.now ? ctx.now() : new Date();
48
52
  const defaultSite = ctx.config.defaultSite;
49
53
  const stageSections = DASHBOARD_STAGE_ORDER.map((stage) => {
50
54
  const bucket = data.byStage.get(stage) ?? [];
51
55
  return renderStageSection(stage, bucket, defaultSite).__raw;
52
56
  }).join('\n');
57
+ // v7 architecture (Step 2.2.9 — studio-mobile-first): the Desk absorbs
58
+ // the Shortform-by-platform view as its second section, plus reserved
59
+ // Adjacent-tools placeholders for Phase 3+ Folio + Files surfaces. Per
60
+ // the v7 mockup at desk-states-v7.html:563, the masthead meta reads
61
+ // "${longformCount} longform · ${shortformCount} shortform" when any
62
+ // shortform workflows exist; otherwise it falls back to longform-only
63
+ // to avoid a misleading "0 shortform" claim.
64
+ const longformCount = data.entries.length;
65
+ const shortformCount = data.shortformWorkflows.length;
66
+ const mastheadMeta = shortformCount > 0
67
+ ? `${longformCount} longform · ${shortformCount} shortform`
68
+ : `${longformCount} longform`;
69
+ const masthead = renderMasthead({
70
+ kicker: "The compositor's desk",
71
+ title: 'Pipeline + Press.',
72
+ metaInline: mastheadMeta,
73
+ isHub: true,
74
+ });
53
75
  // The press queue (right-rail on desktop) was removed in v0.19
54
76
  // per DESKWORK-STATE-MACHINE.md Commandment III — its primary
55
77
  // purpose was surfacing review-state, which is RETIRED. The
56
78
  // archive entry at docs/studio-design/ACCEPTED/2026-05-09-press-queue-removed/
57
79
  // captures the rationale.
80
+ const shortformSection = renderShortformSection({
81
+ shortformByPlatform: data.shortformByPlatform,
82
+ totalCount: shortformCount,
83
+ }, now);
84
+ const adjacentSection = renderAdjacentSection();
58
85
  const body = html `
86
+ ${masthead}
87
+ ${renderMastheadMenu()}
59
88
  ${renderEditorialFolio('dashboard', 'press-check')}
60
89
  ${renderHeader(data, ctx.projectRoot, now)}
61
90
  <main class="er-container">
62
91
  ${renderFilterStrip()}
63
92
  ${unsafe(stageSections)}
64
93
  ${renderDistributionPlaceholder()}
94
+ ${shortformSection}
95
+ ${adjacentSection}
65
96
  </main>
66
97
  ${renderComposeChrome()}
67
98
  <div class="er-toast" data-toast hidden></div>
@@ -73,7 +104,9 @@ export async function renderDashboard(ctx, getIndex) {
73
104
  '/static/css/editorial-nav.css',
74
105
  '/static/css/editorial-studio.css',
75
106
  '/static/css/dashboard-mobile.css',
107
+ '/static/css/dashboard-desk-sections.css',
76
108
  '/static/css/dashboard-row-affordances.css',
109
+ '/static/css/mobile-shell.css',
77
110
  ],
78
111
  bodyAttrs: 'data-review-ui="studio"',
79
112
  bodyHtml: body,
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/pages/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAWxE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAkB,EAClB,QAA+B;IAE/B,iEAAiE;IACjE,KAAK,QAAQ,CAAC;IAEd,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7C,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;IAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC;IAC9D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,+DAA+D;IAC/D,8DAA8D;IAC9D,4DAA4D;IAC5D,+EAA+E;IAC/E,0BAA0B;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAA;IACf,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC;IAChD,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;;MAEtC,iBAAiB,EAAE;MACnB,MAAM,CAAC,aAAa,CAAC;MACrB,6BAA6B,EAAE;;IAEjC,mBAAmB,EAAE;;oEAE2C,CAAC;IAEnE,OAAO,MAAM,CAAC;QACZ,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE;YACR,kCAAkC;YAClC,+BAA+B;YAC/B,kCAAkC;YAClC,kCAAkC;YAClC,2CAA2C;SAC5C;QACD,SAAS,EAAE,yBAAyB;QACpC,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,CAAC,yBAAyB,CAAC;KAC3C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,mBAAmB;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAsDP,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/pages/dashboard.ts"],"names":[],"mappings":"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"}
@@ -35,12 +35,16 @@ import type { StudioContext } from '../routes/api.ts';
35
35
  import { html, unsafe, type RawHtml } from './html.ts';
36
36
  import { layout } from './layout.ts';
37
37
  import { renderEditorialFolio } from './chrome.ts';
38
+ import { renderMasthead } from './masthead.ts';
39
+ import { renderMastheadMenu } from './masthead-menu.ts';
38
40
  import { loadDashboardData, DASHBOARD_STAGE_ORDER } from './dashboard/data.ts';
39
41
  import {
40
42
  renderStageSection,
41
43
  renderDistributionPlaceholder,
42
44
  } from './dashboard/section.ts';
43
45
  import { renderHeader, renderFilterStrip } from './dashboard/header.ts';
46
+ import { renderShortformSection } from './dashboard/shortform-section.ts';
47
+ import { renderAdjacentSection } from './dashboard/adjacent-section.ts';
44
48
  import type { ContentIndex } from '@deskwork/core/content-index';
45
49
 
46
50
  /**
@@ -62,7 +66,7 @@ export async function renderDashboard(
62
66
  // Touch the parameter so the unused-param check stays satisfied.
63
67
  void getIndex;
64
68
 
65
- const data = await loadDashboardData(ctx.projectRoot);
69
+ const data = await loadDashboardData(ctx.projectRoot, ctx.config);
66
70
  const now = ctx.now ? ctx.now() : new Date();
67
71
 
68
72
  const defaultSite = ctx.config.defaultSite;
@@ -71,18 +75,51 @@ export async function renderDashboard(
71
75
  return renderStageSection(stage, bucket, defaultSite).__raw;
72
76
  }).join('\n');
73
77
 
78
+ // v7 architecture (Step 2.2.9 — studio-mobile-first): the Desk absorbs
79
+ // the Shortform-by-platform view as its second section, plus reserved
80
+ // Adjacent-tools placeholders for Phase 3+ Folio + Files surfaces. Per
81
+ // the v7 mockup at desk-states-v7.html:563, the masthead meta reads
82
+ // "${longformCount} longform · ${shortformCount} shortform" when any
83
+ // shortform workflows exist; otherwise it falls back to longform-only
84
+ // to avoid a misleading "0 shortform" claim.
85
+ const longformCount = data.entries.length;
86
+ const shortformCount = data.shortformWorkflows.length;
87
+ const mastheadMeta =
88
+ shortformCount > 0
89
+ ? `${longformCount} longform · ${shortformCount} shortform`
90
+ : `${longformCount} longform`;
91
+ const masthead = renderMasthead({
92
+ kicker: "The compositor's desk",
93
+ title: 'Pipeline + Press.',
94
+ metaInline: mastheadMeta,
95
+ isHub: true,
96
+ });
97
+
74
98
  // The press queue (right-rail on desktop) was removed in v0.19
75
99
  // per DESKWORK-STATE-MACHINE.md Commandment III — its primary
76
100
  // purpose was surfacing review-state, which is RETIRED. The
77
101
  // archive entry at docs/studio-design/ACCEPTED/2026-05-09-press-queue-removed/
78
102
  // captures the rationale.
103
+ const shortformSection = renderShortformSection(
104
+ {
105
+ shortformByPlatform: data.shortformByPlatform,
106
+ totalCount: shortformCount,
107
+ },
108
+ now,
109
+ );
110
+ const adjacentSection = renderAdjacentSection();
111
+
79
112
  const body = html`
113
+ ${masthead}
114
+ ${renderMastheadMenu()}
80
115
  ${renderEditorialFolio('dashboard', 'press-check')}
81
116
  ${renderHeader(data, ctx.projectRoot, now)}
82
117
  <main class="er-container">
83
118
  ${renderFilterStrip()}
84
119
  ${unsafe(stageSections)}
85
120
  ${renderDistributionPlaceholder()}
121
+ ${shortformSection}
122
+ ${adjacentSection}
86
123
  </main>
87
124
  ${renderComposeChrome()}
88
125
  <div class="er-toast" data-toast hidden></div>
@@ -95,7 +132,9 @@ export async function renderDashboard(
95
132
  '/static/css/editorial-nav.css',
96
133
  '/static/css/editorial-studio.css',
97
134
  '/static/css/dashboard-mobile.css',
135
+ '/static/css/dashboard-desk-sections.css',
98
136
  '/static/css/dashboard-row-affordances.css',
137
+ '/static/css/mobile-shell.css',
99
138
  ],
100
139
  bodyAttrs: 'data-review-ui="studio"',
101
140
  bodyHtml: body,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/entry-review/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBzD,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B;oDACgD;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;mDAG+C;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AA2GD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,gBAAqB,EAC5B,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA8H5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/entry-review/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAwBzD,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B;oDACgD;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;mDAG+C;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AA2GD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,gBAAqB,EAC5B,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAkJ5B"}
@@ -35,6 +35,8 @@ import { getAffordances } from "../../lib/stage-affordances.js";
35
35
  import { html, unsafe, escapeHtml, gloss } from "../html.js";
36
36
  import { layout } from "../layout.js";
37
37
  import { renderEditorialFolio } from "../chrome.js";
38
+ import { renderMasthead } from "../masthead.js";
39
+ import { renderMastheadMenu } from "../masthead-menu.js";
38
40
  import { renderScrapbookDrawer } from "../review-scrapbook-drawer.js";
39
41
  import { loadEntryReviewData } from "./data.js";
40
42
  import { renderVersionsStrip } from "./version-strip.js";
@@ -42,7 +44,8 @@ import { renderEditToolbar } from "./edit-toolbar.js";
42
44
  import { renderEditPanes } from "./edit-panes.js";
43
45
  import { renderOutlineDrawer } from "./outline-drawer.js";
44
46
  import { renderMarginalia, renderMarginaliaTab } from "./marginalia.js";
45
- import { renderMobileBar, renderMobileSheet, renderStripModeSegment, renderStripEditExit } from "./mobile-bar.js";
47
+ import { renderMobileBar } from "../mobile-bar.js";
48
+ import { renderMobileSheet, renderStripModeSegment, renderStripEditExit, getEntryReviewBarCells, } from "./mobile-sheet.js";
46
49
  import { renderDecisionStrip } from "./decision-strip.js";
47
50
  import { renderShortcutsOverlay } from "./shortcuts.js";
48
51
  import { renderEntryNotFound } from "./not-found.js";
@@ -150,6 +153,22 @@ export async function renderEntryReviewPage(ctx, entryId, query = {}, getIndex)
150
153
  const historicalBadge = data.historical
151
154
  ? unsafe(html `<span class="er-strip-historical" title="Historical version (read-only)">historical · v${data.historical.versionNumber}</span>`)
152
155
  : unsafe('');
156
+ // v7 universal masthead (mobile-only at this commit). The kicker
157
+ // reads `entry · <stage> · № <version>`; the slug occupies the
158
+ // bottom row; the inline meta carries the historical badge when a
159
+ // historical view is active. Step 2.2.8 retires the er-strip-back
160
+ // redundant with the masthead's `←`.
161
+ const versionLabel = state.currentVersion !== null
162
+ ? `№ ${state.currentVersion}`
163
+ : '№ —';
164
+ const mastheadKicker = `entry · ${stageLabel.toLowerCase()} · ${versionLabel}`;
165
+ const mastheadMeta = data.historical
166
+ ? `historical · v${data.historical.versionNumber}`
167
+ : undefined;
168
+ const mastheadOpts = mastheadMeta === undefined
169
+ ? { kicker: mastheadKicker, slug: data.entry.slug, isHub: false }
170
+ : { kicker: mastheadKicker, slug: data.entry.slug, metaInline: mastheadMeta, isHub: false };
171
+ const masthead = renderMasthead(mastheadOpts);
153
172
  // The page-grid composes the article column + the marginalia rail.
154
173
  // Mirrors the legacy longform layout (`.er-page-grid` with the
155
174
  // `.er-draft-frame` + `.er-page-gutter` + `.er-marginalia` triplet).
@@ -177,6 +196,8 @@ export async function renderEntryReviewPage(ctx, entryId, query = {}, getIndex)
177
196
  });
178
197
  const body = html `
179
198
  <div data-review-ui="longform" class="er-review-shell">
199
+ ${masthead}
200
+ ${renderMastheadMenu()}
180
201
  ${renderEditorialFolio('longform', folioSpine)}
181
202
  <div class="er-strip">
182
203
  <div class="er-strip-inner">
@@ -204,7 +225,7 @@ export async function renderEntryReviewPage(ctx, entryId, query = {}, getIndex)
204
225
  <button class="er-pencil-btn" data-add-comment-btn hidden type="button">Mark</button>
205
226
  ${renderOutlineDrawer(outlineHtml, tocEntries)}
206
227
  ${scrapbookDrawer}
207
- ${renderMobileBar()}
228
+ ${renderMobileBar({ contextual: getEntryReviewBarCells() })}
208
229
  ${renderMobileSheet()}
209
230
  <div class="er-toast" data-toast hidden></div>
210
231
  ${renderShortcutsOverlay()}
@@ -221,6 +242,7 @@ export async function renderEntryReviewPage(ctx, entryId, query = {}, getIndex)
221
242
  '/static/css/blog-figure.css',
222
243
  '/static/css/review-viewport.css',
223
244
  '/static/css/scrap-row.css',
245
+ '/static/css/mobile-shell.css',
224
246
  ],
225
247
  bodyAttrs: 'data-review-ui="entry-review"',
226
248
  bodyHtml: body,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pages/entry-review/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pages/entry-review/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Entry-review-specific mobile sheet host + strip affordances.
3
+ *
4
+ * Renders the bottom-sheet container with the five named slots
5
+ * (outline / notes / actions / scrapbook / format) the entry-review
6
+ * surface composes against, plus the two phone-only strip affordances
7
+ * (Source/Preview pill, ✕ Done exit) that live in the top strip when
8
+ * editing on phone.
9
+ *
10
+ * The mobile-BAR helper itself is universal — it moved to
11
+ * `../mobile-bar.ts` and accepts a list of `Cell`s the caller supplies
12
+ * to describe each tab. The entry-review consumer composes the
13
+ * pre-refactor 6-cell configuration via `getEntryReviewBarCells()`
14
+ * below.
15
+ *
16
+ * Design references:
17
+ * - Review tabs: plugins/deskwork-studio/public/mockups/mobile-1-bottom-sheet.html
18
+ * - Editor tabs: plugins/deskwork-studio/public/mockups/editor-2-press-check-tabbar.html
19
+ *
20
+ * The sheet has five content slots. The client controller
21
+ * (`entry-review/mobile-sheet-bar.ts`) populates each at first open.
22
+ * Slot sources:
23
+ * - outline: clone of `.er-outline-drawer-body`
24
+ * - notes: actual `[data-sidebar-list]` element MOVED in on phone
25
+ * (preserves event listeners; see mobile-sheet-bar.ts)
26
+ * - actions: rendered fresh from the decision verbs
27
+ * - format: the press-check key grid rendered server-side below
28
+ */
29
+ import { type RawHtml } from '../html.ts';
30
+ import type { Cell } from '../mobile-bar.ts';
31
+ /**
32
+ * The entry-review bar's contextual cell list. Six cells; CSS hides
33
+ * the off-mode cells via the `er-mobile-tab--review` /
34
+ * `er-mobile-tab--edit` modifiers (gated on
35
+ * `body[data-edit-mode="editing"]`).
36
+ *
37
+ * - Review mode visible: Outline · Notes · Scrapbook · Actions
38
+ * - Edit mode visible: Format · Notes · Save
39
+ *
40
+ * The Notes tab is mode `'both'` — review notes the operator leaves
41
+ * carry across into edit. The Scrapbook tab uses the kraft-tone count
42
+ * badge to distinguish folio context from action peers.
43
+ */
44
+ export declare function getEntryReviewBarCells(): readonly Cell[];
45
+ export declare function renderMobileSheet(): RawHtml;
46
+ /**
47
+ * Phone-only Source/Preview pill rendered into the top strip when in
48
+ * edit mode. Uses the same `data-edit-view` attribute as the desktop
49
+ * edit toolbar so `editModeBtns` (queried via that attribute in
50
+ * entry-review-client.ts) auto-binds clicks. CSS reveals it only on
51
+ * phone + edit mode; the desktop edit toolbar is hidden in that
52
+ * combination.
53
+ */
54
+ export declare function renderStripModeSegment(): RawHtml;
55
+ /**
56
+ * Phone-only "✕ Done" exit affordance in the strip. Visible only when
57
+ * editing on phone (CSS-gated). Click dispatches into the existing
58
+ * toggle-edit handler — preserves the confirmDiscard prompt when the
59
+ * buffer is dirty, immediate exit when clean. Sits alongside the
60
+ * existing back-link (which continues to navigate home regardless of
61
+ * mode) so the operator always has both "leave editor" and "leave
62
+ * page" affordances available.
63
+ */
64
+ export declare function renderStripEditExit(): RawHtml;
65
+ //# sourceMappingURL=mobile-sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-sheet.d.ts","sourceRoot":"","sources":["../../../src/pages/entry-review/mobile-sheet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,IAAI,SAAS,IAAI,EAAE,CA2CxD;AA2BD,wBAAgB,iBAAiB,IAAI,OAAO,CA2B3C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C"}