@meridiona/meridian-darwin-arm64 1.2.0 → 1.2.2

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 (64) hide show
  1. package/.env.example +2 -3
  2. package/VERSION +1 -1
  3. package/bin/meridian +0 -0
  4. package/package.json +1 -1
  5. package/scripts/install-from-bundle.sh +1 -1
  6. package/services/pyproject.toml +1 -1
  7. package/services/tests/evals/data/seeds/sessions_a_meridian.json +1 -1
  8. package/services/tests/evals/data/seeds/sessions_b_generic.json +4 -4
  9. package/ui/.next/static/chunks/{11~m4ht43auzj.js → 0vh2gk~.ts7mj.js} +1 -1
  10. package/ui/.next/static/chunks/{06j6xnq48yser.js → 10eme~wuwi3ro.js} +1 -1
  11. package/ui/ui/.next/BUILD_ID +1 -1
  12. package/ui/ui/.next/build-manifest.json +3 -3
  13. package/ui/ui/.next/prerender-manifest.json +3 -3
  14. package/ui/ui/.next/server/app/_global-error.html +1 -1
  15. package/ui/ui/.next/server/app/_global-error.rsc +1 -1
  16. package/ui/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  17. package/ui/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  18. package/ui/ui/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  19. package/ui/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  20. package/ui/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  21. package/ui/ui/.next/server/app/_not-found.html +1 -1
  22. package/ui/ui/.next/server/app/_not-found.rsc +1 -1
  23. package/ui/ui/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  24. package/ui/ui/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/ui/ui/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  26. package/ui/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  27. package/ui/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  28. package/ui/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  29. package/ui/ui/.next/server/app/api/coding-agents/route.js +1 -1
  30. package/ui/ui/.next/server/app/api/coding-agents/route.js.nft.json +1 -1
  31. package/ui/ui/.next/server/app/api/today/route.js +1 -1
  32. package/ui/ui/.next/server/app/api/today/route.js.nft.json +1 -1
  33. package/ui/ui/.next/server/app/index.html +1 -1
  34. package/ui/ui/.next/server/app/index.rsc +2 -2
  35. package/ui/ui/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  36. package/ui/ui/.next/server/app/index.segments/_full.segment.rsc +2 -2
  37. package/ui/ui/.next/server/app/index.segments/_head.segment.rsc +1 -1
  38. package/ui/ui/.next/server/app/index.segments/_index.segment.rsc +1 -1
  39. package/ui/ui/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  40. package/ui/ui/.next/server/app/page/react-loadable-manifest.json +1 -1
  41. package/ui/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  42. package/ui/ui/.next/server/app/settings.html +1 -1
  43. package/ui/ui/.next/server/app/settings.rsc +1 -1
  44. package/ui/ui/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  45. package/ui/ui/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  46. package/ui/ui/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  47. package/ui/ui/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  48. package/ui/ui/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  49. package/ui/ui/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  50. package/ui/ui/.next/server/chunks/[root-of-the-server]__0k._39j._.js +2 -1
  51. package/ui/ui/.next/server/chunks/[root-of-the-server]__0nlf5yy._.js +9 -0
  52. package/ui/ui/.next/server/chunks/[root-of-the-server]__0tb70a~._.js +31 -0
  53. package/ui/ui/.next/server/middleware-build-manifest.js +3 -3
  54. package/ui/ui/.next/server/pages/404.html +1 -1
  55. package/ui/ui/.next/server/pages/500.html +1 -1
  56. package/ui/ui/.next/server/server-reference-manifest.js +1 -1
  57. package/ui/ui/.next/server/server-reference-manifest.json +1 -1
  58. package/ui/ui/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  59. package/ui/ui/package.json +3 -3
  60. package/ui/ui/.next/server/chunks/[root-of-the-server]__0v7hzvj._.js +0 -29
  61. package/ui/ui/.next/server/chunks/[root-of-the-server]__139ariv._.js +0 -9
  62. /package/ui/.next/static/{wioVv6XFtZEmd8mJbhXPz → CCkrzzRwGe9MBRD4oERSo}/_buildManifest.js +0 -0
  63. /package/ui/.next/static/{wioVv6XFtZEmd8mJbhXPz → CCkrzzRwGe9MBRD4oERSo}/_clientMiddlewareManifest.js +0 -0
  64. /package/ui/.next/static/{wioVv6XFtZEmd8mJbhXPz → CCkrzzRwGe9MBRD4oERSo}/_ssgManifest.js +0 -0
package/.env.example CHANGED
@@ -22,9 +22,8 @@
22
22
  # MLX_SERVER_HOST=127.0.0.1
23
23
  # MLX_SERVER_PORT=7823
24
24
 
25
- # Dashboard (Next.js UI) port. Defaults to 3939 (off the common 3000 to avoid
26
- # clashes with other dev servers). Change this and re-run `meridian setup` to
27
- # move the dashboard.
25
+ # Dashboard (Next.js UI) port. Defaults to 3939. Change this and re-run
26
+ # `meridian setup` to move the dashboard.
28
27
  # MERIDIAN_UI_PORT=3939
29
28
 
30
29
  # ---------------------------------------------------------------------------
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.2
package/bin/meridian CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridiona/meridian-darwin-arm64",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Prebuilt Meridian app for macOS arm64 (daemon binary + dashboard + Python services). Installed via @meridiona/meridian.",
5
5
  "homepage": "https://github.com/Meridiona/meridian",
6
6
  "repository": {
@@ -12,7 +12,7 @@ set -euo pipefail
12
12
  APP_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
13
13
  SCREENPIPE_VERSION="0.3.350"
14
14
  MLX_PORT="${MLX_PORT:-7823}"
15
- UI_PORT="${MERIDIAN_UI_PORT:-3939}" # dashboard port; off the common 3000 to avoid clashes
15
+ UI_PORT="${MERIDIAN_UI_PORT:-3939}" # dashboard port (override via MERIDIAN_UI_PORT)
16
16
  SKIP_PERMISSIONS=0
17
17
  [[ "${1:-}" == "--skip-permissions" ]] && SKIP_PERMISSIONS=1
18
18
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.2.0"
7
+ version = "1.2.2"
8
8
  description = "Meridian agents — hermes task linking and Jira progress updates for meridian.db"
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "Meridiona" }]
@@ -136,7 +136,7 @@
136
136
  "count": 1
137
137
  }
138
138
  ],
139
- "session_text": "[09:01:34]\nNew Tab\nSearch Google or type a URL\nFrequently visited\nGitHub · Meridiona/meridian\nLinear — Meridian\nmeridiona.atlassian.net\nlocalhost:3000 — meridian dashboard\nOpenObserve — meridiona\nGmail\nCustomize Chrome\nQ Search tabs… Recently closed Bookmarks Reading list\n[09:01:39]\nmeridiona.atlassian.net/jira/software/projects/KAN/boards/1/backlog\nBacklog · Meridiona - Jira\nMeridiona\nJira\nYour work\nProjects\nMeridian (KAN)\nBoard\nBacklog\nReports\nSprint 12 — In progress\nKAN-136 Add observability and tracing for agents and later processes In Progress Akarsh Hegde 3 SP\nKAN-138 Merge feat/mlx-persistent-server into KAN-136 branch To Do Aditya Harish 2 SP\nKAN-139 Create golden dataset for task classification In Progress Akarsh Hegde 5 SP\nKAN-137 One-click install package for the repo To Do Unassigned 5 SP\nKAN-105 Tag multiple tasks to a single session To Do Unassigned 3 SP\nBacklog\nKAN-56 Fill out Apple business details To Do Aditya Harish 1 SP\n+ Create issue\n[09:01:46]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira\nmeridiona.atlassian.net/browse/KAN-139\nProjects / Meridian / KAN-139\nKAN-139\nCreate golden dataset for task classification\nAttach Add a child issue Link issue Apps\nDescription\nWrite more than 50 user flows with the help of Claude that represents a developer's coding cycle and the correct task (on Jira) classification for their activities during these flows. The dataset feeds the deepeval-based eval harness in services/tests/evals/ and is the foundation for benchmarking model swaps and prompt iterations.\nAcceptance criteria\n• At least 50 scoreable golden sessions across realistic developer flows\n• Mix of easy / medium / hard / overhead / untracked difficulty tiers\n• Drop-in to existing build_dataset.py format (input prompt + expected_output JSON)\n• Documented difficulty taxonomy and design rationale per session\n• Both real-project (Meridian KAN-xxx) and generic-placeholder (PROJ-xxx) developer personas\nDetails\nAssignee Akarsh Hegde\nReporter Aditya Harish\nLabels evals, intelligence, dataset\nSprint Sprint 12\nStory points 5\nReported 3 days ago\nUpdated 2 hours ago — Aditya Harish: added comment\nActivity Show: All\nAditya Harish 2 hours ago\nleft a note on the recent_sessions filter — current build_dataset.py:106 filters by duration_s > 1 AND session_text != '' which loses high-signal short sessions (eg a 15s 'git checkout -b feat/...' tells us everything). worth revisiting as part of this work.\nReply React Permalink\n[09:01:58]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira\nDescription (continued visible region)\nAcceptance criteria\n• At least 50 scoreable golden sessions across realistic developer flows\n• Mix of easy / medium / hard / overhead / untracked difficulty tiers\n• Drop-in to existing build_dataset.py format (input prompt + expected_output JSON)\nLinked items\nblocks KAN-109 LLM benchmarking and prompt evaluation framework In Progress\nrelates to KAN-64 Session-to-Task Mapping Engine Done\nrelates to KAN-107 Add agent reasoning to the session→task mapping Done\nAttachments\nNo attachments\n[09:02:09]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira\nComments (1)\nAditya Harish 2 hours ago\nleft a note on the recent_sessions filter — current build_dataset.py:106 filters by duration_s > 1 AND session_text != '' which loses high-signal short sessions (eg a 15s 'git checkout -b feat/...' tells us everything). worth revisiting as part of this work.\nReply\nAdd a comment…\n[09:02:16]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira",
139
+ "session_text": "[09:01:34]\nNew Tab\nSearch Google or type a URL\nFrequently visited\nGitHub · Meridiona/meridian\nLinear — Meridian\nmeridiona.atlassian.net\nlocalhost:3939 — meridian dashboard\nOpenObserve — meridiona\nGmail\nCustomize Chrome\nQ Search tabs… Recently closed Bookmarks Reading list\n[09:01:39]\nmeridiona.atlassian.net/jira/software/projects/KAN/boards/1/backlog\nBacklog · Meridiona - Jira\nMeridiona\nJira\nYour work\nProjects\nMeridian (KAN)\nBoard\nBacklog\nReports\nSprint 12 — In progress\nKAN-136 Add observability and tracing for agents and later processes In Progress Akarsh Hegde 3 SP\nKAN-138 Merge feat/mlx-persistent-server into KAN-136 branch To Do Aditya Harish 2 SP\nKAN-139 Create golden dataset for task classification In Progress Akarsh Hegde 5 SP\nKAN-137 One-click install package for the repo To Do Unassigned 5 SP\nKAN-105 Tag multiple tasks to a single session To Do Unassigned 3 SP\nBacklog\nKAN-56 Fill out Apple business details To Do Aditya Harish 1 SP\n+ Create issue\n[09:01:46]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira\nmeridiona.atlassian.net/browse/KAN-139\nProjects / Meridian / KAN-139\nKAN-139\nCreate golden dataset for task classification\nAttach Add a child issue Link issue Apps\nDescription\nWrite more than 50 user flows with the help of Claude that represents a developer's coding cycle and the correct task (on Jira) classification for their activities during these flows. The dataset feeds the deepeval-based eval harness in services/tests/evals/ and is the foundation for benchmarking model swaps and prompt iterations.\nAcceptance criteria\n• At least 50 scoreable golden sessions across realistic developer flows\n• Mix of easy / medium / hard / overhead / untracked difficulty tiers\n• Drop-in to existing build_dataset.py format (input prompt + expected_output JSON)\n• Documented difficulty taxonomy and design rationale per session\n• Both real-project (Meridian KAN-xxx) and generic-placeholder (PROJ-xxx) developer personas\nDetails\nAssignee Akarsh Hegde\nReporter Aditya Harish\nLabels evals, intelligence, dataset\nSprint Sprint 12\nStory points 5\nReported 3 days ago\nUpdated 2 hours ago — Aditya Harish: added comment\nActivity Show: All\nAditya Harish 2 hours ago\nleft a note on the recent_sessions filter — current build_dataset.py:106 filters by duration_s > 1 AND session_text != '' which loses high-signal short sessions (eg a 15s 'git checkout -b feat/...' tells us everything). worth revisiting as part of this work.\nReply React Permalink\n[09:01:58]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira\nDescription (continued visible region)\nAcceptance criteria\n• At least 50 scoreable golden sessions across realistic developer flows\n• Mix of easy / medium / hard / overhead / untracked difficulty tiers\n• Drop-in to existing build_dataset.py format (input prompt + expected_output JSON)\nLinked items\nblocks KAN-109 LLM benchmarking and prompt evaluation framework In Progress\nrelates to KAN-64 Session-to-Task Mapping Engine Done\nrelates to KAN-107 Add agent reasoning to the session→task mapping Done\nAttachments\nNo attachments\n[09:02:09]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira\nComments (1)\nAditya Harish 2 hours ago\nleft a note on the recent_sessions filter — current build_dataset.py:106 filters by duration_s > 1 AND session_text != '' which loses high-signal short sessions (eg a 15s 'git checkout -b feat/...' tells us everything). worth revisiting as part of this work.\nReply\nAdd a comment…\n[09:02:16]\nKAN-139 Create golden dataset for task classification - Meridiona - Jira",
140
140
  "audio_snippets": [],
141
141
  "ground_truth": {
142
142
  "task_key": "KAN-139",
@@ -189,7 +189,7 @@
189
189
  "count": 2
190
190
  }
191
191
  ],
192
- "session_text": "[09:38:00]\nNotes — macOS\n iCloud\n All iCloud\n Zuno / Dev Notes\n PROJ-210 progress <- ACTIVE\n PROJ-201 circuit breaker plan\n Sprint 2026-05 kickoff\n Personal\n\n[09:38:05]\nNotes — PROJ-210 progress\nPROJ-210 auth migration -- 2026-05-27 09:38\n\nDone so far:\n ✓ src/middleware/auth.ts -- cookie+CSRF path (b3e2f91)\n ✓ src/services/session-store.ts -- InMemorySessionStore + PkceStateStore\n ✓ src/routes/auth.ts -- login, csrf-token, logout, okta/redirect, okta/callback\n ✓ src/config.ts -- OKTA_* fields added\n ✓ tsc clean, 18/18 auth tests passing\n\nStill TODO before pair session (13:00):\n - pruneExpired() scheduler (setInterval 5min in app.ts startup)\n - quick manual curl test against localhost:3000\n - push branch and open PR draft for Sarah review\n\nDesign sync at 11:00 (PROJ-225 dashboard perf):\n - Review Figma skeleton designs\n - Confirm React.lazy() + Suspense boundaries plan\n - ChartSkeleton fallback (not null) -- Priya's note\n - Performance targets: initial load <1s, full <4s\n\n(developer saves -- Cmd+S, closes Notes)\n",
192
+ "session_text": "[09:38:00]\nNotes — macOS\n iCloud\n All iCloud\n Zuno / Dev Notes\n PROJ-210 progress <- ACTIVE\n PROJ-201 circuit breaker plan\n Sprint 2026-05 kickoff\n Personal\n\n[09:38:05]\nNotes — PROJ-210 progress\nPROJ-210 auth migration -- 2026-05-27 09:38\n\nDone so far:\n ✓ src/middleware/auth.ts -- cookie+CSRF path (b3e2f91)\n ✓ src/services/session-store.ts -- InMemorySessionStore + PkceStateStore\n ✓ src/routes/auth.ts -- login, csrf-token, logout, okta/redirect, okta/callback\n ✓ src/config.ts -- OKTA_* fields added\n ✓ tsc clean, 18/18 auth tests passing\n\nStill TODO before pair session (13:00):\n - pruneExpired() scheduler (setInterval 5min in app.ts startup)\n - quick manual curl test against localhost:3939\n - push branch and open PR draft for Sarah review\n\nDesign sync at 11:00 (PROJ-225 dashboard perf):\n - Review Figma skeleton designs\n - Confirm React.lazy() + Suspense boundaries plan\n - ChartSkeleton fallback (not null) -- Priya's note\n - Performance targets: initial load <1s, full <4s\n\n(developer saves -- Cmd+S, closes Notes)\n",
193
193
  "audio_snippets": [],
194
194
  "ground_truth": {
195
195
  "task_key": "none",
@@ -249,7 +249,7 @@
249
249
  "count": 5
250
250
  }
251
251
  ],
252
- "session_text": "[09:42:00]\nVisual Studio Code\nWindow: zuno-app — Visual Studio Code\nActive tab: src/app.ts\nStatus bar: TypeScript | Branch: feat/proj-210-auth-migration | 0 errors\n\n[09:42:08]\nVS Code — src/app.ts (opening for pruneExpired scheduler)\n\n 1 import express from 'express'\n 2 import cookieParser from 'cookie-parser'\n 3 import { authRouter } from './routes/auth'\n 4 import { webhookRouter } from './routes/webhooks'\n 5 import { requestLogger } from './middleware/requestLogger'\n 6 import { config } from './config'\n 7 \n 8 export const app = express()\n 9 app.use(express.json())\n 10 app.use(cookieParser())\n 11 app.use(requestLogger)\n 12 \n 13 app.use('/auth', authRouter)\n 14 app.use('/webhooks', webhookRouter)\n 15 \n 16 export function startServer(): void {\n 17 app.listen(config.PORT, () => {\n 18 console.log(`Server listening on port ${config.PORT}`)\n 19 })\n 20 }\n\n[09:42:20]\nVS Code — Terminal\n\n> Add a pruneExpired() scheduler to src/app.ts: call sessionStore.pruneExpired()\n every 5 minutes using setInterval. Also log the pruned count with the Datadog\n logger so we can track session store size in production.\n\n● Claude is thinking...\n\n ✓ Read src/app.ts\n ✎ Editing src/app.ts\n + import { sessionStore } from './services/session-store'\n + import logger from './utils/logger'\n ...\n + // Prune expired sessions every 5 minutes\n + setInterval(() => {\n + const pruned = sessionStore.pruneExpired()\n + if (pruned > 0) {\n + logger.info({ event: 'session_store_pruned', count: pruned,\n + remaining: sessionStore.size() })\n + }\n + }, 5 * 60 * 1000).unref() // .unref() so it doesn't prevent process exit\n ✓ Wrote src/app.ts (+9 lines)\n\n$ npx tsc --noEmit\n (exit 0)\n\n[09:43:00]\nVS Code — Terminal (manual curl test against localhost)\n\n$ npm run dev &\n [dev] Server listening on port 3000\n\n$ curl -s -X POST http://localhost:3000/auth/login \\\n -H 'Content-Type: application/json' \\\n -d '{\"email\":\"test@zuno.io\",\"password\":\"testpassword\"}' | jq .\n {\n \"csrfToken\": \"a3f91b2c...(64 hex chars)\",\n \"expiresAt\": \"2026-06-26T04:13:05.123Z\",\n \"maxAge\": 2592000\n }\n\n(developer: AUTH_COOKIE_ENABLED must be set to true in .env for the cookie path)\n\n$ AUTH_COOKIE_ENABLED=true npm run dev &\n [dev] Server listening on port 3001\n\n$ curl -s -c /tmp/zuno-cookies.txt -X POST http://localhost:3001/auth/login \\\n -H 'Content-Type: application/json' \\\n -d '{\"email\":\"test@zuno.io\",\"password\":\"testpassword\"}' | jq .\n {\n \"csrfToken\": \"b7d42f1a8e3c90ab5f6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b\",\n \"expiresAt\": \"2026-06-26T04:13:15.456Z\",\n \"maxAge\": 2592000\n }\n\n$ cat /tmp/zuno-cookies.txt\n # Netscape HTTP Cookie File\n localhost FALSE / FALSE 1782025995 zuno_session 4f7a1b3d...\n\n(developer: cookie is being set)\n\n$ CSRF=$(curl -s -c /tmp/zuno-cookies.txt -b /tmp/zuno-cookies.txt \\\n http://localhost:3001/auth/csrf-token | jq -r .csrfToken)\n$ echo \"CSRF: $CSRF\"\n CSRF: b7d42f1a8e3c90ab5f6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b\n\n$ curl -s -b /tmp/zuno-cookies.txt \\\n -H \"X-CSRF-Token: $CSRF\" \\\n -X POST http://localhost:3001/auth/logout | jq .\n { \"message\": \"Logged out\" }\n\n(developer: login, csrf-token, logout all working manually. cookie path confirmed.)\n\n$ kill %1 %2 # kill the dev servers\n\n[09:44:10]\nVS Code — Terminal (commit and push)\n\n$ git add src/app.ts\n$ git commit -m \"feat(auth): add session pruneExpired scheduler in app.ts\n>\n> PROJ-210: prune expired sessions every 5 min via setInterval.\n> .unref() so the interval doesn't block process exit.\n> Logs pruned count + remaining count via Datadog logger.\"\n\n [feat/proj-210-auth-migration f2b9d01]\n feat(auth): add session pruneExpired scheduler\n 1 file changed, 9 insertions(+)\n\n$ git push -u origin feat/proj-210-auth-migration\n Enumerating objects: 18, done.\n Branch feat/proj-210-auth-migration set up to track remote.\n\n$ gh pr create --draft --title 'feat(auth): JWT -> session cookie migration (PROJ-210)'\\\n --body 'PROJ-210: auth migration backend. All routes done, tests passing.\n Pair session with @alex at 13:00 for frontend integration.\n TODO before merging: integration tests for cookie path.'\n Draft PR #92 created: https://github.com/zuno-app/zuno/pull/92\n\n(developer: backend implementation complete. PR #92 open as draft.\n Ready for 11:00 design sync on PROJ-225.)\n",
252
+ "session_text": "[09:42:00]\nVisual Studio Code\nWindow: zuno-app — Visual Studio Code\nActive tab: src/app.ts\nStatus bar: TypeScript | Branch: feat/proj-210-auth-migration | 0 errors\n\n[09:42:08]\nVS Code — src/app.ts (opening for pruneExpired scheduler)\n\n 1 import express from 'express'\n 2 import cookieParser from 'cookie-parser'\n 3 import { authRouter } from './routes/auth'\n 4 import { webhookRouter } from './routes/webhooks'\n 5 import { requestLogger } from './middleware/requestLogger'\n 6 import { config } from './config'\n 7 \n 8 export const app = express()\n 9 app.use(express.json())\n 10 app.use(cookieParser())\n 11 app.use(requestLogger)\n 12 \n 13 app.use('/auth', authRouter)\n 14 app.use('/webhooks', webhookRouter)\n 15 \n 16 export function startServer(): void {\n 17 app.listen(config.PORT, () => {\n 18 console.log(`Server listening on port ${config.PORT}`)\n 19 })\n 20 }\n\n[09:42:20]\nVS Code — Terminal\n\n> Add a pruneExpired() scheduler to src/app.ts: call sessionStore.pruneExpired()\n every 5 minutes using setInterval. Also log the pruned count with the Datadog\n logger so we can track session store size in production.\n\n● Claude is thinking...\n\n ✓ Read src/app.ts\n ✎ Editing src/app.ts\n + import { sessionStore } from './services/session-store'\n + import logger from './utils/logger'\n ...\n + // Prune expired sessions every 5 minutes\n + setInterval(() => {\n + const pruned = sessionStore.pruneExpired()\n + if (pruned > 0) {\n + logger.info({ event: 'session_store_pruned', count: pruned,\n + remaining: sessionStore.size() })\n + }\n + }, 5 * 60 * 1000).unref() // .unref() so it doesn't prevent process exit\n ✓ Wrote src/app.ts (+9 lines)\n\n$ npx tsc --noEmit\n (exit 0)\n\n[09:43:00]\nVS Code — Terminal (manual curl test against localhost)\n\n$ npm run dev &\n [dev] Server listening on port 3000\n\n$ curl -s -X POST http://localhost:3939/auth/login \\\n -H 'Content-Type: application/json' \\\n -d '{\"email\":\"test@zuno.io\",\"password\":\"testpassword\"}' | jq .\n {\n \"csrfToken\": \"a3f91b2c...(64 hex chars)\",\n \"expiresAt\": \"2026-06-26T04:13:05.123Z\",\n \"maxAge\": 2592000\n }\n\n(developer: AUTH_COOKIE_ENABLED must be set to true in .env for the cookie path)\n\n$ AUTH_COOKIE_ENABLED=true npm run dev &\n [dev] Server listening on port 3001\n\n$ curl -s -c /tmp/zuno-cookies.txt -X POST http://localhost:3001/auth/login \\\n -H 'Content-Type: application/json' \\\n -d '{\"email\":\"test@zuno.io\",\"password\":\"testpassword\"}' | jq .\n {\n \"csrfToken\": \"b7d42f1a8e3c90ab5f6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b\",\n \"expiresAt\": \"2026-06-26T04:13:15.456Z\",\n \"maxAge\": 2592000\n }\n\n$ cat /tmp/zuno-cookies.txt\n # Netscape HTTP Cookie File\n localhost FALSE / FALSE 1782025995 zuno_session 4f7a1b3d...\n\n(developer: cookie is being set)\n\n$ CSRF=$(curl -s -c /tmp/zuno-cookies.txt -b /tmp/zuno-cookies.txt \\\n http://localhost:3001/auth/csrf-token | jq -r .csrfToken)\n$ echo \"CSRF: $CSRF\"\n CSRF: b7d42f1a8e3c90ab5f6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b\n\n$ curl -s -b /tmp/zuno-cookies.txt \\\n -H \"X-CSRF-Token: $CSRF\" \\\n -X POST http://localhost:3001/auth/logout | jq .\n { \"message\": \"Logged out\" }\n\n(developer: login, csrf-token, logout all working manually. cookie path confirmed.)\n\n$ kill %1 %2 # kill the dev servers\n\n[09:44:10]\nVS Code — Terminal (commit and push)\n\n$ git add src/app.ts\n$ git commit -m \"feat(auth): add session pruneExpired scheduler in app.ts\n>\n> PROJ-210: prune expired sessions every 5 min via setInterval.\n> .unref() so the interval doesn't block process exit.\n> Logs pruned count + remaining count via Datadog logger.\"\n\n [feat/proj-210-auth-migration f2b9d01]\n feat(auth): add session pruneExpired scheduler\n 1 file changed, 9 insertions(+)\n\n$ git push -u origin feat/proj-210-auth-migration\n Enumerating objects: 18, done.\n Branch feat/proj-210-auth-migration set up to track remote.\n\n$ gh pr create --draft --title 'feat(auth): JWT -> session cookie migration (PROJ-210)'\\\n --body 'PROJ-210: auth migration backend. All routes done, tests passing.\n Pair session with @alex at 13:00 for frontend integration.\n TODO before merging: integration tests for cookie path.'\n Draft PR #92 created: https://github.com/zuno-app/zuno/pull/92\n\n(developer: backend implementation complete. PR #92 open as draft.\n Ready for 11:00 design sync on PROJ-225.)\n",
253
253
  "audio_snippets": [],
254
254
  "ground_truth": {
255
255
  "task_key": "PROJ-210",
@@ -470,7 +470,7 @@
470
470
  "count": 5
471
471
  }
472
472
  ],
473
- "session_text": "[14:40:00]\nPostman — API Testing\nCollection: Zuno Backend | Environment: localhost\n\nSidebar:\n Collections:\n ▼ Zuno Backend\n Auth\n POST /auth/login\n GET /auth/csrf-token\n POST /auth/logout\n GET /auth/okta/redirect\n POST /auth/okta/callback\n Webhooks\n POST /webhooks/events <- ACTIVE\n GET /webhooks/events/:id\n GET /webhooks/events (list)\n PATCH /webhooks/targets/:id/re-enable\n Reports\n GET /reports\n GET /reports/export (CSV, PROJ-230)\n Environments:\n localhost (active) base_url = http://localhost:3000\n staging base_url = https://staging.zuno.io\n\n[14:40:20]\nPostman — POST /webhooks/events (sending a test webhook event)\n\nRequest:\n Method: POST\n URL: {{base_url}}/webhooks/events\n Auth: Bearer {{jwt_token}} (from env variable)\n Headers:\n Content-Type: application/json\n Body (raw JSON):\n {\n \"targetUrl\": \"https://httpbin.org/post\",\n \"payload\": {\n \"event\": \"user.created\",\n \"data\": { \"userId\": \"test-123\", \"email\": \"testuser@example.com\" }\n }\n }\n\n(developer clicks Send)\n\nResponse 200 OK (234ms)\n {\n \"id\": \"b7a3d2f1-4e5c-6789-abcd-ef0123456789\",\n \"targetUrl\": \"https://httpbin.org/post\",\n \"status\": \"pending\",\n \"attemptCount\": 0,\n \"deliveryId\": \"c9d8e7f6-a5b4-3c2d-1e0f-9a8b7c6d5e4f\",\n \"nextRetryAt\": null,\n \"createdAt\": \"2026-05-27T09:10:05.000Z\"\n }\n\n(developer: event created successfully. now testing that the retry worker\n picks it up and delivers to httpbin.org)\n\n[14:41:05]\nPostman — GET /webhooks/events/:id (checking delivery status)\n\nRequest:\n Method: GET\n URL: {{base_url}}/webhooks/events/b7a3d2f1-4e5c-6789-abcd-ef0123456789\n Auth: Bearer {{jwt_token}}\n\n(developer clicks Send)\n\nResponse 200 OK (18ms)\n {\n \"id\": \"b7a3d2f1-...\",\n \"targetUrl\": \"https://httpbin.org/post\",\n \"status\": \"success\",\n \"attemptCount\": 1,\n \"lastAttemptAt\": \"2026-05-27T09:10:06.100Z\",\n \"nextRetryAt\": null,\n \"deliveryId\": \"c9d8e7f6-...\"\n }\n\n(developer: status is 'success' -- delivery worked on first attempt.\n httpbin.org echoes the request back with 200.)\n\n[14:41:40]\nPostman — POST /webhooks/events (testing with a dead endpoint)\n\nRequest body:\n {\n \"targetUrl\": \"https://dead-endpoint.example.com/webhook\",\n \"payload\": { \"event\": \"user.created\", \"data\": { \"userId\": \"test-456\" } }\n }\n\n(developer sends 3 events to the same dead endpoint to trigger circuit breaker)\n\n(Send #1) Response 200 OK\n { \"id\": \"e1f2a3b4-...\", \"status\": \"pending\", ... }\n(Send #2) Response 200 OK\n { \"id\": \"f2e3d4c5-...\", \"status\": \"pending\", ... }\n(Send #3) Response 200 OK\n { \"id\": \"a3b4c5d6-...\", \"status\": \"pending\", ... }\n\n(developer waits ~5 seconds for retry worker to process events)\n\n[14:42:10]\nPostman — PATCH /webhooks/targets/:id/re-enable (checking target status)\n\nGET /webhooks/targets?url=dead-endpoint.example.com\n\nResponse 200 OK:\n {\n \"targetUrl\": \"https://dead-endpoint.example.com/webhook\",\n \"status\": \"dead\",\n \"consecutiveFailures\": 3,\n \"markedDeadAt\": \"2026-05-27T09:11:58.220Z\"\n }\n\n(developer: circuit breaker triggered correctly -- target is marked dead after\n 3 consecutive failures. Datadog should have the circuit_breaker_triggered log.)\n(switches to VS Code terminal to check logs)\n\n[14:42:45]\nPostman\n(developer closes Postman, returns to VS Code)\n",
473
+ "session_text": "[14:40:00]\nPostman — API Testing\nCollection: Zuno Backend | Environment: localhost\n\nSidebar:\n Collections:\n ▼ Zuno Backend\n Auth\n POST /auth/login\n GET /auth/csrf-token\n POST /auth/logout\n GET /auth/okta/redirect\n POST /auth/okta/callback\n Webhooks\n POST /webhooks/events <- ACTIVE\n GET /webhooks/events/:id\n GET /webhooks/events (list)\n PATCH /webhooks/targets/:id/re-enable\n Reports\n GET /reports\n GET /reports/export (CSV, PROJ-230)\n Environments:\n localhost (active) base_url = http://localhost:3939\n staging base_url = https://staging.zuno.io\n\n[14:40:20]\nPostman — POST /webhooks/events (sending a test webhook event)\n\nRequest:\n Method: POST\n URL: {{base_url}}/webhooks/events\n Auth: Bearer {{jwt_token}} (from env variable)\n Headers:\n Content-Type: application/json\n Body (raw JSON):\n {\n \"targetUrl\": \"https://httpbin.org/post\",\n \"payload\": {\n \"event\": \"user.created\",\n \"data\": { \"userId\": \"test-123\", \"email\": \"testuser@example.com\" }\n }\n }\n\n(developer clicks Send)\n\nResponse 200 OK (234ms)\n {\n \"id\": \"b7a3d2f1-4e5c-6789-abcd-ef0123456789\",\n \"targetUrl\": \"https://httpbin.org/post\",\n \"status\": \"pending\",\n \"attemptCount\": 0,\n \"deliveryId\": \"c9d8e7f6-a5b4-3c2d-1e0f-9a8b7c6d5e4f\",\n \"nextRetryAt\": null,\n \"createdAt\": \"2026-05-27T09:10:05.000Z\"\n }\n\n(developer: event created successfully. now testing that the retry worker\n picks it up and delivers to httpbin.org)\n\n[14:41:05]\nPostman — GET /webhooks/events/:id (checking delivery status)\n\nRequest:\n Method: GET\n URL: {{base_url}}/webhooks/events/b7a3d2f1-4e5c-6789-abcd-ef0123456789\n Auth: Bearer {{jwt_token}}\n\n(developer clicks Send)\n\nResponse 200 OK (18ms)\n {\n \"id\": \"b7a3d2f1-...\",\n \"targetUrl\": \"https://httpbin.org/post\",\n \"status\": \"success\",\n \"attemptCount\": 1,\n \"lastAttemptAt\": \"2026-05-27T09:10:06.100Z\",\n \"nextRetryAt\": null,\n \"deliveryId\": \"c9d8e7f6-...\"\n }\n\n(developer: status is 'success' -- delivery worked on first attempt.\n httpbin.org echoes the request back with 200.)\n\n[14:41:40]\nPostman — POST /webhooks/events (testing with a dead endpoint)\n\nRequest body:\n {\n \"targetUrl\": \"https://dead-endpoint.example.com/webhook\",\n \"payload\": { \"event\": \"user.created\", \"data\": { \"userId\": \"test-456\" } }\n }\n\n(developer sends 3 events to the same dead endpoint to trigger circuit breaker)\n\n(Send #1) Response 200 OK\n { \"id\": \"e1f2a3b4-...\", \"status\": \"pending\", ... }\n(Send #2) Response 200 OK\n { \"id\": \"f2e3d4c5-...\", \"status\": \"pending\", ... }\n(Send #3) Response 200 OK\n { \"id\": \"a3b4c5d6-...\", \"status\": \"pending\", ... }\n\n(developer waits ~5 seconds for retry worker to process events)\n\n[14:42:10]\nPostman — PATCH /webhooks/targets/:id/re-enable (checking target status)\n\nGET /webhooks/targets?url=dead-endpoint.example.com\n\nResponse 200 OK:\n {\n \"targetUrl\": \"https://dead-endpoint.example.com/webhook\",\n \"status\": \"dead\",\n \"consecutiveFailures\": 3,\n \"markedDeadAt\": \"2026-05-27T09:11:58.220Z\"\n }\n\n(developer: circuit breaker triggered correctly -- target is marked dead after\n 3 consecutive failures. Datadog should have the circuit_breaker_triggered log.)\n(switches to VS Code terminal to check logs)\n\n[14:42:45]\nPostman\n(developer closes Postman, returns to VS Code)\n",
474
474
  "audio_snippets": [],
475
475
  "ground_truth": {
476
476
  "task_key": "PROJ-201",
@@ -606,7 +606,7 @@
606
606
  "count": 5
607
607
  }
608
608
  ],
609
- "session_text": "[15:08:00]\nVisual Studio Code\nBranch: feat/proj-225-dashboard-lazy-load\nActive tabs:\n src/styles/globals.css <- ACTIVE\n src/components/Dashboard/index.tsx\n\n[15:08:12]\nVS Code — src/styles/globals.css\n(adding the chart-fade-in CSS class that Claude Code mentioned in session 10)\n\n /* ... existing styles ... */\n \n /* PROJ-225: fade-in transition for lazy-loaded charts */\n .chart-fade-in {\n animation: chartFadeIn 300ms ease-in;\n }\n \n @keyframes chartFadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n\n(developer types and saves: Cmd+S)\n\n[15:08:45]\nVS Code — Terminal\n\n$ npx tsc --noEmit\n (exit 0)\n\n$ npm run dev (starts Next.js dev server)\n ready - started server on 0.0.0.0:3000, url: http://localhost:3000\n\n(developer opens Chrome DevTools for profiling)\n\n[15:09:10]\nVS Code — Terminal (performance script)\n(developer uses Playwright to measure FCP before and after)\n\n> Write a quick Playwright script to measure First Contentful Paint (FCP)\n on http://localhost:3000/dashboard. Run it 3 times and average the FCP.\n Print: average FCP, min FCP, max FCP.\n\n● Claude is thinking...\n\n ✎ Writing /tmp/measure-fcp.ts (temporary script)\n ─────────────────────────────────────────\n import { chromium } from 'playwright'\n\n async function measureFcp(url: string): Promise<number> {\n const browser = await chromium.launch()\n const page = await browser.newPage()\n const fcpPromise = page.evaluate(() =>\n new Promise<number>((resolve) => {\n new PerformanceObserver((list) => {\n const fcp = list.getEntriesByName('first-contentful-paint')[0]\n if (fcp) resolve(fcp.startTime)\n }).observe({ entryTypes: ['paint'] })\n })\n )\n await page.goto(url)\n const fcp = await fcpPromise\n await browser.close()\n return fcp\n }\n\n const results = []\n for (let i = 0; i < 3; i++) {\n const fcp = await measureFcp('http://localhost:3000/dashboard')\n results.push(fcp)\n console.log(`Run ${i+1}: ${fcp.toFixed(0)}ms`)\n }\n const avg = results.reduce((a,b) => a+b, 0) / results.length\n console.log(`Average FCP: ${avg.toFixed(0)}ms`)\n console.log(`Min: ${Math.min(...results).toFixed(0)}ms`)\n console.log(`Max: ${Math.max(...results).toFixed(0)}ms`)\n ─────────────────────────────────────────\n ✓ Written /tmp/measure-fcp.ts\n\n[15:09:55]\nVS Code — Terminal (running the FCP measurement)\n\n$ npx ts-node /tmp/measure-fcp.ts\n Run 1: 134ms\n Run 2: 142ms\n Run 3: 128ms\n Average FCP: 135ms\n Min: 128ms\n Max: 142ms\n\n(developer: FCP is 135ms average! Original was ~3,100ms. That's a 23x improvement.)\n\n$ npx ts-node /tmp/measure-fcp.ts # run again on the OLD branch to baseline\n (switches to main branch)\n\n$ git stash && git checkout main\n Run 1: 3,102ms\n Run 2: 3,087ms\n Run 3: 3,143ms\n Average FCP: 3,111ms\n\n$ git checkout feat/proj-225-dashboard-lazy-load && git stash pop\n\n(developer: confirmed: 3,111ms -> 135ms. 23x improvement. well within <1s target.)\n\n[15:10:45]\nVS Code — Terminal (commit and push)\n\n$ git add src/styles/globals.css\n$ git commit -m 'feat(dashboard): add chart-fade-in CSS animation (PROJ-225)\n>\n> 300ms ease-in opacity + 4px translateY fade for lazy-loaded charts.\n> FCP measurement: 3,111ms (baseline) -> 135ms (lazy-load) = 23x improvement.\n> Well within the <1s target from PROJ-225 acceptance criteria.'\n\n [feat/proj-225-dashboard-lazy-load b9c0d1e]\n feat(dashboard): add chart-fade-in CSS animation\n 1 file changed, 9 insertions(+)\n\n$ git push -u origin feat/proj-225-dashboard-lazy-load\n$ gh pr create --draft --title 'feat(dashboard): lazy-load heavy charts (PROJ-225)'\\\n --body 'PROJ-225: React.lazy() + Suspense + skeleton for 3 heavy charts.\n FCP: 3,111ms -> 135ms (23x improvement). Full load: <4s SLA met.\n chart-fade-in 300ms CSS. ErrorBoundary for error/retry state.\n 4 Dashboard tests passing.'\n Draft PR #94 created.\n\n(developer: PROJ-225 core done. Will post performance numbers to Slack.)\n",
609
+ "session_text": "[15:08:00]\nVisual Studio Code\nBranch: feat/proj-225-dashboard-lazy-load\nActive tabs:\n src/styles/globals.css <- ACTIVE\n src/components/Dashboard/index.tsx\n\n[15:08:12]\nVS Code — src/styles/globals.css\n(adding the chart-fade-in CSS class that Claude Code mentioned in session 10)\n\n /* ... existing styles ... */\n \n /* PROJ-225: fade-in transition for lazy-loaded charts */\n .chart-fade-in {\n animation: chartFadeIn 300ms ease-in;\n }\n \n @keyframes chartFadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n\n(developer types and saves: Cmd+S)\n\n[15:08:45]\nVS Code — Terminal\n\n$ npx tsc --noEmit\n (exit 0)\n\n$ npm run dev (starts Next.js dev server)\n ready - started server on 0.0.0.0:3939, url: http://localhost:3939\n\n(developer opens Chrome DevTools for profiling)\n\n[15:09:10]\nVS Code — Terminal (performance script)\n(developer uses Playwright to measure FCP before and after)\n\n> Write a quick Playwright script to measure First Contentful Paint (FCP)\n on http://localhost:3939/dashboard. Run it 3 times and average the FCP.\n Print: average FCP, min FCP, max FCP.\n\n● Claude is thinking...\n\n ✎ Writing /tmp/measure-fcp.ts (temporary script)\n ─────────────────────────────────────────\n import { chromium } from 'playwright'\n\n async function measureFcp(url: string): Promise<number> {\n const browser = await chromium.launch()\n const page = await browser.newPage()\n const fcpPromise = page.evaluate(() =>\n new Promise<number>((resolve) => {\n new PerformanceObserver((list) => {\n const fcp = list.getEntriesByName('first-contentful-paint')[0]\n if (fcp) resolve(fcp.startTime)\n }).observe({ entryTypes: ['paint'] })\n })\n )\n await page.goto(url)\n const fcp = await fcpPromise\n await browser.close()\n return fcp\n }\n\n const results = []\n for (let i = 0; i < 3; i++) {\n const fcp = await measureFcp('http://localhost:3939/dashboard')\n results.push(fcp)\n console.log(`Run ${i+1}: ${fcp.toFixed(0)}ms`)\n }\n const avg = results.reduce((a,b) => a+b, 0) / results.length\n console.log(`Average FCP: ${avg.toFixed(0)}ms`)\n console.log(`Min: ${Math.min(...results).toFixed(0)}ms`)\n console.log(`Max: ${Math.max(...results).toFixed(0)}ms`)\n ─────────────────────────────────────────\n ✓ Written /tmp/measure-fcp.ts\n\n[15:09:55]\nVS Code — Terminal (running the FCP measurement)\n\n$ npx ts-node /tmp/measure-fcp.ts\n Run 1: 134ms\n Run 2: 142ms\n Run 3: 128ms\n Average FCP: 135ms\n Min: 128ms\n Max: 142ms\n\n(developer: FCP is 135ms average! Original was ~3,100ms. That's a 23x improvement.)\n\n$ npx ts-node /tmp/measure-fcp.ts # run again on the OLD branch to baseline\n (switches to main branch)\n\n$ git stash && git checkout main\n Run 1: 3,102ms\n Run 2: 3,087ms\n Run 3: 3,143ms\n Average FCP: 3,111ms\n\n$ git checkout feat/proj-225-dashboard-lazy-load && git stash pop\n\n(developer: confirmed: 3,111ms -> 135ms. 23x improvement. well within <1s target.)\n\n[15:10:45]\nVS Code — Terminal (commit and push)\n\n$ git add src/styles/globals.css\n$ git commit -m 'feat(dashboard): add chart-fade-in CSS animation (PROJ-225)\n>\n> 300ms ease-in opacity + 4px translateY fade for lazy-loaded charts.\n> FCP measurement: 3,111ms (baseline) -> 135ms (lazy-load) = 23x improvement.\n> Well within the <1s target from PROJ-225 acceptance criteria.'\n\n [feat/proj-225-dashboard-lazy-load b9c0d1e]\n feat(dashboard): add chart-fade-in CSS animation\n 1 file changed, 9 insertions(+)\n\n$ git push -u origin feat/proj-225-dashboard-lazy-load\n$ gh pr create --draft --title 'feat(dashboard): lazy-load heavy charts (PROJ-225)'\\\n --body 'PROJ-225: React.lazy() + Suspense + skeleton for 3 heavy charts.\n FCP: 3,111ms -> 135ms (23x improvement). Full load: <4s SLA met.\n chart-fade-in 300ms CSS. ErrorBoundary for error/retry state.\n 4 Dashboard tests passing.'\n Draft PR #94 created.\n\n(developer: PROJ-225 core done. Will post performance numbers to Slack.)\n",
610
610
  "audio_snippets": [],
611
611
  "ground_truth": {
612
612
  "task_key": "PROJ-225",
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,17303,e=>{"use strict";var s=e.i(56916);let t=e=>{let s=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,s,t)=>t?t.toUpperCase():s.toLowerCase());return s.charAt(0).toUpperCase()+s.slice(1)},a=(...e)=>e.filter((e,s,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===s).join(" ").trim();var r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,s.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:l,className:i="",children:c,iconNode:o,...d},x)=>(0,s.createElement)("svg",{ref:x,...r,width:t,height:t,stroke:e,strokeWidth:l?24*Number(n)/Number(t):n,className:a("lucide",i),...!c&&!(e=>{for(let s in e)if(s.startsWith("aria-")||"role"===s||"title"===s)return!0})(d)&&{"aria-hidden":"true"},...d},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(c)?c:[c]]));e.s(["default",0,(e,r)=>{let l=(0,s.forwardRef)(({className:l,...i},c)=>(0,s.createElement)(n,{ref:c,iconNode:r,className:a(`lucide-${t(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=t(e),l}],17303)},99963,e=>{"use strict";var s=e.i(80663);let t=(0,e.i(17303).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);function a(){for(var e,s,t=0,a="",r=arguments.length;t<r;t++)(e=arguments[t])&&(s=function e(s){var t,a,r="";if("string"==typeof s||"number"==typeof s)r+=s;else if("object"==typeof s)if(Array.isArray(s)){var n=s.length;for(t=0;t<n;t++)s[t]&&(a=e(s[t]))&&(r&&(r+=" "),r+=a)}else for(a in s)s[a]&&(r&&(r+=" "),r+=a);return r}(e))&&(a&&(a+=" "),a+=s);return a}var r=e.i(89562);function n({taskKey:e,taskTitle:t,sessionType:r,routing:l,confidence:i,method:c}){let o=function(e){if(!e)return[];switch(e){case"prefilter_trivial":return[{label:"Hermes · pre-filter",deciding:!0}];case"llm_standalone":case"agent_tiebreak":return[{label:"Hermes · classification",deciding:!0}];default:return[{label:e,deciding:!0}]}}(c),d="number"==typeof i&&i>0?`${Math.round(100*i)}%`:null,x=e?d?`${e} \xb7 ${d}`:e:"overhead"===r?"overhead":"queue"===l?d?`queued \xb7 ${d}`:"queued":d?`no match \xb7 ${d}`:"no match";return(0,s.jsxs)("div",{className:"space-y-2 min-w-[200px]",children:[o.length>0?(0,s.jsx)("div",{className:"space-y-1",children:o.map((e,t)=>(0,s.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,s.jsx)("span",{className:a("font-mono text-[10px] uppercase tracking-widest shrink-0",e.deciding?"text-[#4B4A47]":"text-[#C8C6C1]"),children:e.label}),(0,s.jsx)("span",{className:a("text-[10px] font-mono",e.deciding?"text-[#141414] font-medium":"text-[#C8C6C1]"),children:e.deciding?x:"→ escalated"})]},t))}):(0,s.jsx)("p",{className:"text-[11px] text-[#9B9A97]",children:"no classification data"}),e&&t&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"border-t border-[#F0EFEC]"}),(0,s.jsx)("p",{className:"text-[11px] text-[#6B6A67] leading-snug max-w-[220px]",children:t})]}),l&&"auto"!==l&&(0,s.jsxs)("p",{className:"text-[10px] text-[#C8C6C1]",children:["routing: ",(0,s.jsx)("span",{className:"font-mono",children:l})]})]})}function l({children:e,...t}){return(0,s.jsxs)(r.Root,{children:[(0,s.jsx)(r.Trigger,{asChild:!0,children:e}),(0,s.jsx)(r.Portal,{children:(0,s.jsxs)(r.Content,{side:"top",align:"center",sideOffset:5,className:"z-50 rounded-lg border border-[#E8E6E1] bg-white px-3 py-2.5 shadow-md",children:[(0,s.jsx)(n,{...t}),(0,s.jsx)(r.Arrow,{className:"fill-white"})]})})]})}e.s(["default",0,function({taskKey:e,sessionType:r,routing:n,confidence:i,method:c,taskTitle:o,taskUrl:d,size:x="xs"}){if(!r)return null;let u="xs"===x?"text-[10px] px-1.5 py-0.5":"text-xs px-2 py-0.5",p={taskKey:e,taskTitle:o??null,sessionType:r,routing:n,confidence:i,method:c};if("overhead"===r)return(0,s.jsx)(l,{...p,children:(0,s.jsx)("span",{className:a("inline-flex items-center rounded-full font-medium cursor-default","bg-[#F0EFEC] text-[#9B9A97]",u),children:"overhead"})});if("task"===r&&"auto"===n&&e){let r=(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"font-mono",children:e}),d&&(0,s.jsx)(t,{className:"w-2.5 h-2.5 opacity-60"})]}),n=d?(0,s.jsx)("a",{href:d,target:"_blank",rel:"noopener noreferrer",className:a("inline-flex items-center gap-1 rounded-full font-medium hover:brightness-95 transition","bg-[#EBF0FB] text-[#3D5BB0] border border-[#D8E0F4]",u),onClick:e=>e.stopPropagation(),children:r}):(0,s.jsx)("span",{className:a("inline-flex items-center gap-1 rounded-full font-medium cursor-default","bg-[#EBF0FB] text-[#3D5BB0] border border-[#D8E0F4]",u),children:r});return(0,s.jsx)(l,{...p,children:n})}return"task"===r&&"queue"===n?(0,s.jsx)(l,{...p,children:(0,s.jsxs)("span",{className:a("inline-flex items-center gap-1 rounded-full font-medium cursor-default","bg-[#FEF9EC] text-[#92400E] border border-[#FDE68A]",u),children:[(0,s.jsx)("span",{className:"font-mono",children:e??"queued"}),(0,s.jsx)("span",{className:"opacity-60",children:"?"})]})}):"task"===r&&"skip"===n?(0,s.jsx)(l,{...p,children:(0,s.jsx)("span",{className:a("inline-flex items-center rounded-full font-medium cursor-default","bg-[#F8F7F4] text-[#C8C6C1] border border-[#F0EFEC]",u),children:(0,s.jsx)("span",{className:"font-mono",children:"∅"})})}):null}],99963)},72868,e=>{"use strict";var s=e.i(80663),t=e.i(56916),a=e.i(29987),r=e.i(99963);let n={coding:"#3B6FE0",code_review:"#7C3AED",meeting:"#D97706",communication:"#059669",design:"#DB2777",documentation:"#0891B2",planning:"#C4822A",deployment_devops:"#DC2626",research:"#4F46E5",idle_personal:"#78716C"};function l({data:e}){let r=e=>new Date(e).getHours()+new Date(e).getMinutes()/60,i=(0,t.useMemo)(()=>{let s={};e.sessions.forEach(e=>{s[e.cat]=(s[e.cat]||0)+e.dur}),e.active&&(s[e.active.cat]=(s[e.active.cat]||0)+e.active.elapsed_s);let t=Object.values(s).reduce((e,s)=>e+s,0)||1;return Object.entries(s).map(([e,s])=>({cat:e,seconds:s,percentage:s/t*100,label:a.CATS[e]?.label||e})).sort((e,s)=>s.seconds-e.seconds)},[e]),c=(0,t.useMemo)(()=>{let s=[...e.sessions.map(e=>({kind:"session",startH:r(e.started_at),dur:e.dur})),...e.active?[{kind:"session",startH:r(e.active.started_at),dur:e.active.elapsed_s}]:[],...e.gaps.map(e=>({kind:"gap",startH:r(e.started_at),dur:e.dur}))].sort((e,s)=>e.startH-s.startH),t=0,a=0;return s.forEach(e=>{"gap"===e.kind&&e.dur>300?(t=Math.max(t,a),a=0):"session"===e.kind&&(a+=e.dur)}),Math.max(t,a)},[e]),o=(0,t.useMemo)(()=>{let e=0;return i.map(s=>{let t=e,a=s.percentage/100*360,r=t+a,n=(t-90)*Math.PI/180,l=(r-90)*Math.PI/180,i=+(a>180),c=`M ${100+85*Math.cos(n)} ${100+85*Math.sin(n)} A 85 85 0 ${i} 1 ${100+85*Math.cos(l)} ${100+85*Math.sin(l)} L ${100+58*Math.cos(l)} ${100+58*Math.sin(l)} A 58 58 0 ${i} 0 ${100+58*Math.cos(n)} ${100+58*Math.sin(n)} Z`;return e=r,{...s,path:c}})},[i]),[d,x]=(0,t.useState)(null);return(0,s.jsx)(a.Card,{className:"p-6",children:(0,s.jsxs)("div",{className:"flex items-center gap-8",children:[(0,s.jsx)("div",{className:"flex-1 flex justify-center",children:(0,s.jsxs)("div",{className:"relative",style:{width:200,height:200},children:[(0,s.jsx)("svg",{width:"200",height:"200",viewBox:"0 0 200 200",children:o.map(e=>(0,s.jsx)("path",{d:e.path,className:`cat-${e.cat}`,opacity:d===e.cat?1:null===d?.95:.35,style:{cursor:"pointer",transition:"opacity 0.2s ease, transform 0.15s ease",transformOrigin:"100px 100px",transform:d===e.cat?"scale(1.05)":"scale(1)"},onMouseEnter:()=>x(e.cat),onMouseLeave:()=>x(null)},e.cat))}),(0,s.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center pointer-events-none",children:[(0,s.jsx)("p",{className:"font-mono tnum text-[28px] leading-none",style:{color:"var(--ink)"},children:(0,a.fmtDur)(e.focus_s)}),(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-wide mt-1",style:{color:"var(--ink-3)"},children:"active"})]})]})}),(0,s.jsxs)("div",{className:"flex-1 space-y-4",children:[(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-3 pb-4 rule-b",style:{borderBottomColor:"var(--rule)"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-wide mb-1",style:{color:"var(--ink-3)"},children:"Longest block"}),(0,s.jsx)("p",{className:"font-mono tnum text-[20px] leading-none",style:{color:"var(--success)"},children:(0,a.fmtDur)(c)})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-wide mb-1",style:{color:"var(--ink-3)"},children:"Idle time"}),(0,s.jsx)("p",{className:"font-mono tnum text-[20px] leading-none",style:{color:"var(--ink-3)"},children:(0,a.fmtDur)(e.idle_s)})]})]}),(0,s.jsx)("div",{className:"space-y-0.5",children:i.map(e=>{let t=d===e.cat;return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3 py-1.5 px-2 rounded-md transition-all cursor-pointer",style:{background:t?"var(--tint)":"transparent",borderLeft:`3px solid ${t?n[e.cat]??"var(--accent)":"transparent"}`,opacity:t||null===d?1:.45,paddingLeft:t?"6px":"8px"},onMouseEnter:()=>x(e.cat),onMouseLeave:()=>x(null),children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,s.jsx)(a.CatDot,{cat:e.cat,size:9}),(0,s.jsx)("span",{className:"text-[12px] truncate font-medium",style:{color:t?"var(--ink)":"var(--ink-2)"},children:e.label})]}),(0,s.jsxs)("span",{className:"text-[12px] font-mono tnum font-semibold",style:{color:t?"var(--ink)":"var(--ink-3)"},children:[e.percentage.toFixed(0),"%"]})]},e.cat)})})]})]})})}function i({active:e,taskKey:t}){let r=(0,a.useTick)(1),n=e.elapsed_s+r,l=Math.max(1,Math.floor(n/30));return(0,s.jsxs)(a.Card,{className:"overflow-hidden rise",style:{borderColor:"var(--rule-2)"},children:[(0,s.jsx)("div",{className:"h-[3px] w-full",style:{background:"var(--rule)"},children:(0,s.jsx)("div",{className:"h-full blink",style:{width:"32%",background:"var(--live)"}})}),(0,s.jsxs)("div",{className:"p-5",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,s.jsx)(a.LiveDot,{size:8}),(0,s.jsxs)("span",{className:"text-[10px] uppercase tracking-[0.2em]",style:{color:"var(--ink-3)"},children:["Live · captured ",l," frame",1===l?"":"s"," ago"]}),(0,s.jsxs)("span",{className:"ml-auto text-[11px]",style:{color:"var(--ink-3)"},children:[(0,s.jsx)("span",{className:"font-mono tnum",children:(0,a.fmtClock)(e.started_at)})," → now"]})]}),(0,s.jsxs)("div",{className:"flex items-start gap-5",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-baseline gap-3 flex-wrap",children:[(0,s.jsx)("p",{className:"font-serif text-[28px] leading-none italic",style:{color:"var(--ink)"},children:"You're on"}),t&&(0,s.jsx)(a.TaskKey,{keyId:t,big:!0}),(0,s.jsx)("span",{className:"font-serif text-[28px] leading-none italic truncate",style:{color:"var(--ink)"},children:"idle_personal"!==e.cat?a.CATS[e.cat]?.label?.toLowerCase()??e.cat:"an uncategorized session"})]}),(0,s.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-x-5 gap-y-2 text-[13px]",style:{color:"var(--ink-2)"},children:[(0,s.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,s.jsx)(a.AppGlyph,{app:e.app,size:20}),(0,s.jsx)("span",{style:{color:"var(--ink)"},children:e.app})]}),(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,s.jsx)(a.CatDot,{cat:e.cat}),(0,s.jsx)("span",{children:a.CATS[e.cat]?.label??e.cat})]})]}),e.explain&&(0,s.jsxs)("p",{className:"mt-4 text-[12px] leading-relaxed",style:{color:"var(--ink-3)"},children:[(0,s.jsx)("span",{style:{color:"var(--ink-2)"},children:"Why this task"}),(0,s.jsx)("span",{className:"mx-2",style:{color:"var(--ink-4)"},children:"·"}),e.explain]})]}),(0,s.jsxs)("div",{className:"text-right shrink-0 pl-4 rule-l",style:{borderLeftColor:"var(--rule)"},children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-[0.2em]",style:{color:"var(--ink-3)"},children:"elapsed"}),(0,s.jsx)("p",{className:"font-mono tnum text-[40px] leading-none mt-2",style:{color:"var(--ink)"},children:(0,a.fmtDurDecimal)(n)}),(0,s.jsxs)("div",{className:"mt-3 flex items-center justify-end gap-1.5",children:[(0,s.jsx)(a.ConfidenceRing,{value:e.confidence,size:14}),(0,s.jsxs)("span",{className:"text-[11px] font-mono tnum",style:{color:"var(--ink-3)"},children:[Math.round(100*e.confidence),"%"]})]})]})]}),e.titles.length>0&&(0,s.jsx)("div",{className:"mt-5 flex flex-wrap gap-1.5",children:e.titles.slice(0,5).map(e=>(0,s.jsx)("span",{className:"text-[11px] font-mono px-2 py-1 rounded-md tnum",style:{background:"var(--surface-2)",color:"var(--ink-2)",border:"1px solid var(--rule)"},children:e},e))}),(0,s.jsxs)("div",{className:"mt-5 pt-4 rule-t flex items-center justify-between gap-3",style:{borderTopColor:"var(--rule)"},children:[(0,s.jsx)("p",{className:"text-[12px]",style:{color:"var(--ink-2)"},children:"Log this session to Jira when it closes?"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{className:"text-[12px] px-3 py-1.5 rounded-md",style:{color:"var(--ink-3)"},children:"Skip"}),(0,s.jsx)("button",{className:"text-[12px] px-3 py-1.5 rounded-md font-medium",style:{color:"var(--paper)",background:"var(--ink)"},children:t?`Log to ${t} →`:"Assign task →"})]})]})]})]})}function c({focus_s:e,idle_s:t,coding_s:r,session_count:n}){let l=[{k:"Focus",v:(0,a.fmtDur)(e),note:"active"},{k:"Idle",v:(0,a.fmtDur)(t),note:"away from keyboard"},{k:"Coding agent",v:(0,a.fmtDur)(r),note:"Claude Code · Codex"},{k:"Switches",v:String(Math.max(0,n-1)),note:"context switches"}];return(0,s.jsx)("div",{className:"grid grid-cols-4 rule-t rule-b",style:{borderColor:"var(--rule)"},children:l.map((e,t)=>(0,s.jsxs)("div",{className:`py-4 px-5 ${t>0?"rule-l":""}`,style:{borderColor:"var(--rule)"},children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-[0.16em] mb-2",style:{color:"var(--ink-3)"},children:e.k}),(0,s.jsx)("p",{className:"font-mono tnum text-[20px] leading-none",style:{color:"var(--ink)"},children:e.v}),(0,s.jsx)("p",{className:"text-[11px] mt-1.5",style:{color:"var(--ink-3)"},children:e.note})]},e.k))})}function o({bucket:e}){let[n,l]=(0,t.useState)(!1),i=(0,t.useMemo)(()=>{let s={};return e.sessions.forEach(e=>{s[e.cat]=(s[e.cat]??0)+e.dur}),Object.entries(s).map(([e,s])=>({cat:e,value:s}))},[e.sessions]),c=e.day_total_s>0?(e.total_s/e.day_total_s*100).toFixed(0):"0";return(0,s.jsxs)("div",{style:{background:"var(--surface)"},children:[(0,s.jsxs)("button",{onClick:()=>l(e=>!e),className:"w-full text-left grid grid-cols-[auto_1fr_200px_auto] items-center gap-5 px-5 py-4 transition-colors",style:{background:n?"var(--surface-2)":"var(--surface)"},children:[(0,s.jsx)("span",{className:"font-mono tnum text-[12px] w-[72px]",style:{color:"var(--ink-2)"},children:e.isOverhead||e.isQueue?(0,s.jsx)("span",{style:{color:"var(--ink-3)"},children:e.isOverhead?"overhead":"needs review"}):(0,s.jsx)(a.TaskKey,{keyId:e.key})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[14px] truncate",style:{color:"var(--ink)"},children:e.title}),(0,s.jsxs)("p",{className:"text-[11px] mt-1.5",style:{color:"var(--ink-3)"},children:[e.sessions.length," session",1===e.sessions.length?"":"s",i.length>0&&` \xb7 ${i.slice(0,3).map(e=>a.CATS[e.cat]?.short??e.cat).join(" + ")}`]})]}),(0,s.jsx)("div",{className:"hidden md:block",children:(0,s.jsx)(a.SegBar,{segments:i.length?i:[{value:1,color:"var(--rule-2)"}],height:3})}),(0,s.jsxs)("div",{className:"text-right",children:[(0,s.jsx)("p",{className:"font-mono tnum text-[18px] leading-none",style:{color:"var(--ink)"},children:(0,a.fmtDur)(e.total_s)}),(0,s.jsxs)("p",{className:"text-[11px] mt-1.5",style:{color:"var(--ink-3)"},children:[c,"% of day"]})]})]}),n&&(0,s.jsx)("div",{className:"px-5 pb-4 pt-1 rule-t",style:{borderTopColor:"var(--rule)"},children:(0,s.jsx)("div",{className:"grid grid-cols-1 gap-px",style:{background:"var(--rule)"},children:e.sessions.map(e=>(0,s.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto_auto] items-center gap-4 py-2.5 px-3",style:{background:"var(--surface)"},children:[(0,s.jsx)(a.AppGlyph,{app:e.app,size:20}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[13px] truncate",style:{color:"var(--ink)"},children:e.titles[0]||"—"}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,s.jsx)("span",{className:"font-mono tnum text-[11px]",style:{color:"var(--ink-3)"},children:(0,a.fmtClock)(e.started_at)}),(0,s.jsx)(a.CatDot,{cat:e.cat}),(0,s.jsx)("span",{className:"text-[11px]",style:{color:"var(--ink-3)"},children:a.CATS[e.cat]?.short??e.cat})]})]}),(0,s.jsx)(r.default,{taskKey:e.task_key,sessionType:e.session_type,routing:e.routing,confidence:e.link_confidence,method:e.link_method,size:"xs"}),(0,s.jsx)("span",{className:"font-mono tnum text-[12px]",style:{color:"var(--ink-2)"},children:(0,a.fmtDur)(e.dur)})]},e.id))})})]})}function d({session:e}){return(0,s.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto_auto] items-center gap-5 px-5 py-4 rule-t",style:{borderTopColor:"var(--rule)"},children:[(0,s.jsx)(a.AppGlyph,{app:e.app,size:24}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[13px] truncate",style:{color:"var(--ink)"},children:e.titles[0]||e.app}),(0,s.jsxs)("p",{className:"text-[11px] mt-1",style:{color:"var(--ink-3)"},children:[(0,s.jsx)("span",{className:"font-mono tnum",children:(0,a.fmtClock)(e.started_at)}),e.candidates&&e.candidates.length>0&&(0,s.jsx)("span",{className:"ml-2 text-[11px]",style:{color:"var(--accent)"},children:"· needs review"})]})]}),(0,s.jsx)("div",{className:"flex items-center gap-1.5",children:e.candidates?.map(e=>(0,s.jsx)(a.TaskKey,{keyId:e},e))}),(0,s.jsx)("span",{className:"font-mono tnum text-[12px]",style:{color:"var(--ink-2)"},children:(0,a.fmtDur)(e.dur)})]})}e.s(["default",0,function({onNavigate:e}){let r,[n,x]=(0,t.useState)(null),[u,p]=(0,t.useState)(0);if((0,t.useEffect)(()=>{fetch("/api/today").then(e=>e.json()).then(x).catch(()=>{});let e=setInterval(()=>fetch("/api/today").then(e=>e.json()).then(x).catch(()=>{}),3e4);return()=>clearInterval(e)},[]),(0,t.useEffect)(()=>{let e=()=>fetch("/api/coding-agents").then(e=>e.json()).then(e=>p(e?.total_s??0)).catch(()=>{});e();let s=setInterval(e,3e4);return()=>clearInterval(s)},[]),!n)return(0,s.jsxs)("div",{className:"space-y-12",children:[(0,s.jsx)("header",{className:"rise",children:(0,s.jsx)("h1",{className:"font-serif leading-[0.95] tracking-tight",style:{color:"var(--ink)"},children:"Today"})}),(0,s.jsx)("p",{className:"text-[13px]",style:{color:"var(--ink-3)"},children:"Loading…"})]});let m=n.focus_s,h=new Map;function f(e,s){h.has(e)||h.set(e,{key:e,title:"",sessions:[],total_s:0,cats:new Set,day_total_s:m,isOverhead:!1,isQueue:!1});let t=h.get(e);t.sessions.push(s),t.total_s+=s.dur,t.cats.add(s.cat)}n.sessions.forEach(e=>{let s={id:e.id,app:e.app,started_at:e.started_at,dur:e.dur,cat:e.cat,titles:e.titles,task_key:e.task_key,session_type:e.session_type,link_method:e.link_method,link_confidence:e.link_confidence,routing:e.routing};e.task_key?f(e.task_key,s):"queue"===e.routing?f("_queue",s):f("_overhead",s)}),n.active&&f("_active",{id:"active",app:n.active.app,started_at:n.active.started_at,dur:n.active.elapsed_s,cat:n.active.cat,titles:n.active.titles,task_key:null,session_type:null,link_method:null,link_confidence:null,routing:null});let v=Array.from(h.values()).map(e=>({...e,isOverhead:"_overhead"===e.key,isQueue:"_queue"===e.key,title:"_overhead"===e.key?"Overhead — comms, mail, planning":"_queue"===e.key?"Sessions waiting to be assigned":"_active"===e.key?"Current session":e.key,day_total_s:m})).sort((e,s)=>{let t=e=>"_queue"===e?9:"_overhead"===e?8:"_active"===e?-1:0;return t(e.key)-t(s.key)||s.total_s-e.total_s}),g=n.sessions.filter(e=>"queue"===e.routing).length,j=new Date().toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric"});return(0,s.jsxs)("div",{className:"space-y-12",children:[(0,s.jsxs)("header",{className:"rise",children:[(0,s.jsxs)("div",{className:"flex items-baseline justify-between mb-1",children:[(0,s.jsx)("p",{className:"text-[11px] uppercase tracking-[0.2em]",style:{color:"var(--ink-3)"},children:j}),n.active&&(0,s.jsxs)("p",{className:"text-[11px]",style:{color:"var(--ink-3)"},children:["Last capture ",(0,s.jsx)("span",{className:"font-mono tnum",children:(0,a.fmtClock)(n.active.started_at)})]})]}),(0,s.jsx)("h1",{className:"font-serif text-[88px] leading-[0.95] tracking-tight",style:{color:"var(--ink)"},children:"Today"})]}),(r=function(e){let{sessions:s,active:t}=e;if(0===s.length&&!t)return null;let r=new Map;s.forEach(e=>{let s=e.task_key;if(!s)return;r.has(s)||r.set(s,{dur:0,cats:[]});let t=r.get(s);t.dur+=e.dur,t.cats.includes(e.cat)||t.cats.push(e.cat)});let n=s.filter(e=>!e.task_key&&"queue"!==e.routing).reduce((e,s)=>e+s.dur,0),l=Array.from(r.entries()).sort((e,s)=>s[1].dur-e[1].dur).slice(0,3);if(0===l.length&&n<600&&!t)return null;let i=[];if(l.forEach(([e,s],t)=>{let r=(0,a.fmtDur)(s.dur);if(0===t){var n,l;let t;i.push(`${(n=s.cats,l=s.dur,"coding"===(t=n[0])?l>3600?"Deep on":"Coding on":"code_review"===t?"Reviewing":"design"===t?"Designing":"documentation"===t?"Docs for":"planning"===t?"Planning":"meeting"===t?"Meetings around":"communication"===t?"Comms on":"research"===t?"Researching":"deployment_devops"===t?"Deploying":"Working on")} ${e} for ${r}`)}else i.push(`${r} on ${e}`)}),n>900&&i.push(`${(0,a.fmtDur)(n)} of overhead`),t){let e=a.CATS[t.cat]?.label?.toLowerCase()??t.cat;i.push(l.length>0?`currently in ${e}`:`started ${e} at ${(0,a.fmtClock)(t.started_at)}`)}return i.length>0?i.join(", ")+".":null}(n))?(0,s.jsxs)("section",{className:"rise",children:[(0,s.jsx)("p",{className:"text-[11px] uppercase tracking-[0.18em] mb-3",style:{color:"var(--ink-3)"},children:"The story so far"}),(0,s.jsx)("p",{className:"font-serif text-[26px] leading-[1.2]",style:{color:"var(--ink)",textWrap:"pretty"},children:r})]}):null,n.active&&(0,s.jsx)(i,{active:n.active,taskKey:n.sessions.filter(e=>e.task_key).at(-1)?.task_key}),(0,s.jsx)(c,{focus_s:n.focus_s,idle_s:n.idle_s,coding_s:u,session_count:n.session_count}),v.length>0&&(0,s.jsxs)("section",{children:[(0,s.jsx)(a.SectionHead,{kicker:"By task",title:"Where your time went",right:(0,s.jsx)("button",{onClick:()=>e?.("tasks"),className:"text-[12px]",style:{color:"var(--ink-3)"},children:"Open Tasks →"})}),(0,s.jsx)("div",{className:"space-y-px rule rounded-xl overflow-hidden border",style:{borderColor:"var(--rule)"},children:v.map(e=>(0,s.jsx)(o,{bucket:e},e.key))})]}),(n.sessions.length>0||n.active)&&(0,s.jsxs)("section",{children:[(0,s.jsx)(a.SectionHead,{kicker:"Shape of the day",title:"Activity patterns & insights"}),(0,s.jsx)(l,{data:n})]}),g>0&&(0,s.jsxs)("section",{children:[(0,s.jsx)(a.SectionHead,{kicker:"Needs review",title:(0,s.jsxs)(s.Fragment,{children:["Unassigned sessions ",(0,s.jsx)("span",{className:"ml-2 font-mono tnum text-[15px]",style:{color:"var(--accent)"},children:g})]}),right:(0,s.jsx)("button",{onClick:()=>e?.("queue"),className:"text-[12px]",style:{color:"var(--ink-3)"},children:"Review queue →"})}),(0,s.jsx)(a.Card,{children:n.sessions.filter(e=>"queue"===e.routing).slice(0,3).map(e=>(0,s.jsx)(d,{session:{...e,candidates:e.task_key?[e.task_key]:[]}},e.id))})]}),0===n.session_count&&!n.active&&(0,s.jsxs)("div",{className:"rounded-xl border py-16 text-center",style:{borderColor:"var(--rule)",background:"var(--surface)"},children:[(0,s.jsx)("p",{className:"text-[13px]",style:{color:"var(--ink-3)"},children:"No activity captured today"}),(0,s.jsx)("p",{className:"text-[11px] mt-1",style:{color:"var(--ink-4)"},children:"Start meridian to begin tracking"})]})]})}],72868)},65906,e=>{e.n(e.i(72868))}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,17303,e=>{"use strict";var s=e.i(56916);let t=e=>{let s=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,s,t)=>t?t.toUpperCase():s.toLowerCase());return s.charAt(0).toUpperCase()+s.slice(1)},a=(...e)=>e.filter((e,s,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===s).join(" ").trim();var r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,s.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:l,className:i="",children:c,iconNode:o,...d},x)=>(0,s.createElement)("svg",{ref:x,...r,width:t,height:t,stroke:e,strokeWidth:l?24*Number(n)/Number(t):n,className:a("lucide",i),...!c&&!(e=>{for(let s in e)if(s.startsWith("aria-")||"role"===s||"title"===s)return!0})(d)&&{"aria-hidden":"true"},...d},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(c)?c:[c]]));e.s(["default",0,(e,r)=>{let l=(0,s.forwardRef)(({className:l,...i},c)=>(0,s.createElement)(n,{ref:c,iconNode:r,className:a(`lucide-${t(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=t(e),l}],17303)},99963,e=>{"use strict";var s=e.i(80663);let t=(0,e.i(17303).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);function a(){for(var e,s,t=0,a="",r=arguments.length;t<r;t++)(e=arguments[t])&&(s=function e(s){var t,a,r="";if("string"==typeof s||"number"==typeof s)r+=s;else if("object"==typeof s)if(Array.isArray(s)){var n=s.length;for(t=0;t<n;t++)s[t]&&(a=e(s[t]))&&(r&&(r+=" "),r+=a)}else for(a in s)s[a]&&(r&&(r+=" "),r+=a);return r}(e))&&(a&&(a+=" "),a+=s);return a}var r=e.i(89562);function n({taskKey:e,taskTitle:t,sessionType:r,routing:l,confidence:i,method:c}){let o=function(e){if(!e)return[];switch(e){case"prefilter_trivial":return[{label:"Hermes · pre-filter",deciding:!0}];case"llm_standalone":case"agent_tiebreak":return[{label:"Hermes · classification",deciding:!0}];default:return[{label:e,deciding:!0}]}}(c),d="number"==typeof i&&i>0?`${Math.round(100*i)}%`:null,x=e?d?`${e} \xb7 ${d}`:e:"overhead"===r?"overhead":"queue"===l?d?`queued \xb7 ${d}`:"queued":d?`no match \xb7 ${d}`:"no match";return(0,s.jsxs)("div",{className:"space-y-2 min-w-[200px]",children:[o.length>0?(0,s.jsx)("div",{className:"space-y-1",children:o.map((e,t)=>(0,s.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,s.jsx)("span",{className:a("font-mono text-[10px] uppercase tracking-widest shrink-0",e.deciding?"text-[#4B4A47]":"text-[#C8C6C1]"),children:e.label}),(0,s.jsx)("span",{className:a("text-[10px] font-mono",e.deciding?"text-[#141414] font-medium":"text-[#C8C6C1]"),children:e.deciding?x:"→ escalated"})]},t))}):(0,s.jsx)("p",{className:"text-[11px] text-[#9B9A97]",children:"no classification data"}),e&&t&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"border-t border-[#F0EFEC]"}),(0,s.jsx)("p",{className:"text-[11px] text-[#6B6A67] leading-snug max-w-[220px]",children:t})]}),l&&"auto"!==l&&(0,s.jsxs)("p",{className:"text-[10px] text-[#C8C6C1]",children:["routing: ",(0,s.jsx)("span",{className:"font-mono",children:l})]})]})}function l({children:e,...t}){return(0,s.jsxs)(r.Root,{children:[(0,s.jsx)(r.Trigger,{asChild:!0,children:e}),(0,s.jsx)(r.Portal,{children:(0,s.jsxs)(r.Content,{side:"top",align:"center",sideOffset:5,className:"z-50 rounded-lg border border-[#E8E6E1] bg-white px-3 py-2.5 shadow-md",children:[(0,s.jsx)(n,{...t}),(0,s.jsx)(r.Arrow,{className:"fill-white"})]})})]})}e.s(["default",0,function({taskKey:e,sessionType:r,routing:n,confidence:i,method:c,taskTitle:o,taskUrl:d,size:x="xs"}){if(!r)return null;let u="xs"===x?"text-[10px] px-1.5 py-0.5":"text-xs px-2 py-0.5",p={taskKey:e,taskTitle:o??null,sessionType:r,routing:n,confidence:i,method:c};if("overhead"===r)return(0,s.jsx)(l,{...p,children:(0,s.jsx)("span",{className:a("inline-flex items-center rounded-full font-medium cursor-default","bg-[#F0EFEC] text-[#9B9A97]",u),children:"overhead"})});if("task"===r&&"auto"===n&&e){let r=(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"font-mono",children:e}),d&&(0,s.jsx)(t,{className:"w-2.5 h-2.5 opacity-60"})]}),n=d?(0,s.jsx)("a",{href:d,target:"_blank",rel:"noopener noreferrer",className:a("inline-flex items-center gap-1 rounded-full font-medium hover:brightness-95 transition","bg-[#EBF0FB] text-[#3D5BB0] border border-[#D8E0F4]",u),onClick:e=>e.stopPropagation(),children:r}):(0,s.jsx)("span",{className:a("inline-flex items-center gap-1 rounded-full font-medium cursor-default","bg-[#EBF0FB] text-[#3D5BB0] border border-[#D8E0F4]",u),children:r});return(0,s.jsx)(l,{...p,children:n})}return"task"===r&&"queue"===n?(0,s.jsx)(l,{...p,children:(0,s.jsxs)("span",{className:a("inline-flex items-center gap-1 rounded-full font-medium cursor-default","bg-[#FEF9EC] text-[#92400E] border border-[#FDE68A]",u),children:[(0,s.jsx)("span",{className:"font-mono",children:e??"queued"}),(0,s.jsx)("span",{className:"opacity-60",children:"?"})]})}):"task"===r&&"skip"===n?(0,s.jsx)(l,{...p,children:(0,s.jsx)("span",{className:a("inline-flex items-center rounded-full font-medium cursor-default","bg-[#F8F7F4] text-[#C8C6C1] border border-[#F0EFEC]",u),children:(0,s.jsx)("span",{className:"font-mono",children:"∅"})})}):null}],99963)},72868,e=>{"use strict";var s=e.i(80663),t=e.i(56916),a=e.i(29987),r=e.i(99963);let n={coding:"#3B6FE0",code_review:"#7C3AED",meeting:"#D97706",communication:"#059669",design:"#DB2777",documentation:"#0891B2",planning:"#C4822A",deployment_devops:"#DC2626",research:"#4F46E5",idle_personal:"#78716C"};function l({data:e}){let r=e=>new Date(e).getHours()+new Date(e).getMinutes()/60,i=(0,t.useMemo)(()=>{let s={};e.sessions.forEach(e=>{s[e.cat]=(s[e.cat]||0)+e.dur}),e.active&&(s[e.active.cat]=(s[e.active.cat]||0)+e.active.elapsed_s);let t=Object.values(s).reduce((e,s)=>e+s,0)||1;return Object.entries(s).map(([e,s])=>({cat:e,seconds:s,percentage:s/t*100,label:a.CATS[e]?.label||e})).sort((e,s)=>s.seconds-e.seconds)},[e]),c=(0,t.useMemo)(()=>{let s=[...e.sessions.map(e=>({kind:"session",startH:r(e.started_at),dur:e.dur})),...e.active?[{kind:"session",startH:r(e.active.started_at),dur:e.active.elapsed_s}]:[],...e.gaps.map(e=>({kind:"gap",startH:r(e.started_at),dur:e.dur}))].sort((e,s)=>e.startH-s.startH),t=0,a=0;return s.forEach(e=>{"gap"===e.kind&&e.dur>300?(t=Math.max(t,a),a=0):"session"===e.kind&&(a+=e.dur)}),Math.max(t,a)},[e]),o=(0,t.useMemo)(()=>{let e=0;return i.map(s=>{let t=e,a=s.percentage/100*360,r=t+a,n=(t-90)*Math.PI/180,l=(r-90)*Math.PI/180,i=+(a>180),c=`M ${100+85*Math.cos(n)} ${100+85*Math.sin(n)} A 85 85 0 ${i} 1 ${100+85*Math.cos(l)} ${100+85*Math.sin(l)} L ${100+58*Math.cos(l)} ${100+58*Math.sin(l)} A 58 58 0 ${i} 0 ${100+58*Math.cos(n)} ${100+58*Math.sin(n)} Z`;return e=r,{...s,path:c}})},[i]),[d,x]=(0,t.useState)(null);return(0,s.jsx)(a.Card,{className:"p-6",children:(0,s.jsxs)("div",{className:"flex items-center gap-8",children:[(0,s.jsx)("div",{className:"flex-1 flex justify-center",children:(0,s.jsxs)("div",{className:"relative",style:{width:200,height:200},children:[(0,s.jsx)("svg",{width:"200",height:"200",viewBox:"0 0 200 200",children:o.map(e=>(0,s.jsx)("path",{d:e.path,className:`cat-${e.cat}`,opacity:d===e.cat?1:null===d?.95:.35,style:{cursor:"pointer",transition:"opacity 0.2s ease, transform 0.15s ease",transformOrigin:"100px 100px",transform:d===e.cat?"scale(1.05)":"scale(1)"},onMouseEnter:()=>x(e.cat),onMouseLeave:()=>x(null)},e.cat))}),(0,s.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center pointer-events-none",children:[(0,s.jsx)("p",{className:"font-mono tnum text-[28px] leading-none",style:{color:"var(--ink)"},children:(0,a.fmtDur)(e.focus_s)}),(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-wide mt-1",style:{color:"var(--ink-3)"},children:"active"})]})]})}),(0,s.jsxs)("div",{className:"flex-1 space-y-4",children:[(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-3 pb-4 rule-b",style:{borderBottomColor:"var(--rule)"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-wide mb-1",style:{color:"var(--ink-3)"},children:"Longest block"}),(0,s.jsx)("p",{className:"font-mono tnum text-[20px] leading-none",style:{color:"var(--success)"},children:(0,a.fmtDur)(c)})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-wide mb-1",style:{color:"var(--ink-3)"},children:"Idle time"}),(0,s.jsx)("p",{className:"font-mono tnum text-[20px] leading-none",style:{color:"var(--ink-3)"},children:(0,a.fmtDur)(e.idle_s)})]})]}),(0,s.jsx)("div",{className:"space-y-0.5",children:i.map(e=>{let t=d===e.cat;return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3 py-1.5 px-2 rounded-md transition-all cursor-pointer",style:{background:t?"var(--tint)":"transparent",borderLeft:`3px solid ${t?n[e.cat]??"var(--accent)":"transparent"}`,opacity:t||null===d?1:.45,paddingLeft:t?"6px":"8px"},onMouseEnter:()=>x(e.cat),onMouseLeave:()=>x(null),children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,s.jsx)(a.CatDot,{cat:e.cat,size:9}),(0,s.jsx)("span",{className:"text-[12px] truncate font-medium",style:{color:t?"var(--ink)":"var(--ink-2)"},children:e.label})]}),(0,s.jsxs)("span",{className:"text-[12px] font-mono tnum font-semibold",style:{color:t?"var(--ink)":"var(--ink-3)"},children:[e.percentage.toFixed(0),"%"]})]},e.cat)})})]})]})})}function i({active:e,taskKey:t}){let r=(0,a.useTick)(1),n=e.elapsed_s+r,l=Math.max(1,Math.floor(n/30));return(0,s.jsxs)(a.Card,{className:"overflow-hidden rise",style:{borderColor:"var(--rule-2)"},children:[(0,s.jsx)("div",{className:"h-[3px] w-full",style:{background:"var(--rule)"},children:(0,s.jsx)("div",{className:"h-full blink",style:{width:"32%",background:"var(--live)"}})}),(0,s.jsxs)("div",{className:"p-5",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,s.jsx)(a.LiveDot,{size:8}),(0,s.jsxs)("span",{className:"text-[10px] uppercase tracking-[0.2em]",style:{color:"var(--ink-3)"},children:["Live · captured ",l," frame",1===l?"":"s"," ago"]}),(0,s.jsxs)("span",{className:"ml-auto text-[11px]",style:{color:"var(--ink-3)"},children:[(0,s.jsx)("span",{className:"font-mono tnum",children:(0,a.fmtClock)(e.started_at)})," → now"]})]}),(0,s.jsxs)("div",{className:"flex items-start gap-5",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-baseline gap-3 flex-wrap",children:[(0,s.jsx)("p",{className:"font-serif text-[28px] leading-none italic",style:{color:"var(--ink)"},children:"You're on"}),t&&(0,s.jsx)(a.TaskKey,{keyId:t,big:!0}),(0,s.jsx)("span",{className:"font-serif text-[28px] leading-none italic truncate",style:{color:"var(--ink)"},children:"idle_personal"!==e.cat?a.CATS[e.cat]?.label?.toLowerCase()??e.cat:"an uncategorized session"})]}),(0,s.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-x-5 gap-y-2 text-[13px]",style:{color:"var(--ink-2)"},children:[(0,s.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,s.jsx)(a.AppGlyph,{app:e.app,size:20}),(0,s.jsx)("span",{style:{color:"var(--ink)"},children:e.app})]}),(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,s.jsx)(a.CatDot,{cat:e.cat}),(0,s.jsx)("span",{children:a.CATS[e.cat]?.label??e.cat})]})]}),e.explain&&(0,s.jsxs)("p",{className:"mt-4 text-[12px] leading-relaxed",style:{color:"var(--ink-3)"},children:[(0,s.jsx)("span",{style:{color:"var(--ink-2)"},children:"Why this task"}),(0,s.jsx)("span",{className:"mx-2",style:{color:"var(--ink-4)"},children:"·"}),e.explain]})]}),(0,s.jsxs)("div",{className:"text-right shrink-0 pl-4 rule-l",style:{borderLeftColor:"var(--rule)"},children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-[0.2em]",style:{color:"var(--ink-3)"},children:"elapsed"}),(0,s.jsx)("p",{className:"font-mono tnum text-[40px] leading-none mt-2",style:{color:"var(--ink)"},children:(0,a.fmtDurDecimal)(n)}),(0,s.jsxs)("div",{className:"mt-3 flex items-center justify-end gap-1.5",children:[(0,s.jsx)(a.ConfidenceRing,{value:e.confidence,size:14}),(0,s.jsxs)("span",{className:"text-[11px] font-mono tnum",style:{color:"var(--ink-3)"},children:[Math.round(100*e.confidence),"%"]})]})]})]}),e.titles.length>0&&(0,s.jsx)("div",{className:"mt-5 flex flex-wrap gap-1.5",children:e.titles.slice(0,5).map(e=>(0,s.jsx)("span",{className:"text-[11px] font-mono px-2 py-1 rounded-md tnum",style:{background:"var(--surface-2)",color:"var(--ink-2)",border:"1px solid var(--rule)"},children:e},e))}),(0,s.jsxs)("div",{className:"mt-5 pt-4 rule-t flex items-center justify-between gap-3",style:{borderTopColor:"var(--rule)"},children:[(0,s.jsx)("p",{className:"text-[12px]",style:{color:"var(--ink-2)"},children:"Log this session to Jira when it closes?"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{className:"text-[12px] px-3 py-1.5 rounded-md",style:{color:"var(--ink-3)"},children:"Skip"}),(0,s.jsx)("button",{className:"text-[12px] px-3 py-1.5 rounded-md font-medium",style:{color:"var(--paper)",background:"var(--ink)"},children:t?`Log to ${t} →`:"Assign task →"})]})]})]})]})}function c({focus_s:e,idle_s:t,coding_s:r,switch_count:n}){let l=e>0?Math.round(r/e*100):0,i=[{k:"Focus",v:(0,a.fmtDur)(e),note:"active"},{k:"Idle",v:(0,a.fmtDur)(t),note:"away from keyboard"},{k:"Coding agent",v:(0,a.fmtDur)(r),note:`${l}% of focus \xb7 AI-assisted`},{k:"Switches",v:String(n),note:"context switches"}];return(0,s.jsx)("div",{className:"grid grid-cols-4 rule-t rule-b",style:{borderColor:"var(--rule)"},children:i.map((e,t)=>(0,s.jsxs)("div",{className:`py-4 px-5 ${t>0?"rule-l":""}`,style:{borderColor:"var(--rule)"},children:[(0,s.jsx)("p",{className:"text-[10px] uppercase tracking-[0.16em] mb-2",style:{color:"var(--ink-3)"},children:e.k}),(0,s.jsx)("p",{className:"font-mono tnum text-[20px] leading-none",style:{color:"var(--ink)"},children:e.v}),(0,s.jsx)("p",{className:"text-[11px] mt-1.5",style:{color:"var(--ink-3)"},children:e.note})]},e.k))})}function o({bucket:e}){let[n,l]=(0,t.useState)(!1),i=(0,t.useMemo)(()=>{let s={};return e.sessions.forEach(e=>{s[e.cat]=(s[e.cat]??0)+e.dur}),Object.entries(s).map(([e,s])=>({cat:e,value:s}))},[e.sessions]),c=e.day_total_s>0?(e.total_s/e.day_total_s*100).toFixed(0):"0";return(0,s.jsxs)("div",{style:{background:"var(--surface)"},children:[(0,s.jsxs)("button",{onClick:()=>l(e=>!e),className:"w-full text-left grid grid-cols-[auto_1fr_200px_auto] items-center gap-5 px-5 py-4 transition-colors",style:{background:n?"var(--surface-2)":"var(--surface)"},children:[(0,s.jsx)("span",{className:"font-mono tnum text-[12px] w-[72px]",style:{color:"var(--ink-2)"},children:e.isOverhead||e.isQueue?(0,s.jsx)("span",{style:{color:"var(--ink-3)"},children:e.isOverhead?"overhead":"needs review"}):(0,s.jsx)(a.TaskKey,{keyId:e.key})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[14px] truncate",style:{color:"var(--ink)"},children:e.title}),(0,s.jsxs)("p",{className:"text-[11px] mt-1.5",style:{color:"var(--ink-3)"},children:[e.sessions.length," session",1===e.sessions.length?"":"s",i.length>0&&` \xb7 ${i.slice(0,3).map(e=>a.CATS[e.cat]?.short??e.cat).join(" + ")}`]})]}),(0,s.jsx)("div",{className:"hidden md:block",children:(0,s.jsx)(a.SegBar,{segments:i.length?i:[{value:1,color:"var(--rule-2)"}],height:3})}),(0,s.jsxs)("div",{className:"text-right",children:[(0,s.jsx)("p",{className:"font-mono tnum text-[18px] leading-none",style:{color:"var(--ink)"},children:(0,a.fmtDur)(e.total_s)}),(0,s.jsxs)("p",{className:"text-[11px] mt-1.5",style:{color:"var(--ink-3)"},children:[c,"% of day"]})]})]}),n&&(0,s.jsx)("div",{className:"px-5 pb-4 pt-1 rule-t",style:{borderTopColor:"var(--rule)"},children:(0,s.jsx)("div",{className:"grid grid-cols-1 gap-px",style:{background:"var(--rule)"},children:e.sessions.map(e=>(0,s.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto_auto] items-center gap-4 py-2.5 px-3",style:{background:"var(--surface)"},children:[(0,s.jsx)(a.AppGlyph,{app:e.app,size:20}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[13px] truncate",style:{color:"var(--ink)"},children:e.titles[0]||"—"}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,s.jsx)("span",{className:"font-mono tnum text-[11px]",style:{color:"var(--ink-3)"},children:(0,a.fmtClock)(e.started_at)}),(0,s.jsx)(a.CatDot,{cat:e.cat}),(0,s.jsx)("span",{className:"text-[11px]",style:{color:"var(--ink-3)"},children:a.CATS[e.cat]?.short??e.cat})]})]}),(0,s.jsx)(r.default,{taskKey:e.task_key,sessionType:e.session_type,routing:e.routing,confidence:e.link_confidence,method:e.link_method,size:"xs"}),(0,s.jsx)("span",{className:"font-mono tnum text-[12px]",style:{color:"var(--ink-2)"},children:(0,a.fmtDur)(e.dur)})]},e.id))})})]})}function d({session:e}){return(0,s.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto_auto] items-center gap-5 px-5 py-4 rule-t",style:{borderTopColor:"var(--rule)"},children:[(0,s.jsx)(a.AppGlyph,{app:e.app,size:24}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[13px] truncate",style:{color:"var(--ink)"},children:e.titles[0]||e.app}),(0,s.jsxs)("p",{className:"text-[11px] mt-1",style:{color:"var(--ink-3)"},children:[(0,s.jsx)("span",{className:"font-mono tnum",children:(0,a.fmtClock)(e.started_at)}),e.candidates&&e.candidates.length>0&&(0,s.jsx)("span",{className:"ml-2 text-[11px]",style:{color:"var(--accent)"},children:"· needs review"})]})]}),(0,s.jsx)("div",{className:"flex items-center gap-1.5",children:e.candidates?.map(e=>(0,s.jsx)(a.TaskKey,{keyId:e},e))}),(0,s.jsx)("span",{className:"font-mono tnum text-[12px]",style:{color:"var(--ink-2)"},children:(0,a.fmtDur)(e.dur)})]})}e.s(["default",0,function({onNavigate:e}){let r,[n,x]=(0,t.useState)(null);if((0,t.useEffect)(()=>{fetch("/api/today").then(e=>e.json()).then(x).catch(()=>{});let e=setInterval(()=>fetch("/api/today").then(e=>e.json()).then(x).catch(()=>{}),3e4);return()=>clearInterval(e)},[]),!n)return(0,s.jsxs)("div",{className:"space-y-12",children:[(0,s.jsx)("header",{className:"rise",children:(0,s.jsx)("h1",{className:"font-serif leading-[0.95] tracking-tight",style:{color:"var(--ink)"},children:"Today"})}),(0,s.jsx)("p",{className:"text-[13px]",style:{color:"var(--ink-3)"},children:"Loading…"})]});let u=n.focus_s,p=new Map;function m(e,s){p.has(e)||p.set(e,{key:e,title:"",sessions:[],total_s:0,cats:new Set,day_total_s:u,isOverhead:!1,isQueue:!1});let t=p.get(e);t.sessions.push(s),t.total_s+=s.dur,t.cats.add(s.cat)}n.sessions.forEach(e=>{let s={id:e.id,app:e.app,started_at:e.started_at,dur:e.dur,cat:e.cat,titles:e.titles,task_key:e.task_key,session_type:e.session_type,link_method:e.link_method,link_confidence:e.link_confidence,routing:e.routing};e.task_key?m(e.task_key,s):"queue"===e.routing?m("_queue",s):m("_overhead",s)}),n.active&&m("_active",{id:"active",app:n.active.app,started_at:n.active.started_at,dur:n.active.elapsed_s,cat:n.active.cat,titles:n.active.titles,task_key:null,session_type:null,link_method:null,link_confidence:null,routing:null});let h=Array.from(p.values()).map(e=>({...e,isOverhead:"_overhead"===e.key,isQueue:"_queue"===e.key,title:"_overhead"===e.key?"Overhead — comms, mail, planning":"_queue"===e.key?"Sessions waiting to be assigned":"_active"===e.key?"Current session":e.key,day_total_s:u})).sort((e,s)=>{let t=e=>"_queue"===e?9:"_overhead"===e?8:"_active"===e?-1:0;return t(e.key)-t(s.key)||s.total_s-e.total_s}),f=n.sessions.filter(e=>"queue"===e.routing).length,v=new Date().toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric"});return(0,s.jsxs)("div",{className:"space-y-12",children:[(0,s.jsxs)("header",{className:"rise",children:[(0,s.jsxs)("div",{className:"flex items-baseline justify-between mb-1",children:[(0,s.jsx)("p",{className:"text-[11px] uppercase tracking-[0.2em]",style:{color:"var(--ink-3)"},children:v}),n.active&&(0,s.jsxs)("p",{className:"text-[11px]",style:{color:"var(--ink-3)"},children:["Last capture ",(0,s.jsx)("span",{className:"font-mono tnum",children:(0,a.fmtClock)(n.active.started_at)})]})]}),(0,s.jsx)("h1",{className:"font-serif text-[88px] leading-[0.95] tracking-tight",style:{color:"var(--ink)"},children:"Today"})]}),(r=function(e){let{sessions:s,active:t}=e;if(0===s.length&&!t)return null;let r=new Map;s.forEach(e=>{let s=e.task_key;if(!s)return;r.has(s)||r.set(s,{dur:0,cats:[]});let t=r.get(s);t.dur+=e.dur,t.cats.includes(e.cat)||t.cats.push(e.cat)});let n=s.filter(e=>!e.task_key&&"queue"!==e.routing).reduce((e,s)=>e+s.dur,0),l=Array.from(r.entries()).sort((e,s)=>s[1].dur-e[1].dur).slice(0,3);if(0===l.length&&n<600&&!t)return null;let i=[];if(l.forEach(([e,s],t)=>{let r=(0,a.fmtDur)(s.dur);if(0===t){var n,l;let t;i.push(`${(n=s.cats,l=s.dur,"coding"===(t=n[0])?l>3600?"Deep on":"Coding on":"code_review"===t?"Reviewing":"design"===t?"Designing":"documentation"===t?"Docs for":"planning"===t?"Planning":"meeting"===t?"Meetings around":"communication"===t?"Comms on":"research"===t?"Researching":"deployment_devops"===t?"Deploying":"Working on")} ${e} for ${r}`)}else i.push(`${r} on ${e}`)}),n>900&&i.push(`${(0,a.fmtDur)(n)} of overhead`),t){let e=a.CATS[t.cat]?.label?.toLowerCase()??t.cat;i.push(l.length>0?`currently in ${e}`:`started ${e} at ${(0,a.fmtClock)(t.started_at)}`)}return i.length>0?i.join(", ")+".":null}(n))?(0,s.jsxs)("section",{className:"rise",children:[(0,s.jsx)("p",{className:"text-[11px] uppercase tracking-[0.18em] mb-3",style:{color:"var(--ink-3)"},children:"The story so far"}),(0,s.jsx)("p",{className:"font-serif text-[26px] leading-[1.2]",style:{color:"var(--ink)",textWrap:"pretty"},children:r})]}):null,n.active&&(0,s.jsx)(i,{active:n.active,taskKey:n.sessions.filter(e=>e.task_key).at(-1)?.task_key}),(0,s.jsx)(c,{focus_s:n.focus_s,idle_s:n.idle_s,coding_s:n.coding_s,switch_count:n.switch_count}),h.length>0&&(0,s.jsxs)("section",{children:[(0,s.jsx)(a.SectionHead,{kicker:"By task",title:"Where your time went",right:(0,s.jsx)("button",{onClick:()=>e?.("tasks"),className:"text-[12px]",style:{color:"var(--ink-3)"},children:"Open Tasks →"})}),(0,s.jsx)("div",{className:"space-y-px rule rounded-xl overflow-hidden border",style:{borderColor:"var(--rule)"},children:h.map(e=>(0,s.jsx)(o,{bucket:e},e.key))})]}),(n.sessions.length>0||n.active)&&(0,s.jsxs)("section",{children:[(0,s.jsx)(a.SectionHead,{kicker:"Shape of the day",title:"Activity patterns & insights"}),(0,s.jsx)(l,{data:n})]}),f>0&&(0,s.jsxs)("section",{children:[(0,s.jsx)(a.SectionHead,{kicker:"Needs review",title:(0,s.jsxs)(s.Fragment,{children:["Unassigned sessions ",(0,s.jsx)("span",{className:"ml-2 font-mono tnum text-[15px]",style:{color:"var(--accent)"},children:f})]}),right:(0,s.jsx)("button",{onClick:()=>e?.("queue"),className:"text-[12px]",style:{color:"var(--ink-3)"},children:"Review queue →"})}),(0,s.jsx)(a.Card,{children:n.sessions.filter(e=>"queue"===e.routing).slice(0,3).map(e=>(0,s.jsx)(d,{session:{...e,candidates:e.task_key?[e.task_key]:[]}},e.id))})]}),0===n.session_count&&!n.active&&(0,s.jsxs)("div",{className:"rounded-xl border py-16 text-center",style:{borderColor:"var(--rule)",background:"var(--surface)"},children:[(0,s.jsx)("p",{className:"text-[13px]",style:{color:"var(--ink-3)"},children:"No activity captured today"}),(0,s.jsx)("p",{className:"text-[11px] mt-1",style:{color:"var(--ink-4)"},children:"Start meridian to begin tracking"})]})]})}],72868)},65906,e=>{e.n(e.i(72868))}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,29987,e=>{"use strict";var t=e.i(80663),n=e.i(56916);let s={Antigravity:{mono:"Aᴳ",color:"#7C3AED"},"Google Chrome":{mono:"Ch",color:"#3B82F6"},Terminal:{mono:">_",color:"#111827"},DBeaver:{mono:"DB",color:"#1D4ED8"},Claude:{mono:"Cl",color:"#D97757"},Slack:{mono:"Sl",color:"#E01E5A"},Zoom:{mono:"Zm",color:"#2D8CFF"},Linear:{mono:"Li",color:"#5E6AD2"},Figma:{mono:"Fg",color:"#A259FF"},Notion:{mono:"No",color:"#111111"},Spotify:{mono:"Sp",color:"#1DB954"},Mail:{mono:"Ma",color:"#0EA5E9"},Safari:{mono:"Sf",color:"#006FE5"},Xcode:{mono:"Xc",color:"#1171A3"},iTerm2:{mono:">_",color:"#2A2A2A"}},r={todo:{label:"Todo",dot:"var(--ink-4)"},in_progress:{label:"In progress",dot:"var(--accent)"},in_review:{label:"In review",dot:"#8B5CF6"},done:{label:"Done",dot:"var(--success)"}};e.s(["AppGlyph",0,function({app:e,size:n=24,withName:r=!1}){let a=function(e){if(!e)return{mono:"??",color:"#6B6A67"};if(s[e])return s[e];let t=e.trim().replace(/[^A-Za-z0-9]/g,"").slice(0,2).toUpperCase()||"??",n=0;for(let t=0;t<e.length;t++)n=31*n+e.charCodeAt(t)&65535;let r=n%360;return{mono:t,color:`hsl(${r}, 55%, 42%)`}}(e);return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{className:"inline-flex items-center justify-center rounded-md font-mono shrink-0",style:{width:n,height:n,background:a.color+"1A",color:a.color,fontSize:Math.max(9,.42*n),fontWeight:600,letterSpacing:"-0.02em"},"aria-label":e??void 0,children:a.mono}),r&&(0,t.jsx)("span",{className:"text-sm",style:{color:"var(--ink)"},children:e})]})},"CATS",0,{coding:{label:"Coding",short:"Code"},code_review:{label:"Code review",short:"Review"},meeting:{label:"Meeting",short:"Meet"},communication:{label:"Comms",short:"Comms"},design:{label:"Design",short:"Design"},documentation:{label:"Docs",short:"Docs"},planning:{label:"Planning",short:"Plan"},deployment_devops:{label:"DevOps",short:"DevOps"},research:{label:"Research",short:"Res"},idle_personal:{label:"Idle",short:"Idle"}},"Card",0,function({children:e,className:n="",as:s="div",style:r,...a}){return(0,t.jsx)(s,{...a,className:`rounded-xl border ${n}`,style:{background:"var(--surface)",borderColor:"var(--rule)",...r},children:e})},"CatDot",0,function({cat:e,size:n=6}){return(0,t.jsx)("span",{className:`inline-block rounded-full cat-${e} shrink-0`,style:{width:n,height:n},"aria-hidden":!0})},"ConfidenceRing",0,function({value:e,size:n=14}){let s=n/2-1.5,r=2*Math.PI*s,a=r*Math.max(0,Math.min(1,e));return(0,t.jsxs)("svg",{width:n,height:n,viewBox:`0 0 ${n} ${n}`,"aria-label":`${Math.round(100*e)}% confidence`,children:[(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:s,fill:"none",stroke:"var(--rule-2)",strokeWidth:"1.5"}),(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:s,fill:"none",stroke:e>.8?"var(--success)":e>.5?"var(--accent)":"var(--warn)",strokeWidth:"1.5",strokeLinecap:"round",strokeDasharray:`${a} ${r}`,transform:`rotate(-90 ${n/2} ${n/2})`})]})},"LiveDot",0,function({size:e=8}){return(0,t.jsxs)("span",{className:"inline-flex items-center justify-center relative",style:{width:e,height:e},children:[(0,t.jsx)("span",{className:"absolute inline-block rounded-full live-dot",style:{width:e,height:e,background:"var(--live)"}}),(0,t.jsx)("span",{className:"inline-block rounded-full",style:{width:Math.max(3,e-4),height:Math.max(3,e-4),background:"var(--live)"}})]})},"SectionHead",0,function({kicker:e,title:n,right:s}){return(0,t.jsxs)("div",{className:"flex items-end justify-between mb-3",children:[(0,t.jsxs)("div",{children:[e&&(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-[0.16em] mb-1.5",style:{color:"var(--ink-3)"},children:e}),(0,t.jsx)("h2",{className:"text-[15px] font-medium",style:{color:"var(--ink)"},children:n})]}),s]})},"SegBar",0,function({segments:e,height:n=4}){let s=e.reduce((e,t)=>e+t.value,0)||1;return(0,t.jsx)("span",{className:"inline-flex w-full overflow-hidden rounded-full",style:{height:n,background:"var(--rule)"},children:e.map((e,n)=>(0,t.jsx)("span",{className:e.cat?`cat-${e.cat}`:"",style:{width:`${e.value/s*100}%`,background:e.color??void 0}},n))})},"StatusPill",0,function({status:e}){let n=r[e]??r.todo;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[11px]",style:{color:"var(--ink-2)"},children:[(0,t.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:n.dot}}),n.label]})},"TaskKey",0,function({keyId:e,big:n=!1}){return e?(0,t.jsx)("span",{className:`font-mono tracking-tight ${n?"text-[12px]":"text-[11px]"} px-1.5 py-px rounded-[4px] tnum`,style:{color:"var(--ink)",background:"var(--tint)",borderBottom:"1px solid var(--rule-2)"},children:e}):null},"fmtClock",0,function(e){if("number"==typeof e){let t=Math.floor(e),n=Math.round((e-t)*60);return`${(t+11)%12+1}:${String(n).padStart(2,"0")} ${t>=12?"PM":"AM"}`}let t=new Date(e),n=t.getHours(),s=t.getMinutes();return`${(n+11)%12+1}:${String(s).padStart(2,"0")} ${n>=12?"PM":"AM"}`},"fmtDur",0,function(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60),s=t%60;return s>0?`${n}h ${s}m`:`${n}h`},"fmtDurDecimal",0,function(e){if(e<60)return"0:"+String(e).padStart(2,"0");let t=Math.floor(e/60);if(t<60)return"0:"+String(t).padStart(2,"0");let n=Math.floor(t/60);return`${n}:${String(t%60).padStart(2,"0")}`},"useTick",0,function(e=1){let[t,s]=(0,n.useState)(0);return(0,n.useEffect)(()=>{let t=setInterval(()=>s(e=>e+1),1e3*e);return()=>clearInterval(t)},[e]),t}])},953,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return r}});let s=e.r(45158);function r({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new s.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},79372,(e,t,n)=>{"use strict";function s(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return s}})},70492,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return i}});let s=e.r(80663),r=e.r(44939),a=e.r(32316),l=e.r(79372),o=e.r(54389);function i({moduleIds:e}){if("u">typeof window)return null;let t=a.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let s=t.reactLoadableManifest;for(let t of e){if(!s[t])continue;let e=s[t].files;n.push(...e)}}if(0===n.length)return null;let c=(0,o.getAssetTokenQuery)();return(0,s.jsx)(s.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${c}`;return e.endsWith(".css")?(0,s.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,r.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},7395,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return c}});let s=e.r(80663),r=e.r(56916),a=e.r(953),l=e.r(70492);function o(e){return{default:e&&"default"in e?e.default:e}}let i={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},c=function(e){let t={...i,...e},n=(0,r.lazy)(()=>t.loader().then(o)),c=t.loading;function d(e){let o=c?(0,s.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,i=!t.ssr||!!t.loading,d=i?r.Suspense:r.Fragment,u=t.ssr?(0,s.jsxs)(s.Fragment,{children:["u"<typeof window?(0,s.jsx)(l.PreloadChunks,{moduleIds:t.modules}):null,(0,s.jsx)(n,{...e})]}):(0,s.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,s.jsx)(n,{...e})});return(0,s.jsx)(d,{...i?{fallback:o}:{},children:u})}return d.displayName="LoadableComponent",d}},2831,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let s=e.r(46921)._(e.r(7395));function r(e,t){let n={};"function"==typeof e&&(n.loader=e);let r={...n,...t};return(0,s.default)({...r,modules:r.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},82010,e=>{"use strict";var t=e.i(80663),n=e.i(56916),s=e.i(2831),r=e.i(29987);function a({info:e,onClick:n}){let s=(0,r.useTick)(1),l=e.elapsed_s+s;return(0,t.jsxs)("button",{onClick:n,className:"m-3 p-3 rounded-lg text-left transition-colors",style:{background:"var(--surface)",border:"1px solid var(--rule)"},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(r.LiveDot,{size:8}),(0,t.jsx)("span",{className:"text-[10px] uppercase tracking-[0.16em]",style:{color:"var(--ink-3)"},children:"Now"}),(0,t.jsx)("span",{className:"ml-auto font-mono tnum text-[11px]",style:{color:"var(--ink-2)"},children:(0,r.fmtDurDecimal)(l)})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[(0,t.jsx)(r.AppGlyph,{app:e.app_name,size:18}),(0,t.jsx)("span",{className:"text-[12px] truncate",style:{color:"var(--ink)"},children:e.app_name})]})]})}function l({view:e,onNavigate:s,onOpenCmd:r,queueCount:o}){let[i,c]=(0,n.useState)(null);return(0,n.useEffect)(()=>{function e(){fetch("/api/active").then(e=>e.json()).then(e=>c(e)).catch(()=>{})}e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]),(0,t.jsxs)("aside",{className:"w-[240px] shrink-0 sticky top-0 self-start h-screen flex flex-col rule-r",style:{borderRightColor:"var(--rule)",background:"var(--paper)"},children:[(0,t.jsxs)("div",{className:"px-6 py-7",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"inline-block w-2.5 h-2.5 rounded-full live-dot",style:{background:"var(--accent)"}}),(0,t.jsx)("span",{className:"font-serif italic text-[22px] leading-none tracking-tight",style:{color:"var(--ink)"},children:"meridian"})]}),(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-[0.2em] mt-2",style:{color:"var(--ink-3)"},children:"local · v0.3"})]}),(0,t.jsxs)("nav",{className:"flex-1 px-3",children:[[{id:"today",label:"Today",kbd:"1"},{id:"tasks",label:"Tasks",kbd:"2"},{id:"queue",label:"Queue",kbd:"3",badge:o||void 0},{id:"sessions",label:"Sessions",kbd:"4"},{id:"week",label:"Week",kbd:"5"}].map(n=>{let r=e===n.id;return(0,t.jsxs)("button",{onClick:()=>s(n.id),className:"w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors mb-px",style:{background:r?"var(--surface-2)":"transparent",color:r?"var(--ink)":"var(--ink-2)"},children:[(0,t.jsx)("span",{className:"text-[13px] flex-1",children:n.label}),null!=n.badge&&(0,t.jsx)("span",{className:"text-[10px] font-mono tnum px-1.5 py-0.5 rounded",style:{background:"var(--accent)",color:"var(--paper)"},children:n.badge}),(0,t.jsx)("span",{className:"kbd",children:n.kbd})]},n.id)}),(0,t.jsxs)("button",{onClick:r,className:"w-full flex items-center gap-3 px-3 py-2 rounded-md text-left mt-4",style:{color:"var(--ink-3)"},children:[(0,t.jsx)("span",{className:"text-[13px] flex-1",children:"Quick switch"}),(0,t.jsx)("span",{className:"kbd",children:"⌘"}),(0,t.jsx)("span",{className:"kbd",children:"K"})]})]}),(0,t.jsx)("div",{className:"px-3 pb-4",children:(0,t.jsxs)("button",{onClick:()=>s("settings"),className:"w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors",style:{background:"settings"===e?"var(--surface-2)":"transparent",color:"settings"===e?"var(--ink)":"var(--ink-3)"},children:[(0,t.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"2.5"}),(0,t.jsx)("path",{d:"M8 1v1.5M8 13.5V15M1 8h1.5M13.5 8H15M3.05 3.05l1.06 1.06M11.89 11.89l1.06 1.06M3.05 12.95l1.06-1.06M11.89 4.11l1.06-1.06"})]}),(0,t.jsx)("span",{className:"text-[13px]",children:"Settings"}),(0,t.jsx)("span",{className:"kbd ml-auto",children:"6"})]})}),i&&(0,t.jsx)(a,{info:i,onClick:()=>s("today")})]})}function o({onClose:e,onNavigate:s}){let[a,l]=(0,n.useState)(""),i=(0,n.useRef)(null);(0,n.useEffect)(()=>{i.current?.focus()},[]);let c=[{kind:"view",label:"Go to Today",v:"today"},{kind:"view",label:"Go to Tasks",v:"tasks"},{kind:"view",label:"Go to Review queue",v:"queue"},{kind:"view",label:"Go to Sessions",v:"sessions"},{kind:"view",label:"Go to Week",v:"week"}].filter(e=>!a||e.label.toLowerCase().includes(a.toLowerCase())).slice(0,8);return(0,t.jsx)("div",{onClick:e,className:"fixed inset-0 z-50 flex items-start justify-center pt-[18vh]",style:{background:"rgba(15,15,15,0.45)",backdropFilter:"blur(4px)"},children:(0,t.jsxs)("div",{onClick:e=>e.stopPropagation(),className:"w-[560px] max-w-[92vw] rounded-xl overflow-hidden rise",style:{background:"var(--surface)",border:"1px solid var(--rule-2)",boxShadow:"0 24px 80px rgba(0,0,0,0.18)"},children:[(0,t.jsx)("input",{ref:i,value:a,onChange:e=>l(e.target.value),onKeyDown:t=>{"Escape"===t.key&&e(),"Enter"===t.key&&c[0]&&s(c[0].v,c[0].key)},placeholder:"Jump to view or task…",className:"w-full px-5 py-4 text-[14px] font-sans",style:{background:"transparent",color:"var(--ink)",border:"none",outline:"none",borderBottom:"1px solid var(--rule)"}}),(0,t.jsxs)("div",{className:"max-h-[40vh] overflow-y-auto nice-scroll",children:[0===c.length&&(0,t.jsx)("p",{className:"p-6 text-center text-[12px]",style:{color:"var(--ink-3)"},children:"No matches."}),c.map((e,n)=>(0,t.jsxs)("button",{onClick:()=>s(e.v,e.key),className:"w-full text-left px-5 py-2.5 flex items-center gap-3 transition-colors hover:opacity-80",style:{background:0===n?"var(--surface-2)":"transparent"},children:["task"===e.kind&&(0,t.jsx)(r.TaskKey,{keyId:e.key}),(0,t.jsx)("span",{className:"text-[13px]",style:{color:"var(--ink)"},children:e.label}),"task"===e.kind&&e.status&&(0,t.jsx)("span",{className:"ml-auto",children:(0,t.jsx)(r.StatusPill,{status:e.status})})]},n))]}),(0,t.jsxs)("div",{className:"px-5 py-2.5 rule-t flex items-center justify-between text-[10px]",style:{borderTopColor:"var(--rule)",color:"var(--ink-4)"},children:[(0,t.jsx)("span",{children:"Local search · no network"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("span",{className:"kbd",children:"↵"})," open · ",(0,t.jsx)("span",{className:"kbd",children:"esc"})," close"]})]})]})})}var i=e.i(38297);function c(){let{dark:e,setDark:s,accent:r,setAccent:a,density:l,setDensity:o,tone:c,setTone:d}=(0,i.useTheme)(),[u,x]=(0,n.useState)(!1),p=(0,n.useRef)(null),m=(0,n.useRef)({x:16,y:16});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>x(e=>!e),className:"fixed right-4 bottom-4 z-40 w-9 h-9 rounded-full flex items-center justify-center text-[13px]",style:{background:"var(--surface)",border:"1px solid var(--rule-2)",color:"var(--ink-3)",boxShadow:"0 2px 8px rgba(0,0,0,0.1)"},"aria-label":"Open theme settings",children:"◐"}),u&&(0,t.jsxs)("div",{ref:p,className:"fixed z-50 w-[280px] rounded-[14px] overflow-hidden flex flex-col",style:{right:m.current.x,bottom:m.current.y,background:e?"rgba(20,20,19,0.92)":"rgba(250,249,247,0.92)",border:`.5px solid ${e?"rgba(255,255,255,0.08)":"rgba(255,255,255,0.6)"}`,backdropFilter:"blur(24px) saturate(160%)",boxShadow:"0 12px 40px rgba(0,0,0,0.18)",color:e?"#F4F1EB":"#29261b"},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 cursor-move select-none",onMouseDown:function(e){let t=p.current;if(!t)return;let n=t.getBoundingClientRect(),s=e.clientX,r=e.clientY,a=window.innerWidth-n.right,l=window.innerHeight-n.bottom,o=e=>{m.current={x:a-(e.clientX-s),y:l-(e.clientY-r)},function(){let e=p.current;if(!e)return;let t=e.offsetWidth,n=e.offsetHeight,s=Math.max(16,window.innerWidth-t-16),r=Math.max(16,window.innerHeight-n-16);m.current={x:Math.min(s,Math.max(16,m.current.x)),y:Math.min(r,Math.max(16,m.current.y))},e.style.right=m.current.x+"px",e.style.bottom=m.current.y+"px"}()},i=()=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",i)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",i)},style:{borderBottom:`1px solid ${e?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`},children:[(0,t.jsx)("span",{className:"text-[12px] font-semibold tracking-[0.01em]",children:"Settings"}),(0,t.jsx)("button",{onClick:()=>x(!1),onMouseDown:e=>e.stopPropagation(),className:"w-[22px] h-[22px] flex items-center justify-center rounded-md text-[13px]",style:{color:e?"rgba(244,241,235,0.5)":"rgba(41,38,27,0.5)",background:"transparent"},children:"✕"})]}),(0,t.jsxs)("div",{className:"p-4 space-y-4",children:[(0,t.jsx)("p",{className:"text-[10px] font-semibold tracking-[0.06em] uppercase",style:{color:e?"rgba(244,241,235,0.4)":"rgba(41,38,27,0.4)"},children:"Appearance"}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Dark mode"}),(0,t.jsx)("button",{onClick:()=>s(!e),role:"switch","aria-checked":e,className:"relative w-8 h-[18px] rounded-full border-0 p-0 transition-colors",style:{background:e?"#34c759":"rgba(0,0,0,0.15)"},children:(0,t.jsx)("span",{className:"absolute top-[2px] w-[14px] h-[14px] rounded-full transition-transform",style:{left:2,background:"#fff",boxShadow:"0 1px 2px rgba(0,0,0,0.25)",transform:e?"translateX(14px)":"translateX(0)"}})})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Accent color"}),(0,t.jsx)("div",{className:"flex gap-1.5",children:i.ACCENT_PRESETS.map(e=>{let n;return(0,t.jsx)("button",{onClick:()=>a(e),className:"flex-1 h-[46px] rounded-md transition-transform",style:{background:e,boxShadow:r===e?"0 0 0 1.5px rgba(0,0,0,0.85), 0 2px 6px rgba(0,0,0,0.15)":"0 0 0 .5px rgba(0,0,0,0.12)"},"aria-label":`Accent ${e}`,children:r===e&&(0,t.jsx)("svg",{viewBox:"0 0 14 14",className:"mx-auto",width:13,height:13,children:(0,t.jsx)("path",{d:"M3 7.2 5.8 10 11 4.2",fill:"none",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",stroke:Number.isNaN(n=parseInt(e.replace("#","").padEnd(6,"0").slice(0,6),16))||299*(n>>16&255)+587*(n>>8&255)+114*(255&n)>148e3?"rgba(0,0,0,.78)":"#fff"})})},e)})})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Density"}),(0,t.jsx)("div",{className:"flex rounded-lg overflow-hidden",style:{background:"rgba(0,0,0,0.06)",padding:2,gap:0},children:["compact","regular","comfy"].map(n=>(0,t.jsx)("button",{onClick:()=>o(n),className:"flex-1 py-1 text-[11px] font-medium rounded-md transition-colors capitalize",style:{background:l===n?e?"rgba(255,255,255,0.1)":"rgba(255,255,255,0.9)":"transparent",boxShadow:l===n?"0 1px 2px rgba(0,0,0,0.12)":"none"},children:n},n))})]}),(0,t.jsx)("p",{className:"text-[10px] font-semibold tracking-[0.06em] uppercase pt-2",style:{color:e?"rgba(244,241,235,0.4)":"rgba(41,38,27,0.4)"},children:"Narrative"}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Story tone"}),(0,t.jsx)("div",{className:"flex rounded-lg overflow-hidden",style:{background:"rgba(0,0,0,0.06)",padding:2},children:["terse","detailed"].map(n=>(0,t.jsx)("button",{onClick:()=>d(n),className:"flex-1 py-1 text-[11px] font-medium rounded-md transition-colors capitalize",style:{background:c===n?e?"rgba(255,255,255,0.1)":"rgba(255,255,255,0.9)":"transparent",boxShadow:c===n?"0 1px 2px rgba(0,0,0,0.12)":"none"},children:n},n))})]})]})]})]})}let d=(0,s.default)(()=>e.A(82582),{loadableGenerated:{modules:[65906]},ssr:!1}),u=(0,s.default)(()=>e.A(44993),{loadableGenerated:{modules:[63017]},ssr:!1}),x=(0,s.default)(()=>e.A(70744),{loadableGenerated:{modules:[20710]},ssr:!1}),p=(0,s.default)(()=>e.A(29519),{loadableGenerated:{modules:[37653]},ssr:!1}),m=(0,s.default)(()=>e.A(16457),{loadableGenerated:{modules:[27246]},ssr:!1}),f=(0,s.default)(()=>e.A(58835),{loadableGenerated:{modules:[49661]},ssr:!1});e.s(["default",0,function(){let[e,s]=(0,n.useState)("today"),[r,a]=(0,n.useState)(null),[i,h]=(0,n.useState)(!1),[b,g]=(0,n.useState)(0),v=(0,n.useCallback)((e,t)=>{s(e),a(t??null),window.scrollTo({top:0,behavior:"instant"})},[]);(0,n.useEffect)(()=>{fetch("/api/queue-review").then(e=>e.json()).then(e=>g(e.items?.length??0)).catch(()=>{})},[]),(0,n.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()){e.preventDefault(),h(e=>!e);return}if("Escape"===e.key)return void h(!1);if(i||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&("1"===e.key?v("today"):"2"===e.key?v("tasks"):"3"===e.key?v("queue"):"4"===e.key?v("sessions"):"5"===e.key?v("week"):"6"===e.key&&v("settings"))}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[i,v]);let k=new Date().toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"});return(0,t.jsxs)("div",{className:"min-h-screen flex",style:{background:"var(--paper)"},children:[(0,t.jsx)(l,{view:e,onNavigate:v,onOpenCmd:()=>h(!0),queueCount:b}),(0,t.jsx)("main",{className:"flex-1 min-w-0","data-screen-label":e,children:(0,t.jsxs)("div",{className:"max-w-[1080px] mx-auto px-10 py-14",children:["today"===e&&(0,t.jsx)(d,{onNavigate:(e,t)=>v(e,t)}),"tasks"===e&&(0,t.jsx)(u,{focusKey:r}),"queue"===e&&(0,t.jsx)(x,{}),"sessions"===e&&(0,t.jsx)(p,{}),"week"===e&&(0,t.jsx)(m,{}),"settings"===e&&(0,t.jsx)(f,{}),(0,t.jsxs)("footer",{className:"mt-24 pt-8 rule-t flex items-center justify-between text-[11px]",style:{borderTopColor:"var(--rule)",color:"var(--ink-4)"},children:[(0,t.jsxs)("span",{children:["Meridian · local · ",k]}),(0,t.jsxs)("span",{className:"font-mono tnum",children:[(0,t.jsx)("span",{className:"kbd",children:"⌘"})," ",(0,t.jsx)("span",{className:"kbd",children:"K"})," to jump · ",(0,t.jsx)("span",{className:"kbd",children:"1"}),"–",(0,t.jsx)("span",{className:"kbd",children:"6"})," to switch view"]})]})]})}),i&&(0,t.jsx)(o,{onClose:()=>h(!1),onNavigate:(e,t)=>{v(e,t),h(!1)}}),(0,t.jsx)(c,{})]})}],82010)},82582,e=>{e.v(t=>Promise.all(["static/chunks/11~m4ht43auzj.js"].map(t=>e.l(t))).then(()=>t(65906)))},44993,e=>{e.v(t=>Promise.all(["static/chunks/0ihy5u7wenwg0.js"].map(t=>e.l(t))).then(()=>t(63017)))},70744,e=>{e.v(t=>Promise.all(["static/chunks/0baqm_s2-t13s.js"].map(t=>e.l(t))).then(()=>t(20710)))},29519,e=>{e.v(t=>Promise.all(["static/chunks/0ifolh1b1knby.js"].map(t=>e.l(t))).then(()=>t(37653)))},16457,e=>{e.v(t=>Promise.all(["static/chunks/0s.zkfto8hpca.js"].map(t=>e.l(t))).then(()=>t(27246)))},58835,e=>{e.v(t=>Promise.all(["static/chunks/0034g-77v57su.js","static/chunks/0_g6ngacmh2ur.js"].map(t=>e.l(t))).then(()=>t(49661)))}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,29987,e=>{"use strict";var t=e.i(80663),n=e.i(56916);let s={Antigravity:{mono:"Aᴳ",color:"#7C3AED"},"Google Chrome":{mono:"Ch",color:"#3B82F6"},Terminal:{mono:">_",color:"#111827"},DBeaver:{mono:"DB",color:"#1D4ED8"},Claude:{mono:"Cl",color:"#D97757"},Slack:{mono:"Sl",color:"#E01E5A"},Zoom:{mono:"Zm",color:"#2D8CFF"},Linear:{mono:"Li",color:"#5E6AD2"},Figma:{mono:"Fg",color:"#A259FF"},Notion:{mono:"No",color:"#111111"},Spotify:{mono:"Sp",color:"#1DB954"},Mail:{mono:"Ma",color:"#0EA5E9"},Safari:{mono:"Sf",color:"#006FE5"},Xcode:{mono:"Xc",color:"#1171A3"},iTerm2:{mono:">_",color:"#2A2A2A"}},r={todo:{label:"Todo",dot:"var(--ink-4)"},in_progress:{label:"In progress",dot:"var(--accent)"},in_review:{label:"In review",dot:"#8B5CF6"},done:{label:"Done",dot:"var(--success)"}};e.s(["AppGlyph",0,function({app:e,size:n=24,withName:r=!1}){let a=function(e){if(!e)return{mono:"??",color:"#6B6A67"};if(s[e])return s[e];let t=e.trim().replace(/[^A-Za-z0-9]/g,"").slice(0,2).toUpperCase()||"??",n=0;for(let t=0;t<e.length;t++)n=31*n+e.charCodeAt(t)&65535;let r=n%360;return{mono:t,color:`hsl(${r}, 55%, 42%)`}}(e);return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{className:"inline-flex items-center justify-center rounded-md font-mono shrink-0",style:{width:n,height:n,background:a.color+"1A",color:a.color,fontSize:Math.max(9,.42*n),fontWeight:600,letterSpacing:"-0.02em"},"aria-label":e??void 0,children:a.mono}),r&&(0,t.jsx)("span",{className:"text-sm",style:{color:"var(--ink)"},children:e})]})},"CATS",0,{coding:{label:"Coding",short:"Code"},code_review:{label:"Code review",short:"Review"},meeting:{label:"Meeting",short:"Meet"},communication:{label:"Comms",short:"Comms"},design:{label:"Design",short:"Design"},documentation:{label:"Docs",short:"Docs"},planning:{label:"Planning",short:"Plan"},deployment_devops:{label:"DevOps",short:"DevOps"},research:{label:"Research",short:"Res"},idle_personal:{label:"Idle",short:"Idle"}},"Card",0,function({children:e,className:n="",as:s="div",style:r,...a}){return(0,t.jsx)(s,{...a,className:`rounded-xl border ${n}`,style:{background:"var(--surface)",borderColor:"var(--rule)",...r},children:e})},"CatDot",0,function({cat:e,size:n=6}){return(0,t.jsx)("span",{className:`inline-block rounded-full cat-${e} shrink-0`,style:{width:n,height:n},"aria-hidden":!0})},"ConfidenceRing",0,function({value:e,size:n=14}){let s=n/2-1.5,r=2*Math.PI*s,a=r*Math.max(0,Math.min(1,e));return(0,t.jsxs)("svg",{width:n,height:n,viewBox:`0 0 ${n} ${n}`,"aria-label":`${Math.round(100*e)}% confidence`,children:[(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:s,fill:"none",stroke:"var(--rule-2)",strokeWidth:"1.5"}),(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:s,fill:"none",stroke:e>.8?"var(--success)":e>.5?"var(--accent)":"var(--warn)",strokeWidth:"1.5",strokeLinecap:"round",strokeDasharray:`${a} ${r}`,transform:`rotate(-90 ${n/2} ${n/2})`})]})},"LiveDot",0,function({size:e=8}){return(0,t.jsxs)("span",{className:"inline-flex items-center justify-center relative",style:{width:e,height:e},children:[(0,t.jsx)("span",{className:"absolute inline-block rounded-full live-dot",style:{width:e,height:e,background:"var(--live)"}}),(0,t.jsx)("span",{className:"inline-block rounded-full",style:{width:Math.max(3,e-4),height:Math.max(3,e-4),background:"var(--live)"}})]})},"SectionHead",0,function({kicker:e,title:n,right:s}){return(0,t.jsxs)("div",{className:"flex items-end justify-between mb-3",children:[(0,t.jsxs)("div",{children:[e&&(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-[0.16em] mb-1.5",style:{color:"var(--ink-3)"},children:e}),(0,t.jsx)("h2",{className:"text-[15px] font-medium",style:{color:"var(--ink)"},children:n})]}),s]})},"SegBar",0,function({segments:e,height:n=4}){let s=e.reduce((e,t)=>e+t.value,0)||1;return(0,t.jsx)("span",{className:"inline-flex w-full overflow-hidden rounded-full",style:{height:n,background:"var(--rule)"},children:e.map((e,n)=>(0,t.jsx)("span",{className:e.cat?`cat-${e.cat}`:"",style:{width:`${e.value/s*100}%`,background:e.color??void 0}},n))})},"StatusPill",0,function({status:e}){let n=r[e]??r.todo;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[11px]",style:{color:"var(--ink-2)"},children:[(0,t.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:n.dot}}),n.label]})},"TaskKey",0,function({keyId:e,big:n=!1}){return e?(0,t.jsx)("span",{className:`font-mono tracking-tight ${n?"text-[12px]":"text-[11px]"} px-1.5 py-px rounded-[4px] tnum`,style:{color:"var(--ink)",background:"var(--tint)",borderBottom:"1px solid var(--rule-2)"},children:e}):null},"fmtClock",0,function(e){if("number"==typeof e){let t=Math.floor(e),n=Math.round((e-t)*60);return`${(t+11)%12+1}:${String(n).padStart(2,"0")} ${t>=12?"PM":"AM"}`}let t=new Date(e),n=t.getHours(),s=t.getMinutes();return`${(n+11)%12+1}:${String(s).padStart(2,"0")} ${n>=12?"PM":"AM"}`},"fmtDur",0,function(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60),s=t%60;return s>0?`${n}h ${s}m`:`${n}h`},"fmtDurDecimal",0,function(e){if(e<60)return"0:"+String(e).padStart(2,"0");let t=Math.floor(e/60);if(t<60)return"0:"+String(t).padStart(2,"0");let n=Math.floor(t/60);return`${n}:${String(t%60).padStart(2,"0")}`},"useTick",0,function(e=1){let[t,s]=(0,n.useState)(0);return(0,n.useEffect)(()=>{let t=setInterval(()=>s(e=>e+1),1e3*e);return()=>clearInterval(t)},[e]),t}])},953,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return r}});let s=e.r(45158);function r({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new s.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},79372,(e,t,n)=>{"use strict";function s(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return s}})},70492,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return i}});let s=e.r(80663),r=e.r(44939),a=e.r(32316),l=e.r(79372),o=e.r(54389);function i({moduleIds:e}){if("u">typeof window)return null;let t=a.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let s=t.reactLoadableManifest;for(let t of e){if(!s[t])continue;let e=s[t].files;n.push(...e)}}if(0===n.length)return null;let c=(0,o.getAssetTokenQuery)();return(0,s.jsx)(s.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${c}`;return e.endsWith(".css")?(0,s.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,r.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},7395,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return c}});let s=e.r(80663),r=e.r(56916),a=e.r(953),l=e.r(70492);function o(e){return{default:e&&"default"in e?e.default:e}}let i={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},c=function(e){let t={...i,...e},n=(0,r.lazy)(()=>t.loader().then(o)),c=t.loading;function d(e){let o=c?(0,s.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,i=!t.ssr||!!t.loading,d=i?r.Suspense:r.Fragment,u=t.ssr?(0,s.jsxs)(s.Fragment,{children:["u"<typeof window?(0,s.jsx)(l.PreloadChunks,{moduleIds:t.modules}):null,(0,s.jsx)(n,{...e})]}):(0,s.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,s.jsx)(n,{...e})});return(0,s.jsx)(d,{...i?{fallback:o}:{},children:u})}return d.displayName="LoadableComponent",d}},2831,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let s=e.r(46921)._(e.r(7395));function r(e,t){let n={};"function"==typeof e&&(n.loader=e);let r={...n,...t};return(0,s.default)({...r,modules:r.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},82010,e=>{"use strict";var t=e.i(80663),n=e.i(56916),s=e.i(2831),r=e.i(29987);function a({info:e,onClick:n}){let s=(0,r.useTick)(1),l=e.elapsed_s+s;return(0,t.jsxs)("button",{onClick:n,className:"m-3 p-3 rounded-lg text-left transition-colors",style:{background:"var(--surface)",border:"1px solid var(--rule)"},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(r.LiveDot,{size:8}),(0,t.jsx)("span",{className:"text-[10px] uppercase tracking-[0.16em]",style:{color:"var(--ink-3)"},children:"Now"}),(0,t.jsx)("span",{className:"ml-auto font-mono tnum text-[11px]",style:{color:"var(--ink-2)"},children:(0,r.fmtDurDecimal)(l)})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[(0,t.jsx)(r.AppGlyph,{app:e.app_name,size:18}),(0,t.jsx)("span",{className:"text-[12px] truncate",style:{color:"var(--ink)"},children:e.app_name})]})]})}function l({view:e,onNavigate:s,onOpenCmd:r,queueCount:o}){let[i,c]=(0,n.useState)(null);return(0,n.useEffect)(()=>{function e(){fetch("/api/active").then(e=>e.json()).then(e=>c(e)).catch(()=>{})}e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]),(0,t.jsxs)("aside",{className:"w-[240px] shrink-0 sticky top-0 self-start h-screen flex flex-col rule-r",style:{borderRightColor:"var(--rule)",background:"var(--paper)"},children:[(0,t.jsxs)("div",{className:"px-6 py-7",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"inline-block w-2.5 h-2.5 rounded-full live-dot",style:{background:"var(--accent)"}}),(0,t.jsx)("span",{className:"font-serif italic text-[22px] leading-none tracking-tight",style:{color:"var(--ink)"},children:"meridian"})]}),(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-[0.2em] mt-2",style:{color:"var(--ink-3)"},children:"local · v0.3"})]}),(0,t.jsxs)("nav",{className:"flex-1 px-3",children:[[{id:"today",label:"Today",kbd:"1"},{id:"tasks",label:"Tasks",kbd:"2"},{id:"queue",label:"Queue",kbd:"3",badge:o||void 0},{id:"sessions",label:"Sessions",kbd:"4"},{id:"week",label:"Week",kbd:"5"}].map(n=>{let r=e===n.id;return(0,t.jsxs)("button",{onClick:()=>s(n.id),className:"w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors mb-px",style:{background:r?"var(--surface-2)":"transparent",color:r?"var(--ink)":"var(--ink-2)"},children:[(0,t.jsx)("span",{className:"text-[13px] flex-1",children:n.label}),null!=n.badge&&(0,t.jsx)("span",{className:"text-[10px] font-mono tnum px-1.5 py-0.5 rounded",style:{background:"var(--accent)",color:"var(--paper)"},children:n.badge}),(0,t.jsx)("span",{className:"kbd",children:n.kbd})]},n.id)}),(0,t.jsxs)("button",{onClick:r,className:"w-full flex items-center gap-3 px-3 py-2 rounded-md text-left mt-4",style:{color:"var(--ink-3)"},children:[(0,t.jsx)("span",{className:"text-[13px] flex-1",children:"Quick switch"}),(0,t.jsx)("span",{className:"kbd",children:"⌘"}),(0,t.jsx)("span",{className:"kbd",children:"K"})]})]}),(0,t.jsx)("div",{className:"px-3 pb-4",children:(0,t.jsxs)("button",{onClick:()=>s("settings"),className:"w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors",style:{background:"settings"===e?"var(--surface-2)":"transparent",color:"settings"===e?"var(--ink)":"var(--ink-3)"},children:[(0,t.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"2.5"}),(0,t.jsx)("path",{d:"M8 1v1.5M8 13.5V15M1 8h1.5M13.5 8H15M3.05 3.05l1.06 1.06M11.89 11.89l1.06 1.06M3.05 12.95l1.06-1.06M11.89 4.11l1.06-1.06"})]}),(0,t.jsx)("span",{className:"text-[13px]",children:"Settings"}),(0,t.jsx)("span",{className:"kbd ml-auto",children:"6"})]})}),i&&(0,t.jsx)(a,{info:i,onClick:()=>s("today")})]})}function o({onClose:e,onNavigate:s}){let[a,l]=(0,n.useState)(""),i=(0,n.useRef)(null);(0,n.useEffect)(()=>{i.current?.focus()},[]);let c=[{kind:"view",label:"Go to Today",v:"today"},{kind:"view",label:"Go to Tasks",v:"tasks"},{kind:"view",label:"Go to Review queue",v:"queue"},{kind:"view",label:"Go to Sessions",v:"sessions"},{kind:"view",label:"Go to Week",v:"week"}].filter(e=>!a||e.label.toLowerCase().includes(a.toLowerCase())).slice(0,8);return(0,t.jsx)("div",{onClick:e,className:"fixed inset-0 z-50 flex items-start justify-center pt-[18vh]",style:{background:"rgba(15,15,15,0.45)",backdropFilter:"blur(4px)"},children:(0,t.jsxs)("div",{onClick:e=>e.stopPropagation(),className:"w-[560px] max-w-[92vw] rounded-xl overflow-hidden rise",style:{background:"var(--surface)",border:"1px solid var(--rule-2)",boxShadow:"0 24px 80px rgba(0,0,0,0.18)"},children:[(0,t.jsx)("input",{ref:i,value:a,onChange:e=>l(e.target.value),onKeyDown:t=>{"Escape"===t.key&&e(),"Enter"===t.key&&c[0]&&s(c[0].v,c[0].key)},placeholder:"Jump to view or task…",className:"w-full px-5 py-4 text-[14px] font-sans",style:{background:"transparent",color:"var(--ink)",border:"none",outline:"none",borderBottom:"1px solid var(--rule)"}}),(0,t.jsxs)("div",{className:"max-h-[40vh] overflow-y-auto nice-scroll",children:[0===c.length&&(0,t.jsx)("p",{className:"p-6 text-center text-[12px]",style:{color:"var(--ink-3)"},children:"No matches."}),c.map((e,n)=>(0,t.jsxs)("button",{onClick:()=>s(e.v,e.key),className:"w-full text-left px-5 py-2.5 flex items-center gap-3 transition-colors hover:opacity-80",style:{background:0===n?"var(--surface-2)":"transparent"},children:["task"===e.kind&&(0,t.jsx)(r.TaskKey,{keyId:e.key}),(0,t.jsx)("span",{className:"text-[13px]",style:{color:"var(--ink)"},children:e.label}),"task"===e.kind&&e.status&&(0,t.jsx)("span",{className:"ml-auto",children:(0,t.jsx)(r.StatusPill,{status:e.status})})]},n))]}),(0,t.jsxs)("div",{className:"px-5 py-2.5 rule-t flex items-center justify-between text-[10px]",style:{borderTopColor:"var(--rule)",color:"var(--ink-4)"},children:[(0,t.jsx)("span",{children:"Local search · no network"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("span",{className:"kbd",children:"↵"})," open · ",(0,t.jsx)("span",{className:"kbd",children:"esc"})," close"]})]})]})})}var i=e.i(38297);function c(){let{dark:e,setDark:s,accent:r,setAccent:a,density:l,setDensity:o,tone:c,setTone:d}=(0,i.useTheme)(),[u,x]=(0,n.useState)(!1),p=(0,n.useRef)(null),m=(0,n.useRef)({x:16,y:16});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>x(e=>!e),className:"fixed right-4 bottom-4 z-40 w-9 h-9 rounded-full flex items-center justify-center text-[13px]",style:{background:"var(--surface)",border:"1px solid var(--rule-2)",color:"var(--ink-3)",boxShadow:"0 2px 8px rgba(0,0,0,0.1)"},"aria-label":"Open theme settings",children:"◐"}),u&&(0,t.jsxs)("div",{ref:p,className:"fixed z-50 w-[280px] rounded-[14px] overflow-hidden flex flex-col",style:{right:m.current.x,bottom:m.current.y,background:e?"rgba(20,20,19,0.92)":"rgba(250,249,247,0.92)",border:`.5px solid ${e?"rgba(255,255,255,0.08)":"rgba(255,255,255,0.6)"}`,backdropFilter:"blur(24px) saturate(160%)",boxShadow:"0 12px 40px rgba(0,0,0,0.18)",color:e?"#F4F1EB":"#29261b"},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 cursor-move select-none",onMouseDown:function(e){let t=p.current;if(!t)return;let n=t.getBoundingClientRect(),s=e.clientX,r=e.clientY,a=window.innerWidth-n.right,l=window.innerHeight-n.bottom,o=e=>{m.current={x:a-(e.clientX-s),y:l-(e.clientY-r)},function(){let e=p.current;if(!e)return;let t=e.offsetWidth,n=e.offsetHeight,s=Math.max(16,window.innerWidth-t-16),r=Math.max(16,window.innerHeight-n-16);m.current={x:Math.min(s,Math.max(16,m.current.x)),y:Math.min(r,Math.max(16,m.current.y))},e.style.right=m.current.x+"px",e.style.bottom=m.current.y+"px"}()},i=()=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",i)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",i)},style:{borderBottom:`1px solid ${e?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`},children:[(0,t.jsx)("span",{className:"text-[12px] font-semibold tracking-[0.01em]",children:"Settings"}),(0,t.jsx)("button",{onClick:()=>x(!1),onMouseDown:e=>e.stopPropagation(),className:"w-[22px] h-[22px] flex items-center justify-center rounded-md text-[13px]",style:{color:e?"rgba(244,241,235,0.5)":"rgba(41,38,27,0.5)",background:"transparent"},children:"✕"})]}),(0,t.jsxs)("div",{className:"p-4 space-y-4",children:[(0,t.jsx)("p",{className:"text-[10px] font-semibold tracking-[0.06em] uppercase",style:{color:e?"rgba(244,241,235,0.4)":"rgba(41,38,27,0.4)"},children:"Appearance"}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Dark mode"}),(0,t.jsx)("button",{onClick:()=>s(!e),role:"switch","aria-checked":e,className:"relative w-8 h-[18px] rounded-full border-0 p-0 transition-colors",style:{background:e?"#34c759":"rgba(0,0,0,0.15)"},children:(0,t.jsx)("span",{className:"absolute top-[2px] w-[14px] h-[14px] rounded-full transition-transform",style:{left:2,background:"#fff",boxShadow:"0 1px 2px rgba(0,0,0,0.25)",transform:e?"translateX(14px)":"translateX(0)"}})})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Accent color"}),(0,t.jsx)("div",{className:"flex gap-1.5",children:i.ACCENT_PRESETS.map(e=>{let n;return(0,t.jsx)("button",{onClick:()=>a(e),className:"flex-1 h-[46px] rounded-md transition-transform",style:{background:e,boxShadow:r===e?"0 0 0 1.5px rgba(0,0,0,0.85), 0 2px 6px rgba(0,0,0,0.15)":"0 0 0 .5px rgba(0,0,0,0.12)"},"aria-label":`Accent ${e}`,children:r===e&&(0,t.jsx)("svg",{viewBox:"0 0 14 14",className:"mx-auto",width:13,height:13,children:(0,t.jsx)("path",{d:"M3 7.2 5.8 10 11 4.2",fill:"none",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",stroke:Number.isNaN(n=parseInt(e.replace("#","").padEnd(6,"0").slice(0,6),16))||299*(n>>16&255)+587*(n>>8&255)+114*(255&n)>148e3?"rgba(0,0,0,.78)":"#fff"})})},e)})})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Density"}),(0,t.jsx)("div",{className:"flex rounded-lg overflow-hidden",style:{background:"rgba(0,0,0,0.06)",padding:2,gap:0},children:["compact","regular","comfy"].map(n=>(0,t.jsx)("button",{onClick:()=>o(n),className:"flex-1 py-1 text-[11px] font-medium rounded-md transition-colors capitalize",style:{background:l===n?e?"rgba(255,255,255,0.1)":"rgba(255,255,255,0.9)":"transparent",boxShadow:l===n?"0 1px 2px rgba(0,0,0,0.12)":"none"},children:n},n))})]}),(0,t.jsx)("p",{className:"text-[10px] font-semibold tracking-[0.06em] uppercase pt-2",style:{color:e?"rgba(244,241,235,0.4)":"rgba(41,38,27,0.4)"},children:"Narrative"}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("span",{className:"text-[11.5px]",children:"Story tone"}),(0,t.jsx)("div",{className:"flex rounded-lg overflow-hidden",style:{background:"rgba(0,0,0,0.06)",padding:2},children:["terse","detailed"].map(n=>(0,t.jsx)("button",{onClick:()=>d(n),className:"flex-1 py-1 text-[11px] font-medium rounded-md transition-colors capitalize",style:{background:c===n?e?"rgba(255,255,255,0.1)":"rgba(255,255,255,0.9)":"transparent",boxShadow:c===n?"0 1px 2px rgba(0,0,0,0.12)":"none"},children:n},n))})]})]})]})]})}let d=(0,s.default)(()=>e.A(82582),{loadableGenerated:{modules:[65906]},ssr:!1}),u=(0,s.default)(()=>e.A(44993),{loadableGenerated:{modules:[63017]},ssr:!1}),x=(0,s.default)(()=>e.A(70744),{loadableGenerated:{modules:[20710]},ssr:!1}),p=(0,s.default)(()=>e.A(29519),{loadableGenerated:{modules:[37653]},ssr:!1}),m=(0,s.default)(()=>e.A(16457),{loadableGenerated:{modules:[27246]},ssr:!1}),f=(0,s.default)(()=>e.A(58835),{loadableGenerated:{modules:[49661]},ssr:!1});e.s(["default",0,function(){let[e,s]=(0,n.useState)("today"),[r,a]=(0,n.useState)(null),[i,h]=(0,n.useState)(!1),[b,g]=(0,n.useState)(0),v=(0,n.useCallback)((e,t)=>{s(e),a(t??null),window.scrollTo({top:0,behavior:"instant"})},[]);(0,n.useEffect)(()=>{fetch("/api/queue-review").then(e=>e.json()).then(e=>g(e.items?.length??0)).catch(()=>{})},[]),(0,n.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()){e.preventDefault(),h(e=>!e);return}if("Escape"===e.key)return void h(!1);if(i||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&("1"===e.key?v("today"):"2"===e.key?v("tasks"):"3"===e.key?v("queue"):"4"===e.key?v("sessions"):"5"===e.key?v("week"):"6"===e.key&&v("settings"))}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[i,v]);let k=new Date().toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"});return(0,t.jsxs)("div",{className:"min-h-screen flex",style:{background:"var(--paper)"},children:[(0,t.jsx)(l,{view:e,onNavigate:v,onOpenCmd:()=>h(!0),queueCount:b}),(0,t.jsx)("main",{className:"flex-1 min-w-0","data-screen-label":e,children:(0,t.jsxs)("div",{className:"max-w-[1080px] mx-auto px-10 py-14",children:["today"===e&&(0,t.jsx)(d,{onNavigate:(e,t)=>v(e,t)}),"tasks"===e&&(0,t.jsx)(u,{focusKey:r}),"queue"===e&&(0,t.jsx)(x,{}),"sessions"===e&&(0,t.jsx)(p,{}),"week"===e&&(0,t.jsx)(m,{}),"settings"===e&&(0,t.jsx)(f,{}),(0,t.jsxs)("footer",{className:"mt-24 pt-8 rule-t flex items-center justify-between text-[11px]",style:{borderTopColor:"var(--rule)",color:"var(--ink-4)"},children:[(0,t.jsxs)("span",{children:["Meridian · local · ",k]}),(0,t.jsxs)("span",{className:"font-mono tnum",children:[(0,t.jsx)("span",{className:"kbd",children:"⌘"})," ",(0,t.jsx)("span",{className:"kbd",children:"K"})," to jump · ",(0,t.jsx)("span",{className:"kbd",children:"1"}),"–",(0,t.jsx)("span",{className:"kbd",children:"6"})," to switch view"]})]})]})}),i&&(0,t.jsx)(o,{onClose:()=>h(!1),onNavigate:(e,t)=>{v(e,t),h(!1)}}),(0,t.jsx)(c,{})]})}],82010)},82582,e=>{e.v(t=>Promise.all(["static/chunks/0vh2gk~.ts7mj.js"].map(t=>e.l(t))).then(()=>t(65906)))},44993,e=>{e.v(t=>Promise.all(["static/chunks/0ihy5u7wenwg0.js"].map(t=>e.l(t))).then(()=>t(63017)))},70744,e=>{e.v(t=>Promise.all(["static/chunks/0baqm_s2-t13s.js"].map(t=>e.l(t))).then(()=>t(20710)))},29519,e=>{e.v(t=>Promise.all(["static/chunks/0ifolh1b1knby.js"].map(t=>e.l(t))).then(()=>t(37653)))},16457,e=>{e.v(t=>Promise.all(["static/chunks/0s.zkfto8hpca.js"].map(t=>e.l(t))).then(()=>t(27246)))},58835,e=>{e.v(t=>Promise.all(["static/chunks/0034g-77v57su.js","static/chunks/0_g6ngacmh2ur.js"].map(t=>e.l(t))).then(()=>t(49661)))}]);
@@ -1 +1 @@
1
- wioVv6XFtZEmd8mJbhXPz
1
+ CCkrzzRwGe9MBRD4oERSo
@@ -7,9 +7,9 @@
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/wioVv6XFtZEmd8mJbhXPz/_buildManifest.js",
11
- "static/wioVv6XFtZEmd8mJbhXPz/_ssgManifest.js",
12
- "static/wioVv6XFtZEmd8mJbhXPz/_clientMiddlewareManifest.js"
10
+ "static/CCkrzzRwGe9MBRD4oERSo/_buildManifest.js",
11
+ "static/CCkrzzRwGe9MBRD4oERSo/_ssgManifest.js",
12
+ "static/CCkrzzRwGe9MBRD4oERSo/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/0dot4ieb6jn6a.js",
@@ -102,8 +102,8 @@
102
102
  "dynamicRoutes": {},
103
103
  "notFoundRoutes": [],
104
104
  "preview": {
105
- "previewModeId": "87a5f7917885c00d5729399afab7fc21",
106
- "previewModeSigningKey": "38389916c8d5316942317b27137640a966580d3f2491d92f242ab64b834c63f1",
107
- "previewModeEncryptionKey": "f51ec2c59059ef7705191fbb6c2c420ba888cb549bf3480edecbe6c210dcadee"
105
+ "previewModeId": "eb5774f5997dd898f6e71c88660fc3ce",
106
+ "previewModeSigningKey": "7319e608233b86b149e82a80107c42b64f55d79d8d9477eac8c44b032a42b697",
107
+ "previewModeEncryptionKey": "c672fef32137b5e493f91b4124dc8f5555b6bc81877a07820385aac9d8241ecf"
108
108
  }
109
109
  }
@@ -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/0dot4ieb6jn6a.js"/><script src="/_next/static/chunks/07w.nc21rbgvr.js" async=""></script><script src="/_next/static/chunks/0k6e32~luaz90.js" async=""></script><script src="/_next/static/chunks/turbopack-07spa5_ifkkbo.js" async=""></script><script src="/_next/static/chunks/0jgj_x4bo_4cp.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/03~yq9q893hmn.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/0dot4ieb6jn6a.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[15838,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"default\"]\n3:I[7840,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"default\"]\n4:I[22556,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[22556,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"ViewportBoundary\"]\na:I[22556,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"MetadataBoundary\"]\nc:I[32435,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"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\":[[\"$\",\"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\"],[\"$\",\"$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\":\"wioVv6XFtZEmd8mJbhXPz\"}\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/0dot4ieb6jn6a.js"/><script src="/_next/static/chunks/07w.nc21rbgvr.js" async=""></script><script src="/_next/static/chunks/0k6e32~luaz90.js" async=""></script><script src="/_next/static/chunks/turbopack-07spa5_ifkkbo.js" async=""></script><script src="/_next/static/chunks/0jgj_x4bo_4cp.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/03~yq9q893hmn.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/0dot4ieb6jn6a.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[15838,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"default\"]\n3:I[7840,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"default\"]\n4:I[22556,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[22556,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"ViewportBoundary\"]\na:I[22556,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"MetadataBoundary\"]\nc:I[32435,[\"/_next/static/chunks/0jgj_x4bo_4cp.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"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\":[[\"$\",\"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\"],[\"$\",\"$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\":\"CCkrzzRwGe9MBRD4oERSo\"}\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[22556,["/_next/static/chunks/0jgj_x4bo_4cp.js"],"ViewportBoundary"]
7
7
  a:I[22556,["/_next/static/chunks/0jgj_x4bo_4cp.js"],"MetadataBoundary"]
8
8
  c:I[32435,["/_next/static/chunks/0jgj_x4bo_4cp.js"],"default",1]
9
- 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"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":[["$","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"],["$","$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":"wioVv6XFtZEmd8mJbhXPz"}
9
+ 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"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":[["$","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"],["$","$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":"CCkrzzRwGe9MBRD4oERSo"}
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"}]]