@deskwork/studio 0.11.1 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/lib/client-script.d.ts +24 -0
- package/dist/lib/client-script.d.ts.map +1 -0
- package/dist/lib/client-script.js +34 -0
- package/dist/lib/client-script.js.map +1 -0
- package/dist/lib/entry-resolver.d.ts.map +1 -1
- package/dist/lib/entry-resolver.js +16 -9
- package/dist/lib/entry-resolver.js.map +1 -1
- package/dist/lib/version.d.ts +10 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +29 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/pages/content.d.ts.map +1 -1
- package/dist/pages/content.js +50 -2
- package/dist/pages/content.js.map +1 -1
- package/dist/pages/content.ts +53 -2
- package/dist/pages/dashboard/header.d.ts.map +1 -1
- package/dist/pages/dashboard/header.js +3 -0
- package/dist/pages/dashboard/header.js.map +1 -1
- package/dist/pages/dashboard/header.ts +3 -0
- package/dist/pages/dashboard/section.d.ts +6 -3
- package/dist/pages/dashboard/section.d.ts.map +1 -1
- package/dist/pages/dashboard/section.js +25 -12
- package/dist/pages/dashboard/section.js.map +1 -1
- package/dist/pages/dashboard/section.ts +26 -13
- package/dist/pages/dashboard.js +1 -1
- package/dist/pages/dashboard.js.map +1 -1
- package/dist/pages/dashboard.ts +1 -1
- package/dist/pages/entry-review.js +1 -1
- package/dist/pages/entry-review.js.map +1 -1
- package/dist/pages/entry-review.ts +1 -1
- package/dist/pages/layout.d.ts +6 -1
- package/dist/pages/layout.d.ts.map +1 -1
- package/dist/pages/layout.js +6 -3
- package/dist/pages/layout.js.map +1 -1
- package/dist/pages/layout.ts +12 -4
- package/dist/pages/review.js +1 -1
- package/dist/pages/review.js.map +1 -1
- package/dist/pages/review.ts +1 -1
- package/dist/pages/scrapbook.js +1 -1
- package/dist/pages/scrapbook.js.map +1 -1
- package/dist/pages/scrapbook.ts +1 -1
- package/dist/pages/shortform.js +1 -1
- package/dist/pages/shortform.js.map +1 -1
- package/dist/pages/shortform.ts +1 -1
- package/dist/routes/api.d.ts.map +1 -1
- package/dist/routes/api.js +89 -0
- package/dist/routes/api.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +86 -13
- package/dist/server.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -23,6 +23,25 @@ The studio binds to loopback by default (`127.0.0.1`) plus the local Tailscale i
|
|
|
23
23
|
| `/dev/scrapbook/<site>/<path>` | Scrapbook viewer at any depth |
|
|
24
24
|
| `/dev/content/<site>/<project>` | Bird's-eye content tree view |
|
|
25
25
|
|
|
26
|
+
### Local development (deskwork monorepo)
|
|
27
|
+
|
|
28
|
+
When working on the studio itself from inside this monorepo:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
npm install # creates workspace symlinks
|
|
32
|
+
npm run dev --workspace @deskwork/studio # Vite-in-Hono on port 47321
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`npm run dev` boots the studio with `DESKWORK_DEV=1` and `tsx --watch`, mounting Vite's dev middleware in front of Hono. Effects:
|
|
36
|
+
|
|
37
|
+
- Edits under `packages/studio/src/*.ts` (server-side) auto-restart the process.
|
|
38
|
+
- Edits under `plugins/deskwork-studio/public/src/*.ts` (client-side) are served by Vite with HMR — the browser auto-reloads on save (full module HMR engages whenever modules add `import.meta.hot` handlers).
|
|
39
|
+
- The in-process esbuild step is skipped; client TS source is served directly via Vite at `/src/<name>.ts`.
|
|
40
|
+
|
|
41
|
+
The dev server points at the workspace root (`--project-root ../..`) so it reads the project's own `.deskwork/config.json` and surfaces the project's calendar.
|
|
42
|
+
|
|
43
|
+
Production code path (no `DESKWORK_DEV`) is unchanged — the studio runs the in-process esbuild on boot and serves bundled JS from `.runtime-cache/dist/`.
|
|
44
|
+
|
|
26
45
|
### Source
|
|
27
46
|
|
|
28
47
|
Repository: [`audiocontrol-org/deskwork`](https://github.com/audiocontrol-org/deskwork). The studio source lives at [`packages/studio/`](https://github.com/audiocontrol-org/deskwork/tree/main/packages/studio); shared core logic in [`@deskwork/core`](https://www.npmjs.com/package/@deskwork/core); the lifecycle CLI in [`@deskwork/cli`](https://www.npmjs.com/package/@deskwork/cli).
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emit the <script> tag for a client-side TS module.
|
|
3
|
+
*
|
|
4
|
+
* Dev mode (DESKWORK_DEV=1): emit /src/<name>.ts so Vite's middleware serves
|
|
5
|
+
* the source with HMR.
|
|
6
|
+
*
|
|
7
|
+
* Prod mode (default): emit /static/dist/<name>.js (the in-process esbuild
|
|
8
|
+
* output served from .runtime-cache/dist/).
|
|
9
|
+
*/
|
|
10
|
+
export declare function clientScriptTag(name: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Emit the Vite HMR client `<script>` tag — empty string in prod.
|
|
13
|
+
*
|
|
14
|
+
* Vite's `/@vite/client` module connects the browser to Vite's WebSocket,
|
|
15
|
+
* receives invalidation events on file change, and either runs the
|
|
16
|
+
* module's `import.meta.hot.accept` handler or triggers a full page
|
|
17
|
+
* reload. With no `import.meta.hot` calls in the studio's client code
|
|
18
|
+
* yet, this gives us auto-reload on save (HMR-grade behavior without the
|
|
19
|
+
* fine-grained module updates).
|
|
20
|
+
*
|
|
21
|
+
* Layout prepends this to scriptModules in dev so every page gets it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function viteClientTag(): string;
|
|
24
|
+
//# sourceMappingURL=client-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-script.d.ts","sourceRoot":"","sources":["../../src/lib/client-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAKtC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emit the <script> tag for a client-side TS module.
|
|
3
|
+
*
|
|
4
|
+
* Dev mode (DESKWORK_DEV=1): emit /src/<name>.ts so Vite's middleware serves
|
|
5
|
+
* the source with HMR.
|
|
6
|
+
*
|
|
7
|
+
* Prod mode (default): emit /static/dist/<name>.js (the in-process esbuild
|
|
8
|
+
* output served from .runtime-cache/dist/).
|
|
9
|
+
*/
|
|
10
|
+
export function clientScriptTag(name) {
|
|
11
|
+
if (process.env.DESKWORK_DEV === '1') {
|
|
12
|
+
return `<script type="module" src="/src/${name}.ts"></script>`;
|
|
13
|
+
}
|
|
14
|
+
return `<script type="module" src="/static/dist/${name}.js"></script>`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Emit the Vite HMR client `<script>` tag — empty string in prod.
|
|
18
|
+
*
|
|
19
|
+
* Vite's `/@vite/client` module connects the browser to Vite's WebSocket,
|
|
20
|
+
* receives invalidation events on file change, and either runs the
|
|
21
|
+
* module's `import.meta.hot.accept` handler or triggers a full page
|
|
22
|
+
* reload. With no `import.meta.hot` calls in the studio's client code
|
|
23
|
+
* yet, this gives us auto-reload on save (HMR-grade behavior without the
|
|
24
|
+
* fine-grained module updates).
|
|
25
|
+
*
|
|
26
|
+
* Layout prepends this to scriptModules in dev so every page gets it.
|
|
27
|
+
*/
|
|
28
|
+
export function viteClientTag() {
|
|
29
|
+
if (process.env.DESKWORK_DEV === '1') {
|
|
30
|
+
return '<script type="module" src="/@vite/client"></script>';
|
|
31
|
+
}
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=client-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-script.js","sourceRoot":"","sources":["../../src/lib/client-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;QACrC,OAAO,mCAAmC,IAAI,gBAAgB,CAAC;IACjE,CAAC;IACD,OAAO,2CAA2C,IAAI,gBAAgB,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;QACrC,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"entry-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,6BAA6B,CAAC;AAEhE,UAAU,aAAa;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAaD,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAoB5F"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import { readFile } from 'node:fs/promises';
|
|
15
15
|
import { join } from 'node:path';
|
|
16
16
|
import { readSidecar } from '@deskwork/core/sidecar';
|
|
17
|
+
import { getContentDir } from '@deskwork/core/config';
|
|
17
18
|
const STAGE_ARTIFACT = {
|
|
18
19
|
Ideas: (s, d) => join(d, s, 'scrapbook', 'idea.md'),
|
|
19
20
|
Planned: (s, d) => join(d, s, 'scrapbook', 'plan.md'),
|
|
@@ -26,16 +27,22 @@ const STAGE_ARTIFACT = {
|
|
|
26
27
|
};
|
|
27
28
|
export async function resolveEntry(projectRoot, uuid) {
|
|
28
29
|
const entry = await readSidecar(projectRoot, uuid);
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
// #140: prefer the explicit artifactPath when set; fall back to the
|
|
31
|
+
// slug+stage heuristic only for entries that don't have one (entries
|
|
32
|
+
// created pre-#140 fix and not yet doctor-repaired).
|
|
33
|
+
let artifactPath;
|
|
34
|
+
if (entry.artifactPath) {
|
|
35
|
+
artifactPath = join(projectRoot, entry.artifactPath);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const stage = entry.priorStage ?? entry.currentStage;
|
|
39
|
+
const pathFn = STAGE_ARTIFACT[stage];
|
|
40
|
+
if (pathFn === null) {
|
|
41
|
+
throw new Error(`No artifact path for stage ${stage}`);
|
|
42
|
+
}
|
|
43
|
+
const contentDir = getContentDir(projectRoot);
|
|
44
|
+
artifactPath = pathFn(entry.slug, contentDir);
|
|
37
45
|
}
|
|
38
|
-
const artifactPath = pathFn(entry.slug, contentDir);
|
|
39
46
|
const artifactBody = await readFile(artifactPath, 'utf8');
|
|
40
47
|
return { entry, artifactBody, artifactPath };
|
|
41
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-resolver.js","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"entry-resolver.js","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAStD,MAAM,cAAc,GAAyE;IAC3F,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC;IACrD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC;IAC1D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;IAC3C,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,IAAY;IAClE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAEnD,oEAAoE;IACpE,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,YAAoB,CAAC;IACzB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,CAAC;QACrD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAC9C,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Studio version surfacing (#111).
|
|
3
|
+
*
|
|
4
|
+
* Reads the studio's own package.json via `import.meta.url` so the
|
|
5
|
+
* version is always whatever was published / built — no env-var
|
|
6
|
+
* juggling, works for source-loaded plugin paths AND cache-installed
|
|
7
|
+
* paths. Memoized: read once at module load, reuse across requests.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getStudioVersion(): string;
|
|
10
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,wBAAgB,gBAAgB,IAAI,MAAM,CAazC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Studio version surfacing (#111).
|
|
3
|
+
*
|
|
4
|
+
* Reads the studio's own package.json via `import.meta.url` so the
|
|
5
|
+
* version is always whatever was published / built — no env-var
|
|
6
|
+
* juggling, works for source-loaded plugin paths AND cache-installed
|
|
7
|
+
* paths. Memoized: read once at module load, reuse across requests.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
import { dirname, resolve } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
let memoized;
|
|
13
|
+
export function getStudioVersion() {
|
|
14
|
+
if (memoized !== undefined)
|
|
15
|
+
return memoized;
|
|
16
|
+
// Source layout: packages/studio/dist/lib/version.js → ../.. = packages/studio/
|
|
17
|
+
// tsx-from-source layout: packages/studio/src/lib/version.ts → ../.. = packages/studio/
|
|
18
|
+
const here = fileURLToPath(import.meta.url);
|
|
19
|
+
const pkgPath = resolve(dirname(here), '..', '..', 'package.json');
|
|
20
|
+
try {
|
|
21
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
22
|
+
memoized = pkg.version ?? 'unknown';
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
memoized = 'unknown';
|
|
26
|
+
}
|
|
27
|
+
return memoized;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,IAAI,QAA4B,CAAC;AAEjC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,gFAAgF;IAChF,wFAAwF;IACxF,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC/E,QAAQ,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/pages/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAqJzD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,WAAW,GACrB,MAAM,CA2CR;AAkMD,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/pages/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAqJzD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,WAAW,GACrB,MAAM,CA2CR;AAkMD,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuE3C"}
|
package/dist/pages/content.js
CHANGED
|
@@ -166,7 +166,7 @@ export function renderContentTopLevel(ctx, getIndex) {
|
|
|
166
166
|
// #29: lightbox listener for image thumbnails in detail-panel
|
|
167
167
|
// scrap rows. Idempotent — safe to load on the top-level page
|
|
168
168
|
// too (no scrap rows there → no work).
|
|
169
|
-
scriptModules: ['
|
|
169
|
+
scriptModules: ['content-view-client'],
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
// ---------------------------------------------------------------------------
|
|
@@ -339,6 +339,18 @@ export async function renderContentProject(ctx, site, projectSlug, selectedPath,
|
|
|
339
339
|
const sp = loadProjectsForSite(ctx, site, getIndex);
|
|
340
340
|
const project = sp.projects.find((p) => p.rootSlug === projectSlug);
|
|
341
341
|
if (!project) {
|
|
342
|
+
// #145: a URL of the form `/dev/content/<site>/<slug>` may refer to
|
|
343
|
+
// an entry whose actual on-disk artifact lives DEEP in the tree
|
|
344
|
+
// (e.g. `<contentDir>/1.0/<slug>.md`). Such entries appear as
|
|
345
|
+
// sub-nodes under their root segment, not as top-level projects.
|
|
346
|
+
// Walk the assembled tree once for a node whose path's basename
|
|
347
|
+
// matches the requested slug; if found, redirect to the canonical
|
|
348
|
+
// deep URL instead of 404'ing.
|
|
349
|
+
const deepHit = findNodeBySlugBasename(sp.projects, projectSlug);
|
|
350
|
+
if (deepHit !== null) {
|
|
351
|
+
const target = `/dev/content/${site}/${encodeURI(deepHit)}`;
|
|
352
|
+
return { status: 200, html: redirectHtml(target) };
|
|
353
|
+
}
|
|
342
354
|
return {
|
|
343
355
|
status: 404,
|
|
344
356
|
html: renderNotFound(`unknown project: ${projectSlug} on ${site}`),
|
|
@@ -385,10 +397,46 @@ export async function renderContentProject(ctx, site, projectSlug, selectedPath,
|
|
|
385
397
|
bodyHtml: body,
|
|
386
398
|
// #29: scrap rows in the detail panel have image thumbnails;
|
|
387
399
|
// wire up the lightbox.
|
|
388
|
-
scriptModules: ['
|
|
400
|
+
scriptModules: ['content-view-client'],
|
|
389
401
|
}),
|
|
390
402
|
};
|
|
391
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* #145: walk projects' trees in DFS order and return the first node
|
|
406
|
+
* whose path's last segment matches `slug`. Used to redirect
|
|
407
|
+
* slug-only URLs to their canonical deep path.
|
|
408
|
+
*/
|
|
409
|
+
function findNodeBySlugBasename(projects, slug) {
|
|
410
|
+
for (const project of projects) {
|
|
411
|
+
const found = walkForBasename(project.root, slug);
|
|
412
|
+
if (found !== null)
|
|
413
|
+
return found;
|
|
414
|
+
}
|
|
415
|
+
return null;
|
|
416
|
+
}
|
|
417
|
+
function walkForBasename(node, slug) {
|
|
418
|
+
const last = node.path.split('/').pop() ?? '';
|
|
419
|
+
if (last === slug)
|
|
420
|
+
return node.path;
|
|
421
|
+
for (const child of node.children) {
|
|
422
|
+
const found = walkForBasename(child, slug);
|
|
423
|
+
if (found !== null)
|
|
424
|
+
return found;
|
|
425
|
+
}
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Server-side meta-refresh redirect. Used when we want to land the
|
|
430
|
+
* adopter at a different URL but can't issue a 302 from the page
|
|
431
|
+
* renderer (we return a result tuple, not a Response). Browsers honor
|
|
432
|
+
* the meta refresh; bots see a usable HTML body.
|
|
433
|
+
*/
|
|
434
|
+
function redirectHtml(target) {
|
|
435
|
+
const escaped = target.replace(/&/g, '&').replace(/"/g, '"');
|
|
436
|
+
return `<!doctype html><meta http-equiv="refresh" content="0;url=${escaped}">` +
|
|
437
|
+
`<title>Redirecting…</title>` +
|
|
438
|
+
`<a href="${escaped}">Redirecting to ${escaped}</a>`;
|
|
439
|
+
}
|
|
392
440
|
function renderNotFound(message) {
|
|
393
441
|
const body = html `
|
|
394
442
|
${renderEditorialFolio('content', 'not found')}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/pages/content.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/pages/content.ts"],"names":[],"mappings":"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"}
|
package/dist/pages/content.ts
CHANGED
|
@@ -245,7 +245,7 @@ export function renderContentTopLevel(
|
|
|
245
245
|
// #29: lightbox listener for image thumbnails in detail-panel
|
|
246
246
|
// scrap rows. Idempotent — safe to load on the top-level page
|
|
247
247
|
// too (no scrap rows there → no work).
|
|
248
|
-
scriptModules: ['
|
|
248
|
+
scriptModules: ['content-view-client'],
|
|
249
249
|
});
|
|
250
250
|
}
|
|
251
251
|
|
|
@@ -454,6 +454,18 @@ export async function renderContentProject(
|
|
|
454
454
|
const sp = loadProjectsForSite(ctx, site, getIndex);
|
|
455
455
|
const project = sp.projects.find((p) => p.rootSlug === projectSlug);
|
|
456
456
|
if (!project) {
|
|
457
|
+
// #145: a URL of the form `/dev/content/<site>/<slug>` may refer to
|
|
458
|
+
// an entry whose actual on-disk artifact lives DEEP in the tree
|
|
459
|
+
// (e.g. `<contentDir>/1.0/<slug>.md`). Such entries appear as
|
|
460
|
+
// sub-nodes under their root segment, not as top-level projects.
|
|
461
|
+
// Walk the assembled tree once for a node whose path's basename
|
|
462
|
+
// matches the requested slug; if found, redirect to the canonical
|
|
463
|
+
// deep URL instead of 404'ing.
|
|
464
|
+
const deepHit = findNodeBySlugBasename(sp.projects, projectSlug);
|
|
465
|
+
if (deepHit !== null) {
|
|
466
|
+
const target = `/dev/content/${site}/${encodeURI(deepHit)}`;
|
|
467
|
+
return { status: 200, html: redirectHtml(target) };
|
|
468
|
+
}
|
|
457
469
|
return {
|
|
458
470
|
status: 404,
|
|
459
471
|
html: renderNotFound(`unknown project: ${projectSlug} on ${site}`),
|
|
@@ -503,11 +515,50 @@ export async function renderContentProject(
|
|
|
503
515
|
bodyHtml: body,
|
|
504
516
|
// #29: scrap rows in the detail panel have image thumbnails;
|
|
505
517
|
// wire up the lightbox.
|
|
506
|
-
scriptModules: ['
|
|
518
|
+
scriptModules: ['content-view-client'],
|
|
507
519
|
}),
|
|
508
520
|
};
|
|
509
521
|
}
|
|
510
522
|
|
|
523
|
+
/**
|
|
524
|
+
* #145: walk projects' trees in DFS order and return the first node
|
|
525
|
+
* whose path's last segment matches `slug`. Used to redirect
|
|
526
|
+
* slug-only URLs to their canonical deep path.
|
|
527
|
+
*/
|
|
528
|
+
function findNodeBySlugBasename(
|
|
529
|
+
projects: readonly ContentProject[],
|
|
530
|
+
slug: string,
|
|
531
|
+
): string | null {
|
|
532
|
+
for (const project of projects) {
|
|
533
|
+
const found = walkForBasename(project.root, slug);
|
|
534
|
+
if (found !== null) return found;
|
|
535
|
+
}
|
|
536
|
+
return null;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
function walkForBasename(node: ContentNode, slug: string): string | null {
|
|
540
|
+
const last = node.path.split('/').pop() ?? '';
|
|
541
|
+
if (last === slug) return node.path;
|
|
542
|
+
for (const child of node.children) {
|
|
543
|
+
const found = walkForBasename(child, slug);
|
|
544
|
+
if (found !== null) return found;
|
|
545
|
+
}
|
|
546
|
+
return null;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Server-side meta-refresh redirect. Used when we want to land the
|
|
551
|
+
* adopter at a different URL but can't issue a 302 from the page
|
|
552
|
+
* renderer (we return a result tuple, not a Response). Browsers honor
|
|
553
|
+
* the meta refresh; bots see a usable HTML body.
|
|
554
|
+
*/
|
|
555
|
+
function redirectHtml(target: string): string {
|
|
556
|
+
const escaped = target.replace(/&/g, '&').replace(/"/g, '"');
|
|
557
|
+
return `<!doctype html><meta http-equiv="refresh" content="0;url=${escaped}">` +
|
|
558
|
+
`<title>Redirecting…</title>` +
|
|
559
|
+
`<a href="${escaped}">Redirecting to ${escaped}</a>`;
|
|
560
|
+
}
|
|
561
|
+
|
|
511
562
|
function renderNotFound(message: string): string {
|
|
512
563
|
const body = html`
|
|
513
564
|
${renderEditorialFolio('content', 'not found')}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard/header.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard/header.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAwBxD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,IAAI,GACR,OAAO,CA4BT;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { DASHBOARD_STAGE_ORDER } from "./data.js";
|
|
10
10
|
import { html, unsafe } from "../html.js";
|
|
11
|
+
import { getStudioVersion } from "../../lib/version.js";
|
|
11
12
|
const MONTH_NAMES = [
|
|
12
13
|
'January', 'February', 'March', 'April', 'May', 'June',
|
|
13
14
|
'July', 'August', 'September', 'October', 'November', 'December',
|
|
@@ -43,6 +44,8 @@ export function renderHeader(data, projectRoot, now) {
|
|
|
43
44
|
<p class="er-pagehead__deck">
|
|
44
45
|
Project: <code>${projectRoot}</code>
|
|
45
46
|
· <a class="er-link-marginalia" href="/dev/editorial-help">the manual</a>
|
|
47
|
+
· <span class="er-pagehead__version" data-studio-version
|
|
48
|
+
title="@deskwork/studio version">v${getStudioVersion()}</span>
|
|
46
49
|
</p>
|
|
47
50
|
<p class="er-pagehead__meta">
|
|
48
51
|
<span>${issueDate}</span>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/pages/dashboard/header.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IACtD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;CACjE,CAAC;AAEF,SAAS,iBAAiB,CAAC,IAAmB;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW;YAAE,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU;YAAE,CAAC,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAmB,EACnB,WAAmB,EACnB,GAAS;IAET,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;IACzF,OAAO,MAAM,CAAC,IAAI,CAAA;;;aAGP,MAAM,eAAe,QAAQ;;;;;;uBAMnB,WAAW
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/pages/dashboard/header.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IACtD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;CACjE,CAAC;AAEF,SAAS,iBAAiB,CAAC,IAAmB;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW;YAAE,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU;YAAE,CAAC,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAmB,EACnB,WAAmB,EACnB,GAAS;IAET,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;IACzF,OAAO,MAAM,CAAC,IAAI,CAAA;;;aAGP,MAAM,eAAe,QAAQ;;;;;;uBAMnB,WAAW;;;4CAGU,gBAAgB,EAAE;;;cAGhD,SAAS;;cAET,IAAI,CAAC,OAAO,CAAC,MAAM;;cAEnB,iBAAiB,CAAC,IAAI,CAAC;;cAEvB,aAAa,CAAC,IAAI,CAAC;;YAErB,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAA;;;;;;;UAOV,qBAAqB,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAA,4CAA4C,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAChG;;eAEM,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import type { DashboardData } from './data.ts';
|
|
11
11
|
import { DASHBOARD_STAGE_ORDER } from './data.ts';
|
|
12
12
|
import { html, unsafe, type RawHtml } from '../html.ts';
|
|
13
|
+
import { getStudioVersion } from '../../lib/version.ts';
|
|
13
14
|
|
|
14
15
|
const MONTH_NAMES = [
|
|
15
16
|
'January', 'February', 'March', 'April', 'May', 'June',
|
|
@@ -51,6 +52,8 @@ export function renderHeader(
|
|
|
51
52
|
<p class="er-pagehead__deck">
|
|
52
53
|
Project: <code>${projectRoot}</code>
|
|
53
54
|
· <a class="er-link-marginalia" href="/dev/editorial-help">the manual</a>
|
|
55
|
+
· <span class="er-pagehead__version" data-studio-version
|
|
56
|
+
title="@deskwork/studio version">v${getStudioVersion()}</span>
|
|
54
57
|
</p>
|
|
55
58
|
<p class="er-pagehead__meta">
|
|
56
59
|
<span>${issueDate}</span>
|
|
@@ -22,9 +22,12 @@ import type { Entry, Stage } from '@deskwork/core/schema/entry';
|
|
|
22
22
|
export declare function renderRow(entry: Entry, index: number): RawHtml;
|
|
23
23
|
/**
|
|
24
24
|
* Render one full stage section: heading + ornaments + count + rows.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* Empty stages render compact (just the heading, no placeholder body)
|
|
27
|
+
* — keeps the operator's sense of pipeline shape without padding the
|
|
28
|
+
* dashboard with multi-line empty placeholders for low-volume
|
|
29
|
+
* calendars (#112). The hover title still surfaces the stage's
|
|
30
|
+
* "what to run next" hint when the operator points at the heading.
|
|
28
31
|
*/
|
|
29
32
|
export declare function renderStageSection(stage: Stage, entries: readonly Entry[]): RawHtml;
|
|
30
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard/section.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AA6BhE;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard/section.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AA6BhE;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAgC9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,CA0BnF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAWvD"}
|
|
@@ -60,27 +60,40 @@ export function renderRow(entry, index) {
|
|
|
60
60
|
<span class="er-calendar-title">${entry.title}</span>
|
|
61
61
|
<span class="er-calendar-meta er-calendar-meta-iteration"
|
|
62
62
|
data-iteration="${iteration}">iteration: ${iteration}</span>
|
|
63
|
-
<
|
|
64
|
-
title="${entry.updatedAt}">${formatDate(entry.updatedAt)}</
|
|
63
|
+
<time class="er-calendar-meta er-calendar-meta-updated" data-format="date"
|
|
64
|
+
datetime="${entry.updatedAt}" title="${entry.updatedAt}">${formatDate(entry.updatedAt)}</time>
|
|
65
65
|
</div>
|
|
66
|
-
<span class="er-calendar-status"
|
|
66
|
+
<span class="er-calendar-status"><a href="${reviewLink}"
|
|
67
|
+
title="open the review surface for ${entry.slug}"
|
|
68
|
+
class="er-stamp-link">${renderReviewStateBadge(entry.reviewState)}</a></span>
|
|
67
69
|
${renderRowActions(entry)}
|
|
68
70
|
</div>
|
|
69
71
|
</div>`);
|
|
70
72
|
}
|
|
71
73
|
/**
|
|
72
74
|
* Render one full stage section: heading + ornaments + count + rows.
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
75
|
+
*
|
|
76
|
+
* Empty stages render compact (just the heading, no placeholder body)
|
|
77
|
+
* — keeps the operator's sense of pipeline shape without padding the
|
|
78
|
+
* dashboard with multi-line empty placeholders for low-volume
|
|
79
|
+
* calendars (#112). The hover title still surfaces the stage's
|
|
80
|
+
* "what to run next" hint when the operator points at the heading.
|
|
76
81
|
*/
|
|
77
82
|
export function renderStageSection(stage, entries) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
if (entries.length === 0) {
|
|
84
|
+
return unsafe(html `
|
|
85
|
+
<section class="er-section er-section--empty"
|
|
86
|
+
id="stage-${stage.toLowerCase()}" data-stage-section="${stage}"
|
|
87
|
+
data-empty-stage="${stage}">
|
|
88
|
+
<h2 class="er-section-head er-section-head--empty"
|
|
89
|
+
title="${STAGE_EMPTY_MESSAGES[stage]}">
|
|
90
|
+
<span>${stage}</span>
|
|
91
|
+
<span class="ornament">${STAGE_ORNAMENTS[stage]}</span>
|
|
92
|
+
<span class="count">№ 00</span>
|
|
93
|
+
</h2>
|
|
94
|
+
</section>`);
|
|
95
|
+
}
|
|
96
|
+
const body = unsafe(entries.map((e, i) => renderRow(e, i).__raw).join(''));
|
|
84
97
|
return unsafe(html `
|
|
85
98
|
<section class="er-section" id="stage-${stage.toLowerCase()}" data-stage-section="${stage}">
|
|
86
99
|
<h2 class="er-section-head">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../../src/pages/dashboard/section.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAExD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,eAAe,GAA0B;IAC7C,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,GAAG;CACf,CAAC;AAEF,MAAM,oBAAoB,GAA0B;IAClD,KAAK,EAAE,kDAAkD;IACzD,OAAO,EAAE,gEAAgE;IACzE,SAAS,EAAE,uBAAuB;IAClC,QAAQ,EAAE,uBAAuB;IACjC,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,yBAAyB;IACpC,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,uBAAuB;CACnC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,KAAa;IACnD,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,yBAAyB,KAAK,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3F,kEAAkE;IAClE,wEAAwE;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,MAAM,UAAU,GACd,KAAK,GAAG,CAAC;QACP,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA,gBAAgB,KAAK,4BAA4B,KAAK,GAAG,CAAC;QACvE,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,MAAM,CAAC,IAAI,CAAA;mEAC+C,MAAM,IAAI,UAAU;iDACtC,KAAK,CAAC,YAAY;qBAC9C,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,IAAI,kBAAkB,MAAM;qCAC5C,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;+CAExB,UAAU;8CACX,KAAK,CAAC,IAAI;4CACZ,KAAK,CAAC,KAAK;;8BAEzB,SAAS,gBAAgB,SAAS;;
|
|
1
|
+
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../../src/pages/dashboard/section.ts"],"names":[],"mappings":"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"}
|