vibestats 1.4.4 → 1.4.5

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 (120) hide show
  1. package/dist/index.js +26 -5
  2. package/dist/web/404.html +1 -1
  3. package/dist/web/_next/static/chunks/app/dashboard/activity/page-160297e59ddc3e90.js +1 -0
  4. package/dist/web/_next/static/chunks/app/dashboard/usage/page-1dc2f581c9259a42.js +1 -0
  5. package/dist/web/_next/static/chunks/app/dashboard/wrapped/page-9474fad21b940fd3.js +1 -0
  6. package/dist/web/activity.html +1 -1
  7. package/dist/web/activity.txt +1 -1
  8. package/dist/web/changelog.html +1 -1
  9. package/dist/web/changelog.txt +56 -55
  10. package/dist/web/compare/claude-code-vs-codex-cli-tracking.html +1 -1
  11. package/dist/web/compare/claude-code-vs-codex-cli-tracking.txt +1 -1
  12. package/dist/web/compare/daily-vs-monthly-ai-usage-reports.html +1 -1
  13. package/dist/web/compare/daily-vs-monthly-ai-usage-reports.txt +1 -1
  14. package/dist/web/compare/local-vs-cloud-ai-analytics.html +1 -1
  15. package/dist/web/compare/local-vs-cloud-ai-analytics.txt +1 -1
  16. package/dist/web/compare/manual-tracking-vs-vibestats.html +1 -1
  17. package/dist/web/compare/manual-tracking-vs-vibestats.txt +1 -1
  18. package/dist/web/compare/querystring-shares-vs-stored-share-pages.html +1 -1
  19. package/dist/web/compare/querystring-shares-vs-stored-share-pages.txt +1 -1
  20. package/dist/web/compare/session-breakdown-vs-model-breakdown.html +1 -1
  21. package/dist/web/compare/session-breakdown-vs-model-breakdown.txt +1 -1
  22. package/dist/web/compare/single-source-vs-combined-tracking.html +1 -1
  23. package/dist/web/compare/single-source-vs-combined-tracking.txt +1 -1
  24. package/dist/web/compare/terminal-table-vs-json-output.html +1 -1
  25. package/dist/web/compare/terminal-table-vs-json-output.txt +1 -1
  26. package/dist/web/compare/token-volume-vs-cost-estimation.html +1 -1
  27. package/dist/web/compare/token-volume-vs-cost-estimation.txt +1 -1
  28. package/dist/web/compare/wrapped-vs-activity-heatmap.html +1 -1
  29. package/dist/web/compare/wrapped-vs-activity-heatmap.txt +1 -1
  30. package/dist/web/compare.html +1 -1
  31. package/dist/web/compare.txt +1 -1
  32. package/dist/web/dashboard/activity.html +1 -1
  33. package/dist/web/dashboard/activity.txt +2 -2
  34. package/dist/web/dashboard/usage.html +1 -1
  35. package/dist/web/dashboard/usage.txt +2 -2
  36. package/dist/web/dashboard/wrapped.html +1 -1
  37. package/dist/web/dashboard/wrapped.txt +2 -2
  38. package/dist/web/dashboard.html +1 -1
  39. package/dist/web/dashboard.txt +1 -1
  40. package/dist/web/docs/commands.html +1 -1
  41. package/dist/web/docs/commands.txt +1 -1
  42. package/dist/web/docs.html +1 -1
  43. package/dist/web/docs.txt +1 -1
  44. package/dist/web/features/ai-coding-activity-heatmap.html +1 -1
  45. package/dist/web/features/ai-coding-activity-heatmap.txt +1 -1
  46. package/dist/web/features/ai-coding-wrapped.html +1 -1
  47. package/dist/web/features/ai-coding-wrapped.txt +1 -1
  48. package/dist/web/features/claude-code-stats.html +1 -1
  49. package/dist/web/features/claude-code-stats.txt +1 -1
  50. package/dist/web/features/claude-diagnostics.html +1 -1
  51. package/dist/web/features/claude-diagnostics.txt +1 -1
  52. package/dist/web/features/codex-cli-stats.html +1 -1
  53. package/dist/web/features/codex-cli-stats.txt +1 -1
  54. package/dist/web/features/combined-ai-coding-stats.html +1 -1
  55. package/dist/web/features/combined-ai-coding-stats.txt +1 -1
  56. package/dist/web/features/json-and-automation-exports.html +1 -1
  57. package/dist/web/features/json-and-automation-exports.txt +1 -1
  58. package/dist/web/features/model-breakdown.html +1 -1
  59. package/dist/web/features/model-breakdown.txt +1 -1
  60. package/dist/web/features/privacy-first-analytics.html +1 -1
  61. package/dist/web/features/privacy-first-analytics.txt +1 -1
  62. package/dist/web/features/session-breakdown.html +1 -1
  63. package/dist/web/features/session-breakdown.txt +1 -1
  64. package/dist/web/features/share-pages.html +1 -1
  65. package/dist/web/features/share-pages.txt +1 -1
  66. package/dist/web/features/token-and-cost-tracking.html +1 -1
  67. package/dist/web/features/token-and-cost-tracking.txt +1 -1
  68. package/dist/web/features.html +1 -1
  69. package/dist/web/features.txt +1 -1
  70. package/dist/web/guides/how-to-build-ai-activity-heatmap.html +1 -1
  71. package/dist/web/guides/how-to-build-ai-activity-heatmap.txt +1 -1
  72. package/dist/web/guides/how-to-compare-model-usage.html +1 -1
  73. package/dist/web/guides/how-to-compare-model-usage.txt +1 -1
  74. package/dist/web/guides/how-to-create-ai-coding-wrapped.html +1 -1
  75. package/dist/web/guides/how-to-create-ai-coding-wrapped.txt +1 -1
  76. package/dist/web/guides/how-to-measure-ai-token-costs.html +1 -1
  77. package/dist/web/guides/how-to-measure-ai-token-costs.txt +1 -1
  78. package/dist/web/guides/how-to-read-claude-diagnostics.html +1 -1
  79. package/dist/web/guides/how-to-read-claude-diagnostics.txt +1 -1
  80. package/dist/web/guides/how-to-share-ai-coding-stats.html +1 -1
  81. package/dist/web/guides/how-to-share-ai-coding-stats.txt +1 -1
  82. package/dist/web/guides/how-to-track-claude-code-usage.html +1 -1
  83. package/dist/web/guides/how-to-track-claude-code-usage.txt +1 -1
  84. package/dist/web/guides/how-to-track-codex-cli-usage.html +1 -1
  85. package/dist/web/guides/how-to-track-codex-cli-usage.txt +1 -1
  86. package/dist/web/guides.html +1 -1
  87. package/dist/web/guides.txt +1 -1
  88. package/dist/web/index.html +1 -1
  89. package/dist/web/index.txt +1 -1
  90. package/dist/web/sitemap.xml +46 -46
  91. package/dist/web/use-cases/ai-agencies.html +1 -1
  92. package/dist/web/use-cases/ai-agencies.txt +1 -1
  93. package/dist/web/use-cases/consultants.html +1 -1
  94. package/dist/web/use-cases/consultants.txt +1 -1
  95. package/dist/web/use-cases/engineering-managers.html +1 -1
  96. package/dist/web/use-cases/engineering-managers.txt +1 -1
  97. package/dist/web/use-cases/freelancers.html +1 -1
  98. package/dist/web/use-cases/freelancers.txt +1 -1
  99. package/dist/web/use-cases/indie-hackers.html +1 -1
  100. package/dist/web/use-cases/indie-hackers.txt +1 -1
  101. package/dist/web/use-cases/monthly-reporting.html +1 -1
  102. package/dist/web/use-cases/monthly-reporting.txt +1 -1
  103. package/dist/web/use-cases/open-source-maintainers.html +1 -1
  104. package/dist/web/use-cases/open-source-maintainers.txt +1 -1
  105. package/dist/web/use-cases/personal-retrospectives.html +1 -1
  106. package/dist/web/use-cases/personal-retrospectives.txt +1 -1
  107. package/dist/web/use-cases/researchers.html +1 -1
  108. package/dist/web/use-cases/researchers.txt +1 -1
  109. package/dist/web/use-cases/weekly-reviews.html +1 -1
  110. package/dist/web/use-cases/weekly-reviews.txt +1 -1
  111. package/dist/web/use-cases.html +1 -1
  112. package/dist/web/use-cases.txt +1 -1
  113. package/dist/web/wrapped.html +1 -1
  114. package/dist/web/wrapped.txt +1 -1
  115. package/package.json +8 -7
  116. package/dist/web/_next/static/chunks/app/dashboard/activity/page-e84049538e03061e.js +0 -1
  117. package/dist/web/_next/static/chunks/app/dashboard/usage/page-b42b457b8fd3865c.js +0 -1
  118. package/dist/web/_next/static/chunks/app/dashboard/wrapped/page-268dced4ee2726f7.js +0 -1
  119. /package/dist/web/_next/static/{aQYb4B4UpDj-CZ4C2kvCF → kD14dO620KehOuGqHcg1C}/_buildManifest.js +0 -0
  120. /package/dist/web/_next/static/{aQYb4B4UpDj-CZ4C2kvCF → kD14dO620KehOuGqHcg1C}/_ssgManifest.js +0 -0
package/dist/index.js CHANGED
@@ -311,6 +311,13 @@ var MODEL_PRICING = {
311
311
  cacheWrite: 0.3,
312
312
  cacheRead: 0.03
313
313
  },
314
+ // Claude Fable 5 pricing from Anthropic API pricing as of 2026-06-10.
315
+ "claude-fable-5": {
316
+ input: 10,
317
+ output: 50,
318
+ cacheWrite: 12.5,
319
+ cacheRead: 1
320
+ },
314
321
  // Opus 4.8 (same pricing as Opus 4.7)
315
322
  "claude-opus-4-8": {
316
323
  input: 5,
@@ -404,6 +411,9 @@ function isKimiK25Turbo(normalized) {
404
411
  function isMiniMaxM27(normalized) {
405
412
  return normalized.includes("minimax-code") || normalized.includes("custom:minimax-m2.7") || normalized.includes("custom:minimax-m2-7") || normalized.includes("minimax-m2.7") || normalized.includes("minimax-m2-7");
406
413
  }
414
+ function isClaudeFable(normalized) {
415
+ return normalized.includes("fable");
416
+ }
407
417
  function isKimiFamilyModel(modelName) {
408
418
  const normalized = normalizeModelName(modelName);
409
419
  return isKimiK25Turbo(normalized) || normalized.includes("kimi");
@@ -417,7 +427,7 @@ function isClaudeFamilyModel(modelName) {
417
427
  if (isKimiFamilyModel(normalized) || isMiniMaxFamilyModel(normalized)) {
418
428
  return false;
419
429
  }
420
- return normalized.includes("claude") || hasModelVersion(normalized, "opus", "4.8") || hasModelVersion(normalized, "opus", "4.7") || hasModelVersion(normalized, "opus", "4.6") || hasModelVersion(normalized, "opus", "4.5") || normalized.includes("opus") || hasModelVersion(normalized, "opus", "4.1") || normalized.includes("opus-4") || hasModelVersion(normalized, "sonnet", "4.6") || hasModelVersion(normalized, "sonnet", "4.5") || normalized.includes("sonnet") || hasModelVersion(normalized, "haiku", "4.5") || hasModelVersion(normalized, "haiku", "3.5") || normalized.includes("haiku");
430
+ return normalized.includes("claude") || isClaudeFable(normalized) || hasModelVersion(normalized, "opus", "4.8") || hasModelVersion(normalized, "opus", "4.7") || hasModelVersion(normalized, "opus", "4.6") || hasModelVersion(normalized, "opus", "4.5") || normalized.includes("opus") || hasModelVersion(normalized, "opus", "4.1") || normalized.includes("opus-4") || hasModelVersion(normalized, "sonnet", "4.6") || hasModelVersion(normalized, "sonnet", "4.5") || normalized.includes("sonnet") || hasModelVersion(normalized, "haiku", "4.5") || hasModelVersion(normalized, "haiku", "3.5") || normalized.includes("haiku");
421
431
  }
422
432
  function matchesModelFamilies(modelName, families) {
423
433
  if (!families || families.length === 0) return true;
@@ -450,6 +460,9 @@ function tryGetModelPricing(modelName) {
450
460
  if (isMiniMaxM27(normalized)) {
451
461
  return MODEL_PRICING["MiniMax-M2.7"];
452
462
  }
463
+ if (isClaudeFable(normalized)) {
464
+ return MODEL_PRICING["claude-fable-5"];
465
+ }
453
466
  if (hasModelVersion(normalized, "opus", "4.8")) {
454
467
  return MODEL_PRICING["claude-opus-4-8"];
455
468
  }
@@ -496,6 +509,9 @@ function getModelDisplayName(modelName) {
496
509
  if (isMiniMaxM27(normalized)) {
497
510
  return "MiniMax-M2.7";
498
511
  }
512
+ if (isClaudeFable(normalized)) {
513
+ return "Claude Fable";
514
+ }
499
515
  if (hasModelVersion(normalized, "opus", "4.8")) return "Opus 4.8";
500
516
  if (hasModelVersion(normalized, "opus", "4.7")) return "Opus 4.7";
501
517
  if (hasModelVersion(normalized, "opus", "4.6")) return "Opus 4.6";
@@ -588,11 +604,13 @@ function encodeActivityToUrl(payload, baseUrl = "https://vibestats.wolfai.dev")
588
604
  return `${baseUrl}/activity?${params.toString()}`;
589
605
  }
590
606
  var CLAUDE_DISPLAY_TO_TOKEN = {
607
+ "Claude Fable": "fable",
608
+ "Opus 4.8": "o48",
591
609
  "Opus 4.7": "o47",
592
610
  "Opus 4.6": "o46",
593
611
  "Opus 4.5": "o45",
594
612
  "Opus 4.1": "o41",
595
- Opus: "o47",
613
+ Opus: "o48",
596
614
  "Sonnet 4.6": "s46",
597
615
  "Sonnet 4.5": "s45",
598
616
  "Sonnet 3.5": "s35",
@@ -606,11 +624,13 @@ function getModelTokenFromDisplayName(displayName) {
606
624
  return CLAUDE_DISPLAY_TO_TOKEN[displayName];
607
625
  }
608
626
  const normalized = displayName.toLowerCase();
627
+ if (normalized.includes("fable")) return "fable";
628
+ if (normalized.includes("opus") && normalized.includes("4.8")) return "o48";
609
629
  if (normalized.includes("opus") && normalized.includes("4.7")) return "o47";
610
630
  if (normalized.includes("opus") && normalized.includes("4.6")) return "o46";
611
631
  if (normalized.includes("opus") && normalized.includes("4.5")) return "o45";
612
632
  if (normalized.includes("opus") && normalized.includes("4.1")) return "o41";
613
- if (normalized.includes("opus")) return "o47";
633
+ if (normalized.includes("opus")) return "o48";
614
634
  if (normalized.includes("sonnet") && normalized.includes("4.6")) return "s46";
615
635
  if (normalized.includes("sonnet") && normalized.includes("4.5")) return "s45";
616
636
  if (normalized.includes("sonnet") && normalized.includes("3.5")) return "s35";
@@ -959,8 +979,8 @@ async function mapWithConcurrency(items, concurrency, worker) {
959
979
  import { promises as fs } from "fs";
960
980
  import { homedir } from "os";
961
981
  import { dirname, join } from "path";
962
- var USAGE_CACHE_SCHEMA_VERSION = 1;
963
- var USAGE_CACHE_FILENAME = "usage-entries-v1.json";
982
+ var USAGE_CACHE_SCHEMA_VERSION = 2;
983
+ var USAGE_CACHE_FILENAME = "usage-entries-v2.json";
964
984
  var CACHE_LOCK_TIMEOUT_MS = 2e3;
965
985
  var CACHE_LOCK_RETRY_MS = 25;
966
986
  var CACHE_LOCK_STALE_MS = 3e4;
@@ -2251,6 +2271,7 @@ function filterByDateRange(entries, since, until) {
2251
2271
  }
2252
2272
  function sortModelsByTier(models) {
2253
2273
  const claudeTierPriority = {
2274
+ "Claude Fable": 120,
2254
2275
  "Opus 4.8": 103,
2255
2276
  "Opus 4.7": 102,
2256
2277
  "Opus 4.6": 101,
package/dist/web/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><!--aQYb4B4UpDj_CZ4C2kvCF--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>vibestats</title><meta name="description" content="Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics"/><meta name="robots" content="index, follow"/><link rel="canonical" href="https://vibestats.wolfai.dev"/><meta property="og:title" content="vibestats"/><meta property="og:description" content="Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses."/><meta property="og:url" content="https://vibestats.wolfai.dev"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="vibestats"/><meta name="twitter:description" content="Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n5:I[496,[],\"OutletBoundary\"]\n7:I[3737,[],\"AsyncMetadataOutlet\"]\n9:I[496,[],\"ViewportBoundary\"]\nb:I[496,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"aQYb4B4UpDj-CZ4C2kvCF\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics\"}],[\"$\",\"meta\",\"4\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--kD14dO620KehOuGqHcg1C--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>vibestats</title><meta name="description" content="Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics"/><meta name="robots" content="index, follow"/><link rel="canonical" href="https://vibestats.wolfai.dev"/><meta property="og:title" content="vibestats"/><meta property="og:description" content="Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses."/><meta property="og:url" content="https://vibestats.wolfai.dev"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="vibestats"/><meta name="twitter:description" content="Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n5:I[496,[],\"OutletBoundary\"]\n7:I[3737,[],\"AsyncMetadataOutlet\"]\n9:I[496,[],\"ViewportBoundary\"]\nb:I[496,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"kD14dO620KehOuGqHcg1C\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics\"}],[\"$\",\"meta\",\"4\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. Generate token, cost, wrapped, activity, and share reports without uploading prompts or responses.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[199],{539:(e,t,a)=>{"use strict";a.d(t,{Xv:()=>l,b6:()=>i,zP:()=>d}),a(5603);var s=a(471).Buffer;function n(e){let t=Number.parseFloat(e);return e.endsWith("B")?1e9*t:e.endsWith("M")?1e6*t:e.endsWith("K")?1e3*t:t}function c(e){let t=e.trim().toLowerCase(),a=(e,a)=>{let s=a.replace(/\./g,"[\\s._-]*"),n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),c="(?:^|[^a-z0-9])",o="(?:[^a-z0-9]|$)";return new RegExp("".concat(c).concat(n,"(?:[^a-z0-9]+)?").concat(s).concat(o)).test(t)||new RegExp("".concat(c).concat(s,"(?:[^a-z0-9]+)?").concat(n).concat(o)).test(t)};return t.includes("accounts/fireworks/routers/kimi-k2p5-turbo")||t.includes("accounts/fireworks/models/kimi-k2p5-turbo")||t.includes("custom:kimi-k2.5-turbo")||t.includes("custom:kimi-k2p5-turbo")||t.includes("kimi")&&(t.includes("k2.5")||t.includes("k2p5"))&&t.includes("turbo")?"Kimi K2.5 Turbo":t.includes("custom:minimax-m2.7")||t.includes("custom:minimax-m2-7")||t.includes("minimax-m2.7")||t.includes("minimax-m2-7")?"MiniMax-M2.7":t.includes("fable")?"Claude Fable":a("opus","4.8")?"Opus 4.8":a("opus","4.7")?"Opus 4.7":a("opus","4.6")?"Opus 4.6":a("opus","4.5")?"Opus 4.5":a("opus","4.1")?"Opus 4.1":t.includes("opus")?"Opus 4.8":a("sonnet","4.6")?"Sonnet 4.6":a("sonnet","4.5")?"Sonnet 4.5":a("sonnet","3.5")?"Sonnet 3.5":t.includes("sonnet")?"Sonnet":a("haiku","4.5")?"Haiku 4.5":a("haiku","3.5")?"Haiku 3.5":t.includes("haiku")?"Haiku":e}function o(e){var t;if(e.startsWith("raw_"))try{return c(decodeURIComponent(e.slice(4)))}catch(t){return c(e.slice(4))}return c(null!=(t=({fable:"Claude Fable",o48:"Opus 4.8",o47:"Opus 4.7",o46:"Opus 4.6",o45:"Opus 4.5",o41:"Opus 4.1",opus:"Opus 4.8",s46:"Sonnet 4.6",s45:"Sonnet 4.5",s35:"Sonnet 3.5",sonnet:"Sonnet",h45:"Haiku 4.5",h35:"Haiku 3.5",haiku:"Haiku",g54:"GPT-5.4",g53s:"GPT-5.3 Codex Spark",g53c:"GPT-5.3 Codex",g53:"GPT-5.3",g52c:"GPT-5.2 Codex",g52:"GPT-5.2",g51cm:"GPT-5.1 Codex Max",g51m:"GPT-5.1 Max",g51cn:"GPT-5.1 Codex Mini",g51n:"GPT-5.1 Mini",g51c:"GPT-5.1 Codex",g51:"GPT-5.1",g5:"GPT-5",g5n:"GPT-5 Mini",g4o:"GPT-4o",g4om:"GPT-4o Mini"})[e])?t:e)}function r(e){if(e)try{if(void 0!==s)return JSON.parse(s.from(e,"base64url").toString("utf-8"));let t=e.replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(t))}catch(e){return}}function l(e){var t;let a=e.get("s");if(!a)return null;let s=e.get("src"),c=(e.get("mb")||"").split(",").map(e=>{let[t,a]=e.split(":");return t?{model:o(t),percentage:Number.parseInt(null!=a?a:"0",10)||0}:null}).filter(e=>!!e);return{sessions:Number.parseInt(a,10),messages:0,totalTokens:n(e.get("t")||"0"),totalCost:Number.parseFloat(e.get("c")||"0"),daysActive:Number.parseInt(e.get("d")||"0",10),longestStreak:Number.parseInt(e.get("ls")||"0",10),currentStreak:Number.parseInt(e.get("cs")||"0",10),peakHour:Number.parseInt(e.get("ph")||"12",10),peakDay:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][Number.parseInt(e.get("pd")||"0",10)]||"Monday",busiestMonth:"",favoriteModel:o(e.get("fm")||""),modelBreakdown:c,wordsGenerated:n(e.get("wg")||"0"),firstSessionDate:e.get("fad")||"",topProject:e.get("tp")||void 0,projectCount:e.get("pc")?Number.parseInt(e.get("pc"),10):void 0,topTools:(null==(t=e.get("tt"))?void 0:t.split(","))||void 0,source:"codex"===s?"codex":"combined"===s?"combined":"claude",activity:r(e.get("act"))}}function i(e){if(!(e.get("tot")||e.get("agg")))return null;let t=e.get("src"),a=e.get("agg")||"d",s="m"===a?"monthly":"mo"===a?"model":"t"===a?"total":"daily",[c,r]=(e.get("dr")||"").split("-"),l=(e.get("rows")||"").split("|").filter(Boolean).map(e=>{let t=e.split(":"),a=t[0]||"";return{key:"daily"===s&&4===a.length?"".concat(new Date().getFullYear(),"-").concat(a.slice(0,2),"-").concat(a.slice(2,4)):a,inputTokens:n(t[1]||"0"),outputTokens:n(t[2]||"0"),cacheWriteTokens:n(t[3]||"0"),cacheReadTokens:n(t[4]||"0"),totalTokens:n(t[5]||"0"),cost:Number.parseFloat(t[6]||"0")}}),i=(e.get("tot")||"").split(":"),d=(e.get("mb")||"").split(",").filter(Boolean).map(e=>{let[t,a,s]=e.split(":");return{model:o(t||""),tokens:0,cost:Number.parseFloat(s||"0"),percentage:Number.parseInt(a||"0",10)||0}});return{rows:l,totals:{inputTokens:n(i[0]||"0"),outputTokens:n(i[1]||"0"),cacheWriteTokens:n(i[2]||"0"),cacheReadTokens:n(i[3]||"0"),totalTokens:n(i[4]||"0"),cost:Number.parseFloat(i[5]||"0")},source:"codex"===t?"codex":"combined"===t?"combined":"claude",aggregation:s,dateRange:{start:c?"".concat(c.slice(0,4),"-").concat(c.slice(4,6),"-").concat(c.slice(6,8)):"",end:r?"".concat(r.slice(0,4),"-").concat(r.slice(4,6),"-").concat(r.slice(6,8)):""},modelBreakdown:d}}function d(e){return r(e.get("activity"))||null}},6427:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>x});var s=a(8481),n=a(8526),c=a(3973);let o=["bg-[#fff1df] border-[#fde2bd]","bg-[#ffd9a6] border-[#f8cb90]","bg-[#f7bc70] border-[#e9a95d]","bg-[#ef9339] border-[#df842d]","bg-[#bb5d0d] border-[#a44f07]"];function r(e){let{graph:t,compact:a=!1}=e;return(0,s.jsxs)("div",{className:"border border-[#f2d9b2] bg-white/95 shadow-[0_35px_80px_rgba(186,101,18,0.12)] ".concat(a?"rounded-[1.3rem] p-4 md:p-5":"rounded-[2rem] p-6 md:p-8"),children:[(0,s.jsxs)("div",{className:"".concat(a?"mb-3":"mb-5"," flex flex-wrap items-end justify-between gap-4"),children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"".concat(a?"text-[0.64rem]":"text-[0.7rem]"," font-semibold uppercase tracking-[0.28em] text-slate-500"),children:"Activity Graph"}),(0,s.jsxs)("h3",{className:"font-[family-name:var(--font-display)] text-slate-900 ".concat(a?"text-[1.55rem] md:text-[2rem]":"text-3xl md:text-4xl"),children:["Last ",t.weeks.length," weeks"]})]}),(0,s.jsxs)("div",{className:"".concat(a?"text-[0.74rem]":"text-sm"," text-right text-slate-500"),children:[(0,s.jsx)("div",{children:t.startDate}),(0,s.jsx)("div",{children:t.endDate})]})]}),(0,s.jsx)("div",{className:"".concat(a?"mb-2 gap-2 pl-9 text-[11px]":"mb-4 gap-3 pl-12 text-xs"," flex font-medium text-slate-500"),children:t.monthLabels.map(e=>(0,s.jsx)("div",{style:{marginLeft:0===e.weekIndex?0:void 0},children:e.label},"".concat(e.label,"-").concat(e.weekIndex)))}),(0,s.jsxs)("div",{className:"".concat(a?"gap-2":"gap-3"," flex overflow-x-auto"),children:[(0,s.jsx)("div",{className:"".concat(a?"mt-0.5 gap-1.5 pr-0.5 text-[10px]":"mt-1 gap-2 pr-1 text-xs"," grid grid-rows-7 font-medium text-slate-500"),children:t.weekdayLabels.map((e,t)=>(0,s.jsx)("div",{className:"flex ".concat(a?"h-3":"h-4"," items-center"),children:e},"".concat(e,"-").concat(t)))}),(0,s.jsx)("div",{className:"grid auto-cols-max grid-flow-col ".concat(a?"gap-1.5":"gap-2"),children:t.weeks.map((e,n)=>{var c;return(0,s.jsx)("div",{className:"grid grid-rows-7 ".concat(a?"gap-1.5":"gap-2"),children:e.map(e=>{var n;return(0,s.jsx)("div",{className:"group relative z-0 border ".concat(a?"h-3.5 w-3.5 rounded-[4px]":"h-4 w-4 rounded-[5px]"," hover:z-30 ").concat(o[e.intensity]),children:(0,s.jsxs)("div",{className:"pointer-events-none absolute left-1/2 top-full z-40 hidden -translate-x-1/2 bg-slate-950 text-white shadow-xl group-hover:block ".concat(a?"mt-1.5 w-36 rounded-lg px-2.5 py-1.5 text-[10px]":"mt-2 w-44 rounded-xl px-3 py-2 text-[11px]"),children:[(0,s.jsx)("div",{className:"font-semibold",children:e.date}),(0,s.jsx)("div",{className:"mt-1 text-slate-300",children:"sessions"===(n=t.metric)?"".concat(e.sessionCount," sessions"):"messages"===n?"".concat(e.messageCount," messages"):e.totalTokens>=1e9?"".concat((e.totalTokens/1e9).toFixed(2),"B tokens"):e.totalTokens>=1e6?"".concat((e.totalTokens/1e6).toFixed(1),"M tokens"):e.totalTokens>=1e3?"".concat((e.totalTokens/1e3).toFixed(1),"K tokens"):"".concat(e.totalTokens," tokens")})]})},e.date)})},"".concat(n,"-").concat((null==(c=e[0])?void 0:c.date)||"empty"))})})]}),(0,s.jsxs)("div",{className:"".concat(a?"mt-3 gap-2 text-[10px]":"mt-6 gap-3 text-xs"," flex items-center justify-end uppercase tracking-[0.16em] text-slate-400"),children:[(0,s.jsx)("span",{children:"Less"}),(0,s.jsx)("div",{className:"flex ".concat(a?"gap-1":"gap-1.5"),children:t.legend.map(e=>(0,s.jsx)("span",{className:"".concat(a?"h-3 w-3 rounded-[4px]":"h-4 w-4 rounded-[5px]"," border ").concat(o[e.intensity]),title:"".concat(e.label,": ").concat(e.min,"-").concat(e.max)},e.intensity))}),(0,s.jsx)("span",{children:"More"})]})]})}function l(e){return e>=1e9?"".concat((e/1e9).toFixed(2),"B"):e>=1e6?"".concat((e/1e6).toFixed(1),"M"):e>=1e3?"".concat((e/1e3).toFixed(1),"K"):e.toLocaleString("en-US")}function i(e){let{label:t,value:a,tone:n="default",compact:c=!1}=e;return(0,s.jsxs)("div",{className:"".concat(c?"h-full rounded-[1rem] p-3.5":"rounded-[1.6rem] p-5"," border ").concat("accent"===n?"border-[#f3c788] bg-[#fff5e8] shadow-[0_24px_55px_rgba(201,113,28,0.14)]":"border-slate-200 bg-white/95 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"),children:[(0,s.jsx)("div",{className:"".concat(c?"text-[0.62rem]":"text-[0.72rem]"," font-semibold uppercase tracking-[0.22em] text-slate-500"),children:t}),(0,s.jsx)("div",{className:"".concat(c?"mt-2 text-[1.6rem] leading-[1.1]":"mt-3 text-4xl"," font-[family-name:var(--font-display)] text-slate-900"),children:a})]})}function d(e){let{eyebrow:t,title:a,subtitle:n,compact:c=!1,children:o}=e;return(0,s.jsx)("main",{className:"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 ".concat(c?"px-3 py-5 md:px-6 md:py-8":"px-4 py-8 md:px-8 md:py-12"),children:(0,s.jsxs)("div",{className:"mx-auto max-w-7xl",children:[(0,s.jsxs)("header",{className:"border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur ".concat(c?"mb-6 rounded-[1.35rem] px-5 py-5 md:px-6 md:py-6":"mb-10 rounded-[2rem] px-6 py-8 md:px-10"),children:[(0,s.jsx)("p",{className:"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500",children:t}),(0,s.jsx)("h1",{className:"max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 ".concat(c?"mt-3 text-[2rem] md:text-[3.4rem]":"mt-4 text-5xl md:text-7xl"),children:a}),(0,s.jsx)("p",{className:"".concat(c?"mt-3 text-sm leading-6 md:text-base":"mt-5 text-base leading-7 md:text-lg"," max-w-3xl text-slate-600"),children:n})]}),o]})})}function m(e){let{share:t,payload:a}=e;return(0,s.jsx)(d,{eyebrow:"Vibestats Activity",title:a.title,subtitle:"A GitHub-style year view of your coding activity, tuned for elegant sharing on the web and as an image.",compact:!0,children:(0,s.jsxs)("section",{className:"grid gap-4 lg:grid-cols-[minmax(0,1.55fr)_minmax(0,0.85fr)]",children:[(0,s.jsx)("div",{className:"min-w-0",children:(0,s.jsx)(r,{graph:a.activity,compact:!0})}),(0,s.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 lg:h-full lg:auto-rows-fr lg:grid-cols-2",children:[(0,s.jsx)(i,{label:"Input Tokens",value:l(a.activity.summary.inputTokens),compact:!0}),(0,s.jsx)(i,{label:"Output Tokens",value:l(a.activity.summary.outputTokens),compact:!0}),(0,s.jsx)(i,{label:"Longest Streak",value:"".concat(a.activity.summary.longestStreak,"d"),compact:!0}),(0,s.jsx)(i,{label:"Current Streak",value:"".concat(a.activity.summary.currentStreak,"d"),tone:"accent",compact:!0}),(0,s.jsx)(i,{label:"Recent 30 Days",value:l(a.activity.summary.recent30DayTotal),compact:!0}),(0,s.jsx)(i,{label:"Top Model",value:a.activity.summary.favoriteModel,compact:!0}),(0,s.jsx)(i,{label:"Active Days",value:"".concat(a.activity.summary.activeDays),compact:!0}),(0,s.jsx)(i,{label:"Share",value:t.slug,compact:!0})]})]})})}var u=a(539);function p(){let e=(0,c.useSearchParams)(),[t,a]=(0,n.useState)(null),[o,r]=(0,n.useState)(null);return((0,n.useEffect)(()=>{let t=e.get("a");if(!t)return void r("no activity payload in URL");if(t.startsWith("json:")){let e=t.slice(5);fetch("/data/".concat(e,".json")).then(e=>e.ok?e.json():Promise.reject(Error("fetch failed"))).then(e=>a(e)).catch(e=>r(e.message));return}let s=new URLSearchParams(t),n=(0,u.zP)(s);n?a(n):r("could not decode activity payload")},[e]),o)?(0,s.jsxs)("main",{className:"p-8 text-red-400",children:["Error: ",o]}):t?(0,s.jsx)(m,{share:{slug:"local",kind:"local",targetPath:"/dashboard/activity",url:"",legacyQuery:""},payload:t}):(0,s.jsx)("main",{className:"p-8 text-stone-400",children:"Loading…"})}function x(){return(0,s.jsx)(n.Suspense,{fallback:(0,s.jsx)("main",{className:"p-8 text-stone-400",children:"Loading…"}),children:(0,s.jsx)(p,{})})}},8082:(e,t,a)=>{Promise.resolve().then(a.bind(a,6427))}},e=>{e.O(0,[971,59,498,358],()=>e(e.s=8082)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[713],{539:(e,t,n)=>{"use strict";n.d(t,{Xv:()=>u,b6:()=>i,zP:()=>l}),n(5603);var s=n(471).Buffer;function o(e){let t=Number.parseFloat(e);return e.endsWith("B")?1e9*t:e.endsWith("M")?1e6*t:e.endsWith("K")?1e3*t:t}function a(e){let t=e.trim().toLowerCase(),n=(e,n)=>{let s=n.replace(/\./g,"[\\s._-]*"),o=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),a="(?:^|[^a-z0-9])",c="(?:[^a-z0-9]|$)";return new RegExp("".concat(a).concat(o,"(?:[^a-z0-9]+)?").concat(s).concat(c)).test(t)||new RegExp("".concat(a).concat(s,"(?:[^a-z0-9]+)?").concat(o).concat(c)).test(t)};return t.includes("accounts/fireworks/routers/kimi-k2p5-turbo")||t.includes("accounts/fireworks/models/kimi-k2p5-turbo")||t.includes("custom:kimi-k2.5-turbo")||t.includes("custom:kimi-k2p5-turbo")||t.includes("kimi")&&(t.includes("k2.5")||t.includes("k2p5"))&&t.includes("turbo")?"Kimi K2.5 Turbo":t.includes("custom:minimax-m2.7")||t.includes("custom:minimax-m2-7")||t.includes("minimax-m2.7")||t.includes("minimax-m2-7")?"MiniMax-M2.7":t.includes("fable")?"Claude Fable":n("opus","4.8")?"Opus 4.8":n("opus","4.7")?"Opus 4.7":n("opus","4.6")?"Opus 4.6":n("opus","4.5")?"Opus 4.5":n("opus","4.1")?"Opus 4.1":t.includes("opus")?"Opus 4.8":n("sonnet","4.6")?"Sonnet 4.6":n("sonnet","4.5")?"Sonnet 4.5":n("sonnet","3.5")?"Sonnet 3.5":t.includes("sonnet")?"Sonnet":n("haiku","4.5")?"Haiku 4.5":n("haiku","3.5")?"Haiku 3.5":t.includes("haiku")?"Haiku":e}function c(e){var t;if(e.startsWith("raw_"))try{return a(decodeURIComponent(e.slice(4)))}catch(t){return a(e.slice(4))}return a(null!=(t=({fable:"Claude Fable",o48:"Opus 4.8",o47:"Opus 4.7",o46:"Opus 4.6",o45:"Opus 4.5",o41:"Opus 4.1",opus:"Opus 4.8",s46:"Sonnet 4.6",s45:"Sonnet 4.5",s35:"Sonnet 3.5",sonnet:"Sonnet",h45:"Haiku 4.5",h35:"Haiku 3.5",haiku:"Haiku",g54:"GPT-5.4",g53s:"GPT-5.3 Codex Spark",g53c:"GPT-5.3 Codex",g53:"GPT-5.3",g52c:"GPT-5.2 Codex",g52:"GPT-5.2",g51cm:"GPT-5.1 Codex Max",g51m:"GPT-5.1 Max",g51cn:"GPT-5.1 Codex Mini",g51n:"GPT-5.1 Mini",g51c:"GPT-5.1 Codex",g51:"GPT-5.1",g5:"GPT-5",g5n:"GPT-5 Mini",g4o:"GPT-4o",g4om:"GPT-4o Mini"})[e])?t:e)}function r(e){if(e)try{if(void 0!==s)return JSON.parse(s.from(e,"base64url").toString("utf-8"));let t=e.replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(t))}catch(e){return}}function u(e){var t;let n=e.get("s");if(!n)return null;let s=e.get("src"),a=(e.get("mb")||"").split(",").map(e=>{let[t,n]=e.split(":");return t?{model:c(t),percentage:Number.parseInt(null!=n?n:"0",10)||0}:null}).filter(e=>!!e);return{sessions:Number.parseInt(n,10),messages:0,totalTokens:o(e.get("t")||"0"),totalCost:Number.parseFloat(e.get("c")||"0"),daysActive:Number.parseInt(e.get("d")||"0",10),longestStreak:Number.parseInt(e.get("ls")||"0",10),currentStreak:Number.parseInt(e.get("cs")||"0",10),peakHour:Number.parseInt(e.get("ph")||"12",10),peakDay:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][Number.parseInt(e.get("pd")||"0",10)]||"Monday",busiestMonth:"",favoriteModel:c(e.get("fm")||""),modelBreakdown:a,wordsGenerated:o(e.get("wg")||"0"),firstSessionDate:e.get("fad")||"",topProject:e.get("tp")||void 0,projectCount:e.get("pc")?Number.parseInt(e.get("pc"),10):void 0,topTools:(null==(t=e.get("tt"))?void 0:t.split(","))||void 0,source:"codex"===s?"codex":"combined"===s?"combined":"claude",activity:r(e.get("act"))}}function i(e){if(!(e.get("tot")||e.get("agg")))return null;let t=e.get("src"),n=e.get("agg")||"d",s="m"===n?"monthly":"mo"===n?"model":"t"===n?"total":"daily",[a,r]=(e.get("dr")||"").split("-"),u=(e.get("rows")||"").split("|").filter(Boolean).map(e=>{let t=e.split(":"),n=t[0]||"";return{key:"daily"===s&&4===n.length?"".concat(new Date().getFullYear(),"-").concat(n.slice(0,2),"-").concat(n.slice(2,4)):n,inputTokens:o(t[1]||"0"),outputTokens:o(t[2]||"0"),cacheWriteTokens:o(t[3]||"0"),cacheReadTokens:o(t[4]||"0"),totalTokens:o(t[5]||"0"),cost:Number.parseFloat(t[6]||"0")}}),i=(e.get("tot")||"").split(":"),l=(e.get("mb")||"").split(",").filter(Boolean).map(e=>{let[t,n,s]=e.split(":");return{model:c(t||""),tokens:0,cost:Number.parseFloat(s||"0"),percentage:Number.parseInt(n||"0",10)||0}});return{rows:u,totals:{inputTokens:o(i[0]||"0"),outputTokens:o(i[1]||"0"),cacheWriteTokens:o(i[2]||"0"),cacheReadTokens:o(i[3]||"0"),totalTokens:o(i[4]||"0"),cost:Number.parseFloat(i[5]||"0")},source:"codex"===t?"codex":"combined"===t?"combined":"claude",aggregation:s,dateRange:{start:a?"".concat(a.slice(0,4),"-").concat(a.slice(4,6),"-").concat(a.slice(6,8)):"",end:r?"".concat(r.slice(0,4),"-").concat(r.slice(4,6),"-").concat(r.slice(6,8)):""},modelBreakdown:l}}function l(e){return r(e.get("activity"))||null}},2160:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var s=n(8481),o=n(8526),a=n(3973),c=n(5832),r=n(539);function u(){let e=(0,a.useSearchParams)(),[t,n]=(0,o.useState)(null),[u,i]=(0,o.useState)(null);return((0,o.useEffect)(()=>{let t=e.get("u");if(!t)return void i("no usage payload in URL");if(t.startsWith("json:")){let e=t.slice(5);fetch("/data/".concat(e,".json")).then(e=>e.ok?e.json():Promise.reject(Error("fetch failed"))).then(e=>n(e)).catch(e=>i(e.message));return}let s=new URLSearchParams(t),o=(0,r.b6)(s);o?n(o):i("could not decode usage payload")},[e]),u)?(0,s.jsxs)("main",{className:"p-8 text-red-400",children:["Error: ",u]}):t?(0,s.jsx)(c.UsageLegacyPage,{payload:t}):(0,s.jsx)("main",{className:"p-8 text-stone-400",children:"Loading…"})}function i(){return(0,s.jsx)(o.Suspense,{fallback:(0,s.jsx)("main",{className:"p-8 text-stone-400",children:"Loading…"}),children:(0,s.jsx)(u,{})})}},5034:(e,t,n)=>{Promise.resolve().then(n.bind(n,2160))}},e=>{e.O(0,[971,832,59,498,358],()=>e(e.s=5034)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[919],{539:(e,t,n)=>{"use strict";n.d(t,{Xv:()=>i,b6:()=>u,zP:()=>l}),n(5603);var s=n(471).Buffer;function a(e){let t=Number.parseFloat(e);return e.endsWith("B")?1e9*t:e.endsWith("M")?1e6*t:e.endsWith("K")?1e3*t:t}function o(e){let t=e.trim().toLowerCase(),n=(e,n)=>{let s=n.replace(/\./g,"[\\s._-]*"),a=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o="(?:^|[^a-z0-9])",r="(?:[^a-z0-9]|$)";return new RegExp("".concat(o).concat(a,"(?:[^a-z0-9]+)?").concat(s).concat(r)).test(t)||new RegExp("".concat(o).concat(s,"(?:[^a-z0-9]+)?").concat(a).concat(r)).test(t)};return t.includes("accounts/fireworks/routers/kimi-k2p5-turbo")||t.includes("accounts/fireworks/models/kimi-k2p5-turbo")||t.includes("custom:kimi-k2.5-turbo")||t.includes("custom:kimi-k2p5-turbo")||t.includes("kimi")&&(t.includes("k2.5")||t.includes("k2p5"))&&t.includes("turbo")?"Kimi K2.5 Turbo":t.includes("custom:minimax-m2.7")||t.includes("custom:minimax-m2-7")||t.includes("minimax-m2.7")||t.includes("minimax-m2-7")?"MiniMax-M2.7":t.includes("fable")?"Claude Fable":n("opus","4.8")?"Opus 4.8":n("opus","4.7")?"Opus 4.7":n("opus","4.6")?"Opus 4.6":n("opus","4.5")?"Opus 4.5":n("opus","4.1")?"Opus 4.1":t.includes("opus")?"Opus 4.8":n("sonnet","4.6")?"Sonnet 4.6":n("sonnet","4.5")?"Sonnet 4.5":n("sonnet","3.5")?"Sonnet 3.5":t.includes("sonnet")?"Sonnet":n("haiku","4.5")?"Haiku 4.5":n("haiku","3.5")?"Haiku 3.5":t.includes("haiku")?"Haiku":e}function r(e){var t;if(e.startsWith("raw_"))try{return o(decodeURIComponent(e.slice(4)))}catch(t){return o(e.slice(4))}return o(null!=(t=({fable:"Claude Fable",o48:"Opus 4.8",o47:"Opus 4.7",o46:"Opus 4.6",o45:"Opus 4.5",o41:"Opus 4.1",opus:"Opus 4.8",s46:"Sonnet 4.6",s45:"Sonnet 4.5",s35:"Sonnet 3.5",sonnet:"Sonnet",h45:"Haiku 4.5",h35:"Haiku 3.5",haiku:"Haiku",g54:"GPT-5.4",g53s:"GPT-5.3 Codex Spark",g53c:"GPT-5.3 Codex",g53:"GPT-5.3",g52c:"GPT-5.2 Codex",g52:"GPT-5.2",g51cm:"GPT-5.1 Codex Max",g51m:"GPT-5.1 Max",g51cn:"GPT-5.1 Codex Mini",g51n:"GPT-5.1 Mini",g51c:"GPT-5.1 Codex",g51:"GPT-5.1",g5:"GPT-5",g5n:"GPT-5 Mini",g4o:"GPT-4o",g4om:"GPT-4o Mini"})[e])?t:e)}function c(e){if(e)try{if(void 0!==s)return JSON.parse(s.from(e,"base64url").toString("utf-8"));let t=e.replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(t))}catch(e){return}}function i(e){var t;let n=e.get("s");if(!n)return null;let s=e.get("src"),o=(e.get("mb")||"").split(",").map(e=>{let[t,n]=e.split(":");return t?{model:r(t),percentage:Number.parseInt(null!=n?n:"0",10)||0}:null}).filter(e=>!!e);return{sessions:Number.parseInt(n,10),messages:0,totalTokens:a(e.get("t")||"0"),totalCost:Number.parseFloat(e.get("c")||"0"),daysActive:Number.parseInt(e.get("d")||"0",10),longestStreak:Number.parseInt(e.get("ls")||"0",10),currentStreak:Number.parseInt(e.get("cs")||"0",10),peakHour:Number.parseInt(e.get("ph")||"12",10),peakDay:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][Number.parseInt(e.get("pd")||"0",10)]||"Monday",busiestMonth:"",favoriteModel:r(e.get("fm")||""),modelBreakdown:o,wordsGenerated:a(e.get("wg")||"0"),firstSessionDate:e.get("fad")||"",topProject:e.get("tp")||void 0,projectCount:e.get("pc")?Number.parseInt(e.get("pc"),10):void 0,topTools:(null==(t=e.get("tt"))?void 0:t.split(","))||void 0,source:"codex"===s?"codex":"combined"===s?"combined":"claude",activity:c(e.get("act"))}}function u(e){if(!(e.get("tot")||e.get("agg")))return null;let t=e.get("src"),n=e.get("agg")||"d",s="m"===n?"monthly":"mo"===n?"model":"t"===n?"total":"daily",[o,c]=(e.get("dr")||"").split("-"),i=(e.get("rows")||"").split("|").filter(Boolean).map(e=>{let t=e.split(":"),n=t[0]||"";return{key:"daily"===s&&4===n.length?"".concat(new Date().getFullYear(),"-").concat(n.slice(0,2),"-").concat(n.slice(2,4)):n,inputTokens:a(t[1]||"0"),outputTokens:a(t[2]||"0"),cacheWriteTokens:a(t[3]||"0"),cacheReadTokens:a(t[4]||"0"),totalTokens:a(t[5]||"0"),cost:Number.parseFloat(t[6]||"0")}}),u=(e.get("tot")||"").split(":"),l=(e.get("mb")||"").split(",").filter(Boolean).map(e=>{let[t,n,s]=e.split(":");return{model:r(t||""),tokens:0,cost:Number.parseFloat(s||"0"),percentage:Number.parseInt(n||"0",10)||0}});return{rows:i,totals:{inputTokens:a(u[0]||"0"),outputTokens:a(u[1]||"0"),cacheWriteTokens:a(u[2]||"0"),cacheReadTokens:a(u[3]||"0"),totalTokens:a(u[4]||"0"),cost:Number.parseFloat(u[5]||"0")},source:"codex"===t?"codex":"combined"===t?"combined":"claude",aggregation:s,dateRange:{start:o?"".concat(o.slice(0,4),"-").concat(o.slice(4,6),"-").concat(o.slice(6,8)):"",end:c?"".concat(c.slice(0,4),"-").concat(c.slice(4,6),"-").concat(c.slice(6,8)):""},modelBreakdown:l}}function l(e){return c(e.get("activity"))||null}},3438:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var s=n(8481),a=n(8526),o=n(3973),r=n(5832),c=n(539);function i(){let e=(0,o.useSearchParams)(),[t,n]=(0,a.useState)(null),[i,u]=(0,a.useState)(null);return((0,a.useEffect)(()=>{let t=e.get("w");if(!t)return void u("no wrapped payload in URL");if(t.startsWith("json:")){let e=t.slice(5);fetch("/data/".concat(e,".json")).then(e=>e.ok?e.json():Promise.reject(Error("fetch failed"))).then(e=>n(e)).catch(e=>u(e.message));return}let s=new URLSearchParams(t),a=(0,c.Xv)(s);a?n(a):u("could not decode wrapped payload")},[e]),i)?(0,s.jsxs)("main",{className:"p-8 text-red-400",children:["Error: ",i]}):t?(0,s.jsx)(r.WrappedLegacyPage,{payload:t,shaderVariant:"grid"}):(0,s.jsx)("main",{className:"p-8 text-stone-400",children:"Loading…"})}function u(){return(0,s.jsx)(a.Suspense,{fallback:(0,s.jsx)("main",{className:"p-8 text-stone-400",children:"Loading…"}),children:(0,s.jsx)(i,{})})}},3484:(e,t,n)=>{Promise.resolve().then(n.bind(n,3438))}},e=>{e.O(0,[971,832,59,498,358],()=>e(e.s=3484)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- <!DOCTYPE html><!--aQYb4B4UpDj_CZ4C2kvCF--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><script src="/_next/static/chunks/816-8960921093d57453.js" async=""></script><script src="/_next/static/chunks/app/activity/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>AI Coding Activity Heatmaps | vibestats</title><meta name="description" content="Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,coding activity heatmap,Claude Code activity,Codex activity,developer streak tracker"/><link rel="canonical" href="https://vibestats.wolfai.dev/activity"/><meta property="og:title" content="AI Coding Activity Heatmaps | vibestats"/><meta property="og:description" content="Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages."/><meta property="og:url" content="https://vibestats.wolfai.dev/activity"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="AI Coding Activity Heatmaps | vibestats"/><meta name="twitter:description" content="Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"vibestats activity","description":"GitHub-style AI coding activity heatmaps for Claude Code and Codex CLI usage, with daily totals, streaks, and image-friendly sharing.","url":"https://vibestats.wolfai.dev/activity","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}}</script><main class="min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12"><div class="mx-auto max-w-7xl"><header class="border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">Vibestats Activity</p><h1 class="max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl">GitHub-style activity heatmaps for AI coding.</h1><p class="mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600">Generate calendar-style coding views from local Claude Code and Codex CLI usage. Share them as hosted pages or render them as images for updates and retrospectives.</p></header><div class="grid gap-4 lg:grid-cols-[1.15fr_0.85fr]"><article class="rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Command</p><code class="mt-4 block rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity --share --days 365</code><p class="mt-5 text-sm leading-7 text-slate-600">Activity pages summarize daily coding intensity, streaks, top models, sessions, and rolling totals from aggregate local usage data.</p></article><article class="rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Good for</p><ul class="mt-4 space-y-3 text-sm leading-7 text-slate-600"><li>Weekly or monthly coding retrospectives</li><li>Shareable streak and activity snapshots</li><li>Comparing input, output, session, and message patterns over time</li></ul></article></div><section class="mt-6 grid gap-4 md:grid-cols-3"><a class="rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300" href="/docs/commands#activity-wrapped"><strong class="block text-lg text-slate-950">Command reference</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Find the activity flags, metrics, and share options.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300" href="/wrapped"><strong class="block text-lg text-slate-950">Wrapped summaries</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Combine yearly recap pages with a heatmap view of your coding rhythm.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300" href="/changelog"><strong class="block text-lg text-slate-950">Recent releases</strong><span class="mt-2 block text-sm leading-6 text-slate-600">See when activity graphs, share artifacts, and web hosting landed.</span></a></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n6:I[496,[],\"OutletBoundary\"]\n8:I[3737,[],\"AsyncMetadataOutlet\"]\na:I[496,[],\"ViewportBoundary\"]\nc:I[496,[],\"MetadataBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"aQYb4B4UpDj-CZ4C2kvCF\",\"p\":\"\",\"c\":[\"\",\"activity\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"activity\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"activity\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",[\"$\",\"$L8\",null,{\"promise\":\"$@9\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],null],[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$d\",null,{\"fallback\":null,\"children\":\"$Le\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"10:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"866\",\"static/chunks/app/activity/page-5d0587c1d5910e68.js\"],\"\"]\n"])</script><script>self.__next_f.push([1,"5:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebPage\\\",\\\"name\\\":\\\"vibestats activity\\\",\\\"description\\\":\\\"GitHub-style AI coding activity heatmaps for Claude Code and Codex CLI usage, with daily totals, streaks, and image-friendly sharing.\\\",\\\"url\\\":\\\"https://vibestats.wolfai.dev/activity\\\",\\\"isPartOf\\\":{\\\"@type\\\":\\\"WebSite\\\",\\\"name\\\":\\\"vibestats\\\",\\\"url\\\":\\\"https://vibestats.wolfai.dev/\\\"}}\"}}],[\"$\",\"main\",null,{\"className\":\"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"Vibestats Activity\"}],[\"$\",\"h1\",null,{\"className\":\"max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl\",\"children\":\"GitHub-style activity heatmaps for AI coding.\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600\",\"children\":\"Generate calendar-style coding views from local Claude Code and Codex CLI usage. Share them as hosted pages or render them as images for updates and retrospectives.\"}]]}],[[\"$\",\"div\",null,{\"className\":\"grid gap-4 lg:grid-cols-[1.15fr_0.85fr]\",\"children\":[[\"$\",\"article\",null,{\"className\":\"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Command\"}],[\"$\",\"code\",null,{\"className\":\"mt-4 block rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity --share --days 365\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-sm leading-7 text-slate-600\",\"children\":\"Activity pages summarize daily coding intensity, streaks, top models, sessions, and rolling totals from aggregate local usage data.\"}]]}],[\"$\",\"article\",null,{\"className\":\"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Good for\"}],[\"$\",\"ul\",null,{\"className\":\"mt-4 space-y-3 text-sm leading-7 text-slate-600\",\"children\":[[\"$\",\"li\",null,{\"children\":\"Weekly or monthly coding retrospectives\"}],[\"$\",\"li\",null,{\"children\":\"Shareable streak and activity snapshots\"}],[\"$\",\"li\",null,{\"children\":\"Comparing input, output, session, and message patterns over time\"}]]}]]}]]}],[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"$L10\",null,{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300\",\"href\":\"/docs/commands#activity-wrapped\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Command reference\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Find the activity flags, metrics, and share options.\"}]]}],[\"$\",\"$L10\",null,{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300\",\"href\":\"/wrapped\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Wrapped summaries\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Combine yearly recap pages with a heatmap view of your coding rhythm.\"}]]}],\"$L11\"]}]]]}]}]]\n"])</script><script>self.__next_f.push([1,"11:[\"$\",\"$L10\",null,{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300\",\"href\":\"/changelog\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Recent releases\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"See when activity graphs, share artifacts, and web hosting landed.\"}]]}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script><script>self.__next_f.push([1,"9:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"AI Coding Activity Heatmaps | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,coding activity heatmap,Claude Code activity,Codex activity,developer streak tracker\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/activity\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"AI Coding Activity Heatmaps | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/activity\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:title\",\"content\":\"AI Coding Activity Heatmaps | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--kD14dO620KehOuGqHcg1C--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><script src="/_next/static/chunks/816-8960921093d57453.js" async=""></script><script src="/_next/static/chunks/app/activity/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>AI Coding Activity Heatmaps | vibestats</title><meta name="description" content="Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,coding activity heatmap,Claude Code activity,Codex activity,developer streak tracker"/><link rel="canonical" href="https://vibestats.wolfai.dev/activity"/><meta property="og:title" content="AI Coding Activity Heatmaps | vibestats"/><meta property="og:description" content="Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages."/><meta property="og:url" content="https://vibestats.wolfai.dev/activity"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="AI Coding Activity Heatmaps | vibestats"/><meta name="twitter:description" content="Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"vibestats activity","description":"GitHub-style AI coding activity heatmaps for Claude Code and Codex CLI usage, with daily totals, streaks, and image-friendly sharing.","url":"https://vibestats.wolfai.dev/activity","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}}</script><main class="min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12"><div class="mx-auto max-w-7xl"><header class="border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">Vibestats Activity</p><h1 class="max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl">GitHub-style activity heatmaps for AI coding.</h1><p class="mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600">Generate calendar-style coding views from local Claude Code and Codex CLI usage. Share them as hosted pages or render them as images for updates and retrospectives.</p></header><div class="grid gap-4 lg:grid-cols-[1.15fr_0.85fr]"><article class="rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Command</p><code class="mt-4 block rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity --share --days 365</code><p class="mt-5 text-sm leading-7 text-slate-600">Activity pages summarize daily coding intensity, streaks, top models, sessions, and rolling totals from aggregate local usage data.</p></article><article class="rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Good for</p><ul class="mt-4 space-y-3 text-sm leading-7 text-slate-600"><li>Weekly or monthly coding retrospectives</li><li>Shareable streak and activity snapshots</li><li>Comparing input, output, session, and message patterns over time</li></ul></article></div><section class="mt-6 grid gap-4 md:grid-cols-3"><a class="rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300" href="/docs/commands#activity-wrapped"><strong class="block text-lg text-slate-950">Command reference</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Find the activity flags, metrics, and share options.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300" href="/wrapped"><strong class="block text-lg text-slate-950">Wrapped summaries</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Combine yearly recap pages with a heatmap view of your coding rhythm.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300" href="/changelog"><strong class="block text-lg text-slate-950">Recent releases</strong><span class="mt-2 block text-sm leading-6 text-slate-600">See when activity graphs, share artifacts, and web hosting landed.</span></a></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n6:I[496,[],\"OutletBoundary\"]\n8:I[3737,[],\"AsyncMetadataOutlet\"]\na:I[496,[],\"ViewportBoundary\"]\nc:I[496,[],\"MetadataBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"kD14dO620KehOuGqHcg1C\",\"p\":\"\",\"c\":[\"\",\"activity\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"activity\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"activity\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",[\"$\",\"$L8\",null,{\"promise\":\"$@9\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],null],[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$d\",null,{\"fallback\":null,\"children\":\"$Le\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"10:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"866\",\"static/chunks/app/activity/page-5d0587c1d5910e68.js\"],\"\"]\n"])</script><script>self.__next_f.push([1,"5:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebPage\\\",\\\"name\\\":\\\"vibestats activity\\\",\\\"description\\\":\\\"GitHub-style AI coding activity heatmaps for Claude Code and Codex CLI usage, with daily totals, streaks, and image-friendly sharing.\\\",\\\"url\\\":\\\"https://vibestats.wolfai.dev/activity\\\",\\\"isPartOf\\\":{\\\"@type\\\":\\\"WebSite\\\",\\\"name\\\":\\\"vibestats\\\",\\\"url\\\":\\\"https://vibestats.wolfai.dev/\\\"}}\"}}],[\"$\",\"main\",null,{\"className\":\"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"Vibestats Activity\"}],[\"$\",\"h1\",null,{\"className\":\"max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl\",\"children\":\"GitHub-style activity heatmaps for AI coding.\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600\",\"children\":\"Generate calendar-style coding views from local Claude Code and Codex CLI usage. Share them as hosted pages or render them as images for updates and retrospectives.\"}]]}],[[\"$\",\"div\",null,{\"className\":\"grid gap-4 lg:grid-cols-[1.15fr_0.85fr]\",\"children\":[[\"$\",\"article\",null,{\"className\":\"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Command\"}],[\"$\",\"code\",null,{\"className\":\"mt-4 block rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity --share --days 365\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-sm leading-7 text-slate-600\",\"children\":\"Activity pages summarize daily coding intensity, streaks, top models, sessions, and rolling totals from aggregate local usage data.\"}]]}],[\"$\",\"article\",null,{\"className\":\"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Good for\"}],[\"$\",\"ul\",null,{\"className\":\"mt-4 space-y-3 text-sm leading-7 text-slate-600\",\"children\":[[\"$\",\"li\",null,{\"children\":\"Weekly or monthly coding retrospectives\"}],[\"$\",\"li\",null,{\"children\":\"Shareable streak and activity snapshots\"}],[\"$\",\"li\",null,{\"children\":\"Comparing input, output, session, and message patterns over time\"}]]}]]}]]}],[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"$L10\",null,{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300\",\"href\":\"/docs/commands#activity-wrapped\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Command reference\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Find the activity flags, metrics, and share options.\"}]]}],[\"$\",\"$L10\",null,{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300\",\"href\":\"/wrapped\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Wrapped summaries\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Combine yearly recap pages with a heatmap view of your coding rhythm.\"}]]}],\"$L11\"]}]]]}]}]]\n"])</script><script>self.__next_f.push([1,"11:[\"$\",\"$L10\",null,{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300\",\"href\":\"/changelog\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Recent releases\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"See when activity graphs, share artifacts, and web hosting landed.\"}]]}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script><script>self.__next_f.push([1,"9:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"AI Coding Activity Heatmaps | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,coding activity heatmap,Claude Code activity,Codex activity,developer streak tracker\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/activity\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"AI Coding Activity Heatmaps | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/activity\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:title\",\"content\":\"AI Coding Activity Heatmaps | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Publish GitHub-style activity heatmaps for Claude Code and Codex CLI usage with daily totals, streaks, and image-friendly share pages.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
@@ -9,7 +9,7 @@ c:I[496,[],"MetadataBoundary"]
9
9
  d:"$Sreact.suspense"
10
10
  f:I[2207,[],""]
11
11
  :HL["/_next/static/css/335de1248158d380.css","style"]
12
- 0:{"P":null,"b":"aQYb4B4UpDj-CZ4C2kvCF","p":"","c":["","activity"],"i":false,"f":[[["",{"children":["activity",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/335de1248158d380.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","$L2",null,{"id":"wolf-analytics-config","strategy":"beforeInteractive","children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};"}],["$","$L2",null,{"id":"wolf-analytics-script","src":"https://analytics.wolfai.dev/wolf-analytics.min.js","strategy":"beforeInteractive"}]]}],["$","body",null,{"className":"antialiased min-h-screen bg-background text-foreground","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["activity",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L5",null,["$","$L6",null,{"children":["$L7",["$","$L8",null,{"promise":"$@9"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$La",null,{"children":"$Lb"}],null],["$","$Lc",null,{"children":["$","div",null,{"hidden":true,"children":["$","$d",null,{"fallback":null,"children":"$Le"}]}]}]]}],false]],"m":"$undefined","G":["$f",[]],"s":false,"S":true}
12
+ 0:{"P":null,"b":"kD14dO620KehOuGqHcg1C","p":"","c":["","activity"],"i":false,"f":[[["",{"children":["activity",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/335de1248158d380.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","$L2",null,{"id":"wolf-analytics-config","strategy":"beforeInteractive","children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};"}],["$","$L2",null,{"id":"wolf-analytics-script","src":"https://analytics.wolfai.dev/wolf-analytics.min.js","strategy":"beforeInteractive"}]]}],["$","body",null,{"className":"antialiased min-h-screen bg-background text-foreground","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["activity",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L5",null,["$","$L6",null,{"children":["$L7",["$","$L8",null,{"promise":"$@9"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$La",null,{"children":"$Lb"}],null],["$","$Lc",null,{"children":["$","div",null,{"hidden":true,"children":["$","$d",null,{"fallback":null,"children":"$Le"}]}]}]]}],false]],"m":"$undefined","G":["$f",[]],"s":false,"S":true}
13
13
  10:I[4816,["816","static/chunks/816-8960921093d57453.js","866","static/chunks/app/activity/page-5d0587c1d5910e68.js"],""]
14
14
  5:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"vibestats activity\",\"description\":\"GitHub-style AI coding activity heatmaps for Claude Code and Codex CLI usage, with daily totals, streaks, and image-friendly sharing.\",\"url\":\"https://vibestats.wolfai.dev/activity\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"vibestats\",\"url\":\"https://vibestats.wolfai.dev/\"}}"}}],["$","main",null,{"className":"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12","children":["$","div",null,{"className":"mx-auto max-w-7xl","children":[["$","header",null,{"className":"border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500","children":"Vibestats Activity"}],["$","h1",null,{"className":"max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl","children":"GitHub-style activity heatmaps for AI coding."}],["$","p",null,{"className":"mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600","children":"Generate calendar-style coding views from local Claude Code and Codex CLI usage. Share them as hosted pages or render them as images for updates and retrospectives."}]]}],[["$","div",null,{"className":"grid gap-4 lg:grid-cols-[1.15fr_0.85fr]","children":[["$","article",null,{"className":"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Command"}],["$","code",null,{"className":"mt-4 block rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700","children":"npx vibestats --activity --share --days 365"}],["$","p",null,{"className":"mt-5 text-sm leading-7 text-slate-600","children":"Activity pages summarize daily coding intensity, streaks, top models, sessions, and rolling totals from aggregate local usage data."}]]}],["$","article",null,{"className":"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Good for"}],["$","ul",null,{"className":"mt-4 space-y-3 text-sm leading-7 text-slate-600","children":[["$","li",null,{"children":"Weekly or monthly coding retrospectives"}],["$","li",null,{"children":"Shareable streak and activity snapshots"}],["$","li",null,{"children":"Comparing input, output, session, and message patterns over time"}]]}]]}]]}],["$","section",null,{"className":"mt-6 grid gap-4 md:grid-cols-3","children":[["$","$L10",null,{"className":"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300","href":"/docs/commands#activity-wrapped","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Command reference"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Find the activity flags, metrics, and share options."}]]}],["$","$L10",null,{"className":"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300","href":"/wrapped","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Wrapped summaries"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Combine yearly recap pages with a heatmap view of your coding rhythm."}]]}],"$L11"]}]]]}]}]]
15
15
  11:["$","$L10",null,{"className":"rounded-[1.4rem] border border-slate-200 bg-white/95 px-5 py-5 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:border-orange-300","href":"/changelog","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Recent releases"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"See when activity graphs, share artifacts, and web hosting landed."}]]}]