Skip to content

Stop tracking sprite GIFs — itch.io licenses forbid redistribution#26

Merged
json9512 merged 1 commit into
mainfrom
fix/issue-12-sprite-licensing
May 12, 2026
Merged

Stop tracking sprite GIFs — itch.io licenses forbid redistribution#26
json9512 merged 1 commit into
mainfrom
fix/issue-12-sprite-licensing

Conversation

@json9512
Copy link
Copy Markdown
Owner

Summary

  • Untracks 42 sprite .gif files (24 in Sources/UI/Sprites/Assets/, 18 in server/sprite-assets/peak/). All three packs come from itch.io with licenses that permit "use in your commercial project" but explicitly prohibit redistributing the raw assets — incompatible with hosting them in a public MIT-licensed source repo.
  • git rm --cached keeps the files on disk so existing local builds still find the sprites; .gitignore prevents accidental re-add.
  • Replaces the misleading author: "Community", license: "CC0" literal in SpritePackManager.loadBuiltinGIF with per-pack author/license strings (RiLi_XL / ToffeeCraft), supplied by each loader. The hard-coded "CC0" was the issue's specific lie.
  • New docs/sprites.md documents the legal situation, lists the three itch.io URLs, and explains the filename convention for anyone building from source.
  • App handles a no-builtin-packs state gracefully (the loader guard already returns nil per-pack; downstream activePack? is optional-chained everywhere), so a clean clone builds and runs — just without mascots.

License findings (per the itch.io product pages)

Pack Creator License (verbatim)
otter RiLi_XL "Free to use in any commercial projects. Please do not redistribute this asset pack."
sleepycat ToffeeCraft "For personal or commercial use. It can be used and edit freely. Not redistribute or resell this assets."
peak quipinny No license stated — defaults to all rights reserved under copyright law.

Test plan

  • swift package describe parses Package.swift cleanly with the new exclude entry.
  • Local Sources/UI/Sprites/Assets/*.gif still exist on disk (24 files) so existing builds still find sprites.
  • git ls-files Sources/UI/Sprites/Assets/ server/sprite-assets/ returns only README.md.
  • Manual: SpritePackManager.loadBuiltinGIF's guard sheets.count == MascotMood.allCases.count else { return nil } already handles the missing-asset case; activePack is consistently optional-chained downstream (Sources/AppUI/SettingsMascotSection.swift:21,74,95,132).

Closes #12.

🤖 Generated with Claude Code

The 42 sprite GIFs under Sources/UI/Sprites/Assets/ and server/sprite-
assets/peak/ came from three itch.io packs whose licenses all permit
"use in your commercial project" but explicitly forbid redistributing
the raw assets:

- otter      → RiLi_XL     — "Free to use in any commercial projects.
                              Please do not redistribute this asset pack."
- sleepycat  → ToffeeCraft — "Not redistribute or resell this assets."
- peak       → quipinny    — no license stated (= all rights reserved
                              by default).

Shipping the GIFs inside the compiled App Store binary is fine (that's
the licensed use). Hosting them in a public MIT-licensed source repo
is redistribution, which violates all three. Adding attribution does
not legalize redistribution under these terms.

This change:
- Gitignores `Sources/UI/Sprites/Assets/*.gif` and the entire
  `server/sprite-assets/` tree; `git rm --cached` removes the 42 files
  from tracking without deleting them from local working trees so
  existing builds keep finding the sprites.
- Replaces the misleading hard-coded `author: "Community", license:
  "CC0"` in SpritePackManager.loadBuiltinGIF with per-pack author /
  license strings supplied by each loader, honestly attributing each
  pack to its real creator and itch.io URL. Local builds that have the
  sprites continue to surface the credits in the sprite manifest.
- Documents the situation in docs/sprites.md: explains the legal
  reasoning, lists the three source URLs, and tells builders-from-
  source how to recreate the asset layout for their own build.
- The app already handles the no-builtin-packs case gracefully
  (SpritePackManager returns no built-in loaders → activePack is nil
  → mascot surfaces render in their fallback state), so a clean clone
  builds and runs without the assets — just without mascots.

Closes #12.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@json9512 json9512 merged commit 53883b9 into main May 12, 2026
@json9512 json9512 deleted the fix/issue-12-sprite-licensing branch May 12, 2026 16:48
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.

[Medium] Sprite GIFs ship without attribution or per-asset licenses

1 participant