@taskmark/ui 0.2.5 → 0.2.6

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 (50) hide show
  1. package/README.md +32 -7
  2. package/app/setup/page.tsx +4 -1
  3. package/bin/lib/resolve-board.mjs +50 -1
  4. package/bin/taskmark.js +139 -30
  5. package/dist/prod-next/BUILD_ID +1 -1
  6. package/dist/prod-next/build-manifest.json +2 -2
  7. package/dist/prod-next/prerender-manifest.json +24 -0
  8. package/dist/prod-next/server/app/_global-error.html +1 -1
  9. package/dist/prod-next/server/app/_global-error.rsc +1 -1
  10. package/dist/prod-next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/dist/prod-next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/dist/prod-next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/dist/prod-next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/dist/prod-next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/dist/prod-next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/dist/prod-next/server/app/_not-found.html +1 -1
  17. package/dist/prod-next/server/app/_not-found.rsc +1 -1
  18. package/dist/prod-next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  19. package/dist/prod-next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/dist/prod-next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  21. package/dist/prod-next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/dist/prod-next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/dist/prod-next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  24. package/dist/prod-next/server/app/api/taskmark-reload/route.js +1 -1
  25. package/dist/prod-next/server/app/board/page.js +1 -1
  26. package/dist/prod-next/server/app/page.js +1 -1
  27. package/dist/prod-next/server/app/setup/page.js +1 -1
  28. package/dist/prod-next/server/app/setup.html +1 -0
  29. package/dist/prod-next/server/app/setup.meta +17 -0
  30. package/dist/prod-next/server/app/setup.rsc +22 -0
  31. package/dist/prod-next/server/app/setup.segments/_full.segment.rsc +22 -0
  32. package/dist/prod-next/server/app/setup.segments/_head.segment.rsc +6 -0
  33. package/dist/prod-next/server/app/setup.segments/_index.segment.rsc +8 -0
  34. package/dist/prod-next/server/app/setup.segments/_tree.segment.rsc +5 -0
  35. package/dist/prod-next/server/app/setup.segments/setup/__PAGE__.segment.rsc +6 -0
  36. package/dist/prod-next/server/app/setup.segments/setup.segment.rsc +5 -0
  37. package/dist/prod-next/server/chunks/490.js +2 -2
  38. package/dist/prod-next/server/chunks/616.js +1 -1
  39. package/dist/prod-next/server/middleware-build-manifest.js +1 -1
  40. package/dist/prod-next/server/pages/404.html +1 -1
  41. package/dist/prod-next/server/pages/500.html +1 -1
  42. package/dist/public/taskmark-snapshot.json +1 -1
  43. package/lib/taskmark/autoconfig.ts +54 -3
  44. package/lib/taskmark/discover.ts +2 -1
  45. package/lib/taskmark/workspace-mode.ts +24 -0
  46. package/lib/taskmark/workspace.ts +5 -2
  47. package/package.json +4 -2
  48. package/public/taskmark-snapshot.json +1 -1
  49. /package/dist/prod-next/static/{wbcgYS3Jw87KqhnA9ttOL → sAWr5ATVuqk6Wqs18kAWs}/_buildManifest.js +0 -0
  50. /package/dist/prod-next/static/{wbcgYS3Jw87KqhnA9ttOL → sAWr5ATVuqk6Wqs18kAWs}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -2,12 +2,32 @@
2
2
 
3
3
  Install in a Taskmark board folder (or product root with `./taskmark/`) and open the board in the browser.
4
4
 
5
+ ## Two modes
6
+
7
+ | Mode | When | Behaviour |
8
+ |------|------|-----------|
9
+ | **Bound** | Board found in/near cwd, or `serve` / `dev` | Opens that one board. No setup wizard, no project picker. |
10
+ | **Workspace** | No local board, or `open` / `--workspace` | Standalone setup wizard + app-bar project picker. |
11
+
12
+ ```bash
13
+ # Global / any folder without a board → setup & pick projects
14
+ npx @taskmark/ui
15
+ # or: npx -p @taskmark/ui taskmark
16
+
17
+ # Inside a board folder (or product with ./taskmark/) → that board only
18
+ cd my-app-taskmark && npx taskmark
19
+ # or: npm i @taskmark/ui --save && npx taskmark serve
20
+ ```
21
+
22
+ `taskmark open` always forces the setup / picker, even when a board is nearby. Chosen master folders and the active project persist in cookies.
23
+
5
24
  ## Install and serve
6
25
 
7
26
  ```bash
8
27
  # from nested ./taskmark/ or a dedicated *-taskmark board root
9
28
  npm install @taskmark/ui --save
10
- npx taskmark serve
29
+ npx taskmark
30
+ # or: npx taskmark serve
11
31
  ```
12
32
 
13
33
  Opens [http://localhost:8275](http://localhost:8275) bound to **this** board.
@@ -24,20 +44,23 @@ Runs Next.js in development on port **8275** and refreshes the UI when board `.m
24
44
  Without a local install (once published):
25
45
 
26
46
  ```bash
27
- npx -p @taskmark/ui taskmark serve
47
+ npx @taskmark/ui
48
+ # or: npx -p @taskmark/ui taskmark
28
49
  ```
29
50
 
30
51
  | Option | Meaning |
31
52
  |--------|---------|
32
53
  | `--port` / `-p` | Listen port (default **8275**; also `PORT` / `TASKMARK_PORT`) |
33
54
  | `--board <path>` | Board or product root (sets `TASKMARK_BOARD`) |
55
+ | `--workspace` / `-w` | Force setup / multi-project mode; cannot be combined with `--board` |
34
56
  | `--no-open` | Print the URL only |
35
57
 
36
- Board resolution:
58
+ Board resolution (bound mode only):
37
59
 
38
60
  1. `--board` / `TASKMARK_BOARD`
39
61
  2. `TASKMARK_MASTER`
40
62
  3. `TASKMARK_CWD` → npm `INIT_CWD` → `process.cwd()` — nested `./taskmark/` or flat `*-taskmark` root
63
+ 4. Sibling `<parent>-taskmark` next to a product repo (multi-git workspaces)
41
64
 
42
65
  ### Nested vs flat boards
43
66
 
@@ -87,12 +110,14 @@ Favicon, webmanifest, and Open Graph assets ship in `public/` and are included i
87
110
 
88
111
  ```bash
89
112
  npm install
90
- npm run build # next standalone + dist/ for the CLI
91
- npm run serve # production standalone against cwd/env board
92
- npm run dev # taskmark dev (Next + markdown live reload) on :8275
113
+ npm run build # next standalone + dist/ for the CLI
114
+ npm run serve # production standalone against cwd/env board
115
+ npm run dev # taskmark dev (Next + markdown live reload) on :8275
116
+ npm run dev:workspace # same, but unbound — work on the setup wizard / picker
117
+ npm run open # prebuilt UI in workspace mode
93
118
  ```
94
119
 
95
- Zero-config for `npm run dev` / `serve`: `TASKMARK_BOARD` / `TASKMARK_MASTER` / cwd (see above). Cookie multi-master setup still works when unbound.
120
+ `npm run dev` / `serve` always bind to a board (sibling `taskmark-taskmark` from this repo). Bare `node ./bin/taskmark.js` uses the smart default. Use `open` / `dev:workspace` to work on the setup wizard.
96
121
 
97
122
  ## Stack
98
123
 
@@ -6,6 +6,7 @@ import { SetupWizard } from "@/components/setup/setup-wizard"
6
6
  import { resolveAutoconfigWorkspace } from "@/lib/taskmark/autoconfig"
7
7
  import { getMasterFoldersCookie } from "@/lib/taskmark/cookies"
8
8
  import { isStaticRuntime } from "@/lib/taskmark/static-mode"
9
+ import { workspaceStartPath } from "@/lib/taskmark/workspace-mode"
9
10
 
10
11
  type SetupPageProps = {
11
12
  searchParams?: Promise<{ mode?: string }>
@@ -26,6 +27,8 @@ export default async function SetupPage({ searchParams }: SetupPageProps) {
26
27
  const masters = await getMasterFoldersCookie()
27
28
  const hasProjects = masters.length > 0
28
29
  const adding = params.mode === "add" && hasProjects
30
+ // First run: offer the directory `taskmark` was launched from as the master.
31
+ const suggestedPath = adding || hasProjects ? "" : workspaceStartPath()
29
32
 
30
33
  return (
31
34
  <div className="relative flex min-h-svh flex-col items-center justify-center px-4 py-16">
@@ -50,7 +53,7 @@ export default async function SetupPage({ searchParams }: SetupPageProps) {
50
53
  </p>
51
54
  </div>
52
55
  <SetupWizard
53
- initialPath=""
56
+ initialPath={suggestedPath}
54
57
  adding={adding}
55
58
  hasExistingProjects={hasProjects}
56
59
  />
@@ -48,6 +48,50 @@ export function resolveBoardAtPath(candidatePath) {
48
48
  return null
49
49
  }
50
50
 
51
+ /**
52
+ * Multi-git layout: product repo beside a dedicated `<common>-taskmark` board.
53
+ * Prefer `<parentDirBasename>-taskmark`, else a unique `*-taskmark` sibling,
54
+ * else a sibling whose board prefix matches the product repo name.
55
+ */
56
+ export function resolveSiblingDedicatedBoard(fromDir) {
57
+ const resolved = path.resolve(fromDir)
58
+ const parent = path.dirname(resolved)
59
+ const parentName = path.basename(parent)
60
+ const preferred = path.join(parent, `${parentName}-taskmark`)
61
+ if (
62
+ isDedicatedBoardRepoName(path.basename(preferred)) &&
63
+ hasBoardMarkers(preferred)
64
+ ) {
65
+ return preferred
66
+ }
67
+
68
+ let entries
69
+ try {
70
+ entries = fs.readdirSync(parent, { withFileTypes: true })
71
+ } catch {
72
+ return null
73
+ }
74
+
75
+ const boards = []
76
+ for (const entry of entries) {
77
+ if (!entry.isDirectory() || !isDedicatedBoardRepoName(entry.name)) continue
78
+ const full = path.join(parent, entry.name)
79
+ if (hasBoardMarkers(full)) boards.push(full)
80
+ }
81
+ if (boards.length === 0) return null
82
+ if (boards.length === 1) return boards[0]
83
+
84
+ const cwdBase = path.basename(resolved)
85
+ const parts = cwdBase.split("-").filter(Boolean)
86
+ for (let i = parts.length - 1; i >= 1; i--) {
87
+ const prefix = parts.slice(0, i).join("-")
88
+ const hit = boards.find((b) => path.basename(b) === `${prefix}-taskmark`)
89
+ if (hit) return hit
90
+ }
91
+
92
+ return null
93
+ }
94
+
51
95
  function cwdCandidates() {
52
96
  const out = []
53
97
  const seen = new Set()
@@ -74,7 +118,7 @@ function cwdCandidates() {
74
118
 
75
119
  /**
76
120
  * Same precedence as the Next app autoconfig:
77
- * TASKMARK_BOARD → TASKMARK_MASTER (as board-or-master) → cwd.
121
+ * TASKMARK_BOARD → TASKMARK_MASTER (as board-or-master) → cwd → sibling *-taskmark.
78
122
  * @returns {{ boardPath: string, source: string } | null}
79
123
  */
80
124
  export function resolveServeBoard(explicitBoard) {
@@ -104,5 +148,10 @@ export function resolveServeBoard(explicitBoard) {
104
148
  if (board) return { boardPath: board, source: "cwd" }
105
149
  }
106
150
 
151
+ for (const candidate of cwdCandidates()) {
152
+ const sibling = resolveSiblingDedicatedBoard(candidate)
153
+ if (sibling) return { boardPath: sibling, source: "sibling" }
154
+ }
155
+
107
156
  return null
108
157
  }
package/bin/taskmark.js CHANGED
@@ -17,13 +17,18 @@ const requireFromPackage = createRequire(path.join(packageRoot, "package.json"))
17
17
 
18
18
  function printHelp() {
19
19
  console.log(`Usage:
20
+ taskmark [options] smart default: local board if found, else setup
21
+ taskmark open [options]
20
22
  taskmark serve [options]
21
23
  taskmark dev [options]
22
24
  taskmark build [options]
23
25
  taskmark preview [options]
24
26
 
25
27
  Commands:
26
- serve Start the prebuilt local UI server (default port ${DEFAULT_PORT})
28
+ (default) Bind to a board in/near cwd when one exists; otherwise open
29
+ the standalone setup / project picker (same as global use)
30
+ open Always start in workspace mode (setup / project picker)
31
+ serve Start the prebuilt UI bound to one resolved board (port ${DEFAULT_PORT})
27
32
  dev Next.js development server with board markdown live reload
28
33
  build Production static HTML export for Vercel / static hosting
29
34
  preview Serve an existing static export (default: <board>/out)
@@ -31,24 +36,32 @@ Commands:
31
36
  Options:
32
37
  --port, -p <n> Listen port (default ${DEFAULT_PORT}; env PORT / TASKMARK_PORT)
33
38
  --board <path> Board or product root (sets TASKMARK_BOARD)
39
+ --workspace, -w Force multi-project / setup mode (skip local board binding)
34
40
  --out <dir> Static output directory for build/preview (default: <board>/out)
35
- --no-open Do not open a browser (serve / preview / dev)
41
+ --no-open Do not open a browser (default / open / serve / preview / dev)
36
42
  --help, -h Show help
37
43
 
38
- Board resolution (same as the UI):
44
+ Modes:
45
+ Bound One board from --board / env / cwd / sibling *-taskmark; no project picker.
46
+ Workspace Setup wizard + app-bar project picker (cookies). Used when no local
47
+ board is found, or with open / --workspace.
48
+
49
+ Board resolution for bound mode (same as the UI):
39
50
  1. --board / TASKMARK_BOARD
40
51
  2. TASKMARK_MASTER
41
52
  3. TASKMARK_CWD → npm INIT_CWD → process.cwd()
42
53
  (product root with ./taskmark/, or dedicated *-taskmark root)
54
+ 4. Sibling <parent>-taskmark next to a product repo (multi-git)
43
55
 
44
56
  Examples:
57
+ npx @taskmark/ui # global: setup / pick projects
58
+ cd my-app-taskmark && npx taskmark # local board in this folder
45
59
  npm i @taskmark/ui --save && npx taskmark serve
60
+ npx taskmark open # force setup even inside a board folder
46
61
  npx taskmark dev --board .
47
62
  npx taskmark build --board .
48
63
  npm run preview
49
- npx taskmark preview --port 9000
50
- npx -p @taskmark/ui taskmark serve
51
- TASKMARK_BOARD=/path/to/my-app/taskmark npx taskmark serve
64
+ TASKMARK_BOARD=/path/to/board npx taskmark serve
52
65
  `)
53
66
  }
54
67
 
@@ -59,20 +72,24 @@ function parseArgs(argv) {
59
72
  board: null,
60
73
  out: null,
61
74
  open: true,
75
+ workspace: false,
62
76
  help: false,
63
77
  }
64
78
  const rest = [...argv]
65
- if (rest.length === 0 || rest[0] === "--help" || rest[0] === "-h") {
66
- args.help = true
79
+ if (rest.length === 0) {
80
+ args.command = "auto"
67
81
  return args
68
82
  }
69
- args.command = rest.shift()
83
+ // Bare `taskmark` with only flags → smart default (local board or setup).
84
+ args.command = rest[0].startsWith("-") ? "auto" : rest.shift()
70
85
  while (rest.length) {
71
86
  const token = rest.shift()
72
87
  if (token === "--help" || token === "-h") {
73
88
  args.help = true
74
89
  } else if (token === "--no-open") {
75
90
  args.open = false
91
+ } else if (token === "--workspace" || token === "-w") {
92
+ args.workspace = true
76
93
  } else if (token === "--port" || token === "-p") {
77
94
  args.port = rest.shift()
78
95
  } else if (token === "--board") {
@@ -219,6 +236,46 @@ function waitForServer(port, timeoutMs = 60_000) {
219
236
  })
220
237
  }
221
238
 
239
+ function callerCwd() {
240
+ return process.env.INIT_CWD || process.cwd()
241
+ }
242
+
243
+ function isWorkspaceRun(args) {
244
+ return args.command === "open" || args.workspace === true
245
+ }
246
+
247
+ /**
248
+ * Decide bound vs workspace for the default (`auto`) command.
249
+ * Returns a serve-compatible args object with workspace forced when unbound.
250
+ */
251
+ function resolveAutoArgs(args) {
252
+ if (args.workspace) {
253
+ return { ...args, command: "open", workspace: true }
254
+ }
255
+ if (args.board) {
256
+ return { ...args, command: "serve", workspace: false }
257
+ }
258
+ const resolved = resolveServeBoard(null)
259
+ if (resolved) {
260
+ return { ...args, command: "serve", workspace: false }
261
+ }
262
+ return { ...args, command: "open", workspace: true }
263
+ }
264
+
265
+ /**
266
+ * Workspace mode must out-rank an inherited board bind, so blank those vars for
267
+ * the child (the UI reads empty as unset) instead of only adding the flag.
268
+ */
269
+ function workspaceEnv() {
270
+ return {
271
+ TASKMARK_WORKSPACE: "1",
272
+ TASKMARK_WORKSPACE_ROOT: callerCwd(),
273
+ TASKMARK_BOARD: "",
274
+ TASKMARK_MASTER: "",
275
+ TASKMARK_CWD: "",
276
+ }
277
+ }
278
+
222
279
  function resolveBoardOrExit(boardArg, command) {
223
280
  const resolved = resolveServeBoard(boardArg)
224
281
  if (!resolved) {
@@ -228,10 +285,13 @@ Looked for:
228
285
  - --board / TASKMARK_BOARD
229
286
  - TASKMARK_MASTER
230
287
  - cwd layouts: nested ./taskmark/ or dedicated *-taskmark root
288
+ - sibling <parent>-taskmark beside a product repo
231
289
 
232
290
  Fix: cd into a product repo (with ./taskmark/) or a board root, or set TASKMARK_BOARD.
233
291
  Then re-run: npx taskmark ${command}
234
- (or: npx -p @taskmark/ui taskmark ${command})`)
292
+ (or: npx -p @taskmark/ui taskmark ${command})
293
+
294
+ To pick a project in the browser instead: npx taskmark`)
235
295
  process.exit(1)
236
296
  }
237
297
  return resolved
@@ -253,7 +313,8 @@ function attachChildLifecycle(child, onShutdown) {
253
313
  }
254
314
 
255
315
  async function serve(args) {
256
- const resolved = resolveBoardOrExit(args.board, "serve")
316
+ const workspace = isWorkspaceRun(args)
317
+ const resolved = workspace ? null : resolveBoardOrExit(args.board, "serve")
257
318
  const port = resolvePort(args.port)
258
319
  const url = `http://localhost:${port}`
259
320
  const nextBin = resolveNextBin()
@@ -266,7 +327,12 @@ async function serve(args) {
266
327
  }
267
328
 
268
329
  console.log(`Taskmark UI`)
269
- console.log(` board: ${resolved.boardPath} (${resolved.source})`)
330
+ if (workspace) {
331
+ console.log(` mode: workspace (choose projects in the browser)`)
332
+ console.log(` from: ${callerCwd()}`)
333
+ } else {
334
+ console.log(` board: ${resolved.boardPath} (${resolved.source})`)
335
+ }
270
336
  console.log(` listen: ${url}`)
271
337
 
272
338
  const child = spawn(
@@ -278,7 +344,9 @@ async function serve(args) {
278
344
  ...process.env,
279
345
  PORT: String(port),
280
346
  HOSTNAME: "0.0.0.0",
281
- TASKMARK_BOARD: resolved.boardPath,
347
+ ...(workspace
348
+ ? workspaceEnv()
349
+ : { TASKMARK_BOARD: resolved.boardPath }),
282
350
  NODE_ENV: "production",
283
351
  },
284
352
  stdio: "inherit",
@@ -308,15 +376,25 @@ async function serve(args) {
308
376
  }
309
377
 
310
378
  async function dev(args) {
311
- const resolved = resolveBoardOrExit(args.board, "dev")
379
+ const workspace = isWorkspaceRun(args)
380
+ const resolved = workspace ? null : resolveBoardOrExit(args.board, "dev")
312
381
  const port = resolvePort(args.port)
313
382
  const url = `http://localhost:${port}`
314
383
  const nextBin = resolveNextBin()
315
384
 
316
385
  console.log(`Taskmark UI (dev)`)
317
- console.log(` board: ${resolved.boardPath} (${resolved.source})`)
386
+ if (workspace) {
387
+ console.log(` mode: workspace (choose projects in the browser)`)
388
+ console.log(` from: ${callerCwd()}`)
389
+ } else {
390
+ console.log(` board: ${resolved.boardPath} (${resolved.source})`)
391
+ }
318
392
  console.log(` listen: ${url}`)
319
- console.log(` watch: **/*.md under board`)
393
+ console.log(
394
+ workspace
395
+ ? ` watch: off (no single board bound)`
396
+ : ` watch: **/*.md under board`
397
+ )
320
398
 
321
399
  const child = spawn(
322
400
  process.execPath,
@@ -326,8 +404,12 @@ async function dev(args) {
326
404
  env: {
327
405
  ...process.env,
328
406
  PORT: String(port),
329
- TASKMARK_BOARD: resolved.boardPath,
330
- TASKMARK_CWD: resolved.boardPath,
407
+ ...(workspace
408
+ ? workspaceEnv()
409
+ : {
410
+ TASKMARK_BOARD: resolved.boardPath,
411
+ TASKMARK_CWD: resolved.boardPath,
412
+ }),
331
413
  NODE_ENV: "development",
332
414
  },
333
415
  stdio: "inherit",
@@ -335,17 +417,21 @@ async function dev(args) {
335
417
  )
336
418
 
337
419
  let debounce = null
338
- const stopWatch = watchBoardMarkdown(resolved.boardPath, () => {
339
- if (debounce) clearTimeout(debounce)
340
- debounce = setTimeout(() => {
341
- try {
342
- touchDevReloadToken()
343
- console.log(`[taskmark] board markdown changed — refreshing`)
344
- } catch (err) {
345
- console.warn(`[taskmark] reload touch failed: ${err?.message || err}`)
346
- }
347
- }, 200)
348
- })
420
+ const stopWatch = workspace
421
+ ? () => {}
422
+ : watchBoardMarkdown(resolved.boardPath, () => {
423
+ if (debounce) clearTimeout(debounce)
424
+ debounce = setTimeout(() => {
425
+ try {
426
+ touchDevReloadToken()
427
+ console.log(`[taskmark] board markdown changed refreshing`)
428
+ } catch (err) {
429
+ console.warn(
430
+ `[taskmark] reload touch failed: ${err?.message || err}`
431
+ )
432
+ }
433
+ }, 200)
434
+ })
349
435
 
350
436
  const shutdown = attachChildLifecycle(child, () => {
351
437
  stopWatch()
@@ -427,7 +513,30 @@ async function main() {
427
513
  printHelp()
428
514
  process.exit(args.help || !args.command ? 0 : 1)
429
515
  }
430
- if (args.command === "serve") {
516
+ const workspaceCommands = new Set(["auto", "open", "serve", "dev"])
517
+ if (args.workspace && !workspaceCommands.has(args.command)) {
518
+ console.error(`--workspace applies to the default command, open, serve, and dev.
519
+
520
+ Use: npx taskmark (or: npx taskmark open)`)
521
+ process.exit(1)
522
+ }
523
+ if ((isWorkspaceRun(args) || (args.command === "auto" && args.workspace)) && args.board) {
524
+ console.error(`--board and workspace mode are mutually exclusive.
525
+
526
+ Bind one board: npx taskmark serve --board ${args.board}
527
+ Pick projects in UI: npx taskmark open`)
528
+ process.exit(1)
529
+ }
530
+ if (args.command === "auto") {
531
+ try {
532
+ await serve(resolveAutoArgs(args))
533
+ } catch (err) {
534
+ console.error(String(err?.message || err))
535
+ process.exit(1)
536
+ }
537
+ return
538
+ }
539
+ if (args.command === "open" || args.command === "serve") {
431
540
  try {
432
541
  await serve(args)
433
542
  } catch (err) {
@@ -1 +1 @@
1
- wbcgYS3Jw87KqhnA9ttOL
1
+ sAWr5ATVuqk6Wqs18kAWs
@@ -4,8 +4,8 @@
4
4
  ],
5
5
  "devFiles": [],
6
6
  "lowPriorityFiles": [
7
- "static/wbcgYS3Jw87KqhnA9ttOL/_buildManifest.js",
8
- "static/wbcgYS3Jw87KqhnA9ttOL/_ssgManifest.js"
7
+ "static/sAWr5ATVuqk6Wqs18kAWs/_buildManifest.js",
8
+ "static/sAWr5ATVuqk6Wqs18kAWs/_ssgManifest.js"
9
9
  ],
10
10
  "rootMainFiles": [
11
11
  "static/chunks/webpack-bfe8992962004e2b.js",
@@ -78,6 +78,30 @@
78
78
  "x-next-revalidated-tags",
79
79
  "x-next-revalidate-tag-token"
80
80
  ]
81
+ },
82
+ "/setup": {
83
+ "experimentalBypassFor": [
84
+ {
85
+ "type": "header",
86
+ "key": "next-action"
87
+ },
88
+ {
89
+ "type": "header",
90
+ "key": "content-type",
91
+ "value": "multipart/form-data;.*"
92
+ }
93
+ ],
94
+ "initialRevalidateSeconds": false,
95
+ "srcRoute": "/setup",
96
+ "dataRoute": "/setup.rsc",
97
+ "allowHeader": [
98
+ "host",
99
+ "x-matched-path",
100
+ "x-prerender-revalidate",
101
+ "x-prerender-revalidate-if-generated",
102
+ "x-next-revalidated-tags",
103
+ "x-next-revalidate-tag-token"
104
+ ]
81
105
  }
82
106
  },
83
107
  "dynamicRoutes": {},
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-bfe8992962004e2b.js"/><script src="/_next/static/chunks/4bd1b696-deb4a0a1da1923b0.js" async=""></script><script src="/_next/static/chunks/794-25668765560cb197.js" async=""></script><script src="/_next/static/chunks/main-app-bfb36455d24b3e5a.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-bfe8992962004e2b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"wbcgYS3Jw87KqhnA9ttOL\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-bfe8992962004e2b.js"/><script src="/_next/static/chunks/4bd1b696-deb4a0a1da1923b0.js" async=""></script><script src="/_next/static/chunks/794-25668765560cb197.js" async=""></script><script src="/_next/static/chunks/main-app-bfb36455d24b3e5a.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-bfe8992962004e2b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"sAWr5ATVuqk6Wqs18kAWs\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
@@ -6,7 +6,7 @@
6
6
  8:I[90484,[],"ViewportBoundary"]
7
7
  a:I[90484,[],"MetadataBoundary"]
8
8
  c:I[27123,[],"default",1]
9
- 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["_global-error",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"wbcgYS3Jw87KqhnA9ttOL"}
9
+ 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["_global-error",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"sAWr5ATVuqk6Wqs18kAWs"}
10
10
  d:[]
11
11
  7:"$Wd"
12
12
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -6,7 +6,7 @@
6
6
  8:I[90484,[],"ViewportBoundary"]
7
7
  a:I[90484,[],"MetadataBoundary"]
8
8
  c:I[27123,[],"default",1]
9
- 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["_global-error",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"wbcgYS3Jw87KqhnA9ttOL"}
9
+ 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["_global-error",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"sAWr5ATVuqk6Wqs18kAWs"}
10
10
  d:[]
11
11
  7:"$Wd"
12
12
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]