0.2.3: prepare follow-up fixes and client features (#407, #408, #410, #413, #431, #435, #436, #440, #444)

Add special-target activation without bypassing attack cadence, cooperative
card preferences and emotes, skill sound banks, per-operator voice choices,
text sizing, install prompts, closed-tab recovery and unanimous setup rerolls.
Retain late deployment elapsed time and resolve echo/counter pulses without
recursive hook overflow. Independent final review remains pending.

Golden: roster-016, roster-035, roster-036, roster-045;
boss-boss_1-pair, boss-boss_3-pair, boss-boss_5-pair, boss-boss_7-pair,
hidden-boss_9-pair; solo-HARD-9-boosted: Lemuen attack cadence.
diy-132: Necras extra activation targets.
coop2-NORMAL-14-standins: cooperative purchase preference and simulation fixes.
hidden-boss_10-solo: echo pulse FIFO resolution.
See DESIGN 28.13-28.24 for assumptions, sources and contributor credit.
This commit is contained in:
sganggs committed 2026-10-09 22:55:24 +08:00
1 parent 314564c139
commit f3658a0dd4
104 files changed
+3674 -741

No files matched your search

+18 -2
View File
@@ -125,6 +125,22 @@ html {
background: var(--bg-0);
}
/* ---- text root: 设置 →「文字大小」 ---------------------------------------------------------------
1rem above is the LAYOUT root, and five modules convert it to pixels with getComputedStyle:
ui/fieldHost.js hudPadding / hudBands (the prep camera's HUD clearance), ui/gameLogic/panel.js
panelSlots (which side the detail card docks), ui/underframe.js (the tile labels' pixel budget) and
ui/fallbackField.js (the DOM board) — raising it would move the board, not just the text.
--t is the TEXT root: it appears only in font-size declarations, so a player can enlarge the
interface text without touching any layout. The field itself is sized from host.clientWidth /
clientHeight (render/app.js), which no font-size can reach.
小 = 1rem reproduces the design's own sizes exactly, on every device. The other steps keep the
desktop gentle and lift the phone: 1rem there is clamped at 40 px by the rule above, which is what
made the .18rem body text 7.2 CSS px. */
:root { --t: 1rem; }
:root[data-text="md"] { --t: max(1rem, 64px); }
:root[data-text="lg"] { --t: max(calc(1rem * 1.15), 76px); }
:root[data-text="xl"] { --t: max(calc(1rem * 1.3), 88px); }
*, *::before, *::after { box-sizing: border-box; }
body {
@@ -134,7 +150,7 @@ body {
background: var(--bg-0);
color: var(--text-hi);
font-family: var(--font-cjk);
font-size: .18rem;
font-size: calc(.18 * var(--t));
line-height: 1.5;
font-weight: 400;
-webkit-font-smoothing: antialiased;
@@ -170,7 +186,7 @@ h1, h2, h3, h4, p { margin: 0; }
.display { font-family: var(--font-display); text-transform: uppercase; letter-spacing: .12em; }
.micro {
font-family: var(--font-display);
font-size: .11rem;
font-size: calc(.11 * var(--t));
line-height: 1.2;
letter-spacing: .18em;
text-transform: uppercase;