Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"arithmetic",
"bubble-tea",
"cli",
"developer-tools",
"game",
"go",
"golang",
"math",
"terminal",
"tui"
],
"is_fork": false,
"size_kb": 3298,
"has_wiki": true,
"homepage": "https://arithmego.com",
"languages": {
"Go": 485917,
"CSS": 10904,
"HTML": 9393,
"Shell": 3089,
"Makefile": 567,
"JavaScript": 1586,
"PowerShell": 3175
},
"pushed_at": "2026-02-17T13:02:34Z",
"created_at": "2026-01-28T13:53:15Z",
"owner_type": "User",
"updated_at": "2026-05-19T09:09:58Z",
"description": "Arithmetic game for the terminal.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "gurselcakar.com",
"name": "Gürsel Çakar",
"type": "User",
"login": "gurselcakar",
"company": null,
"location": null,
"followers": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/87243002?v=4",
"created_at": "2021-07-10T18:14:49Z",
"is_verified": null,
"public_repos": 2,
"account_age_days": 1837
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-02-17T12:00:17Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-02-17T11:37:08Z"
},
{
"tag": "v0.5.2",
"kind": "patch",
"published_at": "2026-02-16T18:31:15Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2026-02-16T18:26:30Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-02-14T18:38:46Z"
}
],
"recent_commits": [
{
"oid": "4fbbc6893060250e27f95ffa3645dc202742ec91",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove broken views badge from README",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T13:02:33Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1f8ddd07db4bdb91204a23af7aaebb21fb0ad948",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add downloads and views badges to README",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T13:00:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b796bea1f731f2c1ba8f2ff5a2115158355c0566",
"body": "Use $env:PROCESSOR_ARCHITECTURE instead of RuntimeInformation,\nwhich may not be available or returns enum values instead of strings.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix architecture detection in install.ps1 for PowerShell 5.1",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T12:05:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4b9d8eaaa2e41c42f50b257dfac7eee396ee3d87",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Bump latestVersion to 0.7.0 in hugo.toml",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:58:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ae93fac211e01c61382ee6e805e5e04e6530d052",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add Windows install command to README and website docs",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:57:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f125f517802346caadc212f228f62a5739f1c628",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Symlink install.ps1 into website/static for Hugo builds",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:57:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "75e1454c35555bf34bcacba858e7cc650025bc43",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add Windows support with PowerShell install script",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:55:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a165f32e09e33d3633678a93f44e5d91fa9c5360",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Replace header text with favicon logo in navbar",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:43:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "308145ced96e24c883f87b18173c5d4f7a383969",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Bump latestVersion to 0.6.0 in hugo.toml",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:39:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "30ab8a190fcbb39b0cc32b36d810f791e535369b",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Widen hero pitch text to fit on two lines",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:39:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f29428224f924a395b277902ff1d6a651045143d",
"body": "Allows launching practice mode directly from the command line,\nfollowing the same pattern as `arithmego statistics` and `arithmego settings`.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add `arithmego practice` CLI command",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:35:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4f76103b3225286d97f8c42ad4bbc5004ff2b28b",
"body": "Rewrite README \"What is this?\" as a narrative About section. Update\nwebsite showcase and hero descriptions to match. Remove unused\nfeatures.html and story.html partials and clean up WEBSITE.md.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Rework README and website copy for consistency",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:34:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1bbd3ff5da771d7ba5824f56516464f2d8626ff7",
"body": "Videos were encoded at H.264 Level 6.0 (2588x1814, 120fps) which\nmobile hardware decoders cannot handle. Re-encoded to Baseline Level\n4.0 (1280px, 30fps) for universal compatibility. Reverted unnecessary\npreload and IntersectionObserver workarounds from previous fix attempts.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Re-encode videos for mobile playback and revert workarounds",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:21:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "dfd4981cddde2b94fa9e074076402de3fb88f21f",
"body": "iOS Safari ignores the autoplay attribute in many cases. Use JS to\nexplicitly call play() when videos scroll into view.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add IntersectionObserver to trigger video playback on mobile",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:11:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7539a3c281ccf26ccfe948bf035f3c0654fda229",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add poster fallback images for mobile video playback",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:07:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "87c064c01410110896739706d7b7638668b3b6e8",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add preload=auto to all showcase videos for mobile playback",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:04:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cc1440e8b14951ea9ad4b42e359a58a3a22a0477",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Replace ASCII logo with image in README",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T11:00:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3e14cc2c2996b05077bc52727e0b1c70e0c11f8a",
"body": "Replace single video placeholder with 5 showcase sections (onboarding,\nplay menu, gameplay, practice, statistics). Remove story, features, and\nseparator sections in favor of letting videos demonstrate the product.\nAdd closing section with CTA. Update hero pitch copy.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Rework website with video showcases and streamlined content",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-17T10:59:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c427b537444947011e1982be537125e3367d49d0",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add play menu video showcase to website",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-16T18:55:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d85ca2e591ed4b997800ff4fa97603b528b34cc0",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix inconsistent category separator width in play browse",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-16T18:31:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cc3e6a1c40e359b3815a8c4d7dbbe91cb93b8fa3",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add wrap-around scrolling to play browse menu",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-16T18:24:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5d105b547603699daa8a3785053cddbcaa840a32",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add game logic and question generation documentation for contributors",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-14T20:59:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "37a94bc6abc297f90a8a68d39b04880709b91535",
"body": "Slim down version command to just print the version. Clean up update\ncommand for minimal output. Remove unused CommitSHA and BuildDate\nvariables and their ldflags from Makefile and goreleaser config.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Simplify version and update CLI output, remove dead build metadata",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-14T18:34:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2d5e2ba20efa84e1b39c127b3d801842d13da5b0",
"body": "…onfig\n\nWhen launching via CLI (e.g., arithmego play addition), the app skipped\ncreating a PlayBrowseModel. Pressing Escape from config tried to reuse\nthe zero-value model, showing category headers but no modes.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix empty play browse screen when navigating back from CLI-launched c…",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-14T18:31:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "71238278744a02de6a0c15107f1298326969f5d7",
"body": "Remove discoverable content (screen list, mode list, CLI commands,\nnode types) and keep only what prevents mistakes: build commands,\ndependency isolation rules, and key architectural patterns.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Trim CLAUDE.md to follow best practices",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-14T18:29:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "65636b1567b9c7335fb90025fe7d0212a1136e91",
"body": "- ARCHITECTURE.md: Add missing settings CLI command, add multiple choice section\n- WEBSITE.md: Remove non-existent changelog system, add missing files (404.html, separator.html, CNAME), fix install.sh description (symlink, not copy)\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update docs to match current codebase",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-14T18:28:33Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "df817b4ead027cedd4fb0210a55e3468f847507c",
"body": "Apply centering directly on the border style instead of a separate\ninner element, so lipgloss centers within the actual inner content\narea after accounting for padding and borders.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix off-center equation text in play config preview box",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-13T14:16:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "df37c7792d140c5ed14722ecec603fbba1a3dedc",
"body": "Move the = from the question line to the input prompt for typing mode,\nso the expression is centered independently and the = stays consistent\nregardless of expression length. For multiple choice mode, show \"= ?\"\non the question line instead.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Stabilize = sign position and use it as the input prompt",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-13T14:12:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "72f05b07891fc029a611fb33b2685f3a6438447f",
"body": "Reuse existing PlayBrowseModel instead of creating a new one when\nreturning from play config, preserving the user's mode selection.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix play browse cursor resetting to first mode when navigating back",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-13T14:08:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a56fab846c779fe128af6a5d18517993a49757bc",
"body": "Use fixed times and AddDate instead of Add(hours) in trend tests\nto avoid midnight boundary issues. Fix computePlayStreak and\ncomputeWeeklyData to use local midnight truncation instead of\nUTC-based Truncate.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix timezone-sensitive test failures in analytics",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-12T23:34:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9c18c4cbcc0826e9d7bcba7cadc998f7d086d0ee",
"body": "Onboarding:\n- Fix title positioning consistency across steps using fixed top offset\n- Default selections to first options (30s, Beginner, Addition, Typing)\n- Show operation-specific previews in input mode step\n- Remove progress dots from Ready screen\n- Replace \"Press → to Start\" with motivational te\n[…]\n:\n- P toggles pause/resume (was pause-only)\n- Esc quits game (was pause), matching common UI convention\n- Update pause screen hints accordingly\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Improve onboarding flow, feature tour, and game controls",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-12T23:25:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9c1a21351f39a9b9240834e58bb4ed3bdc23bcbb",
"body": "Move the title back into viewport content so it centers together with\nthe mode list. The centering logic and title placement were accidentally\nremoved during the search functionality cleanup.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix vertical centering on play browse screen",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-11T14:01:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "38e4497d1890907be2f6ca4b49033f854bdfde55",
"body": "- Remove CONTRIBUTING.md and its references\n- Fix difficulty levels in ARCHITECTURE.md (5 not 3)\n- Update CLAUDE.md, game/doc.go, modes/doc.go for generator system\n- Fix session detail \"perfect session\" message for empty sessions\n- Add tests for expr and gen packages\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update docs and add tests for expression tree generators",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-11T13:49:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fec8e72cdf1b10dcd741bf6cf6460d758e4b0ba1",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add 404 error page to website",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-11T13:42:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b6caa140636e7ed1b1b320fb8fab573b949d3eda",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix CI: update RenderHintsStructured to RenderHintsResponsive",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-11T13:42:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5ebb690478be5b17b57e12ce18df677afc5c6e83",
"body": "- Remove changelog section entirely (content, layouts, archetype, CSS)\n- Remove changelog nav link from hugo.toml\n- Simplify download page: drop version from title, update Windows text\n- Clean up footer: remove license note and separators\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove changelog page and clean up website",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-11T13:35:47Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "41f0c3f81e538d2709de4140d848bd80dbabc2de",
"body": "- Add HintsHeight constant and SetViewportSize helper in components\n- Replace 7 duplicated viewport init/resize blocks with helper calls\n- Remove per-screen hints height constants (menuHintsHeight, etc.)\n- Migrate remaining RenderHintsStructured calls to RenderHintsResponsive\n- Remove unused RenderHints and RenderHintsStructured functions\n- Make preview box widths responsive in play_config and onboarding\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Extract shared viewport helper and hints constant across screens",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-09T16:22:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "24064a5587961b1572e1a3851830319ba7775c99",
"body": "New system:\n- Expression tree (game/expr): Expr interface with Num, BinOp, Paren,\n UnaryPrefix, UnarySuffix, Pow nodes for Eval/Format/Key\n- Generator framework (game/gen): 16 weighted-pattern generators with\n per-difficulty ranges, backward division, and overflow protection\n- QuestionPool (game/p\n[…]\n startGame()\n- Fixed pre-computed power display in mixed_advanced (now shows 2⁴ not 64)\n- Rewrote session_test.go and modes_test.go for new API\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Replace Operation system with expression tree generators",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-09T15:40:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "12684fa4fdef9854d2ca7e0abd2b76248c0460a9",
"body": "Search added unnecessary complexity for 16 modes that are already\norganized by category. The title is now fixed at the top outside the\nscrollable viewport, and modes list top-down without vertical centering.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove search functionality from play browse screen",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-08T19:39:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "92d45c32f6343d80af3f1fe8c94688ab7b742707",
"body": "…vicon\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Sync website with releases: changelog pages, version bump, and new fa…",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:38:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fff3b4298a5a8e66a3c668664c66a2478053deaf",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add math-operator separators between homepage sections",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:32:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f5c4f431cb17407114f68f85de1034b2e6f8f3de",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Stack footer vertically on mobile with centered items",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:28:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8dc67f26dd9a0937e296b49ce6a2df8747d3e0f8",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Truncate curl command on mobile to keep copy button visible",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:26:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "91c846b715e5bc1945c6a8a5bbc2ddf99c79fb81",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Rename \"Play Again\" to \"Play\" on results screen",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:20:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2d5b3e6fde092aecff617f55f6acc2a640da71b2",
"body": "The Y-axis labels used hardcoded format widths that didn't account for\nvarying value magnitudes, causing the │ separator to misalign with the\n└ corner on the X-axis.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix Y-axis alignment in line chart by using dynamic label widths",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:18:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cb666306b9c0e060145707b7de1bdb41f49cb044",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add responsive key hints that wrap on narrow terminals",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:14:33Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8b847b4d80c41a4f1ab714e106fc3ac6f344062f",
"body": "…e streak bar\n\nRework the game screen top bar for better readability and feedback:\n- Add 2-line top padding and 4-char horizontal margins to the HUD\n- Add \"Score\" label above score number, replaced by milestone text on tier-up\n- Capitalize and move \"Remaining\" label above the timer\n- Clamp score to \n[…]\nets on milestone)\n- Add inline streak count next to multiplier (e.g., \"×1.25 · Streak 5\")\n- Fall back to simple layout when terminal width < 40\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Redesign game HUD with padding, labels, score floor, and tier-relativ…",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-05T15:10:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "cf9313019a342f9ebae08b9075a8a9b59eb247a9",
"body": "Adds top padding to the mode selection screen content so it appears\nvertically centered rather than anchored to the top of the screen.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Center play browse content vertically when it fits viewport",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-04T23:17:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fe3d66d27ed60cc511eb81b700da56353f3a1bf7",
"body": "Practice mode:\n- Replace settings panel with direct keyboard shortcuts (C/O/D/M)\n- Persist settings between sessions (category, operation, difficulty, input)\n- Add retry-on-mistake: wrong answers shown in red, user can retry\n- Works for both typing and multiple choice input modes\n\nGame mode:\n- Remove green/red feedback coloring on input\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Rework practice mode UX and remove gameplay feedback coloring",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-04T23:05:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6b31284ce97c991b6ded9173a03c39600cf7b16a",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove Windows support temporarily until issues are resolved",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T11:30:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "94e0ebac95b11e6f102eca7dceb588c230afe902",
"body": "Ensure screens are properly initialized when navigating back via Esc\nfrom CLI-launched subcommands (play, statistics, settings). Previously,\nreturning to menu or play browse showed \"Loading...\" because the target\nscreen's viewport was never sized. Add returnToMenu() helper that calls\nSetSize before transitioning, and use startPlayBrowse() for back\nnavigation from play config. Add `arithmego settings` CLI command.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add settings command and fix Esc navigation for CLI subcommands",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T10:59:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7b695ca431401c90035f099610e7a74f93d68145",
"body": "Replace printf with echo -e for color output, use proper if/then\nfor wait exit status, and remove unused GREEN variable.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix shellcheck warnings in install script",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T10:34:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "334458c6e10ad7e595c21373a652b6ad492582c6",
"body": "Install to ~/.local/bin instead of /usr/local/bin so the auto-update\nfeature can replace the binary without elevated permissions. Implement\nDownloadAndApply for in-app auto-updates with fallback to manual\nnotification. Redesign install script with math-themed spinner and\nminimal branded output. Deduplicate install scripts via symlink.\nCenter main menu items independently from secondary links.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add auto-update support and redesign install script",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T10:31:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f2d0091aac9db6c3a9cd2fe9cbf59987a732130c",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix download page terminal box overflow on mobile",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T10:17:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0085280a9a567a8450e6128942fb6689a105713b",
"body": "Add a \"Follow me on X @gurselcakar\" option to the main menu that opens\nthe profile in the user's default browser. Also fix menu item alignment\nby ensuring all items share a uniform width before centering.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add X profile link to main menu",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T09:54:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2bfd0571b6b27089ef05a99ebe74b9b1f2713483",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add copy-to-clipboard button for install commands",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T09:40:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7cf0e2159402202ced064959b0c5adb1636e6e02",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Skip CI workflow for website-only changes",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T09:27:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "25be13cd8c2b22e5bf31e34ad9b6eb6b9d6c0688",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix footer not sticking to bottom on changelog and download pages",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T09:25:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "61e2ec9cf2b2563b476c0cc80a2703e3fd699280",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add GitHub Pages deployment workflow and CNAME",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T09:13:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ab15314fe36320c945a510de215d7caebd6e93a6",
"body": "Custom Hugo site (no external theme) with dark theme and monospace accents.\nIncludes landing page with hero, features, highlights, and story sections,\nchangelog with two-column layout, and download page with install script\nand direct Windows downloads. Updates README to match website tone.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add Hugo website with landing page, changelog, and download page",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-03T09:08:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "40ee635347324bb51988888085742ebbaee9d51b",
"body": null,
"is_bot": false,
"headline": "Use pre tag for logo to remove copy button",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T22:25:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f6f6b676fb70c2c2abb245abf01eedc69e5d8cd",
"body": "- Add centered ASCII logo\n- Add centered tagline\n- Use dynamic GitHub badges (build, release, license)\n- Remove tech stack from description\n- Fix code block highlighting\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Redesign README with centered header and dynamic badges",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T22:24:33Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "441e91e4d4276d5aa10474a76d781e16837aa3d5",
"body": "Change \"command-line\" to \"terminal-based\" for accuracy.\nArithmeGo uses Bubble Tea TUI, not just CLI commands.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update game description to terminal-based",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T22:11:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "097c72da28bcaeba83a50f156b8f12211d65cdec",
"body": "- Add Windows builds (arm64, amd64) to GoReleaser\n- Use .zip format for Windows, .tar.gz for Unix\n- Update README with Windows install instructions\n- Document cross-platform storage paths in ARCHITECTURE.md\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add Windows support for distribution",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T21:58:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5695dbedfa7376b4c35a3cd2c5192232439bddf1",
"body": "- Replace popup filter panel with dedicated hotkeys (c/d/p for\n category/difficulty/period, m/p for metric/period in trends)\n- Show filter values inline without arrow selectors\n- Redesign dashboard: remove hero box, use single stats row,\n compact 2x2 records grid, streamlined footer\n- Add vertical\n[…]\ntering when content fits on screen\n- Remove unused time period filter from operation detail view\n- Clean up unused overlay and focus state code\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Redesign statistics screens with cleaner filtering UI",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T21:56:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f3f75a09debc1af0fac6097e7dcec799ee6b118c",
"body": "- Add GoReleaser config for cross-platform builds\n- Add GitHub Actions CI workflow (test, lint, shellcheck)\n- Add GitHub Actions release workflow\n- Add install script for curl-based installation\n- Streamline docs for open source (README, ARCHITECTURE, CONTRIBUTING)\n- Move internal docs (DESIGN, ROADMAP) to .local/archive\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add distribution infrastructure (Phase 12)",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T21:34:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "dac24b26e9cf5a0ae379b645e77cdb50d37a1782",
"body": "- Use fixed-width bars with space padding for consistent alignment\n- Fix singular/plural: \"1 session\" vs \"N sessions\"\n- Pad count to fixed width to prevent centering misalignment\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix bar chart alignment and grammar in trends view",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T21:23:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5575cee965fc4107492cf6fb2bb4a5272300567c",
"body": "Extract the statistics screen from a single file into a dedicated package\nwith multiple views (dashboard, operations, history, trends). Add reusable\nprogress bar component for accuracy visualization.\n\nKey changes:\n- Split monolithic statistics.go into statistics/ package with 10 files\n- Add viewport\n[…]\nring\n- Add ASCII charts for trends visualization\n- Add session detail view with full question log\n- Create progressbar component in components/\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Refactor statistics screen into modular package structure",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T21:14:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "31e8f16790e9f4aa08fa291615e10a32d26c80c0",
"body": "Document the TUI screen architecture including all 11 screens\n(Menu, Play Browse, Play Config, Game, Pause, Results, Practice,\nStatistics, Settings, Onboarding, Feature Tour) and component locations.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add UI screens documentation to CLAUDE.md",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T13:23:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "782969b72cbcd405ef2628fc0f3dcec8e451984d",
"body": "- Refactor Addition, Subtraction, Multiplication, Division to use\n the shared generateWithFallback helper with makeCandidate and\n makeCandidateRelaxed methods, matching the other operations\n- Remove unused math import from refactored files\n- Add tests for panic cases (division/modulo by zero, negative\n exponent, negative factorial input)\n- Add tests for isAcceptableFallback and wouldOverflow helpers\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Refactor basic operations to use generateWithFallback pattern",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T13:22:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "52d9da706c65cc4a3d5c983f036e6d8e73685f3e",
"body": "- Replace scripts/ folder with website/ in architecture\n- Add Website section explaining Hugo site structure\n- Update Distribution section with install flow\n- Update README status to Phase 11 and refresh features\n- Remove scripts/.gitkeep (install.sh will live in website/static/)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update docs for website-based distribution",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T13:22:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "27365821cbd7097d4d39b2f5ece0f7a7bdc12bc6",
"body": "- Add doc.go files to internal/game/ and internal/game/operations/\n for consistency with other packages (modes, storage, analytics, cli)\n- Add comprehensive ScoreDifficulty doc comments to 8 operations\n (cube, square, cube_root, square_root, factorial, modulo, percentage, power)\n explaining cognitive load scoring rationale\n- Move package documentation from helpers.go to doc.go\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add package documentation to game package",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T13:21:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e2132025aaafb5d1622f89dbf0e505711b3c9d8b",
"body": "- Replace StartModeQuickPlay with StartModePlayBrowse and StartModePlayConfig\n- Add optional [mode] argument to play command (e.g., arithmego play addition)\n- Add tab completion support for mode names\n- Update statistics command documentation with current keyboard shortcuts\n- Add package documentati\n[…]\ni package\n\nThe play command now opens:\n- Play Browse screen when called without arguments\n- Play Config screen when called with a valid mode ID\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Refactor play command to support mode argument",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T13:09:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c5075ad158eb9e8da1b744388b0421d6d38129b9",
"body": "- Move OperationStats from storage to analytics package where it's used\n- Add test for null sessions JSON handling in statistics\n- Add package documentation to storage package\n- Update analytics doc.go to reference OperationStats\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Improve storage and analytics package organization",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T12:55:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0c8aedba7495c3307bee6742eb58de5106141a15",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add package documentation to modes package",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T12:46:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6ece39338732130a275f9b5238fb4d300c77d9e2",
"body": "Extract analytics logic into dedicated package with:\n- Aggregates: ExtendedAggregates with personal bests, extended\n operation stats, and filtered computation\n- Filters: Time periods, difficulty, category, mode, and operation\n filters with AggregateFilter struct\n- Trends: Trend data computation, w\n[…]\nge package (now\nsuperseded by analytics.ComputeExtendedAggregates).\n\nIncludes comprehensive test coverage (48 tests) and package\ndocumentation.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add analytics package for statistics computation",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T12:42:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "af769af75b4e4549348de866b59e101dd1704d9e",
"body": "- Add PlayBrowseModel for mode selection with categories and search\n- Add PlayConfigModel for game settings with difficulty preview\n- Extract shared helpers (maxLen, difficultyNames, findDifficultyIndex)\n- Update mode descriptions to consistent \"Calculate\" format\n- Remove old single-screen Play implementation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Refactor Play screen into two-step browse and configure flow",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T11:05:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f72d8cebfe189020b4fba5e57e0fad9c9cd1f889",
"body": "- Add feature tour with 4 screens: Practice, Modes, Statistics, Finale\n- Feature tour introduces app features after first game completion\n- Enhanced results screen with detailed stats (avg/fastest response, streak)\n- Results screen shows intro message for first game flow\n- First game routes to featu\n[…]\n callback and personal note\n- Remove redundant notes from onboarding (covered by feature tour)\n- Add FastestResponseTime method to game session\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add post-onboarding feature tour and enhanced results screen",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T10:24:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0d4e2f5d4ad7c662d042f52eabcc0ad70c7ec966",
"body": "- Add viewport to menu and settings screens for responsive resizing\n- Apply consistent branding colors (BrightBlue logo, white tagline)\n- Add cyan focus indicator (>) consistent across all screens\n- Add section headers to settings (Game Defaults, Preferences)\n- Change menu hint from Enter to → for c\n[…]\nnsistency with onboarding\n- Add LogoColored and ProgressDotsColored component functions\n- Fix potential infinite loop in menu cursor navigation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add viewport and improve UI consistency for menu and settings",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T08:07:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b82590d2ace4bd1508ba2880f9170508e64def20",
"body": "- Remove cursor field, use step-specific indices for cleaner state management\n- Fix DRY violation by having Update() call SetSize()\n- Extract scroll constants (linesBeforeOptions, scrollPaddingTop/Bottom)\n- Add new Ready screen with summary, controls, and start instruction\n- Add input mode preview s\n[…]\ninput mode options (remove redundant descriptions)\n- Update subtitles to consistent question style\n- Add comprehensive test coverage (14 tests)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Refactor onboarding with new Ready screen and UI improvements",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T07:54:07Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8a3c2f2fd3b112b0011cffcf1c42a76a6abb93d0",
"body": "- Rename sprint modes to simple names (Addition Sprint → Addition)\n- Remove Speed Round and Endurance (duration presets, not distinct modes)\n- Add all 12 single-operation modes (basic, power, advanced)\n- Add 4 mixed modes: Mixed Basics, Mixed Powers, Mixed Advanced, Anything Goes\n- Update documentation and tests to reflect new mode structure\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Rename game modes and expand to 16 total modes",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-02T06:09:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a579bb0b8593f5c6f60df94710bf6d9178f7187c",
"body": "Replace separate Quick Play and Modes menu options with a unified Play\nscreen that allows users to start immediately or customize settings.\n\n- Add new play.go with collapsed and expanded settings panel views\n- Remove modes.go and launch.go (functionality merged into play.go)\n- Simplify menu to singl\n[…]\nto prevent layout shift\n- Extract helper methods for settings summary and input method\n- Add bounds checking and defensive empty slice handling\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Unify Quick Play and Modes into single Play screen",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-01T16:56:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8ceac9ff1f14d72b8bd5a5b6f649a8652d3bbc42",
"body": "- Replace vertical operation list with horizontal selectors for all settings\n- Add Category field to settings (Basic, Power, Advanced)\n- Remove number key shortcuts (1-4) in typing mode to prevent input conflicts\n- Implement settings panel overlay that doesn't shift centered equation\n- Apply setting\n[…]\nwith arrow keys\n- Use lipgloss.Width() for proper visual width calculation in overlay\n- Fix Input component Focus/Blur to use pointer receivers\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Refactor practice screen with horizontal selectors and overlay panel",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-02-01T00:14:42Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e370234cb580ea3fb7290fd941fb7247e7402d4a",
"body": "- Settings: compact layout, removed section headers, context-aware hints\n- Toggle: new \"On · Off\" visual with highlighted active state\n- Selector: arrows always visible but dimmed at boundaries\n- Both components now support LabelWidth/ValueWidth for alignment\n- Settings and statistics use dynamic width calculation instead of\n hardcoded values for better maintainability\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Redesign settings UI with dynamic layout and improved components",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T23:39:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "36b211eb658ca99be4bf570e88f1c918200444bd",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add dot separator between logo and tagline",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T23:22:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2c7ef87c01bb89b1750bac474d7c9359fd06e59d",
"body": "- → (right) now advances to next step (alias for Enter)\n- ← (left) now goes back to previous step (alias for B)\n- Update hints to show arrow keys as primary navigation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add arrow key navigation to onboarding wizard",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T22:50:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "07e1ee5c7b3d2382b8c4a2b0556a594e6db834a5",
"body": "Refactor all 11 screen View() functions to anchor key hints at the\nabsolute bottom of the terminal with a 1-line gap. Main content is\nnow centered in the remaining space above the hints.\n\n- Remove separator lines from practice.go\n- Use consistent pattern with lipgloss.Place for layout\n- Add bottomPadding for slight gap from terminal edge\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement consistent bottom-anchored hints across all screens",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T22:45:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0264adf30e92c5b5909fc49c826c769c4762fb7f",
"body": "The last line of the ASCII logo was one character shorter than the\nother lines, causing visual misalignment.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix logo alignment by adding trailing space to last line",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T22:28:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "550a2b017ad164f596b24f29327e045d13d31775",
"body": "- Add structured hint system with Hint type and RenderHintsStructured()\n- Update all 11 screens to use consistent [Key] Action format\n- Order hints logically: back left, navigation middle, forward right\n- Fix menu positioning bug after quitting first game (add rebuildMenu calls)\n- Fix multiple choice showing zeros on first question (use gameStartMsg)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Standardize hint UI and fix menu/MC bugs",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T19:15:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b4d8ea0a92ae96a20f252b24b3a2283c1d4f188f",
"body": "- Update status to Phase 11 in progress in CLAUDE.md\n- Add quit confirmation and multiple choice to ROADMAP Phase 11\n- Add quitconfirm.go screen to ARCHITECTURE.md\n- Add missing config fields (onboarded, input_method, skip_quit_confirmation)\n- Add quit confirmation message types to architecture docs\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update documentation for Phase 11 progress",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T11:36:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2ff578488725bcda4e9be9270d300f3d1dbc612b",
"body": "Add quit confirmation screen when pressing Q during gameplay or from pause.\nIncludes \"Don't ask again\" option that persists to settings, with proper\ntimer handling (stops on confirm, resumes on cancel back to game).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 11: Quit confirmation flow",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T11:30:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "57384e5ae3e07553694e5380ccccaf4ca1f40930",
"body": "Add multiple choice as an alternative to typing for answering questions.\nUsers can select from 4 options using keys 1-4 with auto-submit on selection.\n\nFeatures:\n- Choice generation with difficulty-aware distractors (closer for harder levels)\n- Horizontal layout: [1] 24 [2] 32 [3] 28 [4] 36\n- Ava\n[…]\nmethod selector\n- Onboarding: input mode selection step\n- App: wires input method through all flows\n- Config: InputMethod field for persistence\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement multiple choice input mode",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T11:06:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "21e78c4ab82c5009fabd6bcb278a5ee28cbedc16",
"body": "Add Cobra CLI with subcommands:\n- arithmego play: quick play (or onboarding for new users)\n- arithmego statistics/stats: open statistics screen\n- arithmego update: check GitHub releases for updates\n- arithmego version: show version, commit, build date\n\nFeatures:\n- Version injection via ldflags (make\n[…]\n GitHub tag_name responses\n- Handle non-numeric version parts in comparisons\n\nAlso removes redundant .gitkeep files from populated directories.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 10: CLI commands with Cobra and update notifications",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T10:27:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3ddb3745acd958c5311b53adfa5febe640b26799",
"body": "5-screen guided setup: Welcome, Duration, Difficulty, Operation, Input Mode.\nNavigation with Enter (continue), S (skip), B (back). Progress dots indicator.\nCompletion saves preferences and launches game immediately.\n\n- Add Onboarded flag to config struct\n- Create progress dots component\n- Replace on\n[…]\nIntegrate startup check and message handling in app\n- Fix DefaultDifficulty from \"Normal\" to \"Easy\"\n- Update docs to reflect Phase 9 completion\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 9: Onboarding flow for first-time users",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T09:58:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dab0de5b58ea6df78e1ba43727b9c504d855bea6",
"body": "- Add config.go replacing settings.go for unified preferences + Quick Play state\n- Add toggle.go component for boolean settings\n- Implement full settings screen with Defaults and Preferences sections\n- Update launch.go to pre-select user's configured defaults\n- Update app.go to use Config throughout\n- Split Phase 8/9 in roadmap (Settings complete, Onboarding planned)\n- Update ARCHITECTURE.md with current data storage structure\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 8: Settings screen with unified config storage",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T09:25:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4b09bba8ec29a7ba956949cfea7fa035e3c9d5df",
"body": "Code quality improvements from deep code review:\n\nCritical fixes:\n- Replace panic with graceful recovery in app.go startGame()\n- Add Sync() before Close() in storage to prevent data loss\n- Add panic recovery in main.go to restore terminal on crash\n- Document preconditions for Division/Modulo Apply()\n[…]\n: config storage, auto-update, onboarding\n- Add Phase 9 details: CLI commands and auto-update check\n- Add config.json schema to ARCHITECTURE.md\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Code review fixes and Phase 8-9 documentation",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-31T08:49:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "76420e2a12853cb8b8c90d1624cd0bea8bd2b160",
"body": "Practice Mode is a sandbox for drilling arithmetic without timer or scoring.\nFeatures live controls to change difficulty and operation on-the-fly.\n\nIncludes:\n- Practice screen with clean, centered question display\n- Expandable settings panel (Tab to open/close)\n- All 12 operations across Basic, Powe\n[…]\n component extracted from launch.go\n- Question stays visible when settings panel is open\n- Input method toggle placeholder (ready for Phase 10)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 7: Practice Mode with expandable settings panel",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-30T13:36:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "195d58d5a2491845e87d3a8af619d56dc78e7ac7",
"body": "- Add settings storage (~/.config/arithmego/settings.json)\n- Remember last played mode, difficulty, and duration\n- Show Quick Play menu item with mode name for returning users\n- Instant game start with saved configuration\n- Add ParseDifficulty function for settings deserialization\n- Handle removed modes and corrupted settings gracefully\n- Add SetSize method to MenuModel for consistent screen sizing\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 6: Quick Play with persistent settings",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-30T13:33:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8d82bfa47f3edf0c91483e143fa469d66b9eca80",
"body": "- Add storage package for persistent data (~/.config/arithmego/)\n- Track per-session data (mode, difficulty, score, streak, accuracy)\n- Track per-question data (operation, response time, correct/wrong)\n- Implement statistics screen with summary and detailed views\n- Add atomic file writes to prevent \n[…]\norruption\n- Use secure file permissions (0700 dir, 0600 files)\n- Add input validation for session records\n- Include comprehensive test coverage\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 5: Statistics system with persistent storage",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-30T12:53:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "33d21c8ac9adc09d8de28b279ce140fddb7b44d1",
"body": "Add gamified scoring with difficulty multipliers, time bonuses, and a\n7-tier streak system. Points scale from 0.5x (Beginner) to 2.0x (Expert),\nwith instant answers (<2s) earning 1.5x time bonus. Consecutive correct\nanswers build streaks that increase multipliers up to 2.0x at 20+ streak.\n\nFeatures:\n[…]\nh tier-based styling and shimmer effects\n- Delta popup showing points gained/lost per answer\n- Best streak tracking displayed on results screen\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Implement Phase 4: Scoring system with streaks and multipliers",
"author_name": "Gursel Cakar",
"author_login": "gurselcakar",
"committed_at": "2026-01-30T12:24:34Z",
"body_truncated": true,
"is_coding_agent": true
}
],
"releases_count": 5,
"commits_last_year": 109,
"latest_release_at": "2026-02-17T12:00:17Z",
"latest_release_tag": "v0.7.0",
"releases_from_tags": false,
"days_since_last_push": 154,
"active_weeks_last_year": 4,
"days_since_latest_release": 154,
"mean_days_between_releases": 0.7
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/gurselcakar/arithmego",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/gurselcakar/arithmego",
"is_deprecated": false,
"latest_version": "v0.7.0",
"repository_url": "https://github.com/gurselcakar/arithmego",
"versions_count": 5,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-02-17T11:58:48Z",
"latest_version_yanked": null,
"days_since_latest_publish": 154
}
]
},
"popularity": {
"forks": 1,
"stars": 9,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2026-07-12",
"count": 1
}
],
"complete": true,
"collected": 1,
"total_forks": 1
},
"star_history": {
"days": [
{
"date": "2026-01-31",
"count": 1
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-02-11",
"count": 1
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-04-07",
"count": 1
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
}
],
"complete": true,
"collected": 9,
"total_stars": 9
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 25634,
"source_files_sampled": 113,
"oversized_source_files": 0,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 1121
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/charmbracelet/bubbles",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.21.0"
},
{
"name": "github.com/charmbracelet/bubbletea",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.10"
},
{
"name": "github.com/charmbracelet/lipgloss",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.0"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
}
],
"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": 0,
"merged_prs": 0,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "gurselcakar",
"commits": 109,
"avatar_url": "https://avatars.githubusercontent.com/u/87243002?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"deploy-website.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"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": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"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": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"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": 0,
"reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow 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": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not 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": 9,
"reason": "1 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "4fbbc6893060250e27f95ffa3645dc202742ec91",
"ran_at": "2026-07-21T18:39:52Z",
"aggregate_score": 3.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/gurselcakar/arithmego",
"host": "github.com",
"name": "arithmego",
"owner": "gurselcakar"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"security": 31,
"vitality": 51,
"community": 31,
"governance": 33,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 51,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "at_risk",
"name": "Development activity",
"note": null,
"notes": [],
"value": 31,
"inputs": {
"commits_last_year": 109,
"human_commit_share": 1,
"days_since_last_push": 154,
"active_weeks_last_year": 4
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 154 days ago",
"points": 9.9,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 154
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "4/52 weeks with commits",
"points": 2.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 4
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "109 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 109
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 81,
"inputs": {
"releases_count": 5,
"latest_release_tag": "v0.7.0",
"releases_from_tags": false,
"days_since_latest_release": 154,
"mean_days_between_releases": 0.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "5 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 5
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 154 days ago",
"points": 27,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 154
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.7 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.7
}
}
],
"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": "at_risk",
"name": "Community & Adoption",
"value": 31,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 15,
"inputs": {
"forks": 1,
"stars": 9,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "below_threshold"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "9 stars",
"points": 14.6,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 9
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 1
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"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": 0,
"status": "missed",
"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": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 33,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "critical",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution",
"pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 1,
"inputs": {
"merged_prs": 0,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "no decided pull requests or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_decided_prs_or_data",
"params": {}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 38,
"inputs": {
"followers": 7,
"owner_type": "User",
"is_verified": null,
"owner_login": "gurselcakar",
"public_repos": 2,
"account_age_days": 1837
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "7 followers of gurselcakar",
"points": 6.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 7,
"login": "gurselcakar"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "2 public repos, account ~5 yr old",
"points": 13.5,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 2
}
},
{
"code": "account_age_years",
"params": {
"years": 5
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/gurselcakar/arithmego"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 154
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 154 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 154
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "5 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 5
}
}
],
"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": 76,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"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": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"arithmetic",
"bubble-tea",
"cli",
"developer-tools",
"game",
"go",
"golang",
"math",
"terminal",
"tui"
],
"has_wiki": true,
"homepage": "https://arithmego.com",
"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://arithmego.com",
"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": "10 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 10
}
}
],
"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": 31,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 31,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 3.1
},
"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 not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"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": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"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": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"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": "1 existing vulnerabilities detected",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 80,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "good",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 81,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.67,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 1121
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.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": "67 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 35.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 67,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.99,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"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": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"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": "99 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 99,
"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": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 25634,
"source_files_sampled": 113,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/113 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 113,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"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": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-21T18:39:58.138398Z",
"schema_version": "0.23.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/gurselcakar/arithmego.svg",
"full_name": "gurselcakar/arithmego",
"license_state": "standard",
"license_spdx": "MIT"
}