Patch Notes
Ashen Throne Changelog
Every balance pass, fix, and feature shipped to the open beta. Newest first.
New & Changed
- the Gauntlet's crawler and bosses are live 3D only, with one retry at Low, then the card (
304ce60) - live 3D on iPhone and iPad, iOS Safari defaults to Graphics Low (
4fc8ae7) - staging soak skill and kit (owner-provisioned profiles, waves, validators) (#1516) (
2b634da) - ops: alt-bot lockout tool plus its contract guard (
ea5566d) - telemetry: recover the two numbers the error feed could not see (
7c221d3) - telemetry: give client errors a severity so the feed is signal (
ad81c54) - universal ground is the only map ground, old ground files retired (
eab4f54) - region backdrops, so no surface outside the map reads the ground set (
35e38f5) - universal ground is the only ground while it can run (
d3ea9d9) - map inspection draws the living map alive for judging (
698e03e) - modern map radial, energy borders, region chips, map pins, position pulse (
49873d3) - firelit windows flicker in the capitals at night (
3c40266) - crawlers leave wheel tracks that fade behind them (
5737338) - tumbleweeds roll across the plains and egrets keep to the frontier (
1864d81) - chimney smoke over the capitals and dust devils on the plains (
5b1a277) - cloud shadows drift across the world map; bird and firefly fixes (
6458805) - birds, fireflies, falling leaves and new canopy light on the world map (
8fee319) - map plate chips, colour-coded plates, darker 3D shadows, garage drag fix (
4b1a10a) - map nameplates, crawler ground glow, night light-box fix (
d023852) - sunlight shafts fall through the Verdant Reach canopy (
b4e6593) - smoke, steam, fire and embers rise from map props (
7deb3ed) - universal textures step 2b, ranged login warm and far-view prime (
41a63ac) - universal textures step 2a, map ground streams one UASTC file per layer (
d898aa0) - plants sway in every region of the world map (
4d32c39) - universal textures step 1, Basis UASTC transcoding in a worker (
1faacd9) - boss shot hitboxes match the drawn body; EmberGen hits on bosses (
ab1f9cc) - smoother brute walk, 32 frames at 24fps (
ef8d38f) - industrial sites and captured districts smoke on the map (
a7372f4) - add G18 Gauntlet enemy models and v3 atlas bakes (
d7b0be4) - swap EmberGen flipbooks in for Gauntlet, map and replay effects (
44bfefb) - rebuild G17 VFX library from isometric sources (
d9f03e4) - add palette-driven EmberGen VFX library (
cec08af) - Gauntlet fire attacks burn with EmberGen flipbooks (
cef9da0) - add Knell void fire manhwa loop atlas and proofs (
06a0e35) - burning wrecks on the map use the G10 fire loop (
58d063a) - add G10 manhwa burning wreck fire loop (
efebd49) - EmberGen explosion flipbook on crawler and boss deaths (
1621f39) - live 3D platform gate, outcome telemetry, drop dead F2 models (
f1c7499) - add manhwa explosion flipbook and reproducible art pipeline (
883bf80) - bake crawler atlases from shared live rig (
265d530) - live 3D crawler and bosses on by default (
31c25ca) - paint Gauntlet walls and light the firestorm (
e5e236e) - render Gauntlet bosses in shared 3D pass (
f0b7576) - share Gauntlet lighting and geometric normals (
4b8c6c7) - add live 3D Gauntlet crawler rig (
59e0a2e) - replace Garage turret with painted Tripo recoil rig (
d30cc5a) - add live 3D Garage hero and shared crawler rigs (
568aa81) - add shared map lighting and live crawler night emission (
02fe66b) - add desktop live F2 crawler proof on the world map (
84ae9b0) - build real Mark II F2 from Tripo model (
c6fdd30) - sprite-pipeline: Meshy 7.1 quality flags and the Higgsfield 3D route (
fe48aec) - add Mark II F2 fallback asset and toon renders (
ca8a2d1) - crawler map shadow drawn at alpha 0.75 (
3a6db8d)
Fixes
- Gauntlet load bounds stay with their visit and the 3D card stops the stage (
3d1c29b) - the Gauntlet 3D card is terminal and free, honors crash-guard level 2, and bounds model loads (
c533171) - an orphaned boss entrance mask no longer draws a rectangle over the live boss (
b503cb7) - Garage flick timing reads the input time, and its inertia check waits for frames (
7ab6e91) - the Gauntlet arms the crash guard, and withdrawn rung records read as Low (
64464a4) - key the tutorial squad-write skip on the sandbox commander id (soak F-007) (
c526ed6) - an injured defender's event hospital fill takes no troops (
7186b5f) - address the F-006 review of the update prompt fix (
e7a2348) - no server writes for sandbox commanders in the tutorial (soak F-007) (
f7fc53d) - heat pauses while the crawler defender is injured, and the raid mail says why (
1a37b70) - stop the false Update Available prompt on pages already current (soak F-006) (
13e5ec3) - an injured crawler defender holds the slot but cannot battle (
52456d8) - ota: Android manifest download survives a WorkManager stop (
f88ca6e) - change-scoped guard selection sees .claude paths, calls, arrays and templates (#1518) (
32c95cb) - the Gauntlet waits for its art instead of showing debug shapes (soak F-003) (#1520) (
28a738c) - the player picks the crawler defender, and an injured defender stays the defender (
19088ba) - consolidate the live 3D player notes and correct the iOS claims (
cfb24fa) - ota: iOS manifest downloads time out on stalls, not on elapsed time (
85c2a11) - ci: bootstrap the schema in verify-alt-bot-lock section H (
8135d9e) - staging soak batch 2 (haul panel refresh, site tap, replay HUD, Knell toast, troop refresh, defeat label, message punctuation) (#1510) (
a6089a7) - repair two staging guards broken by #1511 (#1513) (
b26088c) - map: warm the shadow atlases the loader has always asked for (
2eceeb6) - pixi: stop a missed texture manifest costing 4x GPU memory for the session (
8a88510) - staging soak batch 1 (world boss mail, squad losses, site tiles, Gauntlet exit, defender pick, tutorial conduit, send warning, touch) (#1509) (
16de22b) - audio: stop a short combat warm from latching for the whole session (
ab1e122) - ota: size the iOS per-file wall clock to the payload, not a stale literal (
c587a33) - warm the texture transcoder at the login gate so the first map shows ground (#1508) (
6218faf) - live 3D survives a Graphics change, and crawlers draw above city art (#1507) (
71f36ec) - a stale Gauntlet enemy sheet skips its lighting instead of dropping every atlas (#1506) (
74bff00) - markii summary reports skipped LFS content checks (
0ffb571) - graphics guards run on a checkout without LFS content, without rg or the EmberGen source (
ebb921c) - guards follow the merged ground and GPU card, docs reviews refreshed (
a5011c8) - integrate the universal-only ground merge (receipts, telemetry guard, normals check, one note) (
acd896a) - page on a second render-process recovery (
78fc85c) - catalogue three designed-countable client recoveries as benign (
1a6f46c) - countable errors for the new graphics features, alliance-wide world boss jackpot (
abfa776) - world boss hidden in the Deep Wastes, one short message per kill, software GL defaults to Low (
53ea067) - anomaly-scan: stop paging a reinforcement chain as a double-battle (#1503) (
4b3acd9) - universal ground keeps its lamp light (normals pass sees it under its region key) (
9cbb47f) - stop warming unused region photos at login; correct Deep Wastes fog docs (
689b111) - universal ground survives detail-flip evictions, holds one copy per level (
d284375) - outer wastes region plates drop the eye chip (the ring has fog now) (
6d9f444) - smooth dust devil loop, devils only in Sunder Basin, smaller tumbleweeds (
0aaaa60) - wheel tracks sit under the crawler, and track and hearth hardening (
18c1a98) - leaves hold still in rising wind, rain lays the dust, map sheets retry (
4cdca12) - storms bend map plants and night fire glow dims behind vehicles (
7983e15) - map ground detail follows the focus region, no stuck far mini (
396df0f) - translucent void fire, fire loop and explosion flipbooks (
f9073f3) - stamp the Gauntlet renderer owner before the boss audio gate (
a7b7483) - Citadel capture smoke reads as columns, two layers each (
d485b97) - brute death keeps the walker's size, with a blast and landing dust (
5ca496e) - translucent smoke in the effects, no muzzle smoke, Gauntlet launch race (
23d3b5e) - native skips the G18 enemy models no runtime loads (
50dda21) - flipbook manifests ride the code plane; exempt CRAWLER_WRECK from the advisor ledger (
5c55bdf) - restore shaded form to G18 enemies (
681e246) - make G18 enemies readable against Gauntlet floors (
f5eaaff) - soften G17 dust puff interior edge (
2c4e94d) - the Gauntlet crawler keeps its original size (
5bd1bd2) - default crawler reads the same size as the Mark II (
71f0fd0) - map wrecks are crawler-sized and drop the loot bag (
394555a) - boss HP bar syncs first in the map render again (
954bc8c) - native ships inspection art as its KTX2 twin only (
1209496) - wreck fire does not move the wreck loot label (
d4d0ff6) - live 3D loads on the built web and store clients (
7fe7532) - boss HDR targets actually allocate as half float (
bd7a7fc) - live 3D review fixes (gate fails closed, versioned models, held frames) (
058f28c) - restore explosion volume and warm smoke for G9 round 2 (
c08df87) - draw the new Gauntlet walls at Graphics Low (
67ed5f4) - measure crawler ground footprints from the live rig (
c3021a5) - cache the live 3D model files at the edge (
4aa8d94) - restore crawler proportions and use GPU proof browsers (
9ed67bc) - classify gauntlet normal buffer writers (
96ea69f) - light Gauntlet fire receivers and ground wall kits (
a68b557) - preserve Gauntlet boss detail at hit peak (
d5a9fdf) - restore Gauntlet boss bake identities (
89dc4d6) - unify live crawler Blender view and skin selection (
1a9e4b6) - share map crawler materials and audit G2 colour parity (
5c99b32) - align Gauntlet crawler shots and atlas presentation (
82c2179) - move after an unfinalized arrival departs from the arrival tile (
cac3022) - preserve painted map exposure and night lighting (
ca28bb6) - finish regional inspection art and mobile closer zoom (
5c34141) - ground crawler footprints and unlock sharp inspection zoom (
0af9ad9) - contain crawler footprints and gate inspection zoom (
a61e68c) - correct live crawler colour and soften shadow at 38 degrees (
5884dc3) - live 3D crawler camera at the owner's 38 degree elevation (
8b1af19)
Performance
- night-light occlusion and prop fx keys do their work once (
f8f0c5d) - smoother map and Gauntlet on phones and web (render reuse, glow ring, half-rate lighting) (
a205716) - map normals pass skips a terrain that can only draw black (
ed36c07) - finale duo at Graphics Low renders one boss fresh per frame (
3eea954) - 3D finale duo and map at Low, cheaper lite pass (
f87c272) - run the Gauntlet 3D path at Graphics Low with a lite pass (
d84f534) - 1024 model textures in the field, 3D opt-in on Medium phones (
e261a90) - load Gauntlet 3D models instead of their 2D atlases (
0b5341a)
Internal
- re-record graphics receipts after the second Gauntlet review fixes (
2964c29) - re-record graphics receipts after the Gauntlet review fixes (
840034e) - context and telemetry guards follow the live-only Gauntlet (
a585111) - Garage wheel contact speed measured per simulated second (
d158d3b) - re-record graphics receipts for the live-only Gauntlet (
6b491ae) - Garage flick replays timed input on a slow renderer (
4190dd5) - re-record the gauntlet normal-writers receipt for the game.html meta (
93abfd0) - bound the defender race legs so a collision cannot hold the row lock (
bb333bf) - pixi: make the non-latching manifest assertion distance-independent (
5a27e88) - iOS living-map frame budget, autopilot GL counters and hotspots (
3bedd60) - re-record rig and Gauntlet boss receipts after the smoke and duo changes (
874c069) - re-record Gauntlet and rig proof receipts after the brute and boss-hit changes (
787a693) - re-record the Gauntlet and rig proof receipts after the effects review (
1b71714) - re-record receipts and announcement coverage after the G18 enemies (
a37210f) - re-record Gauntlet proof receipts after the effects swap-in (
650b6b1) - re-record Gauntlet proof receipts after the flipbook fire (
65eb54c) - re-record rig proof receipt after the wreck resize (
2162ff5) - re-record map lighting receipt after the asset resolver change (
36bdf66) - re-record proof receipts after the asset resolver change (
7c10a4f) - store smoke tolerates the offline live 3D gate line (
b6e3b92) - re-express guards the 3D branch moved, re-review docs pages (
d7c2970) - re-record proof receipts after the half-float boss fix (
e58d52a) - re-record proof receipts after the live 3D review fixes (
3e97c18) - guard the Gauntlet live-3D load bounds and atlas fallbacks (
fda2c34) - register the G8 turret comparison in tile space (
1723c2f) - re-record 3D proof receipts against the live-default tree (
4c74c81) - player notes say a Gauntlet GPU failure keeps the run (
4869123) - the Gauntlet card is a free leave, crash-guard level 2 and the model load bound (
93a7917) - player notes say Gauntlet bosses and crawler are always 3D (
42159e8) - note the orphaned print-mask check (C8) in the 3D policy guard (
2adfe2b) - the Gauntlet is live 3D only, the ladder has no 3D-off rung (
69a857c) - staging soak record, gate 11, and the soak replaces the chaos-team gate (#1519) (
5bc5398) - re-stamp docs pages after merging staging's config changes (
e65c204) - re-stamp the barracks docs page review after the defender section (
f4aa950) - re-stamp docs pages sourced from gameConfig after the live 3D gate change (
fbd1263) - regenerate the guards index for verify-alt-bot-lock (
fa381ee) - record the 2026-09-27 alt-bot lockout and its forensics (
6113c8e) - CLAUDE.md for Opus 5.5 (owner rules, narrowed Rule 6, pointers, area files) (#1512) (
e0beeaa) - player notes for the three transient-failure fixes (
2d9296c) - condensed staging soak plan for the next session (gate 11) (
fd315ac) - universal-only ground on web and iOS, lamp light, Verdant night (
2e29065) - rendering docs, graphics skills and CLAUDE.md cleanup before the map rework (
fd10751) - iOS test plan for universal textures (
62613ab) - flipbook translucency run log, announcement record refreshed (
7c187ce) - gate 8 re-run on the merged tree, announcement record refreshed (
a7e8597) - Pixel 3a native build performance and memory, live 3D announcement coverage restored (
5f31d65) - internal-only announcement disposition for the duo render budget (
8a0f8e4) - plan records the enemy decision, brute polish and boss hitboxes (
6e98bc4) - test-run log for the effects review and translucency pass (
eda110c) - plan records the effects review and the G18 restart (
c05c2b0) - G15 fog needs an owner call, the map already has tiling mist (
ecc563b) - test-run log for the G18 enemies, G16 smoke and the gate 8 sweep (
9f67e97) - test-run log for the EmberGen effects swap-in (
9e8f9cb) - announcement notes for the Gauntlet flipbook fire (
df7a078) - plan the fire and smoke effects library (
eedd660) - plan the next EmberGen effects and the crawler size fix (
1916e9f) - test run for live 3D on built bundles and native (
3383c88) - re-record live 3D announcement notes (
e5f71d2) - readiness gates 4, 7 and 10 closed (
9ee4415) - re-record live 3D announcement notes after the loader change (
c6ccecd) - announcement notes for live 3D crawlers, bosses and effects (
7553240) - live 3D follow-ups test run and coverage row (
d151e9e) - live 3D performance and memory report, coverage log (
944e11b) - Garage and Gauntlet 3D parity plan with the turret design (
436fbf7) - overnight judgement package for the 3D crawler size, zoom and lighting goal (
f31b5ab) - style canon names the canonical map sun instead of upper left (
a805d21) - defer the world refactor, set the 3D and lighting session goal (
2b3df34) - natural world layout, terrain pipeline and runtime options in the refactor plan (
8b09408) - world scale refactor plan (bigger tiles, relief terrain, frontier flip) (
c8d5960) - no default decimation for 3D models (
6a95094) - render-scale refactor ruling, one crawler per tile (
299744a) - fantasy-manhwa style canon for all new art assets (
2e10ddc) - lighting track follows the 3D crawler in the priority order (
63988e5) - record 3D-first priority ruling for the restyle track (
396998c) - style model training launched, F2 3D candidates handed to astra (
e1faa7d) - lighting track and tool list amendment in the graphics plan (
effdb49) - add crawler shading and controlled camera studies (
ebfa48d) - astra review of the graphics plan, response, and the manhwa restyle section (
6192bdb) - living map section, swaying doodads, smoke, fog depth and god rays (
9e10c69) - correct the MeshStandardMaterial claim in the 3D crawler stack (
1e2ab12) - 3D crawler on 2D map, root cause of the iso jank and a rendered proof (
12abed2) - graphics fidelity research, 2.5D crawler layer feasibility and paid tool stack (
0e4fb70) - keep the boss-audio wiring pin in reach and re-stamp docs pages (
3db2fcb) - rebind the iOS live 3D disposition after merging staging (
9c00a8a) - retire 30 wired-in look and copy guards (batch C1) (#1517) (
8c2f256) - fold 21 duplicate guards into their absorbing guards (batch B) (#1515) (
21eadc5) - refresh the disposition hash after merging staging (
ba67490) - record the internal-only disposition for the telemetry and OTA changes (
731fbd4) - faster iteration (lenient receipts, comment-blind hashes, parallel guards, one-command re-record), CLAUDE.md and memory cleanup (
2ef5f50) - re-record the rig proof receipt after the universal ground merge (
ad7d4f9) - archive the G18 enemy restyle in art_assets (
8e4946e) - rebake crawler atlas manifests for the Mark II sized default (
86dc65f) - rebake crawler atlas manifests after the asset resolver change (
6a2f3ed) - rebake crawler atlas manifests after the half-float pass fix (
83f11d4) - rebake crawler atlas manifests after review fixes (
8af6448) - rebake crawler atlas manifests after the live pass edit (
f2abb67)
Other
- l10n: auto-translate locale artifacts (
60e3d0d) - l10n: auto-translate locale artifacts (
b9b6fb6) - l10n: auto-translate locale artifacts (
bdc95da) - l10n: auto-translate locale artifacts (
e0e27ff) - l10n: auto-translate locale artifacts (
d5fca8e) - l10n: auto-translate locale artifacts (
b1e2261) - l10n: auto-translate locale artifacts (
2c5eee9) - l10n: auto-translate locale artifacts (
6781baa) - l10n: auto-translate locale artifacts (
846e1da) - l10n: auto-translate locale artifacts (
37515b0) - l10n: auto-translate locale artifacts (
a6965b9) - l10n: auto-translate locale artifacts (
220e61c) - l10n: auto-translate locale artifacts (
e01828a) - art: inspection ground, overlay and prop art for every tiled region (
13016f6) - wip: live crawler round 3c partial (inspection band wiring), stopped for tile-scale refactor (
eecd805) - art: Bonefields 2048 inspection ground and overlay, refreshed compressed twins (
60e48e9) - wip: live crawler round 3 partial (own LOD, shadow, zoom 192), stopped for new sizing goal (
77e2236) - art: Mark III D image-to-3D candidates from Tripo H3.1 (
7b439b1) - art: cut LoRA v1 Bonefields into the client and capture the player view (
355358d) - art: bonefields subregion restyled through LoRA v1 with before/after mock (
3222d27) - art: first outputs from the trained F style model (LoRA v1) (
910b4c3) - art: raw Tripo F2 candidate strip (
9257572) - art: Mark II F2 image-to-3D candidates from Meshy 7 ultra and Tripo H3.1 (
7fe2ef2) - art: F restyles of the ribcage prop and Thornvale, training set for the style model (
4b65197) - art: toned F ground tile candidates for bonefields (
2f88c0c) - art: F style map-wide test on ground, city and prop, plus the execution log (
b5c2017) - art: second Scenario style pass for the Mark II, inked illustration and painted webtoon (
a02330f) - art: first Scenario style-direction pass for the Mark II crawler (
afc6ec9)
Fixes
- shop — a free offer or pack skips the ASH debit instead of tripping the strict spendAsh guard (
b5b6d4f) - polish Gauntlet UI and align event leaderboard scores (#1475) (
0edcd77)
Internal
- emission — SS Z pins every pack and offer cost finite, anchors the guard on the debit call (
7564156) - announcements — note that the Daily Free Drop and New Player Pack claim again (
e1341a0)
Other
- l10n: auto-translate locale artifacts (
4c9efcd)
New & Changed
- unify event UI, mobile Cup information and shared typography (#1466) (
7eddbd1) - cup — a kicked or disbanded member keeps their Cup share, a leaver forfeits it (
ee0696b) - zealy — gate the launch-sprint power quest to new accounts, share-first sprint plan, USDG figures (
cb632b3) - docs — a review record, and the seven systems the first pass left out (
09b18c9) - l10n — landing backfill for all five shipping locales (
4ef08f1) - l10n — landing backfill for the token and weekly cup pages (
e3c1488) - docs — a public documentation site at /docs (
582c9d8) - cup — rebuild the /cup landing page on the info-bubble idiom (
3cde71f) - weekly Alliance Cup with fee-funded pool, prize balances and receipt-proven payouts (
97fa89f) - token — token page cut from 662 visible words to 183, every explanation moved behind info bubbles, word budget guarded (
7baa0bd) - token — allowance card on the hub token page behind a signed-in route; guards and docs for the emission system (
1838863) - token — allowance ASH counts as spendable in the shop and rename UI; shop and rename payloads carry it; testnet allowance e2e script (
bd545cc) - token — Emission ASH server core: daily staking snapshot, spend-first allowance lots, expiry, one ASH debit helper (
92229ab) - zealy — $THRONE launch sprint quests: wallet-linked, throne-hold by tier, throne-staked, priced on the verified wallet read on chain (
8828865) - token — 15% timelocked team buy, staking + team-lock UI states on the token page, graduation marketing plan (
4101c84) - token — staking vault hardening pass: static analysis, random-drive invariants, Codex review fixes (
2c0329f) - token — canLaunch check for the Pons launch wallet on the operator page, CLI and runbook (
fa20113) - token,vault — $THRONE moves to Robinhood Chain via Pons; vault becomes multi-collection with legacy Base imports (
90e5390) - token — $THRONE launch state, hub token page with live CA flip, staking contracts, launch runbook (
08d92bb)
Fixes
- contracts — review pass on the audit fixes, launch-day path driven, Base chains keep a public RPC (
055134d) - contracts — vault deploy fails closed without a Pons factory or launcher, guard drives the authentication helper (
e52c86d) - contracts — authenticate the venue token against the Pons launch record, probe a real amount (
7557fe7) - contracts — close the astra audit round 1 findings on the team lock and both deploy scripts (
39f857c) - token — publish the chain's public RPC in the status payload, never the server's keyed one (
bbcf40f) - l10n — split the /cup fine print so it stops rendering English (
31a859a) - cup — pay the projection on the roster the sheet pays on, and say so in the rules (
41ef769) - cup,events — make the (i) tappable on a phone and stop labelling the prize USDC on Base (
234725b) - dev — let the landing dev server proxy to an https API target (
8065030) - cup,l10n — make the cup landing page and the shipped translations match the weekly config (
c949a8d) - debug — a concurrent debug spawn onto the same tile retries instead of a 500 (
41d5c44) - token — hold a pending stake until its own receipt, bound every page fetch, judge challenge expiry at claim time (
5882713) - token — close the astra round 4 findings on the lock pill, allowance founding and the cliff anchor (
3f0900c) - token — close the seven blocking findings of the astra round 3 review (
bde0cd8) - token — re-read the team lock and a connected wallet's vault on every poll, not only on an address change (
8d9c045) - token,vault — Codex round-two hardening for the $THRONE launch and the multi-collection vault (
28c6556)
Internal
- token — per-site debit exemptions, concurrent spends, alliance charge guard re-expressed for the one ASH debit; Zealy guard fails without a database (
77e324f) - token — real-browser e2e of every staking and allowance state over the WalletConnect relay; fix stale address after reset and future-tense copy beside a live vault (
ccd73b0) - test-runs — audit fragment in the house format (
9dae76c) - launch — audited team lock redeployed on Robinhood testnet (
69548c4) - launch — T-7 gate readings for the 2026-09-28 launch (
3bbbdcb) - launch — USDG confirmed on the Pons create page, launching from the Safe via Safe{Wallet} WalletConnect (
f56ea6e) - zealy — all fifteen sprint quests drafted, with the stand-ins each API task carries (
c0f5ac3) - zealy — record the drafted sprint board, the XP raffle confirmation and the API-quest blockers (
74f768f) - announcements — internal-only disposition for the Zealy new-account gate (
ec067cf) - distinguish mobile rewards information from token transactions (#1458) (
98e6cce) - token — record the Robinhood testnet rehearsal addresses and the lock transfer (
f62393d) - zealy — classify the new-account gate in the advisor ledger and re-record the docs reviews (
bff2322)
Other
- l10n: auto-translate locale artifacts (
b52be81) - l10n: auto-translate locale artifacts (
5a7c88f) - l10n: auto-translate locale artifacts (
e713217) - l10n: auto-translate locale artifacts (
e052e88) - l10n: auto-translate locale artifacts (
b5af211) - l10n: auto-translate locale artifacts (
a1e957c) - l10n: auto-translate locale artifacts (
f5b6bdb) - l10n: auto-translate locale artifacts (
2205a2a) - l10n: auto-translate locale artifacts (
3c4a0e4)
Fixes
- debug — extraction debug spawns take a free tile, force-loot and runLootCycle fire reliably (#1454) (
747d1d4) - extraction — a retreat forfeits only the reveal on screen; carry-cap guard runs on one server (#1453) (
3959ccb) - amm — a Market Square reward nobody received stays in the pool (
04990f7) - amm — pay the Market Square reward out of the swap fee instead of minting it (
6055b58) - db — the balance promotion survives a pool statement timeout (
1c50eb0) - db — store credit and resource balances as double precision instead of float4 (
c49d9c4)
Internal
- amm — derive qa-amm-routes expectations from live state (
ae1103c) - coverage matrix row and gaps for the AMM Market Square reward fix (
ad2f516) - coverage matrix row, Gap #68 closed and run fragment for balance column precision (
6ac391e) - record MCP guide publication (
19eda05)
Other
- l10n: auto-translate locale artifacts (
d3824a9)
New & Changed
- publish Ashen Throne MCP guide (
b0b604e)
Fixes
- ci — the QA server job binds a free port and fails loud if its own server dies (#1445) (
8e2a48e)
Internal
- record MCP release audit (
9bf2448)
New & Changed
- replace deals popup with maintained announcements inbox (
135fadc)
Fixes
- extraction — never let the tile index crash boot or abort a sweep (#1438) (
fcc2f1e) - ci — run the SEO browser guards when SEO content changes (#1439) (
538e793) - route Playwright guards to browser CI (
adcfb14) - resolve staging announcement conflicts (
1e50912) - run serial PR verification on isolated hosted capacity (
a8f9b6a) - allow Postgres service initialization on busy CI runners (
1f38bdc) - allow full changed-guard sweep to finish on shared runners (
5a12c12) - align announcements CI runners and test evidence (
bb40bb6) - anomaly-scan — probe faucet_new_source baseline once per candidate source (#1428) (
a1d28d5) - pvp — a site takeover takes only the site, and a crawler kill moves unbanked haul instead of copying it (#1434) (
d8b3e09) - prevent map lighting texture crashes and preserve terminal recovery gate (#1431) (
8730241) - shop — the deals sheet opens the ASH tab when the lead deal is first-purchase x2 (#1429) (
02b3a24) - extraction — dedupe never nudges a quest_objective tile (player_quests stores its target) (
25f8d91) - extraction — nothing stacks on a tile, one occupancy set plus a unique (x, y) index (
35bd02c)
Internal
- de-flake two staging guards (tile-index fixture collision, alliance objectives race) (#1440) (
0f2d7c7) - wait for asynchronous history and completion mail writes (
895a656) - isolate SEO release dates (
a41f0cf) - fixtures — takeover-loss-attribution seeds each fixture site on its own tile (
ea01577) - fixtures — fixture sites resolve to a free tile under the UNIQUE (x, y) index (
44b7355) - record live SEO guide verification (
e3e37ce)
Other
- l10n: auto-translate locale artifacts (
c9120a6)
New & Changed
- schedule approved MCP guide (
a4be0a7) - prioritize Ashen Throne MCP guide (
e855eba) - improve autonomous SEO publishing (
f7663a1)
Fixes
- landing — /mcp overflowed 220px on mobile and its CTA was invisible (#1425) (
58ed7f8)
New & Changed
- gauntlet — manhwa colour grade on the whole scene (
d1ae453) - mcp — get_surroundings, what the player's map paints, through the one visibility owner (
94f01ab) - mcp — telemetry family, dashboard tab, refresh and STOP audit, two rate anomaly checks (
cb9b742) - ops — faucet watch, a reward source paying above its own baseline pages (
1b76223) - ops — dry-run clawback for the Signal Conduit squish (
acea52c) - mcp — planner checks the current squad's power first, changes formation or commander only when it is inadequate (
488e841) - MCP phase 2, the agent plays extraction through the game's routes with a simulated planner and an in-game spectator (
9f90c4f)
Fixes
- guard — two stale verify guards that block the promote's CI (#1420) (
0e5ae66) - survivor — release the pointer ledger from window-level up/cancel so a finger lifted over the HUD cannot kill steering (
c6e9092) - tutorial — guest delete disarms the tutorial nav lock so the next guest gets the prologue (
44afbb8) - map — replace night-light render targets on viewport change instead of resizing in place (
fb0b12a) - combat — B2c must bound by the SPENDING slot's own gap, not the side's (
2ab749f) - ops — take the faucet baseline per ACTIVE day, and exclude the real operator-mail tag (
cb34a17) - mcp — game icon in the server info, the game address for the host, the AI chip bottom-centre (
5917652) - ops — make the clawback's RUN ONCE claim true by construction (
5922eca) - discord — a per-row answer must not strand a parked role-sync row either (
b487afc) - replay-oracle — walk every entry family in the resolver's emission order (
1f7375d) - combat — Thor's Fist banks Static Charges for the side, not the slot (
d001516) - siege — key the state cache on the rotation row so a leader handover cannot freeze the phase (
2794d33) - ops — clawback squishes deployed accounts and runs once (
207daf0) - discord — a subsystem refund must not un-park a parked role-sync row (
7517977) - replay-oracle — apply the primary link share before the splash families (
0a0e0f9) - map — extraction site ground highlight paints under the site sprite (#1405) (
b3f9956) - mcp — round eleven of the Codex grade, a bench under the row lock, return custody keyed by commander, the game's own away census for eligibility, structured planner failures and the newest refresh wins (
efd83ca) - mcp — round ten of the Codex grade, the defender rule under a concurrent assignment, agent loads always refreshing the Barracks, and return-raid custody in status, fingerprint and census (
b7a49e1) - mcp — round nine of the Codex grade, agent notifications observed not answered, the defender protected at the routes, deploy shortfalls from the reload, the authoritative squads-out census, and a false Gauntlet blocker on every plan (
c0544dc) - mcp — round eight of the Codex grade, the deploy bound to the verified recipe revision inside its transaction, UUID idempotency keys and no move while a squad is out (
5373366) - mcp — round seven of the Codex grade, revision-bound loads verified cell by cell, stage-aware post-write failures, no worker timer floor and queued-job expiry (
619331f) - mcp — round six of the Codex grade, a committed march never a throw, the site-zone move target, the verified load, a deadline-bounded worker and any adequate live squad kept (
a0d2d7f) - mcp — conservative wave bound, garrisoned sites refused, a committed march is never a 400, no plan redirects, the e2e follows the plan as written (
22c2e24) - mcp — bounded move preflight, unknown outcomes on every hop, plans end in a replan after a move, planner simulates only the reachable waves (
84c9573) - mcp — deadline bounds the route wait, lost answers are unknown outcomes, arrival wait is a state predicate, projected wallet, replan after a city exit (
846727f) - mcp — STOP fenced at the request, grant revocation at mint, deadlines through the planner queue, arrival wait in the plan, independent NPC draw (
9d90f9a) - mcp — phase 2 hardening from the Codex grade, no sign-in tool, STOP on the home shard, planner simulates the wave sequence from free troops on a worker thread (
0f8b0b8)
Performance
- db — index the live-objective set so the map read model stops seq-scanning player_quests (
5c89bc6)
Internal
- landing — tell players to keep Claude's detected connector defaults (
781b492) - ops — record the 2026-09-10 Signal Conduit clawback run (
a67bb40) - MCP phase 2 staging e2e run (56 + 71 green) (
99d0d16) - phase 2 scope, defender row and subsection order (
34f9808) - MCP phase 2 scope keeps the spectator bus and the run loop, sim for every tier, owner rules on catalysts, the Frontier and the defender (
861547d) - MCP phase 2 scope, deploy to extraction as a precondition graph with a planner and act tools (
52ea079)
Other
- l10n: auto-translate locale artifacts (
f341229) - l10n: auto-translate locale artifacts (
66f2cbe) - Trailer Mode: H hides the UI, both dev gyms switched on for filming (#1404) (
98b505c) - Scale battle replay stage to fill desktop viewports (
d87fb57) - l10n: auto-translate locale artifacts (
e7df3a9)
New & Changed
- Creator Program (hub-hosted YouTube creator rewards, creator kit, in-game link) (#1398) (
558f36b) - shop — Premium and VIP plates advertise Vault export; advisor knows the gate (
e186ee1) - vault,amm — one legendary per commander on import; ASH peg 10k, resources 1, cards 50k, synced to every shard; ASH pool deepened (
0839a35) - Signal Resonance grants +1 vision per level from base 7, tutorial beacon in sight (
b27c3a5) - vault — export needs Premium or VIP, costs 500 ASH (VIP -75%), value routes behind Turnstile (
b52781b) - advisor openers explain Cloud AI and MCP setup, landing header MCP tab, /mcp page (
82f93d2) - MCP server for ChatGPT and Claude (phase 1, read-only account and knowledge tools) (
8037f52)
Fixes
- veterans,hub — AI-scan max at/above 0.5 auto-rejects and blocks operator approval; hub relays the real client IP; readable operator verdicts (
0c81274) - guard — site-placement C3 accounts for live sites the sweep cannot move (
d6b7195) - ios-release — the TikTok app secret never rides the xcodebuild command line (#1397) (
228bd7b) - preserve map UI colors during night lighting (#1385) (
8ba323f) - guard — site-placement C3b derives from the quota, not a fixed count (#1393) (
12ec387) - guard — site-placement C3 asserts the origin quadrant is no longer over-full, not that no site ever returns (#1392) (
f480e24) - ios-ota — release lane applies and proves the Capgo patch; harden the session guard and drill fixtures (#1390) (
0df105f) - retain one iOS OTA network session across concurrent downloads (#1388) (
ed4d2cc) - glitch — allow the build CDN as a frame ancestor, not just glitch.fun (
34edcc2)
Performance
- world — correlate the observer vision read so researches stops seq-scanning (
3e2ee4b)
Internal
- verify-changed keeps its merge base; record iOS build 23 device + OTA verdict (
a60056e) - change-scoped guards on staging PRs, sharded promote sweep, two slow guards trimmed (
0b03700) - coverage fragment for the MCP phase 1 staging e2e run (
c2188f5) - MCP plan, open_game reuses the OAuth consent as the game login (
0a9e1e5) - phase 2 of the MCP plan is a socket command bus driving the real game (
f75baf9) - MCP plus plugin integration plan for the Cloud AI (ChatGPT and Claude) (
fdc802f) - ota — builtin hash set for shell 1788812573 (
37f8188)
Other
- l10n: auto-translate locale artifacts (
1ea179b) - l10n: auto-translate locale artifacts (
2104845)
New & Changed
- map — reduce map text, DOM site panel, tagged one-line city labels (
b759af7) - add painted map lighting and bounded mobile rendering (
8f73c22) - glitch — Glitch Store iframe build, frameable game shell, server-side playtime heartbeat (
d0bdc89) - client — loading screen redesign, content download drives the progress gauge (#1362) (
d520507) - electron — publish the direct-channel auto-update feed to R2 from the build workflow (
d6edf14) - alliance — rankings boards ride a horizontal scrolling rail (
6c1bf32) - extraction — retire the quadrant balancer, place roaming sites by demand-weighted deficit, log every relocation (
3ec0d36) - alliance — CLIMB THE ARCOLOGY objective and rankings board (floors cleared) (
af53a48) - track consented OpenAI qualified signups at Beat 3 (
cc26cc4) - alliance — reroll finished objectives, retune ladder chests, hide zero rankings (
c5050bf) - landing — chamfered house plates, mobile menu header, open-beta copy refresh (
1ec5c30) - enforce scheduled SEO publishing cadence (
020e824) - add Ashen Throne SEO content pipeline (
9f7dd3c)
Fixes
- map — DOM site panel says each fact once, expands instead of scrolling (
bfbd085) - ota — the bundle prune never touches a download in flight (
4165448) - ota — brotli twins for the code plane, and an in-session retry for a stalled download (
e18898f) - survivor — abandon an in-flight weather load when the loader is released (
c4acc8d) - vault — serialize mint submissions on the shared minter wallet, retry a nonce collision once (
770cf1a) - alliance — TASKS chip GO opens the objectives board; focused card glows instead of a FOCUS chip (
3eb5107) - electron — restore client scripts and devDependencies dropped by the lockfile-only install (
a818dcd) - electron — pack the splash logo, re-arm Google sign-in after logout, offline page, Electron 44 (
0939504) - tutorial — suppress the Citadel capture banner for tutorial and prologue players (
be07d42) - report — bound Urgent Quest starters to the raw-telemetry window, derive the chain tag (
444c6ac) - vercel — gate production on the last SUCCESSFUL deploy, and never on an empty VERCEL_ENV (
7ae751f) - vercel — only build production, and only when the project dir changed (
be71cae) - telemetry — a pino-shaped client error is keyed on what it says, not when (
2dd1334) - pixi — an evicted sharp-mip build is abandoned, not recorded as failed (
8d32d86) - events — defender engagement gate lists only in-flight raids, so the target index can serve it (
7292e38) - audio — background pause records intent, so a hidden edge mid-resume still suspends (
e621db6) - map — a stale /player snapshot can no longer rewind an in-flight crawler march (
655a519) - landing — follow page CTA says PLAY FREE (
d780cd5) - landing — shop category rail is a wrapping tile grid on phones, mint tab stacks (
6ce2d02)
Performance
- ios — keep the gate decode on Low; the bytes-only gate measured worse on device (
dea3c8f) - ios — bound the decoded-image cushion by bytes and stop decoding the gate images on Low (
d734a89)
Internal
- iOS arm of runbook 5b for the OTA brotli twins, prune race root-caused on device (
7b4a608) - iOS Low headroom pass, decoded cushion byte budget measured on Nigi (
0f2f2ba) - iOS map lighting memory pass on Nigi (medium + forced Low) with lighting autopilot (
c026d09) - tutorial e2e re-drive under restored Deep Wastes fog (
f99f59a) - make SDK event build inspectable (
81943b9) - test-runs — Pixel 3a device gate for OTA brotli twins (runbook 5b, Android arm) (
be2aa43) - feedback — date the tigerik evidence by its snowflake, not the capture day (
e48f304) - feedback — capture three forum signals from the 2026-09-06 watch tick (
d38d3bb)
Other
- l10n: auto-translate locale artifacts (
4268568) - l10n: auto-translate locale artifacts (
f5de814) - l10n: auto-translate locale artifacts (
a851b06) - l10n: auto-translate locale artifacts (
7db0a79) - l10n: auto-translate locale artifacts (
8bb2629) - Codex worktree snapshot: archive-cleanup (
518a447) - l10n: auto-translate locale artifacts (
8b8b49c) - l10n: auto-translate locale artifacts (
fa2fe1a) - l10n: auto-translate locale artifacts (
fb8d321) - l10n: auto-translate locale artifacts (
f1562e6)
New & Changed
- anti-abuse — ring adjustment mails each adjusted account an admin notice (
70d4ab6) - anti-abuse — challenge telemetry in event_log, friction report, one-time ring balance adjustment script (
e026424) - market — finite AMM daily cap at every Marketplace level, Premium removes it (
b80b7c0) - anti-abuse — one social account per player, Turnstile challenge on crowded IPs (
1733f46) - attribution — forward landing UTMs into the game and read the Play install referrer (
ecc86d2) - vault — one WalletConnect wallet rail for the game client and the hub (
1ed3620) - amm — count and watch POOL_STATE_SHIFTED swap refusals (gap #40, second half) (
949dbe5) - telemetry — per-family raw windows, screen:open/close to 7 days (
1854d7e) - alliance — retire bank grants and both permission toggles; tax is Leader plus Vice Leaders (
7b9660e) - alliance — war subsidy, rankings, unified alliance XP, and a polish pass on every alliance surface (
4f29142) - ops — one source for shard Postgres memory settings, applied by provisioning and watched (
cef39e0) - siege — rally pass 2, reserved staging cluster, launch rules, live timers, member cards (
3d4a382) - siege — alliance RALLY on the Citadel (
266471e) - alliance — directory hides dormant alliances behind SHOW ALL, keeps our standings and district holders (
e45b62c) - alliance — standings are one-way, both directions shown, three-state control (
5c349e5) - alliance — MOTD on connect, alliance directory, Discord feed and handles (
8bce247) - alliance — MOTD pinned in chat, alliance Discord invite, approval queue fixes (
7ef93a4) - hunters — log hunter:killed on both kill paths, guard the objective count (
21a6473) - alliance — objectives scoped from prod, caps as a share of target, tier-weighted training (
adcafa2) - alliance — objectives polish, own chest art, tooltips and motion pass (
6e81582) - alliance — objectives pay through the chest ladder only, claim opens a crate (
d7293ba) - alliance — objectives draw the war chest on completion (
fd1a3b7) - alliance — weekly Alliance Objectives (engine, hooks, panel, HUD focus, guard) (
885c7f9) - alliance — hub redesign with icon grid, sub-panels and bubble tooltips (
0f8f092)
Fixes
- store — re-aim the stale wallet chain-switch marker at the rail loader (
bffe1f6) - vault — chain-agnostic wallet copy on the vault surfaces (
41801d1) - vault — the wallet decides the chain, and the wallet app is brought forward (
372e50f) - vault — connect() keeps waiting while a WalletConnect pairing is in flight (
289b002) - anti-abuse — ring adjustment script newline escapes (
d39e2c7) - vault — the wallet rail awaits AppKit ready() before opening the connect modal (
79302dd) - barracks — recipe-intent squad model, server top-up, edit durability, preset sfx (
2307c53) - shop — the offer-margin guard counts the pack-sourcing mint (gap #40) (
84f892d) - vault — an import whose sweep budget is spent is rescued once its token is provably gone (
3579ec2) - alliance — objective credits fire after the transaction that earns them commits (
d043530) - telemetry — a wide backfill no longer blanks arena minutes; the advisor learns the rally (
71f1058) - alliance — hub live-update gates use the redesigned view keys; world-boss GO opens the panel (
320cb2e) - siege — a parked rally squad follows its player, is counted, and is never stranded (
d9885c3) - alliance — objectives credit real defences, mail only members, and lock in one order (
efa52b9) - css — drop the stray merge separator that swallowed the full-screen Cloud AI rule (
9275a0a) - vault — bound the import reservation a submitted burn hash holds (
e1b16af) - server — bind the analytics module where recordGrant was called unbound (
52f4f74) - ops — size shard Postgres memory to the hot set, not the plan ceiling (
2ab1a0a) - alliance — surgical rankings switches, full board titles, XP bubble and subsidy history copy (
bb27997) - siege — rally parks the whole army on one staging cell with an Army marker (
47ec1d0) - server — import analytics where recordGrant is called; re-aim six guards to the recipe model (#1329) (
2f7ab1b) - alliance — directory loads on open and repaints after a stance change (
ac2e130) - alliance — approval empty states drop their emoji glyphs (
741e0fe)
Internal
- vault — verify-stage diagnostics in the e2e; landing catalog re-extracted for the account copy (
e68309c) - vault — /account check waits on the page's own verified message and the signature landing; sign ladder logs a failed encoding (
0582b3a) - vault — e2e re-clicks the WalletConnect row and dumps the modal on a pairing stall (
2db03a5) - vault — landing surface in the wallet-rail e2e, landing l10n catalog re-extracted (
04b8d84) - combat — adversarial multi-target scenarios in the golden corpus (gap #39) (
547aa51) - shop — redeem-code behaviour contract (coverage gap #20) (
aa25d05) - crawler — move-coordinate refusal contract (coverage gap #8) (
d6c7ecc) - alliance — hub guard derives the tab vocabulary from assignments too (
9567452) - gauntlet — gate guard reads the siege attack site from siegeDeploy (
b5985ea) - siege — deploy-cost and deploy-march guards read the attack site from siegeDeploy (
5faea0d) - re-aim four guards stale against the siege-deploy move and the bank-grant retirement (
53291ae) - arena — arena-lock guard follows the siege attack gate into siegeDeploy (
b696a7e) - widen the unbound-module lint to forgotten requires; revive e2e-npx-chain (
522822d) - survivor — make the S5 tamper provably change the world (
da02dba) - cloud — verify-knowledge-freshness gives itself an explicit 4 GB heap (#1330) (
4cf6f12) - siege — phase-coverage guard reads the attack gate from siegeDeploy (
b4b9742) - anti-abuse — Turnstile widget created, keys wired into shard provisioning and the runbook (
a169ece) - wallet assessment, owner ruling: WalletConnect for everything, chain-agnostic (
329b070) - wallet UX assessment, Privy vs Base Account for the vault (
2f9f1c7) - staging drive fragment for the recipe-intent top-up (PR #1338) (
a3a50d9) - test-run fragment for the loop follow-ups on PR #1337 (
32135ad) - close coverage gap #40 (sourcing mint term + POOL_STATE_SHIFTED watch) (
54932f0) - test-run fragment for the 2026-09-04 pre-promote review and verify sweep (
3d3094a) - record the metric-cell loss the manual heartbeat prune caused (
ef17d57) - objectives design status reflects the shipped HUD focus chip (
cb7b0ff) - alliance objectives v1 detailed design (for approval) (
bc84955) - alliance system v2 design plan (objectives, war chest, loyalty) (
72a81d4) - Rise of Kingdoms alliance UI reference map with annotated screenshots (
40a5de6)
Other
- l10n: auto-translate locale artifacts (
7c97f0d) - l10n: auto-translate locale artifacts (
ba30824) - l10n: auto-translate locale artifacts (
b1f2b65) - l10n: auto-translate locale artifacts (
7e38343) - l10n: auto-translate locale artifacts (
4d40c09) - l10n: auto-translate locale artifacts (
aaa50e9) - l10n: auto-translate locale artifacts (
3ac08fe)
New & Changed
- db — audit-driven indexes, settled-history retention, and a DB health watch (
690adf5) - Cloud AI battle autopsy (VIP): engine re-fight, analysis card, full-screen formatted panel (
9a9bc65) - shop — SIMULATE button on the loot-crate bubble previews a crate opening (
cd6f055) - shop — 75 one-time ASH redeem codes (25 each at 2000, 1000, 500) (
e384e23) - profile — one free username change, then 500 ASH (
d2b04bf) - ui — shared claim feedback beat for every CLAIM control (
349994d) - client — deploy modal on the recipe model (load-on-open, deploy-by-reference) (
e6d321f) - client — recipe-model consumers (Arcology, squad modal, tutorial) (
cfb5c52) - client — Barracks recipe model (gesture-only saves, server loads, CAS journal) (
fcfb586) - db — one-time pre-rollout snapshot of commander_presets (
229c4a5) - server — deploy-by-reference via marchLiveSquad on all five surfaces (
2c72243) - server — per-slot CAS recipe routes + legacy bulk discard shim (
8eb467e) - server — single-tx squad-save with load mode + canonical away predicate (
38d9f18) - server — recipe-model store primitives (clamp, march, load, CAS columns) (
80ffa05) - telemetry — a casualty carries where it was earned (
26ef30b) - barracks — record what the reserve swap actually placed (
d00b3ac)
Fixes
- db — restore lost mail indexes and index three seq-scanning hot paths (
54997a6) - make verify-arena-tick-resilience deterministic on every date (
ff255c1) - ops — one global native-build floor for every shard, set to Android 38 / iOS 22 (
a8b609f) - preset — three soft-lock/crash defects found by the tutorial UI drive (
99eca45) - ui — hold the Tasks panel rebuild while a claim beat plays (
58dc034) - tutorial — graduation referenced an unimported analytics module (
872ee69) - preset — review fixes for the recipe model (absent-slot keep-live, seeds, re-materialize, cell-merged gestures) (
feed980) - server — robust availability clamp (own-holdings floor) + troops column fix (
942a57e) - survivor — make the advance transition a CAS inside issueNextStage (
79fa09f) - server — global squad lock order across every live-squad writer (
bf6eece) - survivor — resume a validated-but-not-advanced stage instead of closing the run (
c02986d) - standardize code-only OTA across shards (
98b3f76) - client — make the pending-action toast short and actionable (
947acf5) - ops — compensation is bounded to purchases made at the OLD contents (
17ec1dd) - barracks — log the clamped swap, not the raw request body (
668f846) - telemetry — the chest reports the hollow cores it credits (
c0883b6) - gauntlet — a full clear counts the last stage once, not twice (
aefe72a) - barracks — an unknown leadership cap must not clamp the swap (
2b38d1a) - barracks — clamp a refill to the commander's remaining leadership (
db41047) - barracks — the reserve swap commits both legs or neither (
3486125) - telemetry — the sink half - vault exports, transit fares, tutorial metal (
67b2d6f) - telemetry — a memory purge that worked is not a client error (
490fa78) - gauntlet — KILLS on the run card counts the run, not the last stage (
e4012ac) - telemetry — every ASH credit lane reaches the faucet ledger (
45e51bd) - events — the T3 rebate is earned on completion, not on the order (
64f64b4) - gauntlet — the run clock measures one run, not every run this session (
0059c0a) - ios — evict WebKit's memory cache at the map<->Gauntlet seam (
3f50ce9) - sandbox — a deliberate refusal is not a client error (
48c0d11) - tutorial — the beacon highlight is a map target, not a DOM one (
93705f3) - verify round 2 - Codex-found holes, and the three CI guard re-aims (
ebfef24) - vault — an unmined burn is offered a retry, not an endless finalize (
c366be7) - map — the fx sprite pool hands out corpses after a teardown (
3334428)
Internal
- db — C3 control drives B3's shared predicate (
194975c) - fix the claim-hold defer check in verify-claim-fx (
57ae82c) - verify-deploy-march guard (one primitive, clamp-not-refuse, atomic load-and-march) (
89745d0) - verify-preset-recipe guard (writer sweeps + 20 behavioral scenarios) (
024ccc0) - verify-squad-lock-order guard (writer discovery + conformance + races) (
2e4b86c) - test-log — 2026-09-03 prod DB audit run, matrix row, gaps (
392c1cb) - coverage-log fragment for the tutorial UI drive and the Reserves tile gap (
3f81d92) - coverage-log fragment for the recipe-model e2e + review fix run (
f77cc5e) - squad preset recipe model spec revision + implementation plan (rev 8) (
01b8d76) - bd — log 2026-09-01 proviwest inbound on L-2026-0002 (
29610c4) - player patch notes for the 2026-09-01 promote (
fb1aa64) - ios — the return-to-map ratchet run fragment and coverage row (
5cc1330) - run log for the pre-promote review + Pixel 3a memory pass (
2c23fcb) - feedback — capture three suggestions from the 2026-08-31 forum thread (
82690d0)
Other
- l10n: auto-translate locale artifacts (
12d07cb) - l10n: auto-translate locale artifacts (
d4a0d31) - l10n: auto-translate locale artifacts (
6dddcc0) - l10n: auto-translate locale artifacts (
4c0b120) - docs+client: guard entries for the recipe suite; defender-net prefers live mirror (
1906700) - l10n: auto-translate locale artifacts (
825c119) - l10n: auto-translate locale artifacts (
48258cf) - wip: bumpSlotCount reports what it placed (
888fe09) - ops: record that the cache compensation was sent (
4b0f1ab) - ops: exclude Zeninn and Ghost_ from the cache compensation (
32e6d7a) - ops: cache compensation script + patch-note correction for the T3 rule (
9284509) - l10n: auto-translate locale artifacts (
4466115) - l10n: auto-translate locale artifacts (
0ed3fa4) - l10n: auto-translate locale artifacts (
6f0e6b1) - l10n: auto-translate locale artifacts (
0ee92fc)
New & Changed
- restore frontier ground visual quality (
0596e16) - shop — ASH shelf type polish + the interstitial coordinator (
e70e5e0) - shop — GOLDEN ASHES poster redesign, one banner slot, gold tab (
64563c2) - client — armed-deal visibility, badge, slides, chip, interstitial (
6f3e1a1) - shop — the ASH coupon goes native, gains a fuse, and floors at $5 (
e6a10cd) - ui — tap a truncated error toast to read the whole message (
9a6dcd4) - market — deep-link every tradable asset to its codex entry (
c0e23fe) - shop — chamfer the shop surface and compact the pack manifest (
af6cc74) - events — T3 Training Day, half-price T3 with a tech-core rebate (
585fac3) - arena — initiative-split columns on the research-gap ladder (
29f08c0) - siege — dismissible battle stage, War-Host-only withdraw, 2+2 battle cadence (
1053b80) - feedback — repeatable cohort enrichment, and fold the forum poll into the watch loop (
c430c57) - feedback — pulse rounds, so the operator can ask the whole server (
a37dee0) - feedback — player-feedback signal system, seeded from the live Discord forum (
900138f) - prism gather vortex as wisp population (owner round 3) (
0e59bcd) - prism railgun round 2 (inward vortex, textured lance, rapid hue cycling) (
714feb8) - prism railgun boss ability animation (survivor renderer FX rig) (
7e92b4b)
Fixes
- promote-review fixes, the train-cancel mint, secondary link order (
415b5d7) - rebuild Haven roadside ruins (
3d305dc) - tune map grid visibility (
0b3b757) - survivor — the Gauntlet gate now opens from 6 tiles in every direction (
5602b8e) - siege — the archive filed every conquest as a defense (
abe5a70) - the contentPatch failure line carries no varying count (
fbb8a65) - release — the stash fallback could not restore an untracked artifact (
013cf3f)
Performance
- arena — cup-calibrated bracket depth + the research-gap ladder (30 min -> ~5) (
d108b74)
Internal
- market — the codex link is the asset icon and name, not a chip (
aae0b1a) - combat — realign two guards with the Vell ordering and Omen suppression (
aebf08c) - siege — E2E drive of the War Host battle UI changes + coverage log (
20d5da3) - prism railgun rig contract guard + shelf note (
1f61617) - combat — validate the Omen dodge-suppression knob against real cup battles (
d11a294) - arena — re-bake after the Vell and Omen rulings (
2d32336) - siege — commander balance - cup battles vs a fresh standardized arena run (
fb17c75) - siege — correct the cup metric, and the real finding - zero captures in nine days (
8e2a5a5) - siege — deep-dive analytics on the Alliance Siege Cup window (
0994108) - feedback — correct the shift-back verdict - the mechanic exists and is move-back (
899569d) - feedback — verdicts on the top five signals, measured against code and prod (
b4bdb58) - ios — record build 22 as verified on device (
06de326)
Other
- l10n: auto-translate locale artifacts (
0cd1f43) - l10n: auto-translate locale artifacts (
dc4a0d0) - l10n: translate the 19 promo-surface strings (
0de957d) - balance(combat): buff psionic_shockwave to 60% proc, disruption_field to 30% and stackable (
18bd569) - l10n: translate the 20 new T3 Training Day and shop strings (
30d1b12) - l10n: auto-translate locale artifacts (
2b5c9af) - balance(combat): resonance_link shield 25% at max rank, redistribution flat 50% (
1f4d69c) - balance(combat): Omen's dodge suppression reads SLOT attack power, snapshotted at battle start (
f202377) - balance(combat): Vell redistributes immediately; Omen cannot dodge what outguns him (
89bc8a0) - balance(siege): double capture time to 90 min solo (Throne 120) (
c50dabf)
New & Changed
- map — restore Deep Wastes fog (vision-circle model) and add fogged-ground low-memory mip gate (
020ab44) - agent search optimization pass 1 (AEO plumbing, store keywords, Clarity) (
8aa8570) - the daily Gauntlet task is claimed, never auto-granted (
f488850)
Fixes
- map — fog reaches full density at the frontier border (feather moved inside) (
6486ba9) - survivor — a release that lands mid-load installs nothing and leaks nothing (
7c37479) - audio — the releaseFamily kept-report stops minting a fingerprint per occurrence (
7f60b85) - survivor — an authoritative refusal is never retried (
21f1f6c) - client — a failed foreground proof must re-ask, or the hold bound is not a bound (
4e8a4c0) - cache the compressed-texture manifests (they gate the whole KTX2 path) (
be8bba0) - survivor — name the rarity in the cache-unlock reveal, and stop painting duplicates gold (
ff9ab4e) - client — the tiled-set countable line stops minting a fingerprint per ratio (
f49e04d) - oracle — the defibrillator on-death revive lands in the reconstruction (
229dc52) - client — the contentGate fail-open line is one fingerprint, not one per event (
88ce410) - vault — exporting a commander releases its baskets instead of stranding them (
37f5015) - ui — a resource-type reward chip opens its bubble instead of throwing (
391b443) - oracle — the virus reflect lands after every blast absolute, as the resolver does (
0a489cf)
Internal
- record agent search submission run results in kit ledger (
b53ec83) - bd — capture the zest_0x community-manager inbound as a lead (
5850810) - rewrite the Cloud AI design doc for the tiered advisor (#1260) (
4ccd9d6)
Other
- l10n: auto-translate locale artifacts (
d65f704) - l10n: auto-translate locale artifacts (
799a9cd) - l10n: auto-translate locale artifacts (
b568a58) - l10n: auto-translate locale artifacts (
322bd08) - l10n: auto-translate locale artifacts (
9137135) - l10n: auto-translate locale artifacts (
1b89711) - l10n: auto-translate locale artifacts (
a529131)
New & Changed
- cloud-ai — cover the whole game, and prove the coverage stays live (
11466b1) - arcology — elemental run modifiers at 1.5x, stat rolled per floor (
62cb8c6) - analytics — tag arcology casualties with the floor that caused them (
0d2642e) - ci — DEX headroom gate for the Play 2027 code-optimization bar (
6a4d86c) - ios — MetricKit exit reporting, engine-death detector, ASC vitals watch (
6483b71) - android — memory release paths, limiter kill reporting, OOM heap dumps (
e24986b) - vitals — watch Play memory, bitmap, LMK and slow-start metrics (
55a94bc) - analytics — add the arcology heal-cost and extraction-by-tier breakdown (
57de73e) - vitals — pull full ANR/crash report texts from the Play API (
1dd4465) - gauntlet — the boss gate is a MIST DOOR, not a wall (
4a7410c)
Fixes
- tune — de-stale the megatower tuning panel (
6fa6543) - review — bound the prepare gates, memoize frameCap, consume the ANR stash (
f8d4a9f) - reduce mobile render ANR pressure (
a8d9983) - analytics — ledger the salvage alloy refund as a Gauntlet faucet (
13f852c) - client — weak Android GPUs get the compact tier, whatever their RAM says (
aa3233c) - client — the appVisibility proof line must be one fingerprint, not one per event (
f0a3892) - tutorial — the ending barrage gets its clear window after the Voss line (
36d3900) - l10n — dev-gym labels and a CSS token string leave the player catalog (#1244) (
21e213a) - ui — the house-button ink opt-out must not reach ws- classes (#1243) (
5db631f) - ios — a refused version bump silently stopped the shell artifact landing (
0334e97) - ios — a failed release run left the tree dirty and blocked the next one (
fc87b08) - ios — the local release lane could not run from a non-interactive shell (
9ef36f8) - ci — land the stranded 1.0.8 OTA artifact, re-anchor three guards (
3729a09)
Internal
- arcology — move the season-board guard to the new payout directive (
c99e17c) - re-anchor two guards outgrown by the mode-EV review fix (#1240) (
f299875) - re-anchor two guards outgrown by the mode-EV review fix (
3e5375a) - test — Android native memory/ANR e2e on Pixel 3a (
351bb10) - Google Play 2027 quality requirements, measured exposure and plan (
fce40ad) - ios — record build 21 as verified on device (
e9c65d4) - ota — land the shell artifact for build 21, and put the version train back on reality (
b403648)
Other
- l10n: auto-translate locale artifacts (
701dba5) - balance(arcology): season board pays the epic chest at every tier (
2de249c) - balance(arcology): promote the tuned core band (floors 16-20) (
398220f) - l10n: auto-translate locale artifacts (
8a86148) - balance(arcology): halve the epic floor-20 chest to 30 cycles (
cf8c72e) - l10n: auto-translate locale artifacts (
b127892) - l10n: auto-translate locale artifacts (
d37554a) - l10n: auto-translate locale artifacts (
6517403)
New & Changed
- ui — chamfer the armory cards, detail chips/panels, and modal chrome (
343d449) - ui — outline canon for the house button (accent edge + label on grey) (
fb508f3) - ui — sweep every button family onto the house chamfered plate (
a5288e9) - ui — the house button, chamfered plate as the .btn standard (phase 1) (
3e4eaec) - ad — gate lifts onto a LIVE telegraph (
94474ad) - ad — hot open, the playable resumes the scene the cinematic leaves (
38107e2) - ad — TAP TO BEGIN gate, the activation + preload front door (
ba3696c) - ad — streaming music bridge, sound lands on the first tap even mid-decode (
2133f1c) - ad — network-chrome safe-zone reserve on ad platforms (
70bdbf1) - ad — tester single-file emit for artifact sharing (
367242b) - ad — 36s music loop at 96k (
39bd41c) - ad — ghost-chase damage bars, sound-on default, mute removed, top-bar spacing (
38e6d20) - ad — gritty tactical chrome, chamfered plates, gunmetal wells, gloss sweeps (
8c4408f) - ad — AAA UI pass, gesture guide, brand type, button states, smooth vignette (
68c0572) - ad — hero realism pass, two-sided shading, living emissives, motion grounding (
9f46d50) - ad — normal-map lighting, selective bloom, storm grade, native-res heroes (
d6c1bde) - ad — hyperbeam charge heat-up + quickening boil (reference parity) (
a0ca630) - ad — charge contact sheet, ground cast-light ramp, and a falsy-zero freeze bug (
be73e64) - ad — level-up glow shader on the crawler (
a316226) - ad — level-up sticks to the crawler, floating text, owner level-up sting (
be4a7a7) - ad — per-move Hunter audio, crawler heal sfx, ported death ceremony (
e41a7c2) - ad — owner ladder, portrait staging, reference ghost trail, real turret bolts (
8a56c94) - ad — owner pass - hull-height attacks, hit flash shader, derived normal lighting (
e0159b8) - ad — iteration 2 - ground mottling, boss shot trails, level slow-mo, under 2MB (
2b1d99d) - ad — reference-graded iteration - rain, rune entrance, night depth, perf tier (
05e5d6c) - ad — graphics-parity pass - fenced boss pen, beam rig, abilities, baked shadows (
3dd96de) - ad — playable-ad M2+M3 - real art, audio sprite, shader grade, camera framing (
5746b6d) - ad — playable-ad vertical slice M1 - real sim + ad decorator + greybox renderer (
37ba699) - quests — landmark GO arrows, real reward icons, click bubbles on every chip (
81ae0ac) - quests — daily Gauntlet task, 3 prime alloy, shown first when collapsed (
ce78785) - tutorial — Vael speaks at 1.2x with a breath before Ada resumes (
09ab9dc) - add privacy-limited TikTok qualified signup tracking (
b3c258e) - quests — arrow cue on the city whenever a GO targets one (
9246d4e) - tutorial — voice every character bark (
c02773d) - tutorial — one unified objective panel across mobile and desktop (
8c11785) - tutorial — character barks speak in the prologue's dialogue language (
146e088) - ui — polish the continuing-tip panel layout (
b619042) - tutorial — the extraction finds one cache, cutting the on-site wait to a third (
9efee13) - tutorial — tighten the opening camera and frame both objects (
1c31682) - tutorial — open at the beacon, retiring the generator and drive beats (
d8df237) - tutorial — retune Ada's narration to 1.15x without the chorus (
6d24e6b) - tutorial — remaster Ada's narration to sit with the other voices (
ab32205) - tutorial — long audio-coupled fade, and the cinematic never shows a raw video element (
9e2db6b) - tutorial — launch line at 1.4x tempo (
3a93441) - tutorial — Knell's dying-breath launch line is voiced (
75e151e) - audio — mobile loudness retune - the default mix comes up to ~-17 LUFS (
5e18828) - tutorial — the picked v3 Voss takes ship (
5b5fc2b) - tutorial — Voss speaks - both prologue lines voiced and wired (
846f8a2) - tutorial — Voss's prologue lines tightened for the voice session (
8253fb3) - tutorial — bombs under Voss's opening, SFX unlock on reload, world-ending death barrage (
1babee0) - tutorial — the prologue opens under bombardment and ends in the launch volley (
47144c5) - barracks — every train-popup unit stat opens a description bubble (
cd48d89) - analytics — per-mode troop-injury telemetry and heal-cost attribution (
cda576f) - tutorial — dev gym - jump to any beat, reset to the prologue (
43f2014) - tutorial — world-spaced marching-chevron road marker replaces the DOM arrow (
d7b143e) - tutorial — the staged prologue coach replaces the blocking controls popup (
ca9c13d) - analytics — per-game-mode engagement + $ato EV telemetry (MODES family) (
a2af4a4) - tutorial — thread the reclamation story through the tutorial copy (
5f8a4c3) - tutorial — the Gauntlet prologue plays before the cinematic, client-only (
9f2e8c6)
Fixes
- ios — the sign-in buttons could not be read (
15b6428) - ios — export signs manually, so cloud-signing permission stops blocking releases (
65d3f70) - ios — keep the wrapper marker inline, as verify-mobile-release requires (
e000f15) - ios — the release fallback lost its build-settings timeout, so nothing could archive (
f11aeb4) - ios — pin the TikTok SDK in Package.resolved, which its plugin commit missed (
70eb8dc) - ios — the TikTok plugin could not compile, so iOS could not build at all (
23aa13a) - l10n,guards — reward-bubble casing takes the locale map; unbreak the pixi-init guard (
3e82cd8) - quests — the daily Gauntlet flag survives a /player refetch (#1233) (
6596320) - tutorial — arm the extraction reveal at the modal's one door (
77db542) - tutorial — arm the extraction reveal at the modal's one door (
bf7f33f) - ui — clip-safe guidance highlight for chamfered buttons (
5bfb62c) - ui — house-button edge geometry, bevel lighting, legacy repaint cleanup (
e488bfa) - ad — pin the Hunter to its staged anchor through the pre-roll (
0601ac3) - ad — boot-time audio prewarm so music lands ON the first tap (
8d817db) - ad — audio gesture re-kick (Android artifact viewer), tester ships safe zones (
d7c6c71) - ad — turret-true bolts, thruster removal, contrast-first grade (
5f8f2f9) - ad — ramp the hyperbeam root so it stops reading as a hard edge (
7390138) - ad — port the hyperbeam heading lock (5004687) + measuring contact sheet (
783a6da) - ad — turret heading + placement, add turret contact sheet (
04ab299) - ad — preview-found defects - flash saturation, chroma white-out, stuck joystick (
ad859a9) - tutorial — the extraction reveal clock starts when the player looks (
3ebc96f) - align ad conversions with tutorial beat 3 (
44b1a6f) - ui — quicknav alignment floor retuned 20px -> 22px (
a77d415) - ui — quicknav alignment floor retuned 18px -> 20px (
f9e1285) - ui — restore the quicknav's 18px tasks-panel alignment floor (
b21f288) - quests — reward chips catch real taps instead of clicking through (
50707a8) - tutorial — self-healing urgent-quest handoff, plus maxout testing conveniences (
c7356e8) - map — weather overlay follows a desktop window resize (
eb67820) - gauntlet — battle notifications never interrupt a live run (
792a98d) - tutorial — suppress event announcements for sandbox players (
5df7d8e) - tutorial — Ada waits for a character bark to finish before narrating (
0fe60e8) - ui — the BONUS CACHE banner clears the slot reel (
18fee61) - tutorial — the extraction dwell follows the reveal, so the cache ceremony completes (
b220a21) - optimize Meta for qualified signups (
e511403) - tutorial — hold silence through the prologue handoff, restore the mix at beat 0 (
4a190e7) - audio — the intro cinematic joins the game's mix level (
7f5550f) - gauntlet — apply a tick's inputs in the order the validator replays them (
8874963) - analytics — filter the injury table on the window it actually sums (
b67db77) - client — the visible-edge release must PROVE the app is on screen (
4bdf4a5) - mode-ev-report — parse the real army and prize shapes, report unmeasurable attrition (
e498e21) - garage — revalidate the wallet on every entry so alloy matches the market (
4214d80) - analytics — isolate mode-ev-report enrichment queries, report degraded not zero (
5e8d810) - analytics — format negative net $ato in the MODES 7-day table (
224bd2b) - analytics — mode EV correctness from review (ash valuation, haul double-count, refunds) (
092cf54) - tutorial — three prologue review findings before merge (
f6f3bea) - analytics — log megatower overlay open on the fresh-run entry path, dedupe reopen logs (
20935fc) - map — a blind atlas latch releases when the resolver wakes; ktx2 rides the CDN (
ff96c8f) - arcology — weapon and augment editing honors the in-run loadout exemption (
2e7344b) - map — Gauntlet gate draws in painterly order like the citadel (
3483bbd) - show the overtime hold countdown on both citadel timer surfaces (
eb7d721) - megatower — route fight-loss injury through applyInjury so the lattice reduction applies (
49ffc9b) - client — store-shell gap art serves local + untainted, prewarm own-skin move atlas (
1c6350c) - guards — shim navigator so the Pixi teardown guard runs on CI's Node 20 (
de8c337) - guards — re-anchor five map-renderer guards to the refactored source shape (
5c616c2) - guards — classify the four promote blockers that are not anchor drift (
9685251) - bootstrap — await the v4 survivor migration, and guard the whole class (
62f66aa)
Internal
- ad — dead-code sweep and dedupe the playable-ad slice (
b30d9bd) - ios — pin the local release lane's secret source (
323615e) - re-anchor three guards outgrown by the prologue and tips work (
c61b65b) - tutorial — restore the opMount slice a later act-clean check still reads (
c858a20) - tutorial — act-clean tracks the extracted urgent-intro helper (
ca91c54) - enable TikTok debug events in device build (
0574475) - add credentialed Android SDK test build (
bd60fb4) - tutorial — the prologue contract guard, and prologue events flush urgently (
08151b9) - speed up manual Android test builds (
287ef4d) - record the clip-safe guidance-highlight rule (
445126d) - coverage — log the prologue owner-iteration round (
0024e17) - coverage — log the staged-coach verification run (
6352ad9) - coverage — log the tutorial-prologue build verification run (
678ece2) - lore — The Last Op canon - the Signal caused the Burn, crew-recall summons, Knell origin rewrite (
31c133c) - ios — compact tier measured for the first time; promote verdict inputs (
8c7227e) - ios — login gate and memory measured on device, blocker resolved at 83% (
887e929) - ios — record build 20 as verified on device (
207bb5a) - ota — land the builtin-hash artifact for iOS shell 1787705595 (build 20) (
e1f45ba) - ios — read the TikTok app secret from the login keychain (
4916d07) - guards — re-bake the audio defaults table and the survivor balance fingerprint (
439c262) - ota — builtin hash set for shell 1787703272 (#1234) (
b3ace4e)
Other
- l10n: auto-translate locale artifacts (
6f14ac0) - l10n: auto-translate locale artifacts (
8b54bf7) - l10n: auto-translate locale artifacts (
39b9261) - l10n: auto-translate locale artifacts (
4c55231) - balance(tutorial): prologue offense drops to rare, no affixes (
751a41f) - l10n: auto-translate locale artifacts (
1f01636)
New & Changed
- survivor — retire the boss ENRAGES toast banner (
affa0ad) - survivor — soften the night veil over live boss fx, light the hyperbeam through it (
0ab6bc5) - survivor — the ghost is pure light - ad-slice fade, glide wake, no dark paint (
c9e62fe) - survivor — each ghost is born dark and lightens through its life, shine in hue (
bb77780) - survivor — the ghost keeps the hull's shading, and the dodge gets its trail back (
305c6b7) - survivor — taper the beam streaks, and give the dash trail a shape (
0cb5009) - survivor — the vertical slice's charge motes, plus readable dash ghosts (
5471491) - survivor — the baked shadows turn with the hull (restored) (
5519833) - survivor — the baked shadows turn with the hull (
64fc14f) - survivor — boss-framing camera, hull-locked hyperbeam, lifted eye, swirling charge motes (
5004687) - survivor — port the ad's airborne Hunter and white hit flash (
4f9f874) - survivor — the map's sheet warp, ported - wavy weather, never the ground (
6a92741) - survivor — iso-feathered pocket masks, and they become every effect's default (
77fc657) - survivor — em_static goes cellular - every pocket on its own clock (
74ed56e) - survivor — em_static reads as static ON the ground (
3fc6d3c) - survivor — per-stage weather in the Gauntlet from the map's known-good effects (
1ff71a3) - map — weather contrast pass, Black Canopy effects, soft weather edges, crawler skin fix (
0100f96) - audio — weather beds and lightning on the world map (
8535e90) - map — weather layering by region, world-space weather, map gym, warm filter removed (
2439110) - graphics — a Low/Medium/High quality setting, so a crash-stepped device is not stuck blurry (
d2de455) - map — Gauntlet death ceremonies on the world map, death screen animates in after them (
f999afe) - hunter — one 16-heading Hunter atlas for map and Gauntlet, pursuit-intercept chase, one-tile hold, engage-window volley (
bfbc68c) - survivor — Mark II, Warden and Hunter rebaked at 256 (v3 split atlases) (
e9a5bef) - l10n — localize the paid /cup page, fix two game-surface term drifts (
f203e09) - l10n — translate the Gauntlet in all 5 locales, ship the marketing site in all 5 (
2854c05) - survivor — Gauntlet monthly leaderboard - fastest stage 1-10 clear, 500 ASH at the top (
dc36bb4) - audio — boss voice lines duck the whole mix; portal voice fades in (
c39992f) - survivor — the portal's summoning voice - Temporal Rift loop, 10s, stopped when the close ends (
e9d7154) - survivor — portal rings are gradient bands; the print head climbs void to crown; the column is rising rings (
eba0008) - survivor — portal depth - print head is a ring, near arcs over the boss, far halves behind (
e892705) - survivor — boss entrance is a summoning portal - void base, crown ring, rising energy (
87306bb) - audio — true-peak limiter on the master bus; boss beds lifted 2 dB (
5ebc6af) - survivor — over-length lines try 1.45x before the first-sentence cut (
6133fde) - survivor — Knell and Hunter voiced - 30 lines, per-boss chains, first-sentence cuts (
6ea6b72) - survivor — crawler stays halted through the boss dialogue (
e8c222f) - survivor — boss entrance window 6s -> 7s (one more second of dialog) (
5761188) - survivor — Rampart's signature opener - 'Trespasser, you deserve only one word: NO.' (
2418125) - survivor — boss lines replay every spawn; player-death TAUNTS (Rampart pilot voiced) (
6106023) - survivor — spawning boss untargetable; boss music on arena entry; final-boss track (
1a772b8) - survivor — voiced boss lines - Rampart pilot (ElevenLabs Smoke, Rampart post chain), 6s entrance, death beat (
0cbbf94) - survivor — four-slot boss lines - open, again, greed, death - all variants kept (
2b95df8) - survivor — Elden Ring boss gate; live intro with a one-shot halt; EMERGES toast retired (
c07cc85) - survivor — Elden Ring boss opening lines - portrait cinematic on entrance (
18f49ef) - survivor — black hole birth is the death exactly reversed (
d0db73e) - survivor — black hole BIRTH animation + voice, parity with the death (
cf66415) - survivor — wider twin-turret fan; stage 10 HP breaks the plateau (
bd495d0) - survivor — finale duo weaves weak attacks through recovery (
cd9a25d) - survivor — zoom persists across stages and runs, mobile defaults to 0.8 (
9d31c7d) - survivor — scene zoom (pinch + wheel) and cyclone speed retune (
9ebcfae) - survivor — floating touch joystick on the left half (
a94734f) - survivor — Rampart spins through the cyclone (
4227bd8) - survivor — halftone dot pattern on ground telegraphs (
cb6283f) - survivor — boss proper names, tier chip, lore doc (
9c3f270) - survivor — fire sweep contact bite - 400 base on first touch (
0b7903a) - survivor — keyhole arena bound - the energy fence IS the corridor wall (
6c9699a) - survivor — boss pocket grows to fit the index-2 orbit ring (
1b262d7) - survivor — volley 2 gets its slice, sweeps reach the rim, the scream waits for the flesh (
6b1569a) - survivor — sweep fan tracks-then-locks, wider spread, rays truncate honestly (
61821ca) - survivor — toll safe zone becomes a RING CORRIDOR + black hole death voice (
6106ff3) - survivor — the ANNULUS TOLL - whole-map death zone with a safe eye (
29a2100) - survivor — proper endings - extinguish front + singularity implosion (
6ffb718) - survivor — sweep ignites SEQUENTIALLY, void-flame contrast, Khron voices (
1975a96) - survivor — sweep rays shoot OUT of the black hole - radial, long (
55187a4) - survivor — sweep v2 - laser slice then 3D eruption wall (
6727451) - survivor — toll polish - charge declutter, sigil on impact, triple line sweep (
a25451c) - survivor — the Toll's black-hole apex - the zone becomes a damaging dome (
03988ac) - survivor — spellcaster sigil on the Toll's damage zone (
2d7f501) - survivor — the Toll goes volumetric - resonance, not fire (
1c4d127) - survivor — burn lines go volumetric - the hyperbeam craft on ground fire (
d86acd2) - survivor — dash-broken lock requires a player RETARGET to re-acquire (
adb897b) - survivor — dash breaks lock, entrance spotlight, crater rework, gym duo reroll (
7baa4fe) - survivor — boss damage taper to 8x, boss HP +30%, mid-ability death cleanup (
a9e9d1e) - survivor — crawler level costs retuned - energy-heavy, per-tier pricing (
a2495c4) - survivor — every supply cache rolls a guaranteed blueprint, dupes pay alloy (
bd0c1f2) - survivor — 16-heading iso turret atlas replaces the flat decal (
5183cd9) - survivor — affix rolls change identity, global affix consumption, speed compression, armory equip flash (
1d934a7) - map — mobile bake matches the tuned sharpness, ground-sharpness architecture doc (
d94844a) - map — sharpened mip chains for continuous ground sharpness, tiled KTX2 twins cut mobile texture memory 4x (
2b90467) - ui — armory and garage parity - loadout audio, picker motion, roll forge cycle, market shortfall route (
d42ad67) - survivor — stage 10 is a boss-only FINALE duo arena (
6393dc2) - survivor — voice the three audio gaps (powerup, dash ready, charge up) (
0b8fd0b) - survivor — knell artillery v2 - invisible base-speed track, frozen telegraph (
44a98cc) - survivor — knell_8 gym scenario (encounter index 2) (
764b5d1) - survivor — mid-run self-heal - retry with backoff on every server leg (
00f1476) - survivor — knell v4 batch - full-hull stages, shock burn, death card hold, toll clamp, artillery tracking, summon waves (
c207779) - survivor — trader stock pages at 4 with a free NEXT cycle (
15d0322) - survivor — validation gate on exit, alloy in plunder + haul ticker (
3eb456d) - survivor — death card, exit confirm + collection, alloy haul transit (
cc3bfdb) - survivor — Elden Ring retry model - checkpoints, no lives, exit collects (
857948e) - survivor — hunter dash softened, hyperbeam first-contact hit (
f478e39) - survivor — knell summon telegraph, hammer scaling, toll volumetrics (
8aede2b) - survivor — gate reprice, Charge Cycler dash line, line-wiring guard (
2c781f2) - survivor — gate button audio + drop stale BANK X PARTS sub (
befdd7c) - survivor — honest bullet hitbox, dash iframes, dash over walls (
90b7836) - survivor — cyclone bullets reach far past the screen (
d019edd) - survivor — Warden on THE DANCE + the CYCLONE bullet hell (
c90b4ff) - survivor — laser + volley voices, fixed 3s sweep with growing arc, warden turn parity (
90e15dc) - survivor — hyperbeam darkens the world and casts light (
ac31191) - survivor — clamped lance tracking, 90-degree hyperbeam, volumetric beam (
d178f42) - survivor — Hunter Prime moveset v2 - hyperbeam, tracking lance with burn lines, roaming volley, sideways dodge; iso ground telegraphs; ladder regrades waves only (
4655813) - survivor — hunter at 1.5x + chromatic trail to the reference bar (
e25f21e) - survivor — crawler-parity boss turn rate + chromatic ghost trail (
32fe183) - survivor — Hunter 16-heading crawler-parity bake + size dial-back (
6406fb3) - survivor — Hunter Prime production pass - THE DANCE, honest lance, size fix (
e805354) - survivor — gauntlet music, death-ceremony polish, steady wheel glow (
88160ae) - survivor — boss entrance + death ceremonies, spawn invulnerability (
ed92ff5) - survivor — Knell crawler-parity bake - 16-dir moving set with his own wheels (
a17e9ec) - survivor — boss facing parity layer 1 - smoothed heading, victim tracking, shadow (
aba651f) - survivor — toll encounter scaling - wider, faster, quick-succession chains (
ee8a214) - survivor — dimensional artillery shell + ground-plane hammer impacts (
ed16bdf) - survivor — toll blast quality pass - flash, implosion, iso-true wave, hot field (
3300993) - survivor — toll v4 - charge IS the telegraph, accurate wave, burning field (
639ec92) - survivor — THE DANCE - scripted boss rotation + toll v3 area detonation (
75b400a) - survivor — repair is committed, heals 60% base, Triage Protocol line to 80% (
d3f47b1) - survivor — the great compression - bar-fraction specials, flat curves (
3e76f99) - survivor — action hotkeys 1/2/3 + hold-to-steer (
97a132c) - survivor — Knell hammer v3 - heave, red fill telegraph, extreme-speed slam (
4e54406) - survivor — Knell v2 - hammer mortar patterns, halted two-wave toll, full voice (
6df217e) - survivor — parts retune, aimed warden fan, boss steal retired, flatter waves (
022e7e6) - survivor — the Gauntlet gate despawns, gates entry and respawns clean (
d74acc0) - map — landmark sprites survive far zoom (
b6d8418) - codex — Prime Alloy + Gauntlet entries, inventory equipment affixes (
cfbb1f8) - army — garage-sized loadout slots + detail motion pass + reforge menu FX (
20805db) - garage — craft ceremony, real resource icons, VIP gear rolls, tooltips (
c788cb6) - army — empty affix channels take the VIP focused roll (
482046e) - army — the reforge FORGE CYCLE + self-owned panel chrome (
356ceb8) - vip — Focused Reforge single-affix reroll + the Armory REFORGE menu (
76c9f8d) - survivor — crawler XP and levels are PER HULL, and the level-up celebrates (
1ef40c5) - survivor — commander affix UI in the Armory (
4c8e26c) - survivor — crawler levels are bought, and they pay out in the main game (
37a47fd) - survivor — list Prime Alloy on the AMM (
29315a2) - survivor — gauntlet dash uses the map's teleport cue (
f699b72) - survivor — missile rack, flight and impact audio (
130c869) - survivor — boss entrance scream (
cd5a2d3) - survivor — brute arrival scream (
39787d1) - survivor — boss telegraph cue on every kit wind-up (
77d2323) - survivor — normal enemy hit impacts (
5325e50) - survivor — enemy hit + death voices, keyed by the TARGET (
ddea518) - survivor — boss fire voiced per KIT (Warden pulse cannon vs Hunter gunship) (
5f046ab) - survivor — missile lock tone with a rising rack ladder (
0c57070) - survivor — missile salvo ripple + heavy impact (
95c8e2f) - survivor — enemy ranged fire cue (
50bb1c3) - survivor — death, repair and the engine bed (
bce5153) - survivor — crawler hit audio - three damage-magnitude bands (
ab636fd) - survivor — turret fire audio + exactly-once projectile birth handling (
2949f5d) - survivor — commander affix piping + v3 knob cleanup (
dd30f34) - survivor — boss rotation - THE KNELL + HUNTER PRIME reaction-dodge kits (
d1c51fb) - survivor — biome rotation - snow / forest / wasteland + the stage-10 simulation (
5c52257) - survivor — v4 economy - Prime Alloy, supply caches, unlock crafting + world entrance (
7b425e4) - garage — painted stat glyphs replace the inline SVGs (
1f78e44) - garage — motion pass - inertia, crossfade, flourishes, busy states (
82111b8) - garage — two-panel gear popup + drag fix + maxout gear kit (
bb8764f) - garage — SELECT CRAWLER rework - animated hero panel (owner spec) (
be1df39) - survivor — boss drops become SPOILS OFFERS in the trader (
fe762eb) - survivor — Phase Drive trader icon + the survivor icon contract (
56bed4e) - survivor — banked dash charges + ladder re-fit + blink marker fix (
505bbd2) - survivor — dash teleport uses the map BOOST blink grammar (
cb3c4f5) - map — night hull light - additive warm re-draw of the own crawler (
d175a61) - map — own-crawler night anchor - warm lamp pool + full-strength veil hole (
1c30fcd) - map — rim-light re-bake of all 4 unit atlases (default, upgrade, hunter, knell) (
710e9dc) - map — night light holes - filter reuse + teardown reset (
0eef2ee) - survivor DEV GYM - one scenario registry for operator panel, agent harness, and guards (
e6f0edf) - survivor TTK anchor rebalance + dash blink + HUD layout fix (owner feedback) (
2c73e6d) - survivor interaction feel pass (overnight loop iter 5) (
2205f73) - survivor l10n compliance - composed strings via window.t, model/line names Tier A (overnight loop iter 4) (
4038788) - survivor combat telegraphs + enrage state + wave stings (overnight loop iter 2) (
c44f211) - survivor run-summary ceremony + blueprint drop fanfare (overnight loop iter 1) (
e25dad0) - survivor ladder e2e + balance pass - the reach bands hold, mechanically proven (doc M10) (
c566ca0) - survivor gear equips in the main-game Garage dual panel (owner ruling) (
465e104) - survivor M8 - crawler gear: craft/equip/salvage/reroll, crawler levels, gear feeds the sim (doc sections 6-7) (
06e849b) - survivor M7 - blueprint drop layer (D2 tables, attunement, flawless, halo, boss-steal) (
345c05e) - survivor M6 - stage-gate trader, run escrow, extraction (docs/survivor-progression-design.md sections 3+5) (
aaafe99) - survivor M4.5 - shader-class night pipeline (judge: 9/9 PASS, wall + phone shots at reference tier) (
dccc723) - survivor M4.4 - engine-ceiling graphics push (judge: ART 9 / HUD 9, ~90-95% of pipeline ceiling) (
51be0d8) - survivor M4.3 - owner issue batch (waves, AC6 missiles, crawler weapons/death, rolling fire, baked shadows, HUD anim) - judge-passed (
b2a0e3c) - survivor M4.2 - production arena art, combat FX, and HUD (judge-passed) (
7395fa5) - brighten the brute - basecolor gain + ambient + base AgX look (
800935a) - survivor runner v2 - spinning wheel rig, eye glow, death pop, size + heading fixes (
90dded6) - survivor movement inertia + smooth playback + owner-corrected headings (
87bd735) - survivor mode M4 enemy art - Meshy-engine sprites via Higgsfield, rigged brute walker (
901d37c) - survivor mode M3 server leg - server seeds, replay validation, stage settlement (
47ee2e7) - survivor mode M2 stage loop - boss fight, powerup draft, stage rerun with carry (
840657d) - survivor mode M1 combat - turret, missile lock, dash, repair, parts + upgrade tracks (
5ee0bea) - survivor mode M0 greybox - deterministic shared sim + Pixi debug screen + guards (
d3fa211)
Fixes
- survivor — seat the hunter's core glow on the art's red eye (
6f6321a) - survivor — charge motes on the wall clock - authored speed and density at any refresh (
71e676d) - survivor — the ghost pops in at full hue - no fade-in (
9b2883f) - survivor — ghost lifetime in wall-clock ms, matching the ad envelope (
9f29f78) - survivor — drop the dash's flat streak quads, and bake ghosts on compressed atlases (
b58951f) - run release verifier with Git Bash on Windows (
f7218ab) - audio — every tier warms the combat library, so combat is never silent (
761dc15) - guard — re-express the Gauntlet low-memory contract after medium was narrowed (
69915d6) - audio — land the tier cap properly and put the comments back on their code (
db15f71) - retry weather mask after resize failure (
9a40e34) - resume Gauntlet without loading map (
dc75899) - survivor — harden gauntlet recovery paths (
91cac6a) - survivor — remove the wind streaks - the second scan line (
1ec2367) - survivor — drop the arena border stroke - the grey line sweeping the corridor (
f5dc75b) - survivor — combat buttons work while the joystick is held (iOS multi-touch) (
093caf6) - survivor — particle placement decorrelated - the LCG lattice showed in the arena (
66dbdc2) - release inactive iOS graphics and audio (
eedfcdc) - survivor — thunder priced in map tiles, so lightning is audible (
e1252b8) - survivor — the weather bed plays at Gauntlet level, not the visual discount (
85f1ddd) - survivor — rain_heavy's baked-in veil floored out of the sheet (
845fc92) - survivor — breath and haze at the map's exact clocks and formulas (
7b80908) - gym — the WX weather control works, and is a dropdown (
bf34b47) - survivor — weather particles and lightning are the map's own, in world space (
5c0285c) - survivor — weather to true map parity (veil order, iso sheets, alpha math, substrate strength) (
9d65849) - survivor — the Gauntlet could not start on iOS, ever (
c4dcc0c) - ios — retry content after final hash failure (
a23a2d2) - map — release the ceremony flash handle on teardown (
4c8c314) - survivor — the Hunter at the shared boss box, and the Knell's wheels lit only at the hub (
44c832b) - ios — a content update no longer re-verifies the whole manifest per file (
54e74ef) - survivor — every Gauntlet boss casts its baked shadow (Warden bake, Hunter wired, no double Knell) (
503b3e0) - map — release the void backdrop on teardown, so a re-init cannot black the map (
18d59b9) - garage — a locked slot no longer blocks the craft, on either side (
d3eb3ef) - hunter — a latched Crawler-bound Hunter survives a defender swap or unset (
35d21e0) - garage — the slot gate the catalog never knew about, and a refusal the player could not see (
0d54675) - survivor — every screen metric through screenSize, the loading gate never blanks, hero shadow at config scale (
56832a2) - survivor — shadow bake defaults to 2.0, night veil matches desktop on phones (
b8cb40b) - garage — a material shortfall routes to the market, never a dead CRAFT (
28cdfbe) - survivor — CRAWLER_SKINS.default declares the v3 split atlas (missed from the rebake commit) (
bcb2761) - survivor — logical screen metrics on every resolution, a LOADING gate, and the 256px v3 rebake of the crawler + Knell (
c39f6cc) - ota — ship the Gauntlet asset tree natively - staging build was failing precompute (
5b5d3a1) - survivor — root-cause the black screen, never release Pixi's global pools with a sibling renderer alive (
fcdeb74) - survivor — the playfield can never stay black - render self-heal (
14226e9) - map — stop the Gauntlet-exit GPU memory blow-up on phones (Pixel 3a measurement) (
5e71121) - survivor — production candidate v1 - stability pass (
cbb9ded) - survivor — stage logs fit the body parser - /api/survivor JSON limit from config (
70ccae5) - survivor — red-team fixes - validator queue discipline, reaper keyed on validated stages, DENSITY refused, exit claims its tile (
b0fe15a) - survivor — leaderboard clock anchored on the FIRST fight start; a death retry cannot reset it (
5bf5841) - survivor — clear time is fight time - gate (trader) ticks subtracted; boss fight confirmed inside (
5ee2e3e) - survivor — lobby board columns fit the card (
2be3997) - audio — voice duck at -6 dB, release 250ms (
45f08ed) - survivor — portal voice at B tier, layered with the original teleport-in (
8b0b379) - survivor — boss-ability sfx mixed to a three-tier loudness ladder (
0f039f4) - survivor — the finale partner is frozen while he prints in (
787e5fc) - survivor — boss name never wraps; the tier chip stays on the name line (
b2c0565) - audio — master limiter up-mixes mono sources to both speakers (
bb6aca5) - survivor — boss taunt waits 1.1s after the crawler dies (
8f8bf83) - survivor — final consonants survive the edge trim (Knell and Hunter re-rendered) (
275db00) - survivor — voice tails audible - every line compressed; card bound follows the 7s window (
fbdbba4) - survivor — Knell and Hunter on-screen lines cut to match the spoken first sentence (
efde5f6) - survivor — death and taunt lines at 1.35x; next stage the moment the voice ends (
a0db636) - survivor — boss dialog cannot be skipped (
7cb1ec3) - survivor — first meeting speaks the signature line; death line fires the frame the explosions end (
2903f97) - survivor — voice clips no longer truncated at pauses; entrance lines cut to fit (
45c1c28) - survivor — dialog text always completes before the fight; last words after the explosions (
1465a48) - survivor — seeker skips a spawning boss; warden_tune_1 gym (stage 1, the OPEN line) (
0c93a0f) - survivor — Rampart voice post lightened - pitch capped at -0.5 semitones (
60feab5) - survivor — boss vulnerable => camera home, dialog and crop gone (hard sim-clock cut) (
fc98ed6) - survivor — camera focus moves the camera only; intro cinematic synced to the 3s materialization (
8c00e77) - survivor — boss gate draws into the live telegraph graphics (gym black screen) (
4dc2589) - survivor — boss line fires anywhere in the print window with room for the card (
e9353b2) - survivor — toll never blinks between phases; collapse waits for the sweeps (
08de401) - survivor — hammer shell spans the screen at any zoom, with motion blur (
14bdf0b) - survivor — powerup chips use the trader's painted line icons (
9097bae) - survivor — mobile HUD fit + firestorm stage scaling (
3596499) - survivor — turret holds fire during repair (
0ed2ecb) - survivor — teleport-in voice cuts the moment the boss materializes (
2d8e3b5) - survivor — sweep timing - 0.2s ray stagger, 1.2s between volleys (
02f7783) - survivor — sweep eruption is FIERCE FIRE - tongue grammar scaled tall (
00b1405) - survivor — sweep eruption to the quality bar - sheared curtain, gravity debris (
38611f3) - survivor — sweep lines render (empty-texture bug), hole holds through the wave (
c8f4611) - survivor — toll field keeps a faded shockwave rim (
a5d64f9) - survivor — firestorm front goes soft - fire-kit strips replace the stroked jag (
167da50) - survivor — ground fire is FIRE, not a beam (
77bbedb) - survivor — boss entrance darkens via the hyperbeam's world veil (
0fe790a) - survivor — entrance glow moved behind the boss and dimmed, duo bar keyed by seed (
6244cb7) - survivor — the finale firestorm never advances (
53b25f5) - survivor — cache celebration says when a gym run cannot roll blueprints (
c106a1f) - survivor — world stops on exit review, mounts follow the hull through dash (
cf159a5) - survivor — turret draws as an iso ground-plane decal, not a screen-space spin (
df367ed) - survivor — finale duo clarity, gym my-gear, cache celebration, hologram arena fence (
60e4593) - vault — explain a hashless finalize instead of raw burnTxHash required (
9be7be1) - vault — send the real wallet tx hash on burn-submitted (
005ff88) - survivor — finale duo hardening - one entrance ceremony at a time (
6b82a0e) - survivor — every knell hammer shell aims at its own shot (
eaad6e4) - survivor — unbanked runs are loud + still celebrated; e2e gets its own account (
a6bbb8c) - vitals — retry transient Play API failures so one 503 cannot page the watch as broken (
0c9af48) - survivor — local-fallback carry keeps gear, unbanked loss is loud (
fd04852) - megatower — Exit Run after a won fight credits the cleared floor, not one below (
18b2bdf) - extraction — the owner CAS must SELECT the column it compares (
0c36a1a) - extraction — the capacity clamp now reaches the ledger that pays (
dbdcad9) - survivor — HP readout never shows a decimal (
3d1cb28) - survivor — cache audit - exit race double-pay + earned-grade undercount (
01d82eb) - survivor — fine-grain turning applies to ALL boss turning (
99a102a) - survivor — boss gets the crawler's between-cell residual rotation (
55bef66) - survivor — weapon star is a ball of energy, not a solid disc (
4e3fe69) - survivor — V-wedge ground light, mean red restored, tighter falloff (
335cc85) - survivor — laser-soft beam edges + cast light on the ground (
e0fd9ce) - survivor — beam erupts from the charge star at full blast (
c313514) - survivor — chained lance retargets the player at each re-aim (
9cbaff9) - survivor — ground telegraphs render BELOW entities (
8dd22f1) - survivor — beam emerges from the core; lance tracking truly clamped (
a7d1182) - survivor — toll + hammer telegraphs draw the TRUE world circle (
2ecea46) - barracks — a healed unit with no slot goes to Reserves, not a duplicate cell (
3dac267) - survivor — ghosts anchor where the hunter WAS, hold longer (
b44b12c) - survivor — pin the drawn crawler on outcome - no extrapolated glide (
3061771) - codex — Prime Alloy's Where to Find shows THE GAUNTLET (
739d1d3) - army — slots match the garage loadout scale + upgrade modal entrance (
8ff7480) - garage — action-row wrap + mono roll chips, sublines become bubbles (
6212dcf) - auth — connection resilience so network flaps never force a re-login (
04a1761) - army — equipment picker redesigned as a modern card list with affixes (
3c1a00a) - ui — vector info glyph, replay-gradient card names, one-line card back (
94a91d3) - army — card names in the replay face, name-only overlays, hospital bubble, garage ink (
f2d8a36) - army — readability sweep to a 9px floor, pinned by verify-readable-text (
84dc66d) - command — squad tabs drop the cost overlays for the click bubble (
fd0e18c) - army — leadership panel first, and the 1,000,000 cap fits (
d8d86e8) - army — lore restored readable, leadership pared to value + bubble (
b6891be) - army — readable Armory detail - lore box out, leadership panel rebuilt (
d59023a) - survivor — the train sliders honor the per-tier cap lift too (
5032fc1) - survivor — skin switch refreshes the per-hull bonus panel (
1a89d42) - survivor — honest bonus panel, inert gear excluded, cap UI matches the server (
710efa5) - survivor — doctrine chip spilled its own onclick into the panel (
318e6a0) - survivor — fabrication cards show rarity, sort by it, and X out locked (
506b24d) - survivor — arm boss clocks when the boss is born, not at the phase flip (
008d570) - test — assert the unconfirmed-burn RULE, not its old SQL spelling (
a048769) - survivor — boss takes the normal impact, heavy cue held for a stun (
b01d034) - survivor — drop the turret to the bottom of the mix (
9388b45) - survivor — lift the death mix; park the kamikaze shriek (
15ccffd) - map — the gauntlet gate is clickable - hit-quad, selector, draw on the owner's footprint convention (
253ea0e) - map — survivor gate draw crashed the GPU map into the unavailable card (
273e5f6) - garage — drag inertia reverted, equip closes to show the flash, stable popup ordering + scroll (
2150faa) - garage — surgical repaints - a click never rebuilds the screen (
2108c5f) - garage — hero round 2 - spin correction, locked proportions, text calibration (
c1b76ac) - survivor ceremonies fit the shipping phone envelope (overnight loop iter 3) (
cd59b68) - survivor owner feedback round - turret sync, random locks, fire-all salvo, hit reactions, shadow fixes (
2ac53aa) - brute heading mirror + kill its junk emission map (
d3e026b) - survivor emission discipline - only mapped lights glow, never the body (
5ebb917) - survivor brute headings (owner ruling S SW W NW N NE E SE), runner wheel spin reversed (
1d5f89c) - survivor — pocket cells back to em_static only (owner: too extreme) (
c261c10)
Performance
- ios — backgrounding evicts the resource cache too (
74e50ab) - ios — a memory warning evicts WebKit's resource cache too (
5eb7563) - audio — budget variant variety by render tier (
6ce4295) - audio — a notification decodes one file, not twenty two (
3fc9945) - reduce medium Gauntlet residency (
dcd5959) - reduce iOS map and gauntlet memory (
38245a9) - survivor — stage-manifest residency for weather graphics and audio (
d7b69dc) - survivor — the Gauntlet gives its audio back, and decodes only its stage (
a8f2d1e) - map — weather sheets go ASTC, evict off screen, and free their GPU twins (
5e91e94) - survivor — unload the map to run the Gauntlet, unload the Gauntlet to return - never both resident (
3fbec7d) - survivor — one KTX2 reader for both renderers, boss atlases per stage, atlases released on exit (
dba07f4) - survivor — batch transient FX by blend mode and pool particle sprites (Pixel 3a pass) (
488ee63)
Internal
- map — remove the tilt-shift setting and its shaders (#1192) (
c2ad22f) - ui — tooltip sweep round 1 - base + alliance descriptive text to bubbles (
a66ba92) - survivor — pin the hyperbeam root, and the instrument that measures it (
39c27a3) - survivor — make the boss-move contact-sheet harness actually run (
1221d99) - ios — prove the weather beds are actually released, not just silenced (
075fb90) - repair Pixi crash guard matchers (
2e10bdb) - ios — the rehash guard's fallback control models the pre-fix shape (
ec2e077) - map — verify-weather-stack guards the two-layer weather contract and the audio director (
00c4fc4) - l10n — read the cup copy for meaning, drive the Gauntlet live, repair two instruments (
2e0fa63) - l10n — back-translation gate on the marketing site, all 5 locales (
2a56977) - audio — classify survivorAssets in the iOS media-fetch sweep (
3236cdf) - pvp — the wreck guard now tests what it claims to test (
0fa0c27) - extraction — make the carry-loss assertion non-vacuous (
0e420f1) - survivor — hitbox-matches-the-art parity guard (
5bf856b) - survivor — v4 guard suite + settlement fixes + ladder re-fit; biome art (
1b14ebb) - ios — gap 51 bottomed out, every major block named by symbol (
2004393) - ios — gap 51 narrowed by elimination, it is engine overhead not content (
e18bc96) - ios — gap 51 is a JavaScript question, not an asset question (
5f8f975) - ios — correct where decoded audio is accounted, and narrow gap 51 again (
8e7b476) - audio — record the three followups and the measured noise floor (
252d9fb) - survivor — report on the Gauntlet shadow heading, and revert the experiment (
cc762c5) - audio — record the tiered variant budget and the music streaming trap (
8634d6d) - ios — name a 46 MB contributor to the gap-51 WebContent bytes (
f575bdb) - ios — measure where the WebContent bytes go, and correct gap 51 (
bd90149) - ios — what the fleet says, what the compression bought (
eb0898e) - test — PR 1201's Gauntlet fixes, exercised on iOS (
67fd540) - ios — the map and Gauntlet memory report (
db1cac3) - test — iOS memory A/B for the weather stack and the Gauntlet (
029f226) - survivor — house-format findings field on the v3 run record (
c5a3a55) - survivor — findings field on the v3 all-units run record (
3716929) - survivor — mark client-memory ACCEPTABLE after the Pixel 3a pass (
8637e3a) - survivor — record the Pixel 3a phone-memory result in the v1 report (
e368cd5) - survivor — production candidate v1 report; architecture doc brought to as-built; guards registered (
27ec5c4) - skills — boss-skill-animation - every effect gets a death animation (
7493394) - skills — boss-skill-animation learns the fire craft (
e77c458) - skills — crawler-parity turning is three pieces, not two (
3779498) - skills — boss-skill-animation - the hyperbeam FX craft (
c277b64) - skills — wheel-glow rule in sprite-pipeline + two survivor skills (
153ee8c) - survivor — record the bought-level doctrine, the halo gate, and the shipped affix UI (
b6d240e) - survivor — record the four owner rulings, and say what the map gate is (
65aa490) - survivor — correct the telemetry gap - the denominator already exists (
e6a7b50) - survivor — bring both design docs level with the shipped tree (
d9a3f86) - test-log — the service worker had never cached a response (
74c78e2) - survivor progression v3 - fungible blueprint drops + craft sink, tempering cut, concrete gear-to-run tie (
2b9fa37) - survivor progression v2 - Diablo 2 drop model per owner ruling (grind over forge, going infinite, halo chase) (
bd24fb1) - survivor progression design (trader gates, boss cores, forge/imprint, tempering NFT gate) (
92de042) - survivor mode system architecture (deterministic shared sim, corridor arena, stage-boundary validation) (
189e364) - survivor — Rampart opener take B locked in at 1.35x tempo (
5cb7282) - survivor — Rampart opener take B (eleven_v3, more expressive) installed for the owner's A/B (
e4775e4) - survivor — warden_tune_4 = owner run snapshot at stage 4 (
1b48c65) - survivor — hunter_tune baseline = owner run snapshot at stage 3 (
174bf9f) - survivor — knell_tune baseline re-snapshotted from the post-compression owner run (
d51083c) - survivor — knell_tune gym scenario snapshots the owner run at the stage-2 Knell (
34d8b80) - l10n — prune three retired Garage strings from every locale (
f9e8a73)
Other
- l10n: auto-translate locale artifacts (
dc49b55) - l10n: auto-translate locale artifacts (
e36ed78) - l10n: auto-translate locale artifacts (
0b24441) - l10n: auto-translate locale artifacts (
902ef39) - l10n: auto-translate locale artifacts (
400a5c2) - l10n: auto-translate locale artifacts (
d9b0e33) - l10n: auto-translate locale artifacts (
2c0e370) - l10n: auto-translate locale artifacts (
c3c8bf3) - balance(survivor): glint_sparkle calmed - fewer, slower sparkles (
f909c66) - balance(survivor): owner weather rosters per biome (r2) (
0b21e46) - balance(survivor): rain_heavy and heat_haze alpha down 30% (owner 2026-08-24) (
a2989be) - balance(survivor): ash_drift spread and thinned so it never walls off the fight (
757555a) - l10n: auto-translate locale artifacts (
0a77393) - balance(survivor): drop dust_light/spores/mist from the mode; all base haze to zero (
3c260f9) - l10n: auto-translate locale artifacts (
84f95b6) - l10n: auto-translate locale artifacts (
72d2539) - l10n: auto-translate locale artifacts (
48a39a9) - l10n: auto-translate locale artifacts (
855fc5a) - balance(survivor): retune the crawler XP ladder to 10 / 30 / 60 / 150 (
94bebcc) - l10n: translate LOADING in all 5 locales after the staging merge (
2b997c1) - l10n: auto-translate locale artifacts (
fd926ab) - l10n: auto-translate locale artifacts (
bebeae3) - l10n: auto-translate locale artifacts (
6c5a451) - balance(map): MIP_SHARPEN 1.2 (owner-tuned by eye on the live ladder) (
cacb6f5) - balance: weapon gear 50% cap, finale beacon past midfield, map ground at native texel density (
fbdc463) - balance(survivor): gear bonuses stack ADDITIVELY (
5223b94) - balance(survivor): speed scoped to wheels, no dead affixes, alloy retune (
022075b) - tweak(survivor): cyclone r2 - no spokes, faster + denser, enc-2 reversal (
3f0f905) - tweak(survivor): volley breather after every hunter special (
ce29090) - tweak(survivor): hunter sized to 1.2x the player's visible hull (
a0e893d) - balance(survivor): epic drop weight 9 -> 7 (the 30-clear epic target) (
a9a3ea2) - art: painted survivor UI icons, kept only what the impartial judge scored as better (
df1ef21) - art: survivor gear model icons (9x 256px via Codex image gen) (
8427e73) - balance: survivor spawn envelope retune + fix tick-0 spatial-hash hang (
cb50736)
Fixes
- sw — clone the response BEFORE awaiting, or nothing is ever cached (
1e2c630) - sw — range requests, concurrent activation, and four more from the audit (
9507abe) - sw — revalidate a cached asset once per worker, not once per use (
486c3fb) - vault — close the review findings on the burn-classification fix (
a10f813) - vault — an unmined burn is not-confirmed, not a timeout (
7b5d5c6) - release — a dispatch builds only when action=build - listing can never mint a binary (
70db8a0)
Internal
- test-log — sw per-use revalidation run fragment (
11220ae) - anomaly — say when the unconfirmed-burn check can and cannot fire (
d129c18) - test-log — vault burn-classification investigation and fix (
da090ce)
Fixes
- content — definitive delta refusals retry on a bounded fast lane (
12cacfc) - ui — restore the HUD-chrome safe-area insets, and make battle replay full-bleed (
3dabcda) - release — a dispatch must name its action - no default, and the gate refuses an empty one (
17968da) - release — cutting an iOS build always lands its hash set, and the sweep sees every branch (
15cc5a7) - release — the listing lane names the version code its changelogs attach to (
9c58876) - content — the gate is bounded by PROGRESS, and every verdict settles the session (
8ec0cc8)
Internal
- test — log the safe-inset restore + content-gate fast-denial run (
081f7ea) - test — log the promote review + gate hardening run (
54cc856) - ios — record build 19 verified on-device (
0e3ee0d) - ota — builtin hash set for shell 1787043882 (
4e18e10) - ota — builtin hash set for shell 1787065459 (
c30a859)
New & Changed
- store — new subtitle, plus complete listings for all 5 locales (
f6728d3) - l10n — translate all 268 strings the staging merge added (
848795f) - l10n — complete the Thai locale, 6,218 of 6,218 strings (
acf660f) - watch — the content gate gets a watcher, and the OTA failure rate gets a surface (
a2e336b) - l10n — bring tr level with staging (269-string delta) (
7b59bf8) - l10n — add Indonesian (id) locale (
7a168ff) - l10n — Turkish locale (tr) (
c40acee) - l10n — add Thai (th) locale, 80.5% translated (
1ba644d) - content — background transfer, and the guard that was checking the wrong thing (
1b37543) - content — universal mount, and required content becomes a resumable state (
ae9ca62)
Fixes
- l10n — rebuild derived config labels after the overlay, not at parse time (
7a03f0c) - test — verify-march-no-teleport grades displacement only when it owns the world (
8a67ae2) - l10n — P3 batch 28, completing the sonnet redo of the entire haiku pass (
d4f674f) - l10n — translate the BASE combat-log line left byte-identical (
cf21527) - l10n — P3 batch 25 (
d52501b) - l10n — P3 batch 29 (
0e0dca0) - l10n — P3 batch 27 (
4e1cbeb) - l10n — P3 batch 26 (
f9d460f) - l10n — P3 batch 30 (
3da18bd) - l10n — P3 batches 19 and 23 (
50896a1) - l10n — P3 batch 22 (
110e2e1) - l10n — P3 batch 20 (
8c6a083) - l10n — P3 batches 21 and 24, and two bugs in my own apply script (
ada2b7a) - l10n — P3 batch 24 (
0e81417) - l10n — translate Cap/Def, which shipped byte-identical to its source (
a60b408) - l10n — P3 batch 18 (
0c6c2fb) - l10n — P3 batch 13 (
357e86d) - l10n — P3 batches 16-17, 268 more haiku strings replaced (
5553cf2) - l10n — fourth P3 batch, merge-added strings, VIP as keep-english (
0d076b2) - l10n — third P3 sonnet batch, replay hand fixes after every redo (
a6494a8) - l10n — second P3 sonnet batch, re-reconcile case variants (
5e9dcad) - l10n — apply first P3 sonnet batch, clear every stray-script defect (
65e0067) - l10n — guard stray third-script characters, correct an overstated claim (
5a32b3a) - content — the gate fails open when the server cannot answer the gap (
f977816) - ios — make the content plugin compile, and record the 0% lockout it hides (
2c7509f) - l10n — map id and tr to their store locales, unbreaking verify-store-l10n (
bdd6aca) - l10n — guard every window.tUpper/tLower read, and make the lint require it (
55765c1) - l10n — normalise to NFC before folding, so composition form cannot miss the join (
fbae8ba) - l10n — the Pixi audit's residual is unknown, not English (
d3aa281) - l10n — the audit's residual bucket is surfaced, not scored as English (
66cdfc8) - content — a pre-plugin native shell is never gated, and the gate's failures are countable (
e47b449) - client — locale-aware case transforms for the Turkish dotted i (
9850736) - l10n — make the pipeline correct for a Latin-script target (
bb74b1d) - content — the patch downloader owns the shared iOS tolerance (
f18f220) - android — force the real ListenableFuture onto the compile classpath (
44ad9af) - android — put ListenableFuture on the compile classpath, and only there (
fcd2700) - android — the background worker needs ListenableFuture at compile time (
1c23690) - content — the grade found two that would have made things worse (
d32acd2)
Internal
- l10n — Thai ship gate, back-translation grading PASSES 40/40 (
a6a9986) - l10n — guard Turkish chat detection and the tr/id branch order (
2efc780) - test — the iOS content chain is simulator-proven end to end (
9273cd4) - record the unguarded-window and store-mapping findings (
a0d3015) - record the Pixi sibling-path residual fix in the integration run (
9b02dcd) - record the tr x id Latin-script integration run (
4fc4cbf) - test — log the pre-plugin gate lockout find, fix, and device proof (
5138d96) - test — reformat the overlay-mount fragment into the house format (
2ba2958) - content — the Android chain is device-proven end to end (
cc6adc6) - release — mark the unreachable master-push arms as unreachable (
55fdccc) - content — re-verify the overlay on the rebased build (
926a1ea) - content — the native overlay works, and is inert on the builtin bundle (
a561ccc) - ota — the overlay is inert on the builtin bundle, and why that matters (
40d0423) - content — the mount is not one mechanism, and the invariant that decides it (
971ee2e) - ota — content resolution is not universal, and the mount is the fix (
3f594e2) - l10n — resolve the staging merge, prune a retired key from every locale (
81bb99c) - ota — builtin hash set for shell 1787036400 (
9d52599) - ota — land builtin-hash artifact for the Pixel 3a content-mount device gate build (
089dd65)
Other
- l10n: auto-translate locale artifacts (
01287b0) - l10n: auto-translate locale artifacts (
fa7f910) - l10n(id): top up after rebase onto staging (
1c64c2e) - l10n: auto-translate locale artifacts (
2e1cc00)
Fixes
- ota — ship the slim-regression detection that PR #1110 dropped (#1113) (
fbf1c57)
Fixes
- ota — land two stranded builtin-hash artifacts, and make the regression loud (#1110) (
1331b3d)
New & Changed
- map — warm the whole map into cache at login so the player never sees a blurry region (#1106) (
8b53cba)
Fixes
- defense — the crawler defender refills from Reserves like every other commander (
e7a0ecb) - deploy — raid and reinforce snapshot the squad they actually sent (
b475147) - barracks — a returning squad updates the preset it was DEPLOYED from (
d89980d) - ios — declare no tracking, and remove the ATT surface Apple flagged (#1095) (
8be0add) - map — ground KNELL's shadow to his hull instead of a hand-tuned offset (
aa482a2) - extraction — occupancy message reads the occupier's current alliance too (
bb1e353) - ci — the version bump moves all three files, and its probe stops dirtying the tree (
8b83780) - raids — never OFFER an attack on an alliance member, and never strand the abort (
c44e0d4) - ci — move the version train out of package.json so a bump cannot restart prod (
481cef2) - ci — release automation never opens a PR into master, and lands one PR per run (
57953e0) - raids — stop the friendly-fire abort stranding a march at 'resolving' (
b1390bf) - map — reserve the Citadel and the capitals so doodads stay off them (
9c8ed70) - ci — green the promote - four stale guards, none a product defect (
a2957ad) - map,client,android — second review pass on my own promote fixes (
6b6daca) - ci — MainActivity lifecycle overrides must be public; drop gh from l10n (
4215f7f) - alliance — send the invite code, so a closed alliance can be joined (
ea466b5) - map,client,android — apply code-review findings from the promote (
9dfe6d5)
Performance
- client — drop the retired terrain photos from the shipped bundle (
864027e)
Internal
- defense — end-to-end proof of the crawler-defender refill (
ae1ef64) - ios — build 17 verdict, the build that answers Apple's tracking flag (
4124ed4) - ios — correct the build 16 note, the prompt came from the OTA not the binary (
e79061b) - ios — record the build 16 device verdict, with the install route stated (
2573c6d) - test-run — iOS pre-submission device audit, and the uploaded build that must not ship (
b11f155) - release — open the 1.0.7 version train (
18ff2f6) - ota — builtin hash set for shell 1786912628 (
597b3a8) - ota — builtin hash set for shell 1786906227 (
7ff9e60) - release — open the 1.0.6 version train (
541c766) - ota — builtin hash set for shell 1786901028 (
b1dd9c0)
Other
- l10n: auto-translate locale artifacts (
74f1fd8) - l10n: auto-translate locale artifacts (
16d2a94) - l10n: auto-translate locale artifacts (
1a65a79) - l10n: auto-translate locale artifacts (
31cad01)
New & Changed
- veterans — require an exact name replacement, auto-fail impossible names (
ad58b16) - assets — compress the four city textures, 10.4 MB GPU to 2.6 (
cba1c14) - veterans — clawback takes the full amount, balances may go negative (
2a0a488) - veterans — arm the synthesis reject, same-image rule, revoke + clawback (
2dd8575) - veterans — Hive synthesis scan as a review signal on claim images (
83ee1ca) - assets — make GPU compression the mobile-first default, not a step (
5291aa7) - map — compress the Knell and Hunter atlases, 82 MB -> 20.5 MB total (
de3b715) - map — GPU-compressed (ASTC) crawler atlases, 24 MB -> 6 MB each (
2944c39) - map — delete the bake from the Pixi path - far minis are the far view (
e79e4ab) - map — far-bake shrink + tall-prop occlusion fade; frontier expansion deferred to design doc (
75bed5c) - vip — pay the first stipend day the moment the membership is bought (#1059) (
6424b5f) - map — ring-0 tiled conversion + reimagined Cindria riverbed ground (
dc5a309) - map — Dustbowl tiled-ground conversion - region twelve, outer ring complete (
f20e43d) - map — Havens Rest tiled-ground conversion - region eleven (
9d05859) - map — Thornfield tiled-ground conversion - region ten (
4abf9a5) - map — Verdant Reach tiled-ground conversion - region nine (
24a5341) - map — Signal Graveyard tiled-ground conversion - region eight (
c597470) - map — Glassfield tiled-ground conversion - region seven (
1b4c1cf) - map — The Maw tiled-ground conversion - region six (
952adec) - map — Reactor Flats tiled-ground conversion - region five (
c887048) - map — The Crucible tiled-ground conversion - region four (
cb0e27d) - map — Sunder Basin tiled-ground conversion - region three (
46b2f71) - map — Black Canopy tiled-ground conversion - region two, zero renderer edits (
a828da1) - map — tiled-ground residency - load on approach, byte-budget LRU eviction (the jetsam answer) (
763d512) - map — iso shadow system, prop variants, themed clusters, macro layer + the conversion runbook (
9af0ab5) - debug — maxout marks the urgent-quest chain complete (
6d7c363) - map — Bonefields tiled-ground pilot - masked ground tile + y-sorted props replace the baked photo (
8ea0e89)
Fixes
- android — recover from WebView render process death instead of crashing (
dcf6318) - ios — never ask for ATT, and keep the measurement that needs no consent (
ee135ee) - ci — default a dispatch's version_name to the package release train (#1073) (
ef448aa) - ota — land the two stranded builtin hash sets, restoring slim manifests (#1072) (
f7b093e) - map — drop four dead pape assets; record the rejected weather eviction (
f947d19) - map — sites y-sort with doodads instead of always losing to them (
7108c18) - map — base-free doodads is now the rule; redo the Cindria shrubs (
5f0c69a) - map — regenerate Thornvale plants without their dirt bases (
5c160fd) - siege — march cap no longer counts defeated tombstone queue rows (
7718901) - veterans — drop the bespoke revoke mail, reuse the existing template (
b635cfb) - veterans — unpaid claims reject rather than revoke, and say so (
6a4aa4f) - map — one decoded copy per tiled file, and a residency cull that binds (
305e01a) - map — cull sectors per QUADRANT - the ring test was defeating the residency LRU (
b043cd2) - client — stop rendering while the app is backgrounded - the ANR root cause (
f203ee4) - android — drop the duplicate Facebook classes instead of linking the login SDK (#1060) (
067b2e7) - android — keep one copy of the Facebook SDK classes in the release dex (#1058) (
c4a05ef) - map — Cindria riverbed - strong in-tile meander, flows SW toward Sunder Basin (
5c7f6ae) - map — iso-axis dustbowl washes; prop boundary margin + void cull; ZONE_RINGS single owner (
3b737c7) - map — viewport-bbox tiling quads - the sprite-mask bounds hazard; Black Canopy quality parity (
1c41d55) - map — THE ISO INVARIANT - ground layers render through the iso shear; shadows, macro layer and flat rotation removed (
136b0c8) - map — tiled-ground art-judge round - measured grounding, world scale, paint bands, biome value balance (
841ea6d)
Performance
- map — detach the mask when a sector is culled, not just hide it (
3e63b2d)
Internal
- map — world geometry fully config-derived - the frontier-expansion staging (
7678eae) - ios — verify the ASTC atlases on WebKit, and reconcile the two cull fixes (
de8fc85) - ios — classify the compressed-texture fetcher in the media-fetch guard (
c516a2c) - test-run — staging build device audit on the Pixel 3a (#1074) (
271d51b) - skill — narrow the no-base rule to things that grow (
1e40484) - ios — audit what is actually left to GPU-compress, and correct the list (
5a2b69d) - map — measure the RenderTexture ground cache and reject it (
2b50747) - record the GPU-compressed atlas contract in CLAUDE.md (
4b2e51e) - map — rollout status - all 12 outer subregions converted; note the zoom-out prefetch pass (
42c37a6) - map tiled-ground design - port the survivor ground/prop system to the world map (
8e998de)
Other
- l10n: auto-translate locale artifacts (
4d31ad1) - l10n: auto-translate locale artifacts (
c4d2826) - art(map): Bonefields tiled-ground pilot asset set (codex image_gen) (
17bdb4b)
New & Changed
- vip — the daily stipend accrues and is COLLECTed, instead of auto-crediting (
b12f106) - shop — VIP Growth Status takes the second slot, with its own badge (
060f79c) - cloud-ai — the Deep Archive, a 30-ask day on a durable counter, and a derived breaker (
723e7f0) - vip — VIP Growth Status, a support icon in the quick nav, and one Discord chip (
c5ecd7a) - cloud-ai — generate the advisor's knowledge from code, add the VIP tier (
4655787) - add Meta ads measurement (
c9e05de) - l10n — commit the reviewed Russian store listing so CI stops re-translating it (
d9acfdb) - siege — retune anti-spam lockout and cap Citadel marches at 1 (Armory Lv5 unlocks 2nd) (
02f1c6a)
Fixes
- vip — a refund reclaims banked stipend days, and the ask path fails loud (
4bfcb31) - test — the SYS-chat mirror follows the money, not the prompt (
8f23c50) - test — the cancel claim-guard assertion matches the statement, not its text (
9b19cf8) - test — scope the shop-refetch assertion to its handler, not a byte window (
cd35fbb) - test — the VIP guard resolves pg by bare require, so it runs in a worktree (
a1e20af) - cloud-ai — the first chat bubble no longer renders inside the header (
374e1c3) - events — fire stashed chain cards on quest tiles, drop haul chrome (
3d69552) - combat — tied slot selections resolve by position, not array order (
4ee13ae) - replay — share links from the native apps are public URLs, not app origins (
87122c1) - equipment — blueprints are not craftable, remove the craft path (
5addd1c) - l10n — the subscription-mode lint restores BOTH run reports, not one (
6efb651) - l10n — one English store string gets one translation, per locale (
f091a4d) - extraction — stop the cycle path double-writing item custody (2x loot) (
7a82b4c)
Internal
- vip — pin the web checkout branch, which no local probe can reach (
cd52c62) - rule0 — scope the em-dash ban to player text, guard it, sweep it (
1ffe9ca) - bd — capture doherty_san partnership inbound from ticket watch (
4c74dd2)
Other
- l10n: auto-translate locale artifacts (
95c71e3) - l10n: auto-translate locale artifacts (
90fa338) - l10n: auto-translate locale artifacts (
d00f908) - l10n: auto-translate locale artifacts (
97855bd) - l10n: auto-translate locale artifacts (
f77df62) - l10n: auto-translate locale artifacts (
415554d)
New & Changed
- money — premium ASH offer runs until turned off, not until a date (
9552af8) - map — night lighting - light holes + own-crawler anchor (survivor grammar) (
e04fae3) - admin — cross-panel nav, real player identity, and an attempts queue (
a18954d)
Fixes
- veterans — first-time nonce requests were throwing ReferenceError (
a1327cd) - economy — ledger beacon-pull key spends so the sink is not invisible (
b0971ad) - extraction — event-card items were never delivered; give them custody rows (
588edbf)
Internal
- money — un-rot the ash-sale premium assertion when the sale window closes (
c5ade79)
New & Changed
- generalize store localization pipeline (
b6bcc53)
Fixes
- sim — model the storage cap, real premium, and exact recycle yield (
dc6252d) - combat,sim — resolver config through GAME_CONFIG_REF, and a non-vacuous economy gate (
afed7d0) - veterans — apply the picker fixes to the shop tab too, and sweep both (
100ccb2) - veterans — make the claim code typeable and let players change game (
b69e9f1) - arcology — every floor exit refills wounded slots, not just advance (
87c7379)
Internal
- arcology — guard-credit was randomly red; account for triage recovery (
f4b468b)
New & Changed
- veterans — canonical Cipher welcome art + plain commission panel (
23a61b9) - watch — tier-drift check, and stop the guard inheriting the scan's exit code (
7bf548e) - veterans — automate verification, add the runtime kill switch and an ops panel (
a78d873) - watch — the veteran ASH payout is watched (
de63812) - veterans — art pass, Cipher presents the commission + citadel hero backdrop (
960f3e8) - veterans — verify-now, pay-on-player gate policy (
6e5c28b) - landing — standalone /veterans ad landing page (one-tap signup + inline claim) (
fcda395) - l10n — Russian locale complete, 6,181 strings, and zh-Hant's frozen spans repaired (
a659f58) - l10n — guard that a numeral never governs a noun in a multi-plural locale (
1e66125) - l10n — settle the four ru terms the glossary never covered (
36f19de) - l10n — Russian locale wiring, glossary, and per-locale pipeline paths (
4456857)
Fixes
- veterans — live guard pinned the retired magnitude-review rule (
f8712b4) - veterans — make authenticity and code-presence independent axes (
25033af) - consistency — oracle walks riposteHits and volatileExplosion targets (
dacec3d) - alliance — application-only alliances list on the discover board (
87261ee) - watch — the ceiling non-vacuity check coupled itself to an unrelated knob (
c104adb) - veterans — alpha-clean Cipher art, commission panel on her left, mobile order (
a1ac3e5) - extraction — 4h relocation re-rolls site_type from current weights (
0b27ae2) - l10n — act on the judge review, and two live plural defects it led to (
9fde4de) - telemetry — attribute stackless window.onerror parse failures (
ce3be9d) - client — bound the pixi late-recover to once per session; add ANR issue enumeration to play vitals (
028d3f3) - l10n — Enforcers had three names, and a gacha pull was a police manhunt (
474ed35) - l10n — data-no-i18n covered the chat panel's own UI, not just user content (
8e3a58c) - l10n — English-only pluralization was leaking a Latin "s" into every locale (
d59c0af) - l10n — Cyrillic Mark against the glossary, and the ru em-dash exemption (
dd87cbe) - l10n — 17 plural hazards the guard cannot see, and XP Shards rendered four ways (
5d1447c) - l10n — 18 defects the back-translation gate found, 7 of them wrong mechanics (
a5b87c0) - ci — green the promote gate, four standalone verify failures (#1015) (
7e3f503) - native — ru font sheet never shipped to store builds, and two guards that let it (
33d1932) - l10n — the market composed rarity and "Blueprint" around a translated name (
884f6b5) - l10n — sources differing only in case must not diverge, or both render English (
ada82f9) - ci — the store-bundle check demanded the pseudo-locale ship (#1014) (
a08a18e) - l10n — Latin letters hiding inside Cyrillic words, and a guard for them (
da8f80a) - l10n — the ship-gate audit crashed on the login screen and mis-reported its locale (
568b8a9) - l10n — an HTML entity made a shipped translation permanently unreachable (
63be2a3) - l10n — {lore:} and {elc:} are DISPLAY markers, and we froze them as English (
d824b78) - l10n — the Google sign-in button ignores our language, and it always has (
cc78dc9) - l10n — HTML entities are markup, and mandatory-English brands are glossary (
6fc55f7)
Performance
- veterans — purpose-built hero backdrop, replacing the repurposed banner (
f498281)
Internal
- l10n — runbook lessons from the ru backfill and its adversarial review (
9465a3b) - l10n — log the back-translation gate, and the plural idiom it exposed (
5d9565b) - l10n — log the Russian backfill run and what a second locale exposed (
ec7ff45) - l10n — record what the Russian fan-out actually cost (
d9fc626) - veterans — Deep Wastes violet palette, retiring the amber scheme (
0585cb1)
Other
- l10n: auto-translate zh-Hant artifacts (
9c8f6a2)
New & Changed
- veterans — reward badge (up to 5,000 ASH) beside a right-sized CTA (
b4bc3b5) - combat — tactical_override marks two slots and stops the dodge (
2553e54) - veterans — move in-game card to top of Community view, match panel styling (
9063068) - veterans — stipend is tier/5 per day over 5 days, not a flat 1000 (
f85277b) - combat — synaptic_betrayal resisted by bigger squads (
0481e0f) - telemetry — promo redemptions from the ledger, plus per-purchase detail (
d0a6a19) - add Ark of War + 三國志·戰略版 to Veteran Transfer with researched tiers (
9b1cfea) - l10n — pseudo-locale pass, so the next language starts near-complete (
71a4e77) - researched tiers + accept/decline/support offer flow for Veteran Transfer (
0cb73ec) - operator re-drive for outage-parked veteran claims + judge residuals (
140f933) - Veteran Transfer surfaces (hub shop tab, /veterans redirect, in-game link) (
cfad66d) - Veteran Transfer server core (claims, LLM verify, stipend) (
5e5841d) - l10n — zh-Hant backfill, 501 strings from the closed extractor blind spots (
040a619) - Alliance Cup slide in the quicknav promo carousel (
cef6b58) - past-winners card on the Cup pane from the previous cup's paid ledger (
d735d55) - show the Alliance Cup prize pool in-game (growth plan R1) (
f5872b7) - l10n — parameterize the pipeline per locale, add language profiles and back-translation grading (
484f5e9)
Fixes
- ui — menu top bar keeps its safe-area inset on landscape phones (
b811f61) - ui — barracks T3 reserves no longer clipped by the safe-area inset (
a784877) - ui — tall-landscape center + stretch (Gap 53) + paint-aware audit probes (
791753f) - veterans — full-width CTA so CLAIM ON ASHENTHRONE.COM fits (
02fc327) - events — events-screen overflow at short landscape + single-box veteran card (
3121cfc) - combat — give a non-numeric battle seed a real identity (
536374c) - lint — bound the mail params harvest to the call it is inspecting (
ec1c857) - veterans — stop over-routing clean claims to review (
c5a3273) - release — the lander stops re-labeling the clone as the bot (
b9dd638) - veterans — accurate per-game nonce field, private ladder, no-loss framing (
a659638) - veterans — dark dropdown, verifying-state progress UI, six-game copy (
d4ee778) - telemetry — counts belong in the event, not the client_errors message (
0474de4) - l10n — siege status lines, and log the pseudo-locale sweep (
f3f0d58) - l10n — battle replay, the last combat surface no pass had driven (
37840e6) - l10n — tutorial + building-requirement labels, and close push gap #27 (
0ff73b0) - l10n — event sub-surfaces, dates, and the plural family the pseudo pass found (
0f6f6e8) - judge findings for Veteran Transfer (quota owner, deletion policy, admin verdict guard) (
9f44bbb) - l10n — zh-Hant visible coverage 98.2% to 100% across all 15 core screens (
d4205d7) - mount veteranRoutes before the auth wall; map oversize uploads to 413 (
dbc50d6) - l10n — restore the em-dash in the normalizer's CJK punctuation class (
b02ce97) - l10n — VS on the replay cut-in is a graphic, not copy (
13b4ba6) - l10n — close the two extractor blind spots that shipped the 56% pilot (
5478ab9) - worldboss — every boss attack threw at arrival; the boss was unkillable (
95ab23a)
Internal
- coupon — pin that a coupon-discounted purchase still climbs the ladder (
8acdfcf) - Veteran Transfer guards (static contract + live behavioral regression) (
7156dc8) - l10n — regenerate the pseudo-locale artifact alongside the catalog (
6f41b45) - serialize the playwright apt step; concurrent jobs fought over the apt lock (
a6f567d) - teach the partition meta-lint that DATABASE_URL may arrive via GITHUB_ENV (
2802532) - resolve the ephemeral Postgres port in a step, not job-level env (
db55a83) - fix two self-hosted failures the first real run exposed (
5baa41a) - vars-switchable self-hosted runner pool for the ubuntu jobs (
3809a91) - give verify-standalone a 20m budget; it outgrew the 10m ceiling (#1000) (
dd9483f) - close Known Gap #27, zh-Hant push templates are translated and rendering (
e7d0fc7) - l10n — log the 2026-08-08 zh-Hant visible-coverage run (
b28056e) - ci — record the shared-machine hazards and correct the sudo claim (
cc6a188) - Veteran Transfer surface corrected: hub /shop tab + in-game link-out entry (
33e5ea9) - Veteran Transfer surfaces as a shop tab (
d9d45d5) - Veteran Transfer design, owner decisions locked (rename from defector) (
202377c) - Defector Program design (vamp acquisition strategy) (
3a0b9f6) - strip em-dash from a carousel guard message (
0918fa8) - strip em-dash from an eventsManager comment (
754025b) - strip em-dashes from two new comments (
222b103) - growth plan 2026-08, acquisition + retention from prod telemetry (
fb047fd) - events — rename Community tab to 'Community Rewards' (
937ee58)
Other
- l10n: auto-translate zh-Hant artifacts (
ea3a45c) - l10n: auto-translate zh-Hant artifacts (
011e7f4) - l10n: auto-translate zh-Hant artifacts (
8001614) - l10n: auto-translate zh-Hant artifacts (
ac4291d) - l10n: auto-translate zh-Hant artifacts (
d37f9f7) - l10n: auto-translate zh-Hant artifacts (
14da6fe)
New & Changed
- audit — automated iOS/Blink per-screen parity harness + first run (
fe40a94) - social — gateway-relayed OAuth callbacks, zero per-shard provider config (
8289f4a) - watch — page when slim OTA manifests stop reaching every device (
016e311)
Fixes
- combat — a shield protects its own slot only - riders base on thrown damage (
1833a9e) - watch — ota_rollbacks pointed at the bundle; the data points at device RAM (
3860df6) - watch — despawned_but_active was measuring accrual, not presence (
4d113f4) - telemetry — filter an extension error that mints a fingerprint per occurrence (
d52fcbe) - alliance — "last online" reads real activity, not the frozen login time (
52677ea) - ios — restore viewport-fit=cover + safe-area box inset; retire quicknav manual inset (
912099a) - ios — neutralize WKWebView text autosizing + WebKit-safe flip cards (
643f659) - armory — roster paints with its data, and animates in once per visit (
fc4868c) - ota — strikes that stick, and rollbacks that require evidence (
41c4ba5) - replay — a torn-down replay can no longer crash the martyr FX block (
818951b) - map — the crawler panel stops showing a broken image and "..." while loading (
3f9dea6) - release — iOS signing standard, and the smoke stops failing healthy builds (
60f3978) - telemetry — client-error fingerprint identifies the error, not the build (
32f15ec)
Internal
- alliance — drop the SHARE TROOPS roster left dead by the Info/Bank split (
e2ed2fd) - test-runs — house-format the bot-authored OTA rollback fragment (
72444fb) - client memory acceptance rule - decoded bytes, per render tier (
85dc6f5) - ios — build 14 memory verdict - 792 MiB peak, 82% of ceiling, measured quiet (
478115c) - shards — social OAuth is one-time gateway registration, nothing per shard (
d4042ed) - ios — build 14 verdict, and what the trace could not measure (
5c9cfee) - ota — builtin hash set for shell 1786115855 (
84aeb2c)
New & Changed
- map — compact keeps all 12 overlays, at half resolution (
9ce849f) - ios — forward memory pressure into the page so caches shed before the kill (
c7024a3) - telemetry — report session deaths at boot, with the screen they died on (
430d9b2) - death — name the destroyer on the crawler death panel (
19a8b4a) - extraction — scarcity-driven dynamic restock + reprice the loot ladder (
3015a42) - map — mark the intercept and draw the target's path to it (
32bfbb9) - telemetry — count the two outcomes pursuit created (
3d36880) - release — iOS publishes its own shell artifact, and the version train opens itself (
1ac4773) - ota — per-language locale manifest views (
2d42c29) - native — give slow links five minutes per OTA file (responseTimeout 300) (
74ecdfa) - ota — enable slim manifests (undark SLIM_ENABLED_DEFAULT) (
71adfaa) - ui — bottom-right rail mobile pass - 44px flush square icons, garage skin icon, chip-bordered text (
7cccf9a) - ui — animate the tasks rail to the motion contract; crawler panel goes frosted glass on the card edge (
262bffe) - bd — capture Discord ticket leads into a tracked pipeline (
90603d2) - telemetry — mark the recovery reload so it stops masquerading as a crash (
43b4a6d) - reinforce — iter 5 - DOM crawler status panel + tappable host battle card (
d0bf1b2) - reinforce — iter 4 - winner-loss teeth, boost parity probe, radial REINFORCE + host chips (
099a59c) - reinforce — iter 3 - alliance reconcile sweep, host replay access, guard teeth (
f0423bb) - reinforce — iter 2 - upkeep custody leg (P0) + sequential garrison defense chain (
fec924a) - reinforce — iter 1 - server core: deploy route, reinforce march, garrison parking, recall, deletion hygiene (
c9aa5d3) - pursuit — tell the defender when an incoming march is re-timed (
fd14750) - pursuit — marches re-aim when their target changes course (
6ea1aae) - pursuit — a raid boost moves the squad, not just the clock (
2c208b1) - pursuit — the server stops teleporting marches (
a6ac648) - wip — intercept pursuit solver, shared/pursuitMath.js (
aaa03ea)
Fixes
- reinforce — despawn garrison release runs in a transaction (
a39fa10) - reinforce — despawn returns garrisons; lint every deploy path into the rail (
2831c0d) - reinforce — parked garrison surfaces in the squad rail, recallable (
7586eb2) - reinforce — a poisoned garrison row cannot wedge a battle (
20b7d53) - apply 15 code-review findings from the promote review (
1684dcc) - ios — commander videos probed as missing, and the sweep that could not see it (
e85f56a) - ui — deploy modal action bar is always reachable (
f5ff423) - arena — annotate the walkover watch-post as a non-click action (#967) (
3240a2f) - map — upload BEFORE release, the defect every green check was blind to (
9847a03) - map — pin the variant BYTES, stop the builder eating its own output (
9c695b8) - client — a restore is once per boot, and release the bitmap it replaces (
ddcf0e4) - map — restore the shared bound a docs commit quietly broke (
20c7576) - watch — bound the build regex so a client string cannot poison the check (
9427847) - watch — a device floor above daily actives is not a watch (
a940adb) - guard — the signal-watch DSN refusal matched the scheme, so it never fired (
cfff319) - ios — the dead-signal detector could never fire, and a regex pinned the break (
647adb2) - ios — give the render tier a real RAM number, and stop hoarding decoded pixels (
b392c17) - reinforce — route the reinforcement march through the travel owner (
205984c) - map — identify an incoming raid by owner, not by coordinate (
2e3832f) - extraction — recall reads the squad off its outbound leg; guard leg-writing statements (
58179d3) - pursuit — extraction re-aim credits along-track ground, matching the raid (
351e1d2) - pursuit — make the fixes reach the paths players actually take (
f83dbbd) - extraction — march_pace dies with the leg it describes (
1ebd720) - pursuit — carry the exact leg pace so it cannot ratchet across re-aims (
e4c5c50) - pursuit — carry the exact leg pace so it cannot ratchet across re-aims (
4a84631) - extraction — stop the client mirror lying about phase, and make the deploy leg reach it (
769276d) - raid — measure the target at the arrival instant instead of reconstructing it (
3e68314) - map — draw the deploy leg in screen space, and stop inverting it (
2b27a4d) - map — draw a deploying squad from its stored leg, not the live crawler (
188d936) - extraction — stamp the deploy leg after prep, and tell the client about a boost (
f2844c8) - extraction — price every leg by the tile it is actually stamped with (
36dec6f) - extraction — clear the march leg on every settle path, server-wide (
05d87e6) - pursuit — carry the leg's own pace through every re-aim and boost (
6c6db58) - extraction — end the march leg when the march ends, and guard the class (
92030dd) - guards — repair two more guards a full partition sweep found red (
d34c0b8) - repair the guard I shipped red, back-date the extraction re-aim, cover the clamp (
d6cd0fb) - extraction — give a deploying squad a real leg, and guard both boost paths (
562ec16) - extraction — the boost moves the squad, and guard what a review found unguarded (
ed6ec81) - pursuit — lock an engagement, clamp returns, show the intercept to the defender (
efdb0a8) - pursuit — the intercept may not lie beyond where the target stops (
5732569) - map — draw a returning squad to the server's aim, not to the crawler (
bf0cf57) - map — one sprite/dot cutover for all crawlers, nameplates in the close band only (
9645f75) - ui — rail portraits render at native scale, not a 3x bilinear downscale (
7f927d7) - arena — three permanent-wedge blockers, house-pod climbability, prize delivery (
403a948) - the certifying review's required fix, and close the class it exposed (
aeb9bf5) - release — the lane that lands was never allowed to land (
e9a906a) - remaining review findings (incoming aim, tx forward, stale prose) (
dd21739) - four more review findings (renderer, world payload, boost race, cooldown guard) (
19146bc) - release — the version train never actually landed (
0edcca7) - four defects found by the independent review (C+) (
956409e) - test — close the fourth commander pick and lint the class shut (
4ff0ca5) - ui — rail rev 3 - single-border pill, 34px square icons, matched avatar (
1bc380f) - ci — the context-loss guard pinned arity and distance, not the invariant (
5367d28) - ui — rail icons flush with the bar (44x36) per design critique (
e26efef) - guards — repair two guards that failed against correct code (
7ade5fb) - i18n — the frozen builtin copy never repaints a cache backwards (
7ddff10) - i18n — the origin is authoritative, not a fallback (
052d612) - ota — the store bundle lost its locales, and the guard pinned the label (
b499679) - extraction — stamp the march leg on a recall-mid-deploy return (
b0aaa7d) - extraction — forward the tx into the retreat travel-time read (
efabde3) - test — hud z bound parses game.html's .resource-bar rule (styles.css block carries no z) (
ca2209a) - ui — crawler panel z=20 - above the pixi map, below the hud so DECIDE wins (
d4b13a3) - ui — crawler panel drops its z-index - canvas-layer stacking, DECIDE chip renders over it (
17642f1) - ui — tasks expand animates only the rows that change - no more rebuild flash (
926d769) - clear the last three review findings (
9af7360) - pursuit — re-aim writes are compare-and-set, not status-guarded (
afb653a) - ui — share one right-rail edge, and reduce the tasks expander to a bare arrow (
e4c7efc) - extraction — a re-aimed return keeps its timing contracts (
71b404d) - extraction — returns no longer bump and snap back to the site (
79dce04) - reinforce — friendly march no longer reads as an attack, panel clears the bar, replays order newest-first (
8395fb3) - pursuit — a boost in the deploy window bought a guaranteed miss (
21dd954) - pursuit — the raid-return re-aim was dead code (
ddbc2ad) - reinforce — align sendBattleAlertTo live-emit shape with the rebased sibling path (
b9ed9e5) - reinforce — iter 5b - exit() teardown ordered after _hideGpuUnsupported (pixi-crash-guard window) (
9b34288) - reinforce — iter 4b - push anchors + PvP gate on garrison battle pushes, reinforce radial classified in minimenu lint (
921eecb) - extraction — returns re-aim at a crawler that has moved (
446a515) - pursuit — judge green — measure the miss when the march lands (
19f2995) - pursuit — re-solve on velocity change, not just on move orders (
63decd5) - pursuit — spend the whole movement budget; honest in-contact ETA (
fb613fc)
Performance
- map,audio — A2 releases the terrain CPU copy, A3 defers combat PCM by tier (
ba141a2) - map — decode the baked terrain once, not twice (
ac5ca0e)
Internal
- client — delete two dead commander-asset accessors, guard the rule (
5de0dae) - movement — settle the remaining duplication, and lint the leg rule (
3bbba0e) - movement — one owner for 'where is the squad along its leg' (
be11605) - test — one owner for commander selection, in the shared harness (
a547318) - ota — locales leave the OTA payload; translations stop minting versions (
7fd3370) - extraction — route the last seven travel-time sites through the owner (
402a459) - one owner for the squad travel formula (
07af70c) - extraction — one owner for squad travel speed (
b0db174) - reinforce — state the millisecond precondition the feed order depends on (#972) (
654ca99) - boost — compare the re-based depart with a tolerance, not for equality (#971) (
56783a7) - return-formation — stub the dependencies createReturnRaid actually has (#970) (
c6abdc5) - map — pin all three legs of the release contract (
7e2d3ed) - map — the live A2/A3 probe, and the plan told the truth about the phase (
fb7ae4b) - map — cover the two mechanisms this branch is actually FOR (
2b4a7e7) - map — range over the SECOND profile input, the one mapAssets actually ORs (
d7696ba) - map — derive the fixture matrix instead of adding an arm per round (
bdd34d1) - map — sweep the third fixture family over the tier axis too (
7d4a335) - map — instrument the tier this branch exists for (
c6842ed) - map — fire the bound on the route that only has one (
e15d246) - map — drive every KEY, not just the ones ensureTerrain can reach (
418a8f5) - map — the seventh defeat was img.onerror, which this file described but never checked (
eb00f15) - map — make the bound a property over every branch, and bound the suite too (
3e779c2) - map — close the fifth bound defeat, the partial-run pass, and the A2 gap (
7db722e) - map — A2 prerequisite, terrain rebuilds from disk (
6384f8b) - map — assert the bound directly, and delete an OTA hack that could not work (
58313c0) - map — restore the fixture I deleted, and tick the bound clock on clears (
dd0a277) - map — model the iOS fetch shape, and make the bound check behavioural (
6726f7d) - map — guard what the terrain commit claimed, and fix an adjacent blind sweep (
fdd43c0) - event-cancel — measure the pairing window in code characters (
123bc42) - pursuit — tighten the bias budget 0.12 -> 0.04 after the along-track fix (
5fe29d3) - event-cancel — intersect function scope with a measured proximity (
73f8080) - pursuit — guard the four fixes that reverted invisibly (
1491156) - pursuit — behavioural coverage for the pace-carry rule (
da23012) - pursuit — give verify-march-no-teleport actual teeth (
25e32bf) - ui — guard the rail icon fidelity contract (
d2ac824) - pursuit — pin that siege and boss RETURNS re-aim on the live crawler (
ed34048) - boost — measure the boosted-march coherence rule instead of its old shape (
abe459b) - pursuit — cover recall-after-re-aim, pin the scope, retract a root cause (
ec3ab3a) - pursuit — add the in-flight escape cell (
65faa91) - ci — drive the APK gate's real bash + document the lane in CLAUDE.md (
8bcdeda) - pursuit — the judge fence now catches the arrival teleport (
013c44b) - reinforce — iter 6 - headed click-path probe (radial to deploy modal to POST /reinforce) (
802b7c0) - pursuit — guard custody across the two new march outcomes (
8745c64) - pursuit — Tier 2 grades the REAL server, and it fails (
1136fdf) - pursuit harness + impartial judge for squad-movement chase realism (
602727e) - android — content-gate the debug-APK lane so manifest-only diffs stop building (
741cdcf) - test-runs — put the iOS Phase A fragment in the house format (#968) (
c9f902d) - changelog for 2026-08-07 promote (#965) (
974f248) - ios — the ship-watch query, and what its rows can and cannot say (
4571b54) - ios — the warm A/B is measured, the owner approved the compact map (
c1533c1) - ios — A2 needs a reorder first, the upload check reads through get() (
240fd0c) - ios — the census missed the harness, three rounds running (
f1953fe) - ios — settle the _loaded decision, and count the call sites properly (
763e1b8) - ios — stop the A2 section contradicting itself, and fix the undercount fix (
54e6adf) - ios — name the _loaded decision A2 has to make, and stop overstating (
a56b101) - ios — retract the -151 MB compact claim, it was never measured (
a947987) - ios — A2 was written against a recovery path production does not take (
5d9fa35) - ios — record that the A2 prerequisite is half the property (
5472bf1) - ios — the compact tier measured, and the cold-container trap that inverted it (
d7f6914) - ios — phased memory-reduction plan for agent execution (
9bfb05d) - ios — name the kill mechanism and measure the ceiling (
b8375d5) - ios — purge the last direction-inverted prose, and state the detector's volume limit (
791865c) - log the iOS reload root cause and downgrade the world-map renderer row (
e2322f0) - certification record, and make the march-synthesis catch countable (
5300265) - coverage — log the OTA slim/timeout/runtime-locales run (
bbad825) - ota — drop the stale check count, mark the Android timeout row as stock-not-shipped (
acc6fdc) - record why the extraction-loop counts differ between branch and base (
5427d50) - record the extraction-loop attribution and drop em dashes (
986edf4) - coverage log for the pursuit production-readiness sweep (
e03c4b8) - gap 38 closed, all five review findings fixed (
140b059) - reinforce — coverage-log fragment + matrix row for the overnight build loop (
a2db15e) - correct the pursuit coverage record after independent review (
553ecce) - coverage log for the squad-movement pursuit work (
6f410ce) - pursuit-loop — merge production items with their coverage (
9f5de42) - pursuit-loop — queue the squad-return investigation (
41c47c9) - pursuit-loop — order serverPursuit before boostParity (
8ec24a3) - pursuit-loop — merge the four server items into one gradable unit (
5a02d8d) - pursuit-loop — raid boost shares the crawler's distance ladder (
1d2f492) - pursuit-loop — owner ruling on dead-heat chases, queue boost parity (
3241c8c) - guard — garrison table is rail-surfaced, drop its stale exemption (
6727ca9) - release — move the native versions onto the 1.0.4 train (#969) (
1060538) - hooks — name the ceiling once (
b4cd6c3) - hooks — bound the hook above every guard, not between two of them (
6e6aa91) - hooks — map the four files this guard exists for (
cd68f6a) - reinforce — overnight loop scaffolding (spec contract + impartial judge agent) (
3c776ee)
Other
- l10n: auto-translate zh-Hant artifacts (
4d9d8d0) - l10n: auto-translate zh-Hant artifacts (
091a1e2) - l10n: auto-translate zh-Hant artifacts (
befb5a8) - balance(crawler): flat move speed, and show both speeds on the research screen (
d958e95) - wip: no-teleport guard (committing before injection) (
85b4abc) - l10n: auto-translate zh-Hant artifacts (
4069d3d) - l10n: auto-translate zh-Hant artifacts (
c24b4ad)
New & Changed
- landing — favicon is the brand badge, not the key art (
10de597)
Fixes
- worldboss — address review findings on the weekly board + additive ladder (
f815c0c) - worldboss — weekly leaderboard tab + milestones that add across tiers (
448dd15) - seo — stop advertising a noindex page in the sitemap (
383f463) - landing — ship favicon.ico to the marketing site (
5eb1229) - raids — createReturnRaid validated truthiness where the contract is a shape (
11a3efb) - anomaly-scan — the orphan check reported a superset of what the GC deletes (
2e85543) - mapAssets — one countable error per dead atlas, not one per retry (
deafc17) - anomaly-watch — the OTA-noise filter only knew the Android logger format (
13955f7) - analytics — a bare promise rejection must not record a contentless error row (
9220fe5) - anomaly-watch — the loop and the cron must agree on what PAGES, not just how it reads (
a5044b6) - squad-modal — declare _revealTimers so a squad that never reveals can schedule (
5c7a316)
Internal
- anomaly-watch — let a watch tick fix what it root-causes (
95785c4)
Other
- l10n: auto-translate zh-Hant artifacts (
71e133e)
New & Changed
- watch — page when a live boss window has arrivals and zero damage (
b9da643) - health — public online count = players active in the trailing hour (
091dbbc) - cup — gameplay carousel + conversion polish from the cold-open design critique (
2b32b44) - worldboss — make boss announces durable, with one owner for what they may reveal (
0ed7727) - telemetry — client RTT beacon, dimensioned by Cloudflare colo (
e13d3ea) - telemetry — split map outcome by client build, and emit each day once (
764596b)
Fixes
- map — KNELL renders without his shadow, and failed atlas loads retry (
1387423) - map — a slow load may delay the map, never permanently deny it (
6bc0b80) - arena — enforce leadership on loadout save, show the committed team (
0231192) - client — a replay start invalidated mid-gate must touch nothing (
b1a8f4b)
Performance
- map — pre-warm KNELL's atlas on the incoming event, not at first sight (
f18553b)
Internal
- backport by merging master into staging, never cherry-picking (
014cddd)
Other
- l10n: auto-translate zh-Hant artifacts (
af51159) - l10n: auto-translate zh-Hant artifacts (
61079bb)
New & Changed
- landing — friendly vanity link for creator campaigns, plus a 16:9 hero (
e2cc84b) - landing — ship the official App Store badge on the homepage and /cup (
06cf1a4) - alliance — contextual join-policy setting + fix mobile viewport overflow (
a5511bb) - economy — batch boosts cost batch-scale, and crafting is a measured sink (
dce4560) - economy — Hollow Cores make Tech Cores a resource sink (
f2ae592) - commanders — diminishing signal-conduit leadership above 100k, 1M cap (
187c382) - codes — 150 creator giveaway codes, 25 each for the six outreach targets (
74d9e74) - events — dormant-slot parity across megatower, arena and world boss (
3fb98eb) - quests — partial veterans get the remaining Barracks rungs, + 20 4000-ASH codes (
40472d6) - quests — Barracks facility chain (Lv3/Lv4/Lv5) on a multi-chain task engine (
eb5c63d) - worldboss — catalyst-identity chest at ~200k EV, 1-per-rung ladder, codex entries (
2b14a2f) - telemetry — capture the browser-engine version, the axis that actually discriminates (
d6fb9cc) - telemetry — record OS and version, without trusting the frozen UA (
e275718) - worldboss — alliance-scored participation ladder + real boss research (
ca4c88a) - push — daily return nudge, one per absent player, priority-ordered (
8e8e9c3) - worldboss — arrive teleport FX holds until the spawn tile is seen (
6cd72e5) - worldboss — slow boss teleport FX + Knell toll bell + respawn formation re-roll (
c7c5df3) - worldboss — owner round 2 - ping label, canvas info panel, SYS mirrors (
42bc049) - pwa — a real install offer, reachable in the orientation the game is played in (
452705c) - worldboss — owner manual-test round 1 - 7 findings (
3b5bdad) - worldboss — Knell world boss implementation (server + client) (
785fe9e) - combat — continueToBaseOnClear option + world boss balance sim gate (
20f8992) - art — Knell boss portrait + thumb and World Boss Chest icon (
e56eb45) - art — Knell world boss sprite atlas + static-fused/idle-only/emis-tint pipeline modes (
c1eac94)
Fixes
- client — dormant World Boss slot and BATCH x10 render honestly (
23d541d) - extraction — stop the faction tax minting itself back to the player (
00b8773) - migration — convert banked cores by VALUE, not 1:1 (
505e3c5) - promote — clear the six red standalone guards + weekly double-payout (
d06d69b) - worldboss — a defeated attack credited the full 20% cap (
8469b31) - promote — two live bugs and a migration race found by DB review (
769daea) - ci — green the standalone job - one dead l10n key, two stale guards (
360cd03) - amm — the Hollow Core pool paid into a balance nothing reads (
ebcf04e) - shop — clamp BONUS OFFER pack headline items to two rows, one line each (
93fb676) - auth — pass options to native Google login (iOS "missing provider or options") (
c91fa69) - bootstrap — additive ALTERs for the tax-rate columns, ordering pinned (
adaa5f1) - deploy — expand/contract the column rename, list Hollow Cores on the AMM (
4be7b94) - economy — close the tax mint, finish the hollow-core scrub (
8c11f5f) - worldboss — the battle fights the per-battle allowance, not the full hull (
8bda378) - worldboss — drop boss-only chrome from the shared deploy modal (
fb86276) - worldboss — one kill-emit owner with death coords (debug kill emitted nothing) (
b40181e) - worldboss — em-dash cleanup in panel comments (
b26c012) - worldboss — bottom-anchor the Knell sprite to the 2x2 footprint (
e337eb2) - worldboss — em-dash cleanup in the two abort messages my diff touched (
390b25e) - worldboss — adversarial-judge round 3 polish + probe robustness (
4b9a39a) - worldboss — adversarial-judge round 2 fixes (
6a03f26) - worldboss — adversarial-judge round 1 fixes across server, client, and harness (
570eb21) - worldboss — owner-scoped tile revert + NPC registry entry + no state-change takeovers + weekly NPC denominator (
0bd50f0) - worldboss — schedule guard learns the boss slot + l10n catalog refresh (
271af5c) - worldboss — client-review fixes (XSS escape, confirm warning, panel race, doctrine parity, l10n reachability) (
af4dd3f) - worldboss — db-review fixes (chat sender, ECHO-7 exclusion, tile stamp scope, retries, shard faucet) (
55b0b82) - worldboss — review + live-drive fixes (reserve clobber, relocation sampler, replay buff phantom, guards) (
7eb4c1e)
Internal
- patch-notes — state the alliance-bank conversion (
c4f04f1) - worldboss — owner manual-test round-1 fragment (
ca7f81d) - worldboss — test-campaign fragment + coverage matrix row + fragment format conformance (
0b71a7f) - world boss test-run fragment + coverage notes (
6a9c64d) - world boss chest re-based to rare arcology EV (owner) (restored) (
f62d2a1) - world boss chest re-based to rare arcology EV (owner) (
b63c2ec) - world boss rewards + sim-gate findings locked (base HP, counters corrected) (
f245b5c) - lock world boss window schedule (+2:15 arcology slot, 4/day) (
7ff17d0) - lock world boss kit (three formations + The Toll ultimate) (
1866352) - lock world boss identity (Knell, Cantor of the Ash) (
d1c8342) - alliance world boss phase-1 design (decisions locked) (
b7c325d) - no em-dashes on any line this branch added (
5418f8b)
Other
- l10n: auto-translate zh-Hant artifacts (
b7d741f) - l10n: auto-translate zh-Hant artifacts (
4e649be) - l10n: auto-translate zh-Hant artifacts (
b6c6b96) - l10n: auto-translate zh-Hant artifacts (
96a654c) - balance(extraction): signal_node and catalyst_cache become real high-value sites (
d2451d4) - l10n: auto-translate zh-Hant artifacts (
5f2b790) - balance(worldboss): chest drops single tech cores, codex loses the cycles row (
860bcf6) - l10n: auto-translate zh-Hant artifacts (
0ee6b02) - balance(worldboss): tier 1 fields a tenth of the escort, tier 2 is the authored one (
b9b61f9) - balance(worldboss): flat 1.3M tier-1 hull across all formations (
2b07a09) - l10n: auto-translate zh-Hant artifacts (
995fb87)
New & Changed
- cup — real figures in the YOUR SHARE mockup (
ca5c09f) - cup — proof-led hero, category contrast, and a YOUR SHARE mockup (
1b85e88) - track qualified web signups in Google Ads (
817b686)
Performance
- cup — real game captures in the cards, and 3.8MB of images down to 447KB (
b48c0b7)
Other
- l10n: auto-translate zh-Hant artifacts (
ce152b7)
New & Changed
- add X pixel to Cup landing page (
dc26e28)
Fixes
- tutorial — beat 23 — an EMPTY #hud-bottom was eating the PLAY REPLAY tap (
44d904a)
Fixes
- map — iOS black weather - WebKit refuses premultiplied <img> texture uploads (
4404f92) - arena — unpin the retired qualification rule from the overview guard (
c0468e7) - arena — pay the season tranche on closing division, not per-division events (
b929455) - ci — bound the fastlane showBuildSettings probe for SPM cold starts (
9008a5b)
Internal
- ios — record the build-13 PASSED verdict (run on hardware) (
c2c7a10)
Other
- l10n: auto-translate zh-Hant artifacts (
d92b0ff) - l10n: auto-translate zh-Hant artifacts (
030bebf)
New & Changed
- ota — iOS reaches slim parity on drill evidence, plus the silent-audio bug it found (
ce56b6a) - ota — the release hands over the slim floors it alone knows (
87d5d46) - ota — measure the edge cache per host in the posture check (
cf8a835) - ota — make slim rollout operable, not just correct (
6d7041d) - auth — Apple account linking on iOS, plus two gaps the Google fix left (
90b94df) - ota — publish the builtin hash set at release time (
b6a777a) - ota — slim manifests + native builtin fallback (phases 0-1, dark) (#863) (
8cf02ba) - audio — degrade, do not gate (phase 3 of 3) (
52cf111) - audio — combat sprite, one decode instead of eighteen (phase 2 of 3) (
fe267ac) - audio — session-scoped combat decode pipeline (phase 1 of 3) (
1670cc2) - cup — Alliance Cup Aug 21-30, $1000 pool, and X-ads attribution (
a815a5a)
Fixes
- watch — make the money alarm precise instead of loud (
c008118) - ota — the posture check must probe BOTH platforms (
4008cb9) - map — bound two gates that can leave the world map permanently black (
87f0067) - ui — Upgrade Facilities showed the RAW cap ladder, not the real one (
4f4764a) - l10n — normalize CRLF in the store extractor (
39b7b5e) - ota — the posture reporter cannot refuse the boot (
601fb61) - extraction — put event-card loot on the crate's packing list (
aefcafd) - lint — one self-tested source lexer instead of a copy-pasted stripper (
3ce14b0) - auth — a guest on native had no reachable way to link Google (
f8e9429) - client — make the deploy-picker re-entry latch structurally impossible (
50abe9c) - chat — polish mobile preview layout (
f710c39) - shop — fit the ACCOUNT charters on a landscape phone (
1c8aab0) - test — de-stale two extraction guards, and name the real bug in the third (
aa3338b) - map — render native canvas overlays at full DPR (
1d91118) - client — a refused deploy must leave the roster agreeing with the server (
7a95a5e) - audio — close the phase-2 review and second-opinion audit findings (
0acc4e1) - ops — ship the vitals watch in the image, and derive cron image completeness (
55df521) - ui — filter chips keep their desktop box on phone landscape (
34cede6)
Internal
- ota — slim rollout policy lives in the image, not per-shard env (
4330781) - ios — prove audio is audible on device, closing Known Gap #30 (
d7a918b) - chat — allow docked preview bottom anchor (
7575ccf) - ota — the runbook's platform default drifted within a day (
9c0cff8) - ota — the staging edge-cache rule is applied (
6275f33) - test — log the slim-OTA production-readiness pass (
c9302c1) - test — log the second-update-on-slim and prune drills (
a120be9) - ota — iOS slim-OTA drill runbook (
7f9cdbb) - test — log the OTA slim-manifest phase 0-1 device run (#864) (
fc38895) - audio — system architecture doc + physical Pixel 3a device pass (
c539ac2) - release — mobile version 1.0.2 -> 1.0.3 for build 13 (
bc96aaf) - ota — move promo art out of the shippable client root (
128ccf6)
Other
- l10n: auto-translate zh-Hant artifacts (
7b183bc) - l10n: auto-translate zh-Hant artifacts (
fde2c30) - l10n: auto-translate zh-Hant artifacts (
75c711d) - l10n: auto-translate zh-Hant artifacts (
581c4b6) - l10n: auto-translate zh-Hant artifacts (
eecfa81) - l10n: auto-translate zh-Hant artifacts (
c3e914e) - l10n: auto-translate zh-Hant artifacts (
19fd9c2) - balance(tax): faction tech-core tax 0/20 (default off), capital 0/50 (
058fc98) - l10n: auto-translate zh-Hant artifacts (
c977296)
New & Changed
- client — TASKS panel redesign - card rows, icon rewards, one-task collapse, unified CTA (
2d895aa) - uq boost/catalyst tip chain + multi-active chain frontier (
6c1ab03) - client — blocked CTAs navigate to the fix - NEED RESEARCH train chain (
14d5765) - Urgent Quest post-tutorial retention chain (replaces npx tasks) (
37aa082) - add dev-only trailer mode (
2b9d7e7) - ota — offer a Restart App prompt when an update is staged (
6c474de)
Fixes
- client — extraction cache-roll FX never plays over the city window (
f4afa61) - client — mobile polish - GO/CLAIM button backing, quicknav inset, tip lag nudges (
a4db533) - client — summon tip resolves the moment the city window renders (
288fce1) - client — city recruit tip lifts above the city window overlay (
da966b7) - client — fill-squad + conduit tips retire on LIVE state the moment the objective is met (
0840a64) - client — fill-squad tip docks top-left (grid spans the right half) (
46abd2a) - client — train tip anchors the qty slider with a drag ghost inside the popup (
403ca44) - client — chain-critical tips are session-dismissable, never permanently muted (
885ac48) - client — urgent-quest round-2 polish - boost tip, leave-to-claim tip, summon tip, stat auto-refresh, deploy-cost red, task-log restore, free-boost GO (
ef84995) - client — button-aware tip docking - fall back to top-left when the top-right dock would cover the highlighted target (the + CONDUIT button lives in the army screen's top-right; owner report 2026-07-31). Picks whichever corner overlaps the target less, with a 10px pad. (
e1d6ee2) - urgent-quest playtest round 1 (owner reports 2026-07-31) (
cd18919) - client — urgent quest header row clickable + legible over terrain (
497486a) - bootstrap — age restore runs before the last_active_at seed, and repairs it (
6993d7d) - tutorial — honest account age, one reset per episode, and an abandoned-account purge (
fbba704) - client — dead window.GAME_CONFIG guards always short-circuit (
c29d3bb) - pvp — tutorial players are hidden from the map, so stop letting people raid them (
b35e569) - raid — recall mid-march turns the squad around immediately (
cfdb4cf) - client — upgrade-facilities mobile polish (
08bcd53) - credit troops_trained npx task on boost-completed training (
6893204) - landing — drive the /cup pool and prize table entirely from config (
b5c7986)
Internal
- tutorial — zero world presence until graduation (
b7f83c1) - log the 2026-07-31 Urgent Quest playtest rounds + panel redesign (
c837103) - test-runs — staging verification fragment for the tutorial purge (
9c4f829)
Other
- l10n: auto-translate zh-Hant artifacts (
4197c84) - l10n: auto-translate zh-Hant artifacts (
87bb143) - l10n: regenerate catalog after the staging rebase (
918e272) - polish(client): task typography - condensed UI face for prose, mono only for digits (
7136464) - polish(client): task list scrolls chromeless, COLLAPSE pinned outside the scroll (
2ea822d) - polish(client): task cards go frosted-glass steel - square, lighter, gold accent (
9c3683c) - balance: uq_leadership_500 rewards 10k of each training resource (
7eeb142) - l10n: auto-translate zh-Hant artifacts (
e4bea40) - balance(tax): retighten tech-core tax ladders to 10/20/30 (
85de14d) - l10n: auto-translate zh-Hant artifacts (
86ad88b) - l10n: auto-translate zh-Hant artifacts (
562c6b6)
New & Changed
- redeem — add 20 more one-time 10,000-ASH codes (
b1985a0) - landing — add the /cup Alliance Siege Cup ad landing page (
15ec6ef) - shop — anchor the ASH coupon to the highest purchase in a 30-day window (
1b1ff74) - auth — one owner for client identity, proof-gated CF-Connecting-IP (
2185a99)
Fixes
- landing — derive every /cup date label from the scheduled event (
b512ec9) - vault — add-chain fallback was hardcoded to Base mainnet (
6a97ee1) - amm — raise the swap rate limit, it was throttling normal play (
98017e5) - hospital — stop the 1s tick rebuilding the whole screen (#827) (
d539436) - vault — match NODE_ENV tolerantly, it now gates the whole vault on prod (
c64c66a) - vault — accept an unprefixed 64-hex minter/deployer private key (
a074d90) - vault — isolate non-production NFT minting from the live collection (
b70fcf3) - vault — address commander art by portrait key, and ship the 3 missing cards (
b508163) - map — size the canvases to the layout viewport, not the visual viewport (
1bf284a) - vitals — derive the sample floor, and page on a concentrated crash (
f66a06f) - ota — back the boot-ready signal with a wall clock, not more hatches (
8df5f09) - test — S9 seeded a hospital row the tick could reap mid-scenario (
c17ce4a) - qa — make the paused-cryo fixture legitimate, not a state the tick undoes (
82a9bf4) - auth — disarm registration quota, it keys on our CDN edge not the client (
bb23681) - oracle — stop double-counting the nano_repair heal (
666ef8a) - oracle — apply overload recoil and echo ghost damage in the consistency check (
b860767)
Performance
- art — default portraits to .jpg, drop 4.9 MB of mislabeled duplicate art (
2ac67ce)
Internal
- client-IP topology review + abuse-gate recommendation (
09fbee5)
Other
- l10n: auto-translate zh-Hant artifacts (
38d1cbb) - l10n: auto-translate zh-Hant artifacts (
f951de2)
New & Changed
- l10n — zh-Hant backfill, term normalization, extractor fix (
d778ab4) - discord — alliance tag as a hoisted Discord role (
eb801ef) - map — clamp world-map player names to 8 characters (
ea46686) - balance — Omen 70/35, Thor 150% arcs, and the power ranking as a standing arena output (
7704516) - telemetry — Google Ads channel, players-online curve, device visibility (
ac5a4d3) - balance — shape-neutral power score + the class-stratification finding (
06ec034) - balance — asymmetric formation matrix (all 9 deployment pairings) + Rudis comparison (
8040126) - events — The First Word recurs 7 days from the first Friday of each month (
f5fd207) - shop — coupon presents as a headline item inside the Daily Free Drop (
c20c6d5) - shop — ASH coupon weekly gate, next-rung-up ladder, Golden Ashes UI (
91baa6b) - shop — Daily FREE Drop + 30% ASH coupon (
526712f) - economy — halve production storage caps, restore them as a Premium perk (
0ea51e8) - shop — the T3 Ascension, a three-act ceremony for the T3 MAXOUT purchase (
e287cc7) - shop — bonus-offer banner art, act-2 summon reveal, imprints in manifest (
aaf17f9) - shop — repeat-buyer BONUS OFFER on the caches (
30fb54b) - events — free summons score, codex deep-link + GO, ended events sink (
2fb5d50) - rest — rolling-24h Chest Doubling accrual cap + city 'Next buff in X' timer (
8bc5825) - events — sliding carousel, countdown chip, arrow; fix armory roster fit (
5fc6b26) - events — bigger carousel slide, replay display face on the title (
ce20888) - events — arena carousel slide, buff clearance, revert page banner (
1808cf0) - analytics — SOURCING dashboard tab + live mint-budget gauge + drift lint (
8e0ce39) - events — quicknav banner carousel + per-commander event banners (
b2c02f0) - shop — release T3 Maxout and pack AMM sourcing, retiring both env gates (
5c859b6) - events — score Commander Summon x2 by keys spent, not pull count (
e5a1fd9) - shop — one owner for the summonable pool, plus a T3 Maxout drift lint (
5629e95) - shop — drop the dead Quick Status charter, give T3 Maxout its own icon (
aa24037) - events — Commander Summon x2, Citadel Offensive, sidebar cleanup (
b83d062) - equipment — value recycling on the full progression chain, cheap low tiers (
94f8d84) - equipment — scale recycle with level and correct the epic upgrade sink (
908f8fd) - add Thor Omen and Ryn commanders (
c6f10ac) - commanders — three new innates (thors_fist, premonition, riposte), Thor/Omen/Ryn art-gated (
b0ce405) - amm — recalibrate genesis pegs and depth so new shards open balanced (
046ce73) - amm — deepen the pools T3 MAXOUT sources from, and raise the 24h mint budget (
dc1e841) - shop — prefill the Checkout email for OAuth accounts (
699a586) - anomaly — watch the money path (zero purchases, collapsed fulfillment) (
a72a7ed) - shop — T3 MAXOUT, a delta-priced live-quoted account boost on the sourcing rail (
6b59499) - shop — raise sourcing impact to 10%, deepen the prototype pool to 400 (
69d709a) - shop — env-gate pack sourcing so staging can soak while master stays dark (
e9445db) - shop — source pack contents from the AMM at spot, zero fees, print fallback (
324ba40) - vitals — monitor Google's crash rate ourselves and gate the ramp on it (
4aa8b14) - telemetry — record the GPU driver; state pixi-or-unsupported in the docs (
e01de95) - skill — ios-testflight-verify (
a74bd09) - ios — the agent verifies the TestFlight build, the operator just taps Install (
e3e607e) - ios — an uploaded build is a candidate, not a verified artifact (
f7b614b)
Fixes
- map — straight-truncate nameplates at 8, drop the ellipsis (
2c8825a) - guards — unstale three guards the session's own changes invalidated (
eccf59b) - balance — weight the power ranking by MEASURED prod deployment, not equally (
cc1537a) - ui — repair dropped color declarations, tokenize armyScreen + marketScreen (
c935d1f) - workshop — craft toast no longer blinks on prod after a craft (
d81f897) - world — seed last_active_at before the first inactivity sweep (
852df3e) - shop — coupon chip is a short gold pill that survives the theme sweep (
c351776) - shop — drop the dead COMING SOON button from the Premium charter (
bcc883d) - shop — clear the BONUS OFFER once the purchase consumes it (
6b62a9e) - world — reinstate 7-day despawn as a real-activity inactivity sweep (
f9303de) - shop — bonus band no longer overlaps the -% seal; commander thumb + chip (
6ae434d) - l10n — drop catalog keys for the removed commanders (
f8b37f4) - army — real innate art on locked commanders, tab re-tap exits detail (
474ef46) - inventory — stop maxout granting innates, clean up skill-card cells (
e702d18) - ci — close the verify-partition hole that hid 14 guards from CI (
73b5164) - commanders — register skill-card icons for the three new innates (
4ebc34f) - debug — test-battle could never proc an innate skill (
6181917) - art — mirror Ryn horizontally - she faced the wrong way (
0a04cf0) - shop — unpin
link, which 502s every real-money purchase (d0302cb) - debug — clamp maxout research to per-type maxLevel (
6afedd6) - vitals — tolerate a BOM in a service-account credential (
90b06a0) - vault — never block NFT import on ownership, guarantee delivery after burn (
3232781) - ios — bundle the Firebase config, and gate every upload on a real launch (
6289de7) - commanders — stable roster order, so tied commanders stop reshuffling (
f2c7acf) - close three promote blockers (death triggers, release gate, USDC promise) (
70ae3cd) - map — weather particles get their own clamped, mipmapped texture (
3dcd9a0)
Performance
- ota — stop shipping deprecated commander long videos (-26 MB) (
acc4b52)
Internal
- shop — migrate the connected vault to psh-*, and lint the rule (
22f8b0a) - market — retire the tutorial fixed-rate board, gate the market instead (
c14cc77) - cleanup pass over the sourcing/T3/storage branch (
2d8c472) - economy — delete the dead cap ladder, lint the storage-cap owner (
b7bfb21) - ios — verifying the shipped build is the agent's job, any install route (
21366c1) - iap — retarget the store-build ASH fallback assertion to the psh helper (
e664af9) - equipment — derive the auto-recycle yield expectation from config (
4f01321) - log the design-system cleanup run, matrix rows, gaps 45 + 46 (
a4b7914) - vault — the connected vault is psh now; record why the old line misled (
f6e7d3c) - sourcing observability, the T3 Ascension, and the equipment lifecycle (
84149f0) - worldMapScreen split plan; chore: drop em-dashes from this pass (
06c2050) - arena — regenerate on the post-balance numbers (
24ed658) - economy — correct the storage-cap section for the production haircut (
2cba20c) - arena — regenerate the report on the BASELINE weapon pool (
dd9a1a7) - document the repeat-buyer BONUS OFFER in pricing-and-deals (
00609b6) - handoff + art brief for Thor, Omen and Ryn (
91df75d) - shop — record the MEASURED checkout prefill rendering (fixed text, not editable) (
ae5677c) - shop — the offered-methods comment said card+crypto+link (
19f52b6) - correct the soak record's data provenance (wrong-DB import, owner-caught) (
2cf5862) - record the pack-sourcing staging soak and the owner pricing decisions (
920f062) - vitals — railway run masks the watch's exit code (
11828d3) - skill — TestFlight 'Redeem' empty-state triage (
39b4828) - goal — build 12 shipped to TestFlight and verified (
3ed1173) - css — delete the unreachable theme rules, document why the rest stay (
587a9fc) - commanders — remove warden_prime, terminus and sable from the pool (
6ead32b) - commanders — retire commander_<key>_long.mp4 as a required asset (
fe8c7b1)
Other
- l10n: auto-translate zh-Hant artifacts (
c942e72) - l10n: auto-translate zh-Hant artifacts (
bd05e72) - l10n: auto-translate zh-Hant artifacts (
25e974e) - balance(heat): deep wastes accrues 1/min, matching wastes (was 2/min) (
0d823ec) - l10n: auto-translate zh-Hant artifacts (
6587683) - l10n: auto-translate zh-Hant artifacts (
1d16f2b) - l10n: auto-translate zh-Hant artifacts (
6335d03) - balance(combat): overload 4x/max-HP bill, Thor arcs, mind_spike 3x, premonition re-arms (
dcb1a4c) - balance(arena): score the round-robin on 3 deployment shapes + publish solo + fix tempo derivation (
e81dc6c) - l10n: auto-translate zh-Hant artifacts (
202a206) - balance(workshop): every workshop craft timer boosts for 1 catalyst (
8d9a43d) - l10n: auto-translate zh-Hant artifacts (
803841f) - l10n: auto-translate zh-Hant artifacts (
ed9c0d0) - balance(equipment): weapon baseline + augment slot in the arena, Bulwark/Lattice retune, Thor and Cipher tuning (
1f32c55) - balance(commanders): arena screen 1 - buff riposte, premonition to 80% at max rank (
7ffc002) - l10n: auto-translate zh-Hant artifacts (
3e1e587) - l10n: auto-translate zh-Hant artifacts (
12d6830)
New & Changed
- release — derive What's New from the commits; de-duplicate English keywords (
5b76019) - aso — researched zh-Hant App Store keywords, no wasted repetition (
82767bd) - l10n — add the App Store to the store surface, prepared but not published (
76177cf) - release — promote instead of rebuild, own the listing, translate the store (
25bdfe0)
Fixes
- combat — secondary damage is a real hit on its own target (
bbb937a) - zones — PvP flag + haul bank flip at the LIVE Frontier crossing, not at arrival (
efd89f3) - extraction — enemy zone syncs on the clock, not on the payload (
fdbf737) - dev — a dev server that loses the tick election refuses to boot (
6fe34e4) - extraction — wave countdown derives from server truth, not one socket emit (
843e9fc) - extraction — battle window always closes; a rebuild restores the running haul (
e56986a) - android — wire @capacitor-firebase/analytics into Gradle — ad conversions never fired (
d4c18eb) - shop — USD presentment so crypto is actually payable, plus link and Google Pay (
889b416) - guard — the promote lane is the release-notes path, not metadata (
dcfbfd0) - release — stop re-uploading the Play icon; add the zh-Hant store listing (
8d4fe7a)
Internal
- strip em dashes from this branch's added lines (
7491241)
Other
- l10n: auto-translate zh-Hant artifacts (
0053d3f) - l10n: auto-translate zh-Hant artifacts (
f37b7f8)
Fixes
- tutorial — stop force-reloading players who were never stuck (
5be29b9)
New & Changed
- polish replay shield material effects (
92b1468) - add battle replay shield lifecycle effects (
bbe0750) - replay — beat-sequenced animation system - icon chips, lockstep pacing, count tweens (
482097f) - sim — Balance Lab panel - class-gated skills, persistent loadout, new-tab replay (
13eba00) - combat — expire temporary skills at next turn (
dd506a3) - replay — generic per-slot heal coalescing (any combo, defib excluded) (
2357269) - combat — proc stacking - every equipped skill AND strike rolls independently (
8082525) - alliance — troop helps are 24h loans; retire the help subsidy (
55c2c1c)
Fixes
- prevent Pixi memory pressure failures (
fdd333d) - recover Pixi module and context failures (
e21e134) - absorb shared resonance hits (
dab057c) - tile replay shields across slots (
ac603fe) - emphasize replay shield hex wave (
8953e45) - smooth replay shield sustain loop (
25cfa8b) - city — entering parks the crawler in the city; in-city summon needs no range check (
e2752c9) - beacon — recruiting inside a city no longer fails with 'Not near a Summon Beacon' (
43fd256) - prevent tutorial stalls and repair beat analytics (
3eb431f) - prevent tutorial chest handoff soft-lock (
a302319) - combat — "max HP" is the LIVE pool - revert defib to live maxHP (fortress inflation counts) (
f6d0bdf) - combat — splash scales with the triggering hit + dedicated 1.5s replay defib step (
fc383fe) - combat — defibrillator heals 50% of BATTLE-START max HP + two-beat replay DEFIB beat (
fed3ab6) - ui — market chart-collapse, alliance/replays panels, replay location line (
f015d19) - chat — WHISPER from menu screens carries you to the map instead of doing nothing (
1aebb19) - combat — defib per-rank heal ladder restored (owner-confirmed intended) (
fd59b75)
Internal
- replay — guard defib heal popup exclusion (
91559ee) - anchor the beacon receipt-order guard on the position SELECT, not its column list (
0143099) - guard inventory screen interactions (
1adff60) - post-nerf arena report + coverage fragment for the replay/balance session (
d493496) - arena — re-run for proc-stacking + splash-scaling; log balance deltas (
c5e1193) - put the owner's chat rules in CLAUDE.md (Rule 0) (
170ff03) - strip em dashes (house rule) (
afcda98)
Other
- l10n: auto-translate zh-Hant artifacts (
d193bd6) - l10n: auto-translate zh-Hant artifacts (
2e308ab) - l10n: auto-translate zh-Hant artifacts (
5ca8a38) - balance: owner tuning batch + temporal_rift fresh-roll ruling (
667532f) - l10n: auto-translate zh-Hant artifacts (
fb09f59) - l10n: auto-translate zh-Hant artifacts (
80a9d9b)
New & Changed
- topbar — the back button is ALWAYS a cross and ALWAYS closes to the map (
8e57832) - topbar — curved BACK arrow, cross when the next press leaves to the map (
21cbbb1)
Fixes
- inventory — drop Golden Ashes from the item list (
5197eb8) - inventory — chip reads SKILL CARDS, not CARDS (
77f9030) - inventory,topbar — category chips fit on phone; un-white the Barracks cross (
f0ddbeb) - inventory — restore every old Workshop-inventory feature, keep the encyclopedia sorting (
ab4eaf4)
Internal
- inventory — key items take their colour from registry rarity (
ac56700) - inventory — rarity badge loses the capsule, keeps the word (
31b6eb9) - inventory — card TYPE-CLASS is plain grey text, not a pill (
f953830) - inventory — card pill reads TYPE-CLASS, not class alone (
fd3a51f) - inventory — skill-card pill shows the CLASS; drop the mid-pane block (
315e7b0) - inventory — action buttons become a segmented bottom bar with tinted labels (
2944e85)
Other
- l10n: auto-translate zh-Hant artifacts (
7828bfe) - l10n: auto-translate zh-Hant artifacts (
073a7a0)
New & Changed
- dev — head-to-head peer-panel arena + Reactive Plating DEF+HP + Lv5 research sim baseline (
88e641a) - dev — arena volatility metric, model-replay links, innate-lift ceiling column (
bc08a22) - dev — arena duel screen - 1v1 single-target regime with formation-dependence contrast (
0fcb108) - dev — arena tempo-clash stage - efficiency + aggro-vs-scaling invariant (
ba1a01b) - l10n — zh-Hant backfill - 2119-string backlog cleared (subscription mode) (
eedf008) - dev — skill/equipment arena - standardized balance pipeline (
14b68ef) - frontier safe-zone squad recall - no deployed Wastes squads while the crawler is in the Frontier (
eef4398) - dev — triples-band sweep enriched with equipment combos at max rank (
84725be) - ui — shared boost panel - every boost has a live timer+bar and stays open until done (
46a708f) - map — menu zoom tween +50ms with a softer settle (ease-out quart) (
456404b) - menu — Armory joins the facility family; Upgrade Facilities decoupled to bottom-right; Armory modernized to station chrome (
97521f4) - dev — combat sim "Balance Lab" - equipment x skills at held power (
5a0f485)
Fixes
- tutorial — fast-click hardening batch - 9 audit findings + guard lint (
82490d1) - defender squad panel shows the formation combat actually uses (
0fb380d) - dev — arena card pool is class-legal - off-class cards never proc (
e749dbc) - combat — track inverted heals in consistency oracle (
81601b4) - tutorial — premature CONFIRM FORMATION saves empty squad -> extraction hard-stick (
9037eaf) - dev — arena battles run army-pure - base-rush no longer inverts margins (
9b2a9b7) - telemetry — close the four watch blindnesses that hid the black-map crash class (
397a967) - render — shared-Texture.from foreign-destroy crash + game-loop self-heal (Vivo black-map reports) (
1ab2c05) - replays — PvP-only social feeds, MY REPLAYS default + PVP/PVE pills, ALL tab removed (
0777187) - frontier-recall — review follow-ups - isPvpZone predicate, batch-gate lint anchor, fail-open warn, coverage-log format (
9d93eaa) - judge city / Arcology / beacon interaction range on the crawler's LIVE position (
deb4c81) - judge the frontier squad-recall on the crawler's LIVE interpolated position (
dc35614) - client — one-click update convergence - restart marker, silent SW catch-up, bounded advance (
dac1f83) - travel — completed raids no longer block city travel forever (
830680e) - barracks — remove post-fetch topbar font rules that shrank the name (
685ce04) - barracks — restore the frozen BODY styling - only the topbar is station (
3535bbc) - barracks — drop the white 67% body sheet - the station backdrop is the background (
874206c) - barracks — swap the UPGRADE button to its arrow icon synchronously at enter() (
bfb612f) - tutorial — strip 2 remaining — entities from tutorial copy (
34f84a8) - barracks — topbar chrome rules injected at enter() so the title never paints centered (
3648f70) - ui — topbar family glyphs 404 on Railway - root-absolute miniicon urls (
6085543) - tutorial — strip em-dashes from the server-side copy siblings + smooth the Upgrade narrate (
7b1f1c6) - tutorial — strip em-dashes from all on-screen tutorial copy + dim quicknav connectors under tutorial lock (
278d6fe) - barracks — topbar title glued left from first paint (no center-then-snap) (
3ebe45e) - menu — Upgrade Facilities takes the true bottom-right corner (after Encyclopedia + Events) (
542b06c) - map — require the WebGL renderer; wedged-GPU sessions get the recovery card (
3e3386c) - map — surface the GPU-unavailable card on repeated WebGL init failure (
a5b540a) - replay — consume every resolver-emitted death-trigger record (
8be2ff4) - combat — strikes trigger on-hit effects via shared applyOnHitEffects (
7ef326f) - hospital — coalesce split same-finish heal rows so a basket split never renders 'Queued · 0s' (
c9f506e)
Internal
- dev — arena screens only obtainable loadouts; meta leads the report (
9b20314) - dev — human-readable arena tempo/meta readout (
2a7de78) - barracks — the topbar IS the shared station chrome now (mode:'station') (
797b271) - map — re-anchor the pixi-crash-guard Retry-affordance check (function-scoped, not char-window) (
dc1dfec) - re-anchor crawler-boost-effect + speedup-idempotency lints to the shared boostPanel (
60123cf) - tutorial — guard the conduit beat's Armory quicknav target + drop an em-dash from its narrate (
4814402) - skill-description audit - fix three stale statements (
1ec6632) - run 14 head-to-head arena report on the merged on-hit engine + log entry (
6870b86) - test-log — 2026-07-22 Vivo black-map run entry + matrix/gap refresh (
aa35bb5) - coverage — close gap #31 - full battleLog in social feeds ruled intentional (owner) (
ea29680) - coverage-log entry for the frontier safe-zone squad recall suites (
dcd5cee) - log — per-run fragment files for test runs - the merge-conflict cascade is gone (
27ba9e5) - shields — finish the shield-retirement dead-code cleanup (
910974d) - strip em dash (house rule) (
b668287) - strip em dash from registry comment (house rule) (
9c56208) - strip em dashes from new comments and strings (house rule) (
694d399)
Other
- l10n: auto-translate zh-Hant artifacts (
85344aa) - balance+sim: commander power levels, virus-inversion proof, cleanse-first restored, 5 knobs (
a0dc36a) - balance: counter-web pass - stackable malediction, mark death-jump, shield debuff-immunity, decoupled medic cleanse, current-HP overload recoil (
d29ff5c) - balance: owner 8-change pass - delayed overload recoil, resonance DR, fracture/mind_spike reverts, last_stand halved (
7ba989a) - balance: owner 8-directive pass - whole-turn betrayal, persistent malediction, cross-element tempo, 6 knob changes (
5be1224) - balance: field_medic dual-target rework at 0.20/0.20 (owner-locked) (
9267020) - l10n: auto-translate zh-Hant artifacts (
c363897) - balance: T3 final model - equal combat power at power 1200, ATK-spread identity (
117993d) - balance: T3 re-stat to owner mirror-TTK targets (3.5/2.5/1.5) (
8581814) - balance: iteration 1 - 7-knob retune from arena run 1 (owner-reviewed) (
fc7a449) - l10n: auto-translate zh-Hant artifacts (
bc4a11e) - l10n: auto-translate zh-Hant artifacts (
87901fd) - l10n: auto-translate zh-Hant artifacts (
6ccab92) - l10n: auto-translate zh-Hant artifacts (
94e96c2) - l10n: auto-translate zh-Hant artifacts (
480690b) - rename: Encyclopedia -> Codex (player-facing only) (
0d12cf3) - polish(menu): injured-count display, reserves font parity, linear 260ms close fade, lint modernization (
7048698) - wip: chat-link scope filter, topbar glyph gradients, tab spreading, barracks exit-guard fix (
74c2f5c) - checkpoint: menu transition polish (topbar gap fix, barracks wallpaper slide, subtle bottombar fade) (
9b045de)
New & Changed
- analytics — qualify retention at tutorial beat 1 (
ded77a6) - ads — Firebase mobile conversion tracking (dark-shipped) (
4e7a00c) - mobile — native deep-link OAuth for community rewards + TestFlight update-gate link (
1c783c6) - replay — heal SFX + green Pixi heal glow for every healing skill (
5cdedb4) - events — name the scoring metric on every siege/Cup surface (
9b5d3a3) - cup — member contribution scores TOTAL power destroyed (gross), not net (
acac2d1) - map — Pixi rain depth + designed speed + zoom-safe drift (
1a1bb86) - ops — ledgered anomaly alerting - Discord pages on state change only (
a38a1ec)
Fixes
- telemetry — retire instant-heal sink tag (
d947386) - heal — harden catalyst recovery boosts (
22b4b40) - ads — harden conversion release wiring (
443d394) - megatower — auto-credit Guard troop returns + clearer commit warning (
78f1eff) - promote — resolve production review blockers (#689) (
87c8086) - ads — harden signup conversion delivery (
c726285) - alliance,chat,command — action-failure feedback used the retired hidden HUD chip (
510b3f7) - alliance — View Crawler — visible untraceable toast + greyed button state (#684) (
1aa9e97) - mobile — full-audit hardening - parity, update safety, version enforcement, store surface, pipeline (
7c9d3b0) - mobile — grey-box march badge + OTA delivery reach (resume checks, strike-based retry, fleet telemetry) (
378d53c) - citadel — RULERS tab layout + REIGN always Unknown (
f914117) - city — refresh the LEAVE button when the arena ends (stale ARENA LOCKED) (
d4deffe) - map — extend the zoom-independent + pan-tracked anchor model to ALL weather effects (
021f894) - map — rain tracks camera pan via integrated pan accumulator (zoom stays decoupled) (
b9769ad) - map — rain pattern fully screen-anchored (no world-origin term) (
c13f1cb) - map — pin rain pattern scale + fall speed to the reference tile (zoom-independent) (
921b94b) - map — wrap weather TilingSprite offsets modulo pattern period (Android fp16 smear) (
d8c8785) - client — per-target idempotency slots for money/trade/alliance/shop actions (
43d9e31)
Internal
- update injured picker notification fixture (#690) (
7546a46) - refresh promote changelog (
57e54eb) - changelog for 2026-07-20 promote (
e1dbe4d) - ads — Google Ads mobile drop-off root-cause + plan (
b74eb61) - release-build — link MIN_NATIVE_BUILD operator runbook (
7bb7957) - ota-updates — link MIN_NATIVE_BUILD operator runbook (
bcaaf4e) - add MIN_NATIVE_BUILD operator runbook (
b7312ce) - alliance vision + View Crawler audit (display:none assertion + vision model) (
c253f86) - test-runs entry for the Reddit/YouTube channel removal (
34ba3cf) - test-runs entry + coverage matrix for the mobile OTA/grey-box investigation (
72554b6) - known-gap entry for the three Pixi weather parity gaps (
2142917) - coverage-log entry for the all-effects anchor model (
6357fb0) - coverage-log entry for the rain pan-tracking fix (
5bbaf00) - coverage-log entry for the screen-anchored rain fix (
49ee7a8) - coverage-log entry for the rain zoom-scaling fix (
fedc820) - coverage-log entry for the Pixi rain depth/zoom retune (
fd60895) - coverage-log entry for the native-Android weather fp16 investigation (
d7dbe5f) - social — remove Reddit + YouTube OAuth channels (X + Discord only) (
d29ed37)
Other
- l10n: auto-translate zh-Hant artifacts (
cfdda00) - l10n: auto-translate zh-Hant artifacts (
c6d44d7) - balance(heal): 1 catalyst per 5000wu both pools, cryo partial-boost slider, bigger pack payloads, retire instant heal (
3b56ade) - l10n: auto-translate zh-Hant artifacts (
29ed252) - l10n: auto-translate zh-Hant artifacts (
6cf0913) - telemetry(monetization): separate real money from sandbox; ledger-derived lifetime + lever blocks (
ec10e3b) - l10n: auto-translate zh-Hant artifacts (
3c51497) - l10n: auto-translate zh-Hant artifacts (
e03ed19) - l10n: auto-translate zh-Hant artifacts (
3ec1eb3) - l10n: auto-translate zh-Hant artifacts (
ceeb981) - l10n: auto-translate zh-Hant artifacts (
3b61622)
Fixes
- client — pending-action nonce hold soft-locked crawler move after one dead request (
614a971)
New & Changed
- ops — human-readable anomaly digests - Discord never gets raw output dumps (
7b303cf) - ops — commit the anomaly watch so it survives any session (mirrors ticket-watch) (
03f5def) - ops — committed in-session ticket poller + ticket-watch skill (
33babfd) - ops — Discord ticket watcher - headless Claude investigations on staging (
31319ad) - ops — anomaly-watch cron wrapper for the Railway watch service (
59bcb40) - economy — AMM-spot value estimates on every reveal surface (blueprints + arcology/arena caches) (
a0fd83d) - map — move task-log toggle to the extended-menu rail + restyle the floating log (#656) (
0a46b94)
Fixes
- ci — mail-template lint counts ops-script senders (unblocks promote) (#668) (
7d30708) - map — task-log — drag map through it, smaller-tap targets, crisp native text (#665) (
33decc7) - megatower — mailed floor caches paid the legacy flat roll instead of the rarity-pegged Arcology chest (
abac268) - extraction — cycle-pause can never outlive its battle - throw-safe release + in-process reaper + anomaly watch (
9cac06e) - ota — serve OTA files as octet-stream so Cloudflare cannot corrupt hashed bytes (
7b82a45) - siege — Alliance Cup garrison minutes never accrued (sampler read the writer-less citadel_garrison table) (
71f304e) - extraction — heat gauge readability + replay lands on the squad + faded backdrop (#660) (
d6a7678) - map — drop the over-bright footprint glow on cities + the Citadel (#659) (
a236ab6) - speedup — free-boost chip for hospital/cryo scans the POOL, not per-row (phantom 'Free Boost: Healing') (
d751670) - map — clip other players' move lines to the viewer's vision (no PvP leak) (#655) (
cc775a5)
Internal
- megatower — remove the legacy flat chest path + ship the floor-cache make-good (
66e4b36) - siege — drop the vestigial citadel_garrison table + every dead reader (
3d63f35) - map — update pixi-lighting lint for the #659 citadel/city halo removal (
e2c7bdf) - re-anchor verify-lootbox-market-value to the spot-valued reveal path (
768c6a8) - skill — ticket investigations run on a Sonnet subagent (
146f4d3)
Other
- l10n: auto-translate zh-Hant artifacts (
e7aaf15)
New & Changed
- tutorial — the Signal Beacon teleports the player to the Frontier (
b4efa85) - tutorial — formation beat - tight spotlight, side-docked panel, slot-by-slot fill reveal (
5ad07fc) - encyclopedia — Arcology Chest collapses to ONE entry with rarity-filter pills (equipment pattern) (
ba62cdf) - megatower — four-rarity Arcology Chest — tiered floor caches + season prizes, encyclopedia page, rarity chips (owner redesign) (
6f97e5e) - megatower — seasonal Arcology leaderboard — cumulative floors per calendar month (owner directive) (
fb909a0) - free-boost Tasks - GO chip when a timer enters its free window (
90d84fe)
Fixes
- tutorial — Frontier spawn avoids city footprints and occupied tiles (
ed840a4) - client — bank-reveal tech-core bar only renders when cores are in play (
37dbc56) - tutorial — extraction slot-machine reveal lands on the real deterministic loot (
76fbb6e) - tutorial — thaw grant repaints the open Barracks reserve tiles (
0a04296) - events — defender-pool power gates read the real defense squad again (
046ed29) - events — 10px side padding on rewards section titles — PERSONAL TIERS / SEASON PRIZES no longer hug the panel edges (
0ececc9) - events — Arcology rewards/leaderboard layout polish — season prizes section, Floor labels, board panel + alignment (
cd50a0e) - events — arcology chest chip rarity border must follow the base chip rule in source order (
875e1a6) - megatower — restore the crawler-defender role when an Arcology run ends (#647) (
ccff965) - build — re-anchor the shopScreen store-strip end marker after the surgical-confirm rewording (#645) (
1f28279)
Internal
- events — decision-gate audit - every requirement provably openable (
0de1372) - changelog for 2026-07-17 promote (#643) (
3ef0392)
Other
- l10n: auto-translate zh-Hant artifacts (
124c12a) - l10n: auto-translate zh-Hant artifacts (
cd95e37) - polish(tutorial): formation fill lands INTO visible sockets (owner feedback) (
017ce57) - l10n: auto-translate zh-Hant artifacts (
859d222)
New & Changed
- city — live Arena schedule on the city ARENA tab (
f670ba1) - live "Get it on Google Play" badge on the landing page (
575b808) - raise $ato/ASH currency-pair fee to flat 15% (
8b17b62) - telemetry — dimension render:crash_guard by reason + distinct players (
c7d1f3b) - workshop — station design system, sweep-free menu mode + three-zone craft layout (
39a9e65) - native — add first-paint splash handoff (
e2c73e6) - native — iOS bounce lock + keyboard no-resize (fixed-viewport contract) (
9276703) - client — premium-feel pass — native haptics, self-hosted fonts, overscroll lock (
6dfac6d) - client — app-wide selection/drag-ghost suppression with .selectable opt-in (
aaffa86)
Fixes
- shop — single-armed-CTA invariant + tutorial selector + armed-state contrast (review fixes) (
63412e6) - shop — surgical inline confirm — stop full re-render on buy; two-tap confirms for workshop crafts (
30c77f4) - mail — claim rewards show display names + loot chips, not raw keys (
95a7348) - client — scope selection suppression to game shell + Firefox drag guard + lint (
4b1015b) - mobile — suppress native long-press text-selection highlight on touch devices (
dd33440)
Internal
- record the GitHub merge=union caveat, verified empirically (
24203aa) - log — make test runs append-only + union-merged so PRs stop conflicting (
2ffbaee)
Other
- l10n: auto-translate zh-Hant artifacts (
9bc3240) - l10n: auto-translate zh-Hant artifacts (
b8e5033) - l10n: auto-translate zh-Hant artifacts (
393b04d) - l10n: auto-translate zh-Hant artifacts (
d0655bb) - l10n: auto-translate zh-Hant artifacts (
17c9cfe)
New & Changed
- arena — make relay carry-over legible on the inline battle stage (
28a8bd8) - extraction — combat window fills the minigame height; HEAT + wave warning inside; red heartbeat on incoming units (
4992737) - extraction — WAVE INCOMING banner shows power + danger grade + ghosted formation; DECIDE no longer blinks (
9e0a9db) - iap — sandbox-grant farm alarm for the IAP_ALLOW_SANDBOX review window (
614f99d) - chat — improve access and audience visibility (
93c616d) - basket — triaged casualties rejoin the squad slot at homecoming (
a673e5d) - push — device notifications — engine + web rail (design Phases 0+1) (#613) (
e779dc2) - chat — SYS chat mirror is opt-in — only important persistent game-state lines reach chat (
9f89ab4) - extraction — DECIDE outcome card gets a 30s read window + CONTINUE (
cb51bdf) - add Workshop claim-ready tasks (
7c70aa5) - extraction — DISCOVERY-DRIVEN hauls - the fixed find schedule is gone (
2277895) - extraction — minigame round 2 - decide never resets, grey-out relatch, squad scale + exact replay overlay, modal polish (
11be9b1) - extraction — neutral search sim + pause-aware shared minigame clock + wave/DECIDE layering fixes (
ef03216) - Barracks reserves polish + squad drag/drop + training visual (
0ce77d0)
Fixes
- arena — harden committed-team authority, status/loadout races, snapshot display, and fail-closed recovery (
830f496) - arena — MY TEAM renders the committed team while locked, never stranded local edits (
8b60600) - promotion review — restore production CI when the localization bot advances a ready staging promotion
- push — harden endpoint delivery, provider deadlines, digest/cap accounting, recalls, and registration races
- native — fail closed on RevenueCat identity errors and never reopen a cancelled purchase sheet
- notifications — make device toggles, preference writes, and logout endpoint cleanup server-confirmed
- basket — emit persisted survivor squads and carry siege triage recoveries safely through homecoming
- l10n — translate remaining standalone Sergeant references in zh-Hant
- extraction — keep HEAT pinned to the combat window bottom during battle (margin-top:auto) (
dcb4f8f) - extraction — center the HEAT meter in the combat window (scale from center, not left) (
201f287) - extraction — inset combat sides from the edges (padding 2->36) on both row + arena, seamless preserved (
29115b0) - extraction — wave preview seamless with replay — enemy grid at exact fight position, warning centered above (
c01f9ea) - extraction — wave warning text ABOVE the enemy formation at its natural fight size (
7901bf1) - extraction — close the minigame window when the player is no longer in the site (
e5ca29f) - extraction — resolve/DECIDE card steps aside for combat by HIDING (not destroying) (
f94e97f) - iap — RevenueCat identity never bound — every purchase landed anonymous (
b9ee556) - iap — no dispatch deadline on the native purchase sheet (user-paced) (
fc8dc75) - iap — retry RevenueCat self-init — a lost boot race hid the ASH shop all session (
62df168) - iap — IAP_ALLOW_SANDBOX env opens prod sandbox-grant window for App Review (
9188024) - map — crisp radial-menu text + info panels on-screen at DPR>1 (
5614951) - basket — tell the store about losses still in flight (siege defeat) (
a287359) - basket — release the tile when a commander owns none of a type (
5ef3f16) - basket — applySurvivors must claim only the wounded it actually owns (
5ea8370) - siege garrison label + client-owned l10n for rail place/phase names (
69ffd7d) - harden squad-rail deployment coverage per diff review (
d8287e3) - extend bottom-bar commander chip + squad panel to all PvP deployments (
8b33f39) - enforce shared Arena ghost troop pool (
70b22fd) - city — self-heal the players.in_city desync behind the "resting in the city" move wedge (
899d86c) - test — revive extraction reveal guards stale after the discovery-walk redesign (
02f42b8) - test — picker drop guard follows the delegation chain instead of a char window (
152c780) - barracks — repaint the map backdrop in the phone-height branch too (
23b136d) - barracks — reserve cards keep their size on a short window (no vertical squeeze) (
8db5c04) - release — authenticate iOS cloud signing (
c4a2dc4) - allow arena signup with prior results pending (
bbf34da) - release — keep Play feature graphic manual (
55191c9) - release — keep Play screenshots manual (
cd585be)
Internal
- ios — StoreKit configuration + shared scheme for simulator IAP testing (
eb6d85f) - basket — S9 - healed troops return to the squad preset, over HTTP (
497fc59) - basket — pin the payoff - healed troops return to the squad (
c876e94) - workshop — live boost-to-task-chip regression + coverage log for the 2026-07-16 prod report (
44d2c24) - log WAVE INCOMING banner + DECIDE blink-fix test run (
386abae) - coverage-log entry for the 2026-07-17 iOS IAP end-to-end run (
f303045) - coverage-log entry for the triage-rejoin decision (
f3149f4) - coverage-log - heal-back-to-squad scenarios (owner priority invariant) (
65ba8b6) - coverage-log entry for the siege basket fix + review wave (
c1a97f1) - coverage-log entry for the squad-rail review waves (
770e9c2) - log chained-DECIDE no-pause live E2E (31/31) (
e1e4bac) - ios — commit Xcode's canonical rewrite of the App scheme (
0fa5ca7)
Other
- l10n: auto-translate zh-Hant artifacts (
d39f4ac) - l10n: auto-translate zh-Hant artifacts (
ee92111) - l10n: auto-translate zh-Hant artifacts (
217fa23) - l10n: auto-translate zh-Hant artifacts (
c6d4899) - l10n: auto-translate zh-Hant artifacts (
105a4d1) - l10n: auto-translate zh-Hant artifacts (
cd84da3) - l10n: auto-translate zh-Hant artifacts (
3153e04) - l10n: auto-translate zh-Hant artifacts (
31bff2e) - l10n: auto-translate zh-Hant artifacts (
8b34c73) - l10n: auto-translate zh-Hant artifacts (
941f265) - content(events): remove all em-dashes from DECIDE texts + trim 9 flavors to fit the window (
5e5627d) - balance(extraction): cube-hop speed reduced 30% (CELL_MS 550 -> 786) (
d9ead18) - l10n: auto-translate zh-Hant artifacts (
472f69f)
New & Changed
- extraction — DISCOVERY-DRIVEN hauls - the fixed find schedule is gone (
2277895) - extraction — minigame round 2 - decide never resets, grey-out relatch, squad scale + exact replay overlay, modal polish (
11be9b1) - extraction — neutral search sim + pause-aware shared minigame clock + wave/DECIDE layering fixes (
ef03216) - Barracks reserves polish + squad drag/drop + training visual (
0ce77d0)
Fixes
- allow arena signup with prior results pending (
bbf34da) - release — keep Play feature graphic manual (
55191c9) - release — keep Play screenshots manual (
cd585be)
Internal
- log chained-DECIDE no-pause live E2E (31/31) (
e1e4bac)
Other
- l10n: auto-translate zh-Hant artifacts (
8b34c73) - l10n: auto-translate zh-Hant artifacts (
941f265) - content(events): remove all em-dashes from DECIDE texts + trim 9 flavors to fit the window (
5e5627d) - balance(extraction): cube-hop speed reduced 30% (CELL_MS 550 -> 786) (
d9ead18) - l10n: auto-translate zh-Hant artifacts (
472f69f)
New & Changed
- analytics — "premium kept post-refund" outstanding count on the revenue dashboard (#532) (
76744b2) - unify Citadel command panels (
d7ae793) - ui — responsive weapon-upgrade modal + market auto-buy for insufficient materials (
f767c13) - one-week 20% sale on the Spark pack — first buy 3.99, one per player (
fd708ee) - Chest Doubling icon on doubled hauls in the reveal titlebar (
e13e5a6) - implement the +10% premium production perk + certainty audit fixes (
109901f) - sale banner clicks through to the Golden Ashes tab (
717c5c9) - premium promo goes CUMULATIVE + early-access banner copy (
b0a8e4a) - ASH-sale promo — 500+ ASH purchase grants permanent premium (
1edb9de) - workshop — tech-core fabrication yields 10 (explicit), cost 5k→100k $ato (
a06c64b) - telemetry — per-resource player-supply snapshot + inflation graphs; $ato watchdog (
e8d85d9) - telemetry — bucket combat win-rate by commander rarity (
b51ac7a) - telemetry — production economy-ledger closes the sink-vs-faucet asymmetry (
20335eb) - economy — AMM fee alliance-share split + market-health instrumentation (
1ae7107) - anomaly-scan — surface recurring (persistent) client errors, not just new ones (
c7aed40) - pvp — retire the toggleable shield; zone-based PvP (Frontier safe) (
ce621a7) - extraction — pause the reveal clock during rolls (no jumps, no dead wait) (
34c49f2) - extraction — organized COVERAGE exploration (don't strand holes) + fade the decide npc after 2s (
b395e8a) - extraction — searchers walk to discover chests + wave power alert + tooltip haul/cache fix (
93d9115) - citadel — establish war host design system (
178e22a)
Fixes
- smooth march indicators and alert lanes (
52d5b27) - restore Citadel ownership celebrations (
b38bce2) - stabilize live War Host demo (
2308d70) - restore War Host live queue updates (
064d37d) - ui — GO-to-Marketplace-upgrade when that's the actual fix for a blocked buy (
5b33d9c) - release the sale claim on async payment failure + pad session expiry (
04173de) - test — unique mock session ids per charge-proof run (
4615586) - anchor the all-surfaces banner lint on the method definition (
84041cc) - sale badge under the price button + web-only enforcement server-side (
e441c68) - Chest Doubling stack counter ticks down live as chests seal (
badbe93) - render — guard pixi map render against the WebGL context-loss race (shader crash) (
5b13869) - events — sim-events full report tolerates zones: []; lint empty-zones picker cards (
cf973b0) - ci — green the verify-standalone sweep after shield retirement (
345b26b) - objectives — live-update the daily extraction-task counter after banking (
b9dd225) - client — demote passive bookkeeping notifications from ALERT to SYS log (
a650056) - raid — realize + haul writes join the raid tx in calculatePlunder (
dd4b698) - extraction — remove stale Wastes shield-gate blocking deploy (prod hotfix) (#510) (
7b7bb52) - extraction — searchers WANDER onto caches (patrol), no beeline/dash by the commander (
59544ca) - 3 more promote-sweep failures (tx-propagation + 2 stale Hunter/tutorial lints) (
a2cf660) - two promote-sweep failures from the latest staging batch (
1578914) - telemetry — filter transient network/transport noise from client-error capture (
1d474cb) - telemetry — attribute stackless console.error by caller so wallet-extension noise is filtered (
6eda6a1)
Internal
- update stale alliance verifier contracts (
137c322) - add Throne capture celebration demo (
a7daf78) - add repeatable War Host battle demo (
a34cea0) - pin the surface split — price sale web-only, premium banner everywhere (
35ec6e0) - behavioral proof of the sale charge — exactly 299 cents, exactly once (
db1d138) - flip sim-economy --gate from warning-only to hard (
05d765a) - economy — retract the 6x production claim; production is demand-coupled under caps (
e26a5f2) - skills — TTA ruling stragglers in research-methodology (pre-registration example + provenance grep) (
c123317) - skills — record owner TTA ruling (36.9d accepted) + gate-flip completion (
90cd8ef) - tuning — record owner ruling — 36.9d first-legendary TTA accepted (
06e175e) - memory — re-sync shared engineering memory snapshot from per-user auto-memory (
f21ff4f) - skills — Rule 12 provenance resolved (ad-hoc numbering, no fuller list; owner-confirmed 2026-07-12) (
b973157) - skills — fold in item-8 verification results (PR #520 + staging alias) (
47e6f23) - fix seven confirmed doc/comment drifts (discovery-audit cleanup) (
5e7a771) - skills — record the .agents/skills ruling (duplicates retired, PR #518) (
bef89b8) - skills — update shield-lint state after PR #515 merged (red resolved same day) (
f1452d0) - skills — add the ashen-* knowledge library (16 skills) (
338aa77) - gitignore the local marketing/ x-monitor output (
58aafa5) - agents — retire the 3 diverged .agents/skills duplicates to pointer stubs (
5639d7c) - Chest Doubling reveal icon fills the titlebar height (
d60a994)
Other
- l10n: auto-translate zh-Hant artifacts (
1f9b113) - l10n: auto-translate zh-Hant artifacts (
3db90fd) - l10n: auto-translate zh-Hant artifacts (
9877f53) - l10n: auto-translate zh-Hant artifacts (
13ae46e) - tune: Spark pack sale deepens to 2.99 (-40%) (
5ed8267) - copy: sale badge reads '-20% ONE TIME ONLY' (percent derived from prices) (
57a1045) - l10n: auto-translate zh-Hant artifacts (
3535bf6) - l10n: auto-translate zh-Hant artifacts (
2aad8b9) - l10n: auto-translate zh-Hant artifacts (
9202334) - l10n: auto-translate zh-Hant artifacts (
687e5cb) - l10n: auto-translate zh-Hant artifacts (
b15f3e5) - l10n: auto-translate zh-Hant artifacts (
6a89177)
New & Changed
- hunter — production Hunter — hover-sentinel map sprite, own NPC identity, red core-eye portrait (
24cb458) - arena — My Team rework — prefill from commanders + active squads, relay reordering, Armory inspect (owner directives) (
1152029) - arena — P4 backend completion — prize mail crates, lock summaries, seasons, decay, featured broadcast, 3 guards (
86730e7) - arena — P3 client + review fixes + kill switch — screen, replays, art; hidden behind ARENA.ENABLED (
612b6b3) - arena — P2 match engine + review-fix pass — Swiss pairing, Elo, relay resolution, prizes, telemetry (
15a3245) - arena — P1 backend foundation — config, schema, commitment lock, signup/withdraw, lock+snapshot, tick op (
0de40aa) - improve alliance discovery and profile stats (
cd04b5c) - rotate ASH redeem codes; pack codes + redeem celebration (
e90898d) - polish tutorial character transmissions (
fcc45f1)
Fixes
- calibrate Thornvale terrain scale (
7218179) - map — map-label text density FINAL — exact 2x bake (probe-ratified; do not revisit without beating the A/B) (
3d650fd) - crawler redirect jank + rotation tilt + 16-heading sprites (
2a90d04) - choreograph Vael's tutorial assault (
5773e31) - make tutorial transitions rapid-input safe (
13a6644) - prevent alliance topbar leaking across screens (
f0835e6) - strip stray screen-specific segments from the shared menu topbar (
0913bc0) - l10n — stop the game extractor harvesting WEB3 landing config (Tier A resolution) (
19b4290) - keep menu-topbar UPGRADE right-aligned when a stray segment leaks in (
d6cd2b3) - rewards — enforce tx-hash uniqueness on paid Cup claims (MEDIUM) (
768cd4d) - shop — resolve a purchase on async_payment_failed instead of leaving it pending (MEDIUM) (
6d81abc) - auth — bind account-restore token to its deletion request (HIGH) (
082e88c)
Internal
- map — close the label-box occlusion investigation — transient GPU state, add re-armable probe (
b92d265) - arena — make verify-arena-team-tab CRLF-tolerant (
2685de5) - arena — promote e2e smoke to verify-arena-e2e.js + coverage-log entry (
5baf746) - qa — update squad-reveal event assertions to the inline-choice overlay (
c5a795d) - fix a 5th stale verify (account-deletion-grace login SELECT regex) (
db86319) - fix 4 verify-standalone failures caught by the promote full sweep (
9ecfe3f) - arena — implementation plan — verified ground truth + phase contracts (
e9c3662) - arena — late joiners seed at 1000 Elo (owner call) (
0ceb515) - Arena — Elo PvP Swiss tournament design (planned) (
e75bafb)
Other
- l10n: auto-translate zh-Hant artifacts (
b1d3322) - l10n: auto-translate zh-Hant artifacts (
238f592) - l10n: auto-translate zh-Hant artifacts (
b5d8957) - l10n: auto-translate zh-Hant artifacts (
6765e8b) - l10n: auto-translate zh-Hant artifacts (
cfadeb9) - l10n: auto-translate zh-Hant artifacts (
ad8e27f) - l10n: auto-translate zh-Hant artifacts (
a03b27b) - l10n: auto-translate zh-Hant artifacts (
2978e07) - l10n: auto-translate zh-Hant artifacts (
6dfcf45)
New & Changed
- add skill card combine and salvage (
0028b6e) - settings — retire Menu Screen Effects toggle; disable flicker/static/scanline for all (
c9a67c3) - glow rule - only LIVE sites beacon (stale memory-ghosts never glow) (
c9a25b4) - shop — Stripe crypto payments (USDC) + async fulfillment + expired-session ledger (
182267a) - analytics — multi-account cluster risk score (confidence x exposure) (
1255fb9) - every extraction site carries a flavor name; band sites are timed (
64e5a50) - l10n — localize /event-rules to zh-Hant (Cup rules & scoring page) (
b9dd259) - Mark II panel + wheel-hub glow (derive-emission blue band, bloom 0.6/0.85) (
a3bc9db) - events — Cup pre-season countdown on both surfaces + contribution 0-clamp (
439f28b) - default crawler panel glow + bloom shipped (derive-emission 0.6/0.85) (
212b37d) - pipeline — --derive-emission - panel glow from a basecolor hue mask (
5877112) - events — redesign in-game Alliance Cup to design-system bar + member contributions (
5a5eb62) - atlases re-rendered with the co-rotating sun - all 8 shadow directions correct (
160c5b6) - events — view-only Alliance Siege Cup standings in-game (no prizes) (
c398d17) - baked raytraced ground shadows on both crawler skins (replaces the blob oval) (
230cc79) - add dynamic Pixi map atmosphere (
0374184) - default crawler replaced with animated atlas (same pipeline as Mark II) (
7b48243) - Garage crawler skins - Mark II unlockable at Barracks 5 (
2c91b7f) - tread-pod pilot (procedural scrolling belts) - checkpoint before removal (
f5955d1) - wheel-as-separate-asset composition replaces fused-mesh wheel surgery (
7967e18) - crawler upgrade skin v2 from single hero image (owner-directed rebuild) (
dd1d4ae) - map — shrink Thornvale ~1 diagonal square upward, top-right pinned to the river (
521f66b) - extraction — drop the post-fight CONTINUE button — auto-resume 3s after the result (
5c4b5fd) - extraction — show live "CACHE x/x" in the reveal title, right of "HAUL x OF y" (
7fb4026) - city — VIEW MAP parks the crawler resting in the city + map resting bar (
6ac3295) - extraction — retreating banks ONLY the caches you actually found (
379ab02) - extraction — real-time resume also covers the roll's fly-into-chest tail (
def28a4) - extraction — deterministic haul plan (consistent + synced) + map centre-icon + extractmobile art (
6559085) - extraction — ONE deterministic roll timeline — minigame, map chip, and reopen all in perfect sync (
9d3ed95) - extraction — map roll 100% synced to the minigame + wave replay fix + Cache x/y tooltip + bigger HEAT (
d2d731d) - animated crawler-skin pilot + sprite pipeline (Meshy -> Blender -> Pixi atlas) (
6e45ce9) - l10n — landing-site localization with auto-detect (zh-Hant pilot) (
a2d7abf) - auth — in-app account deletion with 30-day grace period (Apple 5.1.1(v)) (
3b544d4) - extraction — mini ROLL above the site on the map + readable roll quality (
e464cd4) - extraction — mid-haul fast-forward + background roll pops on the map (
7ad39fc) - extraction — replay units land EXACTLY on the idle squad slots (pixel-seamless) (
f610d48) - extraction — freeze minigame during the fight + rush-to/return-from combat, drop the red box (
942a33f) - extraction — combat replay plays INLINE in the squad square (no popup) (
db899e6) - extraction — squad pre-placed in exact combat positions in the right area (
21b9913) - extraction — decision loot flies into the chest (no interrupt); minigame hugs left (
9be00ad) - extraction — DECIDE never pauses minigame; site name to top bar; haul updates (
79f0ff2) - extraction — squad panel + haul counter + fixes; server squadName/hauls (
1e7eefc) - extraction — whole DECIDE flow inline on the right; centre the squad (
f704596) - extraction — DECIDE no longer pauses the minigame; square right panel (
c58a2a3) - chronicle — per-shard view + fix CORS-broken live pages (
1cab66f) - events — tournament-grade Alliance Siege Cup — cinematic hero, podium, crests (
e405657) - extraction — DECIDE story on the right (no pause) + combat unit-fly (
7a84a9a) - extraction — squad info in the right column, HEAT at its bottom (
4810eb1) - l10n — backfill device_locales for existing accounts on boot (
f0aab70) - extraction — two-column search modal + contained roll + cache-fly fix (
9da031e) - landing — open-beta relaunch — regal wordmark, cinematic bg, showcase carousel (
2b9d0d2) - shop — accept USDC stablecoin on the web via Stripe (Dashboard-driven) (
6bd9c88) - nav — drop MINT from the top nav (folded into the shop) (
3436425) - shop — tabbed game-shop — custom-amount Golden Ashes + folded Mint + Token (
cae4aa3) - responsive world-map music — sparse zone beds + tension swell (
051f519) - add unique skill card icons (
f83cacb) - bank-reveal — title shows haul count + site coords (
e3f2f02) - equipment — auto-recycle ON by default, keep one of each quality (
f461be5) - bank-reveal — title bar on top, aligned tax bars, hidden scrollbar + fade (
d57ce12) - bank-reveal — resources-to-top 4-column layout, per-pane scroll, tidy tax (
b57199c) - bank-reveal — faction cube on tax labels + single-column item list (
dfa647b) - bank-reveal — Items-left layout, tech-core bar, crate headers, recycle toggle (
da09087) - client — blocking connection gate + complete reconnect resync (
b297dda) - ui — conduit install celebration in main game + server-wide district capture banner (
2365cab) - analytics — surface extraction PvP in Combat + make the admin dashboard human-readable (
c999f81) - extraction — cache art flies + enlarges + fades toward the roll (
a36e11e) - extraction — pixel_cache find art + golden bonus; keep search grid square (
08120c6) - extraction — one-line reveal header; roll commander outline + rarity glow (
daa8e2d) - ui — music-only toggle in the expanded-menu rail (above fullscreen) (
1a54263) - cup — operator payout console — admin panel (no terminal, no fund-moving) (
b614cff) - extraction — bigger searchers/roll, 2-strongest fix, battle+haul gating (
f81c339) - l10n — backfill zh-Hant — clear the deferred translation backlog (
aa77ce0) - extraction — pace the cache-search minigame + chest/npc foreshadow (
f68ff77) - cup — in-game recognition surface — Cup standings tab on the Citadel modal (
a259760) - hub — gateway login + home-shard routing (multi-shard Cup end-to-end) (
fa002ab) - npx — reorder chain, rename CC→Barracks, zone-gate the Wastes push (
1ee7c47) - render — adaptive per-device crash-guard tiers + low-memory map mode (
c6bf5d8) - cup — per-shard Cup rewards — remove host-shard pin (each shard runs its own pool) (
f6acf7a) - cup — Alliance Siege Cup v2 — capture≡defense resolution scoring, Crown Tithe, garrison accrual, claim flow (
e39f4de) - ui — Drive Overhaul shows actual crawler speed; solider expanded-menu panels (
6a21e65) - alliance — leader-only bank grants + tax by default, with opt-in for officers (
28e84e8) - extraction-reveal — 4 roaming searchers, BONUS CACHE, arrow inside + commander attached, chest lower (
d90d7aa) - extraction-reveal — commander punch on lucky catch; roll bigger, no dark box; fainter squares (
9c6fd5a) - extraction-reveal — bigger site square, filled grid squares, slower sweep, roll-on-top w/ commander + luck (
6948269) - npx — carry the first-deploy GO through to the deploy surface (
09eb130) - commanders — boot-validate megatower band card_1/card_2 overrides (
a1cd73d) - telemetry — instrument the activation micro-funnel (
f7600d5) - extraction-reveal — 'search the site' grid minigame — scan, find caches, roll into blue boxes (
7ded7b9) - extraction-reveal — drop reel frame box, slower start + long deceleration tail (
7e4bd79) - extraction-reveal — full-width loot area, heat+EST in footer, reverse-chest loot drop (
a722284) - extraction-reveal — show both the right-column $ATO haul tile and the bottom EST. UNTAXED line (
e456b9e) - extraction-reveal — strip top bar to champion icon; move $ATO haul to bottom as EST. UNTAXED MARKET VALUE (
9cf96a3) - extraction-reveal — slower one-at-a-time rolls; footer Locate/Squad beside Retreat (
fc34a0c) - extraction-reveal — real slot-machine reel — scrolling squares, arrow, land-flash (
1da45a4) - extraction-reveal — slot-machine reel — angled prev/next ghost items on each roll (
0c3268a) - extraction-reveal — place all caches at once, roll each through mixed rarities (
0088b01) - render — iOS crash-loop breaker + device-dimensioned render telemetry (
76db480) - combat — compact turn order — skip dead/empty slots, one turn per living slot (
7e2c1b7) - telemetry — sink layer-share health metric (economy:sink_layer) (
0b8d1d3) - site — unified design system + rotation-ready mint station (
4e2a349) - web3-hub — alliance siege USDC event + payout ledger + hub shell (
abe2d07) - ui — faction tax UI+tests, city scaling, Perfect Left Menu, recruit/radial polish (
4764f49) - map — non-extraction deploys show squad name+extractmobile; other-crawler heading (
cab9123) - barracks — squad-name editing runs the chat moderation filter (
d7a0759) - alliance — Faction EXP UI + city-gated create + city interaction range (
b52c6cb) - alliance — per-player-per-faction EXP data model (server) (
752c1e1) - map — far-zoom overview — fade entity markers + glowing zone borders (
be38ec5) - map — fade the extraction range ring out on zoom-out (
bcec448) - map — single combined parchment wallpaper (pape_combined), centred on capital (
94b6538) - map — treasure-map void wallpaper — brown wash + 4 corner papes (
b6630c1) - map — treasure-map void backdrop — pape_* parchment cities, brown wash, blur (
52b6602) - map — loading-screen void backdrop + border overlap fix + rail refresh (
2a1a76c) - map — broadcast ferry/train rides to all players + flowing dotted line (
04b80b1) - I+J — remove crawler shield/lockdown — PvP is simply ON in the Wastes (
5502eed) - map — corner dungeons — 6x6, flush against the corner walls, red identity, big hover beam (
d8800ea) - map — rail mirror, citadel-side city exits, instant enter-hide, city hover beam, corner dungeons + weather, -30% warm filter (
b0a123c) - K — rested Chest Doubling buff — accrual + Info dots + buff HUD (
70da2d0) - M — non-premium 15 extractions/day cap + upgrade popup (
beeaa42) - L+N — shop ACCOUNT tab — Premium + Quick Status (coming soon) (
b87c64d) - J — enter-town city population + Inhabitants + AFK relocation (
d526c69) - I — train/ferry travel ride between paired cities (
e3fc238) - map — H+O — rail (Cindria<->Haven) + river (Viridia<->Thornvale) tracks (
ddde407) - G — faction region border lines (+ ring-0 join for the citadel owner) (
13bcc58) - F — alliance factions + Citadel Grounds ground swap on capture (
38ec572) - map — D+E — dungeon placeholders + ENTER CITY tabbed window (
dbe1b07) - map — C — eye-shaped outer boundary (pointed L/R, rounded T/B) (
a1853c8) - map — A+B — lower town labels, HAVEN rename, ruler at citadel far-zoom, smaller far squares (
0a89c9d) - map — frontier cities replace the Summon Beacons (New Haven/Cindria/Thornvale/Viridia) (
98e9d3d) - map — optional tilt-shift (miniature) mode + Settings toggle, off by default (
ee40ff0) - map — render native HD terrain on phones too (remove desktop-only gate) (
46a9b09) - layout — remove 16:9 game-shell clamp — fill any screen shape (
03fc63d)
Fixes
- title case skill card names (
95d73bd) - client — address GIS-fallback review (i18n, tokens, reinject timeout) (
3ffbda0) - client — visible Google sign-in fallback when the GSI loader fails (
ff0e777) - client — remove the "you were raided while away" login toast (
fd97ab0) - raid — no battle report for a raid on an undefended crawler (
0739c6a) - economy — one-time tech-core 10:1 redenomination migration (players x10, AMM pool rescale) (
ae76855) - soften site glow intensity 1.0 -> 0.55 (was brighter than the crawler) (
be9f43d) - enlarge site glow so it rings OUT past the building (was fully masked) (
65fdf0a) - flat site glow (drop tier scaling) - legibility, not a tier signal (
c545f56) - extraction-site glow intensity floor 0.34 -> 0.7 (was invisible by day) (
2147839) - l10n — de-mainland the rules copy per owner review (zh-TW nativeness) (
57cb711) - l10n — zh-Hant E2E correctness sweep across all landing surfaces (
6477e30) - parked crawlers face stable per-owner headings, not a uniform 's' (
4d1746e) - render sun co-rotates with camera + turn animation no longer clobbers its target (
12192ca) - correct siege preseason scoring rules + clamp net score at 0 (
6f17bc0) - crawler shadow separated into its own atlas layer (owner-reported 3 issues) (
c5712a6) - per-skin mapScale - default crawler sized to the Mark II reference (
d47d44c) - crawler movement anti-jank - arrival clamp, redirect glide, turn steps, off-axis rotation (
dfa9755) - merge — reconcile 3 staging-merge regressions in the extraction/city work (
7b739a6) - default crawler wheels ~50% oversized - instance scale used the deletion radius (
270eed1) - map — nudge Thornvale art 1 square SW so the river reconnects after the shrink (
a147c25) - extraction — ping-pong the searcher roam so a very long decide never clamps to AFK (
8e8244b) - extraction — searcher MOVEMENT is now deterministic + wall-clock — no reset on reopen, no post-decide speed-boost, no AFK (
cd1b2ab) - extraction — reopening the minigame no longer replays a "restart" — snaps to the live frame (
18e2c82) - map — own crawler always renders ABOVE cities (drop the city above-crawler ghost) (
8ea9b81) - hud — FPS meter is a top-layer DOM overlay (never hidden behind a buff) (
fa49ca4) - city — "Back to City" on the parked city's radial + reuse the city rest graphic (
182bacb) - native — route nativeIAP config fetch through APP_ORIGIN (
11724f9) - client — retire deprecated commander portraits from class defaults (
6898e09) - extraction — reopening the minigame resumes the LIVE roll at its real-time position (
c5d33a2) - extraction — scooter only after arrival + map roll always plays behind the modal (
1fa0141) - extraction — minigame modal is a LANDSCAPE window on PC (no vertical over-stretch, bigger square) (
192e351) - extraction — retire the driven map roll on modal close + skip done pops (
2dd58f0) - crawler-skin headings set to the owner-specified mapping (
dbb0b4a) - crawler-skin wheel animation quality gate + procedural dust layer (
9b170a4) - landing — correct inverted composition-over-headcount claim (
ac7560f) - extraction — minigame truly waits for the replay (early-resume race) (
eeb7765) - mobile — App Store rejection fixes + native-build audit hardening + native IAP (
0fb333e) - client — guard megatower _doEnter against a null _instance + generalize the lint (
63cbe70) - extraction — DECIDE truly never pauses the minigame + enemy-zone/chest/haul polish (
c2e5f4e) - events — strip em dashes, fix invisible SIGN IN button, trim intro (
a471326) - client — capture _run in _rewind's confirm callback + lint sees callback derefs (
a65d77f) - client — guard megatower onclick/confirm handlers against a null _run (
11ac698) - deploy-modal — compact width (not screen-wide), no scroll, 2:3 card (
211440e) - deploy-modal — fill viewport height, hero card at full 2:3 (no squeeze) (
69bb06e) - deploy-modal — no scroll on the commander/unit area (
60dc53e) - hub — footer tagline closed alpha → open beta (matches homepage) (
fa7d0af) - landing — mobile carousel — scrollable rail + video centered on load (
48aacc9) - i18n — zh-TW/HK/MO devices auto-switch to zh-Hant (web+mobile) + capture device locales (
a040eda) - landing — use the logo-free raw feature art for the hero (
f9eca8b) - deploy-modal — fit SEND TO EXTRACTION on short landscape phones (
c2437d3) - l10n — translate skill-card descriptions (rebased onto staging) (
d424a70) - audio — unify default channel volumes to one frozen source (music 0.2) (
eda0032) - extraction-minigame — drop the nested reveal card (window-in-a-window) (
e2852ea) - extraction-minigame — slimmer mobile footer, taller modal, smaller roll (
c6f2c80) - bank-reveal — drop tax flash, align ITEMS header with resource headers (
bbeffc3) - bank-reveal — drop rarity glow on flat rows, de-purple tech-core bar (
c31e314) - hub — drop WHY/COMPARE from header nav; declare Cipher mint supply = 100 (
7a7274e) - bank-reveal — remove tax section vertical padding (flush to loot + foot) (
f77df1d) - bank-reveal — tax bar runs edge-to-edge, tech-core column lines up with DONE (
b4c9479) - bank-reveal — merge tax rows into one divided grid (no boxed spacing) (
6447ba5) - economy — finish tech-core 10:1 redenomination (subsidy value + maxout) (
0ceaacb) - bank-reveal — recycle checkbox, tighter chrome, tax icon + skim label (
b6e705d) - bank-reveal — tighter loot grid, 3-deep Items columns, tax label polish (
30919a7) - bank-reveal — phone menu fills the viewport, uses the vertical space (
08539cc) - map — render alliance crawlers at full opacity in fog (Pixi + canvas) (
1ef56fb) - bank-reveal — collapse foot to button height + tighten tax (PC + phone) (
a6aa516) - bank-reveal — phone-landscape layout parity for the BANKING HAUL menu (
0226fa2) - tutorial — seed the commander's squad in the sandbox handover (
44d945e) - extraction — constant walk pace (no speedup); lift modal off the bottom bar (
7eefe75) - extraction — magnifier not hourglass, longer top-down roll, drop timer, decide waits (
300fe5e) - l10n — translate map site + city names (extractor collision + resolver) (
cd58394) - extraction — slower/one-way rolls, one-cache-at-a-time, +1 spread wave (
6213443) - cup — store-compliance — strip the in-game Cup tab's USDC/claim framing from store builds (
e6e44bf) - l10n — drop under-anchored i18n patterns + translate canvas radial labels (
4b598c4) - cup — codex money-review findings — payout-sheet + garrison-accrual + tithe + dust hardening (
5000ca6) - audit r2 — raid-recall dup guard, troop-grant upserts, ASH clobber (
4f66724) - combat — marked_for_death fires on strike attacks; disruption_field reads config (
02430ad) - crawler — render movement linearly to match server (stable speed, no jump) (
272a460) - alliance — wrap one-time permission migration in a transaction (
d769eaa) - telemetry — report-side noise denylist for client errors + [object Object] fix (
4ebb7ef) - ui — refresh identity chrome on profile rename (
547aefd) - extraction-reveal — searchers cover the WHOLE grid, no orphan cubes (
a717068) - events — reject eventExclusive blueprint rewards at boot validation (
82a1d18) - extraction-reveal — no box around commander, roll on body (uncropped), drop STAGE + caches-secured (
a42580b) - replay — preload troop sprites as .jpg, not dead .png (
69bd44e) - extraction-reveal — delete top bar, real square tiles, everything rides up, bigger chest (
4658abe) - extraction-reveal — show the FULL site art in a square panel + a 14x14 grid of squares (
8c89588) - extraction-reveal — search grid — many square cells, no grid chests, hourglass scanner grows + loot drops into bottom chest (
c0722b6) - extraction-reveal — HEAT always in footer bottom-left; WAVE ETA in header top-right (
95a1294) - extraction-reveal — reel spins up from rest, arrow on right, random land offset (
6d27e24) - bank-reveal — group non-resource items under one 'Items' header with per-row names (
5da8c81) - map,ui — far-zoom marker layer + vehicle dots, review fixes (transit teleport gate, bank reveal hideValue/tax/subtitle), city window polish (
b82fd54) - replays — mark a battle report read on open/watch (
899c7e0) - web3-hub — coverage-audit findings — single-flight refresh, store strip, public catalog, CI filter (
189c87a) - rewards — review findings — host-shard pin, purge-rejected recovery, deterministic ranks, timing-safe token (
36c17ff) - ci — track consolidated acquisition view in verify-acquisition-analytics (
211c363) - map — symmetric rail diagonals (right leg was 1 tile too long) + refresh rail art (
c77522d) - map — redo void backdrop — crisp cover-fit parchment cities, no bleed (
07d65f4) - map — sunken-arcology seed removes stray reserves (no duplicate on move) (
1d75ac4) - map — faction borders inset per side (both colours visible) + Haven owns ring 0 by default (
a9ec275) - map — roads follow the EXACT specified polyline — one corner tile per bend (
aef993c) - map — river/rail route the frontier CORNER between the paired towns (not the Citadel) (
1404365) - map — eye shape — keep full ring3, stretch L/R to 90deg corners (revert vesica) (
1340a47) - map — tilt-shift failure path no longer re-assigns filters every frame (
be2464d) - map — clear the unused hard weather mask in the frontier branch (
45b9101) - map — frontier weather fades out at the ring-2 edge (no hard cut) (
25eef74) - map — HD terrain covers zone-blend seams (no low-res bake showing through) (
f63559e) - map — tilt-shift filter gives up after a build failure (no per-frame retry) (
e77b0b4) - map — tilt-shift keeps label text sharp + pull the blur in a bit (
318bc4f) - map — tilt-shift — keep FPS/cursor sharp, symmetric bands, blur hugs edges (
97ee6c9) - map — restore _ls0 def lost in staging merge — Pixi init no longer falls back to canvas (
2e92eae) - home — height-floor Cipher scale so legs hide on TALL/near-square too (
4e9adfd) - home — scale Cipher up as the screen narrows so her cropped legs stay hidden (
84587e8) - map — force fog shader to highp — fixes fog vanishing on phone zoom-in (
23261c9) - extraction — wave march departs at arrival, not 15s into the run (
3f322ef) - map — clear deploy march once the squad's ETA elapses (
c2eae34) - restore zone on-ramp seed bands (T1-in-wastes / T2-in-deep) (
2ad0e58) - map — remove far-zoom void backdrop entirely (
f8e0f69)
Performance
- client — memoize _col color parsing; guard socialScreen post-exit render (
77cfca3) - map — strip remaining per-frame allocations + per-entity config lookups (
1035b10) - map — player names render from a shared glyph atlas (BitmapText fast path) (
e74f8f8) - map — dirty-flag camera-only Pixi layers — skip idle re-tessellation (
d149e1e) - map — cap mobile render resolution after 16:9 removal (fixes laggy scooter) (
66e8c19)
Internal
- remove rejected tread mode; keep --axles, --only-yaw, hardening (
fc8ec50) - extraction — single-source the reveal schedule into shared/extractionHaulPlan.js (
3e95f80) - client — share the activeExtractions status builder; fix packing collapse on respawn (
d17278a) - l10n — Taiwan-nativeness denylist lint (PRC vocabulary in Traditional script) (
498fe76) - lint anchor follows the merged own-crawler draw shape (single-line else) (
abbfc25) - first-word — fix stale scrap_runners key + guard unknown units (
2163a5b) - ci — city-gate alliance creation in qa-test; scope /world alliance-lookup lint to the handler (
c8f3992) - deletion — retain gateway_reward_claims rows on player deletion (
0771825) - wheel source image lives in untracked art_assets (raw-art policy) (
a454f78) - sprite-pipeline skill runbook rewrite + map-drive-verify skill (
55fa51f) - coverage-log entry for the 2026-07-10 extraction squad-modal audit (
3b85370) - known-bugs — log L10 — replay over-counts a slot when count diverged from HP (#458) (
ae882d4) - cup — point the payout runbook at the /admin operator console (
4ec2ace) - cup — operator runbook — add per-shard payout operation (
8534ada) - coverage-log — adaptive tiers + browser-drive results (
3195e0c) - iOS Pixi world-map memory optimization plan (
6c121a6) - $THRONE token launch design (VVV-model, gamified) (
ce1d7eb) - skills — 5 new game-design authoring skills + troop/site wiring lints (
efa0190) - skills — refresh commander/skill-card creation skills + add item-creation skill (
58407d8) - alliance industrial sinks design draft (fight-for-your-alliance) (
af0e9fa) - web3-hub — architecture + payout runbook, CLAUDE.md guards, SEO nav regen (
6f83279) - preserve shipped-skin render anchors (GLBs + source art) in Git LFS (
155c932) - l10n — re-sync landing i18n-dom copy + rebake after staging merge (
7452139) - ios — bump build number to 4; commit RevenueCat SPM sync drift (
e4ffee2) - retire old default-crawler art; ECHO-7 renders the animated atlas (
5b7708b) - deps — sync package-lock with revenuecat IAP dep (
8cca221) - l10n — restore game report clobbered by subscription-mode lint probe (
6d6db92) - tutorial — retire stale extraction-flow test + log the squad-handover coverage (
c457e1c) - config — remove superseded CATALYSTS.DROP_GRADES / CACHE_DROP_GRADES (
dc2f365) - dev — local landing static server + /api proxy (mirrors Vercel rewrites) (
caf78d6) - map — hide rail hori_diagonal corner tiles (opacity 0), matching river (
bff2325) - map — refresh river tiles + hide river hori_diagonal corner tiles (opacity 0) (
7c1f778) - map — refresh road_river tiles from updated source art (
8bba2f6) - map — refresh river tiles + rail/river opacity −30% again (now 0.49) (
cf542b5) - map — refresh road_river tiles from updated source art (
05c129a) - landing — remove em dashes across shop, index, event-rules, shared styles (
8bda13f) - ui — slim segmented menu top bar (BACK/UPGRADE as divided segments) (
d91bfbb)
Other
- l10n: auto-translate zh-Hant artifacts (
b77c957) - l10n: auto-translate zh-Hant artifacts (
6830f83) - tune: default crawler mapScale 0.9 -> 0.8 (owner judgment vs Mark II) (
c25ca1b) - l10n: auto-translate zh-Hant artifacts (
e7ccb2a) - l10n: auto-translate zh-Hant artifacts (
bd2f827) - polish(city): resting bar is a true bottom-bar segment (transparent, divider, roomy) (
7844f33) - polish(city): map resting bar is a flush bottom-bar segment; drop "stacks" (
c01a049) - l10n: auto-translate zh-Hant artifacts (
02ea88c) - polish(extraction): magnifier tucked into the portrait + both helpers get one (
90f996d) - polish(bank-reveal): combine overflow into one OVERFLOW LOSS total (no per-row tag) (
28fde86) - polish(extraction): shrink the loot chest below the minigame 40% (
3c6ffb7) - polish(deploy-modal): pin actions to a thin segmented bottom bar (
d646ece) - polish(extraction): Squad button into the footer segment next to Retreat (
7228f84) - l10n: auto-translate zh-Hant artifacts (
d57c1f6) - polish(extraction): title + HEAT into side column, thin segmented footer (
cc22f21) - l10n: auto-translate zh-Hant artifacts (
602da1e) - l10n: auto-translate zh-Hant artifacts (
ecfbb74) - polish(bank-reveal): lighter titlebar, dim post-HAULS title, one-line tax rate (
7c8415d) - polish(bank-reveal): narrow items pane, wider resource columns (
10e2d8a) - polish(bank-reveal): title = "BANKING N HAULS - T# TYPE - SITE NAME - [x,y]" (
5063dc4) - polish(bank-reveal): purple tech-core number, spelled-out tax rates, softer DONE gold (
feb2e14) - l10n: auto-translate zh-Hant artifacts (
ff5ce44) - l10n: auto-translate zh-Hant artifacts (
9cda44b) - l10n: auto-translate zh-Hant artifacts (
c2d2c9d) - perf+fix(server): per-tick partial indexes; close two silent troop-loss paths (
93bf64c) - wip: session work — transit deploy-gate, alliance bank grants, city window inhabitants, crawler speed +40%, map shadow tweaks (
c1b756d) - tune(map): transit line = extraction-style dashes on the road; extract-sized vehicle; 2.5x duration (
1b8de0b) - art(map): refresh Cindria city tile (
bbbc212) - tune(map): The Scrapwright -> Ferry Construction Yard at (149,112) (
fcd7495) - tune(map): rename ring-0 subregion label 'Citadel Grounds' -> 'THE CITADEL' (
9002d78) - art(map): update Cindria city tile (new graphics, 1024w) (
6454185) - tune(map): river tip to 113,152 (+mirror); Canopy Mast -> (117,154) Viridia Eco Inc HQ (
6782736) - tune(map): extend river to Canopy Mast's old row (both legs), move Canopy Mast up 3 (
3761079) - tune(map): move The Birdsong Relay -> (119,154), rename to Viridia Eco Inc (
531d7c9) - tune(map): void wallpaper on eigengrau (was brown), larger + clearer (
cac92b0) - tune(map): crop bottom of top papes; meeting point stays under the capital (
824034a) - tune(map): lock 4 papes into one 2x2 block meeting below the capital (
68bd3c8) - tune(map): faction borders 6px wide, touch with no gap/overlap, 54% opacity (
b389fa2) - tune(map): faction border lines 8px wide, 60% opacity, ~3px gap between colours (
d4871c5) - map polish batch: border gap+weight, roads reprocessed+lowered, dungeons off-corner, faction label colours, arcology move, silent reconnect (
8c36c3f) - polish(I): ferry parity confirmed + dotted line erases around the vehicle (
a2a14bd) - tune(map): bold citadel/town titles, town ruler placeholder split onto two lines (
2d4e065) - tune(map): towns moved 2 tiles out, coloured far-zoom diamonds + names, fresh city art (
8f0942d) - tune(map): bigger citadel/city titles, per-city colours + ruler line, later+stronger player dots (
fcb436f) - tune(map): cities 7x7 (Citadel-sized), arcology sprites x1.8, new Viridia/Thornvale art (
a57369b) - tune(weather): frontier drizzle falls faster (drift near 20->26, far 13->17) (
52aee4e) - tune(weather): frontier rain a bit smaller, faster, ~80% opacity (
bcdca9b) - pleasant weather update (
b67d545) - tune(map): tilt-shift blur crossfades like opacity (no sudden stop) (
266462b) - tune(map): tilt-shift — top blur a little lower (FOCUS_H_TOP 0.34 -> 0.30) (
3b35121) - tune(map): tilt-shift — pull top blur up a lot, bottom in a bit (bigger sharp band) (
ea00de3) - tune(settings): drop the long Tilt-Shift Map description — bare toggle (
4801861) - tune(map): tilt-shift — softer blur (STRENGTH 18 -> 11) (
9083cd9) - tune(map): tilt-shift — pull the blur back toward the edges (bigger sharp band) (
7802ebd) - tune(map): tilt-shift — real visible blur gradient (
975665d) - tune(map): tilt-shift — top blur reaches a bit further down (asymmetric gradient) (
d3e7b2d) - tune(workshop): Inventory tab on left, Craft on right; tabs flush to top bar (
f6deef5)
New & Changed
- market — terminal polish + $ato/ASH pair + market-level daily cap (
c5b9305) - replay — per-location battle backdrops (subregion + citadel district) (
90da91f) - analytics — Stripe refund clawback + exclude from REVENUE tab (
52490b4) - analytics — REVENUE tab + onboarding depth + megatower/replay/i18n surfaces (
e7770b6) - analytics — production-readiness pass - render tab, deploy markers, rage quits, dead-route removal (
b9f0b10) - analytics — consolidate acquisition channel view + fold Zealy into the channel dimension (
9204348) - replay — whoosh SFX per skill-proc name fly-in (one per combo beat) (
a6fdf47) - barracks — server-authoritative cross-device squad presets (
275d4a6)
Fixes
- socket — make token rotation invisible — stop the 15-min reconnect spam (
2cf4689) - ui — center menu titles, fix mobile filter chips, add mark-all-read to mailbox + replays (
338809f) - replay — gate shared-link autoplay on real audio (no more silent replays on refresh) (
42df2fe) - replay — combo ALL proc types fired in one commander turn window (
c1d4ff0) - telemetry — capture console.error so swallowed client errors reach monitoring (
1e17aba)
Internal
- add verify-claude-md reference-drift lint + wire into verify-on-edit hook (
df6483a) - claude — share postgres-staging MCP via env-var-gated .mcp.json (
1e69b24) - claude — automation pack — client-ui reviewer, 2 skills, .env guard, schema lint routing (
63f1cf4)
Other
- l10n: auto-translate zh-Hant artifacts (
4f58083) - l10n: auto-translate zh-Hant artifacts (
1d7101f) - l10n: auto-translate zh-Hant artifacts (
c839e97) - l10n: auto-translate zh-Hant artifacts (
ec70a85) - l10n: auto-translate zh-Hant artifacts (
c7dd629)
New & Changed
- ios — activate CI release automation (API-key signing, auto-submit) (
79b9fa9) - alliance — Leave Alliance + Kick from the member roster popup (#416) (
b92efae)
Fixes
- alliance — let vice-leaders kick officers (client Kick UI was over-restrictive) (
4839f55) - ci — quote l10n.yml job
if:— unquoted 'l10n: auto-translate' broke the YAML parse (e46ee5e) - ci — Node 22 for the Capacitor cap-sync jobs (android build gate + release) (
5399cb2) - android — strip AD_ID permission merged by the Facebook SDK (
f936ef4) - auth — Android native Google sign-in was completely broken (
6fe35de) - gateway,login — promote-review followups — Apple directory backfill + identity-collision message + login disclosure reset (
b5914e3)
Internal
- release — Android Google sign-in needs BOTH upload + Play App Signing SHA-1 (
e68333f) - capture Pixi texture-lifecycle footgun (assetTexture destroy on shared source) (
6ab1332) - sync CLAUDE.md to current state — Pixi cutover complete, canvas-2D deprecated, l10n, native (
3ed9afd) - ios — iPhone-only + export-compliance-exempt for App Store 1.0 (2) (
04c8eba)
New & Changed
- attribution — UTM acquisition tracking for playtoearn.com + /play link (
ab93b00) - l10n — zh-Hant backfill artifact — 2,900+ translated strings (
1c1463d) - l10n — supervised-backfill ops model — zhHantCheck, concurrency, CI work cap, backfill skill (
dfd1885) - l10n — whispers are never auto-translated (owner decision) (
ea04703) - l10n — mail templates + live chat auto-translation (wave 3, review-hardened) (
908c8ff) - l10n — automated localization system — zh-Hant pilot (wave 1: pipeline + runtime + plumbing) (
5a089c5)
Fixes
- l10n — tutorial Ada spoke English — chip-token parity + glossary-blind critic (
0ac1f56) - l10n — load extraction/hunter.js in the browser; lint the require↔script divergence (
4f1b411) - l10n — align bot commit message with the workflow loop guard (
8f74482) - l10n — ship locale artifacts in the Capacitor www build + coverage log (
7d7df22) - l10n — backfill stall — thinking overflow + unawaited Batch results iterator (
1785616) - verify — action-dispatch sanitizer went blind after nested template literals (
1220fe4) - auth — add clickable deep-link fallback to Electron OAuth callback page (
9e224ec) - combat — battle alert suppressed ONLY on real crawler destruction (explicit flag) (
e25302a) - extraction — PvP battle outcome always notifies both players (emit-first) (
2e6d1ef)
Internal
- extraction — atomic PvP resolution — one withTransaction, rollback = retry (
5b7b97c) - l10n — operator runbook + complete new-locale wiring checklist (
0a35422)
New & Changed
- marketing — Play Store listing creatives v2 + compositing pipeline (
7a0a922)
Internal
- store listing screenshots + icon plan (handoff) (
d66474b)
Other
- seo: make ashenthrone.com the canonical landing domain (
0e02030) - seo: add WebSite schema to landing index, refresh sitemap (add /changelog + /follow, bump lastmods) (
5762b2d)
Fixes
- client — stop Pixi auto-render ticker + guard megatower _exitRun NPE (
7d72bf9) - tutorial — post-handoff "Claim Your Rewards" tip is durable-state-driven (
88dc205) - tutorial — suppress the chat box during the tutorial sandbox (
c99557b) - client — paint map first + self-heal buildings on facility screens (proper fix) (
b77b073)
New & Changed
- monitoring — redesign anomaly-watch + telemetry for Pixi + sandbox-tutorial (
eee2abd)
Fixes
- client — prime /base + /army at post-login so map quick-nav facilities aren't empty (
64ec62f) - extraction — wave formation packed a 4th front column (col:3) off the grid (
338e995) - hud — DECIDE event badge lands on-screen regardless of containing block (
0f29a3a) - shop — cap pack-art height so a lone card never buries the BUY button (
adf1c2b) - tutorial — clear the guidance arrow when THE STAND replay plays (
97ee34b)
New & Changed
- landing — account-deletion request page for Play compliance (
db94c9a) - tasks — new-player task chain — RoK-style post-tutorial direction (
da469f5) - shop — real chest-open sample for the crate burst (
bc89aab) - shop — ceremony wave 2 - dedicated synth audio, all-pack frames, gold-tier burst (
9baaa9e) - gateway — multi-shard production readiness for web + native clients (
f1df1c2) - shop — pack-opening ceremony — crate slam, charge, burst, fly-outs, tally (
516e027) - tutorial — owner-drive feedback wave — 9 UX fixes + finale citadel redesign (
38283e3) - tutorial — checkpoint-replay persistence — reload resumes, never stuck (
d7efad1) - tutorial — design system wave B — engine invariants kill the drive's jank (
f30cd5a) - sharding — multi-shard gateway — directory, CCU-latch assignment, warm-spare promotion, handoff login (Phase 1 overflow readiness) (
4e99535) - tutorial — handoff auto-open + commander voice + Vael cameo + copy beats (
c4dcec1) - tutorial — honest train timer — displayed == actual == TRAIN_SECONDS (
811dcd4) - tutorial — THE STAND — the player wins the defense, then learns the replay (
6b5bb8f) - android — Capacitor android platform scaffold (
54862e1) - auth — Sign in with Apple server endpoint (/auth/apple) (
8df9fb4) - tutorial — panel-free act phase + polish pass from owner playtest (
c3b7f73) - capacitor — www packaging pipeline + native-origin CORS + Capacitor 8 deps (
24301fe) - client — APP_ORIGIN absolute-origin support for the native shell (
e9fc4a4) - iap — RevenueCat webhook fulfillment + store-build native purchase path (
cd2d441) - compliance — 13+ age gate at registration + public /odds drop-rates page (
064c72a) - store — store-surface server guard + store-bundle code strip + verify lint (
f83d613) - tutorial — north-star Citadel card + Iron Marshal Vael villain arc (
f24c4a5) - objectives — GO auto-nav + retroactive tutorial credit at the handoff (
0a0c907) - tutorial+shop — free New Player Pack — crossed-out 100 ASH, costs 0, taught in-tutorial (
f9fc8e0) - tutorial — first-commander CHOICE at the beacon (Voss / Cipher / Vell) (
a9763eb) - tutorial — OBSERVE phase (serialized attention) + per-beat funnel telemetry (
f63bb5e) - tutorial — narrate-first beats + universal pointer arrow (RoK pattern) (
bee6305) - tutorial — open the squad panel + play the deterministic loot reveal on extraction (
ffdf969) - tutorial — remove the post-fight + post-loot dead Continue panels (
c5b4fa0) - tutorial — real Armory conduit step before the Barracks (reorder) (
4a67226) - tutorial — sandbox infra for the real Armory conduit install (
ac10b9a) - tutorial — action-labeled CTAs (CONFIRM FORMATION / ENTER THE FRONTIER) (
4a17365) - tutorial — lock troop training outside the train step (
14f1f6a) - tutorial — remove the dead generator 'continue' panel (
4929607) - tutorial — quick-nav expanded only on menu-access steps (
41c29b6) - tutorial — real out-of-range→in-range move + objective arrow + framing (
a9840bf) - tutorial — generator celebration + on-rails crawler-move beat (
121b131) - tutorial — bound the seam catalyst grant so the cryo D1 hook survives (G-HOOK) (
42fd6ef) - tutorial — real pre-Fall competence fight + counter-triangle lesson (M8/G-FIGHT) (
48aacb2) - tutorial — load the real combat engine client-side (foundation for a real G-FIGHT) (
0ee217f) - tutorial — teach the real Crawler-move (Dig Out beat) + fidelity grading criteria (
5b3993d) - tutorial — drive tutorial through the map menu (map-centric) + fix dossier card (
607697d) - tutorial — Phase 5 — cutover (sandbox default-on + remove server monitoring) (
8a950ea) - tutorial — Phase 4 — the Fall + the seam handoff (end-to-end) (
05f24ca) - tutorial — Phase 3 — world map + beacon summon + extraction lifecycle (
a6564f0) - tutorial — Phase 2 — base + command write handlers (generator step verified) (
f89d57f) - tutorial — Phase 1 — client-side sandbox core (old overlay, identical UI) (
59f09dc) - tutorial — Phase 0.5 — seam fromSandbox flag (suppress duplicate Fall emits) (
e03269b) - tutorial — Phase 2 — client-only cutover (default on, remove monitoring) (
8d8585c) - tutorial — Phase 1 — client-only tutorial sandbox (
6816f21) - tutorial — Phase 1 foundation — telemetry parity allowlist + feature flag (
7473097) - tutorial — Phase 0 — idempotent client-only provisioning seam (
d6248c3) - map — tilt-shift mode, HD zone-blend seams, weather tuning, phone HD/fog fixes, perf (#346) (
1ade55c) - map+home — phone HD terrain & fog-zoom fix, tall-screen Cipher scaling, 16:9 removal (#342) (
32a2530) - map — thin haul bar under extraction-site labels (
9c5bedb) - map — feather the ring-2 sandstorm into vision (gradient, not hard cut) (
3203bd8) - map — real moving sandstorm (dust-driven colour) + rain in vision∩ring2 (
8e8921c) - map — ring-2 fog as a thick brown CCW sandstorm that floors at 33% in vision (
b5b6095) - map — remember seen TIMED ring-2/3 extraction sites as faded ghosts till expiry (
9ed4345) - citadel — ruling-alliance label + Current Rulers tab; fix Citadel Grounds tooltip (
ceb6330) - map — far-zoom Citadel Grounds reads as Frontier (Haven), + biome config knob (
b3fc939) - map — remove the radar-sweep wave — plain static grid only (
278a53e) - map — light-blue grid + diagonal white radar-sweep every 10s (
ad95d10) - vision — share fog-of-war across the whole Frontier (Ring 0 + Ring 1) (
cc0a548) - equipment — steeper epic scaling, 70% legendary, enable equipment power (
9146884) - social-rewards — honor-system → T3 loot chest; verified ASH 300→100 (
4b6065c) - extraction — remove the cycle-time boost (broke under the slot system) (
024f036) - ui — shared ui.rewardModal primitive + fix recycle-complete drift (
aae99bd) - boost — make all travel timers boostable + fix squad-panel countdown (
83a20dd) - extraction — remove zone on-ramp seed bands (T1-in-wastes / T2-in-deep) (
4d1442a) - map — ring-2 fog clouds swirl CCW around the capital; slower cloud cover (
01ed05a) - map — show "Citadel Grounds" far-zoom zone label; stronger frontier green (
5115f7f) - world — tweak Citadel-ring sites + rename ring 0 to "Capital Grounds" (
3142750) - world — 4 named extraction sites ringing the Citadel (zone 0) (
a47997e) - map — always-on drifting clouds + more visible grid (
353889d) - map — bring back the warm yellow cast (no dark filter) (
600d7e8) - map — weather = drifting patterns only, no haze (no dark filter) (
ec6bacd) - map — native high-res terrain on ALL rings (kills the dark/soft bake look) (
dd5ce48) - map — new citadel art (tile_citadel) on a 7×7 footprint (
1f28146) - map — native-resolution terrain on all zones at close zoom (restored) (
200e8e7) - map — native-resolution terrain on all zones at close zoom (
ba68b29) - map — ring 0 renders as Frontier — Haven tiles + no fog shroud (
ac0f88e) - zones — ring 0 (Citadel circle) shares the Frontier ruleset + look (
6d0aec2) - map — port zone condition icons (eye / red swords) to Pixi (
f319241) - map — hover highlights the actual click target (entity glow), not the ground (
f854f22) - map — make deploy + packing hourglasses public (others see you "warming up") (
6a1c5f0) - deploy — flat 6s prep everywhere, shown as hourglass(es) over the crawler (
551dc09) - map — broadcast squad name to all viewers; every wave shows the monster; kill the name flicker (
67c0ee8) - extraction — packing is vulnerable to an incoming wave (
f078bab) - map — march dashes flow toward target; pixel_monster rides incoming-wave line (
d762dbd) - map — extraction travel vehicle indicator — extractmobile on a brighter line (
f7ae09f) - barracks — squad-name input per commander+preset (default "<Cmd> <n>", 12ch) (
0ed2e0b) - server — per-(commander,preset) squad names — table + GET + save route (
719a0c3) - ui — extractmobile_pixel asset; hide Loot in expanded menu; garage scooter icon (
aa6b894) - settings — default FPS cap to 90 (was 60) (
e1cd7ee) - settings — remove the Resolution (render-scale) graphics option (
b3f8559) - map — Pixi weather (drifting pattern layers) + ping/chat-bubble overlay (
cffcc63) - map — Pixi entity labels — site tier badges + base power labels (§52) (
0eca822) - map — make the WebGL renderer the DEFAULT (Settings → Graphics toggle) (
9f9d727) - map — fog drift wisp (§51) — scrolling smoke folded into the fog shader (
0de5be9) - map — per-tile explored/visible fog (§50) — visibility texture (
dd27ac3) - map — WebGL context-loss handling (mobile robustness) (
003208c) - map — Pixi port Phase 5 — interaction visuals via 2D UI overlay (
fee78f6) - map — Pixi port Phase 4 — entities + labels (
f666f5d) - map — Pixi port Phase 3 — zones/edge + mood lighting (
6003851) - map — PixiJS WebGL port — Phase 1 scaffold + Phase 2 terrain & fog (
a5af48a) - client — tabbed Settings + graphics controls + map render perf/mobile fixes (
5516b33) - alliance — per-pair daily help cap — anti-funnel friction for alts/bots (
863aaa1) - auth — per-IP registration rate-limit to stop Sybil signup floods (
13e3485) - ui — map expand-menu redesign, alliance Info/Bank/Social, Garage, alliance-XP rework (
84a0a4b) - siege — net (destroyed - lost) leaderboard scoring + Zealy net quest (
47c0db4) - analytics — retention by acquisition source (Zealy vs organic) (
d2c208f) - analytics — track D14 + D30 retention offsets (
d0e7fc1) - analytics — blended cohort-weighted retention card on dashboard (
68d5fa2)
Fixes
- promote-review — CI-red tutorial lint + seed-purge guard + tutorial-lint source meta-guard (#358) (
8476125) - ci — eliminate CLIENT-section flake by forcing canvas-2D in the qa harness (
ac8f76f) - tutorial — un-positioned panel shows landed at inset:auto — explicit dock (
1ade19b) - tutorial — owner drive round 2 — train-bar start, panel jump, Vael's own beat (
831489c) - bootstrap — stop staging boot crash-loop from idx_players_apple_sub (
48be3f0) - tutorial — mobile-landscape drive — extract-beat clamp blocker + 3 fold bugs (
7328380) - test — stale literal-string lint in verify-first-word-event.js (
f808cb9) - tutorial — narrate-owns-frame at the SOURCE + design-system docs/verified (
e00f848) - rebase — two gaps surfaced by the staging merge (app-store-launch) (
b91d378) - test — missing db.ready await + extend CI-flake retry to Decide click (
7608809) - docker — ship shard-admin.js in the image for railway-ssh cutover steps (
236109b) - zealy — shard-scope + globally dedup USDC milestone claims (multi-shard safe) (
bd50235) - compliance — show drop rates as an in-game modal, not a browser page (
f7d434e) - tutorial — /train response missing queueEntry crashed the train popup (
7eb091c) - compliance — show drop-rates link in the beacon's own confirm dialog (
2aaba90) - iap — close the refund-before-grant race + reconciliation for stuck orders (
1270615) - auth — make Apple signup's 23505 handler constraint-aware (
b956de7) - release — kill staging-origin footgun + socket.io indirection (CI break) (
b351591) - iap — close 5 money-integrity holes in the RevenueCat webhook (
524c90c) - auth — enforce 13+ age gate on OAuth signup + make Apple account creation atomic (
2a34611) - mobile — repair Track E CSS self-regressions (
50abc74) - auth — harden Apple JWKS fetch — single-flight + cooldown + negative cache (
35599f8) - tutorial — catalyst boost hard-block — sandbox /catalysts served item keys (
dd8cc7b) - auth — tester bootstrap attests ageConfirmed (store surface requires it) (
dac76f2) - capacitor — vendor pixi.min.mjs into www — WebGL map was silently demoting to canvas-2D (
386c608) - store — scope blockStoreSurface to /vault + /zealy prefixes (
02f0d1f) - tutorial — highlight repin wedges in a hidden tab (rAF never fires) (
3450b80) - mobile — 6 high-severity mobile-UX fixes for store submission (
b3056c8) - tutorial — render site/depleted/radial map cues correctly on the default Pixi renderer (
500b4b2) - tutorial — render the move/beacon map cues on the default Pixi map (
d217bfc) - tutorial — hospital boost-recovery highlight lands on the async-rendered button (
33f43c7) - tutorial — haul-chest bank reveal shows the loot (was "empty-handed") (
7486795) - tutorial — summon reveal no longer swallows the next step's panel render (
0116c6f) - tutorial — generator celebration confirmation, beacon in-range refresh, drop forced combat (
40dc5cb) - tutorial — port move-beat zoom to continuous model + closer zoom (
dfd7beb) - tutorial — Phase 5 — deactivate sandbox on session clear / account switch (Codex review) (
3d82aca) - tutorial — Phase 3-4 shape parity (Codex review) (
3118f33) - tutorial — Phase 1 sandbox hardening (Codex review) (
d29210c) - tutorial — harden provisioning post-commit side effects (
3796ade) - hunter — weakest Hunter is now 1 unit, not 6 - new players survive the Wastes (
9e16c86) - cache — auto-version SW cache per deploy + stale-while-revalidate assets (
f3d0b26) - map — make Pixi the sole canvas-CSS writer (autoDensity), drop manual pin (
edd93d3) - map — disable Pixi autoDensity — own the canvas CSS like the 2D canvas (
d27cf16) - map — harden Pixi viewport sizing for Android Chrome / iOS Safari (
8c75602) - map — uniform spacing on Citadel label — top-anchor all 3 lines (
5895837) - hospital — boost modal counted paused (away) wounded it can't boost (
aa21955) - map — haul bar width = type label width (stops shrinking on zoom-out) (
f563f29) - map — guard storm shader against atan(0,0) NaN at the map centre (
8eaa5c6) - map — ring-2 sandstorm clouds actually render + move (swirl texture was 404) (
c458082) - map — "Safe zone" chip on ALL frontier tiles + bigger readable citadel label (
889972e) - map — lower Summon Beacon slightly so it centers on its base (
0c5a83e) - map — render weather ABOVE structures so sites/beacons sit under it (
d7118d1) - 4 server bugs surfaced while repairing the verify suite (
b17d29a) - map — lower the risen arcology — half-tile lift sat too high in its 2x2 (
72a397a) - map — drop the Summon Beacon ground shadow (read as "floating" after lift) (
839678e) - map — lift Summon Beacon + risen arcology art ~half a tile in their slots (
fa5c7ee) - map — REAL phone fix — _viewport divided logical size by DPR (map in corner) (
666d0b0) - map — phone — Pixi map filled only the top-left quarter of the screen (
0e1f222) - reveal — SKIP finishes the haul modal once the reveal is done (was a no-op) (
ca28cfc) - barracks — stop double-posting the "replaced from Reserves" SYS line (
7b80d97) - barracks — deploy-modal EDIT no longer overwrites a preset on switch (
252aeb5) - map — fade the Pixi map in on cold load — hide the stale-bake "lava" flash (
42e97a8) - world — Citadel (not Capital) naming + move/rename the energy site (
9595db6) - lint — satisfy action-dispatch + extraction-wave-state CI gates (
79c443d) - map — yellow filter over ALL tiles; drop the CITADEL label to the footprint (
4d8c354) - map — weather fills ring 0 + ring 1 (contested merged into frontier) (
e7e7bfd) - map — smaller rain streaks (WEATHER_REF_TILEW 40 -> 26) (
dad37af) - map — yellow as a filter IN FRONT of the capital + fix giant rain (
bec47a5) - map — raise citadel art half a tile (drop 2·tileH → 1.5·tileH) (
9b90bca) - map — drop citadel art down 2 squares (visual only; footprint unchanged) (
0995192) - map — citadel under weather, no shadow; grid below sites/citadel (
5ef100f) - map — port the walkable-tile grid to Pixi + dim ring-0 overlay (
dff9898) - map — drop ring-0 dark fog shroud + feather the Haven overlay edge (
30d29b2) - hud — food deficit shows red 0, not a draining -82k (it never drains) (
7e56010) - ui — player-info panel overflowed the modal — fit content to the box (
0f746bc) - map — use server-resolved squad_name for the optimistic deploy marker (
7773b89) - map — extractmobile rides the full deploy trip, not just the last 15s (
bfa82c3) - map — crawler relocation line is BLUE, extract-team march stays orange (
20ade29) - map — port packing hourglass + extraction march direction to WebGL; mail badge top-right (
3961ce1) - hud — show true food net (red minus), tint gain rates subtle green (
cd47a2e) - hud — resource dividers sit in the gap, not under the numbers (
b3134d6) - hud — resource detail popup rises from the bottom bar on the map (
634b392) - map — render the persistent Deep-Wastes (ring 3) weather, not just player ring (
d146a8a) - map — terrain frozen at old viewport after portrait->landscape rotation (
89af0a7) - map — megatower + citadel were 2x / 1.4x too big — match canvas sizes (
2703967) - map — restore extraction range ring look — short dashes + edge glow (
a8d3e4f) - map — sunken arcology rendered too big — use top-crop, not squashed sprite (
7613209) - ui — player-info action bar clipped the 5th button (CLOSE) (
9cda2c8) - map — port the above-crawler "lasagna" ghost re-draw to the WebGL map (
e8b4f0a) - map — size extraction type-line to match the site name (10px, was 9px) (
8b9428a) - map — show FPS overlay on the WebGL map (was hidden behind opaque canvas) (
9834a39) - map — resize the WebGL map canvas on window/fullscreen resize (
3dde884) - map — supersample labels instead of roundPixels — crisp AND smooth on pan (
6cf1943) - map — roundPixels on labels — crisp text + true-bright red, matching canvas (
2d96df9) - map — render label text at renderer resolution (1:1) — canvas-faithful weight (
b1ca7ca) - map — thinner font-proportional label outline (no shadow) — readable small text (
bad560a) - map — clip weather to player zone (off ring 2) + supersampled readable text (
01a90db) - map — exact label colors — YOU state color, Citadel #ffd700, power #666 (
dff6c5c) - map — faithful label styling — DPR-crisp text, exact colors/alpha, real fonts (
2365861) - map — sunken arcology spawn now visible (megatower crown + hazard zone + label) (
7f2f34d) - map — restore missing entity parity — area names, site titles, arcology, colors, fog (
a855902) - map — fog as a screen-pinned MESH, not a filter — ends the drift for good (
3d13f5c) - map — extraction range ring — even dots instead of a few big arcs (
bfeb679) - map — terrain as viewport mesh — fog/edge now track the ground (
24da227) - map — terrain far-zoom — draw full texture scaled+positioned (no frame mutation) (
b4e974c) - map — terrain far-zoom breakage — set sprite scale, not width (
87e32f7) - map — supply explicit vertex to fog Filter (Pixi v8 ensurePrecision) (
0b274d7) - map — Pixi terrain off-center camera bug — use stable source width (
f38f1d3) - map — bundle Pixi with unsafe-eval polyfills (CSP) + live harness (
47df436) - zealy — enforce claim ownership — reward claims resolve only via the claimant's own link (
99b33b8) - world — surface quest-guidance T2 site to its quest holder (
8cdf6c8) - ui — pin menu CTAs on small landscape via .mpane scroll/footer primitive (
18b7e3c) - anomaly-scan — count only active raid statuses in double_deployed_commander (
32e0adc) - socket — pair emits with mutations across audited routes + verify-mutation-emit lint (
9c9a3de) - delivery — emit on claim so the loot-crate icon clears instantly (
a94ac03) - deps — declare stripe in package.json (was lock-only → npm install couldn't boot) (
87f39a4) - extraction — preserve wave power across the /extraction/active poll (
b01e3be) - restore old tutorial as default (UI must be identical to old version) (
e34baf9) - map — undo the Pixi autoDensity viewport fix from #338 (low-quality map) (
816cdf1)
Performance
- map — player-name labels from a shared glyph atlas + per-frame allocation sweep (#348) (
9b3f003) - map — strip native-terrain Sprite masks on mobile; revert the DPR cap (
10074a1) - map — cap Pixi backing density to 1 on phones (5-FPS mobile fix) (
a30bf1e)
Internal
- tutorial — design system wave A — the SCRIPT splits from the ENGINE (
7395d4c) - shop — config-derived lint - every pack must pass the ceremony bar (
5cef53f) - qa — extend the CI-flake retry to every socket/render wait in CLIENT (
900f086) - qa — contain the Pixi/CI GPU-stall flake with a scoped retry-once (
57ba155) - qa — size the overlay wait against the measured CI stall, not a guess (
f905077) - qa — instrument the CLIENT cycle-pause section instead of guessing again (
c6b5d65) - qa — CI-tolerant budgets across the CLIENT Playwright section (
1ffd878) - qa — gate CLIENT wave asserts on page-socket readiness (CI un-masking) (
e80ecac) - ci — fix the two deterministic baseline failures blocking CI (
476f390) - echo7 — update member_count lint to the recompute-from-rows idiom (
8db6c8a) - repair 13 rotted verify scripts + extend combat coverage (
7e19b85) - alliance — assert per-pair lock keys on both helper AND requester (Codex review d) (
d6faa18) - pvp — defended-crawler-raid E2E (defender fields its commander squad) (
76ad86e) - prod-targeted release AAB built + verified (upload-ready) (
a441c1a) - mark Google Play screenshots done in store-listing reference (
2b1f17f) - test — record the accepted CI-flake decision (stop containment here) (
b023573) - Phase 3 store-listing + compliance reference (listing copy, IARC, Data Safety, App Privacy) (
6c84bdb) - privacy — disclose Apple Sign-In + RevenueCat/store-billing IAP processing (
7e97b33) - tutorial — Stand drive primitives, analysis status, coverage-log entry (
f766b5a) - Wave 5 fix-pass outcome — 15/15 findings resolved, verified, device re-confirmed (
e21837d) - tutorial — player-pace drive study + RoK comparison (ashen-tutorial-analysis.md) (
bed5532) - DONE-gate result — on-device smoke passed (Pixel 3a) (
2d554b8) - app-store execution plan (wave orchestration) (
1529591) - tutorial — retention redesign plan — serialized attention, commander choice, free pack (
aa8e3ae) - tutorial — live-verified Rise of Kingdoms tutorial study + retention analysis (
c852911) - tutorial — playbook notes for verifying the tutorial on the default Pixi renderer (
70c80ba) - re-score — all 9 gates satisfied (continuous run confirms changed flow clean) (
13f7012) - tutorial grading scorecard (6/9 hard gates verified + committed) (
2271ce7) - tutorial client-side sandbox plan (Rev 2, post Codex review) (
fd511be) - record cutover revert (old tutorial UI restored as default) (
b934e77) - record Phase 2 cutover executed + Codex-reviewed (
c1a3f9f) - Phase 1 done + Phase 2 importer audit (corrects deletion scope) (
19d6f65) - tutorial client-only refactor plan (Rev 2, post Codex review) (
1fc7473) - fix stale CLAUDE.md references and generalize model-specific guidance (
be55716) - codify "every timer is boostable" + "we sell time and power" (
3b337cd) - economy & progression analysis (Zeninn model account + top-tier cohort) (
84bb9e8) - store — Fastlane submission automation + iOS platform dep (
53bf632) - remove dead code (unused locals, constants, config keys, exports) (
51731fc) - map — refresh citadel art (new tile_citadel, 1344×1052) (
8743b47) - android — release signing config + release-build guide (
c542fb8) - map — remove the zoomed-in FRONTIER + THE ASHLANDS zone labels (
00568df) - map — hover glow is a grid-aligned iso cube, not a flat square (
0f2a74f) - map — hover entity glow is a rectangular column, not an ellipse (
4392213) - hud — food deficit rate "+0"; reposition "stays 0" note left + green (
3e27c1d) - map — dormant sunken arcology — faded diagonal stripes, no border, no name (
a2e26a5) - hud — divider on the right of the rations pill too (
44c9c1f) - hud — more space + visibility for resource-bar dividers (
b5e409e) - hud — subtle vertical dividers between resource pills (
6ce176d) - hud — compact resource bar — drop "/h", tighten gaps, slide left (
9f34ce0) - hud — move Replays badge to top-right in the expanded menu (like Task Log) (
aedabc4)
Other
- assets: 4 Google Play store screenshots (world map, barracks, commander, events) (
1383dcd) - docs+assets: Play Store feature graphic + corrected odds-disclosure UX note (
86a1f32) - docs+lint(tutorial): redesign shipped — plan status, drive primitives, index-pin update (
00207bd) - wip(app-store): Track A crypto-strip + plan docs + store-assets (pre-rebase snapshot) (
3ddb407) - docs+landing: align positioning to canonical 4X + ownership thesis (
4990671) - hotfix(map): restore _ls0 def — Pixi map regressed to canvas-2D after merge (#343) (
1d6a142) - tune(map): raise Citadel label block 2 more lines (
45efc42) - tune(map): raise THE CITADEL ~1.5 lines, alliance lines flush as line 2/3 (
c79176a) - tune(map): narrow haul bars 10%, raise + tighten the Citadel label block (
1150155) - tune(map): black outline on site haul bar + fill matches label colour (
21f0722) - tune(map): hold site/beacon/arcology icons a notch longer before far-zoom dots (
f6bce3e) - tune(map): slow the normal cloud cover 3x (rings 0/1/3) (
9ad9fa4) - tune(map): rain only in vision; bolder + faster CCW sandstorm swirl (
e47ccf7) - tune(map): tame the Wastes acid rain + confine it to ring 2 only (
a3e2180) - tune(map): drop the green companion line; tint the single grid line slightly green (
f3382b9) - tune(map): add a mid-green 1px grid line 1px below the ivory one (
5086716) - tune(map): move Hollowpoint Systems → 119,131 and The Birdsong Relay → 119,157 (
4671c17) - art(map): refresh the Summon Beacon sprite again (
d5b7eb0) - tune(map): single 1px grid line, near-white-brown color (
5cbc6f0) - tune(map): blend a hint of brown into the grid blue + fade grid on zoom-out (
97121bf) - art(map): refresh the Summon Beacon sprite again (
20de8ca) - tune(map): nudge grid blue a bit whiter (0x55A6F0 -> 0x6EB3F2) (
6aab9f6) - art(map): refresh the Summon Beacon sprite (
bf46671) - tune(map): drop the main grid line to 85% opacity (
30e261a) - tune(map): fake 1.5px grid with a crisp 1px line + faint offset 1px line (
5b856e4) - art(map): refresh megatower sprite again (256×384, 2:3) (
25b0913) - art(map): refresh the risen-arcology (megatower) sprite (
4263469) - tune(map): thicker bluer grid + map-wide radar band (
7cb9168) - tune(map): decouple wave interval from sweep speed — 14s apart, 20% faster cross (
1f24061) - tune(map): revert 2px grid back to 1px, brighten the blue instead (
a1cbb2a) - tune(map): 2px blue grid lines, 1px white wave, ~2x faster sweep (
b1efaff) - tune(map): brighter blue grid, softer white sweep, slightly faster cadence (
033d933) - tune(map): reduce the piss filter strength to 80% (WARM_FILTER_ALPHA 0.13 → 0.104) (
392193c) - tune(map): much bigger + much slower clouds (
c1799d9) - tune(map): make the cloud cover clearly visible (CLOUD_ALPHA 0.5 -> 0.8) (
916eba0) - tune(map): bigger, slower drifting clouds (
ff6526b) - balance(alliance): set per-pair help cap to 3 (data-calibrated) (
e5a21a1) - harden(alliance): race-safe per-pair cap + index (Codex review) (
1b08486)
Fixes
- pvp — resolve crawler defense from the defending commander's live squad (
0774202) - economy — scale extraction credit faucet to 0.3 (Lever 2) (
bdcf574)
Internal
- clarify basket claim-model + scope the formations-retirement follow-up (
cf2bc3b)
New & Changed
- events — percentile leaderboard prizes (top 50% scaling to rank 1) (
b0f2f7e) - extraction — show "+N% loot" boost chip for seed-band sites in the squad panel (
4838a6d) - extraction — seed Wastes/Deep Wastes with accessible on-ramp sites (
743ad91)
Fixes
- extraction — wire on-ramp seed sites into the live boot path (
c3da48c) - worldmap — stop off-map camera default rendering a grey screen (
5181db3) - mobile — pause audio when the app is backgrounded (
48b6481) - battle-consistency — stop false-flagging Field Medic (skill_proc) heals (
9deb1ec)
Internal
- server — sweep 10 dead internal helpers (codex-verified) (
9547786) - server — remove 22 dead exports (codex-verified, zero callers) (
625a023) - worldmap — delete retired SQLite-era world-init functions (dead post-cutover) (
4d785bb)
Other
- balance(arcology): cut Sunken Arcology leaderboard ash (500/200/100 -> 100/50/25) (
ea963a5)
New & Changed
- hospital — unified per-pool heal queue + one queue-level boost (
192d7f9)
Fixes
- hospital — boost control at top of queue + release healed rows on read (
6c3308a)
Other
- balance(hospital): cryostasis boost cost scales (3× hospital rate), no flat floor (
54e5b65)
New & Changed
- speedup — free-boost window = max(10% of total, 120s) + boost:free-ready socket (
2faa34a) - alliance — confirm kick/demote + name the player in the action log (
8c31819) - economy — deploy cost = 5% of training cost (T2/T3 split into credits) + Logistics research (
0f1ec2e) - battle-report — list equipment bonuses in COMBAT BUFFS modal (
d7689ae) - zealy — extend siege power-destroyed ladder to 300k/400k/500k (
08db6f2) - megatower — Sunken Arcology cache opens an extraction-style loot reveal (
4594c48) - economy — Lever 2 — pulls + skill-card craft cost credits (credit sinks) (
118334f)
Fixes
- siege — squad-lock derives from the live rotation stage (unlock orphaned-stage rows) (
8378de4) - hospital — BOOST on a queued heal stack lowers its own timer, doesn't start it (
1773eb9) - siege — unlock squad preset after a Citadel loss (filter terminal queue rows) (
449c1cd) - socket — guard connectSocket against unloaded io global (
6861eee) - replay — cap unit count at startCount + sync maxHP from resolver (
5d8ee0b) - anomaly-scan — filter terminal siege rows from double_deployed_commander (
0e713a0) - megatower — allow skill-swap while deployed; raise panel above chat (
269d6c3) - shop — emit currency:update after golden_ashes grants/spends (
393856d) - worldmap — one extraction march arrow, glued to a moving crawler (
f7f9f4a) - hospital-screen undefined-array crash + CI gating fail-open (
d25baa5) - megatower — harden advance + guard races, add markReturned arity lint (
7d4cf19)
Internal
- shop — add verify-currency-emit drift lint for golden_ashes routes (
eccf22d) - megatower — rewrite run + ghost verify for the real-basket model (
54fe70c)
New & Changed
- arcology — real-basket Megatower + single crawler-arrival sound (
0f57a41)
Fixes
- extraction — close heat lost-update race (
92bf372) - alliance — stop troop-help slider freezing at 1/1 (
7011482) - landing — mobile-portrait hero polish + kill horizontal scroll (
54fed8c) - client — guard the worldTiles render loop against null (not iterable) (
b72c46e) - client — guard null socket in squad-rail + objectives-panel socket wiring (
a46422e) - armory — restore skill-description text contrast under beige theme (
75fa1b5) - tutorial — kill generator-step + hospital-boost panel jank (
d2f72f4)
Internal
- hospital — behavioral sequential-heal queue + boost verification (
2feda71) - gate heavy jobs by changed paths + trigger to cut Actions minutes (
add6015)
New & Changed
- tutorial — self-heal missing step entities on connect + stuck-player watchdog (
4eef85d) - mail — player & officer mail — compose/reply/block UI + abuse limits (
ad9d65a)
Fixes
- tutorial — keep the panel off the highlighted modal button (bank-reveal DONE) (
cd2d9e3) - tutorial — lock the camera on ALL on-map objective steps (not just beacon) (
d1b6388)
Fixes
- tutorial — reliably center the crawler on the beacon step + recenter helper (
e6e716a) - extraction — enforce commander leadership cap on deploy (
60de05c) - extraction — reset per-squad run-state on PvP site takeover (
df038dc) - socket — pair emits with state mutations across socket audit findings (
f9e11c4) - skill — promote — changelog branch-PR + scoped notes (drop broken bypass) (#165) (
fd088e2) - lint — verify-deploy-paths false-positive on is_deployed clear (#167) (
fff79e1)
Internal
- pvp — land staging PvP E2E + leadership-bypass probe (
4699ce3)
Fixes
- tutorial — release orphaned commander on recover so the deploy step isn't stuck (#162) (
f9e903c) - tutorial — frame the Summon Beacon step so the camera keeps the crawler in view (#161) (
aca9d36) - tick — run orphaned-commander sweep on reliable cadence, not now%60 (#160) (
13d3b2e) - whisper+lore — radial WHISPER retargets via dossier path; catalyst_cache lore (
066c192)
New & Changed
- scripts — read-only prod data-integrity anomaly scanner (
56ccb96) - arcology mailbox rewards, crate→haul extraction UI, region renames, social (
239d580)
Fixes
- concurrency — defer crawler-destroy hooks post-commit (replace tx-threading) (
c98b9ef) - concurrency — crawler-destroy deadlock + hospital heal/loss races (
a09c485) - alliance — clear orphaned siege state on disband (citadel_stage_progress + siege_lockouts) (
b30ddc9) - extraction — deterministic squad-rail ordering (id ASC tiebreaker) (
a62e4cc) - shop — gate /shop/purchase-ash off production (no-receipt ASH-mint STUB) (
d984556) - concurrency — claim-guard 3 Sweep-B idempotency double-grants (
81e5bab) - concurrency — megatower ghost/guard duplicate-troop-grant claim-guards (
e6f8dcf) - concurrency — atomic claim-guards on 5 high-sev double-process paths (
d3179e2) - extraction — refresh the pending-haul chip when a squad returns (
e42a4d6) - Ceaserkrizz prod bug report — loot-on-return, reconnect, injury recover (
6917987) - auth — respawn despawned players on /auth/refresh (
11d678c) - debug — force-despawn endpoint calls despawnPlayer directly (
6ac91af) - alliance,despawn — gate inactivity prune + despawn on last_tick_at, not last_login_at (
79d61f7) - crawler — atomic shield toggle + Wastes/Deep Wastes parity (
c0a476d) - pvp — extraction-PvP dual-leader resolution gate + arrival alliance re-check (
4fbe65f) - pvp — atomic claim-guards on raid + siege resolution/return/recall (
862d72c) - extraction — one PvP attack = one battle (idempotent queue by raidId) (
3edfa45)
Internal
- equipment-system — finalize mails Arcology caches (claim-from-mailbox), not direct grant (
909632f)
New & Changed
- analytics — /analytics/abuse — sock-puppet / IP-farming discovery (
81a4257) - map+extraction+defender — scooter range, summon beacon, ring-3 vision, 4h site relocation, defender event UI (
e3c588b)
Fixes
- extraction — unique delivery id per run — stop dropping repeat-deplete chests (
9784d68) - social-rewards — grant per-platform ASH, remove YouTube (
66e60c3) - tutorial+extraction — airtight tutorial flow, all-tier cycle regen, ECHO-7 fix (
5f37046) - server — command_center level reverts to Lv1 while upgrading (
a6fb2fe) - server — building benefits revert to fallback while upgrading (bundle) (
ff1a28f) - server — building capacity/cap reverts to fallback while upgrading (
deac06e) - server — training cap collapsed to Lv1 while barracks upgrading (
68bc928)
Internal
- server — getBuildingLevel helper + lint the is_upgrading=0 read class (
04f56b6) - slim reviewers to cite CLAUDE.md + wire /pre-pr to invoke them (
17de394) - extraction — enforce banked-implies-delivery invariant (static + behavioral) (
68264b3) - carry-cap — re-baseline loot-content assertions to the DROP_TABLE model (
3a4c40d) - carry-cap — re-pin stale T2 yield expectation to 16k (
e094243) - scripts — migrate guest-auth + carry-cap verify off sync SQLite API (
e3f9ff8) - social-rewards — rewrite verify script for Postgres (
c0893a9) - add Claude Code setup guide + share read-only permission allowlist (
d9fe473) - add db-tx reviewer, push guard, verify-on-edit, /promote + /pre-pr (
75e1931) - share Claude Code config — syntax-check hook, code reviewers, MCP servers (
1cb8218)
New & Changed
- telemetry — director tools — churn autopsies, deploy markers, rage-quit detector, prod backfill (#108) (
04cf4b2)
Fixes
- zealy — Zealy Connect callback must be a top-level navigation (
93f19af)
Internal
- zealy — end-to-end Zealy Connect handshake verify + connect-flow docs (
f526325) - zealy — record prod ZEALY_CONNECT_DEFAULT_RETURN_URL override and why (
1e0c195)
New & Changed
- telemetry — Phase 5 — anomaly digest + combat-balance watcher loop scripts (
13850e6) - telemetry — Phase 4 — decommission Metabase, add coverage-gated retention prune (
a948aa8) - telemetry — Phase 3 — combat/economy instrumentation + funnel/combat/economy dashboards (
f02969f) - telemetry — Phase 2 — first-party /admin/analytics dashboard (Alpha Health + Errors) (
87d49dd) - telemetry — Phase 1 foundations — hardened ingest, error capture, metric rollups (
39e0f58)
Fixes
- ui — extract deploy modal shows server-authoritative squad counts (
cf2b2b4) - client — suppress phantom Reconnected chat message on non-reconnect resyncs (
46e888f) - ui — upgrade costs in blocked state, deploy modal preset cutoff + cost, chat docked-preview fixes (
84d4034) - pg — cast aggregates feeding typed consumers; repair 3 endpoints dead since PG cutover (
e344c46)
Internal
- pvp — fix pvp-test.js for commander-required raids + shield-drop cooldown (
88c9d17) - telemetry — user guide for Telemetry v2 (
502f4f2) - zealy — sprint went live — USDC auto-distribution, $45 1st place (
ed254c1)
New & Changed
- zealy — power-milestone sprint endpoint + commander power recalibration (
a46eb1d) - client — juice kit — milestone celebrations, choice cards, Obtain routing (Phase A4) (
fbda257) - client — Awakening presentation — HUD reveal, claim glow, Ada keywords (Phase A3) (
a8a33ff) - client — mood-lighting tint + vignette on world map (Phase A2) (
0b63523) - client — motion tokens + screen-enter transitions + canvas veil (Phase A1) (
afd883a) - client — dispatch migration — remaining screens and panels (
0cb28ad) - client — dispatch migration — world map (27 actions) (
6eabc14) - client — dispatch migration — shop, market, workshop (17 money paths) (
fefa060) - client — global same-frame press ack on every button click (
ad91168) - client — dispatch migration — army + megatower screens (20 actions) (
2723da8) - client — dispatch migration — alliance screen (27 actions) (
fd72d18) - client — dispatch migration — auth, barracks, tutorial, chat, tips (fragile set) (
dcc9dee) - client — action dispatcher — same-frame ack, single-flight, timeout, kill switch (
6f00168) - encyclopedia+extraction — Encyclopedia menu, site-specific gear, HUD polish (
8cf03ca) - worldmap — redesign tile-info tooltips — extraction + generic + shared header (
89d12a4) - barracks/siege — true-basket parity + perf + UX session (
9c26031) - map — Deep Wastes gets the safe-ring chill weather + soft fog fade at the boundary (
aaf7a6e) - map — expand Wastes ring +10% (95->104.5), shrinking Deep Wastes (
f88c567) - map — Deep Wastes ring is fog-free + visible PvP (high-risk outer zone) (
20a6ca8) - barracks — live-update on heal via server refetch; drop optimistic slot surgery (
200be1b) - barracks — allow assigning hospitalized units to a slot (+ orange warning) (
83362d3) - deploy — restore preset selector (1/2/3) in extract send modal (
e5ce032) - menus — facility topbar title shows current level (BARRACKS · Lv 5) (
be9ab71) - security — server-side per-commander squad store + retag clamp (
790ef3f) - reserves — regen high-water display with 490/500 + regen-plus (
9e5c1de) - barracks — squad-priority replacement from Reserves on return (
13f9a1f) - barracks — live squad updates while commander is deployed (
19faba6)
Fixes
- extraction+test — root-cause qa-test wave flake; harden tick loops against silent starvation (
fa17374) - client — paint screens before fetching — no more black-screen hang on slow loads (
6238415) - client — boost rows say NEED n when unaffordable, not a mute grey-out (
850a5b7) - client — boost modals — stale-fetch guard for rapid multi-spend (
8da04aa) - client — boost modals — live timers + visible catalyst-spend reaction (
b8aa201) - client — remove alliance screen-wide _busy double-gate (review finding 11) (
6292593) - client — single celebration pipeline + offline catch-up ledger (Phase A follow-up) (
0dc0286) - client — wallet flows un-deadlined, AMM confirm disable moved inside dispatch (findings 9, 12a) (
51b7a4b) - client — event-decide cross-surface key + bounded force-deploy retries (findings 5, 8) (
12d2a37) - client — de-wrap last-write-wins toggles/saves wrongly single-flighted (review finding 6) (
9846c96) - client — dispatcher core hardening from PR-94 review (findings 1-4, 7, 9, 12b, 14, 15) (
a926ad6) - client — mail force-delete flag never reached the server (
1e43448) - client — drop _doMove rethrow — double-toasted via dispatcher catch (
7c0e230) - lint — direct-post marker must sit on the line directly above the call (
9dcb984) - client — bank-reveal double-open race + dispatcher migration for haul flow (
6257482) - encyclopedia — drop the loot-table descriptor line (
6cd89e3) - ci+sweep — clear 3 CI lints + 3 dormant bugs surfaced by general check (
2514980) - release wave-pause on the resolveWave exhaust early-return (
4070e58) - clear orphaned extraction cycle-pause refcount on boot (
a648fb7) - resource realize preserves concurrent spends (lost-update dupe) (
98b88b6) - guard build-upgrade and research deducts against concurrent races (
b230a6a) - cryo instant-revive tech-core cost now scales with stack size (
ee1b8a5) - use PG jsonb extraction in analytics queries (was SQLite json_extract) (
0bb9ffa) - keep siege point contested during an active battle (overtime hold) (
4f84163) - serialize beacon-summon gacha to stop free-pull duplication (
6969681) - cap duplicate building placement (unlimited-free-building exploit) (
253421a) - close free-speedup exploit and megatower exit troop duplication (
9fa89f8) - barracks/ui — client cache mirror on cmd-tagged heal + beacon SUMMON confirm (
be00926) - hospital — pause cmd-tagged heal timers while commander is deployed (
11d9a47) - events — no defender 'field decision' events when the crawler-defender basket is empty (
3b744e0) - map — Deep Wastes is ALWAYS fog-free for everyone, not just when standing in it (
44dcfba) - barracks — refetch reserves pool from server after a sick-move, not optimistic math (
9684c4c) - siege — tag siege losses to the commander so they heal to the basket, not reserves (
46fb9fa) - arcology — seed initial preview from the active commander's server basket (
3ee0c5e) - hospital — distribute heal-back across slots; add troop-conservation regression test (
9887c7c) - barracks — use server-derived wound gap verbatim, stop resurrecting stale localStorage requested (
546a759) - barracks — stop full re-render every second from stale injury/training timers (
17d38cc) - hospital — derive slot wound gap from real recovering rows — kill phantom wounds (
0f2e654) - barracks — Reserves tile counts only NULL-tagged wounded, not commander-tagged (no double-count) (
769b3c3) - megatower — clamp formation to survivors on floor advance instead of blocking ENGAGE (
9fb2ae1) - barracks — only offer FREE reserves-bound sick to a slot, not other commanders' committed wounded (
40a31fc) - barracks — make scale-to-fit robust against measurement race (offscreen clip) (
e1b45ad) - barracks — slot editor sets ASSIGNED, derives healthy — wounded survive manual edits (
ea2fabe) - troops — make server authoritative for squad live counts; Barracks reconciles on entry (
c288b2d) - troops — preserve wounded indicator across edits, Megatower exit, and server sync (
d26ab44) - megatower — clamp squad to bank-available, render 'live/requested' on under-supply (
b26797a) - megatower — wire arcology to per-commander Barracks baskets (
0ccfff5) - megatower — unified ecosystem — deduct only commanders squads, tag losses (
5ce5ac4) - megatower — load formation from active commander's Barracks preset (
081ec8f) - barracks — Reserves regen pool counts ALL pending hospital, not just NULL-tagged (
c13374c) - dev — cache images for 60s in dev so wallpaper preloads actually stick (
8e1ae46) - menu — preload home wallpaper via <link rel=preload> in HTML head (
9202ea7) - menu — preload home full-bleed wallpaper (crawler_desert.png) + cipher tablet (
1bbe2e5) - menu — preload hot wallpapers at app boot — no more cold-cache flicker (
1a10d85) - menu — preload wallpaper before showing to prevent open-flicker (
7b0af55) - tasks — remove hauls from Tasks panel — chest button surfaces them (
84e0485) - barracks — Barracks edits move in-flight wounded to Reserves regen (
28735dc) - hospital — cache bust on every state change + defensive INSERTs + logging (
e4c726b) - barracks — _onWoundedHealedToSlot guarantees the slot bump lands (
d83742d) - barracks — server-verified swap delta + bulk sync on entry (
526d1fc) - return — client computes swap-with-Reserves using accurate squad data (
b9a011a) - reserves — clear is_deployed BEFORE return_arrived emit (kept survivors out of Reserves) (
6d0043d) - barracks — suppress regen during deploy + don't double-render wounded on Reserves (
3905204) - return — snapshot bank pre-survivor + log swap calc end-to-end (
e2c11e7) - reserves — pick up regen pool on Barracks enter + bust /army cache on return (
432ceba) - barracks — subtract every commander's preset from Reserves, incl. benched (
01eb41c) - barracks — authoritative squad rebuild from server payload + diag logs (
eeac620) - barracks — keep dead slots visible as 0/N in deployed greyed-out grid (
5381f88) - barracks — preserve requested high-water mark so wounded slash displays (
434311b) - barracks — reconcile commander squad with survivors on return (
e20c1a8) - barracks — unify clamp alert format + prefix commander name (
98ac181) - barracks/preset — partial clamps also fire alert toast (
cf89ae7) - barracks/preset — phantom slot keeps icon during flash + stacking alert toasts (
55fcd1e) - barracks/preset — impossible clamp persists blueprint loss + visual stays at "500" (
2bfcbb8) - barracks — training:complete socket re-renders commandScreen + stops tick (
5dcc5f8) - workshop — inventory action buttons (CRAFT/PROMOTE/UPGRADE/RECYCLE) theme-aware (
1cd0b9f) - workshop — army names + dark-mode prompt text + label copy (
2d6c4a7) - barracks — training timer stuck when training starts mid-session (
20d499f) - barracks — restore preset-switch bank-clamp + red flash (
20976f1) - barracks — auto-load active preset on entry — match doc (
8f6413e) - barracks — preset = squad's actual count, deploy greys instead of clamps (
d8d9532) - barracks/picker — count editor opens at default size, not picker's full-screen (
2835a6e) - preset loadPreset preserves requested + home-tile training timer + barracks tick (
2ff14e4) - preset units vanish on deploy + chat bg width + chat input on SYS (
42109aa) - chat — bg covers input on mid-size viewports, lighter inactive tabs, minus only on active tab (
244632a)
Internal
- client — code-review fixes — isCanvas hoist, token-derived re-measure, shared resource labels (
6166d6c) - lint — sanitize strings/comments/regex + multiline dispatch detection (finding 13) (
359363a) - lint — verify-action-dispatch — mutating api calls must route through dispatcher (
2f71973) - Phase A criteria trued up to implementation (mood states, single-PR batching) (
ab1be27) - Phase A motion-pass goal + success criteria (
82ae857) - FGF Phase 1 competitor analysis — visual/UX technique catalog (
eaaebdd) - test-coverage-log entry for action-dispatcher migration + verification (
be8ddc3) - action-dispatcher convention in CLAUDE.md code conventions (
3d17e72) - Phase 1 brief for FGF competitor analysis (session transfer) (
1a76260) - record deferred-caveat resolutions (resource dupe, cycle-pause, refute) (
b87353d) - log 2026-06-09 codebase-wide bug sweep (8 fixes + 2 open leads) (
605c0d8) - slot editor sets ASSIGNED / derives healthy; wounded survive manual edits (
40b85a9) - SUPREME RULE — one shared troop ecosystem (Reserves + squads + hospital) (
cf766d2) - barracks — user's plain-language model + impossible-fulfillment is permanent (
5f27a5d) - barracks — clarify — permanent loss just lowers the total (
f991571) - barracks + commander presets — model, display rules, deploy lockout (
1c5780c) - gitignore local agent-playtest scratch dir (raw dumps + JWT) (
bd0b949) - gitignore local redis dump.rdb test artifact (
551b419) - clean up stale references + dead code after recent reworks (
f92ba04) - assets — re-encode crawler_desert PNG → JPG (2.27 MB → 213 KB) (
17de2c7)
New & Changed
- PvP-audit fixes + known-gaps closure (#60) (
0971629) - tutorial onboarding overhaul + post-tutorial NPX polish (#56) (
6119305) - infra — pool-stats emitter + generalize tx-propagation lint (#53) (
7645f41) - infra — idle-tx watchdog + Phase 0 PG migration + accumulated staging work (#47) (
511dbcb) - base/tablet — icon-top + LV-under + centered labels, button size unchanged (
f199623) - theme — default to dark mode, keep toggle for light (
1333da5) - vault — audit trail + operator restore for real-money export/import (#43) (
2dbd092) - vault redesign (hero state + card grid + chip + import demote) + economy tune (#42) (
9391494) - add commander NFT card art (
8bdaf04) - polish commander mint landing flow (
517a7dd) - add landing commander mint page (
8fee0a9) - add Zealy commander NFT campaign flow (
c5c0192) - commander equipment economy + squad modal polish (#41) (
f65ae80) - events — Sunken Arcology lore frame + LOCATE button + rename (
cc0a2f7) - map — haul-chest button — pending banked-haul indicator (map-only) (
dec1078) - base — WELCOME EVENT button deep-links to welcome entry in events menu (
3fdbccc) - events — list menu — sidebar + detail (welcome event placeholder) (
1a1a0a4) - extraction — reveal pipeline polish + battle pause UX + foreign-tile hardening (#40) (
8ee2553) - extraction — defer resource credit from bank → /claim (unified box reveal) (
995c70d) - extraction — event-interrupt popup over reveal + lift first-cycle gate (
915f260) - extraction — chaos-team-hardened extraction loop (
64698f4) - base — enable 50/50 Cipher 1/2 roll on every home-screen entry (
39f3f03) - base/cipher-1 — extraction banner now shows on mobile too (
f60451f) - base/cipher-2 — extraction banner now shows on mobile too (
aab2bb6) - base/banners — split per-cipher banner placement, lock Cipher 2 (
a778495) - base/pc — +20% sand cluster size and count (
955c855) - base/cipher-2/pc — pin menu anchor to phone-equivalent on PC (
1c364b1) - base/cipher-2 — -10deg CCW menu rotation + right-side perspective tilt (
baa544c) - base — 50/50 Cipher 1 / Cipher 2 variant system on home entry (
5c4defc) - base — PC home screen mirrors phone layout via transform scale (
b3a60c0) - map — HOME button (was CRAWLER) with proper dark chrome (
8cda610) - chat — docked = same element as opened, cropped to 2 lines (
b526839) - chat — unify docked + opened at 15.2 px (+10% on opened) (
c95e1dd) - chat — docked -30%, opened +20%, opened +10% wider (
df20048) - chat — extend opened-chat bg to bottom, shrink docked, unify SEND (
93b18b4) - base — lock approved mobile tablet-menu geometry (
d88a601) - base — wind sand clusters + pointer-drag tablet scroll + chat clearance (
246cd35) - base — add soft sandy wind drift overlay (
31de021) - crawler screen UI overhaul with cipher tablet menu (
1468816) - extract+attack unified modal, cross-cmd troop allocation, clamp cue, more (
8d6dc49) - mobile polish — Barracks scaling + map HUD + chat (
f48711a) - Barracks UI polish — picker, train modal, drag-drop, layout (
44a90ea) - bundle cold-load client assets (
f074ab4) - audio — replace extraction reveal synth with RPG Interface Essentials assets (
d7e8163) - extraction — cycle-pause primitive + event-as-badge UX + reveal polish (
ab8faca) - bank-reveal — legendary near-miss fade (
77e7d60) - reveal — cycle flight + haul ticker + landing pulse (
e7d96cd) - reveal — particles, per-crate shimmer, haul rarity polish (
ddee061) - reveal — soak-phase escalation — panel wash, screen overlay, LEGENDARY banner (
2ac62ed) - reveal — phase-fraction pacing + real loot icons (match prototype) (
de0e8f3) - reveal — squad-modal extracting layout — wide LEFT reveal column (
c486caf) - debug — TEST ACCOUNT button + /api/debug/skip-tutorial endpoint (
0b6e50f) - extraction — reveal audio + boot-time recall sweep (Phase 2e/f) (
603d207) - extraction — value-only haul + cycle reveal area (Phase 2d) (
5ca5032) - extraction — delivery boxes + bank reveal modal (Phase 2a/b/c) (
777cc24) - extraction — per-cycle item registry + structured items[] emit (Phase 1) (
ae71883) - add shard admission cap (
dcfd880) - modernize chat baseline (
09d9c2e) - add clean-start postgres cutover (
2117658) - alliance — NPC starter alliance — Phase 2 (LLM persona) + Phase 3 (Citadel march) (
b178fee) - add tick worker redis heartbeat (
e29cf05) - map — animated packing-hourglass overlay above extraction sites (
b28b413) - hud — scale top + bottom bars 20%, tighten chat alignment, fix wheel reopen on deploy (
d9781dc) - add realistic scale readiness harness (
edfec3d) - alliance — redesign Requests panel — single panel + tile-picker modal (
cf6f937) - add redis replica readiness (
da19ce5) - alliance — broadcast notable history events to chat + per-member contributions panel (
e59243c)
Fixes
- ui — cipher Firefox scaling, click swallowing, rate wrap + SIEGE PRESEASON (
3412ffa) - separate shield-drop cooldown (30s) from squad-deploy prep (10s) (#59) (
b4d452f) - security — pre-promote audit findings (#57) (
4e6c051) - shutdown — arm force-exit timer first, halt tick loop between ops (#52) (
e5e66f6) - chat/pc — bump message font 11→12 px (
81bdae0) - chat/pc — drop viewport-scaled font on message rows (
9a28b62) - shop — un-gate VAULT tab — remove "COMING SOON" + disabled state (
098272a) - barracks — preserve original requested count on partial-clamp persist (
053a981) - prefer versioned NFT commander art (
cc7dba4) - polish vault export UI (
09f6f9e) - restore commander vault export (
bf2fb52) - remove in-game Zealy mint panel (
6258cac) - harden campaign NFT burn import (
1e9d1b4) - show and grant campaign import imprints (
b545350) - stop megatower placeholder from bouncing to Welcome (
e012921) - events — human-readable HOW TO SCORE for megatower + safer fallback (
bf47fe4) - events — Sunken Arcology pinned in sidebar with inactive state (
ee75514) - map/chest — socket-late-bind retry + 15s polling backstop (
d077672) - chat — hoist hud-bottom z-index bump to global scope (PC + phone) (
b57033d) - barracks — clear _returnTo in tutorial early-return path (
af1d407) - chat — restore input+SEND on home + scope chat to base/worldMap (
60425fc) - events — welcome placeholder no longer reverts after 1s (
122b0bd) - barracks — DONE button honors _returnTo (restores extract→edit→back) (
4b17d33) - chaos-test regressions + basket allocation filter (
72cbe46) - polish base menus and preload assets (
369814b) - extraction — bankHaul credits non-delivery delta (defender-event resources) (
1d9de95) - extraction — sync event-interrupt overlay during same-scene patch (
6355f6b) - extraction — Ignore closes overlay + Continue resumes reveal animation (
4238a85) - extraction — defer haul celebration from bank → box-open + wire tasks refresh (
79745ed) - extraction — Ignore button fires safe-default immediately (
5b100c8) - chaos-team open-items polish pass (
7e89774) - base — clean cipher body class in exit(); doc PC↔phone coupling (
85f6f89) - base/cipher-2 — pin transform-origin so extended bottom keeps locked angle (
527a366) - base/cipher-2 — extend menu bottom another 45px (
34ca11b) - base/cipher-2 — extend menu bottom by 1 button height (PC + phone) (
7645225) - base/pc — remove .base-fullbleed overflow:hidden on desktop (
910c7dc) - base/pc — wallpaper full-viewport, hide bottom bar, fix chat-docked (
51997c6) - map — HOME button flush to bottom-right corner, only top-left rounded (
68984e2) - chat — shrink docked top-fade band 14 -> 6 px (
28f887b) - chat — mask-fade top of docked chat to hide line slivers (
bfc3162) - chat — persistent chat element across base + worldMap (
3f74bf3) - chat — docked chat clickable + empty-state placeholder (
d0a6850) - chat — minimize no longer wipes the docked preview (
d450079) - chat — SEND grey to match placeholder + shorten input placeholder (
17014a7) - chat — SEND button matches input height pixel-for-pixel (
9e82dda) - unblock barracks tutorial flow (
190a7a3) - enforce qa socket client coverage (
82c8403) - scope back-button override to Barracks→Armory only (
d42b35b) - server — allow dotfiles in / and /index.html sendFile (
dac5b47) - harden cold-load dist serving (
2449633) - cache static game assets (
3a35c97) - prevent resource drift on speedup completions (
af9b338) - debug — maxout grants 3 starter commanders, not 6 (
22309b9) - reveal — review-pass — kill near-miss fade on skip, re-query haul on landing (
f13d0e9) - reveal — pause-debt cycle bar, run-id abort, transient FX cleanup (
129e242) - reveal — seed cycle bar + last-cycle crates on modal open (
ba74e4e) - reveal — match cycle siteId against squad.id stripped of 'site:' prefix (
56fc237) - hunter — await cancelDefenderPendingEvent inside try/catch (playbook §B) (
14e134e) - post-cutover race-condition hardening (playbook §A) (
ec081d9) - extraction — IIFE-wrap shared/itemRegistry.js (classic-script const collision broke client boot) (
7d53bb3) - enforce realtime crawler visibility (
452cd87) - narrow crawler presence fanout (
120b61f) - bound tick burst work for load (
a0525f4) - add postgres npc alliance drift columns (
bed0fa0) - unblock alliance pr verification (
3b272b3) - P0/P1 PR review — fulfillment contract, nested-tx, FK cleanup, encoding, verifier drift (
df330d2) - type world map postgres filters (
11bd56e) - repair postgres chat schema drift (
5af5dfb) - keep player bases live in world cache (
4de00c2) - alliance — invalidate research-bonus cache on level change (
9e3f28f) - guard legacy market spends (
effd08f) - persist sparse explored map features (
c97abf0) - reduce scale read-path write pressure (
371cf8e) - avoid load-test alliance tag collisions (
fa8c566) - reduce crawler tick load for scale tests (
f16ef32) - stabilize redis socket setup (
9878853)
Performance
- prepare single-shard 1k ccu path (
bdfe21a) - batch training resource recompute (
8ea671f) - batch tick training completion (
3e32033) - make health checks db-free (
d331e17) - batch resource safety buffs (
7467639) - parallelize world map reads (
b5d72d5) - cache auth player existence (
3138726) - widen hot poll cache windows (
50732d5) - align world tile cache with map polling (
9df0c39) - cache shared world viewport tiles (
d0a66c5) - cache serialized state responses (
33d8479) - cache hot research bonus reads (
1d202a0) - cache alliance help board lists (
c187f85) - reuse world player alliance lookup (
5206b30) - cadence gate moving vision invalidation (
0195cf2) - jitter socket connect catchup (
66448dd) - gate socket connection logs (
fbfdec3) - cadence gate shield drain (
61d33fb) - cache socket siege subscribe state (
f8db0a7) - consolidate combat load reads (
f8e9a00) - align state cache ttl with load cadence (
f340a20) - compact extraction site read payloads (
fb06e0e) - cache hot scale read payloads (
4f165c4) - persist sparse event reveal memory (
19dbb09) - throttle moving presence rechecks (
0ba82f8) - avoid duplicate world player enrichment (
dc424f9) - skip redundant frontier vision circles (
def7de5) - bound resource safety bonuses (
a6139fd) - consolidate scale state reads (
ff25eab) - tune hot read cache windows (
9a88fef) - cache stable hot read routes (
c015055) - skip api response compression (
1ab854b) - compact world reveal payloads (
ec40baa)
Internal
- collapse tx.mode === 'postgres' branches (Phase 3) (#50) (
8e4c892) - drop SQLite, Postgres-only (Phase 2) + docker-compose fix (#48) (
77ad817) - convert events manager to async db (
8928b51) - convert megatower lifecycle to async db (
d8c20ff) - convert dossier card manager to async db (
15e22df) - convert mail and social rewards to async db (
20142a9) - adapt async siege observer helpers (
2a8f24e) - convert world map reads to async db (
627dba5) - convert tutorial cleanup to async db (
978a02b) - convert despawn ticks to async db (
f3f5e5e) - adapt cloud and amm helpers to db adapter (
561f581) - convert completion managers to async db (
476ae93) - make tick helpers adapter-safe (
d0011e1) - convert player deletion to async db (
7025c6c) - convert alliance manager to async db (
39132c8) - convert alliance help manager to async db (
2f667ef) - convert alliance event logger reads (
eb815b4) - convert debug routes to async db (
a8e6c2d) - convert amm routes to async db (
bc58b12) - convert tutorial route actions to async db (
50a4996) - convert speedup routes to async db (
bc64970) - convert commander routes to async db (
cd19238) - convert extraction payload reads to async db (
fda1c17) - convert raid routes to async db (
bc9d3ab) - convert siege routes to async db (
9579c53) - convert alliance route reads to async db (
d9f4454) - convert small event routes to async db (
a046e6d) - convert world route queries to async db (
a8f51e5) - convert analytics routes to async db (
69b2a47) - convert portal routes to async db (
0f9aea6) - convert shop routes to async db (
49c759d) - convert economy routes to async db (
0c31162) - convert troop routes to async db (
fac34cf) - convert chat manager to async db (
544ff8e) - convert state payload reads to async db (
41d928d) - make resource projection async (
67e2bc9) - convert auth and quest paths to async db (
379af9d) - add async db helpers for base routes (
e0b9125) - port all 18 KNOWN_FAILING verify scripts + 4 real prod bug fixes (#54) (
66692fd) - port 10 verify scripts from better-sqlite3 to pg.Client (#49) (
c96454f) - qa — event UX moved from header badge → reveal-area popup overlay (
7ed5646) - qa — address review findings on the SOCKETS + CLIENT sections (
3147517) - qa — add SOCKETS + CLIENT regression coverage to qa-test (
ad327d0) - stabilize world map qa under fog (
ba8a926) - gate load health on server metrics (
da05573) - isolate load setup metrics (
c94511a) - instrument postgres query latency (
1af84ff) - gate realistic load harness (
6c31cd1) - add postgres post-cutover gate (
2718c31) - stabilize staging postgres smoke (
abbead5) - match client token refresh in load harness (
954e997) - refresh load harness tokens before gameplay (
2f0d5e3) - make load harness map camera sticky (
6b60156) - add no-socket load diagnostic (
6980771) - bound load harness request hangs (
5fad066) - avoid setup player fanout (
e52b988) - isolate load health probes (
4143229) - add scale event-loop diagnostics (
5f8dd3e) - clear explored tiles in load cohort reset (
ed4273a) - add staging load cohort reset (
4c3ec92) - stagger realistic load harness starts (
086af58) - add staging redis smoke (
a9f08c0) - fix stale refs after PR #53 lint rename + SQLite removal (#55) (
489abec) - GOD SAVE CHECKPOINT — lock mobile crawler screen at d88a601 (
6479c0e) - add staging qa load evidence (
6364dc0) - record postgres load blocker (
7fedf9a) - wrap 1k ccu readiness evidence (
71f12d9) - record market guard staging verification (
693918c) - record staging heartbeat verification (
67bbb69) - note staging heartbeat deploy blocker (
13e0a1b) - fix 1k report branch baseline (
c703639) - record 750 socket ladder stop (
f872464) - add 1k ccu readiness wrap report (
725f294) - record world viewport cache 750-client result (
6bf7e34) - refresh latest staging scale evidence (
2767334) - record serialized state cache 750-client result (
b9a8ace) - record http-only 750-client result (
ec61272) - record research cache 750-client result (
a323cc7) - record help board cache 750-client result (
e8bf9f2) - record moving vision 750-client result (
c2d5f82) - record 750 socket load result (
58fcedf) - record socket cache 750-client result (
353c244) - clarify tested scale commit (
eb358b6) - record compact payload 750-client result (
7229de7) - record hot-read cache 750-client result (
6e3f2ad) - record sparse reveal 750-client result (
801b0f4) - record 750-client scale blocker (
474a994) - record 500-client staging pass (
f89253f) - record isolated health load blocker (
c8d25b4) - record consolidated state load evidence (
9af0dfe) - record route cache load evidence (
2202169) - record 500 ccu staging blocker (
48e98fc) - alliance social cooperation audit + improvement plan (
943baa6) - drop stale SQLite references after Postgres-only cutover (#62) (
4aaf5e0) - compress audio assets (
e65ca96) - remove dead founder pack join hook (
2658e23) - remove redundant debug route requires (
c940e33) - remove dead amm statements (
4319ba4) - wire postgres runtime selector (
c9de3ba) - add postgres bootstrap gates (
2dbfcae)
Other
- docs+refactor: PG-only docs cleanup + verify-script renames (Phase 4+5) (#51) (
7f2b28a) - tune(menu-fx): walk back static + scanline cut from −30% to −10% (
1af0f2b) - tune(menu-fx): −30% static + scanline, kill wallpaper flicker (
a2b57e7) - wip: siv-version UI session work + merge staging (
5e1e7a0) - tune(events/mobile): side-by-side lore frame, smaller image, locate in view (
54488bb) - tweak(events): one-sentence HOW TO SCORE for Sunken Arcology (
14a635a) - tweak(events): red SUBMERGED badge + 'Currently submerged' label (
4300c79) - tune(map/mobile): haul-chest button -12% size on phone (55 -> 48) (
b22f57b) - tune(map): haul-chest button +25% size (44 -> 55 px) (
2b14f91) - art: darker orange menu icons + white per-hour resource rates (
141323a) - art(base/menu): tablet menu icons → glowing orange (all 4 ciphers) (
c1c4ee8) - tune(base/cipher-1/pc): shift banner -12px up, -6px left (
ef6b8cc) - tune(base/cipher-1/pc): rotate banner -4deg CCW, shift -5px up (
b063000) - tune(base/cipher-1/pc): rotate banner +15deg CW, shift +50px right (
569ddbe) - tune(base/cipher-1/pc): rotate banner +10deg CW, shift -20px up (
f66a674) - tune(base/cipher-1/pc): shift banner +60px down, +15px right (
c646776) - tune(base/cipher-1/pc): shift banner -60px left, rotate -12deg (
0fd87f0) - art(base): sync cipher PNGs, extend extraction banners to Cipher 1 (
f8d7a1f) - art(base): sync updated cipher tablet PNGs from main repo (
96c2c3c) - tune(base/pc): sand cluster scale 1.2 -> 1.1 (PC-only) (
b298a37) - tune(base/cipher-2/pc): shift extraction banners 5px right (
c2f5c40) - tune(base/cipher-2/pc): shift extraction banners another 34px left (
a108c1b) - tune(base/cipher-2/pc): shift extraction banners -30px left, +3% size, tie to cipher (
0f3e4b7) - art(base/cipher-2/pc): add extraction-tape banners overlay (
6884ed5) - lock(base/cipher-2): mobile menu layout + crop top at viewport y=20px (
488c285) - tune(base/cipher-2): +0.5deg clockwise menu rotation (5 -> 5.5) (
b5ae1e7) - tune(base/cipher-2): reduce menu side-view angle (rotateY -36 -> -33) (
6b7008c) - tune(base/cipher-2): nudge menu 1px left + 3px down (
d899aa2) - tune(base/cipher-2): nudge menu 2px left + 5px down (
8ea675e) - tune(base/cipher-2): nudge menu 4px left, 3px down, +2deg angle (
c737438) - tune(base/cipher-2): bump menu side-view angle (rotateY -28 -> -34, perspective 550 -> 500) (
6a26745) - tune(base/cipher-2): +3deg clockwise rotation on menu plane (
2b3cf0d) - tune(base/cipher-2): stronger right-side perspective tilt on menu plane (
5256a87) - art(base): swap back to Cipher 1; full Cipher 1/2 spec in comments (
463f8ad) - art(base): shrink Cipher 2 (angled) ~7.5%, label both cipher options (
bd8f0c8) - art(base): swap cipher tablet art to the angled variant (
11b9b2f) - checkpoint: Barracks redesign — known-good Squads + Reserves layout (
aa44f4b)
New & Changed
- tutorial onboarding overhaul + post-tutorial NPX polish (#56) (
6119305) - infra — pool-stats emitter + generalize tx-propagation lint (#53) (
7645f41) - infra — idle-tx watchdog + Phase 0 PG migration + accumulated staging work (#47) (
511dbcb) - base/tablet — icon-top + LV-under + centered labels, button size unchanged (
f199623) - theme — default to dark mode, keep toggle for light (
1333da5) - vault — audit trail + operator restore for real-money export/import (#43) (
2dbd092) - vault redesign (hero state + card grid + chip + import demote) + economy tune (#42) (
9391494) - add commander NFT card art (
8bdaf04) - polish commander mint landing flow (
517a7dd) - add landing commander mint page (
8fee0a9) - add Zealy commander NFT campaign flow (
c5c0192) - commander equipment economy + squad modal polish (#41) (
f65ae80) - events — Sunken Arcology lore frame + LOCATE button + rename (
cc0a2f7) - map — haul-chest button — pending banked-haul indicator (map-only) (
dec1078) - base — WELCOME EVENT button deep-links to welcome entry in events menu (
3fdbccc) - events — list menu — sidebar + detail (welcome event placeholder) (
1a1a0a4) - extraction — reveal pipeline polish + battle pause UX + foreign-tile hardening (#40) (
8ee2553) - extraction — defer resource credit from bank → /claim (unified box reveal) (
995c70d) - extraction — event-interrupt popup over reveal + lift first-cycle gate (
915f260) - extraction — chaos-team-hardened extraction loop (
64698f4) - base — enable 50/50 Cipher 1/2 roll on every home-screen entry (
39f3f03) - base/cipher-1 — extraction banner now shows on mobile too (
f60451f) - base/cipher-2 — extraction banner now shows on mobile too (
aab2bb6) - base/banners — split per-cipher banner placement, lock Cipher 2 (
a778495) - base/pc — +20% sand cluster size and count (
955c855) - base/cipher-2/pc — pin menu anchor to phone-equivalent on PC (
1c364b1) - base/cipher-2 — -10deg CCW menu rotation + right-side perspective tilt (
baa544c) - base — 50/50 Cipher 1 / Cipher 2 variant system on home entry (
5c4defc) - base — PC home screen mirrors phone layout via transform scale (
b3a60c0) - map — HOME button (was CRAWLER) with proper dark chrome (
8cda610) - chat — docked = same element as opened, cropped to 2 lines (
b526839) - chat — unify docked + opened at 15.2 px (+10% on opened) (
c95e1dd) - chat — docked -30%, opened +20%, opened +10% wider (
df20048) - chat — extend opened-chat bg to bottom, shrink docked, unify SEND (
93b18b4) - base — lock approved mobile tablet-menu geometry (
d88a601) - base — wind sand clusters + pointer-drag tablet scroll + chat clearance (
246cd35) - base — add soft sandy wind drift overlay (
31de021) - crawler screen UI overhaul with cipher tablet menu (
1468816) - extract+attack unified modal, cross-cmd troop allocation, clamp cue, more (
8d6dc49) - mobile polish — Barracks scaling + map HUD + chat (
f48711a) - Barracks UI polish — picker, train modal, drag-drop, layout (
44a90ea) - bundle cold-load client assets (
f074ab4) - audio — replace extraction reveal synth with RPG Interface Essentials assets (
d7e8163) - extraction — cycle-pause primitive + event-as-badge UX + reveal polish (
ab8faca) - bank-reveal — legendary near-miss fade (
77e7d60) - reveal — cycle flight + haul ticker + landing pulse (
e7d96cd) - reveal — particles, per-crate shimmer, haul rarity polish (
ddee061) - reveal — soak-phase escalation — panel wash, screen overlay, LEGENDARY banner (
2ac62ed) - reveal — phase-fraction pacing + real loot icons (match prototype) (
de0e8f3) - reveal — squad-modal extracting layout — wide LEFT reveal column (
c486caf) - debug — TEST ACCOUNT button + /api/debug/skip-tutorial endpoint (
0b6e50f) - extraction — reveal audio + boot-time recall sweep (Phase 2e/f) (
603d207) - extraction — value-only haul + cycle reveal area (Phase 2d) (
5ca5032) - extraction — delivery boxes + bank reveal modal (Phase 2a/b/c) (
777cc24) - extraction — per-cycle item registry + structured items[] emit (Phase 1) (
ae71883) - add shard admission cap (
dcfd880) - modernize chat baseline (
09d9c2e) - add clean-start postgres cutover (
2117658) - alliance — NPC starter alliance — Phase 2 (LLM persona) + Phase 3 (Citadel march) (
b178fee) - add tick worker redis heartbeat (
e29cf05) - map — animated packing-hourglass overlay above extraction sites (
b28b413) - hud — scale top + bottom bars 20%, tighten chat alignment, fix wheel reopen on deploy (
d9781dc) - add realistic scale readiness harness (
edfec3d) - alliance — redesign Requests panel — single panel + tile-picker modal (
cf6f937) - add redis replica readiness (
da19ce5) - alliance — broadcast notable history events to chat + per-member contributions panel (
e59243c)
Fixes
- separate shield-drop cooldown (30s) from squad-deploy prep (10s) (#59) (
b4d452f) - security — pre-promote audit findings (#57) (
4e6c051) - shutdown — arm force-exit timer first, halt tick loop between ops (#52) (
e5e66f6) - chat/pc — bump message font 11→12 px (
81bdae0) - chat/pc — drop viewport-scaled font on message rows (
9a28b62) - shop — un-gate VAULT tab — remove "COMING SOON" + disabled state (
098272a) - barracks — preserve original requested count on partial-clamp persist (
053a981) - prefer versioned NFT commander art (
cc7dba4) - polish vault export UI (
09f6f9e) - restore commander vault export (
bf2fb52) - remove in-game Zealy mint panel (
6258cac) - harden campaign NFT burn import (
1e9d1b4) - show and grant campaign import imprints (
b545350) - stop megatower placeholder from bouncing to Welcome (
e012921) - events — human-readable HOW TO SCORE for megatower + safer fallback (
bf47fe4) - events — Sunken Arcology pinned in sidebar with inactive state (
ee75514) - map/chest — socket-late-bind retry + 15s polling backstop (
d077672) - chat — hoist hud-bottom z-index bump to global scope (PC + phone) (
b57033d) - barracks — clear _returnTo in tutorial early-return path (
af1d407) - chat — restore input+SEND on home + scope chat to base/worldMap (
60425fc) - events — welcome placeholder no longer reverts after 1s (
122b0bd) - barracks — DONE button honors _returnTo (restores extract→edit→back) (
4b17d33) - chaos-test regressions + basket allocation filter (
72cbe46) - polish base menus and preload assets (
369814b) - extraction — bankHaul credits non-delivery delta (defender-event resources) (
1d9de95) - extraction — sync event-interrupt overlay during same-scene patch (
6355f6b) - extraction — Ignore closes overlay + Continue resumes reveal animation (
4238a85) - extraction — defer haul celebration from bank → box-open + wire tasks refresh (
79745ed) - extraction — Ignore button fires safe-default immediately (
5b100c8) - chaos-team open-items polish pass (
7e89774) - base — clean cipher body class in exit(); doc PC↔phone coupling (
85f6f89) - base/cipher-2 — pin transform-origin so extended bottom keeps locked angle (
527a366) - base/cipher-2 — extend menu bottom another 45px (
34ca11b) - base/cipher-2 — extend menu bottom by 1 button height (PC + phone) (
7645225) - base/pc — remove .base-fullbleed overflow:hidden on desktop (
910c7dc) - base/pc — wallpaper full-viewport, hide bottom bar, fix chat-docked (
51997c6) - map — HOME button flush to bottom-right corner, only top-left rounded (
68984e2) - chat — shrink docked top-fade band 14 -> 6 px (
28f887b) - chat — mask-fade top of docked chat to hide line slivers (
bfc3162) - chat — persistent chat element across base + worldMap (
3f74bf3) - chat — docked chat clickable + empty-state placeholder (
d0a6850) - chat — minimize no longer wipes the docked preview (
d450079) - chat — SEND grey to match placeholder + shorten input placeholder (
17014a7) - chat — SEND button matches input height pixel-for-pixel (
9e82dda) - unblock barracks tutorial flow (
190a7a3) - enforce qa socket client coverage (
82c8403) - scope back-button override to Barracks→Armory only (
d42b35b) - server — allow dotfiles in / and /index.html sendFile (
dac5b47) - harden cold-load dist serving (
2449633) - cache static game assets (
3a35c97) - prevent resource drift on speedup completions (
af9b338) - debug — maxout grants 3 starter commanders, not 6 (
22309b9) - reveal — review-pass — kill near-miss fade on skip, re-query haul on landing (
f13d0e9) - reveal — pause-debt cycle bar, run-id abort, transient FX cleanup (
129e242) - reveal — seed cycle bar + last-cycle crates on modal open (
ba74e4e) - reveal — match cycle siteId against squad.id stripped of 'site:' prefix (
56fc237) - hunter — await cancelDefenderPendingEvent inside try/catch (playbook §B) (
14e134e) - post-cutover race-condition hardening (playbook §A) (
ec081d9) - extraction — IIFE-wrap shared/itemRegistry.js (classic-script const collision broke client boot) (
7d53bb3) - enforce realtime crawler visibility (
452cd87) - narrow crawler presence fanout (
120b61f) - bound tick burst work for load (
a0525f4) - add postgres npc alliance drift columns (
bed0fa0) - unblock alliance pr verification (
3b272b3) - P0/P1 PR review — fulfillment contract, nested-tx, FK cleanup, encoding, verifier drift (
df330d2) - type world map postgres filters (
11bd56e) - repair postgres chat schema drift (
5af5dfb) - keep player bases live in world cache (
4de00c2) - alliance — invalidate research-bonus cache on level change (
9e3f28f) - guard legacy market spends (
effd08f) - persist sparse explored map features (
c97abf0) - reduce scale read-path write pressure (
371cf8e) - avoid load-test alliance tag collisions (
fa8c566) - reduce crawler tick load for scale tests (
f16ef32) - stabilize redis socket setup (
9878853)
Performance
- prepare single-shard 1k ccu path (
bdfe21a) - batch training resource recompute (
8ea671f) - batch tick training completion (
3e32033) - make health checks db-free (
d331e17) - batch resource safety buffs (
7467639) - parallelize world map reads (
b5d72d5) - cache auth player existence (
3138726) - widen hot poll cache windows (
50732d5) - align world tile cache with map polling (
9df0c39) - cache shared world viewport tiles (
d0a66c5) - cache serialized state responses (
33d8479) - cache hot research bonus reads (
1d202a0) - cache alliance help board lists (
c187f85) - reuse world player alliance lookup (
5206b30) - cadence gate moving vision invalidation (
0195cf2) - jitter socket connect catchup (
66448dd) - gate socket connection logs (
fbfdec3) - cadence gate shield drain (
61d33fb) - cache socket siege subscribe state (
f8db0a7) - consolidate combat load reads (
f8e9a00) - align state cache ttl with load cadence (
f340a20) - compact extraction site read payloads (
fb06e0e) - cache hot scale read payloads (
4f165c4) - persist sparse event reveal memory (
19dbb09) - throttle moving presence rechecks (
0ba82f8) - avoid duplicate world player enrichment (
dc424f9) - skip redundant frontier vision circles (
def7de5) - bound resource safety bonuses (
a6139fd) - consolidate scale state reads (
ff25eab) - tune hot read cache windows (
9a88fef) - cache stable hot read routes (
c015055) - skip api response compression (
1ab854b) - compact world reveal payloads (
ec40baa)
Internal
- collapse tx.mode === 'postgres' branches (Phase 3) (#50) (
8e4c892) - drop SQLite, Postgres-only (Phase 2) + docker-compose fix (#48) (
77ad817) - convert events manager to async db (
8928b51) - convert megatower lifecycle to async db (
d8c20ff) - convert dossier card manager to async db (
15e22df) - convert mail and social rewards to async db (
20142a9) - adapt async siege observer helpers (
2a8f24e) - convert world map reads to async db (
627dba5) - convert tutorial cleanup to async db (
978a02b) - convert despawn ticks to async db (
f3f5e5e) - adapt cloud and amm helpers to db adapter (
561f581) - convert completion managers to async db (
476ae93) - make tick helpers adapter-safe (
d0011e1) - convert player deletion to async db (
7025c6c) - convert alliance manager to async db (
39132c8) - convert alliance help manager to async db (
2f667ef) - convert alliance event logger reads (
eb815b4) - convert debug routes to async db (
a8e6c2d) - convert amm routes to async db (
bc58b12) - convert tutorial route actions to async db (
50a4996) - convert speedup routes to async db (
bc64970) - convert commander routes to async db (
cd19238) - convert extraction payload reads to async db (
fda1c17) - convert raid routes to async db (
bc9d3ab) - convert siege routes to async db (
9579c53) - convert alliance route reads to async db (
d9f4454) - convert small event routes to async db (
a046e6d) - convert world route queries to async db (
a8f51e5) - convert analytics routes to async db (
69b2a47) - convert portal routes to async db (
0f9aea6) - convert shop routes to async db (
49c759d) - convert economy routes to async db (
0c31162) - convert troop routes to async db (
fac34cf) - convert chat manager to async db (
544ff8e) - convert state payload reads to async db (
41d928d) - make resource projection async (
67e2bc9) - convert auth and quest paths to async db (
379af9d) - add async db helpers for base routes (
e0b9125) - port all 18 KNOWN_FAILING verify scripts + 4 real prod bug fixes (#54) (
66692fd) - port 10 verify scripts from better-sqlite3 to pg.Client (#49) (
c96454f) - qa — event UX moved from header badge → reveal-area popup overlay (
7ed5646) - qa — address review findings on the SOCKETS + CLIENT sections (
3147517) - qa — add SOCKETS + CLIENT regression coverage to qa-test (
ad327d0) - stabilize world map qa under fog (
ba8a926) - gate load health on server metrics (
da05573) - isolate load setup metrics (
c94511a) - instrument postgres query latency (
1af84ff) - gate realistic load harness (
6c31cd1) - add postgres post-cutover gate (
2718c31) - stabilize staging postgres smoke (
abbead5) - match client token refresh in load harness (
954e997) - refresh load harness tokens before gameplay (
2f0d5e3) - make load harness map camera sticky (
6b60156) - add no-socket load diagnostic (
6980771) - bound load harness request hangs (
5fad066) - avoid setup player fanout (
e52b988) - isolate load health probes (
4143229) - add scale event-loop diagnostics (
5f8dd3e) - clear explored tiles in load cohort reset (
ed4273a) - add staging load cohort reset (
4c3ec92) - stagger realistic load harness starts (
086af58) - add staging redis smoke (
a9f08c0) - changelog for 2026-05-21 promote (
4700ef0) - fix stale refs after PR #53 lint rename + SQLite removal (#55) (
489abec) - GOD SAVE CHECKPOINT — lock mobile crawler screen at d88a601 (
6479c0e) - add staging qa load evidence (
6364dc0) - record postgres load blocker (
7fedf9a) - wrap 1k ccu readiness evidence (
71f12d9) - record market guard staging verification (
693918c) - record staging heartbeat verification (
67bbb69) - note staging heartbeat deploy blocker (
13e0a1b) - fix 1k report branch baseline (
c703639) - record 750 socket ladder stop (
f872464) - add 1k ccu readiness wrap report (
725f294) - record world viewport cache 750-client result (
6bf7e34) - refresh latest staging scale evidence (
2767334) - record serialized state cache 750-client result (
b9a8ace) - record http-only 750-client result (
ec61272) - record research cache 750-client result (
a323cc7) - record help board cache 750-client result (
e8bf9f2) - record moving vision 750-client result (
c2d5f82) - record 750 socket load result (
58fcedf) - record socket cache 750-client result (
353c244) - clarify tested scale commit (
eb358b6) - record compact payload 750-client result (
7229de7) - record hot-read cache 750-client result (
6e3f2ad) - record sparse reveal 750-client result (
801b0f4) - record 750-client scale blocker (
474a994) - record 500-client staging pass (
f89253f) - record isolated health load blocker (
c8d25b4) - record consolidated state load evidence (
9af0dfe) - record route cache load evidence (
2202169) - record 500 ccu staging blocker (
48e98fc) - alliance social cooperation audit + improvement plan (
943baa6) - compress audio assets (
e65ca96) - remove dead founder pack join hook (
2658e23) - remove redundant debug route requires (
c940e33) - remove dead amm statements (
4319ba4) - wire postgres runtime selector (
c9de3ba) - add postgres bootstrap gates (
2dbfcae)
Other
- docs+refactor: PG-only docs cleanup + verify-script renames (Phase 4+5) (#51) (
7f2b28a) - tune(menu-fx): walk back static + scanline cut from −30% to −10% (
1af0f2b) - tune(menu-fx): −30% static + scanline, kill wallpaper flicker (
a2b57e7) - wip: siv-version UI session work + merge staging (
5e1e7a0) - tune(events/mobile): side-by-side lore frame, smaller image, locate in view (
54488bb) - tweak(events): one-sentence HOW TO SCORE for Sunken Arcology (
14a635a) - tweak(events): red SUBMERGED badge + 'Currently submerged' label (
4300c79) - tune(map/mobile): haul-chest button -12% size on phone (55 -> 48) (
b22f57b) - tune(map): haul-chest button +25% size (44 -> 55 px) (
2b14f91) - art: darker orange menu icons + white per-hour resource rates (
141323a) - art(base/menu): tablet menu icons → glowing orange (all 4 ciphers) (
c1c4ee8) - tune(base/cipher-1/pc): shift banner -12px up, -6px left (
ef6b8cc) - tune(base/cipher-1/pc): rotate banner -4deg CCW, shift -5px up (
b063000) - tune(base/cipher-1/pc): rotate banner +15deg CW, shift +50px right (
569ddbe) - tune(base/cipher-1/pc): rotate banner +10deg CW, shift -20px up (
f66a674) - tune(base/cipher-1/pc): shift banner +60px down, +15px right (
c646776) - tune(base/cipher-1/pc): shift banner -60px left, rotate -12deg (
0fd87f0) - art(base): sync cipher PNGs, extend extraction banners to Cipher 1 (
f8d7a1f) - art(base): sync updated cipher tablet PNGs from main repo (
96c2c3c) - tune(base/pc): sand cluster scale 1.2 -> 1.1 (PC-only) (
b298a37) - tune(base/cipher-2/pc): shift extraction banners 5px right (
c2f5c40) - tune(base/cipher-2/pc): shift extraction banners another 34px left (
a108c1b) - tune(base/cipher-2/pc): shift extraction banners -30px left, +3% size, tie to cipher (
0f3e4b7) - art(base/cipher-2/pc): add extraction-tape banners overlay (
6884ed5) - lock(base/cipher-2): mobile menu layout + crop top at viewport y=20px (
488c285) - tune(base/cipher-2): +0.5deg clockwise menu rotation (5 -> 5.5) (
b5ae1e7) - tune(base/cipher-2): reduce menu side-view angle (rotateY -36 -> -33) (
6b7008c) - tune(base/cipher-2): nudge menu 1px left + 3px down (
d899aa2) - tune(base/cipher-2): nudge menu 2px left + 5px down (
8ea675e) - tune(base/cipher-2): nudge menu 4px left, 3px down, +2deg angle (
c737438) - tune(base/cipher-2): bump menu side-view angle (rotateY -28 -> -34, perspective 550 -> 500) (
6a26745) - tune(base/cipher-2): +3deg clockwise rotation on menu plane (
2b3cf0d) - tune(base/cipher-2): stronger right-side perspective tilt on menu plane (
5256a87) - art(base): swap back to Cipher 1; full Cipher 1/2 spec in comments (
463f8ad) - art(base): shrink Cipher 2 (angled) ~7.5%, label both cipher options (
bd8f0c8) - art(base): swap cipher tablet art to the angled variant (
11b9b2f) - checkpoint: Barracks redesign — known-good Squads + Reserves layout (
aa44f4b)
New & Changed
- tutorial onboarding overhaul + post-tutorial NPX polish (#56) (
6119305) - infra — pool-stats emitter + generalize tx-propagation lint (#53) (
7645f41) - infra — idle-tx watchdog + Phase 0 PG migration + accumulated staging work (#47) (
511dbcb) - base/tablet — icon-top + LV-under + centered labels, button size unchanged (
f199623) - theme — default to dark mode, keep toggle for light (
1333da5) - vault — audit trail + operator restore for real-money export/import (#43) (
2dbd092) - vault redesign (hero state + card grid + chip + import demote) + economy tune (#42) (
9391494) - add commander NFT card art (
8bdaf04) - polish commander mint landing flow (
517a7dd) - add landing commander mint page (
8fee0a9) - add Zealy commander NFT campaign flow (
c5c0192) - commander equipment economy + squad modal polish (#41) (
f65ae80) - events — Sunken Arcology lore frame + LOCATE button + rename (
cc0a2f7) - map — haul-chest button — pending banked-haul indicator (map-only) (
dec1078) - base — WELCOME EVENT button deep-links to welcome entry in events menu (
3fdbccc) - events — list menu — sidebar + detail (welcome event placeholder) (
1a1a0a4) - extraction — reveal pipeline polish + battle pause UX + foreign-tile hardening (#40) (
8ee2553) - extraction — defer resource credit from bank → /claim (unified box reveal) (
995c70d) - extraction — event-interrupt popup over reveal + lift first-cycle gate (
915f260) - extraction — chaos-team-hardened extraction loop (
64698f4) - base — enable 50/50 Cipher 1/2 roll on every home-screen entry (
39f3f03) - base/cipher-1 — extraction banner now shows on mobile too (
f60451f) - base/cipher-2 — extraction banner now shows on mobile too (
aab2bb6) - base/banners — split per-cipher banner placement, lock Cipher 2 (
a778495) - base/pc — +20% sand cluster size and count (
955c855) - base/cipher-2/pc — pin menu anchor to phone-equivalent on PC (
1c364b1) - base/cipher-2 — -10deg CCW menu rotation + right-side perspective tilt (
baa544c) - base — 50/50 Cipher 1 / Cipher 2 variant system on home entry (
5c4defc) - base — PC home screen mirrors phone layout via transform scale (
b3a60c0) - map — HOME button (was CRAWLER) with proper dark chrome (
8cda610) - chat — docked = same element as opened, cropped to 2 lines (
b526839) - chat — unify docked + opened at 15.2 px (+10% on opened) (
c95e1dd) - chat — docked -30%, opened +20%, opened +10% wider (
df20048) - chat — extend opened-chat bg to bottom, shrink docked, unify SEND (
93b18b4) - base — lock approved mobile tablet-menu geometry (
d88a601) - base — wind sand clusters + pointer-drag tablet scroll + chat clearance (
246cd35) - base — add soft sandy wind drift overlay (
31de021) - crawler screen UI overhaul with cipher tablet menu (
1468816) - extract+attack unified modal, cross-cmd troop allocation, clamp cue, more (
8d6dc49) - mobile polish — Barracks scaling + map HUD + chat (
f48711a) - Barracks UI polish — picker, train modal, drag-drop, layout (
44a90ea) - bundle cold-load client assets (
f074ab4) - audio — replace extraction reveal synth with RPG Interface Essentials assets (
d7e8163) - extraction — cycle-pause primitive + event-as-badge UX + reveal polish (
ab8faca) - bank-reveal — legendary near-miss fade (
77e7d60) - reveal — cycle flight + haul ticker + landing pulse (
e7d96cd) - reveal — particles, per-crate shimmer, haul rarity polish (
ddee061) - reveal — soak-phase escalation — panel wash, screen overlay, LEGENDARY banner (
2ac62ed) - reveal — phase-fraction pacing + real loot icons (match prototype) (
de0e8f3) - reveal — squad-modal extracting layout — wide LEFT reveal column (
c486caf) - debug — TEST ACCOUNT button + /api/debug/skip-tutorial endpoint (
0b6e50f) - extraction — reveal audio + boot-time recall sweep (Phase 2e/f) (
603d207) - extraction — value-only haul + cycle reveal area (Phase 2d) (
5ca5032) - extraction — delivery boxes + bank reveal modal (Phase 2a/b/c) (
777cc24) - extraction — per-cycle item registry + structured items[] emit (Phase 1) (
ae71883) - add shard admission cap (
dcfd880) - modernize chat baseline (
09d9c2e) - add clean-start postgres cutover (
2117658) - alliance — NPC starter alliance — Phase 2 (LLM persona) + Phase 3 (Citadel march) (
b178fee) - add tick worker redis heartbeat (
e29cf05) - map — animated packing-hourglass overlay above extraction sites (
b28b413) - hud — scale top + bottom bars 20%, tighten chat alignment, fix wheel reopen on deploy (
d9781dc) - add realistic scale readiness harness (
edfec3d) - alliance — redesign Requests panel — single panel + tile-picker modal (
cf6f937) - add redis replica readiness (
da19ce5) - alliance — broadcast notable history events to chat + per-member contributions panel (
e59243c)
Fixes
- security — pre-promote audit findings (#57) (
4e6c051) - shutdown — arm force-exit timer first, halt tick loop between ops (#52) (
e5e66f6) - chat/pc — bump message font 11→12 px (
81bdae0) - chat/pc — drop viewport-scaled font on message rows (
9a28b62) - shop — un-gate VAULT tab — remove "COMING SOON" + disabled state (
098272a) - barracks — preserve original requested count on partial-clamp persist (
053a981) - prefer versioned NFT commander art (
cc7dba4) - polish vault export UI (
09f6f9e) - restore commander vault export (
bf2fb52) - remove in-game Zealy mint panel (
6258cac) - harden campaign NFT burn import (
1e9d1b4) - show and grant campaign import imprints (
b545350) - stop megatower placeholder from bouncing to Welcome (
e012921) - events — human-readable HOW TO SCORE for megatower + safer fallback (
bf47fe4) - events — Sunken Arcology pinned in sidebar with inactive state (
ee75514) - map/chest — socket-late-bind retry + 15s polling backstop (
d077672) - chat — hoist hud-bottom z-index bump to global scope (PC + phone) (
b57033d) - barracks — clear _returnTo in tutorial early-return path (
af1d407) - chat — restore input+SEND on home + scope chat to base/worldMap (
60425fc) - events — welcome placeholder no longer reverts after 1s (
122b0bd) - barracks — DONE button honors _returnTo (restores extract→edit→back) (
4b17d33) - chaos-test regressions + basket allocation filter (
72cbe46) - polish base menus and preload assets (
369814b) - extraction — bankHaul credits non-delivery delta (defender-event resources) (
1d9de95) - extraction — sync event-interrupt overlay during same-scene patch (
6355f6b) - extraction — Ignore closes overlay + Continue resumes reveal animation (
4238a85) - extraction — defer haul celebration from bank → box-open + wire tasks refresh (
79745ed) - extraction — Ignore button fires safe-default immediately (
5b100c8) - chaos-team open-items polish pass (
7e89774) - base — clean cipher body class in exit(); doc PC↔phone coupling (
85f6f89) - base/cipher-2 — pin transform-origin so extended bottom keeps locked angle (
527a366) - base/cipher-2 — extend menu bottom another 45px (
34ca11b) - base/cipher-2 — extend menu bottom by 1 button height (PC + phone) (
7645225) - base/pc — remove .base-fullbleed overflow:hidden on desktop (
910c7dc) - base/pc — wallpaper full-viewport, hide bottom bar, fix chat-docked (
51997c6) - map — HOME button flush to bottom-right corner, only top-left rounded (
68984e2) - chat — shrink docked top-fade band 14 -> 6 px (
28f887b) - chat — mask-fade top of docked chat to hide line slivers (
bfc3162) - chat — persistent chat element across base + worldMap (
3f74bf3) - chat — docked chat clickable + empty-state placeholder (
d0a6850) - chat — minimize no longer wipes the docked preview (
d450079) - chat — SEND grey to match placeholder + shorten input placeholder (
17014a7) - chat — SEND button matches input height pixel-for-pixel (
9e82dda) - unblock barracks tutorial flow (
190a7a3) - enforce qa socket client coverage (
82c8403) - scope back-button override to Barracks→Armory only (
d42b35b) - server — allow dotfiles in / and /index.html sendFile (
dac5b47) - harden cold-load dist serving (
2449633) - cache static game assets (
3a35c97) - prevent resource drift on speedup completions (
af9b338) - debug — maxout grants 3 starter commanders, not 6 (
22309b9) - reveal — review-pass — kill near-miss fade on skip, re-query haul on landing (
f13d0e9) - reveal — pause-debt cycle bar, run-id abort, transient FX cleanup (
129e242) - reveal — seed cycle bar + last-cycle crates on modal open (
ba74e4e) - reveal — match cycle siteId against squad.id stripped of 'site:' prefix (
56fc237) - hunter — await cancelDefenderPendingEvent inside try/catch (playbook §B) (
14e134e) - post-cutover race-condition hardening (playbook §A) (
ec081d9) - extraction — IIFE-wrap shared/itemRegistry.js (classic-script const collision broke client boot) (
7d53bb3) - enforce realtime crawler visibility (
452cd87) - narrow crawler presence fanout (
120b61f) - bound tick burst work for load (
a0525f4) - add postgres npc alliance drift columns (
bed0fa0) - unblock alliance pr verification (
3b272b3) - P0/P1 PR review — fulfillment contract, nested-tx, FK cleanup, encoding, verifier drift (
df330d2) - type world map postgres filters (
11bd56e) - repair postgres chat schema drift (
5af5dfb) - keep player bases live in world cache (
4de00c2) - alliance — invalidate research-bonus cache on level change (
9e3f28f) - guard legacy market spends (
effd08f) - persist sparse explored map features (
c97abf0) - reduce scale read-path write pressure (
371cf8e) - avoid load-test alliance tag collisions (
fa8c566) - reduce crawler tick load for scale tests (
f16ef32) - stabilize redis socket setup (
9878853)
Performance
- prepare single-shard 1k ccu path (
bdfe21a) - batch training resource recompute (
8ea671f) - batch tick training completion (
3e32033) - make health checks db-free (
d331e17) - batch resource safety buffs (
7467639) - parallelize world map reads (
b5d72d5) - cache auth player existence (
3138726) - widen hot poll cache windows (
50732d5) - align world tile cache with map polling (
9df0c39) - cache shared world viewport tiles (
d0a66c5) - cache serialized state responses (
33d8479) - cache hot research bonus reads (
1d202a0) - cache alliance help board lists (
c187f85) - reuse world player alliance lookup (
5206b30) - cadence gate moving vision invalidation (
0195cf2) - jitter socket connect catchup (
66448dd) - gate socket connection logs (
fbfdec3) - cadence gate shield drain (
61d33fb) - cache socket siege subscribe state (
f8db0a7) - consolidate combat load reads (
f8e9a00) - align state cache ttl with load cadence (
f340a20) - compact extraction site read payloads (
fb06e0e) - cache hot scale read payloads (
4f165c4) - persist sparse event reveal memory (
19dbb09) - throttle moving presence rechecks (
0ba82f8) - avoid duplicate world player enrichment (
dc424f9) - skip redundant frontier vision circles (
def7de5) - bound resource safety bonuses (
a6139fd) - consolidate scale state reads (
ff25eab) - tune hot read cache windows (
9a88fef) - cache stable hot read routes (
c015055) - skip api response compression (
1ab854b) - compact world reveal payloads (
ec40baa)
Internal
- collapse tx.mode === 'postgres' branches (Phase 3) (#50) (
8e4c892) - drop SQLite, Postgres-only (Phase 2) + docker-compose fix (#48) (
77ad817) - convert events manager to async db (
8928b51) - convert megatower lifecycle to async db (
d8c20ff) - convert dossier card manager to async db (
15e22df) - convert mail and social rewards to async db (
20142a9) - adapt async siege observer helpers (
2a8f24e) - convert world map reads to async db (
627dba5) - convert tutorial cleanup to async db (
978a02b) - convert despawn ticks to async db (
f3f5e5e) - adapt cloud and amm helpers to db adapter (
561f581) - convert completion managers to async db (
476ae93) - make tick helpers adapter-safe (
d0011e1) - convert player deletion to async db (
7025c6c) - convert alliance manager to async db (
39132c8) - convert alliance help manager to async db (
2f667ef) - convert alliance event logger reads (
eb815b4) - convert debug routes to async db (
a8e6c2d) - convert amm routes to async db (
bc58b12) - convert tutorial route actions to async db (
50a4996) - convert speedup routes to async db (
bc64970) - convert commander routes to async db (
cd19238) - convert extraction payload reads to async db (
fda1c17) - convert raid routes to async db (
bc9d3ab) - convert siege routes to async db (
9579c53) - convert alliance route reads to async db (
d9f4454) - convert small event routes to async db (
a046e6d) - convert world route queries to async db (
a8f51e5) - convert analytics routes to async db (
69b2a47) - convert portal routes to async db (
0f9aea6) - convert shop routes to async db (
49c759d) - convert economy routes to async db (
0c31162) - convert troop routes to async db (
fac34cf) - convert chat manager to async db (
544ff8e) - convert state payload reads to async db (
41d928d) - make resource projection async (
67e2bc9) - convert auth and quest paths to async db (
379af9d) - add async db helpers for base routes (
e0b9125) - port all 18 KNOWN_FAILING verify scripts + 4 real prod bug fixes (#54) (
66692fd) - port 10 verify scripts from better-sqlite3 to pg.Client (#49) (
c96454f) - qa — event UX moved from header badge → reveal-area popup overlay (
7ed5646) - qa — address review findings on the SOCKETS + CLIENT sections (
3147517) - qa — add SOCKETS + CLIENT regression coverage to qa-test (
ad327d0) - stabilize world map qa under fog (
ba8a926) - gate load health on server metrics (
da05573) - isolate load setup metrics (
c94511a) - instrument postgres query latency (
1af84ff) - gate realistic load harness (
6c31cd1) - add postgres post-cutover gate (
2718c31) - stabilize staging postgres smoke (
abbead5) - match client token refresh in load harness (
954e997) - refresh load harness tokens before gameplay (
2f0d5e3) - make load harness map camera sticky (
6b60156) - add no-socket load diagnostic (
6980771) - bound load harness request hangs (
5fad066) - avoid setup player fanout (
e52b988) - isolate load health probes (
4143229) - add scale event-loop diagnostics (
5f8dd3e) - clear explored tiles in load cohort reset (
ed4273a) - add staging load cohort reset (
4c3ec92) - stagger realistic load harness starts (
086af58) - add staging redis smoke (
a9f08c0) - fix stale refs after PR #53 lint rename + SQLite removal (#55) (
489abec) - GOD SAVE CHECKPOINT — lock mobile crawler screen at d88a601 (
6479c0e) - add staging qa load evidence (
6364dc0) - record postgres load blocker (
7fedf9a) - wrap 1k ccu readiness evidence (
71f12d9) - record market guard staging verification (
693918c) - record staging heartbeat verification (
67bbb69) - note staging heartbeat deploy blocker (
13e0a1b) - fix 1k report branch baseline (
c703639) - record 750 socket ladder stop (
f872464) - add 1k ccu readiness wrap report (
725f294) - record world viewport cache 750-client result (
6bf7e34) - refresh latest staging scale evidence (
2767334) - record serialized state cache 750-client result (
b9a8ace) - record http-only 750-client result (
ec61272) - record research cache 750-client result (
a323cc7) - record help board cache 750-client result (
e8bf9f2) - record moving vision 750-client result (
c2d5f82) - record 750 socket load result (
58fcedf) - record socket cache 750-client result (
353c244) - clarify tested scale commit (
eb358b6) - record compact payload 750-client result (
7229de7) - record hot-read cache 750-client result (
6e3f2ad) - record sparse reveal 750-client result (
801b0f4) - record 750-client scale blocker (
474a994) - record 500-client staging pass (
f89253f) - record isolated health load blocker (
c8d25b4) - record consolidated state load evidence (
9af0dfe) - record route cache load evidence (
2202169) - record 500 ccu staging blocker (
48e98fc) - alliance social cooperation audit + improvement plan (
943baa6) - compress audio assets (
e65ca96) - remove dead founder pack join hook (
2658e23) - remove redundant debug route requires (
c940e33) - remove dead amm statements (
4319ba4) - wire postgres runtime selector (
c9de3ba) - add postgres bootstrap gates (
2dbfcae)
Other
- docs+refactor: PG-only docs cleanup + verify-script renames (Phase 4+5) (#51) (
7f2b28a) - tune(menu-fx): walk back static + scanline cut from −30% to −10% (
1af0f2b) - tune(menu-fx): −30% static + scanline, kill wallpaper flicker (
a2b57e7) - wip: siv-version UI session work + merge staging (
5e1e7a0) - tune(events/mobile): side-by-side lore frame, smaller image, locate in view (
54488bb) - tweak(events): one-sentence HOW TO SCORE for Sunken Arcology (
14a635a) - tweak(events): red SUBMERGED badge + 'Currently submerged' label (
4300c79) - tune(map/mobile): haul-chest button -12% size on phone (55 -> 48) (
b22f57b) - tune(map): haul-chest button +25% size (44 -> 55 px) (
2b14f91) - art: darker orange menu icons + white per-hour resource rates (
141323a) - art(base/menu): tablet menu icons → glowing orange (all 4 ciphers) (
c1c4ee8) - tune(base/cipher-1/pc): shift banner -12px up, -6px left (
ef6b8cc) - tune(base/cipher-1/pc): rotate banner -4deg CCW, shift -5px up (
b063000) - tune(base/cipher-1/pc): rotate banner +15deg CW, shift +50px right (
569ddbe) - tune(base/cipher-1/pc): rotate banner +10deg CW, shift -20px up (
f66a674) - tune(base/cipher-1/pc): shift banner +60px down, +15px right (
c646776) - tune(base/cipher-1/pc): shift banner -60px left, rotate -12deg (
0fd87f0) - art(base): sync cipher PNGs, extend extraction banners to Cipher 1 (
f8d7a1f) - art(base): sync updated cipher tablet PNGs from main repo (
96c2c3c) - tune(base/pc): sand cluster scale 1.2 -> 1.1 (PC-only) (
b298a37) - tune(base/cipher-2/pc): shift extraction banners 5px right (
c2f5c40) - tune(base/cipher-2/pc): shift extraction banners another 34px left (
a108c1b) - tune(base/cipher-2/pc): shift extraction banners -30px left, +3% size, tie to cipher (
0f3e4b7) - art(base/cipher-2/pc): add extraction-tape banners overlay (
6884ed5) - lock(base/cipher-2): mobile menu layout + crop top at viewport y=20px (
488c285) - tune(base/cipher-2): +0.5deg clockwise menu rotation (5 -> 5.5) (
b5ae1e7) - tune(base/cipher-2): reduce menu side-view angle (rotateY -36 -> -33) (
6b7008c) - tune(base/cipher-2): nudge menu 1px left + 3px down (
d899aa2) - tune(base/cipher-2): nudge menu 2px left + 5px down (
8ea675e) - tune(base/cipher-2): nudge menu 4px left, 3px down, +2deg angle (
c737438) - tune(base/cipher-2): bump menu side-view angle (rotateY -28 -> -34, perspective 550 -> 500) (
6a26745) - tune(base/cipher-2): +3deg clockwise rotation on menu plane (
2b3cf0d) - tune(base/cipher-2): stronger right-side perspective tilt on menu plane (
5256a87) - art(base): swap back to Cipher 1; full Cipher 1/2 spec in comments (
463f8ad) - art(base): shrink Cipher 2 (angled) ~7.5%, label both cipher options (
bd8f0c8) - art(base): swap cipher tablet art to the angled variant (
11b9b2f) - checkpoint: Barracks redesign — known-good Squads + Reserves layout (
aa44f4b)
New & Changed
- skills — staging-tester for one-command logins to Railway staging (
003292e) - tooling — changelog generator for staging → master promotes (
ba24aa6) - db — file-based migration system for data backfills (
7c0369b) - map — patch 15 — minimalist atmospheric clouds for citadel + frontier (restored) (
b517879)
Fixes
- skills — staging-tester username was over the 20-char server cap (
c023281) - deploy — include megatower-tune scripts so staging boots (
915b432) - roll back to 5863231 (post battle-replay-decoder-fixes) (restored) (
4bb15ea)
Performance
- map — patch 16 — drop friendly-zone weather (restored) (
4b279bc) - map — micro-wins — hoist matrix, cache pattern + mask gradients, LRU img cache (restored) (
ad89b4f)
Internal
- stabilize verify-extraction-spawns by pooling N=1000 trials (
bf94cc3) - update verify-event-resource-gates to $ato copy + un-skip in CI (
2470fb1) - fix server-dep partition + skip 2 known-failing verify scripts (
cf1e784) - add PR + push checks (verify-* + qa-test against running server) (
7d07ae5) - add monitoring & alerting runbook (
eca3d24) - switch to staging-first branching workflow (
c331724) - add staging environment runbook + Railway setup guide (
7b08677)