feat(nmsr): cut avatar refresh lag to ~1min + document HTTP routes

NMSR has no per-request avatar refresh (the `?skin=` override is ignored by this
build), so the only lever for a changed skin to appear is the resolve cache.
Drop resolve_cache_duration 15m -> 60s so account-page skin changes propagate
within ~1 min; texture cache stays 48h (Drasl skin URLs are content-hashed, so a
new skin is always a new URL — never stale). Cost is one extra internal Drasl
profile lookup per avatar per minute, trivial for 4-10 players.

Update the now-stale "~15 min" copy (skinLead + skinPreviewNote, en/es/eu) and
code comments to "~1 min".

Add plan/19-routes.md: a reference for the nmsr / landing / auth HTTP routes
(public via caddy + browser->Drasl + internal service-to-service), indexed in
plan/00-overview.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 20:58:57 +02:00
parent 97347693b6
commit 5d5602fbd7
5 changed files with 103 additions and 9 deletions

View File

@@ -16,7 +16,16 @@ port = 8080
[caching]
cleanup_interval = "1h"
resolve_cache_duration = "15m"
# resolve_cache_duration caches the uuid -> profile (incl. skin URL) lookup, so
# it bounds how long a changed skin keeps showing the OLD avatar. Kept short so
# skin changes on the account page propagate within ~1 min (NMSR has no
# per-request force-refresh; a `?skin=` override is ignored by this build). Cost
# is one extra internal Drasl profile lookup per avatar per minute — trivial over
# mcnet for a 4-10 player server. For an instant global flush: restart nmsr.
resolve_cache_duration = "60s"
# texture cache stays long: Drasl skin URLs are content-hashed
# (/web/texture/skin/<sha256>.png), so a new skin = new URL = fresh fetch; this
# 48h cache never serves a stale skin.
texture_cache_duration = "48h"
[caching.cache_biases]