Skip to content

Repository layoutΒΆ

It looks like you're about to clone something. Here's the map.
.
β”œβ”€β”€ pet.json                     Manifest (id, name, spriteVersionNumber: 2)
β”œβ”€β”€ spritesheet.webp             The v2 atlas: 1536Γ—2288, 8Γ—11 cells of 192Γ—208
β”œβ”€β”€ SHA256SUMS                   Checksums of the two runtime files
β”œβ”€β”€ VERSION                      Single source of truth for the version (1.1.0)
β”œβ”€β”€ source/
β”‚   β”œβ”€β”€ frames/<state>/NN.png    Normalized per-state frames (the remixable bit)
β”‚   └── row-strips/*.png         Selected generated source strips incl. look rows
β”œβ”€β”€ qa/                          Contact sheet, look-direction sheet, GIF previews,
β”‚                                blind/semantic/continuity/chroma JSON reports
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ install.sh               Bootstrap installer (checkout + curl | sh modes)
β”‚   β”œβ”€β”€ validate.py              Contract validator (runs in CI)
β”‚   └── build-v1-spritesheet.py  Crops the v1 (9-row) sheet for ChatGPT web upload
β”œβ”€β”€ packaging/
β”‚   β”œβ”€β”€ bin/clippy-pet           POSIX sh CLI shared by every installer
β”‚   β”œβ”€β”€ share/                   man page, .desktop launcher, autostart, AppStream, icon
β”‚   β”œβ”€β”€ dist/make-tarballs.sh    Reproducible runtime tarballs
β”‚   β”œβ”€β”€ linux/                   nFPM config (deb/rpm/apk/arch), Debian copyright/changelog
β”‚   β”œβ”€β”€ macos/                   .app/.pkg/.dmg build, postinstall, distribution.xml
β”‚   └── keys/                    Public GPG + apk signing keys
β”œβ”€β”€ docs/                        This site (MkDocs Material); docs/requirements.txt
β”œβ”€β”€ mkdocs.yml Β· overrides/      Site config and theme overrides
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ validate.yml             Contract validation + old-name guard
β”‚   β”œβ”€β”€ packaging-ci.yml         Lint, build, smoke-test packages in containers + macOS
β”‚   β”œβ”€β”€ release.yml              Tag β†’ build, checksum, sign, attest, GitHub Release
β”‚   └── docs.yml                 Build the site; deploy to gh-pages preserving repo paths
β”œβ”€β”€ CHANGELOG.md Β· CITATION.cff Β· CONTRIBUTING.md Β· CODE_OF_CONDUCT.md
β”œβ”€β”€ GOVERNANCE.md Β· SECURITY.md Β· SUPPORT.md Β· AUTHORS.md Β· NOTICE.md Β· LICENSE
└── Makefile                     validate Β· checksums Β· lint Β· dist Β· v1 Β· docs Β· docs-serve

Why the tarball is 1.5 MB and the repo is 19 MBΒΆ

source/ and qa/ are the evidence and the raw material: hundreds of PNG frames, previews, and reports. Users don't need them, so .gitattributes marks both export-ignore and every installer pulls the runtime tarball built by packaging/dist/make-tarballs.sh (CLI, payload, man page, desktop bits, licence, notice) instead of GitHub's auto-generated source archive.

The gh-pages branchΒΆ

This site is published to the gh-pages branch, which also hosts things that aren't the site: install.sh, keys/, and (planned) the apt/, rpm/, alpine/, conda/, flatpak/ repositories. The docs workflow syncs the built site into the branch while excluding those paths, so a docs deploy can never delete a package repo. Details in the packaging runbook.

BranchesΒΆ

GitFlow: develop is the default and integration branch; main holds releases only; tags vX.Y.Z on main trigger the release workflow. See Contributing.