add: a 3D model of the Mark III, sealed, shown on request - #18
Merged
Merged
Conversation
The Mark III entry gains a "View in 3D" control. The model is "Iron Man" by -LUCIFER- on CGTrader, under its Royalty Free License (no AI), which allows it to be shown inside a work and forbids handing the file out in the form it was downloaded. A public repository hands out every file in it, so the model is committed sealed: reduced to half its faces with no visible loss, quantised, gzipped and encrypted with AES-256-GCM by scripts/encrypt-model.mjs. The key lives only in the production environment as PHASE_ZERO_MODEL_KEY. CI and every fork build without it, and their Mark III reads exactly as it did before. The page is complete without the model. The button stays hidden until the browser has shown it can open one, and nothing is downloaded until it is pressed: the set page gains 3 KB, and the viewer with three.js is a separate chunk fetched on the first press, from this origin only. three.js is a dependency bundled by the build, not a third-party script. It is drawn in the site's own material: the share card's control in the piece's colour, a set card's panel with a lit top edge, a transparent canvas with no floor or backdrop, the rim light read from --piece-colour and the glow from --tint-blue, re-read when the theme changes. Turn, lights and take apart are an ordinary switch. It holds still under reduced motion, does not trap the page's scroll, and draws only while open and on screen. The credit is data, in the piece's new model field, and is shown under the model in both languages. The content security policy allows connect-src 'self' for the one request the site now makes. Rule 5 in CLAUDE.md, CONTRIBUTING.md and DESIGN.md records the exception and every condition it comes with.
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.
What this adds
The Mark III entry in the Iron Man armour collection gains a "View in 3D" control. Pressed, it opens a model of the armour that can be turned, lit and taken apart, with its credit underneath.
The model and its licence
The model is "Iron Man" by -LUCIFER- on CGTrader, under the Royalty Free License (no AI). That licence allows the model to be shown inside a work and forbids handing the file out in the form it was downloaded. A public repository hands out every file in it, so the model is committed sealed:
scripts/encrypt-model.mjsproductionenvironment asPHASE_ZERO_MODEL_KEY, read by the deploy workflow's validate and build stepsCI and every fork build without the key, and their Mark III reads exactly as it did before. A missing key is not an error.
The credit is data, in the piece's new
modelfield, and is shown in both languages. The CGTrader page was opened by the maintainer; automated requests to it are blocked, so it could not be fetched from here.Weight and behaviour
Design
Drawn in the site's own material, recorded in DESIGN.md as Piece Model: the share card's control in the piece's colour, a set card's panel with a lit top edge, a transparent canvas with no floor or backdrop, rim light from
--piece-colourand glow from--tint-blue, re-read when the theme changes. Turn, lights and take apart are an ordinary switch.Policy changes
connect-src 'self', for the one request the site now makes.Checked
npm run validatepasses. The page was opened in a browser in English with the night theme and in Italian with the day theme, the button pressed, the model opened, and take apart tried.Rollback
Merge with a merge commit and keep the branch. Reverting the merge commit removes everything here, and the entry returns to what it was.