Repository navigation
Open-source licences in Credits, and the build stops on GPL code (#149) - #209
Merged
Merged
Conversation
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>
This was referenced Oct 27, 2026
ChefControl
marked this pull request as draft
October 27, 2026 20:55
…149-5b7b29 # Conflicts: # test/node.d.ts
…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
marked this pull request as ready for review
October 28, 2026 00:52
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.txt, written besideindex.html). Firebase's 8 packages share one line and one Apache 2.0 text. It's built from what's in the bundle, notpackage.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."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.APPROVEDinscripts/licences.tsis the owner's allowlist: a package name and the licence approved for it, with the reason.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 itsnode_modulespackage (the bundler's virtual helpers to Vite and Rolldown), readslicenseand 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 andlicences.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 Electronextranotices 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 toAPPROVED, keep Electron's licence files in the package, and open the credits links from the app. Details are in a comment on #159.Checked
tsc,test/licences.test.ts,test/ui.test.tsandtest/fonts.test.tslocally, after merging main (with Bundle the fonts, and draw every emoji as the game's own icon (#148) #210's fonts in Credits). The full suite runs on CI.licences.txtloads.🤖 Generated with Claude Code