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:
@@ -174,7 +174,7 @@ export interface UI {
|
||||
skinUpload: string;
|
||||
skinUploading: string;
|
||||
skinOk: string;
|
||||
skinPreviewNote: string; // "NMSR takes ~15 min to update" hint
|
||||
skinPreviewNote: string; // "NMSR takes ~1 min to update" hint
|
||||
resetSkin: string;
|
||||
resetConfirm: string; // window.confirm text
|
||||
resetOk: string;
|
||||
@@ -356,7 +356,7 @@ export const ui: Record<Lang, UI> = {
|
||||
registerLink: "Register here",
|
||||
playerLabel: "Logged in as",
|
||||
skinTitle: "Your skin",
|
||||
skinLead: "Upload a Minecraft skin PNG. The 3D preview below updates instantly; the in-game avatar takes ~15 minutes.",
|
||||
skinLead: "Upload a Minecraft skin PNG. The 3D preview below updates instantly; the in-game avatar takes ~1 minute.",
|
||||
skinChoose: "Choose PNG…",
|
||||
modelLabel: "Model",
|
||||
modelClassic: "Classic",
|
||||
@@ -364,7 +364,7 @@ export const ui: Record<Lang, UI> = {
|
||||
skinUpload: "Upload skin",
|
||||
skinUploading: "Uploading…",
|
||||
skinOk: "Skin updated!",
|
||||
skinPreviewNote: "Avatar preview updates in ~15 min.",
|
||||
skinPreviewNote: "Avatar updates in ~1 min.",
|
||||
resetSkin: "Reset to default",
|
||||
resetConfirm: "Reset your skin to the default? This cannot be undone.",
|
||||
resetOk: "Skin reset to default.",
|
||||
@@ -544,7 +544,7 @@ export const ui: Record<Lang, UI> = {
|
||||
registerLink: "Regístrate aquí",
|
||||
playerLabel: "Sesión iniciada como",
|
||||
skinTitle: "Tu skin",
|
||||
skinLead: "Sube un PNG de skin de Minecraft. La vista previa 3D se actualiza al instante; el avatar en el juego tarda ~15 minutos.",
|
||||
skinLead: "Sube un PNG de skin de Minecraft. La vista previa 3D se actualiza al instante; el avatar en el juego tarda ~1 minuto.",
|
||||
skinChoose: "Elegir PNG…",
|
||||
modelLabel: "Modelo",
|
||||
modelClassic: "Clásico",
|
||||
@@ -552,7 +552,7 @@ export const ui: Record<Lang, UI> = {
|
||||
skinUpload: "Subir skin",
|
||||
skinUploading: "Subiendo…",
|
||||
skinOk: "¡Skin actualizada!",
|
||||
skinPreviewNote: "La vista previa del avatar se actualiza en ~15 min.",
|
||||
skinPreviewNote: "El avatar se actualiza en ~1 min.",
|
||||
resetSkin: "Restablecer skin",
|
||||
resetConfirm: "¿Restablecer tu skin a la predeterminada? Esta acción no se puede deshacer.",
|
||||
resetOk: "Skin restablecida.",
|
||||
@@ -732,7 +732,7 @@ export const ui: Record<Lang, UI> = {
|
||||
registerLink: "Erregistratu hemen",
|
||||
playerLabel: "Saioa hasita:",
|
||||
skinTitle: "Zure azala",
|
||||
skinLead: "Igo Minecraft azal PNG bat. 3D aurrebista berehala eguneratzen da; jokoko avatarra ~15 minutuan.",
|
||||
skinLead: "Igo Minecraft azal PNG bat. 3D aurrebista berehala eguneratzen da; jokoko avatarra ~1 minutuan.",
|
||||
skinChoose: "Aukeratu PNGa…",
|
||||
modelLabel: "Eredua",
|
||||
modelClassic: "Klasikoa",
|
||||
@@ -740,7 +740,7 @@ export const ui: Record<Lang, UI> = {
|
||||
skinUpload: "Igo azala",
|
||||
skinUploading: "Igotzen…",
|
||||
skinOk: "Azala eguneratuta!",
|
||||
skinPreviewNote: "Avatararen aurrebista ~15 min barru eguneratzen da.",
|
||||
skinPreviewNote: "Avatarra ~1 min barru eguneratzen da.",
|
||||
resetSkin: "Berrezarri azala",
|
||||
resetConfirm: "Zure azala lehenetsi nahi duzu? Ezin da desegin.",
|
||||
resetOk: "Azala berrezarrita.",
|
||||
|
||||
@@ -304,7 +304,7 @@ const clientCfg = {
|
||||
showMsg(skinMsg, await apiMessage(res, cfg.errNetwork));
|
||||
return;
|
||||
}
|
||||
// Show the local file immediately as instant confirmation (NMSR lags ~15m).
|
||||
// Show the local file immediately as instant confirmation (NMSR lags ~1m).
|
||||
const dataUrl = URL.createObjectURL(file);
|
||||
$("acc-avatar").src = dataUrl;
|
||||
skinMsg.classList.add("ok");
|
||||
|
||||
Reference in New Issue
Block a user