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