Subj : xtrn/syncduke/download.jssrc/doors/syncduke/.gitignore xtrn/syncduke/i To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Fri Jun 26 2026 17:26:41 https://gitlab.synchro.net/main/sbbs/-/commit/83e326fb7e847072d16d154b Added Files: xtrn/syncduke/download.js Modified Files: src/doors/syncduke/.gitignore xtrn/syncduke/install-xtrn.ini Log Message: syncduke: optional installer download of the shareware DUKE3D.GRP SyncDuke ships no game data, so a fresh install has no GRP to run. Add an optional installer step that fetches the freely-redistributable shareware Episode 1 GRP so the door is playable out of the box -- mirroring SyncDOOM's getwads.js Freedoom fetch. download.js downloads 3D Realms' original shareware install package and extracts DUKE3D.GRP from it. The GRP is two archive layers deep (3dduke13.zip -> DN3DSW13.SHR self-extractor -> DUKE3D.GRP); Synchronet's Archive (libarchive) reads both, and the result is byte-identical to the canonical 11,035,779-byte "SHAREWARE 1.3D" GRP. Idempotent (skips a GRP already present), non-fatal if offline, and SpiderMonkey 1.8.5-compatible. install-xtrn.ini runs it as a prompted, non-required [exec:download.js] step after the config copy, so it can read the [grp] dir from syncduke.ini. Named download.js (not getgrp/getmaps) so it can grow more options later (map packs, the registered GRP) once the door can load them -- today it only fetches the base game GRP. .gitignore also gains *.grp so a dropped-in GRP is never accidentally committed (it is proprietary game data, not ours to redistribute from the repo even though the shareware package is). Co-Authored-By: Claude Opus 4.8 --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .