Commit Graph
13 Commits
Author SHA1 Message Date
tiennm99 e4753ba33c chore: annotate archived repos, publish inclusion criteria (#10)
- notes for gpt-engineer, void, Roo-Code (archived upstream) — shown
  as badges + italics on the dashboard; kept for historical value
- README Contributing now states inclusion criteria: must BE a coding
  agent (not tooling for agents), ~10k+ stars, open source + maintained
- resolves ambiguity for community PRs proposing sub-bar repos
2026-08-09 03:36:44 +07:00
tiennm99 0d5e4b3266 feat: momentum metrics, agents.yml validation, drift detection, hardening (#9)
Review fixes:
- applyMigrations resolves chained renames deterministically (cycle guard)
- GraphQL errors name the failing owner/repo, not the alias
- sanitizeCell escapes backslash + angle brackets (README md/HTML injection)
- timeNow/graphqlURL seams; new httptest fetch tests, site + delta tests
  (coverage 30% -> 65.6%)

Features:
- delta30d computed from history; dashboard gains sortable D30d column
- README shows Top 7-day mover line
- 'go run . -check' validates agents.yml offline (dupes, categories,
  name patterns); wired into CI for contributor PRs
- isArchived + rename drift warnings in daily run; archived badge on
  dashboard (E2E found 3 archived repos: gpt-engineer, void, Roo-Code)
2026-08-09 03:26:01 +07:00
tiennm99 5d66d4757c chore: project hardening — dep swap, CI gates, dependabot, action bumps (#8)
* chore: project hardening — dep swap, CI gates, dependabot, action bumps

- swap gopkg.in/yaml.v3 (upstream archived Apr 2025) for maintained
  github.com/goccy/go-yaml; same Unmarshal API, tags unchanged
- add CI workflow: go vet/test/build + golangci-lint + govulncheck
  on PRs and main pushes
- add dependabot for gomod + github-actions (weekly)
- bump actions to latest majors in update.yml (clears Node 20
  deprecation annotations); workflow logic untouched
- README/history refreshed by E2E verification run (29 agents)

* fix: check Close/Remove error returns (errcheck)

Write paths (writeSnapshots, renderReadme) now propagate close errors —
a failed close there can hide lost data. Read/cleanup paths ignore
explicitly with _ =.
2026-08-09 02:48:03 +07:00
tiennm99 6658de1fa9 feat(site): apply ui-ux-pro-max design system to dashboard (#7)
Design system: Data-Dense Dashboard — blue primary (#2563EB/#3B82F6),
amber accent, slate neutrals, Fira Code (headings/data) + Fira Sans
(body) via Google Fonts.

- KPI stat cards: tracked repos, total stars, top 7d gainer, last updated
- card surfaces w/ subtle shadow for table + chart; row hover highlight
- per-category tinted badges (text carries meaning, not color alone)
- search box w/ inline SVG icon; GitHub header button w/ SVG mark
- footer w/ Actions + contributing links
- all PR #6 logic/a11y preserved (sort, search, chips, legend state,
  degraded mode, aria, focus-visible, reduced-motion, 44px targets)
- workflow: add site/** to push paths so dashboard edits auto-deploy

Verified: dark + light schemes, 375px mobile (no h-scroll), 29 rows,
KPI values correct, zero console errors.
2026-08-09 01:17:24 +07:00
tiennm99 e0c965442a feat(site): UI/UX improvements for Pages dashboard (#6)
* feat(site): UI/UX improvements for Pages dashboard

Phase 1+2 of plans/260808-2317 + ui-ux-pro-max quality pass:
- fix invisible single-snapshot chart series (show points when <2)
- persist legend hidden-state across chart re-renders
- Chart.js CDN failure fallback message
- meta description, OG tags, SVG favicon, theme-color, noscript
- log/linear y-axis toggle; debounced text search (table + chart)
- stale-repo muting + text badge (>6 months since push)
- delta7d sort puts no-baseline rows last
- a11y: aria-sort, aria-pressed, canvas role/label, focus-visible,
  keyboard-sortable headers, 44px coarse-pointer targets,
  contrast >=4.5:1 both schemes, reduced-motion guard, empty state

* fix(site): guard renderChart in Chart.js CDN-failure degraded mode

Review finding (major): filter/search handlers call hoisted renderChart()
after the early CDN-failure return, hitting TDZ consts and throwing on
every interaction. Guard with window.Chart check; verified with a
broken-CDN copy: table filtering works error-free, fallback msg shows.
2026-08-09 00:44:28 +07:00
tiennm99 5051274e52 feat: add 10 agents, fix renamed slugs, add GitHub Pages dashboard (#5)
- Add pi, OpenHands, warp, gpt-pilot, qwen-code, kilocode, onlook,
  dyad, trae-agent, copilot-cli (19 -> 29 tracked repos)
- Update renamed slugs to canonical owners (anomalyco/opencode,
  aaif-goose/goose, AntonOsika/gpt-engineer) with history key
  migrations so star deltas survive the rename
- Generate site/data.json each run and deploy site/ (interactive
  table + star-history chart) to GitHub Pages from the daily
  workflow, since GITHUB_TOKEN bot pushes cannot trigger a separate
  Pages workflow
2026-08-08 23:27:53 +07:00
tiennm99 110afce2a6 style: gofmt history_test.go 2026-05-14 15:49:05 +07:00
tiennm99 4ccee1420a docs: add LOCAL_DEV and CONTRIBUTING guides, explain Delta7d
Two new short docs unblock new contributors who currently have to read
the Go source to figure out the GITHUB_TOKEN requirement and the
agents.yml schema:

- docs/LOCAL_DEV.md walks through the PAT setup, the local run command,
  what files the run modifies, and how to revert before opening a PR.
- docs/CONTRIBUTING.md documents the agents.yml fields, enumerates the
  six valid category values, and explains the rename and deprecation
  policy now that history is keyed canonically.

Also add a one-sentence caption under the table in readme.tmpl so the
Delta7d column has a definition in the rendered README.
2026-05-14 15:49:05 +07:00
tiennm99 f0e10d6d26 fix(ci): narrow conflict resolution to bot-generated files only
The blanket git pull --rebase -X theirs in the push-retry loop silently
discarded conflicting changes in any file, so a maintainer push to
data/agents.yml racing with the daily run could be dropped without
warning. Replace it with a selective resolver: plain rebase first, then
inspect git diff --name-only --diff-filter=U; if every conflicting path
is data/history.jsonl or README.md (both bot-generated), resolve those
with --theirs and continue; otherwise abort the rebase and fail the run
loudly so the human edit is preserved and visible.

Also leave a comment at the permissions block warning future maintainers
not to swap GITHUB_TOKEN for a PAT, since the no-recursion invariant is
what currently prevents the auto-commit from triggering its own workflow.
2026-05-14 15:49:05 +07:00
tiennm99 62cbdd7a4a fix: harden GitHub fetcher and history I/O, add canonical keying
GitHub fetcher (github.go):
- add 30s HTTP client timeout (was http.DefaultClient with no bound)
- chunk GraphQL alias requests at 50 repos to stay clear of abuse detection
- abort the run on any partial GraphQL error or missing repo rather than
  silently shrinking the README and poisoning the next delta
- retry transient failures (network, 5xx, 429) with 2s/4s/8s backoff

History layer (history.go):
- key snapshots by canonical owner/repo from agents.yml instead of the
  rename-resolved NameWithOwner returned by the API; carry a lazy
  migration map so existing aaif-goose/goose entries fold into block/goose
  on next read with no manual data edit
- tighten the 7d delta window to (cutoff-3d, cutoff] so a missed cron week
  no longer mislabels a 90d-old comparison as Delta7d
- replace the snapshots[:0] aliased filter loop with slices.DeleteFunc
- log malformed JSONL lines to stderr with line numbers instead of
  silently skipping them
- write history.jsonl atomically via tmp file + rename so a crash
  mid-write can no longer truncate accumulated history

Plus collapse a few redundant fmt.Errorf wraps, drop a named Config type
that was used once, inline the single-call sortByStars helper with a
deterministic tiebreaker on canonical key, and use filepath.Base instead
of hand-rolling a basename.

Includes unit tests covering the 7d window edges, canonical-key
migration, atomic write path, malformed-line tolerance, YAML validation,
and markdown cell escaping.
2026-05-14 15:49:05 +07:00
tiennm99 e445ab91a2 fix(workflow): use -X theirs to resolve history.jsonl rebase conflicts 2026-05-13 14:47:49 +07:00
tiennm99 515315de78 fix(workflow): rebase-retry on push to handle concurrent run races 2026-05-13 14:45:59 +07:00
tiennm99 03704df0a5 feat: initial scaffold of awesome-coding-agents tracker
Go updater that fetches AI agent coding tool repo stats via GitHub GraphQL
(batched, one query), sorts by star count, appends a daily snapshot to
data/history.jsonl, and regenerates README.md from templates/readme.tmpl.
Daily workflow at .github/workflows/update.yml refreshes rankings and
commits changes. Seed list in data/agents.yml covers 19 tracked repos.
2026-05-13 14:43:35 +07:00