BlueGit

golden-age paperdoll-renderer

design: v0.1.0 release onto the existing tag + AUR paperdoll-renderer-bin

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 6 days ago

Hash
6789a60e7b4e9ce29fbec72ef3887688c11b0a28
Parent
c3df4bd7
Pipeline
Passed
1 file changed +8 −0
design.md +8 −0
@@ -541,3 +541,11 @@ glTF texture coordinates have their origin at the top-left of the image (v = 0 i
541 541 ## Decision 2026-11-07 (Tim t1009u, licence approved by Tim): bundled default starter bodies
542 542
543 543 Tim's Sketchfab models "Animated walking Male Base Mesh" and "Animated Female Base Mesh" (author assetfactory, Sketchfab Standard licence, approved by Tim) are bundled byte-exact in `assets/default-bodies/{male,female}/` (`.gltf` with the buffer uri fixed by Tim to `male.bin`/`female.bin`, `.bin`, `textures/`, `license.txt`). **Nieuw project** (parent folder + name) copies them into `<project>/assets/body/male/` and `female/` with their `license.txt` and sets them as the male and female body, so a new project renders immediately. The files are embedded in the executable (`include_bytes!`), so every package (AppImage, deb, Arch, AUR, Windows zip) carries them without a separate data path; packages also ship `THIRD_PARTY_NOTICES.md`. The README has an attribution section. The CC0 synthetic test bodies stay in `tests/fixtures/bodies/` and remain the seed for tests, examples and `--preview-fixture`.
544
545 ## Decision 2026-11-07 (Tim, v0.1.0 release): publish onto the existing tag, then the AUR
546
547 Rechecked 7 November 2026 against the live `GET /api/v1/openapi.json` and BlueGit master (`release_existing_tag.go`): BlueGit now has `POST /api/v1/repos/{owner}/{repo}/releases/{tag}/assets`, which publishes a new release for a git tag that already exists. It is create-only (an existing release is 409, `replace` is rejected), never creates, moves or deletes the tag, accepts only a job token of a push pipeline of `refs/tags/{tag}`, and takes its assets from successful jobs of that same pipeline. This lifts the limit in section 15. The tag pipeline's `release` job calls this route and nothing else, with the AppImage, deb, Arch package, Windows zip and `SHA256SUMS` as assets (`paperdoll-renderer-<tag>-…`); it never sends `replace` and never calls the tag-creating release route.
548
549 Release tags are annotated `vX.Y.Z` tags pushed by hand on a green master; `v*` is a protected tag pattern, so the protected CI variables are available to the tag pipeline only.
550
551 A `publish:aur` job after `release` (allow_failure, resource_group aur, Arch image) copies the approach of timfa/legacy-cycles (`aur-ssh-setup.sh` + `publish-aur.sh`): AUR package `paperdoll-renderer-bin` (`packaging/aur/paperdoll-renderer-bin/PKGBUILD`), source = the release's `.deb` asset, sha256 of exactly that downloaded asset, pkgver from the tag, `.SRCINFO` via `makepkg --printsrcinfo`, pushed to `ssh://aur@aur.archlinux.org/paperdoll-renderer-bin.git`. It uses exactly the protected variables `AUR_SSH_PRIVATE_KEY_B64`, `AUR_GIT_AUTHOR_NAME` and `AUR_GIT_AUTHOR_EMAIL`. The PKGBUILD installs the binary, the `.desktop` file, the hicolor icons, the `.ppd` MIME package (`paperdoll-project.xml`), metainfo, LICENSE and THIRD_PARTY_NOTICES; it conflicts with/provides `paperdoll-renderer`.
@@ -541,3 +541,11 @@ glTF texture coordinates have their origin at the top-left of the image (v = 0 i
541## Decision 2026-11-07 (Tim t1009u, licence approved by Tim): bundled default starter bodies
541## Decision 2026-11-07 (Tim t1009u, licence approved by Tim): bundled default starter bodies
542
542
543Tim's Sketchfab models "Animated walking Male Base Mesh" and "Animated Female Base Mesh" (author assetfactory, Sketchfab Standard licence, approved by Tim) are bundled byte-exact in `assets/default-bodies/{male,female}/` (`.gltf` with the buffer uri fixed by Tim to `male.bin`/`female.bin`, `.bin`, `textures/`, `license.txt`). **Nieuw project** (parent folder + name) copies them into `<project>/assets/body/male/` and `female/` with their `license.txt` and sets them as the male and female body, so a new project renders immediately. The files are embedded in the executable (`include_bytes!`), so every package (AppImage, deb, Arch, AUR, Windows zip) carries them without a separate data path; packages also ship `THIRD_PARTY_NOTICES.md`. The README has an attribution section. The CC0 synthetic test bodies stay in `tests/fixtures/bodies/` and remain the seed for tests, examples and `--preview-fixture`.
543Tim's Sketchfab models "Animated walking Male Base Mesh" and "Animated Female Base Mesh" (author assetfactory, Sketchfab Standard licence, approved by Tim) are bundled byte-exact in `assets/default-bodies/{male,female}/` (`.gltf` with the buffer uri fixed by Tim to `male.bin`/`female.bin`, `.bin`, `textures/`, `license.txt`). **Nieuw project** (parent folder + name) copies them into `<project>/assets/body/male/` and `female/` with their `license.txt` and sets them as the male and female body, so a new project renders immediately. The files are embedded in the executable (`include_bytes!`), so every package (AppImage, deb, Arch, AUR, Windows zip) carries them without a separate data path; packages also ship `THIRD_PARTY_NOTICES.md`. The README has an attribution section. The CC0 synthetic test bodies stay in `tests/fixtures/bodies/` and remain the seed for tests, examples and `--preview-fixture`.
544
545## Decision 2026-11-07 (Tim, v0.1.0 release): publish onto the existing tag, then the AUR
546
547Rechecked 7 November 2026 against the live `GET /api/v1/openapi.json` and BlueGit master (`release_existing_tag.go`): BlueGit now has `POST /api/v1/repos/{owner}/{repo}/releases/{tag}/assets`, which publishes a new release for a git tag that already exists. It is create-only (an existing release is 409, `replace` is rejected), never creates, moves or deletes the tag, accepts only a job token of a push pipeline of `refs/tags/{tag}`, and takes its assets from successful jobs of that same pipeline. This lifts the limit in section 15. The tag pipeline's `release` job calls this route and nothing else, with the AppImage, deb, Arch package, Windows zip and `SHA256SUMS` as assets (`paperdoll-renderer-<tag>-…`); it never sends `replace` and never calls the tag-creating release route.
548
549Release tags are annotated `vX.Y.Z` tags pushed by hand on a green master; `v*` is a protected tag pattern, so the protected CI variables are available to the tag pipeline only.
550
551A `publish:aur` job after `release` (allow_failure, resource_group aur, Arch image) copies the approach of timfa/legacy-cycles (`aur-ssh-setup.sh` + `publish-aur.sh`): AUR package `paperdoll-renderer-bin` (`packaging/aur/paperdoll-renderer-bin/PKGBUILD`), source = the release's `.deb` asset, sha256 of exactly that downloaded asset, pkgver from the tag, `.SRCINFO` via `makepkg --printsrcinfo`, pushed to `ssh://aur@aur.archlinux.org/paperdoll-renderer-bin.git`. It uses exactly the protected variables `AUR_SSH_PRIVATE_KEY_B64`, `AUR_GIT_AUTHOR_NAME` and `AUR_GIT_AUTHOR_EMAIL`. The PKGBUILD installs the binary, the `.desktop` file, the hicolor icons, the `.ppd` MIME package (`paperdoll-project.xml`), metainfo, LICENSE and THIRD_PARTY_NOTICES; it conflicts with/provides `paperdoll-renderer`.