f039ebc542
feat(09-08): toolbox 道具栏三列布局与道具列表
...
- 新增 toolbox.tsx:永久道具 / 可消耗道具 / 道具信息三列布局
- 以 heroState.items.iterateItems() 枚举背包,过滤 hideInToolbox
- 各组按数量降序、数量相同按图块数字升序
- 行渲染 <icon> + raw.name + core.formatBigNumber(count)
- 右列展示 raw.name 与 raw.text;列表 / 说明纵向 <Scroll noscroll>
- 右下退出按钮(本任务仅视觉占位)
2026-10-11 14:42:12 +08:00
e575944df5
docs(09): mark plan 09-07 complete in roadmap progress
2026-10-11 14:32:23 +08:00
2059c68e25
docs(09-07): complete equipbox plan summary
2026-10-11 14:31:49 +08:00
ba0732eb1d
feat(09-07): add equipbox interactions and exit
...
- click select; re-click owned equip calls hero.equip.equip(uid, slot, true)
- drag owned to slot equips; drag equipped slot unequips (render action events)
- bottom-right exit calls props.controller.close(props.instance)
2026-10-11 14:30:50 +08:00
2217e0994e
feat(09-07): add equipbox layout and data enumeration
...
- new ui/equipbox.tsx: left status column, right desc/slot/owned regions
- owned equipment sorted by item.num; slots from hero.equip.slots
- diff via hero.equip.compareEquip (-1 = no equipment)
2026-10-11 14:28:20 +08:00
1fe68b9f2b
docs(09): record task 3 review findings (no UI background; TextContent for long text)
2026-10-11 14:16:12 +08:00
e321753058
docs(09): mark plan 09-06 complete in roadmap progress
2026-10-11 13:47:59 +08:00
11aaafeaef
docs(09-06): complete book enemy handbook plan
...
- bookDetail.tsx: independent detail UI (base/computed, special list, critical table)
- book.tsx: handbook list UI (enemyContext, dedupe by code, 9 columns, open detail)
- static symbol + CRLF + scope gates all pass; OI-4..OI-6 recorded
2026-10-11 13:46:24 +08:00
0f0b2770fe
feat(09-06): add enemy handbook list UI (book.tsx)
...
- Book / BookUI bound to props.state.enemyContext
- dedupe enemies by base.code, vertical Scroll list
- 9 columns: icon/name/specials/hp/atk/def/money/exp + damage/critical/reduce/1-def
- critical via calculateEnemyCritical (base path); 1-def via with(isolated +1 def)
- click row opens BookDetailUI; bottom-right exit closes instance
2026-10-11 13:44:43 +08:00
04fc4ff81e
feat(09-06): add independent enemy detail UI (bookDetail.tsx)
...
- BookDetail / BookDetailUI over IEnemy | IEnemyView input
- base/computed toggle via getBaseEnemy/getComputedEnemy
- special list via iterateSpecials + getSpecialName/getDescription
- critical table via calculateEnemyCritical (base) / calculateViewCritical (computed)
- bottom-left toggle, bottom-right back (controller.close)
2026-10-11 13:43:05 +08:00
8951c54c88
fix(09-minimum-browser-runnable): revise 09-09 plan per checker feedback
2026-10-10 22:23:01 +08:00
7f0c90e3af
docs(09): finalize shop plan (09-09) - GAP-S4 resolved, OI-S6 confirmed, drop hotkey name caveat
2026-10-10 20:18:37 +08:00
5bace98025
feat: 导出商店系统
2026-10-10 20:07:04 +08:00
88b4571da5
feat: 商店系统
2026-10-10 19:58:48 +08:00
3a6269be60
feat: 导出 shop 接口
2026-10-10 19:47:43 +08:00
6d24d826bc
docs(09): un-defer shop interface note (interface provided)
2026-10-10 19:40:57 +08:00
ff71899f12
docs(09): create phase plan (09-09 shop)
2026-10-10 19:38:58 +08:00
7140ae6987
feat: 商店接口
2026-10-10 19:35:44 +08:00
e2b44441c7
fix(09): revise plans based on checker feedback
2026-10-10 19:20:47 +08:00
337d28c1d7
docs(09): revise book/equipbox/toolbox plans to consume new data-end interfaces
...
- book: wire base-attribute critical/damage via calculateEnemyCritical; rename calculateCritical->calculateViewCritical; @user/data-system dependency already declared (no package.json change)
- equipbox: single-equipment delta via compareEquip(uid,-1,slot)/(-1,uid,slot)
- toolbox: enumerate owned items via IHeroItems.iterateItems() (drop saveState workaround)
2026-10-10 19:12:37 +08:00
afc484465e
feat: 新增道具迭代方法
2026-10-10 18:51:28 +08:00
ea7a404cc6
feat: 与空装备对比
2026-10-10 18:49:14 +08:00
751f206829
feat: 添加裸怪物临界计算
2026-10-10 18:45:29 +08:00
1d0c7db3cc
docs(09): plan task 3 book/equipbox/toolbox (pending data-end interfaces)
2026-10-10 18:27:34 +08:00
1633ce268f
chore: Agent UI 参考图片忽略
2026-10-10 17:43:51 +08:00
e287aa440e
docs(09): capture task 3 interface designs (book/equipbox/toolbox/shop)
2026-10-10 17:43:22 +08:00
77a8adc05d
feat: 特殊光环描述
2026-10-10 17:42:34 +08:00
a2dd4ace72
style: prettier
2026-10-10 15:20:58 +08:00
cdfe7ffc76
docs(09): add task 2 plan 09-05 (migration UI repair) and mark progress
2026-10-10 14:59:31 +08:00
6f3095cb9b
docs(09-05): complete migration UI repair plan (A prettier + B IUIController generics + C src/ui type errors)
2026-10-10 14:24:04 +08:00
8cfbc7333e
fix(09-05): repair src/ui migration type errors and prettier ui files
...
- main.tsx: p.state -> props.state (09-04 leftover typo)
2026-10-10 14:17:41 +08:00
3a49b37c25
fix(09-05): adapt IUIController/UIController to required IGameUIPropsBase generic
...
- add <IGameUIPropsBase> to 16 IUIController annotation sites (client-modules + client-base)
2026-10-10 14:14:12 +08:00
1bcdcc3677
refactor: 特殊属性定义方式
2026-10-09 20:09:51 +08:00
46bcafcfbb
docs(09): mark plan 09-04 complete in roadmap progress
2026-10-09 18:56:04 +08:00
f584bd7301
docs(09-04): complete status ownership migration plan
...
- record Task 0 blocking-human checkpoint satisfied (defaults adopted)
- Task 1 statusBar.tsx 61b618e; Task 2 main.tsx 4581350
2026-10-09 18:55:35 +08:00
458135037c
refactor(09-04): clean up main.tsx after status ownership migration
...
- remove replayStatus/leftStatus/rightStatus defs, updateStatus, updateDataFallback
- remove dead write-only locked ref and attributeHook + its onUnmounted
- drop status={...} props on LeftStatusBar/RightStatusBar
- hideStatus now reads flag default once at setup + // TODO: (flags has no listen system)
- preserve hideStatus consumers, map render, interaction handlers, mainUIController, MainSceneUI
- drop now-unused imports (onUnmounted/reactive/ILeftHeroStatus/IRightHeroStatus/ReplayingStatus)
2026-10-09 18:53:04 +08:00
61b618e533
refactor(09-04): migrate status-bar state ownership into statusBar.tsx
...
- LeftStatusBar/RightStatusBar self-own leftStatus/rightStatus (reactive)
- attributes+lv refresh via hero.attribute.addHook({ onUpdateAttribute })
- floor trigger via hero.location.addHook({ onSetFloor }); value stays legacy core.status.floorId
- no-hook fields (up/items/debuff/replay/exampleHard) left as // TODO:
- onUnmounted unloads both hooks; StatusBarProps drops status member and generic
2026-10-09 18:51:26 +08:00
c52bf9abee
fix(09): anchor 09-04 Task 0 pre-state regex to local leftStatus declaration (exclude leftStatusBarUI export)
2026-10-09 18:07:15 +08:00
7798ba1987
fix(09): revise 09-04 plan based on checker feedback (narrow p.status gate to executable reads; note stale line-463 comment)
2026-10-09 18:01:29 +08:00
f18d577b77
docs(09-4): redesign plan — status ownership into statusBar + per-field hooks/TODO
2026-10-09 17:55:24 +08:00
3f2e3b1083
docs(09): mark plan 09-03 complete in roadmap progress
2026-10-09 17:19:45 +08:00
c5049769f8
docs(09-3): complete D-11 UI alignment plan (props.state + D-13 TODO)
2026-10-09 17:19:15 +08:00
699b0b09a0
refactor(09-3): align main/statusBar/toolbar to props.state (D-11/D-13)
...
- main.tsx: add MainSceneProps extends IUIPropsBase + props decl; mainMapRenderer/mainMapExtension/flags/9x getFinalAttribute/addHook -> props.state; thread state={props.state} to LeftStatusBar/RightStatusBar; D-13 TODOs (3); keep state/using/mainUIController
- statusBar.tsx: StatusBarProps base + IUIPropsBase + 'state' prop; client.materials -> p.state.materials; thread state to MixedToolbar
- toolbar.tsx: ToolbarProps/ReplayingProps base + IUIPropsBase + 'state' prop; client.materials -> props.state.materials; thread state to child toolbars
2026-10-09 17:17:31 +08:00
d1f167ce6f
refactor(09-3): align settings.tsx to props.state (D-11/D-13)
...
- MainSettingsProps base IUIDefaultPropsBase -> IUIPropsBase; props array adds 'state'
- client.flags -> props.state.flags (2 sites); drop client import
- D-13: add // TODO: at both __seed__ flags read sites
2026-10-09 17:17:22 +08:00
804844e5b5
docs(09): mark plan 09-02 complete in roadmap progress
2026-10-09 17:06:34 +08:00
303287831a
docs(09-02): complete D-10 closure plan (remaining 4 modules + consumer rewire + delete render/ui)
2026-10-09 17:05:58 +08:00
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