v0.125.1 — Share links from configuration; dependency security
Two follow-ups to the CodeQL backlog (v0.122.1 - v0.124.2). Cut as v0.124.3; v0.125.0 (Procedural maps: Outdoor templates) merged first, so it ships as v0.125.1: the share links it left alone, and the Dependabot alerts code scanning doesn't cover (100 open: 1 critical, 59 high, 36 medium, 4 low).
- [x] Share and invite links (character invites, campaign invites, the campaign-added email) are built from
FRONTEND_URL/APP_BASE_URL, never from the request'sHostheader.- Note: they fell back to
req.protocol + "://" + req.get("host")when neither variable was set, so a request with a forgedHostgot an invite link (and sent a player an email) to that host.config/frontendUrl.ts'sfrontendBaseUrl()falls back to this machine's dev client instead, as the sign-in redirect and the wiki already do; every hosted environment setsFRONTEND_URL.frontendUrl.test.tsfails on any route that reads theHostheader.
- Note: they fell back to
- [x] Dependabot: the critical alert and the high alerts that reach production (server runtime or the shipped web bundle) fixed by dependency bumps; the rest triaged with the reason.
- Note: 192 alerts were open (1 critical, 110 high, 71 medium, 10 low). Fixed by bumps:
proxy-addr2.0.8 (the critical),nodemailer10.0.6 (Node 20+, which we exceed, and TLS checks on remote attachments, which we don't use),sharp0.35.5 (its bundled libvips;@kenjura/ursa's and@huggingface/transformers' copies by override too),drizzle-orm0.45.2,adm-zip0.6.1,dompurify3.4.16,react-router-dom7.18,vitest4.1.11, and, aspnpm.overridesscoped to the vulnerable range of each line, the transitive ones (engine.io,socket.io-parser,ws,compression,body-parser,path-to-regexp,qs,form-data,js-yaml,lodash,minimatch,brace-expansion,nanoid,rollup,postcssand more). The SAM2 service: Pillow 12.3.0 (itsfromarraycall drops the deprecatedmode). - Left open, with the reason:
xlsx0.18.5 (high): no fixed version on npm; SheetJS publishes fixes only at cdn.sheetjs.com. It parses a user's own spreadsheet in their browser (character sheet import). Moving to the CDN tarball is a dependency-source decision for the owner.toml3.0.0 (high),markdown-it12 /linkify-it3 (high and medium),uuid9 (medium): all inside@kenjura/ursa(the wiki renderer, viamdx-bundlerandremark-mdx-frontmatter), each a major version behind; the fix is an ursa release.vite5.4.21 and itsesbuild0.18 / 0.21 (medium):apps/web's dev server and build only, not the shipped bundle; moving the app to Vite 6+ is its own task.file-type16,sprintf-js,cookie0.5,esbuild0.27 (medium and low): transitive in build and help tooling, with no fix in their major line.
- Note: 192 alerts were open (1 critical, 110 high, 71 medium, 10 low). Fixed by bumps: