@hirra/vibemeter 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +7 -1
- package/.next/build-manifest.json +7 -8
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +16 -12
- package/.next/required-server-files.js +5 -4
- package/.next/required-server-files.json +5 -4
- package/.next/routes-manifest.json +36 -0
- package/.next/server/app/_global-error/page/build-manifest.json +4 -5
- package/.next/server/app/_global-error/page.js +4 -4
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +4 -5
- package/.next/server/app/_not-found/page.js +5 -4
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin/page/build-manifest.json +4 -5
- package/.next/server/app/admin/page.js +7 -5
- package/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/codex-accounts/route.js +1 -1
- package/.next/server/app/api/codex-accounts/route.js.nft.json +1 -1
- package/.next/server/app/api/float/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/float/route/build-manifest.json +9 -0
- package/.next/server/app/api/float/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/float/route.js +8 -0
- package/.next/server/app/api/float/route.js.map +5 -0
- package/.next/server/app/api/float/route.js.nft.json +1 -0
- package/.next/server/app/api/float/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/import-sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/tags/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/tags/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/alerts/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/settings/alerts/route/build-manifest.json +9 -0
- package/.next/server/app/api/settings/alerts/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/settings/alerts/route.js +9 -0
- package/.next/server/app/api/settings/alerts/route.js.map +5 -0
- package/.next/server/app/api/settings/alerts/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/alerts/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/settings/notify/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/settings/notify/route/build-manifest.json +9 -0
- package/.next/server/app/api/settings/notify/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/settings/notify/route.js +7 -0
- package/.next/server/app/api/settings/notify/route.js.map +5 -0
- package/.next/server/app/api/settings/notify/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/notify/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/usage/route.js.nft.json +1 -1
- package/.next/server/app/float/page/app-paths-manifest.json +3 -0
- package/.next/server/app/float/page/build-manifest.json +16 -0
- package/.next/server/app/float/page/next-font-manifest.json +11 -0
- package/.next/server/app/float/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/float/page/server-reference-manifest.json +4 -0
- package/.next/server/app/float/page.js +15 -0
- package/.next/server/app/float/page.js.map +5 -0
- package/.next/server/app/float/page.js.nft.json +1 -0
- package/.next/server/app/float/page_client-reference-manifest.js +3 -0
- package/.next/server/app/install.sh/route/app-paths-manifest.json +3 -0
- package/.next/server/app/install.sh/route/build-manifest.json +9 -0
- package/.next/server/app/install.sh/route/server-reference-manifest.json +4 -0
- package/.next/server/app/install.sh/route.js +6 -0
- package/.next/server/app/install.sh/route.js.map +5 -0
- package/.next/server/app/install.sh/route.js.nft.json +1 -0
- package/.next/server/app/install.sh/route_client-reference-manifest.js +3 -0
- package/.next/server/app/install.sh.body +108 -0
- package/.next/server/app/install.sh.meta +1 -0
- package/.next/server/app/page/build-manifest.json +4 -5
- package/.next/server/app/page.js +8 -5
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/page/build-manifest.json +16 -0
- package/.next/server/app/settings/page/next-font-manifest.json +11 -0
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/settings/page/server-reference-manifest.json +4 -0
- package/.next/server/app/settings/page.js +17 -0
- package/.next/server/app/settings/page.js.map +5 -0
- package/.next/server/app/settings/page.js.nft.json +1 -0
- package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
- package/.next/server/app-paths-manifest.json +7 -1
- package/.next/server/chunks/[externals]__0_i~3ox._.js +3 -0
- package/.next/server/chunks/[externals]__0_i~3ox._.js.map +1 -0
- package/.next/server/chunks/[externals]__13p_1zh._.js +3 -0
- package/.next/server/chunks/[externals]__13p_1zh._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__01t2c3w._.js +38 -0
- package/.next/server/chunks/[root-of-the-server]__01t2c3w._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0g0u0lm._.js → [root-of-the-server]__024yzee._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__00q0o~z._.js → [root-of-the-server]__082iwfa._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0chedn~._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0mwf0bn._.js +38 -0
- package/.next/server/chunks/[root-of-the-server]__0mwf0bn._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0-74syk._.js → [root-of-the-server]__0ru3_it._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0u6y_k1._.js +111 -0
- package/.next/server/chunks/[root-of-the-server]__0u6y_k1._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0866q87._.js → [root-of-the-server]__0xa4dzi._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__13415c6._.js +96 -0
- package/.next/server/chunks/[root-of-the-server]__13415c6._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__13j_28o._.js +96 -0
- package/.next/server/chunks/[root-of-the-server]__13j_28o._.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_float_route_actions_012j~jr.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_float_route_actions_012j~jr.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_settings_alerts_route_actions_0ydcyko.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_settings_alerts_route_actions_0ydcyko.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_settings_notify_route_actions_0-j35mb.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_settings_notify_route_actions_0-j35mb.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_install_sh_route_actions_0cj-6me.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_install_sh_route_actions_0cj-6me.js.map +1 -0
- package/.next/server/chunks/node_modules_next_06f88ko._.js +19 -0
- package/.next/server/chunks/node_modules_next_06f88ko._.js.map +1 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_03jj5jj.js +18 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_03jj5jj.js.map +1 -0
- package/.next/server/chunks/src_12i1qk5._.js +3 -0
- package/.next/server/chunks/src_12i1qk5._.js.map +1 -0
- package/.next/server/chunks/src_lib_alerts_ticker_ts_0n6oy1d._.js +169 -0
- package/.next/server/chunks/src_lib_alerts_ticker_ts_0n6oy1d._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__03mt8o0._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__03mt8o0._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__098zro9._.js → [root-of-the-server]__090jxzh._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__090jxzh._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__09hgk-7._.js → [root-of-the-server]__0c3j40u._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0c3j40u._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ot4nev._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ot4nev._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0q_~l2m._.js +90 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0q_~l2m._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0cqes87._.js → [root-of-the-server]__0qt26ty._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0qt26ty._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0s5.uhg._.js +55 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0s5.uhg._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0x~-phx._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0x~-phx._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0y_zq8k._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0y_zq8k._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__08qr2ji._.js → [root-of-the-server]__0~953ob._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0~953ob._.js.map +1 -0
- package/.next/server/chunks/ssr/_0-9j34y._.js +70 -0
- package/.next/server/chunks/ssr/_0-9j34y._.js.map +1 -0
- package/.next/server/chunks/ssr/_0jxmm9h._.js +6 -0
- package/.next/server/chunks/ssr/_0jxmm9h._.js.map +1 -0
- package/.next/server/chunks/ssr/_0lfe3wr._.js +3 -0
- package/.next/server/chunks/ssr/_0lfe3wr._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_0i2xw~e._.js → _0nvprxh._.js} +5 -2
- package/.next/server/chunks/ssr/_0nvprxh._.js.map +1 -0
- package/.next/server/chunks/ssr/_0pugb10._.js +6 -0
- package/.next/server/chunks/ssr/_0pugb10._.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_float_page_actions_0x6hm4p.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_float_page_actions_0x6hm4p.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_11~q6fv._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_11~q6fv._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_09jzzl8._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_09jzzl8._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_0e1izl_._.js → node_modules_next_dist_0h9llsw._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_next_dist_0h9llsw._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06b_a87.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06b_a87.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0p_u4px.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0p_u4px.js.map +1 -0
- package/.next/server/chunks/ssr/src_0urkups._.js +3 -0
- package/.next/server/chunks/ssr/src_0urkups._.js.map +1 -0
- package/.next/server/chunks/ssr/src_components_0ox9d~w._.js +3 -0
- package/.next/server/chunks/ssr/src_components_0ox9d~w._.js.map +1 -0
- package/.next/server/chunks/ssr/src_components_CodexAccountsPanel_tsx_0n9xjzi._.js +1 -1
- package/.next/server/chunks/ssr/src_components_CodexAccountsPanel_tsx_0n9xjzi._.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_FloatingWidget_tsx_089.6oo._.js +3 -0
- package/.next/server/chunks/ssr/src_components_FloatingWidget_tsx_089.6oo._.js.map +1 -0
- package/.next/server/chunks/ssr/src_lib_i18n_client_tsx_07pysgz._.js +3 -0
- package/.next/server/chunks/ssr/src_lib_i18n_client_tsx_07pysgz._.js.map +1 -0
- package/.next/server/edge/chunks/_0-m5tdn._.js +3 -0
- package/.next/server/edge/chunks/_0-m5tdn._.js.map +1 -0
- package/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_0mz-5sp.js.map +1 -0
- package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_0mz-5sp.js +3 -0
- package/.next/server/functions-config-manifest.json +4 -1
- package/.next/server/instrumentation/middleware-manifest.json +12 -0
- package/.next/server/instrumentation.js +4 -0
- package/.next/server/instrumentation.js.map +5 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/middleware-build-manifest.js +7 -8
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +8 -0
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +0 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0bymg5d-lqs0o.js +5 -0
- package/.next/static/chunks/0ebdqsutnp8y4.js +1 -0
- package/.next/static/chunks/0i3~mnai-l497.js +1 -0
- package/.next/static/chunks/0idj4tdmyr934.js +1 -0
- package/.next/static/chunks/10eoi4q2wk80z.js +1 -0
- package/.next/static/chunks/10refkmyp9rbl.css +3 -0
- package/.next/static/chunks/{07lhk_q6pmm3r.js → 10u3y4bw1ayzs.js} +1 -1
- package/.next/static/chunks/{00gq-v0e07i1q.js → 115dplafwys-z.js} +1 -1
- package/.next/static/chunks/12-9memveha-v.js +1 -0
- package/.next/static/chunks/163s8y.j70104.js +4 -0
- package/.next/static/chunks/turbopack-0k9twle9a8sh6.js +1 -0
- package/.next/types/routes.d.ts +8 -2
- package/.next/types/validator.ts +54 -0
- package/README.md +57 -17
- package/bin/vibemeter-float.swift +970 -0
- package/bin/vibemeter-notify.sh +172 -0
- package/bin/vibemeter.mjs +385 -7
- package/package.json +2 -1
- package/public/demo1.png +0 -0
- package/public/float-ball.png +0 -0
- package/public/float-collapsed.png +0 -0
- package/public/float-expanded.png +0 -0
- package/public/pay-alipay.jpg +0 -0
- package/.next/server/app/_not-found.html +0 -1
- package/.next/server/app/_not-found.meta +0 -16
- package/.next/server/app/_not-found.rsc +0 -16
- package/.next/server/app/_not-found.segments/_full.segment.rsc +0 -16
- package/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
- package/.next/server/app/_not-found.segments/_index.segment.rsc +0 -5
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
- package/.next/server/chunks/[root-of-the-server]__0y68a5d._.js +0 -96
- package/.next/server/chunks/[root-of-the-server]__0y68a5d._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__054lv8d._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__054lv8d._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__08qr2ji._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__098zro9._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__09hgk-7._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0cqes87._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0l.drdn._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0l.drdn._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0v1zqf~._.js +0 -120
- package/.next/server/chunks/ssr/[root-of-the-server]__0v1zqf~._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js.map +0 -1
- package/.next/server/chunks/ssr/_0ye~8el._.js +0 -7
- package/.next/server/chunks/ssr/_0ye~8el._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_0ck2~9g._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_0ck2~9g._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_0i2xw~e._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_0gsjr7_._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_0gsjr7_._.js.map +0 -1
- package/.next/server/pages/404.html +0 -1
- package/.next/static/chunks/002~6040mndie.css +0 -3
- package/.next/static/chunks/02g3221oh~3le.js +0 -2
- package/.next/static/chunks/0ljfidstam_7k.js +0 -1
- package/.next/static/chunks/0pqt~8bl3ukh4.js +0 -4
- package/.next/static/chunks/0yz9oprcns4nm.js +0 -2
- package/.next/static/chunks/turbopack-14vio.b1b9i4l.js +0 -1
- /package/.next/server/chunks/{[root-of-the-server]__0g0u0lm._.js.map → [root-of-the-server]__024yzee._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__00q0o~z._.js.map → [root-of-the-server]__082iwfa._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0-74syk._.js.map → [root-of-the-server]__0ru3_it._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0866q87._.js.map → [root-of-the-server]__0xa4dzi._.js.map} +0 -0
- /package/.next/static/{DcqlVrgh4gM8jlqrnOCpT → _Y03MiN6NI16Ms86q6vCJ}/_buildManifest.js +0 -0
- /package/.next/static/{DcqlVrgh4gM8jlqrnOCpT → _Y03MiN6NI16Ms86q6vCJ}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{DcqlVrgh4gM8jlqrnOCpT → _Y03MiN6NI16Ms86q6vCJ}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,35451,(e,t,r)=>{var n={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var l=[],s=!1,c=-1;function f(){s&&n&&(s=!1,n.length?l=n.concat(l):c=-1,l.length&&d())}function d(){if(!s){var e=a(f);s=!0;for(var t=l.length;t;){for(n=l,l=[];++c<t;)n&&n[c].run();c=-1,t=l.length}n=null,s=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];l.push(new p(e,t)),1!==l.length||s||a(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},o={};function u(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}},i=!0;try{n[e](r,r.exports,u),i=!1}finally{i&&delete o[e]}return r.exports}u.ab="/ROOT/node_modules/next/dist/compiled/process/",t.exports=u(229)},47167,(e,t,r)=>{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(35451)},55682,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},45689,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},43476,(e,t,r)=>{"use strict";t.exports=e.r(45689)},50740,(e,t,r)=>{"use strict";var n=e.i(47167),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),c=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),b=Symbol.for("react.view_transition"),g=Symbol.iterator,_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,m={};function x(e,t,r){this.props=e,this.context=t,this.refs=m,this.updater=r||_}function j(){}function S(e,t,r){this.props=e,this.context=t,this.refs=m,this.updater=r||_}x.prototype.isReactComponent={},x.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},x.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},j.prototype=x.prototype;var O=S.prototype=new j;O.constructor=S,v(O,x.prototype),O.isPureReactComponent=!0;var E=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},R=Object.prototype.hasOwnProperty;function P(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function A(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var M=/\/+/g;function C(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function k(e,t,r){if(null==e)return e;var n=[],i=0;return!function e(t,r,n,i,a){var l,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,i,a)}}if(d)return a=a(t),d=""===i?"."+C(t,0):i,E(a)?(n="",null!=d&&(n=d.replace(M,"$&/")+"/"),e(a,r,n,"",function(e){return e})):null!=a&&(A(a)&&(l=a,s=n+(null==a.key||t&&t.key===a.key?"":(""+a.key).replace(M,"$&/")+"/")+d,a=P(l.type,s,l.props)),r.push(a)),1;d=0;var p=""===i?".":i+":";if(E(t))for(var h=0;h<t.length;h++)f=p+C(i=t[h],h),d+=e(i,r,n,f,a);else if("function"==typeof(h=null===(c=t)||"object"!=typeof c?null:"function"==typeof(c=g&&c[g]||c["@@iterator"])?c:null))for(t=h.call(t),h=0;!(i=t.next()).done;)f=p+C(i=i.value,h++),d+=e(i,r,n,f,a);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(w,w):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,i,a);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,i++)}),n}function H(e){if(-1===e._status){var t=(0,e._result)();t.then(function(r){(0===e._status||-1===e._status)&&(e._status=1,e._result=r,void 0===t.status&&(t.status="fulfilled",t.value=r))},function(r){(0===e._status||-1===e._status)&&(e._status=2,e._result=r,void 0===t.status&&(t.status="rejected",t.reason=r))}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var U="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function N(e){var t=T.T,r={};r.types=null!==t?t.types:null,T.T=r;try{var n=e(),o=T.S;null!==o&&o(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(w,U)}catch(e){U(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),T.T=t}}function I(e){var t=T.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else N(I.bind(null,e))}r.Activity=h,r.Children={map:k,forEach:function(e,t,r){k(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return k(e,function(){t++}),t},toArray:function(e){return k(e,function(e){return e})||[]},only:function(e){if(!A(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=x,r.Fragment=i,r.Profiler=l,r.PureComponent=S,r.StrictMode=a,r.Suspense=d,r.ViewTransition=b,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},r.addTransitionType=I,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=v({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)R.call(t,u)&&"key"!==u&&"__self"!==u&&"__source"!==u&&("ref"!==u||void 0!==t.ref)&&(n[u]=t[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var i=Array(u),a=0;a<u;a++)i[a]=arguments[a+2];n.children=i}return P(e.type,o,n)},r.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:s,_context:e},e},r.createElement=function(e,t,r){var n,o={},u=null;if(null!=t)for(n in void 0!==t.key&&(u=""+t.key),t)R.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(o[n]=t[n]);var i=arguments.length-2;if(1===i)o.children=r;else if(1<i){for(var a=Array(i),l=0;l<i;l++)a[l]=arguments[l+2];o.children=a}if(e&&e.defaultProps)for(n in i=e.defaultProps)void 0===o[n]&&(o[n]=i[n]);return P(e,u,o)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=A,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:H}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=N,r.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},r.use=function(e){return T.H.use(e)},r.useActionState=function(e,t,r){return T.H.useActionState(e,t,r)},r.useCallback=function(e,t){return T.H.useCallback(e,t)},r.useContext=function(e){return T.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return T.H.useEffect(e,t)},r.useEffectEvent=function(e){return T.H.useEffectEvent(e)},r.useId=function(){return T.H.useId()},r.useImperativeHandle=function(e,t,r){return T.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return T.H.useMemo(e,t)},r.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return T.H.useReducer(e,t,r)},r.useRef=function(e){return T.H.useRef(e)},r.useState=function(e){return T.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return T.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return T.H.useTransition()},r.version="19.3.0-canary-3f0b9e61-20260317"},71645,(e,t,r)=>{"use strict";t.exports=e.r(50740)},90317,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return l},createSnapshot:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class i{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let a="u">typeof globalThis&&globalThis.AsyncLocalStorage;function l(){return a?new a:new i}function s(e){return a?a.bind(e):i.bind(e)}function c(){return a?a.snapshot():function(e,...t){return e(...t)}}},42344,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(42344)},12354,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"handleISRError",{enumerable:!0,get:function(){return o}});let n="u"<typeof window?e.r(63599).workAsyncStorage:void 0;function o({error:e}){if(n){let t=n.getStore();if(t?.isStaticGeneration)throw e&&console.error(e),e}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90373,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=e.r(71645),o=e.r(61994);function u(){return!function(){if("u"<typeof window){let{workUnitAsyncStorage:t}=e.r(62141),r=t.getStore();if(!r)return!1;switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"validation-client":let n=r.fallbackRouteParams;return!!n&&n.size>0}}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78377,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={handleHardNavError:function(){return i},useNavFailureHandler:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(71645);let u=e.r(51191);function i(e){return!!(e&&"u">typeof window)&&!!window.next.__pendingUrl&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==(0,u.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function a(){}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},72383,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return y}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(43476),a=u._(e.r(71645)),l=e.r(90373),s=e.r(65713);e.r(78377);let c=e.r(12354),f=e.r(82604),d=e.r(8372),p="u">typeof window&&(0,f.isBot)(window.navigator.userAgent);class y extends a.default.Component{static{this.contextType=d.AppRouterContext}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.unstable_retry=()=>{(0,a.startTransition)(()=>{this.context?.refresh(),this.reset()})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,s.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error&&!p?((0,c.handleISRError)({error:this.state.error}),(0,i.jsxs)(i.Fragment,{children:[this.props.errorStyles,this.props.errorScripts,(0,i.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset,unstable_retry:this.unstable_retry})]})):this.props.children}}function h({errorComponent:e,errorStyles:t,errorScripts:r,children:n}){let o=(0,l.useUntrackedPathname)();return e?(0,i.jsx)(y,{pathname:o,errorComponent:e,errorStyles:t,errorScripts:r,children:n}):(0,i.jsx)(i.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},58442,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return d}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(43476),a=u._(e.r(71645)),l=e.r(76562),s=e.r(24063),c=e.r(68391);function f({redirect:e,reset:t,redirectType:r}){let n=(0,l.useRouter)();return(0,a.useEffect)(()=>{a.default.startTransition(()=>{"push"===r?n.push(e,{}):n.replace(e,{}),t()})},[e,r,t,n]),null}class d extends a.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,c.isRedirectError)(e)){let t=(0,s.getURLFromRedirectError)(e),r=(0,s.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:t,redirectType:r}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,i.jsx)(f,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let t=(0,l.useRouter)();return(0,i.jsx)(d,{router:t,children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},70725,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=e.r(13258);function o(e,t=!1){return Array.isArray(e)?`${e[0]}|${e[1]}|${e[2]}`:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1244,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={MetadataBoundary:function(){return a},OutletBoundary:function(){return s},RootLayoutBoundary:function(){return c},ViewportBoundary:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(54839),i={[u.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[u.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[u.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[u.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},a=i[u.METADATA_BOUNDARY_NAME.slice(0)],l=i[u.VIEWPORT_BOUNDARY_NAME.slice(0)],s=i[u.OUTLET_BOUNDARY_NAME.slice(0)],c=i[u.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]},18576,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={WarningIcon:function(){return l},errorStyles:function(){return i},errorThemeCss:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(55682);let u=e.r(43476);e.r(71645);let i={container:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",display:"flex",alignItems:"center",justifyContent:"center"},card:{marginTop:"-32px",maxWidth:"325px",padding:"32px 28px",textAlign:"left"},icon:{marginBottom:"24px"},title:{fontSize:"24px",fontWeight:500,letterSpacing:"-0.02em",lineHeight:"32px",margin:"0 0 12px 0",color:"var(--next-error-title)"},message:{fontSize:"14px",fontWeight:400,lineHeight:"21px",margin:"0 0 20px 0",color:"var(--next-error-message)"},form:{margin:0},buttonGroup:{display:"flex",gap:"8px",alignItems:"center"},button:{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)"},buttonSecondary:{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-secondary-text)",background:"var(--next-error-btn-secondary-bg)",border:"var(--next-error-btn-secondary-border)"},digestFooter:{position:"fixed",bottom:"32px",left:"0",right:"0",textAlign:"center",fontFamily:'ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace',fontSize:"12px",lineHeight:"18px",fontWeight:400,margin:"0",color:"var(--next-error-digest)"}},a=`
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,35451,(e,t,r)=>{var n={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var l=[],s=!1,c=-1;function f(){s&&n&&(s=!1,n.length?l=n.concat(l):c=-1,l.length&&d())}function d(){if(!s){var e=a(f);s=!0;for(var t=l.length;t;){for(n=l,l=[];++c<t;)n&&n[c].run();c=-1,t=l.length}n=null,s=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];l.push(new p(e,t)),1!==l.length||s||a(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},o={};function u(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}},i=!0;try{n[e](r,r.exports,u),i=!1}finally{i&&delete o[e]}return r.exports}u.ab="/ROOT/node_modules/next/dist/compiled/process/",t.exports=u(229)},47167,(e,t,r)=>{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(35451)},45689,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},43476,(e,t,r)=>{"use strict";t.exports=e.r(45689)},50740,(e,t,r)=>{"use strict";var n=e.i(47167),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),c=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),b=Symbol.for("react.view_transition"),g=Symbol.iterator,_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,m={};function x(e,t,r){this.props=e,this.context=t,this.refs=m,this.updater=r||_}function j(){}function S(e,t,r){this.props=e,this.context=t,this.refs=m,this.updater=r||_}x.prototype.isReactComponent={},x.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},x.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},j.prototype=x.prototype;var O=S.prototype=new j;O.constructor=S,v(O,x.prototype),O.isPureReactComponent=!0;var E=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},R=Object.prototype.hasOwnProperty;function P(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function M(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var A=/\/+/g;function C(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function k(e,t,r){if(null==e)return e;var n=[],i=0;return!function e(t,r,n,i,a){var l,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,i,a)}}if(d)return a=a(t),d=""===i?"."+C(t,0):i,E(a)?(n="",null!=d&&(n=d.replace(A,"$&/")+"/"),e(a,r,n,"",function(e){return e})):null!=a&&(M(a)&&(l=a,s=n+(null==a.key||t&&t.key===a.key?"":(""+a.key).replace(A,"$&/")+"/")+d,a=P(l.type,s,l.props)),r.push(a)),1;d=0;var p=""===i?".":i+":";if(E(t))for(var h=0;h<t.length;h++)f=p+C(i=t[h],h),d+=e(i,r,n,f,a);else if("function"==typeof(h=null===(c=t)||"object"!=typeof c?null:"function"==typeof(c=g&&c[g]||c["@@iterator"])?c:null))for(t=h.call(t),h=0;!(i=t.next()).done;)f=p+C(i=i.value,h++),d+=e(i,r,n,f,a);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(w,w):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,i,a);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,i++)}),n}function H(e){if(-1===e._status){var t=(0,e._result)();t.then(function(r){(0===e._status||-1===e._status)&&(e._status=1,e._result=r,void 0===t.status&&(t.status="fulfilled",t.value=r))},function(r){(0===e._status||-1===e._status)&&(e._status=2,e._result=r,void 0===t.status&&(t.status="rejected",t.reason=r))}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var U="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function N(e){var t=T.T,r={};r.types=null!==t?t.types:null,T.T=r;try{var n=e(),o=T.S;null!==o&&o(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(w,U)}catch(e){U(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),T.T=t}}function I(e){var t=T.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else N(I.bind(null,e))}r.Activity=h,r.Children={map:k,forEach:function(e,t,r){k(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return k(e,function(){t++}),t},toArray:function(e){return k(e,function(e){return e})||[]},only:function(e){if(!M(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=x,r.Fragment=i,r.Profiler=l,r.PureComponent=S,r.StrictMode=a,r.Suspense=d,r.ViewTransition=b,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},r.addTransitionType=I,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=v({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)R.call(t,u)&&"key"!==u&&"__self"!==u&&"__source"!==u&&("ref"!==u||void 0!==t.ref)&&(n[u]=t[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var i=Array(u),a=0;a<u;a++)i[a]=arguments[a+2];n.children=i}return P(e.type,o,n)},r.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:s,_context:e},e},r.createElement=function(e,t,r){var n,o={},u=null;if(null!=t)for(n in void 0!==t.key&&(u=""+t.key),t)R.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(o[n]=t[n]);var i=arguments.length-2;if(1===i)o.children=r;else if(1<i){for(var a=Array(i),l=0;l<i;l++)a[l]=arguments[l+2];o.children=a}if(e&&e.defaultProps)for(n in i=e.defaultProps)void 0===o[n]&&(o[n]=i[n]);return P(e,u,o)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=M,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:H}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=N,r.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},r.use=function(e){return T.H.use(e)},r.useActionState=function(e,t,r){return T.H.useActionState(e,t,r)},r.useCallback=function(e,t){return T.H.useCallback(e,t)},r.useContext=function(e){return T.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return T.H.useEffect(e,t)},r.useEffectEvent=function(e){return T.H.useEffectEvent(e)},r.useId=function(){return T.H.useId()},r.useImperativeHandle=function(e,t,r){return T.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return T.H.useMemo(e,t)},r.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return T.H.useReducer(e,t,r)},r.useRef=function(e){return T.H.useRef(e)},r.useState=function(e){return T.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return T.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return T.H.useTransition()},r.version="19.3.0-canary-3f0b9e61-20260317"},71645,(e,t,r)=>{"use strict";t.exports=e.r(50740)},55682,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},90317,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return l},createSnapshot:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class i{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let a="u">typeof globalThis&&globalThis.AsyncLocalStorage;function l(){return a?new a:new i}function s(e){return a?a.bind(e):i.bind(e)}function c(){return a?a.snapshot():function(e,...t){return e(...t)}}},42344,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(42344)},12354,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"handleISRError",{enumerable:!0,get:function(){return o}});let n="u"<typeof window?e.r(63599).workAsyncStorage:void 0;function o({error:e}){if(n){let t=n.getStore();if(t?.isStaticGeneration)throw e&&console.error(e),e}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90373,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=e.r(71645),o=e.r(61994);function u(){return!function(){if("u"<typeof window){let{workUnitAsyncStorage:t}=e.r(62141),r=t.getStore();if(!r)return!1;switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"validation-client":let n=r.fallbackRouteParams;return!!n&&n.size>0}}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78377,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={handleHardNavError:function(){return i},useNavFailureHandler:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(71645);let u=e.r(51191);function i(e){return!!(e&&"u">typeof window)&&!!window.next.__pendingUrl&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==(0,u.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function a(){}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},72383,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return y}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(43476),a=u._(e.r(71645)),l=e.r(90373),s=e.r(65713);e.r(78377);let c=e.r(12354),f=e.r(82604),d=e.r(8372),p="u">typeof window&&(0,f.isBot)(window.navigator.userAgent);class y extends a.default.Component{static{this.contextType=d.AppRouterContext}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.unstable_retry=()=>{(0,a.startTransition)(()=>{this.context?.refresh(),this.reset()})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,s.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error&&!p?((0,c.handleISRError)({error:this.state.error}),(0,i.jsxs)(i.Fragment,{children:[this.props.errorStyles,this.props.errorScripts,(0,i.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset,unstable_retry:this.unstable_retry})]})):this.props.children}}function h({errorComponent:e,errorStyles:t,errorScripts:r,children:n}){let o=(0,l.useUntrackedPathname)();return e?(0,i.jsx)(y,{pathname:o,errorComponent:e,errorStyles:t,errorScripts:r,children:n}):(0,i.jsx)(i.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},58442,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return d}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(43476),a=u._(e.r(71645)),l=e.r(76562),s=e.r(24063),c=e.r(68391);function f({redirect:e,reset:t,redirectType:r}){let n=(0,l.useRouter)();return(0,a.useEffect)(()=>{a.default.startTransition(()=>{"push"===r?n.push(e,{}):n.replace(e,{}),t()})},[e,r,t,n]),null}class d extends a.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,c.isRedirectError)(e)){let t=(0,s.getURLFromRedirectError)(e),r=(0,s.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:t,redirectType:r}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,i.jsx)(f,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let t=(0,l.useRouter)();return(0,i.jsx)(d,{router:t,children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},70725,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=e.r(13258);function o(e,t=!1){return Array.isArray(e)?`${e[0]}|${e[1]}|${e[2]}`:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1244,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={MetadataBoundary:function(){return a},OutletBoundary:function(){return s},RootLayoutBoundary:function(){return c},ViewportBoundary:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(54839),i={[u.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[u.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[u.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[u.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},a=i[u.METADATA_BOUNDARY_NAME.slice(0)],l=i[u.VIEWPORT_BOUNDARY_NAME.slice(0)],s=i[u.OUTLET_BOUNDARY_NAME.slice(0)],c=i[u.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]},42732,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=e.r(55682)._(e.r(71645)).default.createContext({})},18576,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={WarningIcon:function(){return l},errorStyles:function(){return i},errorThemeCss:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(55682);let u=e.r(43476);e.r(71645);let i={container:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",display:"flex",alignItems:"center",justifyContent:"center"},card:{marginTop:"-32px",maxWidth:"325px",padding:"32px 28px",textAlign:"left"},icon:{marginBottom:"24px"},title:{fontSize:"24px",fontWeight:500,letterSpacing:"-0.02em",lineHeight:"32px",margin:"0 0 12px 0",color:"var(--next-error-title)"},message:{fontSize:"14px",fontWeight:400,lineHeight:"21px",margin:"0 0 20px 0",color:"var(--next-error-message)"},form:{margin:0},buttonGroup:{display:"flex",gap:"8px",alignItems:"center"},button:{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)"},buttonSecondary:{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-secondary-text)",background:"var(--next-error-btn-secondary-bg)",border:"var(--next-error-btn-secondary-border)"},digestFooter:{position:"fixed",bottom:"32px",left:"0",right:"0",textAlign:"center",fontFamily:'ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace',fontSize:"12px",lineHeight:"18px",fontWeight:400,margin:"0",color:"var(--next-error-digest)"}},a=`
|
|
2
2
|
:root {
|
|
3
3
|
--next-error-bg: #fff;
|
|
4
4
|
--next-error-text: #171717;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,28554,e=>{"use strict";var t=e.i(43476),s=e.i(71645),n=e.i(84167);function a(e){return"claude-code"===e?"Claude":"codex"===e?"Codex":"cursor"===e?"Cursor":e}function l(e){if(null==e)return"--";let t=Math.max(0,Math.min(100,e));return`${t>=100?100:Math.floor(t)}%`}e.s(["FloatingWidget",0,function({initialStats:e}){let i,r=(0,n.useT)(),[c,o]=(0,s.useState)(e),[d,x]=(0,s.useState)(!0),[m,u]=(0,s.useState)(!1),h=c.primary,p=h?.remaining5h??h?.remainingWeekly??null,f=h?.used5h??h?.usedWeekly??0,b=null==(i=h?.remaining5h??h?.remainingWeekly??null)?"#71717a":i<20?"#f43f5e":i<45?"#f59e0b":"#10b981",g=(0,s.useMemo)(()=>{let e=Math.max(0,Math.min(100,f));return`conic-gradient(${b} 0 ${100-e}%, #27272a ${100-e}% 100%)`},[b,f]);async function j(){let e=await fetch("/api/float",{cache:"no-store"});e.ok&&o(await e.json())}async function z(){u(!0);try{await fetch("/api/import-sessions",{method:"POST"}),await j()}finally{u(!1)}}return(0,s.useEffect)(()=>{window.resizeTo?.(260,d?380:220);let e=window.setInterval(j,6e4);return()=>window.clearInterval(e)},[d]),(0,t.jsx)("main",{className:"min-h-screen overflow-hidden bg-zinc-950 text-zinc-100",children:(0,t.jsxs)("div",{className:"mx-auto flex min-h-screen w-full max-w-[280px] flex-col items-center justify-center gap-3 px-4 py-4 font-mono",children:[(0,t.jsx)("button",{type:"button","aria-label":"Toggle details",onClick:()=>x(e=>!e),className:"relative grid size-40 place-items-center rounded-full border border-zinc-800 bg-zinc-950 shadow-2xl shadow-black/60 outline-none transition-transform hover:scale-[1.02]",style:{background:g},children:(0,t.jsx)("span",{className:"grid size-[8.75rem] place-items-center rounded-full border border-zinc-800 bg-zinc-950",children:(0,t.jsxs)("span",{className:"text-center",children:[(0,t.jsx)("span",{className:"block text-[11px] uppercase tracking-[0.18em] text-zinc-500",children:h?.label??"Vibemeter"}),(0,t.jsx)("span",{className:"mt-1 block text-4xl font-semibold text-zinc-50",children:l(p)}),(0,t.jsx)("span",{className:"mt-1 block text-[11px] text-zinc-500",children:r(h?"float.fiveHRemain":"float.noQuota")})]})})}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:z,disabled:m,className:"rounded-full border border-violet-500/40 bg-violet-500/10 px-3 py-1.5 text-xs text-violet-100 transition-colors hover:bg-violet-500/20 disabled:opacity-50",children:r(m?"float.refreshing":"float.refresh")}),(0,t.jsx)("a",{href:"/",target:"_blank",className:"rounded-full border border-zinc-700 px-3 py-1.5 text-xs text-zinc-300 transition-colors hover:border-zinc-500 hover:text-zinc-100",children:r("common.dashboard")})]}),d&&(0,t.jsxs)("section",{className:"w-full rounded-lg border border-zinc-800 bg-zinc-900/90 p-3",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"truncate text-xs text-zinc-500",children:h?.accountLabel??r("float.currentQuota")}),(0,t.jsx)("p",{className:"mt-1 text-sm font-medium text-zinc-100",children:h?r("float.usedPct",{pct:function(e){if(null==e)return"--";let t=Math.max(0,Math.min(100,e));return`${t<=0?0:Math.ceil(t)}%`}(h.used5h)}):r("float.usedNo")})]}),(0,t.jsxs)("div",{className:"text-right text-xs text-zinc-500",children:[(0,t.jsx)("p",{children:function(e,t){if(!e)return t("float.unknownReset");let s=e-Date.now();if(s<=0)return t("float.snapshotExpired");let n=Math.floor(s/36e5),a=Math.floor(s%36e5/6e4);return n>0?`${n}h ${a}m`:`${a}m`}(h?.resetAt5h??null,r)}),(0,t.jsx)("p",{className:"mt-1",children:function(e,t){if(!e)return t("float.noSnapshot");let s=Math.floor(Math.max(0,Date.now()-e)/6e4);return s<1?t("float.justNow"):s<60?t("float.minAgo",{n:s}):t("float.hourAgo",{n:Math.floor(s/60)})}(h?.capturedAt??null,r)})]})]}),(0,t.jsxs)("div",{className:"mt-3 grid grid-cols-3 gap-2",children:[(0,t.jsxs)("div",{className:"rounded-md border border-zinc-800 bg-zinc-950 px-2 py-2",children:[(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-zinc-600",children:r("float.statToday")}),(0,t.jsx)("p",{className:"mt-1 text-lg font-semibold text-zinc-100",children:c.todaySessions})]}),(0,t.jsxs)("div",{className:"rounded-md border border-zinc-800 bg-zinc-950 px-2 py-2",children:[(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-zinc-600",children:r("float.statTotal")}),(0,t.jsx)("p",{className:"mt-1 text-lg font-semibold text-zinc-100",children:c.totalSessions})]}),(0,t.jsxs)("div",{className:"rounded-md border border-zinc-800 bg-zinc-950 px-2 py-2",children:[(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-zinc-600",children:r("float.statWeekly")}),(0,t.jsx)("p",{className:"mt-1 text-lg font-semibold text-zinc-100",children:l(h?.remainingWeekly)})]})]}),(0,t.jsxs)("div",{className:"mt-3 space-y-2",children:[c.todayByTool.slice(0,3).map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"text-zinc-500",children:a(e.tool)}),(0,t.jsx)("span",{className:"text-zinc-300",children:e.count})]},e.tool)),0===c.todayByTool.length&&(0,t.jsx)("p",{className:"text-xs text-zinc-600",children:r("float.noToday")})]}),c.lastSession&&(0,t.jsxs)("div",{className:"mt-3 border-t border-zinc-800 pt-3",children:[(0,t.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-zinc-600",children:r("float.latest")}),(0,t.jsxs)("p",{className:"mt-1 truncate text-xs text-zinc-300",children:[a(c.lastSession.tool)," · ",c.lastSession.project]}),c.lastSession.title&&(0,t.jsx)("p",{className:"mt-1 line-clamp-2 text-xs text-zinc-500",children:c.lastSession.title})]})]})]})})}])}]);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,58116,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(22016),a=e.i(18566),n=e.i(84167);let i=["blocked","poc","spike","review","done"];function l(e){return e?e.split("/").filter(Boolean).pop()??e:"—"}function d({tool:e}){return"codex"===e?(0,t.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded bg-emerald-900/40 text-emerald-400 border border-emerald-800/50",children:"codex"}):"cursor"===e?(0,t.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded bg-sky-900/40 text-sky-400 border border-sky-800/50",children:"cursor"}):(0,t.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded bg-violet-900/40 text-violet-400 border border-violet-800/50",children:"claude"})}function c({label:e,onRemove:s}){let r={blocked:"bg-red-900/40 text-red-400 border-red-800/50",poc:"bg-yellow-900/40 text-yellow-400 border-yellow-800/50",spike:"bg-orange-900/40 text-orange-400 border-orange-800/50",review:"bg-blue-900/40 text-blue-400 border-blue-800/50",done:"bg-zinc-700/40 text-zinc-400 border-zinc-600/50"}[e]??"bg-zinc-800/40 text-zinc-400 border-zinc-700/50";return(0,t.jsxs)("span",{className:`inline-flex items-center gap-1 text-xs px-1.5 py-0.5 rounded border ${r}`,children:[e,s&&(0,t.jsx)("button",{onClick:s,className:"hover:text-white leading-none",children:"×"})]})}function o({sessions:e}){let r=(0,n.useT)(),[a,x]=(0,s.useState)(""),[u,m]=(0,s.useState)({}),[h,p]=(0,s.useState)({}),[g,f]=(0,s.useState)(null),b=(0,s.useMemo)(()=>{let t=a.toLowerCase();return t?e.filter(e=>l(e.cwd).toLowerCase().includes(t)||(e.ai_title??"").toLowerCase().includes(t)||(e.summary??"").toLowerCase().includes(t)):e},[e,a]);async function j(e,t){m(s=>({...s,[e]:t})),await fetch(`/api/sessions/${e}/tags`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({tags:t})})}function v(e){return u[e.id]??function(e){try{return e?JSON.parse(e):[]}catch{return[]}}(e.tags)}function y(e,t){let s=t.trim().toLowerCase().replace(/\s+/g,"-");if(!s)return;let r=v(e);r.includes(s)||(j(e.id,[...r,s]),p(t=>({...t,[e.id]:""})))}return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-b border-zinc-800 gap-4",children:[(0,t.jsx)("h2",{className:"text-sm font-medium text-zinc-300 shrink-0",children:r("card.sessions.recent")}),(0,t.jsx)("input",{type:"text",placeholder:r("card.sessions.search"),value:a,onChange:e=>x(e.target.value),className:"flex-1 max-w-xs bg-zinc-800 border border-zinc-700 rounded px-3 py-1 text-xs text-zinc-200 placeholder-zinc-600 focus:outline-none focus:border-zinc-500"}),(0,t.jsx)("span",{className:"text-xs text-zinc-500 shrink-0",children:r("card.sessions.activeCount",{active:e.filter(e=>!e.ended_at).length,shown:b.length,total:e.length})})]}),0===b.length?(0,t.jsx)("p",{className:"px-5 py-8 text-zinc-600 text-sm text-center",children:r("card.sessions.noMatch")}):(0,t.jsxs)("table",{className:"w-full text-sm",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"text-xs text-zinc-500 border-b border-zinc-800",children:[(0,t.jsx)("th",{className:"px-4 py-2 text-left font-normal",children:r("card.sessions.started")}),(0,t.jsx)("th",{className:"px-4 py-2 text-left font-normal",children:r("card.sessions.tool")}),(0,t.jsx)("th",{className:"px-4 py-2 text-left font-normal",children:r("card.sessions.project")}),(0,t.jsx)("th",{className:"px-4 py-2 text-left font-normal",children:r("card.sessions.duration")}),(0,t.jsx)("th",{className:"px-4 py-2 text-left font-normal",children:r("card.sessions.status")}),(0,t.jsx)("th",{className:"px-4 py-2 text-left font-normal",children:r("card.sessions.tags")})]})}),(0,t.jsx)("tbody",{children:b.map(e=>{let a=!e.ended_at,n=v(e),o=g===e.id;return(0,t.jsx)(s.default.Fragment,{children:(0,t.jsxs)("tr",{className:"border-b border-zinc-800/40 hover:bg-zinc-800/20 transition-colors",children:[(0,t.jsx)("td",{className:"px-4 py-2 text-zinc-500 tabular-nums whitespace-nowrap text-xs",children:new Date(e.started_at).toLocaleString(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}),(0,t.jsx)("td",{className:"px-4 py-2",children:(0,t.jsx)(d,{tool:e.tool})}),(0,t.jsxs)("td",{className:"px-4 py-2 max-w-xs",children:[(0,t.jsx)("div",{className:"text-zinc-200 text-xs font-medium",children:l(e.cwd)}),e.ai_title&&(0,t.jsx)("div",{className:"text-zinc-500 text-xs truncate",children:e.ai_title}),!e.ai_title&&e.summary&&(0,t.jsx)("div",{className:"text-zinc-600 text-xs truncate",children:e.summary})]}),(0,t.jsx)("td",{className:"px-4 py-2 text-zinc-500 tabular-nums text-xs",children:function(e,t,s){if(!t)return s;let r=Math.round((t-e)/6e4);return r<60?`${r}m`:`${Math.floor(r/60)}h ${r%60}m`}(e.started_at,e.ended_at??null,r("card.sessions.active"))}),(0,t.jsx)("td",{className:"px-4 py-2",children:a?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 text-emerald-400 text-xs",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse inline-block"}),r("card.sessions.active")]}):(0,t.jsx)("span",{className:"text-zinc-700 text-xs",children:r("card.sessions.done")})}),(0,t.jsx)("td",{className:"px-4 py-2",children:(0,t.jsxs)("div",{className:"flex flex-wrap gap-1 items-center",children:[n.map(s=>(0,t.jsx)(c,{label:s,onRemove:()=>{j(e.id,v(e).filter(e=>e!==s))}},s)),o?(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("input",{autoFocus:!0,value:h[e.id]??"",onChange:t=>p(s=>({...s,[e.id]:t.target.value})),onKeyDown:t=>{"Enter"===t.key&&y(e,h[e.id]??""),"Escape"===t.key&&f(null)},placeholder:r("card.sessions.tagPlaceholder"),className:"w-16 bg-zinc-800 border border-zinc-600 rounded px-1 py-0.5 text-xs text-zinc-200 focus:outline-none"}),(0,t.jsx)("div",{className:"flex gap-1",children:i.filter(e=>!n.includes(e)).slice(0,3).map(s=>(0,t.jsx)("button",{onClick:()=>y(e,s),className:"text-xs text-zinc-500 hover:text-zinc-300 px-1 py-0.5 rounded border border-zinc-700",children:s},s))}),(0,t.jsx)("button",{onClick:()=>f(null),className:"text-zinc-600 hover:text-zinc-400 text-xs",children:"✕"})]}):(0,t.jsx)("button",{onClick:()=>f(e.id),className:"text-zinc-700 hover:text-zinc-400 text-xs leading-none",children:"+"})]})})]})},e.id)})})]})]})}let x={"claude-code":"bg-violet-500",codex:"bg-emerald-500",cursor:"bg-sky-500",other:"bg-zinc-500"};function u({data:e}){let s=(0,n.useT)(),r=e.reduce((e,t)=>e+t.sessions,0);return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:s("card.toolSplit.title")}),0===e.length?(0,t.jsx)("p",{className:"text-zinc-600 text-sm",children:s("common.empty")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex h-2 rounded overflow-hidden gap-0.5 mb-3",children:e.map(e=>(0,t.jsx)("div",{className:`${x[e.tool]??"bg-zinc-500"} rounded-sm`,style:{width:`${e.pct}%`}},e.tool))}),(0,t.jsx)("div",{className:"space-y-1.5",children:e.map(e=>{let r;return(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:`w-2 h-2 rounded-sm inline-block ${x[e.tool]??"bg-zinc-500"}`}),(0,t.jsx)("span",{className:"text-zinc-300",children:"claude-code"===e.tool?"claude code":e.tool})]}),(0,t.jsxs)("span",{className:"text-zinc-500 tabular-nums",children:[e.sessions," ",s("card.toolSplit.sessions")," · ",(r=e.totalMs/36e5)<1?`${Math.round(60*r)}m`:`${r.toFixed(1)}h`," · ",e.pct,"%"]})]},e.tool)})}),(0,t.jsx)("p",{className:"text-xs text-zinc-600 mt-2",children:s("card.toolSplit.totalSessions",{n:r})})]})]})}function m(e){return e.map(e=>`${e.x.toFixed(1)},${e.y.toFixed(1)}`).join(" ")}function h(e){let t=new Date(e),s=new Date,r=t.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1});return t.toDateString()===s.toDateString()?r:`${(t.getMonth()+1).toString().padStart(2,"0")}/${t.getDate().toString().padStart(2,"0")} ${r}`}function p({data:e,label:r="claude code"}){let a=(0,n.useT)(),i=(0,s.useRef)(null),[l,d]=(0,s.useState)(null),c=e.length>=2?e[0].ts:0,o=e.length>=2?e[e.length-1].ts:1,x=o-c||1,u=e=>32+(e-c)/x*520,g=e=>null==e?null:4+(1-e/100)*112,f=(0,s.useCallback)(t=>{if(!i.current||e.length<2)return;let s=i.current.getBoundingClientRect(),r=32+520*Math.max(0,Math.min(1,(t.clientX-s.left)/s.width)),a=e[0],n=1/0;for(let t of e){let e=Math.abs(u(t.ts)-r);e<n&&(n=e,a=t)}d({svgX:u(a.ts),screenX:t.clientX,screenY:s.top,point:a})},[e,c,x]);if(e.length<2)return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-2",children:a("card.burndown.header",{label:r})}),(0,t.jsx)("p",{className:"text-zinc-600 text-sm",children:a("card.burndown.notEnough")})]});let b=e.filter(e=>null!=e.pct5h).map(e=>({x:u(e.ts),y:g(e.pct5h)})),j=e.filter(e=>null!=e.pctWeekly).map(e=>({x:u(e.ts),y:g(e.pctWeekly)})),v=e.filter(e=>null!=e.pct5h).at(-1)?.pct5h,y=e.filter(e=>null!=e.pctWeekly).at(-1)?.pctWeekly;return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5 relative",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:a("card.burndown.header",{label:r})}),(0,t.jsxs)("svg",{ref:i,viewBox:"0 0 560 120",className:"w-full h-28 cursor-crosshair",preserveAspectRatio:"none",onMouseMove:f,onMouseLeave:()=>d(null),children:[[0,25,50,75,100].map(e=>{let s=g(e);return(0,t.jsxs)("g",{children:[(0,t.jsx)("line",{x1:32,y1:s,x2:552,y2:s,stroke:"#27272a",strokeWidth:"1"}),(0,t.jsxs)("text",{x:29,y:s+3.5,textAnchor:"end",fontSize:"8",fill:"#52525b",children:[e,"%"]})]},e)}),b.length>=2&&(0,t.jsx)("polyline",{points:m(b),fill:"none",stroke:"#8b5cf6",strokeWidth:"1.5",strokeLinejoin:"round"}),j.length>=2&&(0,t.jsx)("polyline",{points:m(j),fill:"none",stroke:"#10b981",strokeWidth:"1.5",strokeLinejoin:"round",strokeDasharray:"4 2"}),l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("line",{x1:l.svgX,y1:4,x2:l.svgX,y2:116,stroke:"#52525b",strokeWidth:"1",strokeDasharray:"3 2"}),null!=l.point.pct5h&&(0,t.jsx)("circle",{cx:l.svgX,cy:g(l.point.pct5h),r:"2.5",fill:"#8b5cf6"}),null!=l.point.pctWeekly&&(0,t.jsx)("circle",{cx:l.svgX,cy:g(l.point.pctWeekly),r:"2.5",fill:"#10b981"})]})]}),l&&(0,t.jsxs)("div",{className:"pointer-events-none absolute z-10 bg-zinc-800 border border-zinc-700 rounded px-2 py-1.5 text-xs shadow-lg",style:{left:`${((l.svgX-32)/520*100).toFixed(1)}%`,transform:l.svgX>364?"translateX(-110%)":"translateX(4px)",top:"40px"},children:[(0,t.jsx)("p",{className:"text-zinc-400 mb-1",children:h(l.point.ts)}),null!=l.point.pct5h&&(0,t.jsxs)("p",{className:"text-violet-400",children:[a("card.burndown.legend5h"),": ",l.point.pct5h.toFixed(0),"% ",a("card.burndown.tipUsed")]}),null!=l.point.pctWeekly&&(0,t.jsxs)("p",{className:"text-emerald-400",children:[a("card.burndown.legend7d"),": ",l.point.pctWeekly.toFixed(0),"% ",a("card.burndown.tipUsed")]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between mt-1 text-xs text-zinc-600",children:[(0,t.jsx)("span",{children:h(c)}),(0,t.jsxs)("div",{className:"flex gap-4",children:[(0,t.jsxs)("span",{className:"text-violet-400",children:["— ",a("card.burndown.legend5h")," ",null!=v?`(${v.toFixed(0)}% ${a("card.burndown.tipUsed")})`:""]}),(0,t.jsxs)("span",{className:"text-emerald-400",children:["-- ",a("card.burndown.legend7d")," ",null!=y?`(${y.toFixed(0)}% ${a("card.burndown.tipUsed")})`:""]})]}),(0,t.jsx)("span",{children:h(o)})]})]})}function g({data:e}){let s=(0,n.useT)();if(0===e.length)return null;let r=e[0].changes;return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:s("card.hotspots.title")}),(0,t.jsx)("div",{className:"space-y-2",children:e.map(e=>{let a,n;return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs mb-0.5",children:[(0,t.jsxs)("span",{className:"text-zinc-300 truncate max-w-xs",title:e.path,children:[(0,t.jsxs)("span",{className:"text-zinc-600",children:[(a=e.path.split("/")).length>1?a.slice(-2,-1)[0]:"","/"]}),(n=e.path).split("/").pop()??n]}),(0,t.jsxs)("span",{className:"text-zinc-500 tabular-nums ml-2 shrink-0",children:[e.changes,"× · ",e.sessions," ",s("card.hotspots.sessions")]})]}),(0,t.jsx)("div",{className:"h-1 bg-zinc-800 rounded",children:(0,t.jsx)("div",{className:"h-1 bg-amber-500/60 rounded",style:{width:`${e.changes/r*100}%`}})})]},e.path)})})]})}function f(e){return e>=1e9?`${(e/1e9).toFixed(1)}B`:e>=1e6?`${(e/1e6).toFixed(0)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}function b({data:e,toolFilter:s}){let r=(0,n.useT)(),a="all"===s||"claude-code"===s,i="all"===s||"codex"===s,l=a?Math.max(...e.daily.map(e=>e.claudeUsd),.01):.01,d=i?Math.max(...e.daily.map(e=>e.codexTokens),1):1;return a||i?(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:r("card.spending.title")}),(0,t.jsxs)("div",{className:"flex gap-6 mb-4",children:[a&&(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-xl font-bold text-violet-400",children:["$",e.claudeTotalUsd.toFixed(2)]}),(0,t.jsx)("p",{className:"text-xs text-zinc-600 mt-0.5",children:r("card.spending.claudeCost")})]}),i&&(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xl font-bold text-emerald-400",children:f(e.codexTotalTokens)}),(0,t.jsx)("p",{className:"text-xs text-zinc-600 mt-0.5",children:r("card.spending.codexTokens")})]})]}),(0,t.jsx)("p",{className:"text-xs text-zinc-600 mb-2",children:r("card.spending.last14d")}),(0,t.jsx)("div",{className:"flex items-end gap-px h-16",children:e.daily.map(e=>{let s=a?e.claudeUsd/l*100:0,r=i?e.codexTokens/d*100:0,n=[e.date.slice(5),a?`Claude $${e.claudeUsd.toFixed(2)}`:"",i?`Codex ${f(e.codexTokens)} tokens`:""].filter(Boolean).join("\n");return(0,t.jsx)("div",{className:"flex-1 flex flex-col items-center",title:n,children:(0,t.jsxs)("div",{className:"w-full flex flex-col justify-end gap-px",style:{height:"56px"},children:[i&&e.codexTokens>0&&(0,t.jsx)("div",{className:"w-full bg-emerald-600/60 rounded-sm",style:{height:`${Math.max(.56*r,1)}px`}}),a&&e.claudeUsd>0&&(0,t.jsx)("div",{className:"w-full bg-violet-500/70 rounded-sm",style:{height:`${Math.max(.56*s,1)}px`}})]})},e.date)})}),(0,t.jsxs)("div",{className:"flex justify-between mt-1",children:[(0,t.jsx)("span",{className:"text-zinc-700 text-xs",children:e.daily[0]?.date.slice(5)}),(0,t.jsx)("span",{className:"text-zinc-700 text-xs",children:e.daily[e.daily.length-1]?.date.slice(5)})]}),(0,t.jsxs)("div",{className:"flex gap-4 mt-2",children:[a&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-xs text-zinc-600",children:[(0,t.jsx)("span",{className:"w-2 h-2 rounded-sm bg-violet-500/70 inline-block"})," ",r("card.spending.legendClaude")]}),i&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-xs text-zinc-600",children:[(0,t.jsx)("span",{className:"w-2 h-2 rounded-sm bg-emerald-600/60 inline-block"})," ",r("card.spending.legendCodex")]})]})]}):(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:r("card.spending.title")}),(0,t.jsx)("p",{className:"text-zinc-600 text-sm",children:r("card.spending.noCursor")})]})}let j=["card.activity.dayMon","card.activity.dayTue","card.activity.dayWed","card.activity.dayThu","card.activity.dayFri","card.activity.daySat","card.activity.daySun"];function v(e){return e<60?`${Math.round(e)}m`:`${(e/60).toFixed(1)}h`}function y(e){let t=new Date(e);return`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`}let w={"claude-code":"bg-violet-500/80 border-violet-400 text-violet-50",codex:"bg-emerald-600/80 border-emerald-400 text-emerald-50",cursor:"bg-sky-600/80 border-sky-400 text-sky-50"};function N({sessions:e,streak:r,timeline:a}){var i;let l=(0,n.useT)(),d=j.map(e=>l(e)),[c,o]=(0,s.useState)("pattern"),[x,u]=(0,s.useState)(null),m=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let s of e){let e=s.started_at,r=s.ended_at??Math.min(Date.now(),s.started_at+36e5),a=e,n=null;for(;a<r;){let e=new Date(a),s=(e.getDay()+6)%7,i=e.getHours(),l=`${s}-${i}`,d=new Date(e);d.setMinutes(0,0,0),d.setHours(e.getHours()+1);let c=(Math.min(d.getTime(),r)-a)/6e4,o=t.get(l)??{minutes:0,sessions:0};o.minutes+=c,null===n&&(o.sessions+=1,n=l),t.set(l,o),a=d.getTime()}}let s=[];for(let e=0;e<7;e++)for(let r=0;r<24;r++){let a=t.get(`${e}-${r}`)??{minutes:0,sessions:0};s.push({dow:e,hour:r,...a})}return s})(e),[e]),h=Math.max(...m.map(e=>e.minutes),1),p=m.reduce((e,t)=>e+t.minutes,0)/60,g=m.reduce((e,t)=>t.minutes>e.minutes?t:e,m[0]),f=new Date(a.dateLabel+"T00:00:00").getTime(),b=f+864e5,z=a.sessions.map(e=>({...e,_start:Math.max(e.startMs,f),_end:Math.min(e.endMs,b)})).filter(e=>e._end>e._start).sort((e,t)=>e._start-t._start),_=[];for(let e of z){let t=!1;for(let s of _)if(s[s.length-1]._end<=e._start){s.push(e),t=!0;break}t||_.push([e])}let M=Math.max(_.length,1),k=z.reduce((e,t)=>e+(t._end-t._start),0)/36e5;return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5 relative",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4 gap-4 flex-wrap",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider",children:l("card.activity.title")}),(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)("button",{onClick:()=>o("pattern"),className:`text-xs px-2.5 py-1 rounded border transition-colors ${"pattern"===c?"bg-zinc-700 border-zinc-500 text-zinc-100":"border-zinc-800 text-zinc-500 hover:text-zinc-300 hover:border-zinc-600"}`,children:l("card.activity.viewPattern")}),(0,t.jsx)("button",{onClick:()=>o("today"),className:`text-xs px-2.5 py-1 rounded border transition-colors ${"today"===c?"bg-zinc-700 border-zinc-500 text-zinc-100":"border-zinc-800 text-zinc-500 hover:text-zinc-300 hover:border-zinc-600"}`,children:l("card.activity.viewToday")})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4 text-xs",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-base font-bold text-zinc-100 tabular-nums",children:r.current}),(0,t.jsx)("span",{className:"text-zinc-500 ml-1",children:l("card.activity.dayStreak")})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-base font-bold text-zinc-300 tabular-nums",children:r.longest}),(0,t.jsx)("span",{className:"text-zinc-500 ml-1",children:l("card.activity.longest")})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-base font-bold text-zinc-300 tabular-nums",children:r.totalDays}),(0,t.jsx)("span",{className:"text-zinc-500 ml-1",children:l("card.activity.activeDays")})]}),(0,t.jsxs)("div",{className:"border-l border-zinc-800 pl-4",children:[(0,t.jsxs)("span",{className:"text-base font-bold text-violet-400 tabular-nums",children:[p.toFixed(0),"h"]}),(0,t.jsx)("span",{className:"text-zinc-500 ml-1",children:l("card.activity.total")})]})]})]}),"pattern"===c?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"text-xs text-zinc-600 mb-2",children:l("card.activity.peakSlotFmt",{day:d[g.dow],hour:g.hour.toString().padStart(2,"0"),mins:v(g.minutes)})}),(0,t.jsxs)("div",{className:"flex gap-1 text-xs",children:[(0,t.jsx)("div",{className:"w-8 shrink-0"}),(0,t.jsx)("div",{className:"flex-1 grid gap-px",style:{gridTemplateColumns:"repeat(24, minmax(0, 1fr))"},children:Array.from({length:24}).map((e,s)=>(0,t.jsx)("div",{className:`text-center text-[9px] text-zinc-600 ${s%3==0?"":"opacity-40"}`,children:s%3==0?s.toString().padStart(2,"0"):""},s))})]}),d.map((e,s)=>(0,t.jsxs)("div",{className:"flex gap-1 mt-px",children:[(0,t.jsx)("div",{className:"w-8 shrink-0 text-[10px] text-zinc-600 leading-4",children:e}),(0,t.jsx)("div",{className:"flex-1 grid gap-px",style:{gridTemplateColumns:"repeat(24, minmax(0, 1fr))"},children:Array.from({length:24}).map((r,a)=>{let n=m[24*s+a];return(0,t.jsx)("div",{className:`h-4 rounded-sm ${function(e,t){if(0===e)return"bg-zinc-900";let s=t>0?e/t:0;return s<.15?"bg-violet-900/40":s<.3?"bg-violet-800/60":s<.5?"bg-violet-700":s<.75?"bg-violet-600":"bg-violet-400"}(n.minutes,h)}`,title:`${e} ${a.toString().padStart(2,"0")}:00
|
|
2
|
+
${v(n.minutes)} \xb7 ${n.sessions} sessions`},a)})})]},e)),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-3 text-[10px] text-zinc-600",children:[(0,t.jsx)("span",{children:l("card.activity.less")}),(0,t.jsx)("span",{className:"w-3 h-3 rounded-sm bg-zinc-900 border border-zinc-800"}),(0,t.jsx)("span",{className:"w-3 h-3 rounded-sm bg-violet-900/40"}),(0,t.jsx)("span",{className:"w-3 h-3 rounded-sm bg-violet-800/60"}),(0,t.jsx)("span",{className:"w-3 h-3 rounded-sm bg-violet-700"}),(0,t.jsx)("span",{className:"w-3 h-3 rounded-sm bg-violet-600"}),(0,t.jsx)("span",{className:"w-3 h-3 rounded-sm bg-violet-400"}),(0,t.jsx)("span",{children:l("card.activity.more")})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"text-xs text-zinc-600 mb-2",children:l("card.activity.dayHeader",{date:a.dateLabel,n:z.length,hours:k.toFixed(1)})}),0===z.length?(0,t.jsx)("p",{className:"text-zinc-600 text-sm py-4",children:l("card.activity.noToday")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"relative h-4 mb-1",children:Array.from({length:25}).map((e,s)=>(0,t.jsx)("div",{className:"absolute top-0 text-[10px] text-zinc-600 tabular-nums",style:{left:`${s/24*100}%`,transform:"translateX(-50%)"},children:s%3==0?s.toString().padStart(2,"0"):""},s))}),(0,t.jsxs)("div",{className:"relative bg-zinc-950/50 rounded overflow-hidden",style:{height:`${32*M+4}px`},children:[Array.from({length:25}).map((e,s)=>(0,t.jsx)("div",{className:"absolute top-0 bottom-0 border-l border-zinc-800/40",style:{left:`${s/24*100}%`}},s)),_.flatMap((e,s)=>e.map(e=>{let r=(e._start-f)/864e5*100,a=(e._end-e._start)/864e5*100;return(0,t.jsx)("div",{className:`absolute rounded border text-[11px] font-medium leading-none cursor-pointer hover:brightness-125 transition-all overflow-hidden ${w[e.tool]??"bg-zinc-600 border-zinc-500 text-zinc-100"}`,style:{left:`${r}%`,width:`${Math.max(a,.4)}%`,top:`${4+32*s}px`,height:"28px"},onMouseEnter:t=>u({s:e,x:t.clientX,y:t.clientY}),onMouseMove:t=>u({s:e,x:t.clientX,y:t.clientY}),onMouseLeave:()=>u(null),children:a>4&&(0,t.jsxs)("div",{className:"px-1.5 py-1 truncate",children:[(0,t.jsx)("span",{className:"opacity-80",children:y(e._start)})," · ",e.project]})},e.id)}))]}),(0,t.jsxs)("div",{className:"flex gap-4 mt-3 text-[11px] text-zinc-600",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm bg-violet-500/80 inline-block"})," claude code"]}),(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm bg-emerald-600/80 inline-block"})," codex"]}),(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm bg-sky-600/80 inline-block"})," cursor"]})]}),x&&(0,t.jsxs)("div",{className:"fixed z-20 bg-zinc-800 border border-zinc-700 rounded px-3 py-2 text-xs shadow-xl pointer-events-none max-w-xs",style:{left:x.x+12,top:x.y+12},children:[(0,t.jsxs)("p",{className:"text-zinc-100 font-medium mb-0.5",children:[x.s.project," ",(0,t.jsxs)("span",{className:"text-zinc-500 font-normal",children:["· ",x.s.tool]})]}),x.s.aiTitle&&(0,t.jsx)("p",{className:"text-zinc-400 mb-1 line-clamp-2",children:x.s.aiTitle}),(0,t.jsxs)("p",{className:"text-zinc-500 tabular-nums",children:[y(x.s.startMs)," → ",y(x.s.endMs)," · ",(i=x.s.startMs,Math.max(1,Math.round((x.s.endMs-i)/6e4))),"m"]})]})]})]})]})}let z={"claude-code":"bg-violet-500",codex:"bg-emerald-500",cursor:"bg-sky-500"};function _({sessions:e,limit:r=10}){let a=(0,n.useT)(),i=(0,s.useMemo)(()=>{let t=new Map;for(let r of e){var s;let e=(s=r.cwd)?s.split("/").filter(Boolean).pop()??s:"—";if("—"===e)continue;let a=(r.ended_at??r.started_at)-r.started_at,n=t.get(e)??{project:e,cwd:r.cwd,sessions:0,totalMs:0,tools:{}};n.sessions+=1,n.totalMs+=a,n.tools[r.tool]=(n.tools[r.tool]??0)+1,t.set(e,n)}return[...t.values()].sort((e,t)=>t.totalMs-e.totalMs).slice(0,r)},[e,r]),l=Math.max(...i.map(e=>e.totalMs),1);return 0===i.length?(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:a("card.leaderboard.title")}),(0,t.jsx)("p",{className:"text-zinc-600 text-sm",children:a("card.leaderboard.noProjects")})]}):(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-3",children:a("card.leaderboard.title")}),(0,t.jsx)("div",{className:"space-y-1.5",children:i.map((e,s)=>{let r;return(0,t.jsxs)("div",{className:"group",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 text-xs",children:[(0,t.jsx)("span",{className:"w-5 text-right text-zinc-600 tabular-nums",children:s+1}),(0,t.jsx)("span",{className:"flex-1 text-zinc-200 truncate",title:e.cwd??e.project,children:e.project}),(0,t.jsx)("div",{className:"flex gap-0.5",children:Object.entries(e.tools).map(([e,s])=>(0,t.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${z[e]??"bg-zinc-500"}`,title:`${e}: ${s}`},e))}),(0,t.jsxs)("span",{className:"text-zinc-500 tabular-nums w-12 text-right",children:[e.sessions,"×"]}),(0,t.jsx)("span",{className:"text-zinc-400 tabular-nums w-14 text-right",children:(r=e.totalMs/36e5)<1?`${Math.round(60*r)}m`:`${r.toFixed(1)}h`})]}),(0,t.jsx)("div",{className:"flex gap-px h-1 mt-0.5 ml-8",children:(0,t.jsx)("div",{className:"bg-violet-500/30 rounded-sm",style:{width:`${e.totalMs/l*100}%`}})})]},e.project)})})]})}function M({data:e}){let r=(0,n.useT)(),[a,i]=(0,s.useState)(!1),l=e.filter(e=>e.unlocked),d=e.filter(e=>!e.unlocked).sort((e,t)=>{let s=e.progress?e.progress.current/e.progress.target:0;return(t.progress?t.progress.current/t.progress.target:0)-s}),c=a?[...l,...d]:[...l.slice(0,4),...d.slice(0,Math.max(0,6-Math.min(l.length,4)))];return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsx)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider",children:r("card.achievements.title")}),(0,t.jsx)("p",{className:"text-xs text-zinc-600",children:r("card.achievements.unlocked",{n:l.length,total:e.length})})]}),(0,t.jsx)("div",{className:"grid grid-cols-2 gap-2",children:c.map(e=>{var s,a,n,i;let l,d,c=e.progress?Math.min(100,e.progress.current/e.progress.target*100):100*!!e.unlocked;return(0,t.jsxs)("div",{className:`rounded border px-2.5 py-2 ${e.unlocked?"border-amber-700/50 bg-amber-950/30":"border-zinc-800 bg-zinc-950/30"}`,title:e.description,children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsxs)("span",{className:`text-xs font-medium ${e.unlocked?"text-amber-300":"text-zinc-500"}`,children:[e.unlocked?"★":"☆"," ",(s=e.id,a=e.title,(l=r(`achv.${s}.title`))===`achv.${s}.title`?a:l)]}),(0,t.jsx)("span",{className:"text-[10px] text-zinc-600 tabular-nums shrink-0",children:function(e){if(!e.progress)return"";let{current:t,target:s}=e.progress;return s>=1e6?`${(t/1e6).toFixed(0)}M / ${(s/1e6).toFixed(0)}M`:s>=1e3?`${t.toLocaleString()} / ${s.toLocaleString()}`:s>=100&&Number.isFinite(t)&&t<100&&t%1!=0?`${t.toFixed(1)} / ${s}`:`${Math.floor(t)} / ${s}`}(e)})]}),(0,t.jsx)("div",{className:"h-0.5 bg-zinc-800 rounded mt-1.5 overflow-hidden",children:(0,t.jsx)("div",{className:`h-full ${e.unlocked?"bg-amber-500":"bg-zinc-600"}`,style:{width:`${c}%`}})}),(0,t.jsx)("p",{className:"text-[10px] text-zinc-600 mt-1 truncate",children:(n=e.id,i=e.description,(d=r(`achv.${n}.desc`))===`achv.${n}.desc`?i:d)})]},e.id)})}),e.length>6&&(0,t.jsx)("button",{onClick:()=>i(!a),className:"w-full mt-3 text-xs text-zinc-500 hover:text-zinc-300 border border-zinc-800 rounded py-1",children:a?r("card.achievements.showLess"):r("card.achievements.showAll",{n:e.length})})]})}let k=["all","claude-code","codex","cursor"],$={all:"dashboard.toolAll","claude-code":"dashboard.toolClaude",codex:"dashboard.toolCodex",cursor:"dashboard.toolCursor"},S=["today","7d","30d","all"],C={today:"dashboard.dateToday2","7d":"dashboard.date7days","30d":"dashboard.date30days",all:"dashboard.dateAlltime"};function P(e,t){if(!e)return"";let s=e-Date.now();if(s<=0)return t("dashboard.resetting");let r=new Date(e),a=r.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1}),n=new Date().toDateString()===r.toDateString()?a:`${(r.getMonth()+1).toString().padStart(2,"0")}/${r.getDate().toString().padStart(2,"0")} ${a}`,i=Math.floor(s/36e5),l=Math.floor(s%36e5/6e4);return t("dashboard.resetsAt",{date:n,rel:i>0?`${i}h ${l}m`:`${l}m`})}function O(e){let t=Math.max(0,Math.min(100,e));return`${t>=100?100:Math.floor(t)}%`}function T(e){let t=Math.max(0,Math.min(100,e));return`${t<=0?0:Math.ceil(t)}%`}e.s(["Dashboard",0,function({sessions:e,streak:i,allBurndown:l,claudeBurndown:d,codexBurndown:c,hotspots:x,claudeUsage:m,codexUsage:h,codexAccounts:f,selectedCodexAccountId:j,initialToolFilter:v,spending:y,timeline:w,achievements:z}){var D;let E,R,F=(0,n.useT)(),A=(0,a.useRouter)(),L=(0,a.usePathname)(),I=(0,a.useSearchParams)(),U=I.get("agent"),W=k.includes(U)?U:v,[X,B]=(0,s.useState)("all"),[H,q]=(0,s.useState)("idle"),[G,Y]=(0,s.useState)(null),J=(0,s.useMemo)(()=>f.find(e=>e.accountId===j)??null,[f,j]),K=J?`${F("dashboard.codexLabelPrefix")} \xb7 ${J.label}`:F("dashboard.codexLabel"),V=j?F("dashboard.noSnapshot"):F("dashboard.noData"),Q=j?J?.isCurrent?F("dashboard.useCodexThenRefresh"):F("dashboard.switchAdminThenUse"):F("dashboard.noData"),Z=(0,s.useMemo)(()=>{let e;return e=new Date,"today"===X?(e.setHours(0,0,0,0),e.getTime()):"7d"===X?Date.now()-6048e5:"30d"===X?Date.now()-2592e6:0},[X]),ee=(0,s.useMemo)(()=>{let t=Z>0?e.filter(e=>e.started_at>=Z):e,s={all:t.length};for(let e of t)s[e.tool]=(s[e.tool]??0)+1;return s},[e,Z]),et=(0,s.useMemo)(()=>{let t="all"===W?e:e.filter(e=>e.tool===W);return Z>0&&(t=t.filter(e=>e.started_at>=Z)),t},[e,W,Z]),es=(0,s.useMemo)(()=>{let e=new Map;for(let t of et){let s=(t.ended_at??t.started_at)-t.started_at,r=e.get(t.tool)??{sessions:0,totalMs:0};e.set(t.tool,{sessions:r.sessions+1,totalMs:r.totalMs+s})}let t=Math.max([...e.values()].reduce((e,t)=>e+t.totalMs,0),1);return[...e.entries()].map(([e,s])=>({tool:e,sessions:s.sessions,totalMs:s.totalMs,pct:Math.round(s.totalMs/t*100)})).sort((e,t)=>t.totalMs-e.totalMs)},[et]),er=(0,s.useMemo)(()=>{if(0===Z)return y;let e=new Date(Z).toISOString().slice(0,10);return{...y,daily:y.daily.filter(t=>t.date>=e)}},[y,Z]);async function ea(){q("refreshing"),Y(null);try{let e=await fetch("/api/import-sessions",{method:"POST"}),t=await e.json();if(!e.ok)throw Error(t.error??F("dashboard.refreshFailed"));q("done"),Y(F("dashboard.scanned",{n:t.scanned??0,seconds:Math.round((t.durationMs??0)/100)/10})),A.refresh()}catch(e){q("error"),Y(e instanceof Error?e.message:F("dashboard.refreshFailed"))}}function en(e,t){let s=new URLSearchParams(I.toString());"all"===e?(s.delete("agent"),s.delete("codexAccount")):(s.set("agent",e),"codex"!==e&&s.delete("codexAccount")),"codex"===e&&t?s.set("codexAccount",t):s.delete("codexAccount");let r=s.toString();A.replace(r?`${L}?${r}`:L,{scroll:!1}),A.refresh()}return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between mb-4 gap-3",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:k.filter(e=>"all"===e||(ee[e]??0)>0).sort((e,t)=>"all"===e?-1:"all"===t?1:(ee[t]??0)-(ee[e]??0)).map(e=>(0,t.jsxs)("button",{onClick:()=>{en(e,"codex"===e?j:null)},className:`text-xs px-3 py-1.5 rounded-full border transition-colors ${W===e?"bg-zinc-700 border-zinc-500 text-zinc-100":"border-zinc-700 text-zinc-500 hover:text-zinc-300 hover:border-zinc-600"}`,children:[F($[e]),(0,t.jsx)("span",{className:"ml-1.5 text-zinc-600 tabular-nums",children:ee[e]??0})]},e))}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[(0,t.jsx)("div",{className:"flex gap-1",children:S.map(e=>(0,t.jsx)("button",{onClick:()=>B(e),className:`text-xs px-3 py-1.5 rounded-full border transition-colors ${X===e?"bg-zinc-700 border-zinc-500 text-zinc-100":"border-zinc-700 text-zinc-500 hover:text-zinc-300 hover:border-zinc-600"}`,children:F(C[e])},e))}),(0,t.jsx)("button",{type:"button",onClick:ea,disabled:"refreshing"===H,className:"text-xs px-3 py-1.5 rounded-full border border-violet-500/40 bg-violet-500/10 text-violet-100 transition-colors hover:bg-violet-500/20 disabled:cursor-not-allowed disabled:opacity-50",children:"refreshing"===H?F("dashboard.refreshing"):F("dashboard.refreshData")})]})]}),G&&(0,t.jsx)("div",{className:`mb-4 rounded-lg border px-4 py-3 text-xs ${"error"===H?"border-red-900/60 bg-red-950/40 text-red-200":"border-emerald-900/60 bg-emerald-950/30 text-emerald-200"}`,children:G}),"codex"===W&&f.length>0&&(0,t.jsxs)("div",{className:"mb-3 flex flex-wrap items-center justify-between gap-2 rounded-lg border border-zinc-800 bg-zinc-900 px-4 py-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs uppercase tracking-wider text-zinc-500",children:F("dashboard.codexAccount")}),(0,t.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600",children:J?J.isCurrent?F("dashboard.codexCurrentOnly"):F("dashboard.codexSavedOnly"):F("dashboard.codexAllUsage")})]}),(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,t.jsxs)("select",{value:j??"",onChange:e=>{en("codex",e.target.value||null)},className:"max-w-72 rounded-md border border-zinc-700 bg-zinc-950 px-3 py-2 text-xs text-zinc-100 outline-none transition-colors hover:border-zinc-500 focus:border-violet-500",children:[(0,t.jsx)("option",{value:"",children:F("dashboard.codexAccountAll")}),f.map(e=>(0,t.jsxs)("option",{value:e.accountId,children:[e.label," · ",e.planType??F("common.unknown"),e.isCurrent?" · current":""]},e.accountId))]}),(0,t.jsx)("span",{className:"hidden shrink-0 text-xs text-zinc-600 sm:inline",children:J?(D=J.accountId).length>12?`${D.slice(0,6)}...${D.slice(-4)}`:D:F("dashboard.short")})]}),J&&!J.isCurrent&&(0,t.jsx)(r.default,{href:"/admin",className:"basis-full text-xs text-violet-300 transition-colors hover:text-violet-100",children:F("dashboard.codexSwitchHint")})]}),"all"!==W&&(E="codex"===W?h:"claude-code"===W?m:null,R="codex"===W?K:"claude-code"===W?F("dashboard.claudeCodeLower"):F($[W]).toLowerCase(),(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsxs)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-2",children:[F("dashboard.window5h")," · ",R]}),E?.window_5h_used_pct!=null?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"text-3xl font-bold text-zinc-100",children:O(100-E.window_5h_used_pct)}),(0,t.jsxs)("p",{className:"text-xs text-zinc-500 mt-1",children:[F("dashboard.remaining")," · ",T(E.window_5h_used_pct)," ",F("dashboard.used")]}),E.reset_at_5h&&(0,t.jsx)("p",{className:"text-xs text-zinc-600 mt-1",children:P(E.reset_at_5h,F)})]}):(0,t.jsx)("p",{className:"text-zinc-600 text-sm mt-1",children:"codex"===W?V:F("dashboard.noData")})]}),(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-800 bg-zinc-900 p-5",children:[(0,t.jsxs)("p",{className:"text-xs text-zinc-500 uppercase tracking-wider mb-2",children:[F("dashboard.window7d")," · ",R]}),E?.window_weekly_used_pct!=null?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"text-3xl font-bold text-zinc-100",children:O(100-E.window_weekly_used_pct)}),(0,t.jsxs)("p",{className:"text-xs text-zinc-500 mt-1",children:[F("dashboard.remaining")," · ",T(E.window_weekly_used_pct)," ",F("dashboard.used")]}),E.reset_at_weekly&&(0,t.jsx)("p",{className:"text-xs text-zinc-600 mt-1",children:P(E.reset_at_weekly,F)})]}):(0,t.jsx)("p",{className:"text-zinc-600 text-sm mt-1",children:"codex"===W?Q:F("dashboard.noData")})]})]})})),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[(0,t.jsx)(b,{data:er,toolFilter:W}),(0,t.jsx)(M,{data:z})]}),(0,t.jsx)("div",{className:"mb-4",children:(0,t.jsx)(N,{sessions:et,streak:i,timeline:w})}),(0,t.jsx)("div",{className:"mb-4",children:(0,t.jsx)(p,{data:"codex"===W?c:"claude-code"===W?d:l,label:"codex"===W?K:"claude-code"===W?F("dashboard.claudeCodeLower"):F("dashboard.allAgents")})}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[(0,t.jsx)(u,{data:es}),(0,t.jsx)(_,{sessions:et})]}),(0,t.jsx)("div",{className:"mb-4",children:(0,t.jsx)(o,{sessions:et.slice(0,40)})}),x.length>0&&(0,t.jsx)(g,{data:x})]})}],58116)},98879,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return l}});let r=e.r(71645),a="u"<typeof window,n=a?()=>{}:r.useLayoutEffect,i=a?()=>{}:r.useEffect;function l(e){let{headManager:t,reduceComponentsToState:s}=e;function l(){if(t&&t.mountedInstances){let e=r.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(s(e))}}return a&&(t?.mountedInstances?.add(e.children),l()),n(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),n(()=>(t&&(t._pendingUpdate=l),()=>{t&&(t._pendingUpdate=l)})),i(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r={default:function(){return p},defaultHead:function(){return x}};for(var a in r)Object.defineProperty(s,a,{enumerable:!0,get:r[a]});let n=e.r(55682),i=e.r(90809),l=e.r(43476),d=i._(e.r(71645)),c=n._(e.r(98879)),o=e.r(42732);function x(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function u(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===d.default.Fragment?e.concat(d.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let m=["name","httpEquiv","charSet","itemProp"];function h(e){let t,s,r,a;return e.reduce(u,[]).reverse().concat(x().reverse()).filter((t=new Set,s=new Set,r=new Set,a={},e=>{let n=!0,i=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){i=!0;let s=e.key.slice(e.key.indexOf("$")+1);t.has(s)?n=!1:t.add(s)}switch(e.type){case"title":case"base":s.has(e.type)?n=!1:s.add(e.type);break;case"meta":for(let t=0,s=m.length;t<s;t++){let s=m[t];if(e.props.hasOwnProperty(s))if("charSet"===s)r.has(s)?n=!1:r.add(s);else{let t=e.props[s],r=a[s]||new Set;("name"!==s||!i)&&r.has(t)?n=!1:(r.add(t),a[s]=r)}}}return n})).reverse().map((e,t)=>{let s=e.key||t;return d.default.cloneElement(e,{key:s})})}let p=function({children:e}){let t=(0,d.useContext)(o.HeadManagerContext);return(0,l.jsx)(c.default,{reduceComponentsToState:h,headManager:t,children:e})};("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)},88143,(e,t,s)=>{"use strict";function r({widthInt:e,heightInt:t,blurWidth:s,blurHeight:a,blurDataURL:n,objectFit:i}){let l=s?40*s:e,d=a?40*a:t,c=l&&d?`viewBox='0 0 ${l} ${d}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${c}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${c?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},87690,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return i}};for(var a in r)Object.defineProperty(s,a,{enumerable:!0,get:r[a]});let n=["default","imgix","cloudinary","akamai","custom"],i={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"getImgProps",{enumerable:!0,get:function(){return c}}),e.r(33525);let r=e.r(43369),a=e.r(88143),n=e.r(87690),i=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function d(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function c({src:e,sizes:t,unoptimized:s=!1,priority:o=!1,preload:x=!1,loading:u,className:m,quality:h,width:p,height:g,fill:f=!1,style:b,overrideSrc:j,onLoad:v,onLoadingComplete:y,placeholder:w="empty",blurDataURL:N,fetchPriority:z,decoding:_="async",layout:M,objectFit:k,objectPosition:$,lazyBoundary:S,lazyRoot:C,...P},O){var T;let D,E,R,{imgConf:F,showAltText:A,blurComplete:L,defaultLoader:I}=O,U=F||n.imageConfigDefault;if("allSizes"in U)D=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),s=U.qualities?.sort((e,t)=>e-t);D={...U,allSizes:e,deviceSizes:t,qualities:s}}if(void 0===I)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let W=P.loader||I;delete P.loader,delete P.srcSet;let X="__next_img_default"in W;if(X){if("custom"===D.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
|
|
3
|
+
Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=W;W=t=>{let{config:s,...r}=t;return e(r)}}if(M){"fill"===M&&(f=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[M];e&&(b={...b,...e});let s={responsive:"100vw",fill:"100vw"}[M];s&&!t&&(t=s)}let B="",H=d(p),q=d(g);if((T=e)&&"object"==typeof T&&(l(T)||void 0!==T.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(E=t.blurWidth,R=t.blurHeight,N=N||t.blurDataURL,B=t.src,!f)if(H||q){if(H&&!q){let e=H/t.width;q=Math.round(t.height*e)}else if(!H&&q){let e=q/t.height;H=Math.round(t.width*e)}}else H=t.width,q=t.height}let G=!o&&!x&&("lazy"===u||void 0===u);(!(e="string"==typeof e?e:B)||e.startsWith("data:")||e.startsWith("blob:"))&&(s=!0,G=!1),D.unoptimized&&(s=!0),X&&!D.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(s=!0);let Y=d(h),J=Object.assign(f?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:k,objectPosition:$}:{},A?{}:{color:"transparent"},b),K=L||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:H,heightInt:q,blurWidth:E,blurHeight:R,blurDataURL:N||"",objectFit:J.objectFit})}")`:`url("${w}")`,V=i.includes(J.objectFit)?"fill"===J.objectFit?"100% 100%":"cover":J.objectFit,Q=K?{backgroundSize:V,backgroundPosition:J.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:K}:{},Z=function({config:e,src:t,unoptimized:s,width:a,quality:n,sizes:i,loader:l}){if(s){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,r.getDeploymentId)();if(e){let s=t.indexOf("?");if(-1!==s){let r=new URLSearchParams(t.slice(s+1));r.get("dpl")||(r.append("dpl",e),t=t.slice(0,s)+"?"+r.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:d,kind:c}=function({deviceSizes:e,allSizes:t},s,r){if(r){let s=/(^|\s)(1?\d?\d)vw/g,a=[];for(let e;e=s.exec(r);)a.push(parseInt(e[2]));if(a.length){let s=.01*Math.min(...a);return{widths:t.filter(t=>t>=e[0]*s),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof s?{widths:e,kind:"w"}:{widths:[...new Set([s,2*s].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,i),o=d.length-1;return{sizes:i||"w"!==c?i:"100vw",srcSet:d.map((s,r)=>`${l({config:e,src:t,quality:n,width:s})} ${"w"===c?s:r+1}${c}`).join(", "),src:l({config:e,src:t,quality:n,width:d[o]})}}({config:D,src:e,unoptimized:s,width:H,quality:Y,sizes:t,loader:W}),ee=G?"lazy":u;return{props:{...P,loading:ee,fetchPriority:z,width:H,height:q,decoding:_,className:m,style:{...J,...Q},sizes:Z.sizes,srcSet:Z.srcSet,src:j||Z.src},meta:{unoptimized:s,preload:x||o,placeholder:w,fill:f}}}},18556,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"ImageConfigContext",{enumerable:!0,get:function(){return n}});let r=e.r(55682)._(e.r(71645)),a=e.r(87690),n=r.default.createContext(a.imageConfigDefault)},65856,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"RouterContext",{enumerable:!0,get:function(){return r}});let r=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,s)=>{"use strict";function r(e,t){let s=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e,t.qualities[0]):s}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"findClosestQuality",{enumerable:!0,get:function(){return r}})},1948,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return i}});let r=e.r(70965),a=e.r(43369);function n({config:e,src:t,width:s,quality:i}){let l=(0,a.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let s=new URLSearchParams(t.slice(e+1)),r=s.get("dpl");if(r){l=r,s.delete("dpl");let a=s.toString();t=t.slice(0,e)+(a?"?"+a:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
|
|
4
|
+
Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let d=(0,r.findClosestQuality)(i,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${s}&q=${d}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}n.__next_img_default=!0;let i=n},5500,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"Image",{enumerable:!0,get:function(){return v}});let r=e.r(55682),a=e.r(90809),n=e.r(43476),i=a._(e.r(71645)),l=r._(e.r(74080)),d=r._(e.r(25633)),c=e.r(8927),o=e.r(87690),x=e.r(18556);e.r(33525);let u=e.r(65856),m=r._(e.r(1948)),h=e.r(18581),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function g(e,t,s,r,a,n,i){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&a(!0),s?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,a=!1;s.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>a,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{a=!0,t.stopPropagation()}})}r?.current&&r.current(e)}}))}function f(e){return i.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let b=(0,i.forwardRef)(({src:e,srcSet:t,sizes:s,height:r,width:a,decoding:l,className:d,style:c,fetchPriority:o,placeholder:x,loading:u,unoptimized:m,fill:p,onLoadRef:b,onLoadingCompleteRef:j,setBlurComplete:v,setShowAltText:y,sizesInput:w,onLoad:N,onError:z,..._},M)=>{let k=(0,i.useCallback)(e=>{e&&(z&&(e.src=e.src),e.complete&&g(e,x,b,j,v,m,w))},[e,x,b,j,v,z,m,w]),$=(0,h.useMergedRef)(M,k);return(0,n.jsx)("img",{..._,...f(o),loading:u,width:a,height:r,decoding:l,"data-nimg":p?"fill":"1",className:d,style:c,sizes:s,srcSet:t,src:e,ref:$,onLoad:e=>{g(e.currentTarget,x,b,j,v,m,w)},onError:e=>{y(!0),"empty"!==x&&v(!0),z&&z(e)}})});function j({isAppRouter:e,imgAttributes:t}){let s={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...f(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,s),null):(0,n.jsx)(d.default,{children:(0,n.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...s},"__nimg-"+t.src+t.srcSet+t.sizes)})}let v=(0,i.forwardRef)((e,t)=>{let s=(0,i.useContext)(u.RouterContext),r=(0,i.useContext)(x.ImageConfigContext),a=(0,i.useMemo)(()=>{let e=p||r||o.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),s=e.deviceSizes.sort((e,t)=>e-t),a=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:s,qualities:a,localPatterns:"u"<typeof window?r?.localPatterns:e.localPatterns}},[r]),{onLoad:l,onLoadingComplete:d}=e,h=(0,i.useRef)(l);(0,i.useEffect)(()=>{h.current=l},[l]);let g=(0,i.useRef)(d);(0,i.useEffect)(()=>{g.current=d},[d]);let[f,v]=(0,i.useState)(!1),[y,w]=(0,i.useState)(!1),{props:N,meta:z}=(0,c.getImgProps)(e,{defaultLoader:m.default,imgConf:a,blurComplete:f,showAltText:y});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b,{...N,unoptimized:z.unoptimized,placeholder:z.placeholder,fill:z.fill,onLoadRef:h,onLoadingCompleteRef:g,setBlurComplete:v,setShowAltText:w,sizesInput:e.sizes,ref:t}),z.preload?(0,n.jsx)(j,{isAppRouter:!s,imgAttributes:N}):null]})});("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/115dplafwys-z.js","static/chunks/0bymg5d-lqs0o.js","static/chunks/10u3y4bw1ayzs.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,l=((o=l||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let i=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,l,s;null!=t?l=(o=p(this.c,t)).exports:(o=this.m,l=this.e);let u=(r=o,n=l,(s=i.get(r))||(i.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function w(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=w,u.A=function(e){return this.r(e)(w.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),U=Symbol("turbopack exports"),C=Symbol("turbopack error");function P(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=j(),u=Object.assign(s,{[U]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[k]:e=>e(t)};return e.then(e=>{r[U]=e,P(t)},e=>{r[C]=e,P(t)}),r}}return{[U]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[C])throw e[C];return e[U]}),{promise:l,resolve:i}=j(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?l:r()},function(e){e?i(u[C]=e):l(u[U]),P(n)}),n&&-1===n.status&&(n.status=0)};let v=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}v.prototype=URL.prototype,u.U=v,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let E=new Map,_=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],l=o.map(e=>!!$.has(e)||E.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>_.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)_.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));_.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),i))_.has(o)||_.set(o,n)}for(let e of o)E.has(e)||E.set(e,n);await n}S.l=function(e){return T(l.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),i=x.get(o);if(void 0===i){let e=x.set.bind(x,o,A);i=o.then(e).catch(e=>{let o;switch(t){case l.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case l.Parent:o=`from module ${r}`;break;case l.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),x.set(o,i)}return i}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(l.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,l){let i="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return i?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,l?{...l,type:void 0}:void 0)};let q=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(l.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(l.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,l.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),l=o.exports;I[e]=o;let i=new s(o,l);try{n(i,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),s=!0),t.set(r,i))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(l.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,l.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===l.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(q.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(q.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(N(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
|
package/.next/types/routes.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// This file is generated automatically by Next.js
|
|
2
2
|
// Do not edit this file manually
|
|
3
3
|
|
|
4
|
-
type AppRoutes = "/" | "/admin"
|
|
5
|
-
type AppRouteHandlerRoutes = "/api/codex-accounts" | "/api/import-sessions" | "/api/sessions" | "/api/sessions/[id]/tags" | "/api/usage"
|
|
4
|
+
type AppRoutes = "/" | "/admin" | "/float" | "/settings"
|
|
5
|
+
type AppRouteHandlerRoutes = "/api/codex-accounts" | "/api/float" | "/api/import-sessions" | "/api/sessions" | "/api/sessions/[id]/tags" | "/api/settings/alerts" | "/api/settings/notify" | "/api/usage" | "/install.sh"
|
|
6
6
|
type PageRoutes = never
|
|
7
7
|
type LayoutRoutes = "/"
|
|
8
8
|
type RedirectRoutes = never
|
|
@@ -14,10 +14,16 @@ interface ParamMap {
|
|
|
14
14
|
"/": {}
|
|
15
15
|
"/admin": {}
|
|
16
16
|
"/api/codex-accounts": {}
|
|
17
|
+
"/api/float": {}
|
|
17
18
|
"/api/import-sessions": {}
|
|
18
19
|
"/api/sessions": {}
|
|
19
20
|
"/api/sessions/[id]/tags": { "id": string; }
|
|
21
|
+
"/api/settings/alerts": {}
|
|
22
|
+
"/api/settings/notify": {}
|
|
20
23
|
"/api/usage": {}
|
|
24
|
+
"/float": {}
|
|
25
|
+
"/install.sh": {}
|
|
26
|
+
"/settings": {}
|
|
21
27
|
}
|
|
22
28
|
|
|
23
29
|
|
package/.next/types/validator.ts
CHANGED
|
@@ -56,6 +56,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
56
56
|
type __Unused = __Check
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
// Validate ../../src/app/float/page.tsx
|
|
60
|
+
{
|
|
61
|
+
type __IsExpected<Specific extends AppPageConfig<"/float">> = Specific
|
|
62
|
+
const handler = {} as typeof import("../../src/app/float/page.js")
|
|
63
|
+
type __Check = __IsExpected<typeof handler>
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
type __Unused = __Check
|
|
66
|
+
}
|
|
67
|
+
|
|
59
68
|
// Validate ../../src/app/page.tsx
|
|
60
69
|
{
|
|
61
70
|
type __IsExpected<Specific extends AppPageConfig<"/">> = Specific
|
|
@@ -65,6 +74,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
65
74
|
type __Unused = __Check
|
|
66
75
|
}
|
|
67
76
|
|
|
77
|
+
// Validate ../../src/app/settings/page.tsx
|
|
78
|
+
{
|
|
79
|
+
type __IsExpected<Specific extends AppPageConfig<"/settings">> = Specific
|
|
80
|
+
const handler = {} as typeof import("../../src/app/settings/page.js")
|
|
81
|
+
type __Check = __IsExpected<typeof handler>
|
|
82
|
+
// @ts-ignore
|
|
83
|
+
type __Unused = __Check
|
|
84
|
+
}
|
|
85
|
+
|
|
68
86
|
// Validate ../../src/app/api/codex-accounts/route.ts
|
|
69
87
|
{
|
|
70
88
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/codex-accounts">> = Specific
|
|
@@ -74,6 +92,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
74
92
|
type __Unused = __Check
|
|
75
93
|
}
|
|
76
94
|
|
|
95
|
+
// Validate ../../src/app/api/float/route.ts
|
|
96
|
+
{
|
|
97
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/float">> = Specific
|
|
98
|
+
const handler = {} as typeof import("../../src/app/api/float/route.js")
|
|
99
|
+
type __Check = __IsExpected<typeof handler>
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
type __Unused = __Check
|
|
102
|
+
}
|
|
103
|
+
|
|
77
104
|
// Validate ../../src/app/api/import-sessions/route.ts
|
|
78
105
|
{
|
|
79
106
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/import-sessions">> = Specific
|
|
@@ -101,6 +128,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
101
128
|
type __Unused = __Check
|
|
102
129
|
}
|
|
103
130
|
|
|
131
|
+
// Validate ../../src/app/api/settings/alerts/route.ts
|
|
132
|
+
{
|
|
133
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings/alerts">> = Specific
|
|
134
|
+
const handler = {} as typeof import("../../src/app/api/settings/alerts/route.js")
|
|
135
|
+
type __Check = __IsExpected<typeof handler>
|
|
136
|
+
// @ts-ignore
|
|
137
|
+
type __Unused = __Check
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Validate ../../src/app/api/settings/notify/route.ts
|
|
141
|
+
{
|
|
142
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings/notify">> = Specific
|
|
143
|
+
const handler = {} as typeof import("../../src/app/api/settings/notify/route.js")
|
|
144
|
+
type __Check = __IsExpected<typeof handler>
|
|
145
|
+
// @ts-ignore
|
|
146
|
+
type __Unused = __Check
|
|
147
|
+
}
|
|
148
|
+
|
|
104
149
|
// Validate ../../src/app/api/usage/route.ts
|
|
105
150
|
{
|
|
106
151
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/usage">> = Specific
|
|
@@ -110,6 +155,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
110
155
|
type __Unused = __Check
|
|
111
156
|
}
|
|
112
157
|
|
|
158
|
+
// Validate ../../src/app/install.sh/route.ts
|
|
159
|
+
{
|
|
160
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/install.sh">> = Specific
|
|
161
|
+
const handler = {} as typeof import("../../src/app/install.sh/route.js")
|
|
162
|
+
type __Check = __IsExpected<typeof handler>
|
|
163
|
+
// @ts-ignore
|
|
164
|
+
type __Unused = __Check
|
|
165
|
+
}
|
|
166
|
+
|
|
113
167
|
|
|
114
168
|
|
|
115
169
|
|
package/README.md
CHANGED
|
@@ -6,6 +6,24 @@
|
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
+
<p align="center">
|
|
10
|
+
<img src="public/float-ball.png" alt="Vibemeter floating ball" width="380">
|
|
11
|
+
|
|
12
|
+
<img src="public/float-expanded.png" alt="Vibemeter floating widget expanded" width="380">
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<p align="center"><sub>Native macOS floating widget — always-on quota ring (left) and expanded panel (right). Stays above your editor; click to refresh, click again to collapse.</sub></p>
|
|
16
|
+
|
|
17
|
+
Website: <https://vibemeter.siney.top>
|
|
18
|
+
|
|
19
|
+
Install and launch with one command:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
curl -fsSL https://vibemeter.siney.top/install.sh | bash
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The installer downloads Vibemeter from npm, registers the local background service, waits for it to start, and opens the macOS floating widget. The dashboard runs on your own machine at <http://localhost:9527>.
|
|
26
|
+
|
|
9
27
|
## What you get
|
|
10
28
|
|
|
11
29
|
- **5h / 7-day rate-limit windows** for both Claude Code (statusline) and Codex (rollout files)
|
|
@@ -18,27 +36,31 @@
|
|
|
18
36
|
|
|
19
37
|
## Quick start
|
|
20
38
|
|
|
21
|
-
|
|
22
|
-
npx @hirra/vibemeter
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Open <http://localhost:9527>. Data lives in `~/.vibemeter/`.
|
|
39
|
+
The one-command installer is the recommended path for new users. It keeps everything local: data lives in `~/.vibemeter/`, and nothing is sent to Vibemeter or any cloud service.
|
|
26
40
|
|
|
27
|
-
|
|
41
|
+
Prefer doing it manually?
|
|
28
42
|
|
|
29
|
-
|
|
43
|
+
```bash
|
|
44
|
+
npm install -g @hirra/vibemeter
|
|
45
|
+
vibemeter install
|
|
46
|
+
vibemeter float
|
|
47
|
+
```
|
|
30
48
|
|
|
31
|
-
|
|
49
|
+
## Run in the foreground
|
|
32
50
|
|
|
33
51
|
```bash
|
|
34
|
-
|
|
52
|
+
vibemeter
|
|
35
53
|
```
|
|
36
54
|
|
|
37
|
-
|
|
55
|
+
Open <http://localhost:9527>. Hit Ctrl-C to stop.
|
|
56
|
+
|
|
57
|
+
## Run as a background service (macOS)
|
|
58
|
+
|
|
59
|
+
`vibemeter install` registers a LaunchAgent at `~/Library/LaunchAgents/com.hirra.vibemeter.plist`. It boots on login, restarts if it crashes, and writes logs to `~/.vibemeter/vibemeter.log`.
|
|
38
60
|
|
|
39
61
|
```bash
|
|
40
|
-
|
|
41
|
-
|
|
62
|
+
vibemeter status # see if it's loaded + tail the log
|
|
63
|
+
vibemeter uninstall # remove the LaunchAgent
|
|
42
64
|
```
|
|
43
65
|
|
|
44
66
|
On Linux, run `vibemeter install` and it'll print a systemd-user unit you can drop in `~/.config/systemd/user/vibemeter.service`.
|
|
@@ -47,11 +69,15 @@ On Linux, run `vibemeter install` and it'll print a systemd-user unit you can dr
|
|
|
47
69
|
|
|
48
70
|
| Command | What it does |
|
|
49
71
|
| ---------------------- | ---------------------------------------------------- |
|
|
50
|
-
| `vibemeter`
|
|
51
|
-
| `vibemeter install`
|
|
52
|
-
| `vibemeter
|
|
53
|
-
| `vibemeter
|
|
54
|
-
| `vibemeter
|
|
72
|
+
| `vibemeter` | start the server in the foreground (Ctrl-C to stop) |
|
|
73
|
+
| `vibemeter install` | register a LaunchAgent so it runs on login (macOS) |
|
|
74
|
+
| `vibemeter float` | open the native macOS floating widget |
|
|
75
|
+
| `vibemeter uninstall` | remove the auto-start config |
|
|
76
|
+
| `vibemeter status` | show whether the daemon is loaded + tail log |
|
|
77
|
+
| `vibemeter notify-install` | wire voice + macOS-notification hooks (Claude+Codex) |
|
|
78
|
+
| `vibemeter notify-status` | show which voice hooks are installed |
|
|
79
|
+
| `vibemeter notify-uninstall` | remove the voice + notification hooks |
|
|
80
|
+
| `vibemeter help` | print usage |
|
|
55
81
|
|
|
56
82
|
| Env var | Default |
|
|
57
83
|
| --------------------- | ---------------- |
|
|
@@ -89,6 +115,20 @@ Claude Code starts writing `~/.vibemeter/statusline-latest.json` on every status
|
|
|
89
115
|
|
|
90
116
|
Codex needs **no setup** — its 5h/7d data lives in `~/.codex/sessions/**/rollout-*.jsonl` already.
|
|
91
117
|
|
|
118
|
+
## Voice notifications (macOS)
|
|
119
|
+
|
|
120
|
+
Want Claude Code and Codex to **speak + show a notification** the moment they finish — no more tabbing back to check? Vibemeter ships a small speaker script and wires it into both tools for you.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
vibemeter notify-install
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
That adds a Stop hook to `~/.claude/settings.json` and sets `notify = [...]` in `~/.codex/config.toml` (both backed up first). When an agent finishes, you'll hear a short *"Claude / Codex {project} 完成"* and see a banner — delivered through a small bundled `Vibemeter.app` so notifications carry the Vibemeter name + icon (system will ask for notification permission the first time). If the bundle isn't built yet, Vibemeter quietly falls back to `osascript`.
|
|
127
|
+
|
|
128
|
+
Toggle it from <http://localhost:9527/settings> — turn channels on/off, or remove everything with `vibemeter notify-uninstall`. If your Codex config already has a custom `notify` line, Vibemeter detects it and refuses to overwrite. The defaults use the **Tingting** Chinese voice (`say -v Tingting`); set `VIBEMETER_NOTIFY_VOICE` in the hook command to change it.
|
|
129
|
+
|
|
130
|
+
The installer for new users (`curl ... | bash`) also prompts to enable this during `vibemeter install` — accept or skip, you can always change later in Settings.
|
|
131
|
+
|
|
92
132
|
## Demo mode
|
|
93
133
|
|
|
94
134
|
Append `?demo=1` to the URL — anonymizes project names and injects mock sessions. Useful for screenshots and screen-sharing.
|