The table is titled "every link" and was silently dropping 506 real resources across 377 languages, because the generator skipped any code with no people group on this map. They are not edge cases: Ahirani has Scripture, a film and Open Bible Stories; Pahari Mahasui has Scripture, a film and five Door43 resources. Someone searching for that language still needs to find it, and the reach columns reading 0 is the true answer to "how many groups on THIS map speak it" rather than a reason to hide the resource. 3,043 -> 3,549 rows, 2,307 -> 2,684 languages. The meta says what a zero-reach row means so the column is not read as "this resource reaches nobody". THE INCLUSION EXPOSED A BLANK. Those codes are named nowhere in the people-group dataset — it only names languages some group speaks — so their rows rendered a bare ISO code with an empty language column, which tells a reader looking for a language precisely nothing. The eBible index now carries languageNameInEnglish alongside the translation title (two different things), and a final pass names any remaining code from whichever catalogue knows it. Codes carrying a resource with no language name: 377 -> 0. An audit of the reach columns against an independent recount off the pins found 0 disagreements on people_groups and 0 on speakers, so the table and the map agree about who speaks what. Verified: a seeded sample of 12 newly-exposed rows — 9 resolved 200, 3 skipped as unverifiable, because jesusfilm.org/watch answers 200 for any id and a status check there proves nothing. Three Door43 links first returned 000, which is curl failing to CONNECT rather than an HTTP status; retried with spacing they all answer 200, so the failure was my own request rate and not a dead link. Table, deep-link, pins, gap-list and country probes all still pass, and the country sheet still never fetches the retired 1.4MB file. |
||
|---|---|---|
| .. | ||
| external-bundles | ||
| people-groups | ||
| posters | ||
| tables | ||
| vendor | ||
| README.md | ||
data/ — the bundler's source-of-truth data
The law: data lives here; public/ is generated. Every folder in data/ is copied into the
served web-root by the build (internal/generate-tree.mjs), exactly like the per-profile data in
plugin-designs/*/data/. You should be able to rm -rf public/ and get it all back with bun run build.
| Folder | Served at | What it is |
|---|---|---|
people-groups/ |
/assets/people-groups/ |
People-group datasets (CSV/JSON) the maps read at runtime |
vendor/ |
/assets/vendor/ |
Third-party runtime assets (e.g. table libraries) |
posters/ |
/assets/posters/ |
Rendered poster webp set (heavy pipeline output; poster walls fetch these) |
tables/ |
/assets/tables/ |
The MERGED served table set (its index.json is the merge; per-profile plugin-designs/*/data/tables are build-time sources) |
external-bundles/ |
not served | Prebuilt map IIFEs vendored from sibling projects (not built here); only the optional layouts/ shell mounted them, so the build no longer copies them into public/ |
Don't edit anything under public/ by hand — change it here (or in plugin-designs/*/data/,
layouts/*/assets/) and rebuild.