jamdesk 1.1.213 → 1.1.215

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 (35) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/unit/dusk-embargo.test.js +3 -2
  3. package/dist/__tests__/unit/dusk-embargo.test.js.map +1 -1
  4. package/dist/lib/deps.d.ts.map +1 -1
  5. package/dist/lib/deps.js +7 -1
  6. package/dist/lib/deps.js.map +1 -1
  7. package/dist/lib/dusk-embargo.d.ts.map +1 -1
  8. package/dist/lib/dusk-embargo.js +1 -1
  9. package/dist/lib/dusk-embargo.js.map +1 -1
  10. package/package.json +3 -3
  11. package/templates/quickstart.mdx +1 -1
  12. package/vendored/app/api/markdown-export/[project]/[...slug]/route.ts +31 -1
  13. package/vendored/app/api/revalidate/route.ts +24 -1
  14. package/vendored/components/mdx/Tooltip.tsx +27 -1
  15. package/vendored/components/navigation/Header.tsx +16 -29
  16. package/vendored/components/navigation/NavbarItems.tsx +49 -0
  17. package/vendored/components/navigation/Sidebar.tsx +44 -1
  18. package/vendored/lib/cache-tags.ts +8 -0
  19. package/vendored/lib/dusk-embargo.ts +1 -1
  20. package/vendored/lib/email-notifier.ts +6 -8
  21. package/vendored/lib/indexnow.ts +162 -9
  22. package/vendored/lib/layout-helpers.tsx +1 -1
  23. package/vendored/lib/mailfully.ts +86 -0
  24. package/vendored/lib/markdown-absolute-links.ts +197 -0
  25. package/vendored/lib/middleware-helpers.ts +24 -0
  26. package/vendored/lib/navbar-labels.ts +34 -0
  27. package/vendored/lib/project-deploy-id.ts +1 -1
  28. package/vendored/lib/revalidation-helpers.ts +26 -8
  29. package/vendored/lib/revalidation-trigger.ts +122 -34
  30. package/vendored/lib/screenshot-capture.ts +88 -16
  31. package/vendored/lib/static-artifacts.ts +25 -3
  32. package/vendored/lib/static-cdn-purge.ts +72 -0
  33. package/vendored/lib/static-file-route.ts +25 -1
  34. package/vendored/themes/dusk/variables.css +63 -10
  35. package/vendored/workspace-package-lock.json +576 -262
package/README.md CHANGED
@@ -30,7 +30,7 @@ Jamdesk is a docs-as-code platform. Connect a GitHub repo, write in MDX, and you
30
30
 
31
31
  - **Dev server** — Turbopack-powered with hot reload on every save
32
32
  - **50+ MDX components** — accordions, tabs, code groups, callouts, [and more](https://www.jamdesk.com/docs/components/overview)
33
- - **Four themes** — Jam, Nebula, Pulsar, Halo. Configured in `docs.json`
33
+ - **Five themes** — Jam, Nebula, Pulsar, Halo, Dusk. Configured in `docs.json`
34
34
  - Auto-generate API reference pages from OpenAPI specs
35
35
  - Full-text search works locally and in production (AI search on hosted sites)
36
36
  - Catches broken links, MDX syntax errors, and config issues before you deploy
@@ -343,7 +343,7 @@ Detects your `mint.json`, converts config to `docs.json`, lets you pick a theme,
343
343
  | Option | Description |
344
344
  |--------|-------------|
345
345
  | `--yes`, `-y` | Skip confirmation prompts |
346
- | `--theme <theme>` | Pre-select theme (`jam`, `nebula`, `pulsar`, `halo`) |
346
+ | `--theme <theme>` | Pre-select theme (`jam`, `nebula`, `pulsar`, `halo`, `dusk`) |
347
347
 
348
348
  After migration:
349
349
 
@@ -4,11 +4,12 @@ afterEach(() => {
4
4
  vi.doUnmock('../../lib/dusk-embargo.js');
5
5
  });
6
6
  describe('Dusk launch embargo — CLI', () => {
7
- it('is still embargoed (flip deliberately on October 1, 2026)', async () => {
7
+ it('is launched (flipped October 1, 2026)', async () => {
8
8
  const { DUSK_PUBLIC } = await import('../../lib/dusk-embargo.js');
9
- expect(DUSK_PUBLIC).toBe(false);
9
+ expect(DUSK_PUBLIC).toBe(true);
10
10
  });
11
11
  it('keeps dusk out of the migrate theme choices and help while embargoed', async () => {
12
+ vi.doMock('../../lib/dusk-embargo.js', () => ({ DUSK_PUBLIC: false }));
12
13
  const { THEMES, ALL_THEMES, themeListText } = await import('../../commands/migrate/types.js');
13
14
  expect(ALL_THEMES.map((t) => t.name)).toContain('dusk');
14
15
  expect(THEMES.map((t) => t.name)).not.toContain('dusk');
@@ -1 +1 @@
1
- {"version":3,"file":"dusk-embargo.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/dusk-embargo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,YAAY,EAAE,CAAC;IAClB,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC9F,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,EAAE,CAAC,MAAM,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"dusk-embargo.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/dusk-embargo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,YAAY,EAAE,CAAC;IAClB,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,EAAE,CAAC,MAAM,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC9F,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,EAAE,CAAC,MAAM,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiGhD,CAAC;AAwDF;;;;;;;;;;GAUG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAoFD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;aAC5B,QAAQ,EAAE,mBAAmB;aAC7B,WAAW,EAAE,cAAc;aAM3B,UAAU,EAAE,uBAAuB;aACnC,UAAU,EAAE,yBAAyB;CAC7B,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AA+B7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,4BAA4B,CAChD,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB;AA+SD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuGhD,CAAC;AAwDF;;;;;;;;;;GAUG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAoFD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;aAC5B,QAAQ,EAAE,mBAAmB;aAC7B,WAAW,EAAE,cAAc;aAM3B,UAAU,EAAE,uBAAuB;aACnC,UAAU,EAAE,yBAAyB;CAC7B,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AA+B7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,4BAA4B,CAChD,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB;AA+SD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
package/dist/lib/deps.js CHANGED
@@ -114,9 +114,15 @@ export const REQUIRED_DEPS = {
114
114
  // resolve it to COMPILE the route on first request — before resolveAuth's
115
115
  // dev-mode early-return ever runs. Must match build-service's pinned version.
116
116
  'jose': '^6.2.3',
117
+ // Server-only CDN purge in the vendored /api/revalidate route
118
+ // (lib/static-cdn-purge.ts). Loaded via a static-string `await import()`,
119
+ // which Next dev must still resolve to compile the route. Gated on
120
+ // VERCEL=1 so it never runs locally. The spec must be byte-identical to
121
+ // build-service/package.json.
122
+ '@vercel/functions': '^3.9.8',
117
123
  // TypeScript (needed for Next.js to avoid auto-install breaking symlink)
118
124
  'typescript': 'npm:@typescript/typescript6@^6.0.2',
119
- '@types/node': '^26.4.1',
125
+ '@types/node': '^26.6.3',
120
126
  '@types/react': '^19.2.18',
121
127
  '@types/react-dom': '^19.2.5',
122
128
  '@next/third-parties': '^16.3.4',
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dusk-embargo.d.ts","sourceRoot":"","sources":["../../src/lib/dusk-embargo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,EAAE,OAAe,CAAC"}
1
+ {"version":3,"file":"dusk-embargo.d.ts","sourceRoot":"","sources":["../../src/lib/dusk-embargo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,EAAE,OAAc,CAAC"}
@@ -11,5 +11,5 @@
11
11
  * The `: boolean` annotation is LOAD-BEARING: without it TS narrows to the
12
12
  * literal `false` and stops type-checking the launch branch.
13
13
  */
14
- export const DUSK_PUBLIC = false;
14
+ export const DUSK_PUBLIC = true;
15
15
  //# sourceMappingURL=dusk-embargo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dusk-embargo.js","sourceRoot":"","sources":["../../src/lib/dusk-embargo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAY,KAAK,CAAC"}
1
+ {"version":3,"file":"dusk-embargo.js","sourceRoot":"","sources":["../../src/lib/dusk-embargo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAY,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jamdesk",
3
- "version": "1.1.213",
3
+ "version": "1.1.215",
4
4
  "description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
5
5
  "keywords": [
6
6
  "jamdesk",
@@ -106,7 +106,7 @@
106
106
  "@inquirer/prompts": "^8.7.2",
107
107
  "ajv": "^8.17.1",
108
108
  "ajv-formats": "^3.0.1",
109
- "chalk": "^6.0.0",
109
+ "chalk": "^6.0.1",
110
110
  "commander": "^15.0.0",
111
111
  "dictionary-en": "^4.0.0",
112
112
  "estree-util-visit": "^2.0.0",
@@ -129,7 +129,7 @@
129
129
  "devDependencies": {
130
130
  "@mdx-js/mdx": "^3.1.1",
131
131
  "@types/fs-extra": "^11.0.0",
132
- "@types/node": "^26.4.1",
132
+ "@types/node": "^26.6.3",
133
133
  "@typescript/native": "npm:typescript@^7.0.2",
134
134
  "typescript": "npm:@typescript/typescript6@^6.0.2",
135
135
  "vitest": "^4.1.11"
@@ -73,7 +73,7 @@ Everything is configured in `docs.json`:
73
73
  | `name` | Site name shown in the header |
74
74
  | `colors` | Primary, light, and dark accent colors |
75
75
  | `logo` | Light and dark mode logo images |
76
- | `theme` | Visual theme (`jam`, `nebula`, `pulsar`, or `halo`) |
76
+ | `theme` | Visual theme (`jam`, `nebula`, `pulsar`, `halo`, or `dusk`) |
77
77
  | `navigation` | Sidebar tabs, groups, and page order |
78
78
  | `navbar` | Top navigation links and buttons |
79
79
 
@@ -20,6 +20,7 @@ import { apiSpecsMarkdownFooter } from '@/lib/api-specs-markdown-hint';
20
20
  import { collectLocalSpecPaths } from '@/lib/openapi/operation-description';
21
21
  import { operationMarkdownForRef } from '@/lib/openapi/enrich-page-infos';
22
22
  import { injectAgentDirective } from '@/lib/agent-directive';
23
+ import { absolutizeMarkdownLinks } from '@/lib/markdown-absolute-links';
23
24
  import { resolveMarkdownFallbackPath } from '@/lib/root-page-slug';
24
25
  import { logger } from '@/shared/logger';
25
26
  import type { DocsConfig } from '@/lib/docs-types';
@@ -153,7 +154,9 @@ export async function GET(
153
154
  // path returns whatever the source MDX happened to end with. 107 of snag's
154
155
  // 115 exports shipped without it, so anything appending to or concatenating
155
156
  // these files ran the last line of one into the next.
156
- const body = `${hinted.replace(/\s+$/, '')}\n`;
157
+ // Last, so links in the appended OpenAPI operation content are covered too.
158
+ const linked = absolutizeLinks(hinted, request.headers, project, hostAtDocs, linkPrefix);
159
+ const body = `${linked.replace(/\s+$/, '')}\n`;
157
160
 
158
161
  // Two paths reach this handler via proxy rewrite:
159
162
  // (a) `.md` URL: unique CDN cache key, safe to share.
@@ -177,6 +180,33 @@ export async function GET(
177
180
  });
178
181
  }
179
182
 
183
+ /**
184
+ * Root-relative links in the export become absolute URLs on the host the
185
+ * reader asked for (see absolutizeMarkdownLinks for why). ISR only: `jamdesk
186
+ * dev` serves from localhost over http, and getBaseUrl always builds https.
187
+ * The base comes from getBaseUrl, the same trusted-header resolution the
188
+ * api-specs footer and canonical tags use, so a custom domain's own prefix
189
+ * wins over the subdomain's. Never throws.
190
+ */
191
+ function absolutizeLinks(
192
+ markdown: string,
193
+ headers: Headers,
194
+ project: string,
195
+ hostAtDocs: boolean,
196
+ linkPrefix: string,
197
+ ): string {
198
+ if (!isIsrMode()) return markdown;
199
+ try {
200
+ return absolutizeMarkdownLinks(markdown, getBaseUrl(headers, project, hostAtDocs), linkPrefix);
201
+ } catch (err) {
202
+ logger.warn('[markdown-export] link absolutize skipped', {
203
+ project,
204
+ error: err instanceof Error ? err.message : String(err),
205
+ });
206
+ return markdown;
207
+ }
208
+ }
209
+
180
210
  /**
181
211
  * The two shapes fetchMdxContent throws for a missing page — the
182
212
  * `Page not found: …` message the S3 path builds and the error names the
@@ -18,7 +18,7 @@
18
18
  * - x-revalidate-secret: Secret token for authentication
19
19
  */
20
20
 
21
- import { NextRequest, NextResponse } from 'next/server';
21
+ import { NextRequest, NextResponse, after } from 'next/server';
22
22
  import { revalidatePath, revalidateTag } from 'next/cache';
23
23
  import {
24
24
  validateRevalidateSecret,
@@ -27,6 +27,11 @@ import {
27
27
  buildSuccessResponse,
28
28
  buildErrorResponse,
29
29
  } from '@/lib/revalidation-helpers';
30
+ import { STATIC_CDN_REPURGE_DELAY_MS, purgeStaticFileCdn } from '@/lib/static-cdn-purge';
31
+ import { log } from '@/lib/logger';
32
+
33
+ // Must outlast the delayed re-purge scheduled via after() below (35s).
34
+ export const maxDuration = 60;
30
35
 
31
36
  export async function POST(request: NextRequest) {
32
37
  // Verify secret
@@ -51,6 +56,24 @@ export async function POST(request: NextRequest) {
51
56
  revalidateTag
52
57
  );
53
58
 
59
+ const project = parsedRequest.project;
60
+ // VERCEL-gated: purgeStaticFileCdn is a no-op elsewhere (e.g. the CLI dev
61
+ // server), so the callback would just sleep 35s for nothing.
62
+ if (project && process.env.VERCEL === '1') {
63
+ // Other instances' deployId-pointer LRU (lib/project-deploy-id.ts, <=30s)
64
+ // can refill the CDN from the previous deploy right after the first tag
65
+ // delete inside executeRevalidation; this second delete lands after
66
+ // every LRU entry has expired.
67
+ after(async () => {
68
+ await new Promise((resolve) => setTimeout(resolve, STATIC_CDN_REPURGE_DELAY_MS));
69
+ // purgeStaticFileCdn warns on failure itself; only log the success here.
70
+ const outcome = await purgeStaticFileCdn(project);
71
+ if (outcome === 'purged') {
72
+ log('info', 'Delayed static-file CDN re-purge', { project, outcome });
73
+ }
74
+ });
75
+ }
76
+
54
77
  return NextResponse.json(buildSuccessResponse(result));
55
78
  } catch (error) {
56
79
  console.error('Revalidation error:', error);
@@ -26,6 +26,7 @@ export function Tooltip({
26
26
  const linkPrefix = useLinkPrefix();
27
27
  const [isVisible, setIsVisible] = useState(false);
28
28
  const [position, setPosition] = useState<'top' | 'bottom'>('top');
29
+ const [shiftX, setShiftX] = useState(0);
29
30
  const triggerRef = useRef<HTMLSpanElement>(null);
30
31
  const tooltipRef = useRef<HTMLSpanElement>(null);
31
32
  const tooltipId = useId();
@@ -39,6 +40,19 @@ export function Tooltip({
39
40
 
40
41
  // Show below if not enough space above
41
42
  setPosition(spaceAbove < tooltipHeight + 8 ? 'bottom' : 'top');
43
+
44
+ // The popover is centered on the trigger, so a trigger near the edge of
45
+ // the content column pushes half of it past the column's overflow edge,
46
+ // where it is clipped. Shift it back inside the nearest clipping
47
+ // ancestor (the viewport if there is none); the arrow counter-shifts so
48
+ // it still points at the trigger.
49
+ const bounds = clippingBounds(triggerRef.current);
50
+ const center = triggerRect.left + triggerRect.width / 2;
51
+ const halfWidth = tooltipRef.current.offsetWidth / 2;
52
+ const margin = 8;
53
+ const overflowLeft = bounds.left + margin - (center - halfWidth);
54
+ const overflowRight = center + halfWidth - (bounds.right - margin);
55
+ setShiftX(overflowLeft > 0 ? overflowLeft : overflowRight > 0 ? -overflowRight : 0);
42
56
  }
43
57
  }, [isVisible]);
44
58
 
@@ -64,7 +78,7 @@ export function Tooltip({
64
78
  ref={tooltipRef}
65
79
  id={tooltipId}
66
80
  role="tooltip"
67
- style={{ boxShadow: 'var(--shadow-lg)', display: 'block' }}
81
+ style={{ boxShadow: 'var(--shadow-lg)', display: 'block', marginLeft: `${shiftX}px` }}
68
82
  className={`absolute z-50 w-64 p-3 rounded-lg border border-[var(--color-border)] bg-[var(--color-bg-primary)] transition-all duration-150 ${
69
83
  position === 'top'
70
84
  ? 'bottom-full left-1/2 -translate-x-1/2 mb-2'
@@ -99,6 +113,7 @@ export function Tooltip({
99
113
 
100
114
  {/* Arrow */}
101
115
  <span
116
+ style={{ marginLeft: `${-shiftX}px` }}
102
117
  className={`absolute left-1/2 -translate-x-1/2 w-2 h-2 rotate-45 border-[var(--color-border)] bg-[var(--color-bg-primary)] ${
103
118
  position === 'top'
104
119
  ? 'bottom-[-5px] border-r border-b'
@@ -109,3 +124,14 @@ export function Tooltip({
109
124
  </span>
110
125
  );
111
126
  }
127
+
128
+ /** Left/right edges of the nearest ancestor that clips horizontally. */
129
+ function clippingBounds(el: HTMLElement): { left: number; right: number } {
130
+ for (let node = el.parentElement; node; node = node.parentElement) {
131
+ if (getComputedStyle(node).overflowX !== 'visible') {
132
+ const rect = node.getBoundingClientRect();
133
+ return { left: rect.left, right: rect.right };
134
+ }
135
+ }
136
+ return { left: 0, right: document.documentElement.clientWidth };
137
+ }
@@ -21,6 +21,7 @@ import { useChatOpenHandler } from '@/hooks/useChatPanel';
21
21
  import { useSearchOpenHandler } from '@/hooks/useSearchOpenHandler';
22
22
  import { extractLanguageFromPath } from '@/lib/language-utils';
23
23
  import { getUiStrings } from '@/lib/ui-strings';
24
+ import { NavbarLink, NavbarPrimaryButton } from './NavbarItems';
24
25
 
25
26
  interface HeaderProps {
26
27
  config: DocsConfig;
@@ -69,8 +70,6 @@ export function Header({ config, layout = 'header-logo', tabsPosition: tabsPosit
69
70
  const linkPrefix = useLinkPrefix();
70
71
  const currentLang = extractLanguageFromPath(pathname || '/');
71
72
  const ui = getUiStrings(currentLang);
72
- const resolveLabel = (label: string | undefined, labels?: Record<string, string>, fallback?: string) =>
73
- (currentLang && labels?.[currentLang]) || label || fallback || '';
74
73
 
75
74
  // In sidebar-logo layout, logo is in sidebar, not header
76
75
  const showLogoInHeader = layout === 'header-logo';
@@ -517,41 +516,29 @@ export function Header({ config, layout = 'header-logo', tabsPosition: tabsPosit
517
516
  </button>
518
517
  )}
519
518
 
520
- {/* Navbar Links - shown to left of theme toggle in header-logo layout */}
519
+ {/* Navbar Links - shown to left of theme toggle in header-logo layout.
520
+ Below md they and the primary button live in the drawer
521
+ instead (Sidebar.tsx): a 375px row has no room for them. */}
521
522
  {showLogoInHeader && config.navbar?.links && config.navbar.links.length > 0 && (
522
523
  <nav className="hidden md:flex items-center gap-1 mx-4">
523
- {config.navbar.links.map((link, index) => {
524
- const isExternal = link.href.startsWith('http');
525
- return (
526
- <a
527
- key={`${index}-${link.href}`}
528
- href={link.href}
529
- target={isExternal ? '_blank' : undefined}
530
- rel={isExternal ? 'noopener noreferrer' : undefined}
531
- className="flex items-center gap-1.5 px-2.5 py-1.5 text-sm text-[var(--color-text-tertiary)] hover:text-[var(--color-text-primary)] transition-colors"
532
- >
533
- {link.icon && <i className={`${getIconClass(getIconString(link.icon))} text-[14px]`} aria-hidden="true" />}
534
- <span>{resolveLabel(link.label, link.labels)}</span>
535
- {isExternal && <i className="fa-solid fa-arrow-up-right-from-square text-[10px] opacity-50" aria-hidden="true" />}
536
- </a>
537
- );
538
- })}
524
+ {config.navbar.links.map((link, index) => (
525
+ <NavbarLink
526
+ key={`${index}-${link.href}`}
527
+ link={link}
528
+ lang={currentLang}
529
+ className="flex items-center gap-1.5 px-2.5 py-1.5 text-sm text-[var(--color-text-tertiary)] hover:text-[var(--color-text-primary)] transition-colors"
530
+ />
531
+ ))}
539
532
  </nav>
540
533
  )}
541
534
 
542
535
  {/* Navbar Primary Button - CTA button to left of theme toggle */}
543
536
  {showLogoInHeader && config.navbar?.primary && (
544
- <a
545
- href={config.navbar.primary.href}
546
- target="_blank"
547
- rel="noopener noreferrer"
537
+ <NavbarPrimaryButton
538
+ primary={config.navbar.primary}
539
+ lang={currentLang}
548
540
  className="hidden md:flex items-center gap-1.5 px-3 py-1.5 mr-4 text-sm font-medium bg-[var(--color-accent)] text-white rounded-lg hover:opacity-90 transition-opacity"
549
- >
550
- {config.navbar.primary.type === 'github' && (
551
- <i className="fa-brands fa-github text-[14px]" aria-hidden="true" />
552
- )}
553
- <span>{resolveLabel(config.navbar.primary.label, config.navbar.primary.labels, config.navbar.primary.type === 'github' ? 'GitHub' : 'Get Started')}</span>
554
- </a>
541
+ />
555
542
  )}
556
543
 
557
544
  {/* Language Selector - header-logo layout, desktop only. Below lg it
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+
3
+ // docs.json navbar entries, rendered by both the header (md and up) and the
4
+ // mobile drawer (below md). One component per entry type so the two copies
5
+ // can't disagree on labels, link targets or icons; each caller styles its own.
6
+ import type { NavbarLink as NavbarLinkConfig, NavbarPrimary } from '@/lib/docs-types';
7
+ import { getIconString } from '@/lib/docs-types';
8
+ import { getIconClass } from '@/lib/icon-utils';
9
+ import { navbarLinkLabel, navbarPrimaryLabel } from '@/lib/navbar-labels';
10
+
11
+ interface NavbarLinkProps {
12
+ link: NavbarLinkConfig;
13
+ lang: string | undefined;
14
+ className: string;
15
+ onClick?: () => void;
16
+ }
17
+
18
+ export function NavbarLink({ link, lang, className, onClick }: NavbarLinkProps) {
19
+ const isExternal = link.href.startsWith('http');
20
+ return (
21
+ <a
22
+ href={link.href}
23
+ target={isExternal ? '_blank' : undefined}
24
+ rel={isExternal ? 'noopener noreferrer' : undefined}
25
+ onClick={onClick}
26
+ className={className}
27
+ >
28
+ {link.icon && <i className={`${getIconClass(getIconString(link.icon))} text-[14px]`} aria-hidden="true" />}
29
+ <span>{navbarLinkLabel(link, lang)}</span>
30
+ {isExternal && <i className="fa-solid fa-arrow-up-right-from-square text-[10px] opacity-50" aria-hidden="true" />}
31
+ </a>
32
+ );
33
+ }
34
+
35
+ interface NavbarPrimaryButtonProps {
36
+ primary: NavbarPrimary;
37
+ lang: string | undefined;
38
+ className: string;
39
+ onClick?: () => void;
40
+ }
41
+
42
+ export function NavbarPrimaryButton({ primary, lang, className, onClick }: NavbarPrimaryButtonProps) {
43
+ return (
44
+ <a href={primary.href} target="_blank" rel="noopener noreferrer" onClick={onClick} className={className}>
45
+ {primary.type === 'github' && <i className="fa-brands fa-github text-[14px]" aria-hidden="true" />}
46
+ <span>{navbarPrimaryLabel(primary, lang)}</span>
47
+ </a>
48
+ );
49
+ }
@@ -6,6 +6,8 @@ import { usePathname, useRouter } from 'next/navigation';
6
6
  import { useBodyScrollLock } from '@/hooks/useBodyScrollLock';
7
7
  // Icons use Font Awesome CSS classes for lightweight rendering
8
8
  import { normalizeLogo, type DocsConfig, type TabsPosition } from '@/lib/docs-types';
9
+ import { extractLanguageFromPath } from '@/lib/language-utils';
10
+ import { NavbarLink, NavbarPrimaryButton } from './NavbarItems';
9
11
  import { resolveNavigation, type ResolvedGroup, type ResolvedPage, type ResolvedTab } from '@/lib/navigation-resolver';
10
12
  import type { LayoutVariant } from '@/themes';
11
13
  import { getTheme } from '@/themes';
@@ -288,6 +290,14 @@ export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPosi
288
290
  const showLogoInSidebar = layout === 'sidebar-logo';
289
291
  const showSearchInSidebar = layout === 'sidebar-logo';
290
292
 
293
+ // Header-logo layouts show navbar links and the primary button in the
294
+ // header from md. Below md the header has no room for them, so the drawer
295
+ // carries them. Sidebar-logo (Pulsar) shows neither at any width, so its
296
+ // drawer doesn't either.
297
+ const navbarLinks = showLogoInSidebar ? [] : config.navbar?.links ?? [];
298
+ const navbarPrimary = showLogoInSidebar ? undefined : config.navbar?.primary;
299
+ const currentLang = extractLanguageFromPath(pathname || '/');
300
+
291
301
  // Logo configuration
292
302
  const logoConfig = normalizeLogo(config.logo, config.assetVersion);
293
303
  const logoHref = logoConfig?.href || '/';
@@ -704,7 +714,7 @@ export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPosi
704
714
  if (resolvedNav.externalAnchors.length === 0) return null;
705
715
 
706
716
  return (
707
- <div className="flex flex-col gap-1 px-4 pt-4">
717
+ <div className="sidebar-anchors flex flex-col gap-1 px-4 pt-4">
708
718
  {resolvedNav.externalAnchors.map((anchor) => (
709
719
  <a
710
720
  key={`${anchor.href}|${anchor.name}`}
@@ -964,6 +974,22 @@ export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPosi
964
974
  </div>
965
975
  </nav>
966
976
 
977
+ {/* Navbar links, drawer copy (below md; the header has them from md).
978
+ Full-height rows: these are the only copy a phone reader can tap. */}
979
+ {navbarLinks.length > 0 && (
980
+ <nav data-drawer-navbar-links className="md:hidden px-4 py-3 border-t border-[var(--color-border)]">
981
+ {navbarLinks.map((link, index) => (
982
+ <NavbarLink
983
+ key={`${index}-${link.href}`}
984
+ link={link}
985
+ lang={currentLang}
986
+ onClick={onClose}
987
+ className="flex items-center gap-2 py-1.5 text-sm text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] transition-colors"
988
+ />
989
+ ))}
990
+ </nav>
991
+ )}
992
+
967
993
  {/* Language Selector. Sidebar-logo (Pulsar) keeps it here at every
968
994
  width. Header-logo layouts show it in the header from lg and here,
969
995
  in the drawer, below it (header-responsive.test.tsx). */}
@@ -977,6 +1003,23 @@ export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPosi
977
1003
  </div>
978
1004
  )}
979
1005
  </div>{/* End scrollable content area */}
1006
+
1007
+ {/* Navbar primary button, drawer copy (below md; the header has it
1008
+ from md). Only the button is pinned under the scroll area, so it
1009
+ stays in view without taking room from the nav on short screens;
1010
+ the links scroll with the nav above. Before this, phone readers
1011
+ could reach neither. onClose: the button opens a new tab, so the
1012
+ drawer would otherwise still be open, page scroll locked, on return. */}
1013
+ {navbarPrimary && (
1014
+ <div data-drawer-navbar-primary className="flex-shrink-0 md:hidden p-4 border-t border-[var(--color-border)] bg-[var(--color-bg-primary)]">
1015
+ <NavbarPrimaryButton
1016
+ primary={navbarPrimary}
1017
+ lang={currentLang}
1018
+ onClick={onClose}
1019
+ className="flex items-center justify-center gap-1.5 w-full px-3 py-2 text-sm font-medium bg-[var(--color-accent)] text-white rounded-lg hover:opacity-90 transition-opacity"
1020
+ />
1021
+ </div>
1022
+ )}
980
1023
  </aside>
981
1024
 
982
1025
  {/* Search Modal - shown when search is opened from sidebar; hidden in dev (search-data.json not emitted by CLI dev) */}
@@ -23,3 +23,11 @@ export const snippetCacheTag = (slug: string, path: string): string => `snippet:
23
23
  export const openapiCacheTag = (slug: string, path: string): string => `openapi:${slug}:${path}`;
24
24
  export const manifestCacheTag = (slug: string): string => `manifest:${slug}`;
25
25
  export const staticCacheTag = (slug: string, filename: string): string => `static:${slug}:${filename}`;
26
+
27
+ /**
28
+ * Vercel CDN tag (sent as the `Vercel-Cache-Tag` response header on static-file
29
+ * route handlers) used to delete every cached static file of one tenant at once.
30
+ * Unrelated to the Next data-cache `static:` tags above — those are consumed by
31
+ * revalidateTag, this one by @vercel/functions' dangerouslyDeleteByTag.
32
+ */
33
+ export const staticFileCdnTag = (slug: string): string => `jd-static-${slug}`;
@@ -13,4 +13,4 @@
13
13
  * The `: boolean` annotation is LOAD-BEARING: without it TS narrows to the
14
14
  * literal `false` and stops type-checking the launch branch.
15
15
  */
16
- export const DUSK_PUBLIC: boolean = false;
16
+ export const DUSK_PUBLIC: boolean = true;
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Email Notifier — sends internal build failure notifications via Resend.
2
+ * Email Notifier — sends internal build failure notifications via Mailfully.
3
3
  *
4
- * Env: BUILDER_RESEND_API_KEY, JAMDESK_REPORT_EMAIL
4
+ * Env: MAILFULLY_API_KEY, JAMDESK_REPORT_EMAIL
5
5
  */
6
6
 
7
7
  import { render } from '@react-email/render';
8
- import { Resend } from 'resend';
8
+ import { sendMailfullyEmail } from './mailfully.js';
9
9
  import { BuildFailureEmail, type BuildFailureEmailProps } from './email-templates/index.js';
10
10
 
11
11
  export type BuildFailureEmailInfo = BuildFailureEmailProps;
@@ -15,13 +15,13 @@ export type BuildFailureEmailInfo = BuildFailureEmailProps;
15
15
  * Gracefully skips if environment variables are not configured.
16
16
  */
17
17
  export async function sendInternalBuildFailureEmail(info: BuildFailureEmailInfo): Promise<void> {
18
- const apiKey = process.env.BUILDER_RESEND_API_KEY;
18
+ const apiKey = process.env.MAILFULLY_API_KEY;
19
19
  const reportEmail = process.env.JAMDESK_REPORT_EMAIL;
20
20
 
21
21
  if (!apiKey || !reportEmail) {
22
22
  console.log(JSON.stringify({
23
23
  severity: 'WARNING',
24
- message: `Email notification skipped - ${!apiKey ? 'BUILDER_RESEND_API_KEY' : 'JAMDESK_REPORT_EMAIL'} not configured`,
24
+ message: `Email notification skipped - ${!apiKey ? 'MAILFULLY_API_KEY' : 'JAMDESK_REPORT_EMAIL'} not configured`,
25
25
  projectId: info.projectId,
26
26
  buildId: info.buildId,
27
27
  }));
@@ -29,13 +29,11 @@ export async function sendInternalBuildFailureEmail(info: BuildFailureEmailInfo)
29
29
  }
30
30
 
31
31
  try {
32
- const resend = new Resend(apiKey);
33
-
34
32
  const template = BuildFailureEmail(info);
35
33
  const html = await render(template);
36
34
  const text = await render(template, {plainText: true});
37
35
 
38
- const result = await resend.emails.send({
36
+ const result = await sendMailfullyEmail(apiKey, {
39
37
  from: 'Jamdesk <support@jamdesk.com>',
40
38
  to: reportEmail,
41
39
  subject: `Jamdesk build failed: ${info.projectName || info.projectId}`,