herryyun
7c25c89992
实现账号绑定、持久登录与跨设备对局恢复
CI / test (ubuntu-latest, node 22) (push) Failing after 33m10s
CI / test (ubuntu-latest, node 24) (push) Failing after 34m41s
CI / tooling (lint, imports, typecheck) (push) Failing after 36m11s
CI / test (windows-latest, node 22) (push) Canceled after 0s
CI / test (windows-latest, node 24) (push) Canceled after 0s
2026-10-14 23:22:50 +08:00
sganggs
205f3bb7f7
0.2.6: the device slabs stay drawn on an official scene (GitHub #569 ) — 射击台, 特制水上平台 and 封印的地面 lived only in the procedural board's bucket that a scene replaces, so 战场#03's raised tiles by the blue gate were flat and 战场#05(上半)'s water platforms read as open water; buildBoard repeats them into buckets.raised / raisedDecal with sides reaching under the scene's ground and setStage draws just those on a scene (the 'h' high ground is the scenes' own and is not repeated); DESIGN §31.11, client §15; golden: unchanged
2026-10-13 17:45:04 +08:00
sganggs
566f3a7cd6
0.2.6: version 0.2.6 — package.json / package-lock.json / APP_VERSION (DEV_BUILD turns false), README release form and current-version line, CHANGELOG 0.2.6 — 2026-10-13, DESIGN versions line and index, §31 header
2026-10-13 16:17:03 +08:00
sganggs
347343d739
0.2.6-dev: 魂灵之影 only on a board of its field ( #557 , PR #558 by IceCodeNew adapted) — shadowTile requires Battle.onFieldBoard: a teammate's half counts, a boss field's hand / 临时整备区 rows and a solo boss field's empty half do not, no summon when nothing fits (the PR cut the bench rows by number, which left an empty half legal); the PR's test plus a solo / pair case; DESIGN §3, §31.10, SIM; golden: unchanged
2026-10-13 16:04:32 +08:00
sganggs
a1f0d1bb6e
0.2.6-dev: merge claude/r37-impostor — GitHub #542 : impostor boxes from each skeleton's measured clip bounds (idle core, played clips within limits, the rest drawn directly while they play), every slot drawn inside its own scissor, frozen models posed at their clip's first frame, PIXI's pooled batch buffers (no Apple GPU stall from the per-slot flushes); golden: unchanged
...
# Conflicts:
# CHANGELOG.md
# docs/design/client.md
# docs/history/0.2.6.md
2026-10-13 06:30:53 +08:00
sganggs
47004a3651
0.2.6-dev: impostor review follow-ups ( #542 ) — a skeleton stays in the clip-bounds queue only while an actor uses it (the last one destroyed drops its pending clips, the clip in progress and its scratch skeleton; a later actor queues them again), a clip whose sampling throws is recorded as not measurable and drawn directly while it plays instead of counting as empty, and a frozen model's first update counts as posed only when it succeeded; DESIGN §31.6 updated; golden: unchanged
2026-10-13 06:29:20 +08:00
sganggs
0ceb6641ec
0.2.6-dev: PR #416 by Cromemadnd — every landing of a round start is heard: prep landing sounds take a voice of their own pool (LAND_VOICES 3, the oldest fading out over 30 ms) instead of being dropped by the battle limiter, which let only the first two of a chain sound since 192 of 210 operators share the 1.41 s b_char_set (Grok's review); per-piece cooldown, SFX volume and mute kept, the battle sounds' limiting unchanged, the generic files fetched ahead when a match view comes up; DESIGN §31.8; golden: unchanged
2026-10-13 05:46:29 +08:00
sganggs
4c2fe9431d
0.2.6-dev: DESIGN §31.6 for the impostor box without the setup pose (slots 1.26× the old area on the roster, the DPR-2 crowd numbers, the batch-buffer setting; the open item resolved), docs/design/client.md, CHANGELOG 0.2.6-dev ( #542 ); golden: unchanged
2026-10-13 05:26:05 +08:00
sganggs
a3da5c2775
0.2.6-dev: DESIGN §31.8 says how PR #416 by Cromemadnd sounded twice — its wheel-confirm hook restarted a Start that had run 0.3 s (a purchase then a move) and its round-start sequence forced every piece; the state that follows a wheel drop never landed there
2026-10-13 04:47:58 +08:00
sganggs
461a7747e1
0.2.6-dev: port PR #552 by IceCodeNew — an optional 「弹药数量」 setting (default off: the official HUD has no such number, the maintainer's decision of 2026-10-13) shows an ammo skill's rounds left / magazine under its bar, from the exact b.snap ammo counts; sanitised with the other settings, applied by the field view live, all four language packs, the diagnostics line; the simplified board has no ammo bar; DESIGN §31.9; golden: unchanged
2026-10-13 04:43:39 +08:00
sganggs
231da0efbc
0.2.6-dev: port PR #416 by Cromemadnd — at every round start the own board's pieces replay their Start clip and landing sound one after another in deployment order (the maintainer's confirmation from official play, 2026-10-13), and a purchase or a move onto / across the board plays them too ([ASSUMED], the PR author's account); one sound per landing, idle prep pieces only, the round marked once the view took the sequence, own board only, timers cleared when prep mode ends and on destroy; DESIGN §31.8; golden: unchanged
2026-10-13 04:36:56 +08:00
sganggs
47b9e5b63e
0.2.6-dev: the official battlefield scenes use the extracted light at full strength — SCENE_LIGHT direct and indirect 1 instead of 0.2.5's eye-tuned 0.8 / 0.4 (GitHub #549 , the light half of PR #554 by xcdoge; its emissive change to the metal board is not taken); DESIGN §31.7; golden: unchanged
2026-10-13 03:48:47 +08:00
sganggs
d7cb8770da
0.2.6-dev: DESIGN §31.6 open item worded plainly (the setup pose could be dropped from the impostor box if a model frozen before its first update were posed at its clip's first frame) ( #542 ); golden: unchanged
2026-10-13 03:44:06 +08:00
sganggs
f5b3908804
0.2.6-dev: DESIGN §31.6 adds the slot cost at DPR 2 (the 120-unit crowd keeps 39 of its units in the atlas at 1280 × 720 instead of 119) and, as open, the share of the setup-pose floor (1.16 × instead of 2 × without it) ( #542 ); golden: unchanged
2026-10-13 03:43:49 +08:00
sganggs
0b88a0f515
0.2.6-dev: DESIGN §31.6 impostor bounds and slot clearing ( #542 : seen, cause, now, cost, [ASSUMED], tests), docs/design/client.md describes the impostor box and slot clipping, CHANGELOG 0.2.6-dev 界面 credits @ImPQlc; golden: unchanged
2026-10-13 03:30:48 +08:00
sganggs
975c79da70
0.2.6-dev: PR #546 's design note moves from the released 0.2.5 chapter to DESIGN §31.5 (docs/history/0.2.6.md, now host bandwidth and community follow-up); CHANGELOG 0.2.6-dev credits PRs #546 and #547 ; golden: unchanged
2026-10-13 01:44:20 +08:00
sganggs
77865e6bc2
0.2.6-dev: merge PR #546 by Xinglan233 — the strategy draft enables 跳过 only while another unpicked player remains (finished players stay in the shown order but are not skip targets)
2026-10-13 01:43:55 +08:00
星闌
c919794724
fix: 禁用最后一个选策略的玩家的跳过按钮
2026-10-12 19:38:19 +08:00
sganggs
79bb26b317
0.2.6-dev: the maintainer's decisions of 2026-10-12 — the 玩法说明 pages' WebP copies are lossy at quality 90 (25.6 MB of PNG → 4.2 MB; lossless stays a GUIDE_WEBP_MODE away) and /healthz?traffic=1 answers the counters to a loopback or private-network client only (a public visitor, also one a local tunnel or proxy forwards, gets the plain report; TRUST_PROXY applies as for the WebSocket limits); golden: unchanged
2026-10-12 19:09:54 +08:00
sganggs
3d5d6b380d
0.2.6-dev: merge claude/bw-l01 — host bandwidth layers 0 and 1 (no BGM download while the music is silent, WebSocket permessage-deflate, lossless WebP 玩法说明 pages, traffic counters, content-hashed asset URLs with immutable caching, brotli q5) on top of the 0.2.5 release; its note becomes DESIGN §31 in docs/history/0.2.6.md, CHANGELOG 0.2.6-dev, version 0.2.6-dev; golden: unchanged
2026-10-12 18:28:50 +08:00
sganggs
88d4b2544b
0.2.5: version 0.2.5 — package.json / package-lock.json / APP_VERSION (DEV_BUILD turns false), README release form and package sizes (the full bundle now carries the battlefield scenes), CHANGELOG 0.2.5 — 2026-10-12 in the usual sections with credits, DESIGN versions line, §30 header
2026-10-12 18:20:53 +08:00
sganggs
3bb7fef74c
0.2.5-dev: official scenes merge chunks that share a material / lightmap into one mesh at load (draw calls on the 3D board back within budget, e.g. act2autochess_m02 prep 22 → 13); the boss-round real-server test reads the actual random pairing instead of assuming the host on the left half; golden: unchanged
2026-10-12 17:48:31 +08:00
sganggs
a119793af6
0.2.6-dev: the WebSocket compression figures in the code and docs are the server counters' measurement (173 KB of frames → 60 KB on the wire)
2026-10-12 16:53:43 +08:00
sganggs
409fec90d5
0.2.6-dev: the browser suites load the served manifests' content-hashed URLs (e2e servers wait for the asset index) and check Spine, audio and art through them; the history note of host bandwidth layers 0 and 1 for the next version; golden: unchanged
2026-10-12 16:52:40 +08:00
sganggs
e2bc005c88
0.2.5-dev: docs — §30 sections renumbered in order after the merges and every reference pointed at its topic; the 0.2.5 CHANGELOG section regrouped under the usual headings (no change to code behaviour)
2026-10-12 16:02:41 +08:00
sganggs
3dd2213e47
0.2.5-dev: merge claude/036-sim
...
# Conflicts:
# CHANGELOG.md
# docs/history/0.2.5.md
# test/golden/matches.json
2026-10-12 15:50:42 +08:00
sganggs
a451ddcf6b
0.2.5-dev: 耶拉 S2 (both forms) and 荒芜拉普兰德 S1 keep the operator's own hit next to the drone hit — only drone-only skills skip it (review fix of the funnel port); golden: more funnel scenarios move, attributed in docs/history/0.2.5.md
2026-10-12 15:50:41 +08:00
sganggs
9b37a68fcf
0.2.5-dev: 萨卡兹枯朽战士 (and every enemy sharing its death fog) leaves no 污秽侵蚀 when it dies silenced — the owner's official-play recall, against the PRTS / in-game wording ( #470 ); the 调度中心 5 / 6 promotion reward includes 自选 operators of the newly reached tier ( #515 , after research; the owner's decision); golden: unchanged
2026-10-12 15:24:07 +08:00
sganggs
a8ff5e7c1d
0.2.5-dev: merge claude/036-touch
...
# Conflicts:
# CHANGELOG.md
# docs/history/0.2.5.md
2026-10-12 15:00:10 +08:00
sganggs
bb88031256
0.2.5-dev: merge claude/036-scene
...
# Conflicts:
# CHANGELOG.md
# docs/history/0.2.5.md
2026-10-12 15:00:10 +08:00
sganggs
537b1ec517
0.2.5-dev: merge claude/036-ui2
...
# Conflicts:
# docs/history/0.2.5.md
2026-10-12 14:59:34 +08:00
sganggs
d482fbb8ba
0.2.5-dev: official battlefield scenes on the 3D board — a local fetch / extract step for the season scene bundles, per-field scene rendering with the metal board as fallback, the full bundle can include the extracted scenes and setup can fetch them (--scenes); nothing official is stored in the repository (PR #533 by @andrew05060414, ported; the owner's decision of 2026-10-12); golden: unchanged
2026-10-12 14:59:20 +08:00
sganggs
a3e8460bb0
0.2.5-dev: an optional 「官方伤害数字」 setting (default off) shows only the numbers the official game shows per the PRTS red-number rule ( #412 , the owner's decision of 2026-10-12); a small link to the project's GitHub repository on the title page ( #543 ); golden: unchanged
2026-10-12 14:59:20 +08:00
sganggs
37e0fffb34
0.2.5-dev: the 外勤医疗 (Touch) reserve medic takes the initial aggro order of PR #523 and its detail opens in the preparation phase (PR #523 by @YinqiMargatroid, ported; the owner's decision of 2026-10-12); golden: one more scenario moves (named in docs/history/0.2.5.md)
2026-10-12 14:59:19 +08:00
sganggs
e0f3771821
0.2.5-dev: 驭械术师 normal attacks keep the operator's own hit plus one drone hit, the drone multiplier and per-target map reset on redeploy, 洛洛 S2 keeps its lock until a kill or the skill ends (PRs #537 / #536 / #535 by @Xinglan233, ported); hit tiles use the official round-half-to-even with an edge inset (PR #520 by @Cloudnyco, ported); bots softly avoid living teammates' opening factions until they are eliminated (PR #518 by @IceCodeNew, ported with changes); golden: 43 more scenarios move, each named in docs/history/0.2.5.md
2026-10-12 14:45:01 +08:00
sganggs
52b70434d0
0.2.5-dev: a restore-defaults loadout sync is never overwritten by an older in-flight sync (PR #540 by @Xinglan233, ported); importing a loadout with ops is refused before writing when the DIY data is missing (PR #538 by @Xinglan233, ported); the player package's package.json keeps only scripts whose files ship ( #531 ) and its docs link unshipped files to the release tag on GitHub ( #530 ); golden: unchanged
2026-10-12 14:45:01 +08:00
sganggs
221e6b8dd2
0.2.5-dev: community round 30 and follow-ups
...
- Stock: fixed trait gifts (缪尔赛思 / 变形者集群 变形同构体, 耶拉 不融冰, 蜜蜡 / 卡涅利安 迅捷作战粮, 诗怀雅 盟约之币) still occupy stock but are granted past the cap; an operator card already shown in the shop or a reward can be taken after the pool runs out and overdraws (GitHub #498 , the owner's decision); item buys and item rewards keep the stock check. 洛洛 / 焰尾 sub-pools use the measured weights (PR #497 by @2321Robin; the occupancy idea of PR #496 by @2321Robin re-implemented differently).
- Boss pairs are drawn at random once per match and fixed to battle start; the Hidden Core reuses them; a leaver does not split a full pair (the owner's decision).
- 阿戈尔 in 联防 no longer re-applies the opening devour HP loss or a false revive; Touch's team medic stays for the match after its holder leaves (owner-approved, official lifetime unverified).
- Auto-skill ranges: 司霆惊蛰 S2, 斩业星熊 S3 against air, 予愿安洁莉娜 S3; 自在's post-rebirth invulnerability is also untargetable (#510 ); Horn / Clementia / catapult / 忍冬 first hit (PR #502 by @Xinglan233); 不融冰 / tear gas trigger on real damage.
- Bond layer-up sound in round start / draft / prep / battle (#482 ): one channel, a new cue replaces the old, no extra cooldown; a prep update that adds layers and activates a bond plays one cue.
- Client: multi-swing fix (#506 ), refresh single-flight (PR #507 by @robll-v1), LP tower keeps the settled value with a −N tick (PR #504 by @robll-v1), export with only 潜能 / 练度 changes (PR #503 by @Xinglan233), spectator rosters list DIY members (PR #505 by @Xinglan233), banned members beside bond tooltips (PR #494 by @YuriRestia), recovery action above the away overlay (PR #511 by @RainoutOvO), the /dev/sim-check.html consistency page (PR #492 by @Cloudnyco), Korean (PR #490 by @D-Roote) and English Victoria wording (PR #499 by @YuriRestia).
- golden: 45 of 287 scenarios move against 0.2.4 (roster 17, bonds 3, fields 6, matches 17, standins 2), each attributed in docs/history/0.2.5.md §30.9 / §30.16.
2026-10-12 14:07:08 +08:00
sganggs
bc50cac01f
0.2.4: version 0.2.4 — package.json / package-lock.json / APP_VERSION (DEV_BUILD turns false), README release form, CHANGELOG 0.2.4 — 2026-10-11 in the usual sections with credits, DESIGN versions line
2026-10-11 02:04:21 +08:00
sganggs
6bfc08270c
0.2.4-dev: round-29 community fixes and the official shared card pool
...
- Shared card pool and item stock as in the official mode (the owner's request, from the 路标档案馆 video and public notes): solo low-tier exceptions, co-op operators x2, shared item stock with special-item exceptions, normal / advanced occupancy 1 / 2, re-check on buy, 机变 exhaustion, release on consume / destroy / elimination; 整备 never exceeds stock; invariant held <= cap.
- 突袭: one taunt-first reselect right after a revive (the owner's rule); ordinary polls and redeploys keep the 0.2.3 rule; a revive on an enemy's tile stays. #475 : online boss / hidden-boss Raid may land on the empty half (owner-limited scope).
- 浊心斯卡蒂 S1 x 坚守 no longer bounce redirected damage, and the two shares conserve the hit (idea of PR #464 by @HappyTanuki).
- Operator fixes adapted from PRs by @Xinglan233 (#459 哈洛德 S2 elemental trigger, #460 涤火杰西卡 shield on the four adjacent tiles, #461 家族徽章 first hit after stealth, #462 松果 S2 regrow per deploy); 克莱门莎 S2 splash 1.1 / 100% ATK and air auto-trigger (#467 ); 白面 copying 歌蕾蒂娅 / 余 skips the three-member condition (#473 , the owner's video).
- 香槟炸弹 is not chosen by friendly auras / heals (PR #468 / #476 by @Siornya); 琳琅诗怀雅 coin balance (PR #450 by @IceCodeNew); Touch prep display (PR #451 by @YinqiMargatroid); lobby header (PR #471 by @YuriRestia); Japanese UI terms (PR #448 by @scutkane).
- AI-only boss countdown grace, render-failure cache / recovery without restarting a battle, device units kept on a same-field re-entry, DIY detail / skill previews, large-text result buttons.
- golden: battle families equal 0.2.3 except diy-135 / diy-136 (克莱门莎); all 18 release matches move through the shared pool, every flip named in docs/history/0.2.4.md §29.12; two coverage scenarios added.
2026-10-11 01:58:52 +08:00
sganggs
c4dc96fff4
0.2.3: version 0.2.3 — package.json / package-lock.json / APP_VERSION (DEV_BUILD turns false), README release form, CHANGELOG 0.2.3 — 2026-10-10 in the usual sections, DESIGN versions line
2026-10-10 03:19:38 +08:00
sganggs
9ec84f36a0
0.2.3: the install icon keeps the 0.2.x mint rook (the owner's choice), refined: a narrower tower, lighter base and more padding so it sits well among launcher icons; manifest sizes, maskable and favicons re-exported (the ICO keeps its transparent mask)
2026-10-10 02:36:12 +08:00
sganggs
9042125430
0.2.3: 重绘系列通用安装图标并记录功能审核决定(#413、#77/#408、#444、#407)
2026-10-10 02:11:23 +08:00
sganggs
ba5b998a72
0.2.3: Clementia S2 releases a dead, hidden, uncarriable or pathless rider at once (slot and weight back before the same tick's boarding checks); same-browser match recovery never takes the seat of a window that is reloading or still starting (a tab keeps its own session token; seats are stamped at the server's welcome, the older welcome wins); golden: diy-135 moves (outcome unchanged)
2026-10-10 01:58:06 +08:00
sganggs
821ab827bd
修复赤刃明霄陈三技能对空自动开启并核实社区反馈
...
S3 的扩展范围含可选中的飞行目标时可以自动开启剑气;普攻保持仅对地。
[ASSUMED] 自动触发区域沿用扩展攻击格和永久射程延长,不扩张到未来剑气的整条路线。
补测部署技能与休整属性预览、后排协防蕾缪安真实锁定耗弹、诗怀雅落地金币、
莎草对炸弹的治疗链,以及予愿三种技能的普通地面溅射和无视可选性例外。
未复现的报告保留证据边界;诗怀雅被动落地投瓶符合 PRTS。
全 285 场 golden 重建并验证,仅 diy-074 变化:新增 4 次陈 S3,伤害 142376→163563,
时序/选敌改变后击杀 21→18、漏怪 96→99,223.83 秒和结束方式不变。
其余 284 场不变。
CI:5879 tests,5876 pass,0 fail,3 skip;setup/smoke/lint/imports/typecheck 均通过。
新增 16 项回归,相关 6 文件 63/63,补充 2 文件 20/20,文档 31/31。
2026-10-10 01:02:23 +08:00
sganggs
708caf7d06
fix: correct community-reported combat and strategy draft behavior
...
Guard lethal stuns against a replacement deployment; keep bard auras running
through stun; require an active Aegir bond for Clementia's strategy; allow
Compass SP to bypass recovery locks; and refresh Hidden Core gun mitigation
against current gun/spring companions. Set multiplayer strategy picks to 50s
and describe renderer fallback without diagnosing unsupported hardware.
Golden moves (full 285-scenario regeneration):
- roster-008: inactive Aegir no longer gains 18 strategy layers.
- boss-boss_4-solo: bard regeneration continues through stun.
- hidden-boss_9-pair: mitigation covers first hits/current companions.
- standin-07: hammer stun cannot follow an immediate revival deployment.
No ending-reason changes. Sources and report-by-report findings: DESIGN 28.25.
2026-10-10 00:45:41 +08:00
sganggs
77cd29f07a
Keep lobby settings next to the guide when install controls appear ( #413 )
2026-10-09 23:57:05 +08:00
sganggs
f3658a0dd4
0.2.3: prepare follow-up fixes and client features ( #407 , #408 , #410 , #413 , #431 , #435 , #436 , #440 , #444 )
...
Add special-target activation without bypassing attack cadence, cooperative
card preferences and emotes, skill sound banks, per-operator voice choices,
text sizing, install prompts, closed-tab recovery and unanimous setup rerolls.
Retain late deployment elapsed time and resolve echo/counter pulses without
recursive hook overflow. Independent final review remains pending.
Golden: roster-016, roster-035, roster-036, roster-045;
boss-boss_1-pair, boss-boss_3-pair, boss-boss_5-pair, boss-boss_7-pair,
hidden-boss_9-pair; solo-HARD-9-boosted: Lemuen attack cadence.
diy-132: Necras extra activation targets.
coop2-NORMAL-14-standins: cooperative purchase preference and simulation fixes.
hidden-boss_10-solo: echo pulse FIFO resolution.
See DESIGN 28.13-28.24 for assumptions, sources and contributor credit.
2026-10-09 22:55:24 +08:00
sganggs
cc15d003d4
Clean up browser test pipes and scope deliberate outage errors
2026-10-09 18:58:36 +08:00
sganggs
0b0ce4fbd7
Update expanded roster checks and register Clementia impact visuals
2026-10-09 17:46:07 +08:00
sganggs
6036e6a4ba
Verify held Spine poses and delayed font textures in real Chrome ( #434 )
2026-10-09 17:38:12 +08:00