• Reuses the existing nickname-modal/.nickname-box comic-panel look (a
    new .auth-error line and a plain-text auth-link-btn are the only new
    CSS) rather than inventing a second visual language. A "登录" topbar
    button opens the modal (email/password, toggle between login/
    register, cancel); once logged in it becomes "<nickname or email
    prefix> · 退出".
    
    Entirely optional, same as T19-T21 designed it: the modal's only
    trigger is that one button, nothing forces it open, and free browsing/
    voting keeps working on the plain viewer_uid cookie exactly as before.
    Manually verified end to end against the real running server (Chrome):
    register auto-logs in, an existing viewer_nickname cookie bound onto
    the new account and shown in the button, logout reverts the UI.
    
    auth-ui.test.js is a structural check (id/getElementById consistency,
    all four /api/auth/* endpoints wired, modal starts hidden) since no
    DOM/browser tooling is available to `node --test` here to render the
    pages for a full interaction test.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_011Deddn3sM3oQnmvqWSMb4y
    yibo authored
     
    Browse File »