@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.
Files changed (262) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -1
  3. package/.next/build-manifest.json +7 -8
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/prerender-manifest.json +16 -12
  6. package/.next/required-server-files.js +5 -4
  7. package/.next/required-server-files.json +5 -4
  8. package/.next/routes-manifest.json +36 -0
  9. package/.next/server/app/_global-error/page/build-manifest.json +4 -5
  10. package/.next/server/app/_global-error/page.js +4 -4
  11. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_global-error.html +1 -1
  14. package/.next/server/app/_global-error.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/_not-found/page/build-manifest.json +4 -5
  21. package/.next/server/app/_not-found/page.js +5 -4
  22. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  23. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/admin/page/build-manifest.json +4 -5
  25. package/.next/server/app/admin/page.js +7 -5
  26. package/.next/server/app/admin/page.js.nft.json +1 -1
  27. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/codex-accounts/route.js +1 -1
  29. package/.next/server/app/api/codex-accounts/route.js.nft.json +1 -1
  30. package/.next/server/app/api/float/route/app-paths-manifest.json +3 -0
  31. package/.next/server/app/api/float/route/build-manifest.json +9 -0
  32. package/.next/server/app/api/float/route/server-reference-manifest.json +4 -0
  33. package/.next/server/app/api/float/route.js +8 -0
  34. package/.next/server/app/api/float/route.js.map +5 -0
  35. package/.next/server/app/api/float/route.js.nft.json +1 -0
  36. package/.next/server/app/api/float/route_client-reference-manifest.js +3 -0
  37. package/.next/server/app/api/import-sessions/route.js.nft.json +1 -1
  38. package/.next/server/app/api/sessions/[id]/tags/route.js +1 -1
  39. package/.next/server/app/api/sessions/[id]/tags/route.js.nft.json +1 -1
  40. package/.next/server/app/api/sessions/route.js +1 -1
  41. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  42. package/.next/server/app/api/settings/alerts/route/app-paths-manifest.json +3 -0
  43. package/.next/server/app/api/settings/alerts/route/build-manifest.json +9 -0
  44. package/.next/server/app/api/settings/alerts/route/server-reference-manifest.json +4 -0
  45. package/.next/server/app/api/settings/alerts/route.js +9 -0
  46. package/.next/server/app/api/settings/alerts/route.js.map +5 -0
  47. package/.next/server/app/api/settings/alerts/route.js.nft.json +1 -0
  48. package/.next/server/app/api/settings/alerts/route_client-reference-manifest.js +3 -0
  49. package/.next/server/app/api/settings/notify/route/app-paths-manifest.json +3 -0
  50. package/.next/server/app/api/settings/notify/route/build-manifest.json +9 -0
  51. package/.next/server/app/api/settings/notify/route/server-reference-manifest.json +4 -0
  52. package/.next/server/app/api/settings/notify/route.js +7 -0
  53. package/.next/server/app/api/settings/notify/route.js.map +5 -0
  54. package/.next/server/app/api/settings/notify/route.js.nft.json +1 -0
  55. package/.next/server/app/api/settings/notify/route_client-reference-manifest.js +3 -0
  56. package/.next/server/app/api/usage/route.js +1 -1
  57. package/.next/server/app/api/usage/route.js.nft.json +1 -1
  58. package/.next/server/app/float/page/app-paths-manifest.json +3 -0
  59. package/.next/server/app/float/page/build-manifest.json +16 -0
  60. package/.next/server/app/float/page/next-font-manifest.json +11 -0
  61. package/.next/server/app/float/page/react-loadable-manifest.json +1 -0
  62. package/.next/server/app/float/page/server-reference-manifest.json +4 -0
  63. package/.next/server/app/float/page.js +15 -0
  64. package/.next/server/app/float/page.js.map +5 -0
  65. package/.next/server/app/float/page.js.nft.json +1 -0
  66. package/.next/server/app/float/page_client-reference-manifest.js +3 -0
  67. package/.next/server/app/install.sh/route/app-paths-manifest.json +3 -0
  68. package/.next/server/app/install.sh/route/build-manifest.json +9 -0
  69. package/.next/server/app/install.sh/route/server-reference-manifest.json +4 -0
  70. package/.next/server/app/install.sh/route.js +6 -0
  71. package/.next/server/app/install.sh/route.js.map +5 -0
  72. package/.next/server/app/install.sh/route.js.nft.json +1 -0
  73. package/.next/server/app/install.sh/route_client-reference-manifest.js +3 -0
  74. package/.next/server/app/install.sh.body +108 -0
  75. package/.next/server/app/install.sh.meta +1 -0
  76. package/.next/server/app/page/build-manifest.json +4 -5
  77. package/.next/server/app/page.js +8 -5
  78. package/.next/server/app/page.js.nft.json +1 -1
  79. package/.next/server/app/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  81. package/.next/server/app/settings/page/build-manifest.json +16 -0
  82. package/.next/server/app/settings/page/next-font-manifest.json +11 -0
  83. package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  84. package/.next/server/app/settings/page/server-reference-manifest.json +4 -0
  85. package/.next/server/app/settings/page.js +17 -0
  86. package/.next/server/app/settings/page.js.map +5 -0
  87. package/.next/server/app/settings/page.js.nft.json +1 -0
  88. package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
  89. package/.next/server/app-paths-manifest.json +7 -1
  90. package/.next/server/chunks/[externals]__0_i~3ox._.js +3 -0
  91. package/.next/server/chunks/[externals]__0_i~3ox._.js.map +1 -0
  92. package/.next/server/chunks/[externals]__13p_1zh._.js +3 -0
  93. package/.next/server/chunks/[externals]__13p_1zh._.js.map +1 -0
  94. package/.next/server/chunks/[root-of-the-server]__01t2c3w._.js +38 -0
  95. package/.next/server/chunks/[root-of-the-server]__01t2c3w._.js.map +1 -0
  96. package/.next/server/chunks/{[root-of-the-server]__0g0u0lm._.js → [root-of-the-server]__024yzee._.js} +2 -2
  97. package/.next/server/chunks/{[root-of-the-server]__00q0o~z._.js → [root-of-the-server]__082iwfa._.js} +2 -2
  98. package/.next/server/chunks/[root-of-the-server]__0chedn~._.js +1 -1
  99. package/.next/server/chunks/[root-of-the-server]__0mwf0bn._.js +38 -0
  100. package/.next/server/chunks/[root-of-the-server]__0mwf0bn._.js.map +1 -0
  101. package/.next/server/chunks/{[root-of-the-server]__0-74syk._.js → [root-of-the-server]__0ru3_it._.js} +2 -2
  102. package/.next/server/chunks/[root-of-the-server]__0u6y_k1._.js +111 -0
  103. package/.next/server/chunks/[root-of-the-server]__0u6y_k1._.js.map +1 -0
  104. package/.next/server/chunks/{[root-of-the-server]__0866q87._.js → [root-of-the-server]__0xa4dzi._.js} +2 -2
  105. package/.next/server/chunks/[root-of-the-server]__13415c6._.js +96 -0
  106. package/.next/server/chunks/[root-of-the-server]__13415c6._.js.map +1 -0
  107. package/.next/server/chunks/[root-of-the-server]__13j_28o._.js +96 -0
  108. package/.next/server/chunks/[root-of-the-server]__13j_28o._.js.map +1 -0
  109. package/.next/server/chunks/_next-internal_server_app_api_float_route_actions_012j~jr.js +3 -0
  110. package/.next/server/chunks/_next-internal_server_app_api_float_route_actions_012j~jr.js.map +1 -0
  111. package/.next/server/chunks/_next-internal_server_app_api_settings_alerts_route_actions_0ydcyko.js +3 -0
  112. package/.next/server/chunks/_next-internal_server_app_api_settings_alerts_route_actions_0ydcyko.js.map +1 -0
  113. package/.next/server/chunks/_next-internal_server_app_api_settings_notify_route_actions_0-j35mb.js +3 -0
  114. package/.next/server/chunks/_next-internal_server_app_api_settings_notify_route_actions_0-j35mb.js.map +1 -0
  115. package/.next/server/chunks/_next-internal_server_app_install_sh_route_actions_0cj-6me.js +3 -0
  116. package/.next/server/chunks/_next-internal_server_app_install_sh_route_actions_0cj-6me.js.map +1 -0
  117. package/.next/server/chunks/node_modules_next_06f88ko._.js +19 -0
  118. package/.next/server/chunks/node_modules_next_06f88ko._.js.map +1 -0
  119. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_03jj5jj.js +18 -0
  120. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_03jj5jj.js.map +1 -0
  121. package/.next/server/chunks/src_12i1qk5._.js +3 -0
  122. package/.next/server/chunks/src_12i1qk5._.js.map +1 -0
  123. package/.next/server/chunks/src_lib_alerts_ticker_ts_0n6oy1d._.js +169 -0
  124. package/.next/server/chunks/src_lib_alerts_ticker_ts_0n6oy1d._.js.map +1 -0
  125. package/.next/server/chunks/ssr/[root-of-the-server]__03mt8o0._.js +3 -0
  126. package/.next/server/chunks/ssr/[root-of-the-server]__03mt8o0._.js.map +1 -0
  127. package/.next/server/chunks/ssr/{[root-of-the-server]__098zro9._.js → [root-of-the-server]__090jxzh._.js} +2 -2
  128. package/.next/server/chunks/ssr/[root-of-the-server]__090jxzh._.js.map +1 -0
  129. package/.next/server/chunks/ssr/{[root-of-the-server]__09hgk-7._.js → [root-of-the-server]__0c3j40u._.js} +2 -2
  130. package/.next/server/chunks/ssr/[root-of-the-server]__0c3j40u._.js.map +1 -0
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0ot4nev._.js +3 -0
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0ot4nev._.js.map +1 -0
  133. package/.next/server/chunks/ssr/[root-of-the-server]__0q_~l2m._.js +90 -0
  134. package/.next/server/chunks/ssr/[root-of-the-server]__0q_~l2m._.js.map +1 -0
  135. package/.next/server/chunks/ssr/{[root-of-the-server]__0cqes87._.js → [root-of-the-server]__0qt26ty._.js} +2 -2
  136. package/.next/server/chunks/ssr/[root-of-the-server]__0qt26ty._.js.map +1 -0
  137. package/.next/server/chunks/ssr/[root-of-the-server]__0s5.uhg._.js +55 -0
  138. package/.next/server/chunks/ssr/[root-of-the-server]__0s5.uhg._.js.map +1 -0
  139. package/.next/server/chunks/ssr/[root-of-the-server]__0x~-phx._.js +3 -0
  140. package/.next/server/chunks/ssr/[root-of-the-server]__0x~-phx._.js.map +1 -0
  141. package/.next/server/chunks/ssr/[root-of-the-server]__0y_zq8k._.js +3 -0
  142. package/.next/server/chunks/ssr/[root-of-the-server]__0y_zq8k._.js.map +1 -0
  143. package/.next/server/chunks/ssr/{[root-of-the-server]__08qr2ji._.js → [root-of-the-server]__0~953ob._.js} +2 -2
  144. package/.next/server/chunks/ssr/[root-of-the-server]__0~953ob._.js.map +1 -0
  145. package/.next/server/chunks/ssr/_0-9j34y._.js +70 -0
  146. package/.next/server/chunks/ssr/_0-9j34y._.js.map +1 -0
  147. package/.next/server/chunks/ssr/_0jxmm9h._.js +6 -0
  148. package/.next/server/chunks/ssr/_0jxmm9h._.js.map +1 -0
  149. package/.next/server/chunks/ssr/_0lfe3wr._.js +3 -0
  150. package/.next/server/chunks/ssr/_0lfe3wr._.js.map +1 -0
  151. package/.next/server/chunks/ssr/{node_modules_0i2xw~e._.js → _0nvprxh._.js} +5 -2
  152. package/.next/server/chunks/ssr/_0nvprxh._.js.map +1 -0
  153. package/.next/server/chunks/ssr/_0pugb10._.js +6 -0
  154. package/.next/server/chunks/ssr/_0pugb10._.js.map +1 -0
  155. package/.next/server/chunks/ssr/_next-internal_server_app_float_page_actions_0x6hm4p.js +3 -0
  156. package/.next/server/chunks/ssr/_next-internal_server_app_float_page_actions_0x6hm4p.js.map +1 -0
  157. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js +3 -0
  158. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js.map +1 -0
  159. package/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_11~q6fv._.js +3 -0
  160. package/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_11~q6fv._.js.map +1 -0
  161. package/.next/server/chunks/ssr/node_modules_next_dist_09jzzl8._.js +3 -0
  162. package/.next/server/chunks/ssr/node_modules_next_dist_09jzzl8._.js.map +1 -0
  163. package/.next/server/chunks/ssr/{node_modules_next_dist_0e1izl_._.js → node_modules_next_dist_0h9llsw._.js} +2 -2
  164. package/.next/server/chunks/ssr/node_modules_next_dist_0h9llsw._.js.map +1 -0
  165. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06b_a87.js +4 -0
  166. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06b_a87.js.map +1 -0
  167. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0p_u4px.js +4 -0
  168. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0p_u4px.js.map +1 -0
  169. package/.next/server/chunks/ssr/src_0urkups._.js +3 -0
  170. package/.next/server/chunks/ssr/src_0urkups._.js.map +1 -0
  171. package/.next/server/chunks/ssr/src_components_0ox9d~w._.js +3 -0
  172. package/.next/server/chunks/ssr/src_components_0ox9d~w._.js.map +1 -0
  173. package/.next/server/chunks/ssr/src_components_CodexAccountsPanel_tsx_0n9xjzi._.js +1 -1
  174. package/.next/server/chunks/ssr/src_components_CodexAccountsPanel_tsx_0n9xjzi._.js.map +1 -1
  175. package/.next/server/chunks/ssr/src_components_FloatingWidget_tsx_089.6oo._.js +3 -0
  176. package/.next/server/chunks/ssr/src_components_FloatingWidget_tsx_089.6oo._.js.map +1 -0
  177. package/.next/server/chunks/ssr/src_lib_i18n_client_tsx_07pysgz._.js +3 -0
  178. package/.next/server/chunks/ssr/src_lib_i18n_client_tsx_07pysgz._.js.map +1 -0
  179. package/.next/server/edge/chunks/_0-m5tdn._.js +3 -0
  180. package/.next/server/edge/chunks/_0-m5tdn._.js.map +1 -0
  181. package/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_0mz-5sp.js.map +1 -0
  182. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_0mz-5sp.js +3 -0
  183. package/.next/server/functions-config-manifest.json +4 -1
  184. package/.next/server/instrumentation/middleware-manifest.json +12 -0
  185. package/.next/server/instrumentation.js +4 -0
  186. package/.next/server/instrumentation.js.map +5 -0
  187. package/.next/server/instrumentation.js.nft.json +1 -0
  188. package/.next/server/middleware-build-manifest.js +7 -8
  189. package/.next/server/next-font-manifest.js +1 -1
  190. package/.next/server/next-font-manifest.json +8 -0
  191. package/.next/server/pages/500.html +1 -1
  192. package/.next/server/pages-manifest.json +0 -1
  193. package/.next/server/server-reference-manifest.js +1 -1
  194. package/.next/server/server-reference-manifest.json +1 -1
  195. package/.next/static/chunks/0bymg5d-lqs0o.js +5 -0
  196. package/.next/static/chunks/0ebdqsutnp8y4.js +1 -0
  197. package/.next/static/chunks/0i3~mnai-l497.js +1 -0
  198. package/.next/static/chunks/0idj4tdmyr934.js +1 -0
  199. package/.next/static/chunks/10eoi4q2wk80z.js +1 -0
  200. package/.next/static/chunks/10refkmyp9rbl.css +3 -0
  201. package/.next/static/chunks/{07lhk_q6pmm3r.js → 10u3y4bw1ayzs.js} +1 -1
  202. package/.next/static/chunks/{00gq-v0e07i1q.js → 115dplafwys-z.js} +1 -1
  203. package/.next/static/chunks/12-9memveha-v.js +1 -0
  204. package/.next/static/chunks/163s8y.j70104.js +4 -0
  205. package/.next/static/chunks/turbopack-0k9twle9a8sh6.js +1 -0
  206. package/.next/types/routes.d.ts +8 -2
  207. package/.next/types/validator.ts +54 -0
  208. package/README.md +57 -17
  209. package/bin/vibemeter-float.swift +970 -0
  210. package/bin/vibemeter-notify.sh +172 -0
  211. package/bin/vibemeter.mjs +385 -7
  212. package/package.json +2 -1
  213. package/public/demo1.png +0 -0
  214. package/public/float-ball.png +0 -0
  215. package/public/float-collapsed.png +0 -0
  216. package/public/float-expanded.png +0 -0
  217. package/public/pay-alipay.jpg +0 -0
  218. package/.next/server/app/_not-found.html +0 -1
  219. package/.next/server/app/_not-found.meta +0 -16
  220. package/.next/server/app/_not-found.rsc +0 -16
  221. package/.next/server/app/_not-found.segments/_full.segment.rsc +0 -16
  222. package/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  223. package/.next/server/app/_not-found.segments/_index.segment.rsc +0 -5
  224. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  225. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  226. package/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
  227. package/.next/server/chunks/[root-of-the-server]__0y68a5d._.js +0 -96
  228. package/.next/server/chunks/[root-of-the-server]__0y68a5d._.js.map +0 -1
  229. package/.next/server/chunks/ssr/[root-of-the-server]__054lv8d._.js +0 -3
  230. package/.next/server/chunks/ssr/[root-of-the-server]__054lv8d._.js.map +0 -1
  231. package/.next/server/chunks/ssr/[root-of-the-server]__08qr2ji._.js.map +0 -1
  232. package/.next/server/chunks/ssr/[root-of-the-server]__098zro9._.js.map +0 -1
  233. package/.next/server/chunks/ssr/[root-of-the-server]__09hgk-7._.js.map +0 -1
  234. package/.next/server/chunks/ssr/[root-of-the-server]__0cqes87._.js.map +0 -1
  235. package/.next/server/chunks/ssr/[root-of-the-server]__0l.drdn._.js +0 -3
  236. package/.next/server/chunks/ssr/[root-of-the-server]__0l.drdn._.js.map +0 -1
  237. package/.next/server/chunks/ssr/[root-of-the-server]__0v1zqf~._.js +0 -120
  238. package/.next/server/chunks/ssr/[root-of-the-server]__0v1zqf~._.js.map +0 -1
  239. package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js +0 -3
  240. package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js.map +0 -1
  241. package/.next/server/chunks/ssr/_0ye~8el._.js +0 -7
  242. package/.next/server/chunks/ssr/_0ye~8el._.js.map +0 -1
  243. package/.next/server/chunks/ssr/node_modules_0ck2~9g._.js +0 -3
  244. package/.next/server/chunks/ssr/node_modules_0ck2~9g._.js.map +0 -1
  245. package/.next/server/chunks/ssr/node_modules_0i2xw~e._.js.map +0 -1
  246. package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js.map +0 -1
  247. package/.next/server/chunks/ssr/node_modules_next_dist_0gsjr7_._.js +0 -3
  248. package/.next/server/chunks/ssr/node_modules_next_dist_0gsjr7_._.js.map +0 -1
  249. package/.next/server/pages/404.html +0 -1
  250. package/.next/static/chunks/002~6040mndie.css +0 -3
  251. package/.next/static/chunks/02g3221oh~3le.js +0 -2
  252. package/.next/static/chunks/0ljfidstam_7k.js +0 -1
  253. package/.next/static/chunks/0pqt~8bl3ukh4.js +0 -4
  254. package/.next/static/chunks/0yz9oprcns4nm.js +0 -2
  255. package/.next/static/chunks/turbopack-14vio.b1b9i4l.js +0 -1
  256. /package/.next/server/chunks/{[root-of-the-server]__0g0u0lm._.js.map → [root-of-the-server]__024yzee._.js.map} +0 -0
  257. /package/.next/server/chunks/{[root-of-the-server]__00q0o~z._.js.map → [root-of-the-server]__082iwfa._.js.map} +0 -0
  258. /package/.next/server/chunks/{[root-of-the-server]__0-74syk._.js.map → [root-of-the-server]__0ru3_it._.js.map} +0 -0
  259. /package/.next/server/chunks/{[root-of-the-server]__0866q87._.js.map → [root-of-the-server]__0xa4dzi._.js.map} +0 -0
  260. /package/.next/static/{DcqlVrgh4gM8jlqrnOCpT → _Y03MiN6NI16Ms86q6vCJ}/_buildManifest.js +0 -0
  261. /package/.next/static/{DcqlVrgh4gM8jlqrnOCpT → _Y03MiN6NI16Ms86q6vCJ}/_clientMiddlewareManifest.js +0 -0
  262. /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)})();
@@ -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
 
@@ -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
  ![Vibemeter dashboard](docs/demo1.png)
8
8
 
9
+ <p align="center">
10
+ <img src="public/float-ball.png" alt="Vibemeter floating ball" width="380">
11
+ &nbsp;&nbsp;
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
- ```bash
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
- That's the whole install. Hit Ctrl-C to stop.
41
+ Prefer doing it manually?
28
42
 
29
- ## Run as a background service (macOS)
43
+ ```bash
44
+ npm install -g @hirra/vibemeter
45
+ vibemeter install
46
+ vibemeter float
47
+ ```
30
48
 
31
- Want it always running on login? One command:
49
+ ## Run in the foreground
32
50
 
33
51
  ```bash
34
- npx @hirra/vibemeter install
52
+ vibemeter
35
53
  ```
36
54
 
37
- This 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`.
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
- npx @hirra/vibemeter status # see if it's loaded + tail the log
41
- npx @hirra/vibemeter uninstall # remove the LaunchAgent
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` | start the server in the foreground (Ctrl-C to stop) |
51
- | `vibemeter install` | register a LaunchAgent so it runs on login (macOS) |
52
- | `vibemeter uninstall` | remove the auto-start config |
53
- | `vibemeter status` | show whether the daemon is loaded + tail log |
54
- | `vibemeter help` | print usage |
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.