doxa-maps/public/.gitignore
doxa-maps-88655c70 d06bf88195 Stop committing 80.7 MB of generated mirrors of data/
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.
2026-09-24 07:39:51 +00:00

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/