- Mobile match controls (codex #1 High): 3 touch zones внизу MatchScene
(L / BOOST / R). Visible semi-transparent overlay'и; работает и на mouse,
и на touch. Keyboard input теперь optional (this.keys?), не падает на
headless mobile.
- Turbo first-hit bug (codex #2): guard на lastHitTime > 0 — иначе первый
удар по turbo в первую секунду давал 0 очков (now < 0 + 1000).
- AI behavior diff (codex #3): добавлен PersonalityModifier (triggerDistBonus,
reliabilityMul, reactionMul). Defensive: +reliability, -reaction.
Aggressive: +trigger distance, -reliability. Ghost: 15% «эхо-double-swing»
(обе стороны одновременно). Trickster уже имел jitter modifier.
Поведенческие отличия теперь должны быть различимы за 5 матчей.
- Favicon 404 (codex #4 Low): inline SVG favicon в index.html, no more
console noise.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Curve bumper: spin-modifier ±35° на отскоке (детерминированный знак на bumper)
+ визуальный вихрь-индикатор. Теперь curve механически отличается от standard.
- Easy/Medium AI delta: распознавательная дистанция (Easy 150px / Medium 280px),
reliability (Easy 0.75 / Medium 0.95). difficulty прокидывается из каждой
personality в shouldActivateFlipperBase. Hard остаётся placeholder для Phase 3.
- Share button на ResultScene: snapshot canvas → PNG blob → platform.shareImage().
Mock логирует, YG использует SDK share. Telemetry: share_clicked / share_failed.
- Setup UX переписан: палитра типов сверху (4 типа + trash) + tap-палитра-tap-слот
(unified mobile/desktop) + drag-from-palette ghost (desktop). Long-tap слота без
выбранного типа удаляет содержимое (быстрый shortcut). Заменил cycle-on-click
на normalуй setup, как в DoD.
Closes codex finding #2 (Phase 2 DoD gap).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>