Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

lith Caddy: redirect /platter/jeffrey to trailing-slash form

The page at /platter/jeffrey (no slash) fetches `./manifest.json`,
which the browser resolves to /platter/manifest.json (treating
`jeffrey` as a file in /platter/, not a directory). That 404s into
the SPA fallback, returns HTML, and the dashboard's JSON.parse
errors with "Unexpected token '<'". Forcing the trailing-slash form
keeps the page's base URL aligned with what relative fetches expect.

Same pattern as the /platter redirect added in the previous commit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+11 -4
+11 -4
lith/Caddyfile
··· 56 56 } 57 57 root * /opt/ac/system/public/papers.aesthetic.computer 58 58 59 - # Explicit canonical redirect for top-level /platter — without this, 60 - # try_files's interaction with file_server somehow serves the papers 61 - # root /index.html for the no-slash form rather than rewriting to 62 - # /platter/index.html (one level deeper /platter/jeffrey works fine). 59 + # Explicit canonical redirects for the platter dirs. Two reasons: 60 + # (1) without the /platter redirect, try_files's interaction with 61 + # file_server somehow serves the papers root /index.html for the 62 + # no-slash form rather than rewriting to /platter/index.html. 63 + # (2) for /platter/jeffrey, try_files DOES correctly serve the 64 + # right index.html — but the page's relative `./manifest.json` 65 + # fetch then resolves to /platter/manifest.json (browser treats 66 + # `jeffrey` as a file in /platter/, not a dir), which 404s into 67 + # the SPA fallback and breaks the dashboard. Forcing a trailing 68 + # slash via redir keeps relative URLs honest. 63 69 # (See: 2026-04-29 platter URL move debugging.) 64 70 redir /platter /platter/ permanent 71 + redir /platter/jeffrey /platter/jeffrey/ permanent 65 72 66 73 # SPA fallback for unknown paths: if none of {path}, {path}.html, 67 74 # {path}/index.html, or {path}index.html exists on disk, serve