feat: the codex names who has met each spirit
`GET /api/codex/{id}` has been returning `encounters`, `total_encounters`,
`discoverer` and `discoverer_public` since Workstream T, and the page
rendered none of it — the backend work shipped and sat unused.
The roster now names the hunters who reached a spirit, discoverer first and
distinctly (being first to find it is the notable thing). A hunter with a
public profile is a link to their page; a hunter who veiled their profile is
named as plain text, counted but not linkable — deliberate, per the spec:
they were there, and hiding them entirely would falsify the record.
That last rule is the one worth protecting, so it is pinned by tests that
assert `queryByRole('link')` is null for a veiled hunter. Efficacy proven by
making the branch unreachable, which fails exactly those two tests and no
others.
Also shows "and N more" only when the backend's ROSTER_LIMIT actually
truncated, so a capped list can't read as the complete history.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -507,7 +507,16 @@
|
||||
"utterances": "enunciados conocidos",
|
||||
"noUtterances": "aún no hay enunciados registrados",
|
||||
"voiceSignature": "firma de voz",
|
||||
"attemptContact": "intentar contacto"
|
||||
"attemptContact": "intentar contacto",
|
||||
"roster": {
|
||||
"heading": "quién ha encontrado a este espíritu",
|
||||
"firstContact": "primer contacto",
|
||||
"times_one": "alcanzado una vez",
|
||||
"times_other": "alcanzado {{count}} veces",
|
||||
"empty": "ningún otro médium ha alcanzado a este espíritu — solo quien lo encontró",
|
||||
"more_one": "y 1 médium más sin nombrar aquí",
|
||||
"more_other": "y {{count}} médiums más sin nombrar aquí"
|
||||
}
|
||||
},
|
||||
"empty": "ningún espíritu coincide con este filtro — el registro guarda sus secretos",
|
||||
"back": "← volver al códice",
|
||||
|
||||
Reference in New Issue
Block a user