This is a massive stability and realism release. The trial pipeline now runs end-to-end without dead-ends, the whole game has been scrubbed of
"video-gamey" combat language, and Case 06 is in.
New Content
- New case: State v. Reyes — construction site trespass.
- Firm management UI on the Career Dashboard.
- Communications Panel for case messages.
- 4 new character sketches and an expanded juror silhouette pool.
- Juror silhouette portraits in voir dire.
- Floating "Kyle B." note on the main menu.
Trial Loop — Now Actually Plays Through
- Full trial pipeline wired from jury selection through post-trial resolution.
- Arraignment phase added; first-appearance → arraignment transition fixed.
- Post-trial summary screen now shows up after a verdict (previously orphaned).
- Sentencing tab unlocks at the right time and records correctly.
- Opening, defense-case, and closing-argument simulators no longer dead-end when state is mid-load — added fallbacks and escape hatches.
- Mistrial, plea, and loss outcomes now produce real consequences instead of leaving you in limbo.
- Career progression unblocked at every metric-bump point.
- Missed hearings now surface; the calendar scanner actually fires on day-tick.
- Motion rulings resolve inline and bind to case state correctly.
- Brady modal wired up; detective gives responses.
Realism Pass (huge)
- Removed Ace Attorney–style names and references.
- Stripped combat terminology, D&D-style skill checks, "score / draft / hidden traits" framing, and "spin narrative" chaos labels across the entire UI.
- Rewrote negotiation, voir dire, closing argument, discovery, financial, motion, ethics, sentencing, bail, and chaos copy in plain attorney-sim
language.
- Softened gamey cross-exam feedback.
- Cleaned tutorial momentum language and trial tab headers.
- ER 403 standard correctly referenced in the motion checklist.
Investigation
- Lead outcome display, case-specific leads, and phase gating.
- Weekly investigator auto-discovery (Mondays) now uses a stable UTC-based weekday, so it triggers the same regardless of your local timezone.
Voir Dire
- "Confirm Seated Jury" no longer blocks defense while prosecution still has peremptories — only the actual turn flag and juror count gate it.
- Juror silhouettes in the panel.
Save / Load
- Full round-trip persistence overhaul — many slices (legal practice, in-court session, arraignment, communications, time tracking, billing audit,
tutorial, calendar integration, etc.) now properly sanitize and restore.
- Maps no longer get dropped on save.
- Mistrial status, mistrial outcome, suppressed/Brady flags now persist correctly.
- Non-ASCII text in save exports/imports handled correctly.
- Save-size guard added.
Daily Cycle
- Days no longer "phantom-advance" when the daily execution overlay re-mounts with an empty queue (e.g. returning from a case workspace or trial).
- Weekday chaos events use UTC, so behavior is timezone-independent.
- Ethics violation fines now actually deduct from your checking account.
- Ethics violations list capped at 500 (lifetime count preserved) — no more unbounded save growth.
Money & Career
- Career stage promotions trigger reliably at every metric milestone.
- Trust-temptation infinite loop fixed.
- Trust account reconciliation correct on plea outcomes.
- Balance clamps and NaN guards across financial paths.
UI / Accessibility
- WCAG AA contrast on secondary and muted text.
- 12px minimum text size; added missing aria-labels.
- Error boundaries on all major game screens — a single broken sub-panel won't take down the whole view.
- Standardized button styles (AmbiButton) and card-selector focus states across courtroom UI.
- Notification IDs no longer collide when several fire in the same instant.
- Glossary panel has its own local search state and clears on close.
Performance
- Glossary list selector memoized — eliminates a major re-render storm whenever the glossary was open or mounted.
- Tailwind safelist trimmed.
Determinism
- All court simulators (objection rolls, Daubert hearings, frivolous-motion checks, mistrial motions, etc.) now use seeded RNG. Same save + same actions
= same outcomes. No more wall-clock leaks into gameplay.
Build / Engine
- Migrated from Create React App to Vite (faster loads, smaller bundle).
- Upgraded to Electron 39 and electron-builder 26.
Security
- Patched tmp path-traversal advisory (build-time only, no runtime player impact).
