Renaming any vuer entrypoint (server.js, cron.js, background.js, media.js, convert.js, integrationLog.js, storage.js) is a 4-repo coordinated release, not a single-repo edit. 95 supervisor conf files hard-code a command=node <entry>.js line, and only 7 of them live in the three code repos the change would touch. Two silent traps — logger.js argv sniffing and an 8th customization-only entrypoint — make a partial rename fail quietly. Mapped by FKITDEV-8387; useful for any entrypoint change, not just the TypeScript one.
For Agents
Before renaming or moving a vuer entrypoint file, assume it is spelled out by string in ~95 files across 4 repos (vuer_oss / vuer_css / portal_css +
vuer_build+vuer-release+vuer_docker), plus aprocess.argv[1]sniff inlogger.js, plus a bb/kh-onlysoap_server.js. A miss is a supervisord crash-loop for that partner — or worse, a silent logging / coverage regression.
Where command=node <entry>.js lives (95 files)
| Location | Files | Notes |
|---|---|---|
vuer_build/partner/<client>/… | 75 | across 35 partners |
vuer-release/projects/<client>/components/… | 11 | Gen2 lean-format partners |
vuer_docker/workspace/devtools/files/supervisor_{dev,docker}.conf | 2 | dev-box |
| the three code repos themselves | 7 | supervisor_vuer_oss_{dev,docker,e2e_test}.conf · supervisor_vuer_css_{dev,docker}.conf · supervisor_portal_css_{dev,docker}.conf |
Any conf missed by a rename ⇒ supervisord crash-loop (exit code 2, restart every 1–2 s) for that partner. A March-2026 attempt at exactly this migration did that. Base-image Dockerfiles reference the supervisor conf filename, not the .js, so they are unaffected.
Silent trap 1: logger.js picks the log channel by process.argv[1]
vuer_oss/server/logger.js:102–114 chooses the log4js channel by sniffing the entrypoint filename:
process.argv[1].endsWith('server.js') // → server channel
process.argv[1].endsWith('cron.js') // → cron channel
// … background.js / media.js / convert.js / integrationLog.jsRename an entrypoint and every one of its processes silently routes to the unknown channel. It fails quietly — no crash, just misfiled logs. This is also why the .ts-shim strategy in FKITDEV-8387 keeps process.argv[1] pointing at the original server.js shim (the shim requires server.ts).
Silent trap 2: the 8th entrypoint soap_server.js (bb/kh only)
There is an 8th entrypoint, soap_server.js, that exists only on the bb and kh vuer_oss customization branches (vuer_build/partner/{bb,kh}/vuer_oss/supervisor_vuer_oss_docker.conf:137). It is not on devel, so a rename planned from devel alone will miss it.
Silent trap 3: the soap_server.js suffix collision
The logger.js check is a suffix test, and 'soap_server.js'.endsWith('server.js') === true. So bb/kh’s SOAP entrypoint has been silently inheriting the vuer channel by accident — nobody wrote a rule for it. Renaming the main entrypoint to server.ts removes that accidental match and drops soap_server.js to the unknown channel, again with no error. Fix used in FKITDEV-8387:
process.argv[1].endsWith('server.ts') || process.argv[1].endsWith('soap_server.js')General lesson
Suffix-matching entrypoint dispatch is fragile under rename. A suffix test matches any longer filename ending the same way, so the pre-rename behaviour may itself have been accidental — you cannot assume “it worked before, so preserving the string preserves the behaviour”. Enumerate every file whose name ends with the matched suffix before touching it.
Silent trap 4: the confs are not version-pinned to the app
Even a complete rename is not safe to merge on its own, because vuer_build partner overlay Dockerfiles COPY the supervisor conf unversioned from main on top of a version-pinned app image. Flipping the confs therefore breaks rebuilds of older release tags and breaks every partner branch that has not merged devel yet. Full write-up + mitigations: unversioned-partner-supervisor-overlays.
Implication
A literal .js → .ts (or any) entrypoint rename must land as a lockstep release of vuer_oss / vuer_css / portal_css plus vuer_build + vuer-release + vuer_docker, plus the bb/kh customization branches, plus a logger.js update.
Outcome (2026-07-22)
FKITDEV-8387 initially chose a decoupled
.ts-module + one-line.js-shim approach to dodge all of this. That was reversed after review (vuer_oss PR #8059): the migration landed as a direct rename,command=node server.ts, no shims — 7 entrypoints in vuer_oss, 1 each in vuer_css/portal_css, 75 confs invuer_buildand 12 invuer-release. So the full blast radius above was actually paid, and the remaining open risk is the release-sequencing one in unversioned-partner-supervisor-overlays.
Related
- FKITDEV-8387 — the ticket that mapped this (entrypoint TypeScript migration)
- typescript-in-vuer-repos — why
.tsshims work with no build step - nyc-cannot-load-typescript — the e2e conf among these 7 is separately broken
- FKITDEV-8354-mvm-supervisor-config-dedup — how partner supervisor confs are layered / overridden
- unversioned-partner-supervisor-overlays — the confs are not version-pinned to the app image (release blocker)
- vuer_oss · vuer_css · portal_css