vibestats 1.4.2 → 1.4.3

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 (114) hide show
  1. package/dist/index.js +13 -2
  2. package/dist/web/404.html +1 -1
  3. package/dist/web/activity.html +1 -1
  4. package/dist/web/activity.txt +1 -1
  5. package/dist/web/changelog.html +1 -1
  6. package/dist/web/changelog.txt +54 -53
  7. package/dist/web/compare/claude-code-vs-codex-cli-tracking.html +1 -1
  8. package/dist/web/compare/claude-code-vs-codex-cli-tracking.txt +1 -1
  9. package/dist/web/compare/daily-vs-monthly-ai-usage-reports.html +1 -1
  10. package/dist/web/compare/daily-vs-monthly-ai-usage-reports.txt +1 -1
  11. package/dist/web/compare/local-vs-cloud-ai-analytics.html +1 -1
  12. package/dist/web/compare/local-vs-cloud-ai-analytics.txt +1 -1
  13. package/dist/web/compare/manual-tracking-vs-vibestats.html +1 -1
  14. package/dist/web/compare/manual-tracking-vs-vibestats.txt +1 -1
  15. package/dist/web/compare/querystring-shares-vs-stored-share-pages.html +1 -1
  16. package/dist/web/compare/querystring-shares-vs-stored-share-pages.txt +1 -1
  17. package/dist/web/compare/session-breakdown-vs-model-breakdown.html +1 -1
  18. package/dist/web/compare/session-breakdown-vs-model-breakdown.txt +1 -1
  19. package/dist/web/compare/single-source-vs-combined-tracking.html +1 -1
  20. package/dist/web/compare/single-source-vs-combined-tracking.txt +1 -1
  21. package/dist/web/compare/terminal-table-vs-json-output.html +1 -1
  22. package/dist/web/compare/terminal-table-vs-json-output.txt +1 -1
  23. package/dist/web/compare/token-volume-vs-cost-estimation.html +1 -1
  24. package/dist/web/compare/token-volume-vs-cost-estimation.txt +1 -1
  25. package/dist/web/compare/wrapped-vs-activity-heatmap.html +1 -1
  26. package/dist/web/compare/wrapped-vs-activity-heatmap.txt +1 -1
  27. package/dist/web/compare.html +1 -1
  28. package/dist/web/compare.txt +1 -1
  29. package/dist/web/dashboard/activity.html +1 -1
  30. package/dist/web/dashboard/activity.txt +1 -1
  31. package/dist/web/dashboard/usage.html +1 -1
  32. package/dist/web/dashboard/usage.txt +1 -1
  33. package/dist/web/dashboard/wrapped.html +1 -1
  34. package/dist/web/dashboard/wrapped.txt +1 -1
  35. package/dist/web/dashboard.html +1 -1
  36. package/dist/web/dashboard.txt +1 -1
  37. package/dist/web/docs/commands.html +1 -1
  38. package/dist/web/docs/commands.txt +1 -1
  39. package/dist/web/docs.html +1 -1
  40. package/dist/web/docs.txt +1 -1
  41. package/dist/web/features/ai-coding-activity-heatmap.html +1 -1
  42. package/dist/web/features/ai-coding-activity-heatmap.txt +1 -1
  43. package/dist/web/features/ai-coding-wrapped.html +1 -1
  44. package/dist/web/features/ai-coding-wrapped.txt +1 -1
  45. package/dist/web/features/claude-code-stats.html +1 -1
  46. package/dist/web/features/claude-code-stats.txt +1 -1
  47. package/dist/web/features/claude-diagnostics.html +1 -1
  48. package/dist/web/features/claude-diagnostics.txt +1 -1
  49. package/dist/web/features/codex-cli-stats.html +1 -1
  50. package/dist/web/features/codex-cli-stats.txt +1 -1
  51. package/dist/web/features/combined-ai-coding-stats.html +1 -1
  52. package/dist/web/features/combined-ai-coding-stats.txt +1 -1
  53. package/dist/web/features/json-and-automation-exports.html +1 -1
  54. package/dist/web/features/json-and-automation-exports.txt +1 -1
  55. package/dist/web/features/model-breakdown.html +1 -1
  56. package/dist/web/features/model-breakdown.txt +1 -1
  57. package/dist/web/features/privacy-first-analytics.html +1 -1
  58. package/dist/web/features/privacy-first-analytics.txt +1 -1
  59. package/dist/web/features/session-breakdown.html +1 -1
  60. package/dist/web/features/session-breakdown.txt +1 -1
  61. package/dist/web/features/share-pages.html +1 -1
  62. package/dist/web/features/share-pages.txt +1 -1
  63. package/dist/web/features/token-and-cost-tracking.html +1 -1
  64. package/dist/web/features/token-and-cost-tracking.txt +1 -1
  65. package/dist/web/features.html +1 -1
  66. package/dist/web/features.txt +1 -1
  67. package/dist/web/guides/how-to-build-ai-activity-heatmap.html +1 -1
  68. package/dist/web/guides/how-to-build-ai-activity-heatmap.txt +1 -1
  69. package/dist/web/guides/how-to-compare-model-usage.html +1 -1
  70. package/dist/web/guides/how-to-compare-model-usage.txt +1 -1
  71. package/dist/web/guides/how-to-create-ai-coding-wrapped.html +1 -1
  72. package/dist/web/guides/how-to-create-ai-coding-wrapped.txt +1 -1
  73. package/dist/web/guides/how-to-measure-ai-token-costs.html +1 -1
  74. package/dist/web/guides/how-to-measure-ai-token-costs.txt +1 -1
  75. package/dist/web/guides/how-to-read-claude-diagnostics.html +1 -1
  76. package/dist/web/guides/how-to-read-claude-diagnostics.txt +1 -1
  77. package/dist/web/guides/how-to-share-ai-coding-stats.html +1 -1
  78. package/dist/web/guides/how-to-share-ai-coding-stats.txt +1 -1
  79. package/dist/web/guides/how-to-track-claude-code-usage.html +1 -1
  80. package/dist/web/guides/how-to-track-claude-code-usage.txt +1 -1
  81. package/dist/web/guides/how-to-track-codex-cli-usage.html +1 -1
  82. package/dist/web/guides/how-to-track-codex-cli-usage.txt +1 -1
  83. package/dist/web/guides.html +1 -1
  84. package/dist/web/guides.txt +1 -1
  85. package/dist/web/index.html +1 -1
  86. package/dist/web/index.txt +1 -1
  87. package/dist/web/sitemap.xml +46 -46
  88. package/dist/web/use-cases/ai-agencies.html +1 -1
  89. package/dist/web/use-cases/ai-agencies.txt +1 -1
  90. package/dist/web/use-cases/consultants.html +1 -1
  91. package/dist/web/use-cases/consultants.txt +1 -1
  92. package/dist/web/use-cases/engineering-managers.html +1 -1
  93. package/dist/web/use-cases/engineering-managers.txt +1 -1
  94. package/dist/web/use-cases/freelancers.html +1 -1
  95. package/dist/web/use-cases/freelancers.txt +1 -1
  96. package/dist/web/use-cases/indie-hackers.html +1 -1
  97. package/dist/web/use-cases/indie-hackers.txt +1 -1
  98. package/dist/web/use-cases/monthly-reporting.html +1 -1
  99. package/dist/web/use-cases/monthly-reporting.txt +1 -1
  100. package/dist/web/use-cases/open-source-maintainers.html +1 -1
  101. package/dist/web/use-cases/open-source-maintainers.txt +1 -1
  102. package/dist/web/use-cases/personal-retrospectives.html +1 -1
  103. package/dist/web/use-cases/personal-retrospectives.txt +1 -1
  104. package/dist/web/use-cases/researchers.html +1 -1
  105. package/dist/web/use-cases/researchers.txt +1 -1
  106. package/dist/web/use-cases/weekly-reviews.html +1 -1
  107. package/dist/web/use-cases/weekly-reviews.txt +1 -1
  108. package/dist/web/use-cases.html +1 -1
  109. package/dist/web/use-cases.txt +1 -1
  110. package/dist/web/wrapped.html +1 -1
  111. package/dist/web/wrapped.txt +1 -1
  112. package/package.json +7 -8
  113. /package/dist/web/_next/static/{3pcP-Y7gHe02EnmTXxc9b → bkF3quPLxz4vmu3191LYm}/_buildManifest.js +0 -0
  114. /package/dist/web/_next/static/{3pcP-Y7gHe02EnmTXxc9b → bkF3quPLxz4vmu3191LYm}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><!--3pcP_Y7gHe02EnmTXxc9b--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&amp;fit=crop&amp;w=1200&amp;q=80"/><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/docs/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>Documentation | vibestats</title><meta name="description" content="Commands, privacy notes, sync plans, and product context for vibestats."/><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,vibestats docs,Claude Code stats docs,Codex CLI docs"/><link rel="canonical" href="https://vibestats.wolfai.dev/docs"/><meta property="og:title" content="Documentation | vibestats"/><meta property="og:description" content="Commands, privacy notes, sync plans, and product context for vibestats."/><meta property="og:url" content="https://vibestats.wolfai.dev/docs"/><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="Documentation | vibestats"/><meta name="twitter:description" content="Commands, privacy notes, sync plans, and product context for vibestats."/><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><main class="docs-page"><script type="application/ld+json">{"@context":"https://schema.org","@type":"TechArticle","headline":"vibestats documentation","description":"Commands, privacy notes, sync plans, and self-hosting context for vibestats.","url":"https://vibestats.wolfai.dev/docs"}</script><nav class="docs-nav" aria-label="Primary"><a href="/">Usage</a><a href="/wrapped">Wrapped</a><a href="/activity">Activity</a><a href="/changelog">Changelog</a></nav><section class="docs-hero" aria-labelledby="docs-title"><div class="docs-hero-copy"><p class="docs-kicker">vibestats docs</p><h1 id="docs-title">Commands first. Sync next.</h1><p class="docs-lede">Track Claude Code, Codex, and combined local AI coding usage from the terminal. Multi-device sync is being prepared as an optional, aggregate-only layer for hosted and self-hosted dashboards.</p><div class="docs-actions"><a class="docs-button" href="/docs/commands">View commands</a><a class="docs-text-link" href="/docs/commands#sync-preview">Sync preview</a></div></div><figure class="docs-hero-media"><img src="https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&amp;fit=crop&amp;w=1200&amp;q=80" alt="Source code on a developer workstation"/><figcaption>Local usage stays local unless you request a share or enable sync.</figcaption></figure></section><section class="docs-command-strip" aria-label="Common commands"><code>npx vibestats</code><code>npx vibestats codex</code><code>npx vibestats all</code><code>npx vibestats --wrapped</code></section><section class="docs-grid" aria-label="Documentation sections"><a class="docs-tile" href="/docs/commands"><span>Commands</span><p>Run usage tables, wrapped summaries, activity views, diagnostics, shares, and source-specific reports.</p></a><a class="docs-tile" href="/docs/commands#sync-preview"><span>Sync Preview</span><p>Account-less multi-device sync, dashboard tokens, self-hosting, leaderboards, and daily scheduler commands.</p></a><a class="docs-tile" href="/changelog"><span>Changelog</span><p>Release notes for CLI behavior, hosted pages, model support, and migration details.</p></a></section><section class="docs-principles" aria-labelledby="privacy-title"><div><p class="docs-kicker">Privacy model</p><h2 id="privacy-title">No prompts. No responses. No project paths.</h2></div><ul><li>Local-first by default</li><li>Aggregated stats only</li><li>Optional hosted sync</li><li>Self-hostable API planned</li><li>Anonymous leaderboards only by opt-in</li></ul></section></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,[],\"\"]\n5:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"40\",\"static/chunks/app/docs/page-5d0587c1d5910e68.js\"],\"\"]\ne:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"3pcP-Y7gHe02EnmTXxc9b\",\"p\":\"\",\"c\":[\"\",\"docs\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"docs\",{\"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\":[\"docs\",[\"$\",\"$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\":[[\"$\",\"main\",null,{\"className\":\"docs-page\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"TechArticle\\\",\\\"headline\\\":\\\"vibestats documentation\\\",\\\"description\\\":\\\"Commands, privacy notes, sync plans, and self-hosting context for vibestats.\\\",\\\"url\\\":\\\"https://vibestats.wolfai.dev/docs\\\"}\"}}],[\"$\",\"nav\",null,{\"className\":\"docs-nav\",\"aria-label\":\"Primary\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/\",\"children\":\"Usage\"}],[\"$\",\"$L5\",null,{\"href\":\"/wrapped\",\"children\":\"Wrapped\"}],[\"$\",\"$L5\",null,{\"href\":\"/activity\",\"children\":\"Activity\"}],[\"$\",\"$L5\",null,{\"href\":\"/changelog\",\"children\":\"Changelog\"}]]}],[\"$\",\"section\",null,{\"className\":\"docs-hero\",\"aria-labelledby\":\"docs-title\",\"children\":[[\"$\",\"div\",null,{\"className\":\"docs-hero-copy\",\"children\":[[\"$\",\"p\",null,{\"className\":\"docs-kicker\",\"children\":\"vibestats docs\"}],[\"$\",\"h1\",null,{\"id\":\"docs-title\",\"children\":\"Commands first. Sync next.\"}],[\"$\",\"p\",null,{\"className\":\"docs-lede\",\"children\":\"Track Claude Code, Codex, and combined local AI coding usage from the terminal. Multi-device sync is being prepared as an optional, aggregate-only layer for hosted and self-hosted dashboards.\"}],[\"$\",\"div\",null,{\"className\":\"docs-actions\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/docs/commands\",\"className\":\"docs-button\",\"children\":\"View commands\"}],[\"$\",\"$L5\",null,{\"href\":\"/docs/commands#sync-preview\",\"className\":\"docs-text-link\",\"children\":\"Sync preview\"}]]}]]}],[\"$\",\"figure\",null,{\"className\":\"docs-hero-media\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format\u0026fit=crop\u0026w=1200\u0026q=80\",\"alt\":\"Source code on a developer workstation\"}],[\"$\",\"figcaption\",null,{\"children\":\"Local usage stays local unless you request a share or enable sync.\"}]]}]]}],[\"$\",\"section\",null,{\"className\":\"docs-command-strip\",\"aria-label\":\"Common commands\",\"children\":[\"$L6\",\"$L7\",\"$L8\",\"$L9\"]}],\"$La\",\"$Lb\"]}],null,\"$Lc\"]}],{},null,false]},null,false]},null,false],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"f:I[496,[],\"OutletBoundary\"]\n11:I[3737,[],\"AsyncMetadataOutlet\"]\n13:I[496,[],\"ViewportBoundary\"]\n15:I[496,[],\"MetadataBoundary\"]\n16:\"$Sreact.suspense\"\n6:[\"$\",\"code\",null,{\"children\":\"npx vibestats\"}]\n7:[\"$\",\"code\",null,{\"children\":\"npx vibestats codex\"}]\n8:[\"$\",\"code\",null,{\"children\":\"npx vibestats all\"}]\n9:[\"$\",\"code\",null,{\"children\":\"npx vibestats --wrapped\"}]\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"section\",null,{\"className\":\"docs-grid\",\"aria-label\":\"Documentation sections\",\"children\":[[\"$\",\"$L5\",\"/docs/commands\",{\"href\":\"/docs/commands\",\"className\":\"docs-tile\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Commands\"}],[\"$\",\"p\",null,{\"children\":\"Run usage tables, wrapped summaries, activity views, diagnostics, shares, and source-specific reports.\"}]]}],[\"$\",\"$L5\",\"/docs/commands#sync-preview\",{\"href\":\"/docs/commands#sync-preview\",\"className\":\"docs-tile\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Sync Preview\"}],[\"$\",\"p\",null,{\"children\":\"Account-less multi-device sync, dashboard tokens, self-hosting, leaderboards, and daily scheduler commands.\"}]]}],[\"$\",\"$L5\",\"/changelog\",{\"href\":\"/changelog\",\"className\":\"docs-tile\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Changelog\"}],[\"$\",\"p\",null,{\"children\":\"Release notes for CLI behavior, hosted pages, model support, and migration details.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"b:[\"$\",\"section\",null,{\"className\":\"docs-principles\",\"aria-labelledby\":\"privacy-title\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"docs-kicker\",\"children\":\"Privacy model\"}],[\"$\",\"h2\",null,{\"id\":\"privacy-title\",\"children\":\"No prompts. No responses. No project paths.\"}]]}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",\"Local-first by default\",{\"children\":\"Local-first by default\"}],[\"$\",\"li\",\"Aggregated stats only\",{\"children\":\"Aggregated stats only\"}],[\"$\",\"li\",\"Optional hosted sync\",{\"children\":\"Optional hosted sync\"}],[\"$\",\"li\",\"Self-hostable API planned\",{\"children\":\"Self-hostable API planned\"}],[\"$\",\"li\",\"Anonymous leaderboards only by opt-in\",{\"children\":\"Anonymous leaderboards only by opt-in\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"c:[\"$\",\"$Lf\",null,{\"children\":[\"$L10\",[\"$\",\"$L11\",null,{\"promise\":\"$@12\"}]]}]\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L13\",null,{\"children\":\"$L14\"}],null],[\"$\",\"$L15\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$16\",null,{\"fallback\":null,\"children\":\"$L17\"}]}]}]]}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n10:null\n"])</script><script>self.__next_f.push([1,"12:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Documentation | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Commands, privacy notes, sync plans, and product context for vibestats.\"}],[\"$\",\"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,vibestats docs,Claude Code stats docs,Codex CLI docs\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/docs\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Documentation | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Commands, privacy notes, sync plans, and product context for vibestats.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/docs\"}],[\"$\",\"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\":\"Documentation | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Commands, privacy notes, sync plans, and product context for vibestats.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"17:\"$12:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--bkF3quPLxz4vmu3191LYm--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&amp;fit=crop&amp;w=1200&amp;q=80"/><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/docs/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>Documentation | vibestats</title><meta name="description" content="Commands, privacy notes, sync plans, and product context for vibestats."/><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,vibestats docs,Claude Code stats docs,Codex CLI docs"/><link rel="canonical" href="https://vibestats.wolfai.dev/docs"/><meta property="og:title" content="Documentation | vibestats"/><meta property="og:description" content="Commands, privacy notes, sync plans, and product context for vibestats."/><meta property="og:url" content="https://vibestats.wolfai.dev/docs"/><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="Documentation | vibestats"/><meta name="twitter:description" content="Commands, privacy notes, sync plans, and product context for vibestats."/><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><main class="docs-page"><script type="application/ld+json">{"@context":"https://schema.org","@type":"TechArticle","headline":"vibestats documentation","description":"Commands, privacy notes, sync plans, and self-hosting context for vibestats.","url":"https://vibestats.wolfai.dev/docs"}</script><nav class="docs-nav" aria-label="Primary"><a href="/">Usage</a><a href="/wrapped">Wrapped</a><a href="/activity">Activity</a><a href="/changelog">Changelog</a></nav><section class="docs-hero" aria-labelledby="docs-title"><div class="docs-hero-copy"><p class="docs-kicker">vibestats docs</p><h1 id="docs-title">Commands first. Sync next.</h1><p class="docs-lede">Track Claude Code, Codex, and combined local AI coding usage from the terminal. Multi-device sync is being prepared as an optional, aggregate-only layer for hosted and self-hosted dashboards.</p><div class="docs-actions"><a class="docs-button" href="/docs/commands">View commands</a><a class="docs-text-link" href="/docs/commands#sync-preview">Sync preview</a></div></div><figure class="docs-hero-media"><img src="https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&amp;fit=crop&amp;w=1200&amp;q=80" alt="Source code on a developer workstation"/><figcaption>Local usage stays local unless you request a share or enable sync.</figcaption></figure></section><section class="docs-command-strip" aria-label="Common commands"><code>npx vibestats</code><code>npx vibestats codex</code><code>npx vibestats all</code><code>npx vibestats --wrapped</code></section><section class="docs-grid" aria-label="Documentation sections"><a class="docs-tile" href="/docs/commands"><span>Commands</span><p>Run usage tables, wrapped summaries, activity views, diagnostics, shares, and source-specific reports.</p></a><a class="docs-tile" href="/docs/commands#sync-preview"><span>Sync Preview</span><p>Account-less multi-device sync, dashboard tokens, self-hosting, leaderboards, and daily scheduler commands.</p></a><a class="docs-tile" href="/changelog"><span>Changelog</span><p>Release notes for CLI behavior, hosted pages, model support, and migration details.</p></a></section><section class="docs-principles" aria-labelledby="privacy-title"><div><p class="docs-kicker">Privacy model</p><h2 id="privacy-title">No prompts. No responses. No project paths.</h2></div><ul><li>Local-first by default</li><li>Aggregated stats only</li><li>Optional hosted sync</li><li>Self-hostable API planned</li><li>Anonymous leaderboards only by opt-in</li></ul></section></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,[],\"\"]\n5:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"40\",\"static/chunks/app/docs/page-5d0587c1d5910e68.js\"],\"\"]\ne:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"bkF3quPLxz4vmu3191LYm\",\"p\":\"\",\"c\":[\"\",\"docs\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"docs\",{\"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\":[\"docs\",[\"$\",\"$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\":[[\"$\",\"main\",null,{\"className\":\"docs-page\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"TechArticle\\\",\\\"headline\\\":\\\"vibestats documentation\\\",\\\"description\\\":\\\"Commands, privacy notes, sync plans, and self-hosting context for vibestats.\\\",\\\"url\\\":\\\"https://vibestats.wolfai.dev/docs\\\"}\"}}],[\"$\",\"nav\",null,{\"className\":\"docs-nav\",\"aria-label\":\"Primary\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/\",\"children\":\"Usage\"}],[\"$\",\"$L5\",null,{\"href\":\"/wrapped\",\"children\":\"Wrapped\"}],[\"$\",\"$L5\",null,{\"href\":\"/activity\",\"children\":\"Activity\"}],[\"$\",\"$L5\",null,{\"href\":\"/changelog\",\"children\":\"Changelog\"}]]}],[\"$\",\"section\",null,{\"className\":\"docs-hero\",\"aria-labelledby\":\"docs-title\",\"children\":[[\"$\",\"div\",null,{\"className\":\"docs-hero-copy\",\"children\":[[\"$\",\"p\",null,{\"className\":\"docs-kicker\",\"children\":\"vibestats docs\"}],[\"$\",\"h1\",null,{\"id\":\"docs-title\",\"children\":\"Commands first. Sync next.\"}],[\"$\",\"p\",null,{\"className\":\"docs-lede\",\"children\":\"Track Claude Code, Codex, and combined local AI coding usage from the terminal. Multi-device sync is being prepared as an optional, aggregate-only layer for hosted and self-hosted dashboards.\"}],[\"$\",\"div\",null,{\"className\":\"docs-actions\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/docs/commands\",\"className\":\"docs-button\",\"children\":\"View commands\"}],[\"$\",\"$L5\",null,{\"href\":\"/docs/commands#sync-preview\",\"className\":\"docs-text-link\",\"children\":\"Sync preview\"}]]}]]}],[\"$\",\"figure\",null,{\"className\":\"docs-hero-media\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format\u0026fit=crop\u0026w=1200\u0026q=80\",\"alt\":\"Source code on a developer workstation\"}],[\"$\",\"figcaption\",null,{\"children\":\"Local usage stays local unless you request a share or enable sync.\"}]]}]]}],[\"$\",\"section\",null,{\"className\":\"docs-command-strip\",\"aria-label\":\"Common commands\",\"children\":[\"$L6\",\"$L7\",\"$L8\",\"$L9\"]}],\"$La\",\"$Lb\"]}],null,\"$Lc\"]}],{},null,false]},null,false]},null,false],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"f:I[496,[],\"OutletBoundary\"]\n11:I[3737,[],\"AsyncMetadataOutlet\"]\n13:I[496,[],\"ViewportBoundary\"]\n15:I[496,[],\"MetadataBoundary\"]\n16:\"$Sreact.suspense\"\n6:[\"$\",\"code\",null,{\"children\":\"npx vibestats\"}]\n7:[\"$\",\"code\",null,{\"children\":\"npx vibestats codex\"}]\n8:[\"$\",\"code\",null,{\"children\":\"npx vibestats all\"}]\n9:[\"$\",\"code\",null,{\"children\":\"npx vibestats --wrapped\"}]\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"section\",null,{\"className\":\"docs-grid\",\"aria-label\":\"Documentation sections\",\"children\":[[\"$\",\"$L5\",\"/docs/commands\",{\"href\":\"/docs/commands\",\"className\":\"docs-tile\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Commands\"}],[\"$\",\"p\",null,{\"children\":\"Run usage tables, wrapped summaries, activity views, diagnostics, shares, and source-specific reports.\"}]]}],[\"$\",\"$L5\",\"/docs/commands#sync-preview\",{\"href\":\"/docs/commands#sync-preview\",\"className\":\"docs-tile\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Sync Preview\"}],[\"$\",\"p\",null,{\"children\":\"Account-less multi-device sync, dashboard tokens, self-hosting, leaderboards, and daily scheduler commands.\"}]]}],[\"$\",\"$L5\",\"/changelog\",{\"href\":\"/changelog\",\"className\":\"docs-tile\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Changelog\"}],[\"$\",\"p\",null,{\"children\":\"Release notes for CLI behavior, hosted pages, model support, and migration details.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"b:[\"$\",\"section\",null,{\"className\":\"docs-principles\",\"aria-labelledby\":\"privacy-title\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"docs-kicker\",\"children\":\"Privacy model\"}],[\"$\",\"h2\",null,{\"id\":\"privacy-title\",\"children\":\"No prompts. No responses. No project paths.\"}]]}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",\"Local-first by default\",{\"children\":\"Local-first by default\"}],[\"$\",\"li\",\"Aggregated stats only\",{\"children\":\"Aggregated stats only\"}],[\"$\",\"li\",\"Optional hosted sync\",{\"children\":\"Optional hosted sync\"}],[\"$\",\"li\",\"Self-hostable API planned\",{\"children\":\"Self-hostable API planned\"}],[\"$\",\"li\",\"Anonymous leaderboards only by opt-in\",{\"children\":\"Anonymous leaderboards only by opt-in\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"c:[\"$\",\"$Lf\",null,{\"children\":[\"$L10\",[\"$\",\"$L11\",null,{\"promise\":\"$@12\"}]]}]\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L13\",null,{\"children\":\"$L14\"}],null],[\"$\",\"$L15\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$16\",null,{\"fallback\":null,\"children\":\"$L17\"}]}]}]]}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n10:null\n"])</script><script>self.__next_f.push([1,"12:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Documentation | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Commands, privacy notes, sync plans, and product context for vibestats.\"}],[\"$\",\"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,vibestats docs,Claude Code stats docs,Codex CLI docs\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/docs\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Documentation | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Commands, privacy notes, sync plans, and product context for vibestats.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/docs\"}],[\"$\",\"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\":\"Documentation | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Commands, privacy notes, sync plans, and product context for vibestats.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"17:\"$12:metadata\"\n"])</script></body></html>
package/dist/web/docs.txt CHANGED
@@ -5,7 +5,7 @@
5
5
  5:I[4816,["816","static/chunks/816-8960921093d57453.js","40","static/chunks/app/docs/page-5d0587c1d5910e68.js"],""]
6
6
  e:I[2207,[],""]
7
7
  :HL["/_next/static/css/335de1248158d380.css","style"]
8
- 0:{"P":null,"b":"3pcP-Y7gHe02EnmTXxc9b","p":"","c":["","docs"],"i":false,"f":[[["",{"children":["docs",{"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":["docs",["$","$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":[["$","main",null,{"className":"docs-page","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"headline\":\"vibestats documentation\",\"description\":\"Commands, privacy notes, sync plans, and self-hosting context for vibestats.\",\"url\":\"https://vibestats.wolfai.dev/docs\"}"}}],["$","nav",null,{"className":"docs-nav","aria-label":"Primary","children":[["$","$L5",null,{"href":"/","children":"Usage"}],["$","$L5",null,{"href":"/wrapped","children":"Wrapped"}],["$","$L5",null,{"href":"/activity","children":"Activity"}],["$","$L5",null,{"href":"/changelog","children":"Changelog"}]]}],["$","section",null,{"className":"docs-hero","aria-labelledby":"docs-title","children":[["$","div",null,{"className":"docs-hero-copy","children":[["$","p",null,{"className":"docs-kicker","children":"vibestats docs"}],["$","h1",null,{"id":"docs-title","children":"Commands first. Sync next."}],["$","p",null,{"className":"docs-lede","children":"Track Claude Code, Codex, and combined local AI coding usage from the terminal. Multi-device sync is being prepared as an optional, aggregate-only layer for hosted and self-hosted dashboards."}],["$","div",null,{"className":"docs-actions","children":[["$","$L5",null,{"href":"/docs/commands","className":"docs-button","children":"View commands"}],["$","$L5",null,{"href":"/docs/commands#sync-preview","className":"docs-text-link","children":"Sync preview"}]]}]]}],["$","figure",null,{"className":"docs-hero-media","children":[["$","img",null,{"src":"https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&w=1200&q=80","alt":"Source code on a developer workstation"}],["$","figcaption",null,{"children":"Local usage stays local unless you request a share or enable sync."}]]}]]}],["$","section",null,{"className":"docs-command-strip","aria-label":"Common commands","children":["$L6","$L7","$L8","$L9"]}],"$La","$Lb"]}],null,"$Lc"]}],{},null,false]},null,false]},null,false],"$Ld",false]],"m":"$undefined","G":["$e",[]],"s":false,"S":true}
8
+ 0:{"P":null,"b":"bkF3quPLxz4vmu3191LYm","p":"","c":["","docs"],"i":false,"f":[[["",{"children":["docs",{"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":["docs",["$","$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":[["$","main",null,{"className":"docs-page","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"headline\":\"vibestats documentation\",\"description\":\"Commands, privacy notes, sync plans, and self-hosting context for vibestats.\",\"url\":\"https://vibestats.wolfai.dev/docs\"}"}}],["$","nav",null,{"className":"docs-nav","aria-label":"Primary","children":[["$","$L5",null,{"href":"/","children":"Usage"}],["$","$L5",null,{"href":"/wrapped","children":"Wrapped"}],["$","$L5",null,{"href":"/activity","children":"Activity"}],["$","$L5",null,{"href":"/changelog","children":"Changelog"}]]}],["$","section",null,{"className":"docs-hero","aria-labelledby":"docs-title","children":[["$","div",null,{"className":"docs-hero-copy","children":[["$","p",null,{"className":"docs-kicker","children":"vibestats docs"}],["$","h1",null,{"id":"docs-title","children":"Commands first. Sync next."}],["$","p",null,{"className":"docs-lede","children":"Track Claude Code, Codex, and combined local AI coding usage from the terminal. Multi-device sync is being prepared as an optional, aggregate-only layer for hosted and self-hosted dashboards."}],["$","div",null,{"className":"docs-actions","children":[["$","$L5",null,{"href":"/docs/commands","className":"docs-button","children":"View commands"}],["$","$L5",null,{"href":"/docs/commands#sync-preview","className":"docs-text-link","children":"Sync preview"}]]}]]}],["$","figure",null,{"className":"docs-hero-media","children":[["$","img",null,{"src":"https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&w=1200&q=80","alt":"Source code on a developer workstation"}],["$","figcaption",null,{"children":"Local usage stays local unless you request a share or enable sync."}]]}]]}],["$","section",null,{"className":"docs-command-strip","aria-label":"Common commands","children":["$L6","$L7","$L8","$L9"]}],"$La","$Lb"]}],null,"$Lc"]}],{},null,false]},null,false]},null,false],"$Ld",false]],"m":"$undefined","G":["$e",[]],"s":false,"S":true}
9
9
  f:I[496,[],"OutletBoundary"]
10
10
  11:I[3737,[],"AsyncMetadataOutlet"]
11
11
  13:I[496,[],"ViewportBoundary"]
@@ -1 +1 @@
1
- <!DOCTYPE html><!--3pcP_Y7gHe02EnmTXxc9b--><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/features/%5Bslug%5D/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>AI coding activity heatmap | vibestats</title><meta name="description" content="Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."/><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,AI coding activity heatmap,Claude Code activity heatmap,Codex activity heatmap"/><link rel="canonical" href="https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"/><meta property="og:title" content="AI coding activity heatmap | vibestats"/><meta property="og:description" content="Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."/><meta property="og:url" content="https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"/><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 heatmap | vibestats"/><meta name="twitter:description" content="Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."/><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><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%)] px-4 py-8 text-slate-900 md:px-8 md:py-12"><script type="application/ld+json">[{"@context":"https://schema.org","@type":"WebPage","name":"AI coding activity heatmap","description":"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.","url":"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"vibestats","item":"https://vibestats.wolfai.dev/"},{"@type":"ListItem","position":2,"name":"Features","item":"https://vibestats.wolfai.dev/features"},{"@type":"ListItem","position":3,"name":"AI coding activity heatmap","item":"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"}]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can vibestats help with ai coding activity heatmap?","acceptedAnswer":{"@type":"Answer","text":"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows."}},{"@type":"Question","name":"Does this stay local?","acceptedAnswer":{"@type":"Answer","text":"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output."}},{"@type":"Question","name":"Where should I start?","acceptedAnswer":{"@type":"Answer","text":"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics."}}]}]</script><div class="mx-auto max-w-7xl"><header class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden"><div class="flex flex-wrap items-center gap-3 text-sm text-slate-500"><a class="transition hover:text-orange-700" href="/">vibestats</a><span>/</span><a class="transition hover:text-orange-700" href="/features">Features</a><span>/</span><span class="text-slate-700">AI coding activity heatmap</span></div><p class="mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">Feature</p><h1 class="mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl">AI coding activity heatmap</h1><p class="mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg">Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.</p><div class="mt-6 grid gap-3 md:grid-cols-3"><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Intent</div><div class="mt-2 text-sm leading-6 text-slate-700">Feature</div></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Focus</div><div class="mt-2 text-sm leading-6 text-slate-700">AI coding activity heatmap in vibestats is designed for people who want a visual activity surface instead of only tables and totals.</div></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Next step</div><div class="mt-2 text-sm leading-6 text-slate-700"><a class="text-slate-900 transition hover:text-orange-700" href="/docs/commands">Open the command reference</a></div></div></div></header><section class="mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]"><article class="rounded-[1.8rem] 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">Highlights</p><ul class="mt-4 space-y-3 text-sm leading-7 text-slate-600"><li>GitHub-style calendar view</li><li>Recent totals and streaks in the same surface</li><li>Useful for weekly and monthly retrospectives</li></ul></article><article class="rounded-[1.8rem] 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">Relevant commands</p><div class="mt-4 grid gap-3"><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity</code><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity --metric sessions</code><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity --days 365</code></div></article></section><section class="mt-6 grid gap-4 md:grid-cols-2"><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">What ai coding activity heatmap means</h2><p class="mt-4 text-sm leading-7 text-slate-600">AI coding activity heatmap is about getting a clear, local view of AI coding activity without building custom spreadsheets or one-off scripts.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">Who this is for</h2><p class="mt-4 text-sm leading-7 text-slate-600">People who want a visual activity surface instead of only tables and totals.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How vibestats handles it</h2><p class="mt-4 text-sm leading-7 text-slate-600">vibestats turns aggregate local usage into a calendar heatmap with daily intensity, streaks, totals, and model context that works as a page and image-friendly share artifact.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">What you get back</h2><p class="mt-4 text-sm leading-7 text-slate-600">You can spot consistency, recovery periods, high-output weeks, and recent momentum without reading a dense terminal report.</p></article></section><section class="mt-6 rounded-[1.8rem] 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">FAQ</p><div class="mt-4 grid gap-4 md:grid-cols-2"><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Can vibestats help with ai coding activity heatmap?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Does this stay local?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Where should I start?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics.</p></article></div></section><section class="mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><div class="flex items-center justify-between gap-4"><div><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Related pages</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">Continue by intent</h2></div><a class="text-sm font-medium text-slate-700 transition hover:text-orange-700" href="/features">View all <!-- -->features</a></div><div class="mt-5 grid gap-4 md:grid-cols-3"><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/guides/how-to-build-ai-activity-heatmap"><span class="block font-semibold text-slate-950">guides how-to-build-ai-activity-heatmap</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/compare/wrapped-vs-activity-heatmap"><span class="block font-semibold text-slate-950">compare wrapped-vs-activity-heatmap</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/use-cases/weekly-reviews"><span class="block font-semibold text-slate-950">use-cases weekly-reviews</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a></div></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\":\"3pcP-Y7gHe02EnmTXxc9b\",\"p\":\"\",\"c\":[\"\",\"features\",\"ai-coding-activity-heatmap\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"features\",{\"children\":[[\"slug\",\"ai-coding-activity-heatmap\",\"d\"],{\"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\":[\"features\",[\"$\",\"$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\":[[\"slug\",\"ai-coding-activity-heatmap\",\"d\"],[\"$\",\"$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]},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,"11:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"180\",\"static/chunks/app/features/%5Bslug%5D/page-5d0587c1d5910e68.js\"],\"\"]\n10:T636,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"AI coding activity heatmap\",\"description\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\",\"url\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"vibestats\",\"url\":\"https://vibestats.wolfai.dev/\"}},{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"vibestats\",\"item\":\"https://vibestats.wolfai.dev/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Features\",\"item\":\"https://vibestats.wolfai.dev/features\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AI coding activity heatmap\",\"item\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\"}]},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Can vibestats help with ai coding activity heatmap?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows.\"}},{\"@type\":\"Question\",\"name\":\"Does this stay local?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output.\"}},{\"@type\":\"Question\",\"name\":\"Where should I start?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics.\"}}]}]"])</script><script>self.__next_f.push([1,"5:[\"$\",\"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%)] px-4 py-8 text-slate-900 md:px-8 md:py-12\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$10\"}}],[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3 text-sm text-slate-500\",\"children\":[[\"$\",\"$L11\",null,{\"href\":\"/\",\"className\":\"transition hover:text-orange-700\",\"children\":\"vibestats\"}],[\"$\",\"span\",null,{\"children\":\"/\"}],[\"$\",\"$L11\",null,{\"href\":\"/features\",\"className\":\"transition hover:text-orange-700\",\"children\":\"Features\"}],[\"$\",\"span\",null,{\"children\":\"/\"}],[\"$\",\"span\",null,{\"className\":\"text-slate-700\",\"children\":\"AI coding activity heatmap\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"Feature\"}],[\"$\",\"h1\",null,{\"className\":\"mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl\",\"children\":\"AI coding activity heatmap\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg\",\"children\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 grid gap-3 md:grid-cols-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Intent\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":\"Feature\"}]]}],[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[\"$L12\",\"$L13\"]}],\"$L14\"]}]]}],\"$L15\",null,null,\"$L16\",\"$L17\",\"$L18\"]}]]}]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Focus\"}]\n13:[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":\"AI coding activity heatmap in vibestats is designed for people who want a visual activity surface instead of only tables and totals.\"}]\n14:[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Next step\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":[\"$\",\"$L11\",null,{\"href\":\"/docs/commands\",\"className\":\"text-slate-900 transition hover:text-orange-700\",\"children\":\"Open the command reference\"}]}]]}]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]\",\"children\":[[\"$\",\"article\",null,{\"className\":\"rounded-[1.8rem] 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\":\"Highlights\"}],[\"$\",\"ul\",null,{\"className\":\"mt-4 space-y-3 text-sm leading-7 text-slate-600\",\"children\":[[\"$\",\"li\",\"GitHub-style calendar view\",{\"children\":\"GitHub-style calendar view\"}],[\"$\",\"li\",\"Recent totals and streaks in the same surface\",{\"children\":\"Recent totals and streaks in the same surface\"}],[\"$\",\"li\",\"Useful for weekly and monthly retrospectives\",{\"children\":\"Useful for weekly and monthly retrospectives\"}]]}]]}],[\"$\",\"article\",null,{\"className\":\"rounded-[1.8rem] 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\":\"Relevant commands\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-3\",\"children\":[[\"$\",\"code\",\"npx vibestats --activity\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity\"}],[\"$\",\"code\",\"npx vibestats --activity --metric sessions\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity --metric sessions\"}],[\"$\",\"code\",\"npx vibestats --activity --days 365\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity --days 365\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"16:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 md:grid-cols-2\",\"children\":[[\"$\",\"article\",\"What ai coding activity heatmap means\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"What ai coding activity heatmap means\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"AI coding activity heatmap is about getting a clear, local view of AI coding activity without building custom spreadsheets or one-off scripts.\"}]]}],[\"$\",\"article\",\"Who this is for\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"Who this is for\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"People who want a visual activity surface instead of only tables and totals.\"}]]}],[\"$\",\"article\",\"How vibestats handles it\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How vibestats handles it\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"vibestats turns aggregate local usage into a calendar heatmap with daily intensity, streaks, totals, and model context that works as a page and image-friendly share artifact.\"}]]}],[\"$\",\"article\",\"What you get back\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"What you get back\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"You can spot consistency, recovery periods, high-output weeks, and recent momentum without reading a dense terminal report.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"17:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[1.8rem] 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\":\"FAQ\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-4 md:grid-cols-2\",\"children\":[[\"$\",\"article\",\"Can vibestats help with ai coding activity heatmap?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Can vibestats help with ai coding activity heatmap?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows.\"}]]}],[\"$\",\"article\",\"Does this stay local?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Does this stay local?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output.\"}]]}],[\"$\",\"article\",\"Where should I start?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Where should I start?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"18:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-4\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Related pages\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"Continue by intent\"}]]}],[\"$\",\"$L11\",null,{\"href\":\"/features\",\"className\":\"text-sm font-medium text-slate-700 transition hover:text-orange-700\",\"children\":[\"View all \",\"features\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-5 grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"$L11\",\"/guides/how-to-build-ai-activity-heatmap\",{\"href\":\"/guides/how-to-build-ai-activity-heatmap\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"guides how-to-build-ai-activity-heatmap\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}],[\"$\",\"$L11\",\"/compare/wrapped-vs-activity-heatmap\",{\"href\":\"/compare/wrapped-vs-activity-heatmap\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"compare wrapped-vs-activity-heatmap\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}],[\"$\",\"$L11\",\"/use-cases/weekly-reviews\",{\"href\":\"/use-cases/weekly-reviews\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"use-cases weekly-reviews\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}]]}]]}]\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 heatmap | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}],[\"$\",\"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,AI coding activity heatmap,Claude Code activity heatmap,Codex activity heatmap\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"AI coding activity heatmap | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\"}],[\"$\",\"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 heatmap | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--bkF3quPLxz4vmu3191LYm--><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/features/%5Bslug%5D/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>AI coding activity heatmap | vibestats</title><meta name="description" content="Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."/><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,AI coding activity heatmap,Claude Code activity heatmap,Codex activity heatmap"/><link rel="canonical" href="https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"/><meta property="og:title" content="AI coding activity heatmap | vibestats"/><meta property="og:description" content="Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."/><meta property="og:url" content="https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"/><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 heatmap | vibestats"/><meta name="twitter:description" content="Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."/><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><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%)] px-4 py-8 text-slate-900 md:px-8 md:py-12"><script type="application/ld+json">[{"@context":"https://schema.org","@type":"WebPage","name":"AI coding activity heatmap","description":"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.","url":"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"vibestats","item":"https://vibestats.wolfai.dev/"},{"@type":"ListItem","position":2,"name":"Features","item":"https://vibestats.wolfai.dev/features"},{"@type":"ListItem","position":3,"name":"AI coding activity heatmap","item":"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"}]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can vibestats help with ai coding activity heatmap?","acceptedAnswer":{"@type":"Answer","text":"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows."}},{"@type":"Question","name":"Does this stay local?","acceptedAnswer":{"@type":"Answer","text":"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output."}},{"@type":"Question","name":"Where should I start?","acceptedAnswer":{"@type":"Answer","text":"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics."}}]}]</script><div class="mx-auto max-w-7xl"><header class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden"><div class="flex flex-wrap items-center gap-3 text-sm text-slate-500"><a class="transition hover:text-orange-700" href="/">vibestats</a><span>/</span><a class="transition hover:text-orange-700" href="/features">Features</a><span>/</span><span class="text-slate-700">AI coding activity heatmap</span></div><p class="mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">Feature</p><h1 class="mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl">AI coding activity heatmap</h1><p class="mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg">Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.</p><div class="mt-6 grid gap-3 md:grid-cols-3"><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Intent</div><div class="mt-2 text-sm leading-6 text-slate-700">Feature</div></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Focus</div><div class="mt-2 text-sm leading-6 text-slate-700">AI coding activity heatmap in vibestats is designed for people who want a visual activity surface instead of only tables and totals.</div></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Next step</div><div class="mt-2 text-sm leading-6 text-slate-700"><a class="text-slate-900 transition hover:text-orange-700" href="/docs/commands">Open the command reference</a></div></div></div></header><section class="mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]"><article class="rounded-[1.8rem] 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">Highlights</p><ul class="mt-4 space-y-3 text-sm leading-7 text-slate-600"><li>GitHub-style calendar view</li><li>Recent totals and streaks in the same surface</li><li>Useful for weekly and monthly retrospectives</li></ul></article><article class="rounded-[1.8rem] 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">Relevant commands</p><div class="mt-4 grid gap-3"><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity</code><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity --metric sessions</code><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats --activity --days 365</code></div></article></section><section class="mt-6 grid gap-4 md:grid-cols-2"><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">What ai coding activity heatmap means</h2><p class="mt-4 text-sm leading-7 text-slate-600">AI coding activity heatmap is about getting a clear, local view of AI coding activity without building custom spreadsheets or one-off scripts.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">Who this is for</h2><p class="mt-4 text-sm leading-7 text-slate-600">People who want a visual activity surface instead of only tables and totals.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How vibestats handles it</h2><p class="mt-4 text-sm leading-7 text-slate-600">vibestats turns aggregate local usage into a calendar heatmap with daily intensity, streaks, totals, and model context that works as a page and image-friendly share artifact.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">What you get back</h2><p class="mt-4 text-sm leading-7 text-slate-600">You can spot consistency, recovery periods, high-output weeks, and recent momentum without reading a dense terminal report.</p></article></section><section class="mt-6 rounded-[1.8rem] 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">FAQ</p><div class="mt-4 grid gap-4 md:grid-cols-2"><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Can vibestats help with ai coding activity heatmap?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Does this stay local?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Where should I start?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics.</p></article></div></section><section class="mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><div class="flex items-center justify-between gap-4"><div><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Related pages</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">Continue by intent</h2></div><a class="text-sm font-medium text-slate-700 transition hover:text-orange-700" href="/features">View all <!-- -->features</a></div><div class="mt-5 grid gap-4 md:grid-cols-3"><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/guides/how-to-build-ai-activity-heatmap"><span class="block font-semibold text-slate-950">guides how-to-build-ai-activity-heatmap</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/compare/wrapped-vs-activity-heatmap"><span class="block font-semibold text-slate-950">compare wrapped-vs-activity-heatmap</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/use-cases/weekly-reviews"><span class="block font-semibold text-slate-950">use-cases weekly-reviews</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a></div></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\":\"bkF3quPLxz4vmu3191LYm\",\"p\":\"\",\"c\":[\"\",\"features\",\"ai-coding-activity-heatmap\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"features\",{\"children\":[[\"slug\",\"ai-coding-activity-heatmap\",\"d\"],{\"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\":[\"features\",[\"$\",\"$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\":[[\"slug\",\"ai-coding-activity-heatmap\",\"d\"],[\"$\",\"$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]},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,"11:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"180\",\"static/chunks/app/features/%5Bslug%5D/page-5d0587c1d5910e68.js\"],\"\"]\n10:T636,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"AI coding activity heatmap\",\"description\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\",\"url\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"vibestats\",\"url\":\"https://vibestats.wolfai.dev/\"}},{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"vibestats\",\"item\":\"https://vibestats.wolfai.dev/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Features\",\"item\":\"https://vibestats.wolfai.dev/features\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AI coding activity heatmap\",\"item\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\"}]},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Can vibestats help with ai coding activity heatmap?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows.\"}},{\"@type\":\"Question\",\"name\":\"Does this stay local?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output.\"}},{\"@type\":\"Question\",\"name\":\"Where should I start?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics.\"}}]}]"])</script><script>self.__next_f.push([1,"5:[\"$\",\"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%)] px-4 py-8 text-slate-900 md:px-8 md:py-12\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$10\"}}],[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3 text-sm text-slate-500\",\"children\":[[\"$\",\"$L11\",null,{\"href\":\"/\",\"className\":\"transition hover:text-orange-700\",\"children\":\"vibestats\"}],[\"$\",\"span\",null,{\"children\":\"/\"}],[\"$\",\"$L11\",null,{\"href\":\"/features\",\"className\":\"transition hover:text-orange-700\",\"children\":\"Features\"}],[\"$\",\"span\",null,{\"children\":\"/\"}],[\"$\",\"span\",null,{\"className\":\"text-slate-700\",\"children\":\"AI coding activity heatmap\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"Feature\"}],[\"$\",\"h1\",null,{\"className\":\"mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl\",\"children\":\"AI coding activity heatmap\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg\",\"children\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 grid gap-3 md:grid-cols-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Intent\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":\"Feature\"}]]}],[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[\"$L12\",\"$L13\"]}],\"$L14\"]}]]}],\"$L15\",null,null,\"$L16\",\"$L17\",\"$L18\"]}]]}]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Focus\"}]\n13:[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":\"AI coding activity heatmap in vibestats is designed for people who want a visual activity surface instead of only tables and totals.\"}]\n14:[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Next step\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":[\"$\",\"$L11\",null,{\"href\":\"/docs/commands\",\"className\":\"text-slate-900 transition hover:text-orange-700\",\"children\":\"Open the command reference\"}]}]]}]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]\",\"children\":[[\"$\",\"article\",null,{\"className\":\"rounded-[1.8rem] 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\":\"Highlights\"}],[\"$\",\"ul\",null,{\"className\":\"mt-4 space-y-3 text-sm leading-7 text-slate-600\",\"children\":[[\"$\",\"li\",\"GitHub-style calendar view\",{\"children\":\"GitHub-style calendar view\"}],[\"$\",\"li\",\"Recent totals and streaks in the same surface\",{\"children\":\"Recent totals and streaks in the same surface\"}],[\"$\",\"li\",\"Useful for weekly and monthly retrospectives\",{\"children\":\"Useful for weekly and monthly retrospectives\"}]]}]]}],[\"$\",\"article\",null,{\"className\":\"rounded-[1.8rem] 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\":\"Relevant commands\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-3\",\"children\":[[\"$\",\"code\",\"npx vibestats --activity\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity\"}],[\"$\",\"code\",\"npx vibestats --activity --metric sessions\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity --metric sessions\"}],[\"$\",\"code\",\"npx vibestats --activity --days 365\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats --activity --days 365\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"16:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 md:grid-cols-2\",\"children\":[[\"$\",\"article\",\"What ai coding activity heatmap means\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"What ai coding activity heatmap means\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"AI coding activity heatmap is about getting a clear, local view of AI coding activity without building custom spreadsheets or one-off scripts.\"}]]}],[\"$\",\"article\",\"Who this is for\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"Who this is for\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"People who want a visual activity surface instead of only tables and totals.\"}]]}],[\"$\",\"article\",\"How vibestats handles it\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How vibestats handles it\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"vibestats turns aggregate local usage into a calendar heatmap with daily intensity, streaks, totals, and model context that works as a page and image-friendly share artifact.\"}]]}],[\"$\",\"article\",\"What you get back\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"What you get back\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"You can spot consistency, recovery periods, high-output weeks, and recent momentum without reading a dense terminal report.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"17:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[1.8rem] 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\":\"FAQ\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-4 md:grid-cols-2\",\"children\":[[\"$\",\"article\",\"Can vibestats help with ai coding activity heatmap?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Can vibestats help with ai coding activity heatmap?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows.\"}]]}],[\"$\",\"article\",\"Does this stay local?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Does this stay local?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output.\"}]]}],[\"$\",\"article\",\"Where should I start?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Where should I start?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"18:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-4\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Related pages\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"Continue by intent\"}]]}],[\"$\",\"$L11\",null,{\"href\":\"/features\",\"className\":\"text-sm font-medium text-slate-700 transition hover:text-orange-700\",\"children\":[\"View all \",\"features\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-5 grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"$L11\",\"/guides/how-to-build-ai-activity-heatmap\",{\"href\":\"/guides/how-to-build-ai-activity-heatmap\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"guides how-to-build-ai-activity-heatmap\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}],[\"$\",\"$L11\",\"/compare/wrapped-vs-activity-heatmap\",{\"href\":\"/compare/wrapped-vs-activity-heatmap\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"compare wrapped-vs-activity-heatmap\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}],[\"$\",\"$L11\",\"/use-cases/weekly-reviews\",{\"href\":\"/use-cases/weekly-reviews\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"use-cases weekly-reviews\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}]]}]]}]\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 heatmap | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}],[\"$\",\"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,AI coding activity heatmap,Claude Code activity heatmap,Codex activity heatmap\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"AI coding activity heatmap | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap\"}],[\"$\",\"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 heatmap | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.\"}]],\"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":"3pcP-Y7gHe02EnmTXxc9b","p":"","c":["","features","ai-coding-activity-heatmap"],"i":false,"f":[[["",{"children":["features",{"children":[["slug","ai-coding-activity-heatmap","d"],{"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":["features",["$","$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":[["slug","ai-coding-activity-heatmap","d"],["$","$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]},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":"bkF3quPLxz4vmu3191LYm","p":"","c":["","features","ai-coding-activity-heatmap"],"i":false,"f":[[["",{"children":["features",{"children":[["slug","ai-coding-activity-heatmap","d"],{"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":["features",["$","$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":[["slug","ai-coding-activity-heatmap","d"],["$","$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]},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
  11:I[4816,["816","static/chunks/816-8960921093d57453.js","180","static/chunks/app/features/%5Bslug%5D/page-5d0587c1d5910e68.js"],""]
14
14
  10:T636,[{"@context":"https://schema.org","@type":"WebPage","name":"AI coding activity heatmap","description":"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals.","url":"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"vibestats","item":"https://vibestats.wolfai.dev/"},{"@type":"ListItem","position":2,"name":"Features","item":"https://vibestats.wolfai.dev/features"},{"@type":"ListItem","position":3,"name":"AI coding activity heatmap","item":"https://vibestats.wolfai.dev/features/ai-coding-activity-heatmap"}]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can vibestats help with ai coding activity heatmap?","acceptedAnswer":{"@type":"Answer","text":"Yes. vibestats is built to support ai coding activity heatmap with local reporting, aggregate pages, and command-line workflows."}},{"@type":"Question","name":"Does this stay local?","acceptedAnswer":{"@type":"Answer","text":"Yes. vibestats is local-first. Prompts and responses stay out of the hosted pages unless you intentionally publish aggregate share output."}},{"@type":"Question","name":"Where should I start?","acceptedAnswer":{"@type":"Answer","text":"Start with the command reference, then use the related links below to jump into wrapped reports, activity heatmaps, share pages, or diagnostics."}}]}]5:["$","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%)] px-4 py-8 text-slate-900 md:px-8 md:py-12","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$10"}}],["$","div",null,{"className":"mx-auto max-w-7xl","children":[["$","header",null,{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden","children":[["$","div",null,{"className":"flex flex-wrap items-center gap-3 text-sm text-slate-500","children":[["$","$L11",null,{"href":"/","className":"transition hover:text-orange-700","children":"vibestats"}],["$","span",null,{"children":"/"}],["$","$L11",null,{"href":"/features","className":"transition hover:text-orange-700","children":"Features"}],["$","span",null,{"children":"/"}],["$","span",null,{"className":"text-slate-700","children":"AI coding activity heatmap"}]]}],["$","p",null,{"className":"mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500","children":"Feature"}],["$","h1",null,{"className":"mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl","children":"AI coding activity heatmap"}],["$","p",null,{"className":"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg","children":"Generate GitHub-style activity heatmaps for Claude Code and Codex CLI usage with streaks and rolling totals."}],["$","div",null,{"className":"mt-6 grid gap-3 md:grid-cols-3","children":[["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","div",null,{"className":"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Intent"}],["$","div",null,{"className":"mt-2 text-sm leading-6 text-slate-700","children":"Feature"}]]}],["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":["$L12","$L13"]}],"$L14"]}]]}],"$L15",null,null,"$L16","$L17","$L18"]}]]}]
15
15
  12:["$","div",null,{"className":"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Focus"}]