screentinker/server
ScreenTinker 0ec808298b Stop a self-referential node_modules symlink breaking the payload build
`server/node_modules` was tracked as a SYMLINK to its own absolute path:

    120000 blob ... server/node_modules -> /home/owner/Downloads/remote_display/server/node_modules

It came in with the #283 merge. Any attempt to resolve it is an ELOOP, so the
payload build died at the staging step with

    cp: cannot stat 'server/node_modules': Too many levels of symbolic links

and a fresh checkout gets a server/ whose dependencies cannot resolve at all.

.gitignore only had `node_modules/`, and a trailing slash matches DIRECTORIES —
which is exactly how a symlink of that name slipped past it. Both forms are listed
now, so the same mistake cannot be committed again.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014kfhrUPit5MCqxeTQyqr56
2026-08-18 20:22:15 -05:00
..
config fix(logging): gate CF-Connecting-IP on a Cloudflare peer, not any trusted proxy 2026-07-26 10:23:04 -05:00
db Run the ScreenTinker server on the player it serves (#288) 2026-08-18 15:16:09 -05:00
lib Stop database snapshots losing their permissions (#289) 2026-08-18 15:24:39 -05:00
middleware Merge branch 'fix/recovery-grants' into release/auth-campaign 2026-07-26 16:22:59 -05:00
player Run the ScreenTinker server on the player it serves (#288) 2026-08-18 15:16:09 -05:00
routes Run the ScreenTinker server on the player it serves (#288) 2026-08-18 15:16:09 -05:00
scripts Drop sharp: pure-JS image ops on a worker thread (#263) 2026-08-13 11:40:13 -05:00
services #240: stop the morning wave buying itself a blocking checkpoint 2026-08-06 20:22:21 -05:00
test Make the on-device server opt-in, and stop the status port answering the LAN (#291) 2026-08-18 16:32:37 -05:00
ws Run the ScreenTinker server on the player it serves (#288) 2026-08-18 15:16:09 -05:00
.gitignore feat(email): Microsoft Graph send + alert spam protection + preferences UI 2026-05-12 18:16:40 -05:00
config.js SSO: prove domain ownership by DNS, and fix what the second review found 2026-08-10 19:23:46 -05:00
package-lock.json Stop shipping a licence we would rather not have to explain (#281) 2026-08-14 14:50:18 -05:00
package.json Stop shipping a licence we would rather not have to explain (#281) 2026-08-14 14:50:18 -05:00
server.js Run the ScreenTinker server on the player it serves (#288) 2026-08-18 15:16:09 -05:00
smoke-ui.js Keep the smoke test out of npm test, and update the lockfile 2026-07-28 20:34:34 -05:00
version.js chore(version): single-source VERSION, env-configurable data paths, bump tooling 2026-06-10 12:56:03 -05:00