ulysses/static
Rudy Wolf 1c43daa564
fix(compare): stop blind mode leaking model identities via session names (#1318)
Blind Compare anonymized the pane headers, but each pane still created a helper chat session named "[CMP] <real-model>" and GET /api/sessions returned the session's model field. So the sidebar and the session-list API let a user map "Model A" back to its real model before voting, defeating the blind test.

- Frontend (static/js/compare/index.js, panes.js): in blind mode, name helper sessions by their neutral slot ("[CMP] Model A") instead of the model, matching the existing blind pane labels.
- Backend GET /api/sessions (routes/session_routes.py): blank the model field for [CMP]-prefixed helper sessions via a new _public_model helper.
- Backend /api/compare/start (routes/compare_routes.py): name blind sessions by slot and withhold model_left/model_right/mapping from the blind response (revealed at /vote).
- Tests: tests/test_blind_compare_redaction.py.

Fixes #1285.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 04:39:01 +01:00
..
fonts Odysseus v1.0 2026-05-31 23:58:26 +09:00
js fix(compare): stop blind mode leaking model identities via session names (#1318) 2026-06-04 04:39:01 +01:00
lib Odysseus v1.0 2026-05-31 23:58:26 +09:00
app.js fix(ui): use raw data for 'Copy Chat' to avoid extra newlines (#1391) 2026-06-03 14:12:28 +09:00
index.html feat: Claude Agent integration + cookbook reconnect + UI polish 2026-06-04 08:27:26 +09:00
landing.html feat: Add mobile hamburger navigation menu and toggle functionality 2026-06-01 15:57:01 +04:00
login.html fix(login): keep inputs >=16px on touch so iOS doesn't zoom on focus (#1632) 2026-06-03 14:23:24 +09:00
manifest.json Odysseus v1.0 2026-05-31 23:58:26 +09:00
style.css feat: Claude Agent integration + cookbook reconnect + UI polish 2026-06-04 08:27:26 +09:00
sw.js Odysseus v1.0 2026-05-31 23:58:26 +09:00