fix(server): canonicalise media paths the same way their callers do

openMediaFile rejected a file whenever fs/promises.realpath disagreed with
the path it was handed. Callers canonicalise through Effect's
FileSystem.realPath, which is Node's JS realpath; the promises variant is the
native binding, and on Windows it also expands 8.3 short names, so every
media file under a short-named temp or profile directory was refused as a
symlink swap. Use the same realpath as the callers, so the check still
catches a planted link but agrees with a path that is already canonical.

The favicon and asset tests now build their relative-path expectations with
Path.join rather than a literal '/'.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2c64068e10Julius Marminge committed on 9/4/2026, 8:26:51 PMparent7b046a0
3 files changedLine totals unavailable