原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"ai-coding",
"claude-code",
"cli",
"codex",
"cost-tracking",
"developer-tools",
"observability",
"terminal-ui",
"token-usage",
"cursor-ide",
"menubar",
"web-dashboard"
],
"is_fork": false,
"size_kb": 18611,
"has_wiki": true,
"homepage": "https://codeburn.app/",
"languages": {
"CSS": 107170,
"HTML": 56153,
"Shell": 14216,
"Swift": 624654,
"JavaScript": 65456,
"TypeScript": 4621387
},
"pushed_at": "2026-07-21T22:23:26Z",
"created_at": "2026-04-13T22:11:53Z",
"owner_type": "Organization",
"updated_at": "2026-07-23T04:15:38Z",
"description": "Free, local tool to track AI coding token usage and cost across 31 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript",
"Swift"
]
},
"owner": {
"blog": "https://agentseal.org/",
"name": "Agentseal",
"type": "Organization",
"login": "getagentseal",
"company": null,
"location": "Germany",
"followers": 77,
"avatar_url": "https://avatars.githubusercontent.com/u/277308000?v=4",
"created_at": "2026-04-18T17:17:21Z",
"is_verified": null,
"public_repos": 9,
"account_age_days": 95
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "mac-v0.9.19",
"kind": "other",
"published_at": "2026-07-20T17:22:34Z"
},
{
"tag": "desktop-v0.9.19",
"kind": "other",
"published_at": "2026-07-20T21:03:03Z"
},
{
"tag": "v0.9.19",
"kind": "patch",
"published_at": "2026-07-20T16:43:57Z"
},
{
"tag": "desktop-v0.9.17",
"kind": "other",
"published_at": "2026-07-17T21:02:53Z"
},
{
"tag": "desktop-v0.9.16",
"kind": "other",
"published_at": "2026-07-17T02:31:18Z"
},
{
"tag": "mac-v0.9.16",
"kind": "other",
"published_at": "2026-07-17T02:24:30Z"
},
{
"tag": "v0.9.16",
"kind": "patch",
"published_at": "2026-07-17T02:24:17Z"
},
{
"tag": "desktop-v0.9.15",
"kind": "other",
"published_at": "2026-07-16T22:52:05Z"
},
{
"tag": "mac-v0.9.15",
"kind": "other",
"published_at": "2026-07-02T04:32:26Z"
},
{
"tag": "v0.9.15",
"kind": "patch",
"published_at": "2026-07-02T04:32:09Z"
},
{
"tag": "mac-v0.9.14",
"kind": "other",
"published_at": "2026-06-22T01:53:21Z"
},
{
"tag": "v0.9.14",
"kind": "patch",
"published_at": "2026-06-22T01:56:00Z"
},
{
"tag": "mac-v0.9.13",
"kind": "other",
"published_at": "2026-06-14T08:36:23Z"
},
{
"tag": "mac-v0.9.12",
"kind": "other",
"published_at": "2026-06-09T23:04:28Z"
},
{
"tag": "v0.9.12",
"kind": "patch",
"published_at": "2026-06-09T23:02:46Z"
},
{
"tag": "mac-v0.9.11",
"kind": "other",
"published_at": "2026-05-27T13:13:11Z"
},
{
"tag": "v0.9.11",
"kind": "patch",
"published_at": "2026-05-27T13:12:54Z"
},
{
"tag": "mac-v0.9.10",
"kind": "other",
"published_at": "2026-05-20T11:25:02Z"
},
{
"tag": "v0.9.10",
"kind": "patch",
"published_at": "2026-05-20T11:24:48Z"
},
{
"tag": "v0.9.9",
"kind": "patch",
"published_at": "2026-05-17T09:48:23Z"
},
{
"tag": "mac-v0.9.9",
"kind": "other",
"published_at": "2026-05-17T09:44:16Z"
},
{
"tag": "mac-v0.9.8",
"kind": "other",
"published_at": "2026-05-11T00:16:59Z"
},
{
"tag": "v0.9.8",
"kind": "patch",
"published_at": "2026-05-11T00:16:39Z"
},
{
"tag": "mac-v0.9.7",
"kind": "other",
"published_at": "2026-05-07T06:17:33Z"
},
{
"tag": "v0.9.7",
"kind": "patch",
"published_at": "2026-05-07T06:16:47Z"
},
{
"tag": "mac-v0.9.6",
"kind": "other",
"published_at": "2026-05-03T19:17:51Z"
},
{
"tag": "v0.9.6",
"kind": "patch",
"published_at": "2026-05-03T19:17:24Z"
},
{
"tag": "mac-v0.9.5",
"kind": "other",
"published_at": "2026-05-02T17:18:03Z"
},
{
"tag": "v0.9.5",
"kind": "patch",
"published_at": "2026-05-01T15:17:07Z"
},
{
"tag": "mac-v0.9.4",
"kind": "other",
"published_at": "2026-04-30T16:25:46Z"
},
{
"tag": "mac-v0.9.3",
"kind": "other",
"published_at": "2026-04-28T03:22:36Z"
},
{
"tag": "mac-v0.9.0",
"kind": "other",
"published_at": "2026-04-25T00:01:08Z"
},
{
"tag": "mac-v0.8.9",
"kind": "other",
"published_at": "2026-04-24T11:50:48Z"
},
{
"tag": "mac-v0.8.8",
"kind": "other",
"published_at": "2026-04-22T20:01:32Z"
},
{
"tag": "mac-v0.8.7",
"kind": "other",
"published_at": "2026-04-21T20:46:47Z"
},
{
"tag": "mac-v0.8.6",
"kind": "other",
"published_at": "2026-04-21T14:45:38Z"
},
{
"tag": "mac-v0.8.5",
"kind": "other",
"published_at": "2026-04-21T12:29:40Z"
},
{
"tag": "mac-v0.8.4",
"kind": "other",
"published_at": "2026-04-21T01:36:38Z"
},
{
"tag": "mac-v0.8.2",
"kind": "other",
"published_at": "2026-04-19T23:34:55Z"
},
{
"tag": "mac-v0.8.1",
"kind": "other",
"published_at": "2026-04-19T20:01:12Z"
},
{
"tag": "mac-v0.8.0",
"kind": "other",
"published_at": "2026-04-19T16:57:32Z"
},
{
"tag": "v0.7.4",
"kind": "patch",
"published_at": "2026-04-19T10:40:32Z"
},
{
"tag": "mac-v0.7.5",
"kind": "other",
"published_at": "2026-04-18T20:42:39Z"
},
{
"tag": "mac-v0.7.4",
"kind": "other",
"published_at": "2026-04-18T20:14:11Z"
},
{
"tag": "mac-v0.7.3",
"kind": "other",
"published_at": "2026-04-18T14:24:32Z"
},
{
"tag": "mac-v0.7.2",
"kind": "other",
"published_at": "2026-04-18T00:19:47Z"
},
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-04-17T12:10:55Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-04-16T23:34:10Z"
}
],
"recent_commits": [
{
"oid": "6e3c57a9ff95a624f1d9affa7384d32a67f359b7",
"body": null,
"is_bot": false,
"headline": "feat(cli): add interactive sessions browser (#793)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-21T11:03:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2eb47181228e19d1e861c35d241179e4d322af44",
"body": null,
"is_bot": false,
"headline": "sessions: correlate cross-provider work with pull requests (#792)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-21T09:50:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e1caae33ac754b50566cae1b55f1c0e76d297bb",
"body": "* sessions: fold subagent runs into PR attribution\n\nSidechain (subagent) session cost never reached the by-PR view, so a\nsession orchestrated on one model with subagent lanes on another showed\nonly the parent model on every PR row. Fold each sidechain's cost, calls,\nmodels, and categories into the p\n[…]\nverified. Fresh real-data drives (lifetime, single-day,\nand a NON-CONTIGUOUS day selection) re-prove no-double-count and\nreconciliation to the cent.\n\n---------\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "sessions: fold subagent runs into PR attribution (#791)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-21T03:47:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "45e93129f21c2e60bf3bd6cea4b71fc5923aa733",
"body": "* sessions: attribute PR spend per turn instead of per session\n\nThe by-PR surfaces attributed a session's full cost to every PR it\nreferenced, so one orchestration session that touched many PRs rendered\nidentical full-session rows. Capture per-turn PR references during\ntranscript parsing and attribu\n[…]\n.\nThe expansion reset keyed only on the row URL set, so a period switch that\nreturned the same PRs kept a stale expansion open over changed numbers.\n\n---------\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "sessions: attribute PR spend per turn instead of per session (#790)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-21T03:44:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a9d4471d17c1830830ca945801898553f4c1121d",
"body": "…ab (#788)\n\nPart 1 (src): expose two add-only, optional aggregations on the menubar\npayload's `current`, computed on the unscoped all-provider path from the\nsurviving-session parse (carried history cannot contribute, as expected).\n\n- current.pullRequests: aggregateByPr rows (top 20 by cost) plus the\n[…]\nsion counts) and the Pull requests component tests\n(table, external link, footnote, both empty states). Nav-reflow assertions in\nSidebar and App tests updated.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "payload: spend by pull request and by branch; desktop Pull requests t…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T21:36:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "475ff502e05f4289e933efa340b7e7021166cdbb",
"body": "* Resolve Fireworks-hosted models to friendly display names\n\nFireworks fleet models arrive as `accounts/fireworks/models/<slug>` and\nwere leaking the raw path/slug in reports and the dashboard (e.g.\n`fireworks/mode…`, `glm-5p2`). getShortModelName's path fallback now takes\nthe last path segment and \n[…]\n into a pure, tested aggregateModelTotals() keyed by the\nresolved display name so the rows merge into one. This also aligns the panel\nwith modelEfficiency, which is already keyed by getShortModelName.",
"is_bot": false,
"headline": "models: resolve Fireworks-hosted models to friendly display names (#787)",
"author_name": "Rick Culpepper",
"author_login": "therickfactr",
"committed_at": "2026-07-20T21:22:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "15a381b7d2d6dc04109bfaa8dd43f735bfcf1ebb",
"body": "…789)\n\nThe #782 titles threading added title to the sessions JSON row shape but\nmissed this emitter test's key list; caught by the first full-suite run\nsince the merge.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "test: cli-emitters expects the title field sessions rows now carry (#…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T21:18:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8097052f679877b05c86d60712f3a1d7eafd3048",
"body": "Compact one-row strip: correction rate with count, median time to first\nedit, and the top reworked file, plus one coaching note derived locally\nwith the same thresholds and copy as the CLI's workflow-insights\nbuildCoachingNotes. Decodes two new optional payload blocks\n(current.workflow and current.t\n[…]\nyload, so it follows the selected agent tab automatically.\n\nAdds unit tests for the duration formatter, note selection, model\nderivation, and payload decoding.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "menubar: add Workflow strip after the Models section (#785)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T20:55:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d2bcbac7f5018b5a41887e0d398ea8b3b017eb6",
"body": "…w (#784)\n\nTwo Phase-1 desktop additions over the renderer's existing card grammar.\n\nOverview workflow card: a panel below the daily chart with two stat tiles\n(correction rate with count, median time to first edit) plus a top-rework\nline and one coaching caption. The caption is derived locally with \n[…]\n untitled rows keep the project as the\nheadline (unchanged). Title is also searchable and added as an optional\nSessionRow field so older CLIs render unchanged.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "app: Workflow card on Overview and session titles in the Sessions vie…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T20:55:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9676f53d0cc785469426580652ac04ec46752249",
"body": "…#782)\n\nSame threading as prLinks: the cache-level title (last ai-title entry)\nrides onto SessionSummary in both the Claude and generic provider\npipelines, and the sessions table gains a TITLE column (truncated at 38\nchars, empty when a transcript never produced one, as subagent\ntranscripts typically do not). JSON rows carry it verbatim. Groundwork\nfor titles in the context browser, desktop Sessions view, and payload.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "sessions: thread captured titles onto SessionSummary and the report (…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T20:01:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "739d0b76420ceb2575b278a235595be36db86841",
"body": "… (#781)\n\nThe desktop app's Life tab failed with 'invalid period': the renderer\nand CLI both learned lifetime, but the electron IPC allowlist between\nthem did not. The menubar's period row also overflowed once Lifetime\njoined it; labels compact to the desktop strip's forms (7D, 30D, 6M,\nLife). Perio\n[…]\ne label\nchange is safe. Follow-up worth doing: derive the IPC allowlist from\nthe renderer's period module so a new period cannot miss one layer of\nthree again.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "fix: Lifetime period end to end in the desktop app and menubar labels…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T19:56:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8676f0da01255bb4f94e8e3bacaeedad32e22f8b",
"body": "The rich session capture (#758) stores every PR URL a transcript\nreferences, but nothing displayed it. codeburn sessions --by-pr now\ngroups spend by pull request: cost, savings, sessions, calls, and the\ndate span per PR, sorted by cost, with a GitHub-shortened label and\njson output. Attribution is b\n[…]\nrows are never mistaken for a\ngrand total. prLinks now ride from the cached file onto SessionSummary\nin both the Claude pipeline and the generic provider path.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "sessions: spend per pull request via --by-pr (#780)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T19:28:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "00160275cd4d73f9eef359853a52556be7f5fd19",
"body": "The Update badge previously replaced only the menubar (via the CLI's\nmenubar --force installer), and the CLI banner only copied the update\ncommand to the clipboard. One click now runs the whole sequence: update\nthe CLI in place through the package manager it was installed with\n(brew upgrade, or npm \n[…]\npears for CLI-only updates, and the banner's primary action is Update\nnow with the copyable command kept as secondary. Six resolution tests,\nmutation-verified.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "menubar: one-click update for the CLI and the app together (#778)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T17:17:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ae1d1c026b10069d31b36e1b2aad8216541e8813",
"body": "The update Download button opened the GitHub release page; it now\ndownloads the right artifact for the running platform directly: arm64\nor x64 dmg on macOS (preload newly exposes process.arch), the Setup exe\non Windows. Linux keeps the release page since it ships three formats\nand the user picks. Unknown platforms and preloads without arch fall\nback to the page. URL mapping is unit-tested per platform.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "app: Download button direct-downloads the update asset (#777)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T17:02:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "101574a05fbea06773b5b99b9d32f3152a34bbb6",
"body": "Co-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "docs: present 0.9.19 directly in the changelog (#776)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T16:45:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d96149b60f5bad1aac5f46ab09a14c0ecd40c5c8",
"body": "The 1ms-heartbeat stress test fails under saturated full-suite runs when\nfilesystem starvation makes guard operations report unavailable, which\nthe fence correctly treats as fail-closed. Isolation runs, the process\ntests, and mutation checks all hold. Retries go 2 to 5 and iterations\n300 to 120: a m\n[…]\ny attempt (six percent per\nverify compounds to a per-attempt pass chance under a tenth of a\npercent), while transient starvation now has five chances to clear.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "test: widen the fence stress test's flake shield (#775)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T16:39:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af291ae6216af08c2cf8890e79d370f8297187e2",
"body": "0.9.18 was packaged from the pre-fix commit (364eed4) before the final\nnine commits landed; npm versions are immutable, so the corrected\nrelease ships as 0.9.19 everywhere. The changelog entry carries over\nwith a supersede note.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "release: 0.9.19 (#774)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T16:35:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10ac583fd4b7ea46aa4e7fc824dacadd45f322c8",
"body": "….9.18 (#773)\n\nThe changelog entry predates the final merges; it now covers the\nno-data rendering, the cross-process refresh gate, the straddle guard,\nthe turn-attribution and insights accuracy fixes, the 10-year retention,\nand the small cache/currency fixes. README download badges move from\n0.9.16 to 0.9.18.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "docs: complete 0.9.18 notes for the post-cut train, point README at 0…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T16:29:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f5fe6c5ec8464ffdb70413e198534a3cf402438",
"body": "Under a saturated full-suite run, fd/CPU starvation can make the\ntakeover-guard fs ops report unavailable, which the fence correctly\ntreats as fail-closed; the 1ms-heartbeat stress test misread that as the\nserialization race. Retries rescue environmental noise only: the real\nrace fails roughly 6 percent per verify across 300 verifies, so a\nmutated build cannot pass any attempt.",
"is_bot": false,
"headline": "test: retry-shield the fence-heartbeat stress test against fs starvation",
"author_name": "reviewer",
"author_login": null,
"committed_at": "2026-07-20T16:25:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be748c81aab1821ace0688d788982fe4746e775e",
"body": "…ge id (#772)\n\nThe incremental-append path groups the appended region before the file's\nown cached keys join the dedup set, so a streamed assistant id restated\nacross the append boundary counted twice, and the boundary merge could\nsplice it into the wrong turn (reproduced on real image-heavy session\n[…]\nout 0.3 percent of real files) and bounded to one file per\nrefresh. Regression test uses the cold-reparse oracle; mutation-verified\nagainst the unguarded code.\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "parser: full re-parse when an appended region restates a cached messa…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T16:22:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e27fe36bd5173587c7e8ac57fded4559ea8d8642",
"body": "…ransaction (#743)\n\n* cache: strict cross-process gate for the warm session-cache refresh transaction (#645)\n\n* lock: serialize the fence against the owner's own heartbeat\n\nverifyStillOwner and the heartbeat tick both take the takeover guard;\nwithout in-process serialization the fence could observe \n[…]\n at heartbeatMs 1, mutation-\nverified against the unserialized code.\n\n---------\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "cache: strict cross-process gate for the warm session-cache refresh t…",
"author_name": "Aditya Vikram Singh",
"author_login": "avs-io",
"committed_at": "2026-07-20T16:06:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "17a23ead4059b1575f295b9ab15fa5b9f13026b8",
"body": "…inflation (#762)\n\n* daily-cache: coverage-gated carry on re-derive + single-slice turn attribution\n\nP2: a tz-change re-derive no longer double-counts turns whose day bucket\nmoved across midnight — secondary slices are carried only outside the\nprovider's fresh coverage (floor widened by one day on t\n[…]\ntly one slice\n(majority-calls provider, tie broken by first call), restoring\nslice-sums equal day-counts on fresh builds, with its regression tests.\n\n---------\n\nCo-authored-by: reviewer <review@local>",
"is_bot": false,
"headline": "daily-cache: fix tz-change double-count and multi-provider turn-stat …",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-20T15:57:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d8158afb1be2464e3161ed8b415ad600cd8b4b30",
"body": "The one cache module still hardcoding ~/.cache/codeburn; every other\ncache (session, daily, codex, pricing) honors the relocation override,\nso a user moving the cache dir kept getting this single file in the\ndefault location. Found by the pre-release functional sweep.",
"is_bot": false,
"headline": "currency: honor CODEBURN_CACHE_DIR for the exchange-rate cache (#766)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T15:28:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbd93fee51c4d155139f6113aeb6a130d1105d7d",
"body": "* fix(app,dash): render pre-history days as no data, not a currency zero\n\nDays before the first recorded day in history.daily were painted as a real\n0.00/0 calls in the daily activity heatmap and the daily spend charts. That\nzero is unknown, not measured, so those cells and bars now read \"No data\nre\n[…]\never drop a real first-day bucket, and an\nall-zero series lands in the established empty state.\n\nStackedBars no-data columns expose their state via aria-label, not only\na title on a non-focusable div.",
"is_bot": false,
"headline": "app,dash: render pre-history days as no data, not a currency zero (#765)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T15:03:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b30818138ea2bda3d3b5dee813f3a3a41ee607b4",
"body": "…(#764)\n\nThree review leftovers plus one inconsistency found while fixing them.\n\ncomputePace returns undefined for a non-finite usedFraction instead of\nletting NaN sail through the clamp into every pace field.\n\nDaily-cache retention goes from 730 days to 3650: the cache is the only\ndurable record of\n[…]\nper 730\ndense days).\n\nThe vercel-gateway dashboard-range test pins a relative day instead of\n2026-06-01, which would have started failing once the rolling 6-month\nwindow moved past it around December.",
"is_bot": false,
"headline": "prerelease: quota NaN guard, 10-year daily retention, test date bomb …",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T14:37:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "db8ef9b4666e844641732be31fe38aca6b4f40d3",
"body": "…ce (#763)\n\nFive verified findings from the #756 review, each with a regression test:\n\nCorrections now count only follow-up prompts. The session-opening prompt\ncannot be correcting this assistant, however correction-shaped its task\ntext reads, and the revert pattern no longer matches ordinary 'rever\n[…]\nerage value now reaches the payload as null, never as a\nfabricated 100%.\n\nAlso shares the one-shot minimum-edit-turns threshold between\nworstOneShotCategory and the coaching gate so they cannot drift.",
"is_bot": false,
"headline": "insights: close the post-merge review findings on workflow intelligen…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T14:26:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "364eed44e80aa0ab9ffbcb8713f5e576eb044e22",
"body": "chore: release 0.9.18",
"is_bot": false,
"headline": "Merge pull request #761 from getagentseal/chore/release-0.9.18",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T14:18:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8386df5f3c5d025b99b214d81071d875ad318176",
"body": null,
"is_bot": false,
"headline": "chore: release 0.9.18",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T14:17:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76744124aba6fdd1df6493d4bd4a3a091e438682",
"body": "fix(report): CLI totals read the durable daily cache, matching the menubar exactly",
"is_bot": false,
"headline": "Merge pull request #760 from getagentseal/fix/cli-durable-totals",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T14:14:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92843bc6470cb04a86d97601c64f109dd5e777af",
"body": "fix(clients): display CLI values verbatim, align period windows, true Lifetime tab",
"is_bot": false,
"headline": "Merge pull request #759 from getagentseal/fix/client-math-parity",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T14:13:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dea61bad4e41d49c6f8c2df2a151715c1bf76e15",
"body": "…nubar exactly",
"is_bot": false,
"headline": "fix(report): CLI totals read the durable daily cache, matching the me…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T13:33:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6eb8797efab2fe1499e4a4b0cdbf9e04415f3fcc",
"body": "…ows across app/dash/menubar",
"is_bot": false,
"headline": "fix(clients): display CLI-computed values verbatim, align period wind…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T13:26:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba56ad72f58cba0368f42764c10301f4f35f7b44",
"body": "feat(capture): parse-time capture of branch, LOC deltas, interruptions, titles, PR links",
"is_bot": false,
"headline": "Merge pull request #758 from getagentseal/feat/rich-session-capture",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T13:03:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ced2ed47f8afc590533a3d6aca6df8ca9b81745",
"body": "…s, titles, PR links",
"is_bot": false,
"headline": "feat(capture): parse-time capture of branch, LOC deltas, interruption…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T12:56:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f32c00d2b17bee2e0017ece8997cc2ef57c7d8f6",
"body": "…t, file churn, coverage) + dash wire-up (#756)\n\n* feat(insights): workflow intelligence (corrections, time-to-first-edit, file churn, coverage) + dash wire-up\n\n* menubar: propagate workflow-intelligence fields onto the cache-backed headline\n\nThe carry-forward headline (#755) serves totals from the \n[…]\nated, so they silently defaulted on the all-provider\npath (pricingCoverage rendered a dishonest 1.0). Propagate them like the\nother scan-only fields and pin it with a carried-headline regression\ntest.",
"is_bot": false,
"headline": "feat(insights): workflow intelligence (corrections, time-to-first-edi…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T12:47:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e99ee4bf37ffbe1b0a3e8eada81bdf8dafe59ce1",
"body": "Claude Code deletes session transcripts after cleanupPeriodDays (default\n30) at startup. Daily totals survive in the daily cache, but per-session\ndetail older than the cutoff is unrecoverable, and most users learn this\nonly after losing months of history. Doctor now reports the effective\nretention and, below one year, warns with the exact settings.json edit\nthat preserves transcripts.",
"is_bot": false,
"headline": "doctor: surface Claude Code transcript retention (#757)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T12:25:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "380be66b4fb7a19a57381fa3accb502966e74180",
"body": "Re-apply the CLI/dashboard Lifetime split from #391/#416 on current main.\n\n- add lifetime as a first-class period (all stays last 6 months)\n- wire period through cli-date, dashboard key 6, and CLI commands\n- refresh cli-date and cli-json-daily regression coverage\n\nPart of #389. Supersedes #416.",
"is_bot": false,
"headline": "feat(cli): add lifetime period for CLI and dashboard (#753)",
"author_name": "Monish Khandelwal",
"author_login": "0monish",
"committed_at": "2026-07-20T12:24:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44df54774845458019a23f45e1acfc6c90c8292d",
"body": "…ones (#689)\n\n* test(electron): isolate dev-resolution fixtures via CODEBURN_DEV_REPO_ROOT\n\nRework of the #681 fix per review: instead of stubbing the real repo\ndist/cli.js with snapshot-restore, the Vite-dev resolution branch gains a\nCODEBURN_DEV_REPO_ROOT override (matching the CODEBURN_PATH_DIRS \n[…]\n whenever a build had\nrun, so the toBeNull() assertion depended on the absence of a gitignored\nartifact. The override-set tests already prove the new branch and the\nnon-Vite test covers the null path.",
"is_bot": false,
"headline": "test(electron): make dev-resolution tests self-sufficient on fresh cl…",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-20T12:23:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bcef34f08174a4bc75db318ecf2d2f38e6b4b1f8",
"body": "…tion, run-out ETA (#726) (#728)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
"is_bot": false,
"headline": "menubar: linear pace on Codex quota windows — deficit/reserve, projec…",
"author_name": "Aditya Vikram Singh",
"author_login": "avs-io",
"committed_at": "2026-07-20T12:21:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8435073eef59e6f6d7d126483377cd921e17153",
"body": "…d linear pace (#725 Part 1) (#740)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
"is_bot": false,
"headline": "quota: provider-agnostic window model with provenance, merge rule, an…",
"author_name": "Aditya Vikram Singh",
"author_login": "avs-io",
"committed_at": "2026-07-20T12:21:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92b2b5ef392daba9d03e11dfbdaddd86eabe0c58",
"body": "Reuse one concrete six-month scan for interactive history and selected-period totals. This restores network-backed providers, removes concurrent refresh scans, and keeps non-interactive reports scoped to their requested period.",
"is_bot": false,
"headline": "fix(dashboard): Bound Daily Activity scans (#727)",
"author_name": "ihearttokyo",
"author_login": "ihearttokyo",
"committed_at": "2026-07-20T12:21:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f2739e130262ed1bba0c8f6d34c6ae127a2d0ab",
"body": "…v14) (#755)\n\n* daily-cache: never lose history the sources can no longer re-derive (v14)\n\nSession files are ephemeral (Claude Code deletes transcripts after ~30\ndays), so a cached day whose sources are gone exists nowhere else. Every\ninvalidation path (schema bump, savings-config change, timezone c\n[…]\nuites 71/71 green, tsc clean. Valid-input behavior unchanged except the\nprototype-key reclassification above.\n\n---------\n\nCo-authored-by: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>",
"is_bot": false,
"headline": "daily-cache: never lose history the sources can no longer re-derive (…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T12:21:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2312fd2eb0f4231ed3735595c28dee11f5a1e883",
"body": "fix(yield): case-insensitive canonical repo grouping via realpathSync.native",
"is_bot": false,
"headline": "Merge pull request #751 from ozymandiashh/pr/714-delta",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-20T00:25:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49b377616bfd8507157f1020360f36293f13ac04",
"body": "feat(kimicode): Kimi Code CLI provider, parse ~/.kimi-code wire sessions",
"is_bot": false,
"headline": "Merge pull request #750 from ozymandiashh/pr/747-kimicode",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-19T23:27:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3472885629c41725b40c19c0780ecce148b067bf",
"body": "perf(parser): single-pass field extraction in the large-line JSONL scanner",
"is_bot": false,
"headline": "Merge pull request #752 from getagentseal/perf/single-pass-scanner",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-19T08:24:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56ea38917f763cd12a0acb0a42a56f34bd36138c",
"body": "…anner",
"is_bot": false,
"headline": "perf(parser): single-pass field extraction in the large-line JSONL sc…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-19T00:23:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c9871b2f2244a8b5d97a997af1688e4153df04e",
"body": "….native\n\nFollow-up to #719, closing the two deltas flagged in the #714 discussion:\n\n- fs.realpathSync preserves the caller's path casing on case-insensitive\n filesystems (macOS APFS, Windows), so the same repo reached through\n differently cased paths produced distinct canonical keys and split int\n[…]\n accepted residual: a main repo moved on disk after\n 'git worktree add' leaves git's linked-worktree metadata stale, so its\n worktrees may not unify; that is git-state staleness, not a grouping bug.",
"is_bot": false,
"headline": "fix(yield): case-insensitive canonical repo grouping via realpathSync…",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-19T00:12:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "023259584731c6b8da787981ef9a83742d07501b",
"body": "…double count",
"is_bot": false,
"headline": "docs(kimicode): subagent accounting verified at kimi-code source, no …",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-19T00:11:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b95aef7e56b6c4efb8c8b565038b02f0ff6fabc",
"body": "…ons (#747)\n\nAdds a provider for Kimi Code CLI (MoonshotAI/kimi-code, the successor of\nkimi-cli), reading ~/.kimi-code/sessions/wd_*/session_*/: state.json for\nsession metadata and per-agent agents/<id>/wire.jsonl event streams.\n\n- Usage from usage.record events: inputOther->input, output->output,\n \n[…]\ns\n so a failed turn cannot bleed its tools into the next row.\n- KIMI_CODE_HOME override, eager registration, PROVIDER_ENV_VARS and\n PROVIDER_PARSE_VERSIONS entries, probeRoots for doctor, docs page.",
"is_bot": false,
"headline": "feat(kimicode): Kimi Code CLI provider, parse ~/.kimi-code wire sessi…",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-18T23:52:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "916119da2197373edd2fdee86ca8fd69bbaee5cc",
"body": "perf(parser): incremental parse of append-grown session files",
"is_bot": false,
"headline": "Merge pull request #749 from getagentseal/perf/incremental-append-parse",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T23:36:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8892553d3a464cdb64badf035d7990b389ce2201",
"body": "perf(app): spawn concurrency cap, background prefetch, Today default",
"is_bot": false,
"headline": "Merge pull request #748 from getagentseal/fix/app-spawn-storm",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T23:36:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f26bf69f886baeb29bdb36d1c4e808852c90d6cf",
"body": "…efault to today",
"is_bot": false,
"headline": "perf(app): cap CLI spawn concurrency, background-priority prefetch, d…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T23:28:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8326aee4a6225c8ac37753f81a1e2a8841359e1a",
"body": "…tead of byte 0",
"is_bot": false,
"headline": "perf(parser): parse appended session files from the cached offset ins…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T23:26:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d00b33b13d3a3c5ea05b84044bb3da3550ca4fdc",
"body": "fix(telemetry): cap cli_error per kind per day, flush app_close on quit",
"is_bot": false,
"headline": "Merge pull request #746 from ozymandiashh/pr/741-robustness",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T21:32:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a8a1d0fa4bb4f10649a4600306b7a3852325491",
"body": "fix(classifier): attribute skills to skillBreakdown regardless of turn category",
"is_bot": false,
"headline": "Merge pull request #745 from ozymandiashh/pr/741-skills",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T21:32:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db39157ea6cf51d703183e29d1a3befc4d02d5fd",
"body": "Two robustness fixes from the #741 telemetry audit:\n\n- cli_error had no rate limit: one install emitted 804 timeout events in a\n single day (56% of all events ever received). track() now caps cli_error\n at 20 per kind per calendar day. The day and per-kind counts persist in\n the telemetry state f\n[…]\na synchronous failure can neither\n skip the flush nor wedge quitting, and a full queue evicts its oldest\n event rather than dropping app_close. Disabled or not-onboarded telemetry\n quits instantly.",
"is_bot": false,
"headline": "fix(telemetry): cap cli_error per kind per day, flush app_close on quit",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-18T20:06:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "906cb2d550165a229c556d2617caa8a76ce89eec",
"body": "feat(quickdesk): Amazon Quick Desktop provider (~/.quickwork)",
"is_bot": false,
"headline": "Merge pull request #735 from ozymandiashh/feat/quickdesk-provider",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T19:57:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56e836fa9e9c28417fa7c7857e3f9533b7e52844",
"body": "…n category\n\nSkill attribution was gated on the turn classifying as 'general', but\nclassifyByToolPattern checks hasSkill last, so any turn invoking the Skill\ntool alongside Read/Bash/Edit/MCP got a real category and its skill was\nsilently dropped. Skill turns virtually always carry other tools, whic\n[…]\ntegory is now set for any turn with Skill tool_use; category assignment\nis untouched. The claude parse version is bumped so cached session summaries\n(which lack skill attribution) re-parse on upgrade.",
"is_bot": false,
"headline": "fix(classifier): attribute skills to skillBreakdown regardless of tur…",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-18T19:54:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1850276bd1e52c19e573951a580014f0be43aced",
"body": "Per-provider usage capture, placeholder guard, path-id display fallback",
"is_bot": false,
"headline": "Merge pull request #742 from getagentseal/fix/usage-snapshot-providers",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T11:41:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b71ec34a21d98ee6bc2c6898087323ec8852a43a",
"body": "… display fallback",
"is_bot": false,
"headline": "fix(usage): per-provider snapshot capture, placeholder guard, path-id…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-18T10:37:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d5f745b5b1ea56494b97eda8492717dfbe6e42b",
"body": "docs: desktop release flow + Linux build targets",
"is_bot": false,
"headline": "Merge pull request #739 from getagentseal/docs/desktop-release-flow",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T22:09:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8db765fd107b15dede99165da463d864383d97d",
"body": "RELEASING.md: the desktop app is released manually under desktop-v<version>\ntags (build on macOS, gh release upload --clobber); no CI yet.\n\nDISTRIBUTION.md: document building deb/rpm and both arches from a macOS host,\nand that the rpm target needs 'brew install rpm' (rpmbuild) — it emits\ncodeburn-desktop-<version>.x86_64.rpm, the name the website links.",
"is_bot": false,
"headline": "docs: desktop release flow + widened Linux build targets",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T22:00:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dafe19e8152ad5c7e9a173b1fd79fea5ae14d98a",
"body": "fix: clean build stamp + splash without hash + About update check",
"is_bot": false,
"headline": "Merge pull request #738 from getagentseal/fix/stamp-and-update-button",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T21:30:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a76626d21b8260cdffc0f22f85ee3a90fca0c23",
"body": "…dates\n\n- build stamp ignores the pricing-snapshot files the build regenerates,\n so a release checkout no longer shows a false -dirty\n- splash shows just the flame, CodeBurn, and the version (dropped the\n commit-hash line); the clean build id stays in About only\n- About 'Check for updates' uses the in-app checker and reports inline\n ('You're on the latest' / 'Update available: X · Download') instead\n of blindly opening the releases page\n\n392/392.",
"is_bot": false,
"headline": "fix(app): clean build stamp, splash without hash, About checks for up…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T21:30:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fdace7292dc6df91b34a88dace092edc9c31f6c",
"body": "brand: restore binary 0101 flame across all surfaces",
"is_bot": false,
"headline": "Merge pull request #737 from getagentseal/brand/binary-restore",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T21:16:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69ab1fc96c459a604d8ca64fefa952368438ca07",
"body": "feat: telemetry captures model x purpose, MCP servers, skills",
"is_bot": false,
"headline": "Merge pull request #736 from getagentseal/feat/telemetry-usage-detail",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T21:16:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6c475b6571b6f108221908af066f267a191b06b",
"body": "… skills\n\nThe once-daily usage_snapshot now includes each top model's primary\ntask category (which model for what purpose, one cheap by-model call\nper day), plus MCP servers and skills used (names + coarse usage\nbuckets). Names + buckets only, no prompts/paths/dollars; graceful\ndegradation if the by-model fetch fails. /telemetry page updated.",
"is_bot": false,
"headline": "feat(app): usage telemetry captures model x purpose, MCP servers, and…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T21:15:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b8d8eb7b1c5521114b0c5fa6072d67d6172cd92",
"body": "Per owner decision: the binary 'burning code' flame is the mark\neverywhere, matching the app's identity as a code-cost tool. Desktop\napp icon + FlameMark (splash/sidebar/About/dock), menubar dock icon,\nbrand logo, and local dashboard all use the binary flame.",
"is_bot": false,
"headline": "brand: restore binary 0101 flame across all surfaces",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T21:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdb1475251a19c79ae93cb1777b2f7274af11fbb",
"body": "…ssions and metrics (#707)\n\nAdds an eager provider for Amazon Quick Desktop (aws.amazon.com/quick/desktop),\nwhich stores local data under ~/.quickwork. Usage source of truth is the\nper-day EMF metrics JSONL (Model, InputTokens, OutputTokens, CostUSD,\nsession_id); real CostUSD passes through the cach\n[…]\nUICKWORK_HOME; schema-tolerant (sqlite_master and PRAGMA introspection,\nper-line JSONL error isolation). The on-disk schema is reverse-engineered and\ndocumented as such in docs/providers/quickdesk.md.",
"is_bot": false,
"headline": "feat(quickdesk): Amazon Quick Desktop provider, parse ~/.quickwork se…",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-17T21:02:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2a01273b7a8801705293d7b2f5871cce2a9c950f",
"body": "chore(app): desktop 0.9.17",
"is_bot": false,
"headline": "Merge pull request #734 from getagentseal/chore/desktop-0.9.17",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:56:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7946b4f369e79090fc30f41d1acd9022f5ec7742",
"body": "Patch release: Windows bundled-CLI fix (was not-found on 100% of\nWindows), enriched cli_error telemetry, and the unified solid-flame\nbrand. CLI/menubar stay 0.9.16 (no changes needing an npm/menubar\nrepublish; the desktop bundles current main's CLI).",
"is_bot": false,
"headline": "chore(app): desktop 0.9.17",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:55:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75de4ef07cedabc0e5d6ef2fb0612262193280ce",
"body": "…elemetry\n\nfix: resolve bundled CLI on Windows (100% not-found) + enrich cli_error telemetry",
"is_bot": false,
"headline": "Merge pull request #733 from getagentseal/fix/windows-cli-and-error-t…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:52:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "707d621d7ab147940c000901fafa7e9a24e4d322",
"body": "path.startsWith('/') POSIX guard rejected the Windows bundled-CLI path\n(C:\\...\\launch.js), so 100% of Windows installs got not-found\n(confirmed in telemetry: 84 events, all win32/x64). Use path.isAbsolute\neverywhere. cli_error now carries {cmd, kind, detail?} for\nself-diagnosing errors, never paths/args/stderr.",
"is_bot": false,
"headline": "fix(app): resolve bundled CLI on Windows + enrich cli_error telemetry",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:51:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d2ff8a72f69d53989c6e73dc3e17a0778e1987b4",
"body": "brand: original solid flame across all surfaces",
"is_bot": false,
"headline": "Merge pull request #732 from getagentseal/brand/solid-flame-all",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:34:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "862206ea81f8e87df5ff463caabbec207923a15b",
"body": "Retires the binary-digit flame (which muddied below ~256px) in favor\nof the original solid flame everywhere: desktop app icon + FlameMark\n(splash, sidebar, About, dock), menubar dock icon, brand logo. One\nconsistent mark that stays crisp at every size, matching the website\nfavicon and local dashboard.",
"is_bot": false,
"headline": "brand: original solid flame across all surfaces",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:33:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9df2b81deda838f1ad23145a143d2bbcf074461d",
"body": "brand: solid flame for the local dashboard mark",
"is_bot": false,
"headline": "Merge pull request #731 from getagentseal/brand/dash-solid-flame",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:29:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8af30ea3235b45eea904962f6ade506760090e29",
"body": "The dashboard header logo and favicon render at 24px where the binary\nflame muddies; use the solid flame like the site favicon. Menubar dock\nicon keeps the binary squircle (large-icon context).",
"is_bot": false,
"headline": "brand: local dashboard uses the solid flame mark (crisp at 24px)",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:28:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15cd9af1b8aae367239a7fbb1ad0faeb5a180ddf",
"body": "brand: binary-flame logo for local dashboard + menubar icon",
"is_bot": false,
"headline": "Merge pull request #730 from getagentseal/brand/binary-flame-logos",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:11:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03f597a334aeac3480b6f98146f8921ae49d15e2",
"body": "Local web dashboard favicon + header (dash/public/codeburn-logo.png)\nand the menubar dock/app-icon source (assets/menubar-logo.png,\nassets/logo.png) now use the binary-flame mark, matching the desktop\napp and website. The menu-bar status item stays monochrome-template by\nApple convention; the new dock icon lands on the next menubar release.",
"is_bot": false,
"headline": "brand: binary-flame logo for local dashboard and menubar app icon",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T20:10:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb513d3f68e5d24517685610d2db1f74aedef4d5",
"body": "…#729)\n\nThe AppImage-only Linux build hit users with a no-application-installed\nerror on double-click, because AppImages do not self-register and need\nchmod plus libfuse2 on newer distros. Add deb and rpm electron-builder\ntargets so Linux users get a native install that lands in the app menu\nwith no\n[…]\n.\n\nREADME hero grid now lists Debian/.deb, Fedora/.rpm, and AppImage\nalongside the macOS and Windows buttons, and the desktop release notes\nexplain the deb/rpm path plus the AppImage FUSE requirement.",
"is_bot": false,
"headline": "desktop: ship .deb and .rpm for Linux, surface all download targets (…",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T19:53:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "688467e86fab84987f266f468da9ad67f5b16b88",
"body": "… the Plan tab (#723) (#724)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
"is_bot": false,
"headline": "menubar: surface Codex limit-reset credits (count and next expiry) in…",
"author_name": "Aditya Vikram Singh",
"author_login": "avs-io",
"committed_at": "2026-07-17T12:58:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca46845e2ba1bc1366773ea95c5cfbcfc5f812ee",
"body": "Desktop: update-available notifications",
"is_bot": false,
"headline": "Merge pull request #722 from getagentseal/feat/update-check",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T11:58:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fc9e303b919c02c0694e437211bd9b1f7e078e3",
"body": "Checks the GitHub releases for newer desktop-v tags once per launch\nand every 24h (15s timeout, no identifying headers, offline = silent\nretry). A dismissible banner and a Settings About row surface the\nnewer version and link the release page; dismissal persists per\nversion so each release nags at most once. No auto-install: unsigned\nbuilds cannot, by platform constraint; the checker only notifies.\n\nApp 364/364 (+24), typechecks + build green.",
"is_bot": false,
"headline": "feat(app): update-available notifications",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T11:58:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cbc96a5decd34dbcce285bddbee964d36dd4c2e",
"body": "Bump the desktop app version and point the README download badges at the\ndesktop-v0.9.16 release assets.",
"is_bot": false,
"headline": "release: desktop 0.9.16 (#721)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T02:34:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c58a705b133f600810219381d2e8947e8d4bf968",
"body": "Bump the version and refresh the bundled LiteLLM pricing snapshots.\n\nSince 0.9.15, roughly sixty merged changes: the /advisor escalation\nbilling and unified large-line scanners for Claude, Copilot CLI\nsession.shutdown billing and skill extraction, the CodeWhale provider,\nkiro v2 credit pricing, Open\n[…]\nREADME.\n\nEvery merged PR was re-verified against this exact tree before the bump:\nfull JS suite (3527 tests), Swift suite (97), release build smoked, and\neight area audits with live functional probes.",
"is_bot": false,
"headline": "release: 0.9.16 (#720)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T02:15:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b6bf233f4601dbeae046c5a468a9ac4ab8e2afa4",
"body": "…614) (#631)\n\n* feat(optimize): mcp-deferral-gaps finding family\n\nAdd three read-only detectors for MCP tool-def deferral coverage gaps:\n\n- mcp-deferral-off: sessions carrying MCP tool-def overhead with zero\n ToolSearch invocations and no deferred_tools_delta inventory across\n the window. Cause at\n[…]\nhe detector's parseVersion/\nversionPredates are exported and shared instead of adding a parallel\ncomparator.\n\nRefs getagentseal/codeburn#614\n\n---------\n\nCo-authored-by: AgentSeal <hello@agentseal.org>",
"is_bot": false,
"headline": "feat(act): defer-* plan kinds for native deferral config (part 2 of #…",
"author_name": "AVSR Pavan Kumar",
"author_login": "AVSRPA1KR",
"committed_at": "2026-07-17T02:01:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "261d113b77f3872b7dbc42cdba0932a7306b99cf",
"body": "yield: group commit attribution by canonical repo root (fixes #713)",
"is_bot": false,
"headline": "Merge pull request #719 from getagentseal/fix/yield-repo-grouping",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T01:59:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b95cb95ce484e0be71d7d90879f7db3a90fd143e",
"body": "Sessions launched from monorepo subdirectories or separate worktrees\nof one repository formed independent attribution groups, each awarding\nthe same commit (double-counted productive sessions; the duplicate\nowner was not even flagged ambiguous). Groups now key on the realpath\nof git-common-dir, so a\n[…]\nhile distinct repos stay separate; ambiguity semantics\nunchanged, now correctly spanning the whole repo. rev-parse results\ncached per directory.\n\nFixes #713. Regression tests fail on the unfixed code.",
"is_bot": false,
"headline": "fix(yield): group commit attribution by canonical repo, not launch path",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T01:58:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3625b5906594dafebb6a27de3093257b5e2e0053",
"body": "docs: add Homebrew tap bump to the release checklist",
"is_bot": false,
"headline": "Merge pull request #718 from getagentseal/docs/brew-release-step",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T01:47:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03d559e1efe65988d3fdd266e5d9a2cbc7bee83e",
"body": "The tap sat six versions behind (issue #716) because nothing in the\nrelease process mentioned it. Step 5b documents the tarball sha bump.",
"is_bot": false,
"headline": "docs: Homebrew tap bump joins the CLI release checklist",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T01:46:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ebd8a9efee479c808b598afd49fca0d55ea453c",
"body": "Energy: zero hidden-window work + instant currency changes",
"is_bot": false,
"headline": "Merge pull request #717 from getagentseal/fix/energy",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T01:42:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4bbcaaba788ef13b8ac65bf1d5e644c391fd8ce",
"body": "Energy (field report: ~3x Chrome drain):\n- polls skip entirely while the window is hidden/minimized, with one\n catch-up refresh on return when data is stale; visible-but-unfocused\n keeps polling (second-monitor case)\n- all looping animations pause under html.page-hidden (the sidebar\n flame flicke\n[…]\n can never overwrite the applied currency\n- USD default verified end to end\n\nMeasured: hidden window = 0 new CLI spawns over 5 cadences (was: full\npolling forever). App 340/340, build + package green.",
"is_bot": false,
"headline": "fix(app): zero background work when hidden; currency applies instantly",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T01:41:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b597449bede6fe20abc1cd7cbcfda028b7176887",
"body": "* docs(readme): four-surface hero grid with per-surface install shortcuts\n\nReplace the single TUI screenshot and the scattered optimize, compare and\nold menubar shots with one 2x2 grid under the badges: Desktop, Web,\nTerminal, and macOS Menubar, each with its one-line way in (direct\ndownload badges \n[…]\nas overstuffed for a table cell; Opus 4.6 in the signals\ntable aged into Opus 4.8; the License section ran MIT and the affiliation\nnote into one paragraph; two stray em dashes and a double blank line.",
"is_bot": false,
"headline": "docs(readme): four-surface hero grid with install shortcuts (#715)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-17T00:07:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a55251ce8f3f6859deccab4f85af9bbb349260a6",
"body": "…t follow-ups (#712)\n\nFollow-ups to #710, completing issue #708's second ask plus the two review\nnotes:\n\n- export: new records.csv with one row per call incl. subagentType and\n model; sessions.csv gains both fields APPENDED after all legacy columns\n so by-index consumers are unaffected; JSON field\n[…]\no longer merges into the main bucket (test-pinned across all formats)\n- README: note that the --min-cost 0.01 default can hide sub-cent agent\n buckets; --min-cost 0 shows the complete agent inventory",
"is_bot": false,
"headline": "feat(export): subagentType and model on per-record exports; --by-agen…",
"author_name": "ozymandiashh",
"author_login": "ozymandiashh",
"committed_at": "2026-07-16T23:35:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6e66d34582e2e36a10fb4890c7358a596a0f30dc",
"body": "Orchestrator setups pin different agents to different models (planner on\nOpus, implementers on Sonnet, scouts on Haiku). The dashboard shows\n\"Skills & Agents\" and \"By Model\" as separate panels, so there was no way\nto see which agent drove which model's spend, or catch an agent that\nsilently switched\n[…]\nboth errors politely.\n\nExposing subagentType + per-record model on `codeburn export` (so users\ncan build custom crosses over the export) is a separate follow-up and is\nintentionally out of scope here.",
"is_bot": false,
"headline": "feat(models): agent x model cross-breakdown (--by-agent) (#710)",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-16T22:43:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "db289fab65105a50d18224b89628c2db55ceb7ea",
"body": "Audit batch: prefetch storm, day-bucketing unification, warm-path efficiency",
"is_bot": false,
"headline": "Merge pull request #711 from getagentseal/fix/audit-batch",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-16T22:37:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae18b1fd915d0e2504194af1137936c6c54f51d1",
"body": "…rm-path collapse\n\n- prefetch fires exactly once per provider per session; memo sized to\n detected providers so base keys never evict (was: 12 full-history\n parses every 30s forever from LRU thrash re-triggering the effect)\n- day-aggregator buckets whole turns by user-message timestamp,\n matching\n[…]\nd)\n instead of aborting; onboarding hints Full Disk Access\n- rateLimited quota copy render tests; export -f json emits valid\n empty JSON when no data\n\nRoot 2023 (+4), app 327 (+3), typechecks clean.",
"is_bot": false,
"headline": "fix: audit batch — prefetch one-shot, turn-anchored day bucketing, wa…",
"author_name": "iamtoruk",
"author_login": "iamtoruk",
"committed_at": "2026-07-16T22:37:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "71a8e8e2502d335dee63d5421af8d29d87130560",
"body": "…tility QoS for tick spawns (#703) (#704)\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
"is_bot": false,
"headline": "menubar: skip unchanged background refreshes, 120s AC idle cadence, u…",
"author_name": "Aditya Vikram Singh",
"author_login": "avs-io",
"committed_at": "2026-07-16T22:11:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4689b5afa9947149d22fb5216d4f0e4c722c0957",
"body": "…eshes (#702)\n\n* menubar: honor Retry-After on Claude quota 429s, back off failed refreshes (#701)\n\n* Fix operator precedence in claudeDue fallback\n\n---------\n\nCo-authored-by: Aditya Vikram Singh <247195684+avs-io@users.noreply.github.com>",
"is_bot": false,
"headline": "menubar: honor Retry-After on Claude quota 429s, back off failed refr…",
"author_name": "Aditya Vikram Singh",
"author_login": "avs-io",
"committed_at": "2026-07-16T21:52:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "568476b02dea65c910975e9b6478cfd25897c9ba",
"body": "fix: cold_start telemetry emits once per launch",
"is_bot": false,
"headline": "Merge pull request #706 from getagentseal/fix/telemetry-metrics",
"author_name": "Resham Joshi",
"author_login": "iamtoruk",
"committed_at": "2026-07-16T21:27:08Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 48,
"commits_last_year": 1118,
"latest_release_at": "2026-07-20T17:22:34Z",
"latest_release_tag": "mac-v0.9.19",
"releases_from_tags": false,
"days_since_last_push": 1,
"active_weeks_last_year": 15,
"days_since_latest_release": 2,
"mean_days_between_releases": 2.1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "codeburn",
"exists": true,
"license": "MIT",
"keywords": [
"claude-code",
"cursor",
"codex",
"kimi",
"devin",
"ibm-bob",
"opencode",
"pi",
"codebuff",
"codewhale",
"ai-coding",
"token-usage",
"cost-tracking",
"observability",
"developer-tools"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/codeburn",
"is_deprecated": false,
"latest_version": "0.9.19",
"repository_url": "https://github.com/getagentseal/codeburn",
"versions_count": 50,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 32310,
"first_published_at": "2026-04-13T22:15:36.608000Z",
"latest_published_at": "2026-07-20T16:36:51.984000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 2
}
]
},
"popularity": {
"forks": 691,
"stars": 8858,
"watchers": 27,
"fork_history": {
"days": [
{
"date": "2026-04-13",
"count": 2
},
{
"date": "2026-04-14",
"count": 63
},
{
"date": "2026-04-15",
"count": 57
},
{
"date": "2026-04-16",
"count": 26
},
{
"date": "2026-04-17",
"count": 18
},
{
"date": "2026-04-18",
"count": 14
},
{
"date": "2026-04-19",
"count": 21
},
{
"date": "2026-04-20",
"count": 13
},
{
"date": "2026-04-21",
"count": 22
},
{
"date": "2026-04-22",
"count": 14
},
{
"date": "2026-04-23",
"count": 3
},
{
"date": "2026-04-24",
"count": 8
},
{
"date": "2026-04-25",
"count": 26
},
{
"date": "2026-04-26",
"count": 22
},
{
"date": "2026-04-27",
"count": 6
},
{
"date": "2026-04-28",
"count": 13
},
{
"date": "2026-04-29",
"count": 7
},
{
"date": "2026-04-30",
"count": 9
},
{
"date": "2026-05-01",
"count": 7
},
{
"date": "2026-05-02",
"count": 13
},
{
"date": "2026-05-03",
"count": 15
},
{
"date": "2026-05-04",
"count": 15
},
{
"date": "2026-05-05",
"count": 6
},
{
"date": "2026-05-06",
"count": 15
},
{
"date": "2026-05-07",
"count": 20
},
{
"date": "2026-05-08",
"count": 7
},
{
"date": "2026-05-09",
"count": 5
},
{
"date": "2026-05-10",
"count": 5
},
{
"date": "2026-05-11",
"count": 6
},
{
"date": "2026-05-12",
"count": 5
},
{
"date": "2026-05-13",
"count": 4
},
{
"date": "2026-05-14",
"count": 4
},
{
"date": "2026-05-15",
"count": 8
},
{
"date": "2026-05-16",
"count": 10
},
{
"date": "2026-05-17",
"count": 2
},
{
"date": "2026-05-18",
"count": 5
},
{
"date": "2026-05-19",
"count": 5
},
{
"date": "2026-05-20",
"count": 5
},
{
"date": "2026-05-21",
"count": 3
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-23",
"count": 2
},
{
"date": "2026-05-24",
"count": 5
},
{
"date": "2026-05-25",
"count": 5
},
{
"date": "2026-05-26",
"count": 5
},
{
"date": "2026-05-27",
"count": 4
},
{
"date": "2026-05-28",
"count": 2
},
{
"date": "2026-05-29",
"count": 3
},
{
"date": "2026-05-30",
"count": 3
},
{
"date": "2026-05-31",
"count": 3
},
{
"date": "2026-06-01",
"count": 4
},
{
"date": "2026-06-02",
"count": 4
},
{
"date": "2026-06-03",
"count": 9
},
{
"date": "2026-06-04",
"count": 6
},
{
"date": "2026-06-05",
"count": 6
},
{
"date": "2026-06-06",
"count": 4
},
{
"date": "2026-06-08",
"count": 5
},
{
"date": "2026-06-09",
"count": 2
},
{
"date": "2026-06-10",
"count": 5
},
{
"date": "2026-06-11",
"count": 5
},
{
"date": "2026-06-12",
"count": 5
},
{
"date": "2026-06-13",
"count": 10
},
{
"date": "2026-06-14",
"count": 4
},
{
"date": "2026-06-15",
"count": 2
},
{
"date": "2026-06-16",
"count": 6
},
{
"date": "2026-06-17",
"count": 2
},
{
"date": "2026-06-18",
"count": 1
},
{
"date": "2026-06-19",
"count": 3
},
{
"date": "2026-06-20",
"count": 5
},
{
"date": "2026-06-22",
"count": 2
},
{
"date": "2026-06-23",
"count": 3
},
{
"date": "2026-06-24",
"count": 1
},
{
"date": "2026-06-25",
"count": 2
},
{
"date": "2026-06-26",
"count": 2
},
{
"date": "2026-06-27",
"count": 1
},
{
"date": "2026-06-28",
"count": 1
},
{
"date": "2026-06-30",
"count": 5
},
{
"date": "2026-07-01",
"count": 3
},
{
"date": "2026-07-02",
"count": 3
},
{
"date": "2026-07-03",
"count": 1
},
{
"date": "2026-07-04",
"count": 4
},
{
"date": "2026-07-05",
"count": 1
},
{
"date": "2026-07-06",
"count": 2
},
{
"date": "2026-07-07",
"count": 2
},
{
"date": "2026-07-08",
"count": 3
},
{
"date": "2026-07-09",
"count": 4
},
{
"date": "2026-07-13",
"count": 3
},
{
"date": "2026-07-14",
"count": 4
},
{
"date": "2026-07-15",
"count": 3
},
{
"date": "2026-07-17",
"count": 3
},
{
"date": "2026-07-18",
"count": 1
},
{
"date": "2026-07-19",
"count": 1
},
{
"date": "2026-07-20",
"count": 2
},
{
"date": "2026-07-21",
"count": 3
}
],
"complete": true,
"collected": 690,
"total_forks": 691
},
"star_history": null,
"open_issues_and_prs": 25
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"app/tsconfig.json",
"dash/tsconfig.json",
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 167083,
"source_files_sampled": 510,
"oversized_source_files": 8,
"agent_instruction_files": [
"docs/providers/claude.md",
"docs/providers/gemini.md"
],
"agent_instruction_max_bytes": 3012
},
"dependencies": {
"manifests": [
"app/package.json",
"dash/package.json",
"package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@gsap/react",
"manifest": "app/package.json",
"ecosystem": "npm",
"version_constraint": "^2.1.2"
},
{
"name": "gsap",
"manifest": "app/package.json",
"ecosystem": "npm",
"version_constraint": "^3.15.0"
},
{
"name": "react",
"manifest": "app/package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.7"
},
{
"name": "react-dom",
"manifest": "app/package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.7"
},
{
"name": "@tanstack/react-query",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^5.62.7"
},
{
"name": "clsx",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^2.1.1"
},
{
"name": "lucide-react",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^0.468.0"
},
{
"name": "react",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^19.0.0"
},
{
"name": "react-dom",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^19.0.0"
},
{
"name": "recharts",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^3.3.0"
},
{
"name": "tailwind-merge",
"manifest": "dash/package.json",
"ecosystem": "npm",
"version_constraint": "^3.0.2"
},
{
"name": "@modelcontextprotocol/sdk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.29.0"
},
{
"name": "bonjour-service",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.4.1"
},
{
"name": "chalk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^5.4.1"
},
{
"name": "commander",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^13.1.0"
},
{
"name": "ink",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^7.0.0"
},
{
"name": "react",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.5"
},
{
"name": "selfsigned",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^5.5.0"
},
{
"name": "strip-ansi",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^7.2.0"
},
{
"name": "undici",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^7.27.2"
},
{
"name": "zod",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^3.25.76"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 4,
"merged_prs": 412,
"open_issues": 21,
"closed_ratio": 0.912,
"closed_issues": 218,
"closed_unmerged_prs": 132
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "iamtoruk",
"commits": 887,
"avatar_url": "https://avatars.githubusercontent.com/u/65915470?v=4"
},
{
"type": "User",
"login": "ozymandiashh",
"commits": 62,
"avatar_url": "https://avatars.githubusercontent.com/u/234437643?v=4"
},
{
"type": "User",
"login": "AgentSeal",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/265224789?v=4"
},
{
"type": "User",
"login": "lfl1337",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/80782621?v=4"
},
{
"type": "User",
"login": "spMohanty",
"commits": 14,
"avatar_url": "https://avatars.githubusercontent.com/u/1581312?v=4"
},
{
"type": "User",
"login": "avs-io",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/247195684?v=4"
},
{
"type": "User",
"login": "andklee",
"commits": 9,
"avatar_url": "https://avatars.githubusercontent.com/u/106256645?v=4"
},
{
"type": "User",
"login": "NihalJain",
"commits": 8,
"avatar_url": "https://avatars.githubusercontent.com/u/3429351?v=4"
},
{
"type": "User",
"login": "tmchow",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/517103?v=4"
},
{
"type": "User",
"login": "mallek",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/6627101?v=4"
}
],
"contributors_sampled": 61,
"top_contributor_share": 0.796
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"block-claude-coauthor.yml",
"ci.yml",
"firstlook.yml",
"release-menubar.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 5,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 1,
"reason": "Found 3/29 approved changesets -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 14 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "23 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "6e3c57a9ff95a624f1d9affa7384d32a67f359b7",
"ran_at": "2026-07-23T04:22:04Z",
"aggregate_score": 4.2,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-21T11:04:16Z",
"oldest_open_prs": [
{
"number": 744,
"created_at": "2026-07-18T12:45:21Z",
"last_comment_at": "2026-07-20T16:22:55Z",
"last_comment_author": "iamtoruk"
},
{
"number": 783,
"created_at": "2026-07-20T20:22:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 786,
"created_at": "2026-07-20T20:26:56Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 794,
"created_at": "2026-07-21T22:16:03Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-21T11:03:48Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 106,
"created_at": "2026-04-19T15:04:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 213,
"created_at": "2026-05-04T14:01:23Z",
"last_comment_at": "2026-05-04T22:04:29Z",
"last_comment_author": "iamtoruk"
},
{
"number": 234,
"created_at": "2026-05-05T20:43:18Z",
"last_comment_at": "2026-05-24T01:57:36Z",
"last_comment_author": "m13v"
},
{
"number": 389,
"created_at": "2026-05-24T11:30:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 411,
"created_at": "2026-05-28T20:44:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 428,
"created_at": "2026-06-02T08:17:17Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 479,
"created_at": "2026-06-11T14:45:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 574,
"created_at": "2026-06-29T10:21:48Z",
"last_comment_at": "2026-06-30T13:11:31Z",
"last_comment_author": "Joon"
},
{
"number": 597,
"created_at": "2026-07-02T09:39:36Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 611,
"created_at": "2026-07-03T13:31:45Z",
"last_comment_at": "2026-07-16T09:13:33Z",
"last_comment_author": "iamtoruk"
},
{
"number": 626,
"created_at": "2026-07-07T00:15:06Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 645,
"created_at": "2026-07-09T18:49:51Z",
"last_comment_at": "2026-07-18T11:12:21Z",
"last_comment_author": "avs-io"
},
{
"number": 703,
"created_at": "2026-07-16T20:28:28Z",
"last_comment_at": "2026-07-18T11:12:42Z",
"last_comment_author": "avs-io"
},
{
"number": 725,
"created_at": "2026-07-17T13:00:15Z",
"last_comment_at": "2026-07-17T19:10:26Z",
"last_comment_author": "avs-io"
},
{
"number": 767,
"created_at": "2026-07-20T15:29:31Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 768,
"created_at": "2026-07-20T15:51:43Z",
"last_comment_at": "2026-07-20T17:02:09Z",
"last_comment_author": "AVSRPA1KR"
},
{
"number": 769,
"created_at": "2026-07-20T15:52:00Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 770,
"created_at": "2026-07-20T15:57:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 771,
"created_at": "2026-07-20T16:05:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 795,
"created_at": "2026-07-22T10:19:22Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/getagentseal/codeburn",
"host": "github.com",
"name": "codeburn",
"owner": "getagentseal"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"security": 42,
"vitality": 80,
"community": 82,
"governance": 62,
"engineering": 81
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 80,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"commits_last_year": 1118,
"human_commit_share": 1,
"days_since_last_push": 1,
"active_weeks_last_year": 15
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "15/52 weeks with commits",
"points": 10.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 15
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "1118 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 1118
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 48,
"latest_release_tag": "mac-v0.9.19",
"releases_from_tags": false,
"days_since_latest_release": 2,
"mean_days_between_releases": 2.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "48 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 48
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 2 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 2
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~2.1 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 2.1
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 82,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"forks": 691,
"stars": 8858,
"watchers": 27,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "8,858 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 8858
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "691 forks",
"points": 23.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 691
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "27 watchers",
"points": 7.9,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 27
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "good",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 75,
"inputs": {
"packages": [
"codeburn"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 32310
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "32,310 downloads/month across npm",
"points": 60.1,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 32310,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 62,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 37,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 61,
"top_contributor_share": 0.796
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 80% of commits",
"points": 4.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 80
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "61 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 61
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 14 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"merged_prs": 412,
"open_issues": 21,
"closed_issues": 218,
"issue_closed_ratio": 0.912,
"closed_unmerged_prs": 132
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "91% of issues closed",
"points": 42.6,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 91
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "412/544 decided PRs merged",
"points": 29,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 412,
"decided": 544
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 3/29 approved changesets -- score normalized to 1",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"followers": 77,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "getagentseal",
"public_repos": 9,
"account_age_days": 95
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "77 followers of getagentseal",
"points": 13.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 77,
"login": "getagentseal"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "9 public repos, account ~0 yr old",
"points": 7.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 9
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"codeburn"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 2
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 2 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 2
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "50 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 50
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 81,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"ai-coding",
"claude-code",
"cli",
"codex",
"cost-tracking",
"developer-tools",
"observability",
"terminal-ui",
"token-usage",
"cursor-ide",
"menubar",
"web-dashboard"
],
"has_wiki": true,
"homepage": "https://codeburn.app/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://codeburn.app/",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "12 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 12
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 42,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 42,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 4.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 3/29 approved changesets -- score normalized to 1",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 14 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "23 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 10
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 61,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"docs/providers/claude.md",
"docs/providers/gemini.md"
],
"agent_instruction_max_bytes": 3012
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "docs/providers/claude.md, docs/providers/gemini.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "docs/providers/claude.md, docs/providers/gemini.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 43,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [
"app/tsconfig.json",
"dash/tsconfig.json",
"tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "app/tsconfig.json, dash/tsconfig.json, tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "app/tsconfig.json, dash/tsconfig.json, tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 167083,
"source_files_sampled": 510,
"oversized_source_files": 8
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "8/510 source files over 60KB",
"points": 54.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 510,
"oversized": 8
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "critical",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index npm:codeburn@0.9.19; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-23T04:22:30.848128Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/getagentseal/codeburn.svg",
"full_name": "getagentseal/codeburn",
"license_state": "standard",
"license_spdx": "MIT"
}