Skip to content

GitAPITaker: privacy-first, keyboard-driven Git hosting API inspector - #1

Open
arena-ai-coding-agent[bot] wants to merge 4 commits into
mainfrom
arena/01a00a77-gitapi-dev
Open

GitAPITaker: privacy-first, keyboard-driven Git hosting API inspector#1
arena-ai-coding-agent[bot] wants to merge 4 commits into
mainfrom
arena/01a00a77-gitapi-dev

Conversation

@arena-ai-coding-agent

Copy link
Copy Markdown

What this is

Implements GitAPITaker, a static, privacy-first, keyboard-driven developer tool that resolves Git hosting URLs into provider REST API endpoints and inspects the responses directly in the browser. No backend, no proxy, no telemetry, no build step.

Highlights

  • Provider adapter architecture: registry (detection) is separated from parsing and endpoint resolution. GitHub, GitLab and Gitea adapters own all mapping rules — including non-1:1 cases (GitLab /users?username= lookup, URL-encoded nested project paths, Gitea's plural /releases/tags/{tag} route, verified against Gitea's router).
  • Self-hosted instances: register Gitea/Forgejo/GitLab instances with custom API bases; honest reachability probing.
  • Response Inspector: LIVE/CACHED/STALE states always labeled (text, not color alone), JSON tree / faithful RAW / searchable HEADERS / REQUEST views, copy-as-cURL, honest error model (provider bodies preserved unchanged, interpretations clearly labeled).
  • Request Guard + defensive caching: transparent suppression with visible counters, structured localStorage records, snapshot ring powering Response Diff, offline inspection of cached records.
  • Endpoint Explorer driven by adapter capability metadata; local history; shareable instruction-only URLs.
  • Keyboard-first: Ctrl/Cmd+K palette, tabs 1–4, r/y/s/d shortcuts, roving lists, ARIA tabs, aria-live announcements, reduced-motion support.
  • Tests: 144 node:test cases (unit + happy-dom boot test) with mocked fetch — no live API calls, no real accounts.

CI / Pages

The GitHub Actions workflow (pages.yml: tests on Node 20/22 + static Pages deploy) is written, but the automation token lacks the GitHub workflows scope, so the file could not be pushed — see README “Setup note”. A maintainer with workflow permissions needs to commit .github/workflows/pages.yml once.

Verified

  • npm test: 144/144 pass (resolver, all three providers, cache, guard, share URLs, error classification, request layer, diff, history, instances, DOM boot).
  • Static serving verified locally; all asset paths and routing are relative/hash-based for GitHub Pages subpath deploys.

flessan and others added 2 commits August 16, 2026 12:56
… inspector

Static, dependency-free frontend (GitHub Pages deployable) that resolves
GitHub/GitLab/Gitea hosting URLs to provider REST endpoints and inspects
responses directly from the browser.

- Provider adapter architecture: registry (detection) + per-provider
  parse/resolve/related rules (github, gitlab, gitea/forgejo), custom
  self-hosted instance support with honest API probing
- Response inspector: JSON tree, faithful RAW, searchable HEADERS,
  REQUEST view with copy-as-cURL; LIVE/CACHED/STALE states always labeled
- Request layer: direct fetch, credentials omitted, injectable for tests
- Defensive localStorage cache (structured records, TTL, snapshot ring),
  transparent Request Guard (cooldown suppression with visible counters),
  offline fallback, Response Diff, local history
- Endpoint Explorer driven by adapter capability metadata
- Hash routing, shareable instruction-only URLs, command palette (Ctrl/Cmd+K),
  full keyboard shortcuts, ARIA tabs/roving lists/live regions
- Providers/Documentation page (official docs links + capability tables),
  Giscus-based Community page, About/Security documentation
- Tests: 144 node:test cases (unit + DOM boot) with mocked fetch/fixtures
- GitHub Actions: test on Node 20/22, static deploy to GitHub Pages

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 17, 2026

Copy link
Copy Markdown

Deploying gitapi with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9bca962
Status: ✅  Deploy successful!
Preview URL: https://f7ec15bc.gitapi-74e.pages.dev

View logs

flessan and others added 2 commits August 17, 2026 08:03
…ons, change detection, theme toggle

UI/UX redesign
- 'Lab instrument' identity: amber-on-charcoal (light theme supported),
  mono-forward labels, box-drawn sections, terminal prompt command strip,
  metadata rail + response pane layout, no emoji/web fonts/gradients
- Resolution pipeline tracker: DETECT -> PARSE -> RESOLVE -> FETCH rendered
  with actual values per inspection; failures mark the exact broken stage;
  suppressed/cached requests show the cache path instead of a fake fetch

New features
- Pagination navigation (GitHub/Gitea Link header, GitLab x-* headers),
  Prev/Next buttons, counts only when the provider reports them
- JSON view: key/value search with auto-expanding highlights + match count;
  click a key to copy its JSONPath, click a value to copy it
- Actionable interpretations: 404 user -> 'try as organization' button,
  unsupported host -> 'register a self-hosted instance' jump
- Change detection on refresh: auto-diff vs previous capture with a
  'response changed since last capture' note linking into Response Diff
- Theme cycle (auto/dark/light), persisted locally, shortcut 't'

Core
- core/pagination.js + core/jsonsearch.js (pure, tested)
- ResolverError now carries pipeline stage + partial context annotations
- interpretation quickActions

Tests: 167 pass (new: pagination, jsonsearch, theme, DOM coverage of the
pipeline/search/theme/staged errors)

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
…lier UI

Rebuild the visual layer around M3 patterns using the official baseline
tonal palette — implemented in pure CSS with zero component libraries,
zero CDN requests and zero web fonts, so the privacy model is untouched.

- Navigation rail with icons (desktop) + bottom navigation (mobile)
- M3 buttons (filled/tonal/outlined/text, pill + state layers), elevated &
  outlined cards, chips, filled text field, primary tabs, rounded dialogs,
  and a snackbar for copy/theme feedback
- Simplified hierarchy: one inspect card, pipeline as colored step chips,
  status card beside the response, M3 type scale, generous spacing
- All v0.2 capability retained: pipeline tracker, pagination, JSON search &
  path copy, quick actions, change detection, diff, guard transparency,
  themes, keyboard shortcuts

Tests: 167 pass (DOM boot test re-verified against the new markup)

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant