# Git Gallery

- Author: William Welsh (usr-wwelsh)
- Source: https://github.com/usr-wwelsh/git-gallery
- Commit: 76c8d646e61d42bf3c72ed1731a3b25d9d9c1fd5 (2026-02-23)
- Built from source: `npm ci && node scripts/cache-github.js && npx vite build --base ./` (vite 5, three 0.170.0 from package-lock.json); dist/ copied here
- Licence: MIT (./LICENSE). Bundled: three.js 0.170.0 (MIT) and its Helvetiker Bold typeface (MgOpen/MAGENTA licence, permissive) — ./LICENSE-third-party.txt
- Vendored files: index.html, assets/ (build output), LICENSE

## Data snapshot (replaces the live GitHub API)
- The repo's own build-time cache (scripts/cache-github.js → src/github-data.json, compiled into the bundle) was run on 2026-10-29
  for the GitHub user **Exist-DireRaven** (the Web Curio account): 7 public non-fork repositories with their metadata,
  language byte counts, top-level file lists, 10 latest commit subjects, READMEs, and the contribution calendar of the last year
  (from github-contributions-api.jogruber.de, as the script does). A readable copy is ./github-data.snapshot.json.
- This is public metadata of the museum's own repositories, published with the owner's consent. Images inside the READMEs were
  replaced by "(image omitted in the offline copy)" so the page does not fetch raw.githubusercontent.com.
- With the cache present the app makes no API calls (github.js returns the cached data for every request).

## Added by Web Curio
stage.html, this file, LICENSE-third-party.txt, github-data.snapshot.json, src-changes/controls.js (the edited source file, for reference).

## Modifications to the original (source edits before building)
- src/main.js: `CONFIG.username` set to 'Exist-DireRaven' (the documented way to point the gallery at a profile).
- src/github-data.json: generated by the repo's own script, then README images removed (see above).
- src/controls.js: drag-to-look fallback. The museum shows the page in a sandboxed iframe without `allow-pointer-lock`, so
  `requestPointerLock` is refused; the controls then act as "locked" without the browser lock: WASD/arrows move, dragging with the
  mouse looks around, Esc pauses. With pointer lock available, behaviour is unchanged.
- stage.html: strict CSP + sandbox shim (stage.py, no other edits). The "Made with git-gallery by usr-wwelsh" badge links to GitHub as in the original.
