feat: guest passage — slip through as a wanderer

POST /auth/guest mints a real user row (wanderer-<4 hex>, collision
retry, unusable random password) and issues the normal session cookie,
per-IP rate limited at 5/hour. EnterPage gains the guest action;
the séance shows a dismissible claim-a-name note for wanderer- users.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Indiana
2026-07-28 17:18:16 +00:00
parent 2e2c64d36b
commit f5320fcdec
10 changed files with 275 additions and 7 deletions

View File

@@ -329,6 +329,50 @@
/* ---------- connection banner ---------- */
.seance-wanderer-note {
position: absolute;
top: 62px;
left: 50%;
transform: translateX(-50%);
z-index: 29;
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.4rem 0.9rem;
background: rgba(16, 16, 26, 0.92);
border: 1px dashed rgba(216, 230, 221, 0.3);
border-radius: 3px;
color: rgba(216, 230, 221, 0.65);
font-size: 0.72rem;
letter-spacing: 0.06em;
white-space: nowrap;
}
.seance-wanderer-note a {
color: #8dffc0;
text-decoration: none;
border-bottom: 1px dotted rgba(141, 255, 192, 0.5);
}
.seance-wanderer-note a:hover {
border-bottom-style: solid;
}
.wanderer-note-dismiss {
margin-left: 0.2rem;
background: transparent;
border: none;
color: rgba(216, 230, 221, 0.45);
font-size: 0.9rem;
line-height: 1;
cursor: pointer;
padding: 0 0.2rem;
}
.wanderer-note-dismiss:hover {
color: #d8e6dd;
}
.seance-conn-banner {
position: absolute;
top: 62px;