public/assets/<name> is not a source. generate-tree.mjs:1353 rmSync's it and copies data/<name> over it on EVERY `bun run tree`, so five directories were a byte-identical copy of a tracked source and BOTH copies were committed: posters 378 files 40.9 MB people-groups 2 files 23.0 MB tables 19 files 14.2 MB legacy 4 files 2.0 MB vendor 3 files 0.6 MB Verified identical, not assumed: same file set and matching hashes in all five. And proven regenerable rather than argued — deleting public/assets/posters and running `bun run tree` restored all 378 files with laos.webp md5 ea65d2f1, the same hash the committed copy carried. This is the Driver's "80mb of images in a public folder" almost exactly, and it is the cheapest possible version of it: a publish was already rejected once at a 74 MB asset tree, and half that weight was a duplicate of something already in the same repo. No feature changes, no size tradeoff, nothing regenerates differently. ★ previews/ IS DELIBERATELY STILL TRACKED. It has no data/ source — make-previews.py derives it from the full posters — and it is what the poster WALL renders from. bundlePosters defaults false, so a dropped folder ships previews and NOT posters; untracking previews would blank every wall. Treating "public/assets" as one homogeneous pile would have removed the one directory that must stay. The root .gitignore said "what actually ships is the exported subset in public/assets/ (see export-public.mjs)" and BOTH HALVES were stale — which is why the duplication looked intentional. export-public.mjs writes a SIBLING OF THE REPO (../../../../upg-100-posters or $DOXA_PUBLIC), stating in its own header that this is "NOT inside public/, because capacitor packages public/ whole"; and public/assets/ is now generate-tree's mirror of data/. Comment corrected in the same change, because a stale rationale is what restores a deleted duplicate. Build green with the mirrors untracked: 7/7 pre, 23/23 bundles, 21/21 post.
38 lines
1.8 KiB
Text
38 lines
1.8 KiB
Text
token.local.js
|
|
|
|
# The build MUTEX's stamp file (internal/build-lock.sh writes it under flock).
|
|
# It is pure runtime state — a pid, a timestamp and `by=$(whoami)` — rewritten on
|
|
# every `bun run build`. It was tracked, so each rebuild committed the BUILDING
|
|
# MACHINE'S USERNAME into the repo. Nothing reads it but the lock itself, and a
|
|
# clone that inherits a stale pid is at best noise.
|
|
.build.lock
|
|
|
|
# ── GENERATED MIRRORS OF data/ — 80.7 MB committed TWICE ─────────────────────
|
|
# generate-tree.mjs:1353 copies data/<name> -> public/assets/<name>, rmSync'ing
|
|
# the destination first, on EVERY `bun run tree`. So these five directories are
|
|
# not a source: they are a byte-identical copy of a tracked source, and both
|
|
# copies were committed.
|
|
#
|
|
# MEASURED 2026-09-24, all five verified identical file-set and hash:
|
|
# posters 378 files 40.9 MB
|
|
# people-groups 2 files 23.0 MB
|
|
# tables 19 files 14.2 MB
|
|
# legacy 4 files 2.0 MB
|
|
# vendor 3 files 0.6 MB
|
|
# Proven regenerable, not assumed: deleting public/assets/posters and running
|
|
# `bun run tree` restored all 378 files with laos.webp md5 ea65d2f1 — the same
|
|
# hash the committed copy had.
|
|
#
|
|
# This is the "80mb of images in a public folder" directly: a publish was already
|
|
# rejected once at a 74 MB asset tree, and half of that weight was a duplicate of
|
|
# something already in the same repo.
|
|
#
|
|
# ⚠ previews/ IS NOT LISTED AND MUST STAY TRACKED. It has no data/ source — it is
|
|
# generated by make-previews.py from the full posters — and it is what the poster
|
|
# WALL renders from, so a dropped folder needs it (bundlePosters defaults false,
|
|
# which ships previews and not posters). Untracking it would blank every wall.
|
|
/assets/posters/
|
|
/assets/people-groups/
|
|
/assets/tables/
|
|
/assets/legacy/
|
|
/assets/vendor/
|