https://gitlab.synchro.net/main/sbbs/-/commit/9ba41ffc77430e157543bb0d
Modified Files:
exec/load/door_deploy.js src/doors/syncretro/deploy.js
Log Message:
syncretro: deploy to the live install only (no double pass)
The "deploy to the live install only" fix that stopped the sibling doors double-addressing one directory landed in door_deploy()'s destination
logic -- and SyncRetro does not use it. SyncRetro uses door_deploy.js for
the COPY (door_deploy_file's content-hash guard) and the target token, but
one binary serves N console dirs found by scanning, not one xtrn/<door>
named by a spec, so it carries its own destination logic. That logic still scanned BOTH the in-tree bundle (<checkout>/xtrn/) and the live install (<ctrl>/../xtrn/).
On the recommended install (install-sbbs.mk SYMLINK=1) the live xtrn IS a symlink to the repo's, so those two scans address ONE directory, and the
guard meant to collapse them cannot see it: fullpath() normalizes a path
but does not resolve it, so a symlink and its target never compare equal,
and Synchronet's JS has no stat() to compare inodes with. The second pass
then found the bytes the first had just written and printed "already this
build -- nothing to copy" directly after "Deployed" -- a contradiction precisely when a sysop is checking whether their build landed. Reported by Accession.
So scan the live install, full stop; fall back to the in-tree bundle only
when no console is installed there (a bare checkout for packaging/CI), and
say so. Same reasoning and same fix as door_deploy(). Where live and
checkout are genuinely two directories (a copy install), the in-tree copy
was pointless anyway -- nothing launches from the checkout.
Also normalize the "already this build" line in door_deploy.js to print fullpath(dst): it was showing the raw <ctrl>/../xtrn/... form beside a normalized "Deployed:" path, which was half of why the output read as a contradiction. Benefits every door.
Verified under jsexec against a fake install in all three layouts:
symlinked install (each console visited once, no phantom second pass), copy-style install (live updated, checkout untouched), and bare checkout
(falls back to the bundle and says why).
Co-Authored-By: Claude Opus 4.8 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net