feat(community-poi): galleries for harbour and maze, scaffold the megabase - #331
Open
TheMeinerLP wants to merge 7 commits into
Open
feat(community-poi): galleries for harbour and maze, scaffold the megabase#331TheMeinerLP wants to merge 7 commits into
TheMeinerLP wants to merge 7 commits into
Conversation
B3nNy supplied screenshots for both projects along with BlueMap links marking where they sit. The harbour had no images at all. It now leads with two shots of the Litematica hologram standing over the empty site, which is what "planning" actually looks like, followed by the two reference sheets the schematic is modelled on. Those two are someone else's renders, not builds on our server, and both the caption and the alt text say so — a reader should never mistake them for a picture of the place. Its coordinates move to -574 / 9 / -239, the location B3nNy pointed at, and the schematic is replaced by the newer 359 KB export with its origin updated to match. The setup note asks for a check against the marker on site, because the origin was derived from a map link rather than measured. The maze gains three progress shots: down between the walls with the marker line, the night overview inside its Litematica frame, and the aerial view of the finished floor pattern. Images go under /images/, not /community-poi/. The Cloudflare image provider fetches from img.onelitefeather.net, which serves that prefix and nothing else — a file merely present in public/ renders as a broken image in production. tests/content/image-paths.spec.ts caught this; the maze's older images are still on the old prefix and remain listed there as pending upload.
New POI at 2563 / 56 / 20850 with the site overview and the 4.1 MB schematic. The photo shows the excavated V-shaped foundation with the Litematica outline beside it. The prose fields are deliberately TODO(B3nNy) rather than invented: what the megabase is for, how far along it is, and what help is needed are facts only the builder has. Marked in a way that is impossible to miss in review, so nothing made up can reach the site by accident. The second gallery image is "The Uncensored Library" by BlockWorks for Reporters Without Borders. It is included as a sense of scale, labelled as an external build with its authors named. Whether the licence permits this use has not been checked — worth confirming before release.
img.onelitefeather.net has Cloudflare Image Resizing enabled — verified: a request through /cdn-cgi/image/width=400 came back with `cf-resized: internal=ok`, 93 KB down to 16 KB. @nuxt/image's cloudflare provider builds exactly those URLs, so scaling and the conversion to AVIF/WebP already happen per request. Uploading 1600px WebP therefore compressed twice and capped the source at 1600px when the originals go up to 2543px. The bucket now gets the untouched screenshots and Cloudflare does the rest. The files leave the repository along with them. They live in the R2 bucket and in ../r2-upload only, which is how the Yggdrasil POI has always worked; a copy in public/ buys nothing, since the picture element never looks at the site origin. No KV cache: the edge already answers these with cf-cache-status HIT and max-age=16070400. KV would add a layer that caches nothing new, at a 25 MB value ceiling and a worse price per GB than R2.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
launchpad | 286d618 | Commit Preview URL Branch Preview URL |
Sep 07 2026, 09:07 PM |
It was a single-use helper for getting nine images into R2, not something the repository needs to carry. The rclone command and the verification loop live with the images in r2-upload/LIESMICH.md, next to the files they apply to.
The megabase entry no longer carries TODO placeholders. Everything stated is drawn from what the photograph and the metadata actually show: the levelled site, the V-shaped foundation, the Litematica outline beside it, and the fact that nothing stands above ground yet. The Uncensored Library is introduced explicitly as a yardstick rather than a blueprint, so nobody reads it as a plan for what goes there. Two things stay deliberately open because only B3nNy can settle them — what the finished structure is meant to be used for, and the 5% progress figure, which is an inference from "groundwork done, nothing built". The harbour text predated both its images and its move. It now explains what the first two pictures actually are — a Litematica hologram over an empty site, which is what a project at status planning looks like — and gives the reference renders their own section, stating plainly that they are not from our server. The help section becomes concrete: materials, interior suggestions, and feedback on placement while moving it is still free.
…otes Two English documents did not parse. In a single-quoted YAML scalar an apostrophe is escaped by doubling it, not with a backslash, so `'B3nNy\'s largest undertaking: …'` ended early and turned the rest of the line into a second mapping key. Everything below that line was lost. On the megabase card that surfaced as a status badge reading `community_poi.status.null`, because the missing value went straight into an i18n key; two harbour captions rendered as raw JSON braces in the gallery. Rewritten to avoid the apostrophe rather than escape it correctly — the captions read better without the parenthetical anyway. The more useful half is the new suite. Nothing caught this: the build passed, @nuxt/content swallowed the malformed document instead of failing, and all 177 tests stayed green, because every one of them reads content as text and none parses the frontmatter. tests/content/frontmatter-parses.spec.ts now parses it strictly and checks that the fields templates interpolate arrived as the type they are used as — a broken quote does not always throw, it can hand back an object where a string was expected, which is exactly what the caption did. Verified by reintroducing the original mistake: three of its checks fail and name the file and line.
tests/content/frontmatter-parses.spec.ts imports it to parse content frontmatter strictly. The package was already in the tree — @nuxt/content pulls it in — but an undeclared import is still a type error, which is why the ratchet caught it at 22 against a baseline of 21. AGENTS.md asks for a justification before a dependency lands, so: this adds nothing to the install. It only names what is already there, so the type checker can see it. A test that has to prove YAML parses needs a YAML parser, and writing one by hand to avoid a devDependency would be the worse trade.
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.
B3nNy supplied screenshots and schematics for three projects, plus BlueMap
links marking where each one sits.
Harbour
Had no images at all. It now leads with two shots of the Litematica hologram
standing over the empty site — which is what
status: planningactually lookslike — followed by the two reference sheets the schematic is modelled on.
Coordinates move to
-574 / 9 / -239, the spot B3nNy pointed at, and theschematic is replaced by the newer 359 KB export with its origin updated to
match. The setup note asks for a check against the marker on site, because that
origin came from a map link rather than a measurement.
Maze
Three progress shots added: down between the walls with the marker line, the
night overview inside its Litematica frame, and the aerial view of the finished
floor pattern.
Maze.schemturned out byte-identical to the copy already inthe repository, so nothing changed there.
Megabase
New POI at
2563 / 56 / 20850with the site photo and the 4.1 MB schematic.The copy is written from what the photograph and the metadata actually show:
the levelled site, the V-shaped foundation, the Litematica outline beside it,
and the fact that nothing stands above ground yet.
Two things still need B3nNy to confirm them, because they cannot be read
off a picture: what the finished structure is meant to be used for, and the 5%
progress figure, which is inferred from "groundwork done, nothing built".
Three reference images are not our builds
megabase/reference_uncensored_library.jpgis The Uncensored Library byBlockWorks for Reporters Without Borders. The two harbour reference sheets are
likewise someone else's renders. All three carry captions and alt text saying
so explicitly, so no visitor can mistake them for something standing on our
server.
Whether the licences permit this use has not been checked. Worth confirming
before this goes live.
Images are uploaded, not committed
The nine images live in the R2 bucket, never in the repository — the same
handling the Yggdrasil POI already uses. A copy under
public/buys nothing:@nuxt/image's cloudflare provider fetches originals fromimg.onelitefeather.net, which serves/images/**from that bucket andnothing else. That is also why the older maze images under
/community-poi/…have never rendered.
They go up raw, at full resolution. Verified that
img.onelitefeather.nethas Cloudflare Image Resizing enabled — a request through
/cdn-cgi/image/width=400returnedcf-resized: internal=ok, 93 KB down to16 KB — and the provider builds exactly those URLs. Pre-shrinking would
compress twice and cap the source at 1600px when the originals reach 2543px.
No KV cache was added: the edge already answers these with
cf-cache-status: HITandmax-age=16070400.Upload done
All nine images are in the bucket and answering 200. Verified end to end: the
original PNG is 956 KB, and through the provider chain
(
/cdn-cgi/image/w=1200,h=900,f=avif,q=80with a browser Accept header) itcomes back as 85 KB of AVIF — a 91% reduction, which is what uploading raw was
for.
Nothing blocks the merge.
182 tests, build clean.