Skip to content

Open-source licences in Credits, and the build stops on GPL code (#149) - #209

Merged
ChefControl merged 4 commits into
mainfrom
claude/licences-list-149-5b7b29
Oct 28, 2026
Merged

ChefControl merged 4 commits into
mainfrom
claude/licences-list-149-5b7b29

Conversation

@ChefControl

@ChefControl ChefControl commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Part of #149 (plan item 1.6). The web build's part is done; the Electron part waits for the wrapper (#159), and is written down there.

What

  • Licences list in the game. Settings → Credits & Copyrights ends with "Open-source licences": one line per package the build bundled (name, version, licence, a link to its site) and a link to The full licence texts (licences.txt, written beside index.html). Firebase's 8 packages share one line and one Apache 2.0 text. It's built from what's in the bundle, not package.json: dev tools never show, and the Steam build without Firebase (Steam: one build switch for web and Steam #160) drops it by itself. The dev server shows "Listed in the built game."
  • Build check. npm run build (CI's build job) fails on a bundled package under a GPL, LGPL or AGPL licence, or one it can't read, or one with no licence text. APPROVED in scripts/licences.ts is the owner's allowlist: a package name and the licence approved for it, with the reason.
  • Ready for Electron. licences({ extra }) takes the wrapper's own notices (Electron, Chromium, ffmpeg), checked the same way.

Today's list: firebase 12.19.0 (8 packages, Apache-2.0), html2canvas 1.4.1 (MIT), idb 7.1.1 (ISC), re2js 2.8.6 (MIT), three 0.186.1 (MIT), plus Vite's preload helper and Rolldown's runtime (both MIT), which also end up in the bundle.

How

  • scripts/licences.ts: a small Vite plugin, no new dependency. It maps each bundled module to its node_modules package (the bundler's virtual helpers to Vite and Rolldown), reads license and the LICENSE/COPYING/NOTICE files, and checks the SPDX expression ("A OR B" passes if either does; "A AND B" needs both).
  • scripts/licences/Apache-2.0.txt: Firebase's packages ship no LICENSE file, so the standard text is used for them.
  • README.md, LICENSE, docs/game.md: the fonts are under the OFL (they came in with Bundle the fonts, and draw every emoji as the game's own icon (#148) #210 and weren't mentioned yet), and the open-source libraries built into the game keep their own licences, listed in Credits and licences.txt. The guide explains the list and the GPL check.
  • index.html: one heading and a placeholder comment in the credits, in the existing credits style. No design-system change (no new token, component or rule).
  • test/licences.test.ts: real Vite builds of a tiny game: a GPL, an LGPL and an unknown package each fail the build; an approved one ships; the Electron extra notices are checked too.

Left for #159 (Electron wrapper)

Hand in Electron's and Chromium's notices and ffmpeg (LGPL) as extra, get Valve's agreement for ffmpeg and add it to APPROVED, keep Electron's licence files in the package, and open the credits links from the app. Details are in a comment on #159.

Checked

🤖 Generated with Claude Code

The build looks at which packages' code it put in the bundle, writes their
licence texts to licences.txt beside the game, and lists them under
Settings → Credits & Copyrights. It fails on a GPL, LGPL or AGPL licence,
or one it can't read, unless the owner approved it (APPROVED in
tools/licences.ts). The Electron build can hand in its own notices
(Electron, Chromium, ffmpeg) as extra ones, checked the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ChefControl and others added 2 commits October 28, 2026 02:14
…e say what's whose (#149)

scripts/ is where main's build tools now live (the fonts' and the icons'),
so licences.ts and its standard texts move there. README and LICENSE now
say the fonts are OFL and that the open-source libraries built into the game
keep their own licences, listed in Credits and licences.txt; docs/game.md
explains the list and the build's GPL check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ChefControl
ChefControl marked this pull request as ready for review October 28, 2026 00:52
@ChefControl
ChefControl merged commit d099926 into main Oct 28, 2026
7 checks passed
@ChefControl
ChefControl deleted the claude/licences-list-149-5b7b29 branch October 28, 2026 01:01
ChefControl added a commit that referenced this pull request Oct 28, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ChefControl added a commit that referenced this pull request Oct 28, 2026
…icence checks side by side (#215)

* Legal checks as repo skills: legals-update runs privacy, Steam and licence checks side by side

Four skills under .claude/skills/. legals-privacy compares a feature with the
privacy notice (public/privacy.html), its short version in Settings and the
report dialog's "What's sent" list. legals-steam compares it with the content
survey answers and store texts agreed on #151 and the prep page. legals-licenses
checks every new package and asset's licence and its credit under Credits &
Copyrights, and flags recordings for a listen. legals-update pins one target and
runs the three at once in subagents, then puts their reports together. Each
reports and proposes; none edits unless the owner asks. CLAUDE.md points to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* legals-privacy: #214 is on main, so point straight at #privacyCard and the scoreboards switch

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* legals-licenses: #209 is on main, so read scripts/licences.ts there

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant