ctxr-cli 0.16.0 → 0.18.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 (92) hide show
  1. package/README.md +4 -2
  2. package/dist/adapters/harness/claude-code.d.ts.map +1 -1
  3. package/dist/adapters/harness/claude-code.js +34 -37
  4. package/dist/adapters/harness/claude-code.js.map +1 -1
  5. package/dist/adapters/types.d.ts +14 -14
  6. package/dist/adapters/types.d.ts.map +1 -1
  7. package/dist/commands/adapters-generate.d.ts.map +1 -1
  8. package/dist/commands/adapters-generate.js +8 -10
  9. package/dist/commands/adapters-generate.js.map +1 -1
  10. package/dist/commands/init.js +1 -1
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/publish-check.d.ts +7 -0
  13. package/dist/commands/publish-check.d.ts.map +1 -1
  14. package/dist/commands/publish-check.js +8 -3
  15. package/dist/commands/publish-check.js.map +1 -1
  16. package/dist/commands/publish-new.d.ts +8 -0
  17. package/dist/commands/publish-new.d.ts.map +1 -1
  18. package/dist/commands/publish-new.js +6 -3
  19. package/dist/commands/publish-new.js.map +1 -1
  20. package/dist/commands/serve.d.ts.map +1 -1
  21. package/dist/commands/serve.js +24 -2
  22. package/dist/commands/serve.js.map +1 -1
  23. package/dist/commands/session-start.d.ts +7 -1
  24. package/dist/commands/session-start.d.ts.map +1 -1
  25. package/dist/commands/session-start.js +25 -5
  26. package/dist/commands/session-start.js.map +1 -1
  27. package/dist/config/defaults.d.ts +5 -0
  28. package/dist/config/defaults.d.ts.map +1 -1
  29. package/dist/config/defaults.js +5 -0
  30. package/dist/config/defaults.js.map +1 -1
  31. package/dist/config/schema.d.ts +3 -0
  32. package/dist/config/schema.d.ts.map +1 -1
  33. package/dist/config/schema.js +50 -0
  34. package/dist/config/schema.js.map +1 -1
  35. package/dist/core/browse/nav.d.ts.map +1 -1
  36. package/dist/core/browse/nav.js +51 -5
  37. package/dist/core/browse/nav.js.map +1 -1
  38. package/dist/core/browse/page-url.d.ts +68 -0
  39. package/dist/core/browse/page-url.d.ts.map +1 -0
  40. package/dist/core/browse/page-url.js +101 -0
  41. package/dist/core/browse/page-url.js.map +1 -0
  42. package/dist/core/browse/routes.d.ts +25 -0
  43. package/dist/core/browse/routes.d.ts.map +1 -1
  44. package/dist/core/browse/routes.js +36 -1
  45. package/dist/core/browse/routes.js.map +1 -1
  46. package/dist/core/errors.d.ts +26 -0
  47. package/dist/core/errors.d.ts.map +1 -1
  48. package/dist/core/errors.js +49 -0
  49. package/dist/core/errors.js.map +1 -1
  50. package/dist/core/git/worktree.d.ts +10 -2
  51. package/dist/core/git/worktree.d.ts.map +1 -1
  52. package/dist/core/git/worktree.js +11 -2
  53. package/dist/core/git/worktree.js.map +1 -1
  54. package/dist/core/hooks.d.ts +9 -5
  55. package/dist/core/hooks.d.ts.map +1 -1
  56. package/dist/core/hooks.js +19 -9
  57. package/dist/core/hooks.js.map +1 -1
  58. package/dist/core/json-config-merge.d.ts +9 -1
  59. package/dist/core/json-config-merge.d.ts.map +1 -1
  60. package/dist/core/json-config-merge.js +37 -7
  61. package/dist/core/json-config-merge.js.map +1 -1
  62. package/dist/core/publish/filing.d.ts +5 -24
  63. package/dist/core/publish/filing.d.ts.map +1 -1
  64. package/dist/core/publish/filing.js +5 -36
  65. package/dist/core/publish/filing.js.map +1 -1
  66. package/dist/core/session.d.ts +61 -1
  67. package/dist/core/session.d.ts.map +1 -1
  68. package/dist/core/session.js +111 -2
  69. package/dist/core/session.js.map +1 -1
  70. package/dist/core/slug.d.ts +38 -0
  71. package/dist/core/slug.d.ts.map +1 -0
  72. package/dist/core/slug.js +50 -0
  73. package/dist/core/slug.js.map +1 -0
  74. package/dist/core/write-lifecycle/path-gate.d.ts +0 -28
  75. package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
  76. package/dist/core/write-lifecycle/path-gate.js +0 -44
  77. package/dist/core/write-lifecycle/path-gate.js.map +1 -1
  78. package/dist/run.d.ts.map +1 -1
  79. package/dist/run.js +53 -16
  80. package/dist/run.js.map +1 -1
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/package.json +1 -1
  84. package/templates/conventions/baseline-conventions.md +1 -1
  85. package/templates/skills/ctxr-publish.md +12 -0
  86. package/templates/skills/ctxr-session-lifecycle.md +9 -0
  87. package/templates/skills/ctxr-submit.md +2 -1
  88. package/dist/commands/adapters-write-gate.d.ts +0 -20
  89. package/dist/commands/adapters-write-gate.d.ts.map +0 -1
  90. package/dist/commands/adapters-write-gate.js +0 -77
  91. package/dist/commands/adapters-write-gate.js.map +0 -1
  92. package/templates/hooks/claude-code-write-gate.sh +0 -43
@@ -7,6 +7,12 @@ export interface SessionStartData {
7
7
  branch: string;
8
8
  startPoint: string;
9
9
  fetched: boolean;
10
+ /** The normalized label this session was named with, or null when none was given. */
11
+ label: string | null;
12
+ }
13
+ export interface SessionStartOptions {
14
+ /** A short name for what the session is for; becomes part of the branch and worktree name. */
15
+ label?: string;
10
16
  }
11
17
  /**
12
18
  * write-lifecycle spec: "session start (an isolated git worktree off a
@@ -14,5 +20,5 @@ export interface SessionStartData {
14
20
  * local store), this degrades honestly to the local default branch's
15
21
  * current tip — fetching is simply not possible without a remote.
16
22
  */
17
- export declare function execute(env: RunEnv, store: Store): Promise<CommandOutcome<SessionStartData>>;
23
+ export declare function execute(env: RunEnv, store: Store, opts?: SessionStartOptions): Promise<CommandOutcome<SessionStartData>>;
18
24
  //# sourceMappingURL=session-start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAoClG"}
1
+ {"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAuD3C"}
@@ -1,6 +1,7 @@
1
1
  import { ExitCode } from '../core/exit-codes.js';
2
+ import { SessionLabelUnusableError, SessionNameExistsError, SessionWorktreeRefusedError } from '../core/errors.js';
2
3
  import { addWorktree, fetchOrigin, hasRemote } from '../core/git/worktree.js';
3
- import { generateSessionBranchName, worktreePathFor } from '../core/session.js';
4
+ import { findSessionWorktreeByLabel, generateSessionBranchName, sessionLabelSlug, worktreePathFor } from '../core/session.js';
4
5
  import { updateAdvisory } from '../core/version-check.js';
5
6
  export const requires = { store: 'required' };
6
7
  /**
@@ -9,9 +10,23 @@ export const requires = { store: 'required' };
9
10
  * local store), this degrades honestly to the local default branch's
10
11
  * current tip — fetching is simply not possible without a remote.
11
12
  */
12
- export async function execute(env, store) {
13
+ export async function execute(env, store, opts = {}) {
13
14
  const git = env.git;
14
15
  const defaultBranch = store.config.git.default_branch;
16
+ // Ahead of the fetch, so a label that can never work costs no network round
17
+ // trip and leaves nothing behind.
18
+ let labelSlug = null;
19
+ if (opts.label !== undefined) {
20
+ labelSlug = sessionLabelSlug(opts.label);
21
+ if (labelSlug === '')
22
+ throw new SessionLabelUnusableError(opts.label);
23
+ // A label identifies at most one session at a time. Checked against the
24
+ // sessions on disk rather than against the composed branch name, which
25
+ // carries a timestamp and so would almost never collide (D4).
26
+ const existing = await findSessionWorktreeByLabel(store.root, store.config, labelSlug);
27
+ if (existing !== null)
28
+ throw new SessionNameExistsError(labelSlug, existing);
29
+ }
15
30
  const remoteExists = await hasRemote(git, store.root);
16
31
  let startPoint;
17
32
  let fetched = false;
@@ -22,9 +37,14 @@ export async function execute(env, store) {
22
37
  // when the remote exists but doesn't yet have this branch (e.g. nothing
23
38
  // has been pushed yet) — both are honest, expected states, not errors.
24
39
  startPoint = fetched ? `origin/${defaultBranch}` : defaultBranch;
25
- const branch = generateSessionBranchName(store.config);
40
+ const branch = generateSessionBranchName(store.config, new Date(), labelSlug ?? undefined);
26
41
  const worktreeDir = worktreePathFor(store, branch);
27
- await addWorktree(git, store.root, worktreeDir, branch, startPoint);
42
+ // git decides whether the worktree can actually be created: the label scan
43
+ // above knows nothing about an unusable branch prefix, an occupied path, or a
44
+ // repository problem, and any of those is still the caller's problem to see (D7).
45
+ const added = await addWorktree(git, store.root, worktreeDir, branch, startPoint, { allowFailure: true });
46
+ if (added.exitCode !== 0)
47
+ throw new SessionWorktreeRefusedError(branch, worktreeDir, added.stderr);
28
48
  // cli-contract: the skill-path trigger for the release advisory — once per
29
49
  // session, at the command the lifecycle skill names first, on a command that
30
50
  // already reaches the network to fetch the default branch. Deliberately
@@ -33,7 +53,7 @@ export async function execute(env, store) {
33
53
  const advisory = await updateAdvisory(env, store);
34
54
  return {
35
55
  exitCode: ExitCode.Ok,
36
- data: { worktree: worktreeDir, branch, startPoint, fetched },
56
+ data: { worktree: worktreeDir, branch, startPoint, fetched, label: labelSlug },
37
57
  findings: advisory.findings,
38
58
  notices: advisory.notice ? [advisory.notice] : undefined,
39
59
  humanSummary: `Session worktree at "${worktreeDir}" on branch "${branch}" (from ${startPoint}).`,
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAS/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtD,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IACD,yEAAyE;IACzE,wEAAwE;IACxE,uEAAuE;IACvE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjE,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEnD,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEpE,2EAA2E;IAC3E,6EAA6E;IAC7E,wEAAwE;IACxE,uEAAuE;IACvE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAElD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;QAC5D,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,YAAY,EAAE,wBAAwB,WAAW,gBAAgB,MAAM,WAAW,UAAU,IAAI;QAChG,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"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"}
@@ -195,6 +195,11 @@ export declare const DEFAULT_ADAPTERS: readonly AdapterDeclaration[];
195
195
  * sites branch on the key's presence to decide whether the store has a
196
196
  * mission mechanism at all. `DEFAULT_MISSION_PATH` is what `init` seeds,
197
197
  * not what an omission resolves to.
198
+ * - `serve.base_url` is an opt-in whose absence is meaningful in the same way,
199
+ * and unknowable besides: contexture cannot know the address a store's
200
+ * browsing surface is reachable at. Undeclared, a command reporting where a
201
+ * page is served reports the server-relative route alone and invents no
202
+ * origin, so there is nothing for `init` to seed either.
198
203
  */
199
204
  /**
200
205
  * cli-contract (keep-the-installed-cli-current): the release advisory is on by
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
@@ -199,6 +199,11 @@ export const DEFAULT_ADAPTERS = [{ id: 'claude-code', kind: 'harness-generation'
199
199
  * sites branch on the key's presence to decide whether the store has a
200
200
  * mission mechanism at all. `DEFAULT_MISSION_PATH` is what `init` seeds,
201
201
  * not what an omission resolves to.
202
+ * - `serve.base_url` is an opt-in whose absence is meaningful in the same way,
203
+ * and unknowable besides: contexture cannot know the address a store's
204
+ * browsing surface is reachable at. Undeclared, a command reporting where a
205
+ * page is served reports the server-relative route alone and invents no
206
+ * origin, so there is nothing for `init` to seed either.
202
207
  */
203
208
  /**
204
209
  * cli-contract (keep-the-installed-cli-current): the release advisory is on by
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,9 @@ export declare const StoreConfigSchema: z.ZodObject<{
86
86
  publish: z.ZodPrefault<z.ZodObject<{
87
87
  path: z.ZodDefault<z.ZodString>;
88
88
  }, z.core.$strip>>;
89
+ serve: z.ZodOptional<z.ZodObject<{
90
+ base_url: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>>;
89
92
  templates: z.ZodPrefault<z.ZodObject<{
90
93
  path: z.ZodDefault<z.ZodString>;
91
94
  installed: z.ZodDefault<z.ZodArray<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAYH;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB;;;;;iBAKvB,CAAC;AA6OH,QAAA,MAAM,wBAAwB;;;;;;;iBAM5B,CAAC;AAiBH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwC1B,CAAC;AAEL,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAYH;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB;;;;;iBAKvB,CAAC;AAwRH,QAAA,MAAM,wBAAwB;;;;;;;iBAM5B,CAAC;AAiBH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgD1B,CAAC;AAEL,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -94,9 +94,51 @@ const CatalogSchema = z.object({
94
94
  * no default-merging, so a required field here would break every pre-existing
95
95
  * store. `init` still writes it explicitly for a freshly generated config.
96
96
  */
97
+ /**
98
+ * An absolute `http`/`https` base URL: scheme and host only, optionally with a
99
+ * port and a path prefix. Query and fragment are refused because a base URL
100
+ * carrying either cannot be joined to a route without producing nonsense.
101
+ */
102
+ function isAbsoluteHttpBase(value) {
103
+ let parsed;
104
+ try {
105
+ parsed = new URL(value);
106
+ }
107
+ catch {
108
+ return false;
109
+ }
110
+ return (parsed.protocol === 'http:' || parsed.protocol === 'https:') && parsed.search === '' && parsed.hash === '';
111
+ }
97
112
  const PublishSchema = z.object({
98
113
  path: z.string().min(1).default(SHIPPED_DEFAULTS.publish.path),
99
114
  });
115
+ /**
116
+ * publish-names-where-the-page-is-served (D6): the base URL at which this
117
+ * store's browsing surface is reachable, so a command that names a page can
118
+ * name a URL rather than a bare route.
119
+ *
120
+ * A full base URL rather than a host name: a host alone forces the tool to
121
+ * guess `http` against `https`, and cannot carry a port or the path prefix a
122
+ * store behind a reverse proxy is served under. Validated here so a typo fails
123
+ * at config load, where every other malformed value fails, rather than at the
124
+ * point some command tries to print it.
125
+ *
126
+ * `local-browsing-surface` D6 declined a `serve.port` key because an
127
+ * invocation-time choice with no store-specific default does not belong in the
128
+ * config. That test still stands and a port still fails it; an origin passes
129
+ * it — the address a store's pages are published at is a durable fact about
130
+ * that store, unknowable to the tool, and read by `publish new` and
131
+ * `publish check` rather than by any flag-bearing invocation.
132
+ */
133
+ const ServeSchema = z.object({
134
+ base_url: z
135
+ .string()
136
+ .min(1)
137
+ .refine(isAbsoluteHttpBase, {
138
+ message: 'must be an absolute http(s) base URL with no query or fragment, e.g. "https://ctx.example.com" or "https://example.com/ctx/"',
139
+ })
140
+ .optional(),
141
+ });
100
142
  /**
101
143
  * harness-portability spec (vendored-craft-skills): which vendored
102
144
  * third-party skills a store wants, defaulting to the shipped set so a
@@ -302,6 +344,14 @@ export const StoreConfigSchema = z
302
344
  write_lifecycle: WriteLifecycleSchema.prefault({}),
303
345
  catalog: CatalogSchema.prefault({}),
304
346
  publish: PublishSchema.prefault({}),
347
+ // `.optional()`, not `.prefault({})` like every block above it (D7):
348
+ // `withoutShippedDefaults` keeps any key absent from `SHIPPED_DEFAULTS`
349
+ // verbatim, so a prefaulted block would resolve to `serve: {}` for every
350
+ // store and `ctxr init` would start writing an empty `serve:` block into
351
+ // every new config — against the requirement that a written configuration
352
+ // records only the store's own decisions. Absent, it stays absent through
353
+ // parse, render and reparse.
354
+ serve: ServeSchema.optional(),
305
355
  templates: TemplatesSchema.prefault({}),
306
356
  skills: SkillsSchema.prefault({}),
307
357
  update_check: UpdateCheckSchema.prefault({}),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,wFAAwF;IACxF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACxE,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;IAClG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;IACtF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;IAC5F,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAClH,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACzF;;;;;;;;;;OAUG;IACH,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACvF,kGAAkG;IAClG,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAClG,gIAAgI;IAChI,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC;CACxG,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;IAChF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC;CACnF,CAAC,CAAC;AAEH,iKAAiK;AACjK,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,uBAAuB,CAAC;IACtH,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;CAClG,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9D,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC;CACnG,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/D,CAAC,CAAC;AAEH;;;;;GAKG;AACH;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC;CAClF,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;IAChE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;CAClF,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CAC7E,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;IACzE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC;IAC7E,iKAAiK;IACjK,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1F;;;;;;;;;;OAUG;IACH,yBAAyB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACrF,CAAC,CAAC;AAEL;;;;;;;;;GASG;AACH,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,uKAAuK;IACvK,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACtG;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACxB;;;;;;;OAOG;IACH,MAAM,kBAAkB,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACrD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,qBAAqB,CAAC;YAC7B,OAAO,EACL,0IAA0I;SAC7I,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,OAAO;QACL,mBAAmB,EAAE,kBAAkB;QACvC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,mEAAmE;QACnE,sEAAsE;QACtE,kEAAkE;QAClE,iEAAiE;QACjE,EAAE;QACF,sEAAsE;QACtE,yEAAyE;QACzE,sEAAsE;QACtE,yEAAyE;QACzE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,CAAC;CACzG,CAAC;KACD,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB;;;OAGG;IACH,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,IAAI,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC;IAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;IACnF,2EAA2E;IAC3E,wFAAwF;IACxF,wEAAwE;IACxE,+EAA+E;IAC/E,OAAO;QACL,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,YAAY;QAC3B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;KACjD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAEzD,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,8KAA8K;IAC9K,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,cAAc;IACxB,yEAAyE;IACzE,mEAAmE;IACnE,uEAAuE;IACvE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,eAAe,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClD,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjC,YAAY,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CACtE,CAAC;KACD,WAAW,EAAE;KACb,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B;;;;;;;;OAQG;IACH,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;YAC9B,OAAO,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,+CAA+C,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI;SACjH,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../../src/core/browse/nav.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAsHhF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMnD;AAED,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CASzD"}
1
+ {"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../../src/core/browse/nav.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkD,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAwK9F;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMnD;AAED,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUzD"}
@@ -1,15 +1,22 @@
1
1
  import { titleFor } from '../catalog/model.js';
2
+ import { previewRoute, publishRoute } from './page-url.js';
2
3
  import { escapeHtml } from './render.js';
3
- import { publishPages, PUBLISH_INDEX_FILE } from './routes.js';
4
+ import { previewPages, publishPages, PUBLISH_INDEX_FILE } from './routes.js';
4
5
  import { buildPathTree } from './tree.js';
5
6
  /**
6
- * The four content areas the browsing surface serves, in the one order both
7
+ * The five content areas the browsing surface serves, in the one order both
7
8
  * the navigation and the index page render them — declared once here so the
8
9
  * two cannot disagree about what that order is.
10
+ *
11
+ * preview-pages-before-they-land: the preview area sits directly after the
12
+ * published pages because it holds the same kind of thing in a different
13
+ * state, and reading the two adjacently is the whole point of serving them
14
+ * from one process.
9
15
  */
10
- const AREAS = ['publish', 'notes', 'catalog', 'graph'];
16
+ const AREAS = ['publish', 'preview', 'notes', 'catalog', 'graph'];
11
17
  const AREA_TITLES = {
12
18
  publish: 'Published pages',
19
+ preview: 'Preview',
13
20
  notes: 'Notes',
14
21
  catalog: 'Catalog',
15
22
  graph: 'Graph',
@@ -17,6 +24,7 @@ const AREA_TITLES = {
17
24
  /** The index page's anchor for each area, which is also what the navigation links to. */
18
25
  const AREA_ANCHORS = {
19
26
  publish: 'published-pages',
27
+ preview: 'preview',
20
28
  notes: 'notes',
21
29
  catalog: 'catalog',
22
30
  graph: 'graph',
@@ -67,6 +75,24 @@ function renderFlatList(items, hrefFor) {
67
75
  function groupLabelFor(table) {
68
76
  return (directoryPath) => table.groupLabels.get(directoryPath);
69
77
  }
78
+ /**
79
+ * preview-pages-before-they-land D5: a preview tree's paths carry the session
80
+ * worktree as their first segment, so `ctx-a` arrives here as
81
+ * `<worktree>/ctx-a` and would miss `groupLabels`, which `buildRouteTable`
82
+ * keys by store-relative layer path. Stripping the leading segment before the
83
+ * lookup is file-published-pages-by-location D8 applied unchanged — a folder
84
+ * reading `Ctx A` in one area and `ctx-a` in the other, inches apart, is the
85
+ * surprising outcome rather than the smaller one. The worktree segment itself
86
+ * strips to nothing, matches no layer, and keeps its own directory name (D2).
87
+ */
88
+ function previewGroupLabelFor(table) {
89
+ return (directoryPath) => {
90
+ const separator = directoryPath.indexOf('/');
91
+ if (separator === -1)
92
+ return undefined;
93
+ return table.groupLabels.get(directoryPath.slice(separator + 1));
94
+ };
95
+ }
70
96
  /** The listing for one area, rendered once and used by both the navigation and the index page. */
71
97
  function renderAreaContent(table, area) {
72
98
  switch (area) {
@@ -75,7 +101,26 @@ function renderAreaContent(table, area) {
75
101
  const tree = buildPathTree(pages,
76
102
  // serve-page-names-theme-and-nav-toggle D1: a page's declared name, falling back to its
77
103
  // directory segment — the same "one answer to what this is called" principle D6 gives notes.
78
- (page) => table.publishTitles.get(page) ?? lastSegment(page), (page) => `/publish/${encodeURI(page)}/${PUBLISH_INDEX_FILE}`, groupLabelFor(table));
104
+ (page) => table.publishTitles.get(page) ?? lastSegment(page), (page) => publishRoute(`${page}/${PUBLISH_INDEX_FILE}`), groupLabelFor(table));
105
+ return renderTree(tree, 0);
106
+ }
107
+ case 'preview': {
108
+ // One flat path list of `<worktree>/<page>` fed to the same primitive the
109
+ // publish area uses, so the worktree becomes the top-level group without
110
+ // a second tree-building path existing to disagree with the first.
111
+ const worktrees = [...table.previews.keys()].sort();
112
+ const entries = worktrees.flatMap((worktree) => previewPages(table, worktree).map((page) => ({ worktree, page, path: `${worktree}/${page}` })));
113
+ const byPath = new Map(entries.map((entry) => [entry.path, entry]));
114
+ const tree = buildPathTree(entries.map((entry) => entry.path),
115
+ // The same "one answer to what this is called" rule the publish area
116
+ // follows: the page's own declared name, else its directory segment.
117
+ (treePath) => {
118
+ const entry = byPath.get(treePath);
119
+ return table.previews.get(entry.worktree)?.titles.get(entry.page) ?? lastSegment(entry.page);
120
+ }, (treePath) => {
121
+ const entry = byPath.get(treePath);
122
+ return previewRoute(entry.worktree, `${entry.page}/${PUBLISH_INDEX_FILE}`);
123
+ }, previewGroupLabelFor(table));
79
124
  return renderTree(tree, 0);
80
125
  }
81
126
  case 'notes': {
@@ -108,7 +153,8 @@ export function renderNav(table) {
108
153
  }
109
154
  /** The index page's body: the same four areas, in the same order, from the same listings. */
110
155
  export function renderIndexBody(table) {
111
- const counts = `<p class="ctxr-summary">${publishPages(table).length} published page(s), ${table.notes.size} note(s), ${table.catalog.size} catalog section(s).</p>`;
156
+ const previewCount = [...table.previews.keys()].reduce((total, worktree) => total + previewPages(table, worktree).length, 0);
157
+ const counts = `<p class="ctxr-summary">${publishPages(table).length} published page(s), ${previewCount} page(s) in preview, ${table.notes.size} note(s), ${table.catalog.size} catalog section(s).</p>`;
112
158
  const sections = AREAS.map((area) => {
113
159
  const heading = `<h2 id="${AREA_ANCHORS[area]}">${escapeHtml(AREA_TITLES[area])}</h2>`;
114
160
  return `${heading}\n${renderAreaContent(table, area)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../src/core/browse/nav.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../src/core/browse/nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAyC,MAAM,WAAW,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAI3E,MAAM,WAAW,GAAqC;IACpD,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,yFAAyF;AACzF,MAAM,YAAY,GAAqC;IACrD,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAEzD,MAAM,UAAU,GAAG,4CAA4C,CAAC;AAEhE,SAAS,WAAW,CAAC,SAAiB;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,KAA0B,EAAE,KAAa;IAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAE3C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,uCAAuC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC5G,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACtD,yEAAyE;QACzE,0EAA0E;QAC1E,4EAA4E;QAC5E,2DAA2D;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,qCAAqC,IAAI,aAAa,OAAO,aAAa,QAAQ,iBAAiB,CAAC;IAC7G,CAAC,CAAC,CAAC;IAEH,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AACxD,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB,EAAE,OAAiC;IACjF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CACzB,CAAC,IAAI,EAAE,EAAE,CAAC,uCAAuC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,CAC3G,CAAC;IACF,OAAO,yBAAyB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAiB;IACtC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,KAAiB;IAC7C,OAAO,CAAC,aAAa,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,SAAS,iBAAiB,CAAC,KAAiB,EAAE,IAAY;IACxD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,aAAa,CACxB,KAAK;YACL,wFAAwF;YACxF,6FAA6F;YAC7F,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAC5D,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,kBAAkB,EAAE,CAAC,EACvD,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACf,0EAA0E;YAC1E,yEAAyE;YACzE,mEAAmE;YACnE,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7C,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAC/F,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,aAAa,CACxB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,qEAAqE;YACrE,qEAAqE;YACrE,CAAC,QAAQ,EAAE,EAAE;gBACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;gBACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/F,CAAC,EACD,CAAC,QAAQ,EAAE,EAAE;gBACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;gBACpC,OAAO,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAC7E,CAAC,EACD,oBAAoB,CAAC,KAAK,CAAC,CAC5B,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,aAAa,CACxB,KAAK;YACL,uEAAuE;YACvE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,EAClD,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,SAAS,CAAC,QAAQ,CAAC,EAAE,EAC7C,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxG,KAAK,OAAO;YACV,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,yCAAyC,cAAc,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;QAC3H,OAAO,0CAA0C,YAAY,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;IAC/H,CAAC,CAAC,CAAC;IACH,OAAO,qDAAqD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AACxF,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7H,MAAM,MAAM,GAAG,2BAA2B,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,uBAAuB,YAAY,wBAAwB,KAAK,CAAC,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,0BAA0B,CAAC;IAEzM,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,WAAW,YAAY,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACvF,OAAO,GAAG,OAAO,KAAK,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,qBAAqB,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { Store } from '../store.js';
2
+ /**
3
+ * The two addresses the browsing surface answers for a published page, spelled
4
+ * once. `serve.ts` tests and slices these prefixes, `nav.ts` builds hrefs from
5
+ * them, and the publish commands report them — three readers, one spelling,
6
+ * pinned by `single-source-literals`.
7
+ */
8
+ export declare const PUBLISH_ROUTE_PREFIX = "/publish/";
9
+ export declare const PREVIEW_ROUTE_PREFIX = "/preview/";
10
+ /**
11
+ * `encodeURI`, never `encodeURIComponent`: a page path carries `/` separators
12
+ * that must survive into the URL. The round trip is exact because `serve.ts`
13
+ * decodes the whole pathname once with `decodeURIComponent` before its lookup,
14
+ * recovering the raw key `walkFiles` produced.
15
+ */
16
+ export declare function publishRoute(filePath: string): string;
17
+ /** `worktree` is the session worktree's directory name — the key `buildPreviews` inserts. */
18
+ export declare function previewRoute(worktree: string, filePath: string): string;
19
+ export interface ServedAtRoute {
20
+ /** Server-relative, always leading "/", always naming a file the route answers for. */
21
+ route: string;
22
+ /** `route` against the store's declared base URL; null when the store declares none. */
23
+ url: string | null;
24
+ }
25
+ export interface ServedAt extends ServedAtRoute {
26
+ area: 'preview' | 'publish';
27
+ /** The session worktree directory keying a preview address; null under the publish area. */
28
+ worktree: string | null;
29
+ /**
30
+ * Where the same page is served once the worktree's work lands. Null under the
31
+ * publish area, which is already that address — a page in the store's own
32
+ * checkout has no later one.
33
+ */
34
+ after_landing: ServedAtRoute | null;
35
+ }
36
+ /**
37
+ * The address the browsing surface answers for one file of a published page.
38
+ *
39
+ * Null when the file is not under the store's configured publish path. That is
40
+ * the same verdict `checkPageLocation` (`src/commands/publish-check.ts`) already
41
+ * reaches for the same input, by the same prefix test: such a file is not a
42
+ * published page, so it has no filing to judge and no address to report. The
43
+ * two must keep agreeing about what "under the publish path" means.
44
+ *
45
+ * The preview branch asks `isSessionWorktreePath` about the resolved store root
46
+ * — root resolution has already resolved it *to* the worktree when the caller
47
+ * is standing in one — and takes the worktree's directory name from
48
+ * `path.basename`. That is precisely the key `buildPreviews`
49
+ * (`src/core/browse/routes.ts`) inserts, because it enumerates the directories
50
+ * under the configured worktrees path and keys by their names verbatim. No
51
+ * second enumeration, and no git subprocess.
52
+ *
53
+ * `storeRelativeFilePath` is "/"-separated, as both callers already produce.
54
+ */
55
+ export declare function pageServedAt(store: Store, storeRelativeFilePath: string): ServedAt | null;
56
+ /**
57
+ * The clause both publish commands append to their one-line summary (D3).
58
+ *
59
+ * Leading space, so a caller writes `${summary}${servedAtSentence(served)}`
60
+ * and an unaddressable page simply adds nothing. The verb carries the
61
+ * distinction the caller was previously left to guess: a page in the store's
62
+ * own checkout is `Served at`, a page still in a session worktree is
63
+ * `Preview at` and names where it goes once it lands. When the store declares
64
+ * a base URL the absolute form replaces the route rather than joining it —
65
+ * two addresses for one page would be the same guessing one level down.
66
+ */
67
+ export declare function servedAtSentence(served: ServedAt | null): string;
68
+ //# sourceMappingURL=page-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-url.d.ts","sourceRoot":"","sources":["../../../src/core/browse/page-url.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,MAAM,WAAW,aAAa;IAC5B,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,QAAS,SAAQ,aAAa;IAC7C,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAqBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBzF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAMhE"}
@@ -0,0 +1,101 @@
1
+ import path from 'node:path';
2
+ import { isSessionWorktreePath } from '../session.js';
3
+ /**
4
+ * The two addresses the browsing surface answers for a published page, spelled
5
+ * once. `serve.ts` tests and slices these prefixes, `nav.ts` builds hrefs from
6
+ * them, and the publish commands report them — three readers, one spelling,
7
+ * pinned by `single-source-literals`.
8
+ */
9
+ export const PUBLISH_ROUTE_PREFIX = '/publish/';
10
+ export const PREVIEW_ROUTE_PREFIX = '/preview/';
11
+ /**
12
+ * `encodeURI`, never `encodeURIComponent`: a page path carries `/` separators
13
+ * that must survive into the URL. The round trip is exact because `serve.ts`
14
+ * decodes the whole pathname once with `decodeURIComponent` before its lookup,
15
+ * recovering the raw key `walkFiles` produced.
16
+ */
17
+ export function publishRoute(filePath) {
18
+ return `${PUBLISH_ROUTE_PREFIX}${encodeURI(filePath)}`;
19
+ }
20
+ /** `worktree` is the session worktree's directory name — the key `buildPreviews` inserts. */
21
+ export function previewRoute(worktree, filePath) {
22
+ return `${PREVIEW_ROUTE_PREFIX}${encodeURI(`${worktree}/${filePath}`)}`;
23
+ }
24
+ /**
25
+ * Join a declared base URL to a server-relative route.
26
+ *
27
+ * String concatenation, deliberately, and NOT `new URL(route, base)`:
28
+ * `new URL('/publish/x', 'https://example.com/ctx/')` silently discards the
29
+ * `/ctx` prefix, so a store served under a subpath would be handed a confident
30
+ * wrong URL with no error. Stripping the base's trailing slashes and appending
31
+ * a route that always begins with "/" preserves whatever path the base carries.
32
+ */
33
+ function joinBaseUrl(baseUrl, route) {
34
+ if (baseUrl === undefined)
35
+ return null;
36
+ return `${baseUrl.replace(/\/+$/, '')}${route}`;
37
+ }
38
+ /** The configured publish path as a "/"-separated prefix with no trailing slash. */
39
+ function publishPrefixOf(publishPath) {
40
+ return publishPath.split(path.sep).join('/').replace(/\/+$/, '');
41
+ }
42
+ /**
43
+ * The address the browsing surface answers for one file of a published page.
44
+ *
45
+ * Null when the file is not under the store's configured publish path. That is
46
+ * the same verdict `checkPageLocation` (`src/commands/publish-check.ts`) already
47
+ * reaches for the same input, by the same prefix test: such a file is not a
48
+ * published page, so it has no filing to judge and no address to report. The
49
+ * two must keep agreeing about what "under the publish path" means.
50
+ *
51
+ * The preview branch asks `isSessionWorktreePath` about the resolved store root
52
+ * — root resolution has already resolved it *to* the worktree when the caller
53
+ * is standing in one — and takes the worktree's directory name from
54
+ * `path.basename`. That is precisely the key `buildPreviews`
55
+ * (`src/core/browse/routes.ts`) inserts, because it enumerates the directories
56
+ * under the configured worktrees path and keys by their names verbatim. No
57
+ * second enumeration, and no git subprocess.
58
+ *
59
+ * `storeRelativeFilePath` is "/"-separated, as both callers already produce.
60
+ */
61
+ export function pageServedAt(store, storeRelativeFilePath) {
62
+ const prefix = publishPrefixOf(store.config.publish.path);
63
+ if (!storeRelativeFilePath.startsWith(`${prefix}/`))
64
+ return null;
65
+ const pagePath = storeRelativeFilePath.slice(prefix.length + 1);
66
+ const baseUrl = store.config.serve?.base_url;
67
+ const published = publishRoute(pagePath);
68
+ if (!isSessionWorktreePath(store.config, store.root)) {
69
+ return { area: 'publish', route: published, url: joinBaseUrl(baseUrl, published), worktree: null, after_landing: null };
70
+ }
71
+ const worktree = path.basename(store.root);
72
+ const preview = previewRoute(worktree, pagePath);
73
+ return {
74
+ area: 'preview',
75
+ route: preview,
76
+ url: joinBaseUrl(baseUrl, preview),
77
+ worktree,
78
+ after_landing: { route: published, url: joinBaseUrl(baseUrl, published) },
79
+ };
80
+ }
81
+ /**
82
+ * The clause both publish commands append to their one-line summary (D3).
83
+ *
84
+ * Leading space, so a caller writes `${summary}${servedAtSentence(served)}`
85
+ * and an unaddressable page simply adds nothing. The verb carries the
86
+ * distinction the caller was previously left to guess: a page in the store's
87
+ * own checkout is `Served at`, a page still in a session worktree is
88
+ * `Preview at` and names where it goes once it lands. When the store declares
89
+ * a base URL the absolute form replaces the route rather than joining it —
90
+ * two addresses for one page would be the same guessing one level down.
91
+ */
92
+ export function servedAtSentence(served) {
93
+ if (served === null)
94
+ return '';
95
+ const here = served.url ?? served.route;
96
+ if (served.after_landing === null)
97
+ return ` Served at ${here}.`;
98
+ const landed = served.after_landing.url ?? served.after_landing.route;
99
+ return ` Preview at ${here} (at ${landed} once it lands).`;
100
+ }
101
+ //# sourceMappingURL=page-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-url.js","sourceRoot":"","sources":["../../../src/core/browse/page-url.ts"],"names":[],"mappings":"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"}