2ed60467a1
feat(09-02): rewire cross-dir consumers, add package-root ./ui barrel, delete render/ui
...
- render/index.tsx: imports now '../ui' / '../ui/load'; remove the './ui' re-export (dead link + D-69)
- render/action.ts: import './ui' -> '../ui'
- client.ts: import './render/ui/load' -> './ui/load'
- index.ts: add export * from './ui' (ui surface kept via package root)
- delete render/ui/{title,load,index}; remove the now-empty render/ui directory
2026-10-09 17:04:30 +08:00
964f479270
feat(09-02): migrate main/settings/statusBar/toolbar to src/ui and rebuild barrel
...
- Move render/ui/{main,settings,statusBar,toolbar}.tsx to src/ui/ with only relative specifiers rewritten
- Rewrite render capabilities to leaf modules (../render/use, ../render/renderer), never the ../render barrel
- Complete src/ui/index.ts with ./main ./settings ./statusBar ./toolbar + createUI()
- Delete the four old render/ui files
2026-10-09 16:59:54 +08:00
6a3812252b
docs(09): mark plan 09-01 complete in roadmap progress
2026-10-09 16:00:28 +08:00
d93fcaafc1
docs(09-01): complete D-10 leaf/basic UI migration plan
...
- SUMMARY: Task 0 satisfied-by-prior-user-approval; Tasks 1-3 executed
- 3 atomic task commits: 3f5c323 , 24ee08c , b637d3b
- Deletions: 4 migrated source files removed from render/ui (intentional)
- STATE.md / ROADMAP.md intentionally NOT modified (orchestrator owns them)
2026-10-09 15:59:23 +08:00
b637d3b5f3
feat(09-01): dedup controller/background and fix load/title props base (D-10)
...
- Move render/ui/controller.tsx -> src/ui/controller.tsx keeping only mainUIController + createMainController; import MainBackgroundUI from ./background
- Move MainBackground/MainBackgroundUI/MainBackgroundProps ownership to src/ui/background.tsx; drop ../render import; add DefaultProps (render-vue) + IUIDefaultPropsBase (system)
- Fix load.tsx/title.tsx props base: IUIDefaultPropsBase -> IUIPropsBase (own ./types); drop unused system import in title.tsx
- Rewrite render capability imports from ../render barrel to ../render/use leaf (avoid render/index.tsx <-> ui cycle)
- Complete barrel: + ./controller ./background ./func (7 same-dir exports)
- Delete old render/ui/controller.tsx
2026-10-09 15:57:03 +08:00
24ee08cc2d
feat(09-01): migrate statistics.tsx and viewmap.tsx to src/ui (D-10)
...
- Move render/ui/statistics.tsx -> src/ui/statistics.tsx (verbatim copy)
- Move render/ui/viewmap.tsx -> src/ui/viewmap.tsx; rewrite ../use -> ../render/use, ../../shared -> ../shared; keep ./statistics
- Add export * from './statistics' and './viewmap' to src/ui/index.ts
- Delete old render/ui/statistics.tsx and render/ui/viewmap.tsx
2026-10-09 15:53:19 +08:00
3f5c323897
feat(09-01): migrate save.tsx to src/ui (D-10 leaf tracer)
...
- Move packages-user/client-modules/src/render/ui/save.tsx -> src/ui/save.tsx
- Rewrite relative specifiers: ../use -> ../render/use, ../utils -> ../render/utils, ../../shared -> ../shared
- Add export * from './save' to src/ui/index.ts (D-69 same-dir barrel)
- Delete old render/ui/save.tsx
2026-10-09 15:51:41 +08:00
5bda40f083
docs(09): 收口任务 1 规划(决策覆盖/状态/波次标注)
2026-10-09 14:59:15 +08:00
dbbcf533dc
fix(09): revise plans based on checker feedback (round 2)
2026-10-09 14:27:17 +08:00
d53188af1f
docs(09): create phase plan for task 1 UI interface adaptation
2026-10-09 13:55:56 +08:00
cfdc7506c4
docs(09): 捕获 Phase 9 上下文(伞阶段 + 增量派发 + 两大任务方向)
2026-10-08 19:28:09 +08:00
af58dd3731
docs: 标记 Phase 4-6 为已过时并新增 Phase 9(最小浏览器可运行版本)
2026-10-08 19:28:02 +08:00
8fb16a103d
refactor: 删除 setAttributeDefaults 接口
2026-10-08 19:17:54 +08:00
acfb9c117d
refactor: UI 系统及其在渲染端的初始化
2026-10-08 19:02:04 +08:00
c466949ce0
docs(phase-08): complete phase execution
2026-10-08 17:01:41 +08:00
a39470deee
docs(08): add code review report
2026-10-08 16:50:23 +08:00
73cf808666
docs(08-11): complete phase 8 closure plan
2026-10-08 16:36:06 +08:00
d4cbc514f7
style(08-11): apply prettier formatting to four test files
...
- manager.test.ts / saveLoad.test.ts / follower.test.ts / location.test.ts
- formatting-only (eslint --fix); whitespace-stripped tokens identical, no assertion/it changes
- four packages eslint now 0 errors (6 pre-existing no-console warnings remain)
2026-10-08 16:29:05 +08:00
41f743debc
docs(08-10): complete coverage and interface alignment plan
2026-10-08 15:57:05 +08:00
0b23ff52c0
test(08-10): fix attribute.perf.ts BaseHeroModifier import for E4
...
- attribute.perf.ts imported BaseHeroModifier from ../attribute (not exported); align to ../modifier like attribute.test.ts
- pnpm test:perf now collects 6 files / 54 passed / 0 failed
2026-10-08 15:50:05 +08:00
47c6e2c8db
test(08-10): cover data-system/data-state gap codes and add loader tests
...
- eventDispatch: assert codes 171 (missing event id) and 172 (non-boolean reduce result)
- path/system: assert code 182 when binding a foreign CoreState layer
- data-state event: assert code 1001 for an unknown setBlock tile
- loader: new loader.test.ts covering PrefixedJSONCProcessor 66/67, DefaultDataLoaderHook 69/success, and MotaDataLoader public surface (66/67/68/69; 68 recorded unreachable)
2026-10-08 14:45:10 +08:00
b932f8cecd
test(08-10): cover data-common/data-base gap codes and align baseline failures
...
- sandbox: drop obsolete playing=true bypass, align expired-step case, assert codes 73/194
- tileStore: assert codes 133/134 and add ItemStore/EnemyStore code 181 cases
- map/mover: assert code 192 when Dir8 handler missing
- hero/items: assert code 193 on missing item id registration
- mapLifecycle: drive resize via GameMap.resizeLayer so shared indexer width syncs
2026-10-08 14:35:03 +08:00
339f72d541
docs(08-09): complete data-state integration test alignment plan
2026-10-07 19:17:17 +08:00
551e63de9a
test(08-09): drop removed hook controller .load() in shared fixture
...
addHook now auto-loads; the returned controller exposes only unload().
2026-10-07 19:13:51 +08:00
ff9fd77880
test(08-09): align data-state integration and perf tests to shipped shapes
...
- dataClosure: local CoreState helper, Record equip.value, ReplayCommandResult/Active commands, natural sandbox step
- enemyCombination: local CoreState helper
- perf: CoreState loadStarter assembly, Record equip.value, addLayer('event')
2026-10-07 19:13:15 +08:00
827e11c7a4
test(08-09): align remaining data-state integration and perf tests
...
- delete tileLegacy.test.ts (tested removed data-state/src/legacy; authorized retirement)
- dataClosure: local CoreState helper, Record equip.value, ReplayCommandResult/Active commands, natural sandbox step
- enemyCombination: local CoreState helper
- perf: CoreState loadStarter assembly, Record equip.value, addLayer('event')
2026-10-07 19:13:00 +08:00
98118fac14
test(08-09): align shared fixture and core playback integration tests
...
- closed-loop: assemble CoreState via loadStarter contract, setFloor(real IGameMap) at both call sites
- coreNode: local createCoreState helper, addLayer('event')
- replayPlayback: drop useMapState, DefaultPassPredicateImpl(state), inject Dir4FaceHandler, setFloor(real map), ReplayCommandResult assertions
- saveablesRoundTrip: real map setFloor, addLayer('event'), Record equip.value, align container restore to uid/value
2026-10-07 19:01:48 +08:00
58a554e40a
docs(08-08): complete data-state src alignment plan
2026-10-07 18:07:47 +08:00
1ef95cd36b
test(08-08): align core/event/commands tests to shipped interfaces
...
- coreEventLayer: redirect to MapState.fromRaw real event-layer assembly
- event: CoreState config constructor + addLayer('event') + setFloor(map)
- commands: CoreState config constructor; expected values aligned to
ReplayCommandResult (Success/Failed) instead of boolean
- commands.ts: user-fixed boolean assertParameter and 'boolean' paramTypes,
plus user-authorized // Parameter: comments to JS typeof semantics
2026-10-07 18:04:01 +08:00
46cad94aff
refactor: UI 系统
2026-10-05 19:44:33 +08:00
3e22e3e14a
docs(08-07): complete path test alignment plan
2026-10-05 18:55:43 +08:00
ba92f5291b
test(08-07): align path performance tests and clear prettier gate
...
- performance.test.ts: drop finder/builder useMapState, inject Dir4FaceHandler, read IPathfindingResult.path length; size matrix and thresholds unchanged
- graph.test.ts: prettier-format injected-fixture helpers
- path focused run 28/28, eslint 0
2026-10-05 18:51:30 +08:00
b62b394ee9
fix(08-07): align path graph/system tests and apply authorized D-10 fixes
...
- graph.ts: seed start node into mapped set (B1) and restore 174 NaN/negative cost guard (B2)
- graph.test.ts: drop useMapState/DirectionMapper, inject Dir4/Dir8 handlers, reach genuine out-of-map branch and assert 183
- system.test.ts: drop finder.useMapState, inject Dir4FaceHandler, adapt to IPathfindingResult
2026-10-05 18:49:18 +08:00
4208857eff
docs(08-06): complete combat/event test alignment plan
2026-10-05 17:30:32 +08:00
e024e2d2ea
test(08-06): align eventDispatch test to shipped interfaces
...
- remove obsolete DirectionMapper injection and its module entries (Q2)
- construct MapState with commonState only (single-arg constructor)
- resolve the event layer via shipped GameMap.eventLayer instead of the removed getLayerByAlias
- focused combat+event: 96 passed / 0 failed; eslint clean
2026-10-05 17:26:41 +08:00
71f93a526d
test(08-06): align combat tests to shipped interfaces
...
- remove obsolete addHook(...).load() chains in combat.test.ts (3 sites)
- give the special-query buildup fixtures a no-op global aura so the
shipped buildupSpecials early-return path reaches the special-query stage
- focused combat: 90 passed / 0 failed; perf: 6 passed
2026-10-05 17:23:55 +08:00
59e190b468
chore: 调整 AI 计划执行不按流程导致的代码问题
2026-10-05 17:15:35 +08:00
b28848e3e6
docs: 加强 AGENTS.md 约束
2026-10-05 16:43:25 +08:00
4f00072628
docs(08-05): correct summary for restoreDefaultEvents
2026-10-05 16:34:28 +08:00
58def1809d
fix(08-05): expose MapTileBase.restoreDefaultEvents and use it in toStatic
...
- MapTileBase.restoreDefaultEvents: protected -> public; declare on ITileBase with jsDoc
- MapLayer.toStatic(keepEvent=false): reset reused static tile via restoreDefaultEvents() instead of loadState({})
2026-10-05 16:34:18 +08:00
0d41abdaf6
docs(08-05): record map alignment summary and plan progress
...
- add 08-05-SUMMARY.md (status complete; D-10 production fixes + test alignments + gate evidence)
- mark 08-05-PLAN.md done and bump Phase 8 progress to 4/11
2026-10-05 15:20:06 +08:00
8d6f851727
test(08-05): align data-base map tests to shipped interfaces
...
- drop DirectionMapper; new MapState(state); addLayer(alias)+setEventLayer; remove addHook().load()
- align removed getLayerByAlias/getLayerAlias to layerList/alias and setDynamicDirection to tile.setFaceDirection
- dispose stale codes 62/63/64/84/130 per Q1=A; keep 60/61
- tests: expect default events for transferToDynamic(keepEvent=false); setMapList does not dedup
2026-10-05 15:19:56 +08:00
a76137f2a0
fix(08-05): correct map layer region/event logic (D-10 authorized)
...
- getMapData(x,y,w,h): end index lineStart+nw and buffer width*height (keep out-of-range zero padding)
- toStatic(keepEvent=false): reset reused static tile to default events via loadState({})
- cropPointEvents: reindex by new width; resize/resize2 sync indexer width; resize2 clears point events on same-size reset
- eventView.reset(): clear dirty counter so dirty() returns false after restoring reference
2026-10-05 15:19:37 +08:00
132ea9fc3a
docs(08-04): record hero alignment summary and plan progress
2026-10-04 23:35:01 +08:00
4c86bebb0e
docs(agents): clarify GSD subagent exemption and file-edit modality rule
2026-10-04 23:35:01 +08:00
69cec80c6b
test(08-04): align data-base hero tests to shipped interfaces
...
Replay stub route->array; drop addHook().load() chains; ItemStore requires tileStore; item.equip value/percentage as Record; setFloor(IGameMap|null); getItem->addItem. Confirmed production fixes: HeroLocation.setFloor accepts null; HeroEquipment.loadState wraps re-equip in replay disable/revert. Container tests drop rendering/followers. Focused: 114 passed + 1 skipped.
2026-10-04 23:34:49 +08:00
8153d4f419
docs(08-03): record enemy/flag alignment summary and plan progress
2026-10-04 22:17:01 +08:00
1bfe7080d5
test(08-03): align data-base enemy and flag tests to shipped interfaces
...
EnemyManager tests use a real TileStore with registered id<->num tiles; drop legacy bridge and *ById helpers (getPrefab/createEnemy take number|string); reusePrefab 2-arg; addPrefab dedupes by code only. Widen IEnemyManager.getPrefab signature to number|string (doc+impl). Flag tests align to loadState rebuilding field instances (d74cc35 ). Focused: 60/60 green.
2026-10-04 22:17:00 +08:00
17e292274b
docs(08-02): record data-common alignment summary and plan progress
2026-10-04 18:32:53 +08:00
70d530d71c
test(08-02): align data-common tests to shipped replay/face interfaces
...
Remove addHook().load() chains; align ReplaySandbox command stubs to ReplayCommandType.Active + ReplayCommandResult; retarget failure assertions to error 72; fix short-string param token base to 32; expect FaceDirection.Unknown for unknown blocks; onRecordCommand index 0; retire utils.test.ts. Confirmed production fix: restore first-step pre-read in ReplaySandbox play()/step() (75a39ad omission). Focused: 147/147 green.
2026-10-04 18:32:21 +08:00