Skip to content

feat(community-poi): galleries for harbour and maze, scaffold the megabase - #331

Open
TheMeinerLP wants to merge 7 commits into
mainfrom
feat/community-poi-galleries
Open

feat(community-poi): galleries for harbour and maze, scaffold the megabase#331
TheMeinerLP wants to merge 7 commits into
mainfrom
feat/community-poi-galleries

Conversation

@TheMeinerLP

@TheMeinerLP TheMeinerLP commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

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: planning actually looks
like — followed by the two reference sheets the schematic is modelled on.

Coordinates move to -574 / 9 / -239, the spot 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 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.schem turned out byte-identical to the copy already in
the repository, so nothing changed there.

Megabase

New POI at 2563 / 56 / 20850 with 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.jpg is The Uncensored Library by
BlockWorks 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 from
img.onelitefeather.net, which serves /images/** from that bucket and
nothing 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.net
has Cloudflare Image Resizing enabled — a request through
/cdn-cgi/image/width=400 returned cf-resized: internal=ok, 93 KB down to
16 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: HIT and max-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=80 with a browser Accept header) it
comes back as 85 KB of AVIF — a 91% reduction, which is what uploading raw was
for.

Nothing blocks the merge.

182 tests, build clean.

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.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 7, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

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.
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