Skip to content

Commit 1c982e6

Browse files
TMHSDigitalclaude
andcommitted
catalog: added dates survive category moves; a waived BY credit is quoted
- Six entries had `added` reset when their files moved category, so the feeds and "new" views showed them as new. Each is back to its file's first commit (luizmelo x3 and creature-2d-runtimes 2026-07-19, nasa-3d-resources 2026-07-19, nasa-image-video-library 2026-08-24). `npm run check-added` (site/check-added.mjs) follows renames through one git log and fails on any later date; CI runs it after unshallowing. - filmmusic-ende waived credit on CC-BY-4.0 with no quote. Evidence now quotes the "Attribution Optional" upgrade (read 2026-11-03), and V38 requires a dated waiver quote whenever attribution_required is false on a licence that requires credit. The same page's note that the composer "partly use[s] AI as a tool" is quoted and pointed at the AI guide. Closes #185 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LpkeXRUqm7oDedPDk3QWtK
1 parent 3c1bbca commit 1c982e6

16 files changed

Lines changed: 161 additions & 10 deletions

‎.github/workflows/ci.yml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ jobs:
4242

4343
- name: Validate catalog
4444
run: node site/validate.mjs
45+
# Needs history to follow renames; a pull request checkout is shallow.
46+
- name: Check added dates against git history
47+
run: |
48+
if [ "$(git rev-parse --is-shallow-repository)" = "true" ]; then
49+
git fetch --unshallow --no-tags origin
50+
fi
51+
node site/check-added.mjs
4552
- name: Build site and check pages
4653
run: node site/build.mjs
4754

‎CONTRIBUTING.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ To add a starter stack (one pick per need for a kind of game), follow [`stacks/R
4848
- `license`: the source's licence, written as one of the values in [`site/license-vocabulary.json`](site/license-vocabulary.json) (e.g. `CC0`, `CC-BY-3.0`, `SIL OFL`, `GPL-3.0-or-later`, `custom`, `varies`). If the source uses a licence the vocabulary lacks, add it there first, with its SPDX mapping and attribution class. For GPL, record `-only` or `-or-later` only when the project itself says which; otherwise use the bare `GPL-2.0` or `GPL-3.0`.
4949
- `license_spdx`: the SPDX identifier the vocabulary maps your `license` to. The validator rejects a missing one when a mapping exists, and an invented one when it does not.
5050
- `commercial`: `true` / `false` / `unknown` / `varies`. Use `varies` for aggregators where some files are commercial-ok and others are not. The site still shows these under Commercial OK, labeled **per-file review**, so they are not silently excluded and not silently treated as a blanket grant.
51-
- `attribution_required`: `true` / `false` / `unknown`. If the licence normally requires credit (CC-BY) but the publisher waives it, set `false` and add a `- Attribution waived:` line in Notes saying so.
51+
- `attribution_required`: `true` / `false` / `unknown`. If the licence normally requires credit (CC-BY) but the publisher waives it, set `false` and add a `- Attribution waived:` line in Notes saying so. The validator requires that waiver to be quoted on a dated Evidence line (V38).
5252
- `attribution_string`: the copy-paste credit line. Required when `attribution_required` is `true`; optional otherwise. Where the source's line is a template, mark each part the reader fills in with braces, as `"{title}" by Kevin MacLeod`; the site highlights `{…}` fields, and the copy buttons and CREDITS export tell the reader to fill them in. Other styles (`[Font name]`, `<family>`, a bare `MM/YYYY`, `(sound page URL)`) are rejected (V35), since they would be copied into a game unmarked.
5353
- `publisher`: optional. Name the **rights-holding publisher**, never the host. Set it whenever that publisher has more than one catalog entry, so each entry page names the same publisher and the validator can check that the group agrees; setting it on a publisher that currently has only one entry is also fine and saves a backfill later. Do not set it to a generic host or distributor (GitHub, Hugging Face, itch.io, OpenGameArt, the Internet Archive, Google Fonts) or to a distributor that does not hold the rights. Distinguish sibling organisations that are genuinely different rights holders: `blender.md` (the application, Blender Foundation) carries no `publisher`, while the asset bundles under `studio.blender.org` carry `Blender Studio`. Kenney, Quaternius, KayKit, LuizMelo, 0x72, Blender Studio, Material Maker, Alif Type, GGBotNet and 3dmodelscc0 are the largest groups in use today; treat that as illustrative, not as the permitted set.
5454
- `subcategories`: lower-case kebab-case (`base-meshes`, `field-recordings`). Reuse a value already in the catalog before inventing one, and do not add a variant of an existing value that differs only in plural or spelling. Where both forms were in use, the more common one was kept (`characters`, `environment`, `interior`, `tileset`, `vectors`, `pixel`, `impulse-responses`, `base-meshes`). Retired spellings are listed in [`site/value-aliases.json`](site/value-aliases.json), which the validator enforces (V19); add a line there when you merge two values.
@@ -63,7 +63,7 @@ To add a starter stack (one pick per need for a kind of game), follow [`stacks/R
6363
- `ue_versions`: optional, the Unreal Engine versions the source itself states, as `5.4`, `5.4-5.8` or `5.4+` (V23). Say in Notes where the range came from (README, `.uplugin`, release names, listing). Never infer it.
6464
- Unreal plugins use `subcategories: [unreal, ...]` and `formats: [unreal-plugin]`; Unreal projects and content packs use `formats: [Unreal]`. The validator rejects a GPL or LGPL licence on either, because the Unreal Engine EULA forbids combining the engine with that code (see [`docs/unreal.md`](docs/unreal.md)).
6565
- `url`: an `https://` address (`http://` only where the source has no https). Other schemes are rejected.
66-
- `added`: ISO date (`YYYY-MM-DD`) the entry joined the catalog. `npm run new-entry` fills it in; it never changes afterwards (V26: a real date, not in the future). The "new sources" feed and the home page's "New in the last 30 days" line key on it, so a re-verification sweep does not look like a wave of new entries.
66+
- `added`: ISO date (`YYYY-MM-DD`) the entry joined the catalog. `npm run new-entry` fills it in; it never changes afterwards (V26: a real date, not in the future). The "new sources" feed and the home page's "New in the last 30 days" line key on it, so a re-verification sweep does not look like a wave of new entries. Moving an entry to another category keeps its date: `npm run check-added` (run in CI) fails when `added` is later than the file's first commit, following renames.
6767
- `verified`: ISO date (`YYYY-MM-DD`) of your last license check. It must be a real date, no later than tomorrow in UTC, and no newer than the newest date in `## Evidence` (V8): a new `verified` date needs a new dated Evidence line from the same check. Dates inside URLs do not count as Evidence dates.
6868
- `status`: `active` | `needs-review` | `deprecated`. A `deprecated` entry needs a `- Deprecated:` line in its body giving the reason (V9). `active` means the licence, the commercial stance and the credit requirement are all settled: an `unknown` in `license`, `commercial` or `attribution_required` keeps an entry at `needs-review`. The validator enforces this (V14), and rejects `formats`, `subcategories` or `tags` values that differ only by case, punctuation or a trailing "s" from one already in use (V13).
6969
- No other keys. An unknown key is rejected with the nearest allowed one (V33): `id`, `name`, `url`, `publisher`, `category`, `subcategories`, `license`, `license_spdx`, `commercial`, `attribution_required`, `attribution_string`, `formats`, `tags`, `added`, `verified`, `status`, `engine_lock`, `ue_versions`, `camera_perspective`, `grid_dimensions`, `maintenance`, `hardware_tags`, `preview` and `limits`. A typo such as `engine-lock` would otherwise drop the fact silently. Block-list items are indented under their key (` - item`), and every key needs a space after its colon.

‎catalog/2d/luizmelo-evil-wizard.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ attribution_required: false
1212
formats: [PNG]
1313
tags: [pixel, platformer, boss]
1414
camera_perspective: side_scroller
15-
added: 2026-08-25
15+
added: 2026-07-19
1616
verified: 2026-08-24
1717
status: active
1818
---

‎catalog/2d/luizmelo-martial-hero.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ attribution_required: false
1212
formats: [PNG]
1313
tags: [pixel, platformer, player]
1414
camera_perspective: side_scroller
15-
added: 2026-08-25
15+
added: 2026-07-19
1616
verified: 2026-08-24
1717
status: active
1818
---

‎catalog/2d/luizmelo-monsters-creatures-fantasy.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ attribution_required: false
1212
formats: [PNG]
1313
tags: [pixel, platformer, spritesheet]
1414
camera_perspective: side_scroller
15-
added: 2026-08-25
15+
added: 2026-07-19
1616
verified: 2026-08-24
1717
status: active
1818
---

‎catalog/3d/nasa-3d-resources.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ attribution_required: true
1111
attribution_string: "NASA 3D Resources / NASA. Suggested format; NASA asks to be acknowledged as the source and forbids implied endorsement."
1212
formats: [OBJ, STL, various]
1313
tags: [government, space, low-provenance-risk]
14-
added: 2026-09-26
14+
added: 2026-07-19
1515
verified: 2026-07-19
1616
status: active
1717
---

‎catalog/audio/filmmusic-ende.md‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ attribution_required: false
1111
formats: [MP3, WAV]
1212
tags: [music, no-nd, games-ok]
1313
added: 2026-07-19
14-
verified: 2026-08-24
14+
verified: 2026-11-03
1515
status: active
1616
---
1717

@@ -24,13 +24,16 @@ Royalty-free music (formerly FilmMusic.io; now ENDE.APP). Standard grant is **CC
2424
- Browse/download: [ende.app](https://ende.app/en) / filmmusic.io redirects
2525
- Attribution waived: the publisher layers an "Attribution Optional" upgrade over the CC BY 4.0 grant, which is why `attribution_required` is false on a CC-BY license
2626
- Credit appreciated: `Music by Sascha Ende at ende.app`. Offered, not owed
27+
- AI: the licence page's disclaimer says the composer "partly use[s] AI as a tool" without saying which tracks or how. If you ship on Steam, weigh that for the Content Survey's AI section ([AI assets guide](../../docs/ai-assets.md))
2728
- Avoid ND music elsewhere — see high-risk
2829
- Content ID: the standard license page (read 2026-09-23) forbids anyone from registering these tracks with "YouTube Content ID or similar systems" and explicitly allows monetised YouTube videos and Twitch streams. It does not say in so many words that the author never registers them, but it treats registration as the thing no one should do
2930

3031
## Evidence
3132

3233
- Live [Standard license](https://ende.app/en/standard-license) (2026-08-24): "CC BY 4.0"
3334
- Same page (2026-08-24): "use it in videos, podcasts, or games. Commercially? Yes, absolutely!"
35+
- Same page (2026-11-03), the waiver: "CC BY 4.0 – but with an upgrade from me."; "My gift to you: "Attribution Optional""; "You do NOT have to credit me."; and under Credit: "If you have room: credit me ("Music by Sascha Ende at ende.app"). I'd really appreciate it! If not: that's fine too."
36+
- Same page (2026-11-03), disclaimer: "since I'm only human (and partly use AI as a tool), I cannot give a 100% worldwide guarantee"
3437

3538
## Related
3639

‎catalog/tools/creature-2d-runtimes.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ commercial: true
1010
attribution_required: false
1111
formats: [Godot]
1212
tags: [2d, soft-body, godot]
13-
added: 2026-08-25
13+
added: 2026-07-19
1414
verified: 2026-07-19
1515
status: active
1616
maintenance: inactive

‎catalog/video/nasa-image-video-library.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ attribution_required: true
1111
attribution_string: "NASA"
1212
formats: [JPG, MP4, WAV, TIFF]
1313
tags: [government, space, audio, video, endorsement-trap]
14-
added: 2026-09-26
14+
added: 2026-08-24
1515
verified: 2026-10-04
1616
status: needs-review
1717
---

‎package.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
"scripts": {
1010
"test": "node site/checks.test.mjs && node site/lib/lib.test.mjs",
1111
"validate": "node site/validate.mjs",
12+
"check-added": "node site/check-added.mjs",
1213
"build": "node site/build.mjs",
13-
"check": "npm test && npm run validate && npm run build",
14+
"check": "npm test && npm run validate && npm run check-added && npm run build",
1415
"counts": "node site/sync-counts.mjs",
1516
"new-entry": "node site/new-entry.mjs",
1617
"links": "node site/check-links.mjs",

0 commit comments

Comments
 (0)