feat: 驾驶舱控制台交互完善 — Cockpit Console Refinements (#15) #16

Merged
petrezhu merged 78 commits from feat/cockpit-console-refinements into master 2026-09-03 16:21:08 +08:00
Owner

Closes #15

Implementing spec: specs/cockpit-console-refinements.md

Implementation Summary

Ticket Description Status
T1 CSS变量 --console-width
T2 拖拽手柄 (300-700px)
T3 星球→控制台勘探页签联动
T4 HUD舷窗复位按钮
T5 船员常驻小窗
T6 倒计时→控制台日报联动

Files Changed (8 files, +504/-9)

  • index.html: localStorage restore script
  • static/css/base.css: --console-width driven panel avoidance
  • static/css/cockpit.css: CSS variable, drag handle, HUD reset, panel tab styles
  • static/css/crew-mini.css: crew mini-window styles
  • static/js/boot.js: ARK.setConsoleWidth, drag handle logic
  • static/js/crew-mini.js: crew mini-window (fold/unfold, NPC chat, ESC priority)
  • static/js/t02-starmap.js: planet→console routing + HUD reset button
  • static/js/t10-briefing.js: countdown→console routing

Code Review

  • B1 (BLOCKER): ESC priority — fixed: floating panels take precedence over crew mini collapse
  • 350 tests passed, 3 skipped
Closes #15 Implementing spec: specs/cockpit-console-refinements.md ## Implementation Summary | Ticket | Description | Status | |--------|-------------|--------| | T1 | CSS变量 --console-width | ✅ | | T2 | 拖拽手柄 (300-700px) | ✅ | | T3 | 星球→控制台勘探页签联动 | ✅ | | T4 | HUD舷窗复位按钮 | ✅ | | T5 | 船员常驻小窗 | ✅ | | T6 | 倒计时→控制台日报联动 | ✅ | ## Files Changed (8 files, +504/-9) - index.html: localStorage restore script - static/css/base.css: --console-width driven panel avoidance - static/css/cockpit.css: CSS variable, drag handle, HUD reset, panel tab styles - static/css/crew-mini.css: crew mini-window styles - static/js/boot.js: ARK.setConsoleWidth, drag handle logic - static/js/crew-mini.js: crew mini-window (fold/unfold, NPC chat, ESC priority) - static/js/t02-starmap.js: planet→console routing + HUD reset button - static/js/t10-briefing.js: countdown→console routing ## Code Review - B1 (BLOCKER): ESC priority — fixed: floating panels take precedence over crew mini collapse - 350 tests passed, 3 skipped
F1 错题→蛀虫情报: signal_after_test纯函数(低正确率仅提前侵蚀≤3天不扣耐久,
  高正确率+2加固) + 模考错题补落fault_log + recall优先抽历史错题 + 错题猎人徽章
  + 日报告警带错题计数; 修复_grade丢弃topic_id导致模考信号失效(review发现)
F8 当前星球: POST /api/player/location + players.current_sector_id(SSOT+幂等迁移)
  + star-map/briefing/boot投影 + npc_engine chat上下文注入(开采/耐久/受损/稀有)
  + 星图「你在这里」青绿轨道环 + 日报位置条
F3 船员体系: NPC→船员(仅展示层,/npc端点与模块名不变) + 船员舱文案 + crew-voice.js
  场景化(检验官=校验页/测试官=判分页/史官=日报/工程师=开采仪式) + 开采仪式与模考
  通过LLM个性化贺词(crew_voice.py, 失败降级模板不阻塞)
F2 deep-link: 任务卡直达星域(#/sector/) + 侵蚀告警直达维修面板(#/ship/COMPONENT)
  + 日报位置条回星域
F4 开机聚合: GET /api/boot一次请求(briefing+fuel+ship+achievements+location)
  + boot.js开机序列 + 聚能斗未领高亮
F5 星图投影: /api/star-map带condition聚合 + 受损星球琥珀腐蚀环 + 导航chip仪表化
  (nav-gauge.js仪表即菜单)
F6 成就全接线: test/mock/mining/fuel/ship五个事件路由后run_check(), 响应带new_unlocked
F7 模考融合: 飞船视图跃迁准备度chip(三科safe/near/danger) + 三科全过线全舰灯效
F9 燃料液面: /api/ship补fuel_level(接通US38前端壳) + 顶栏chip微型液位条(<30%红)
清理: 删除t01-scaffold残留(旧star-map网格视图, 已被t02 Cytoscape取代)
测试: 新增fusion测试60+项, 全量350 passed; ruff净改善(45→25, 均为存量债务)
review子代理发现虚构id不在curriculum。修正为实际存在的组件id,
按飞船三系统口径(32组件)与get_sector(22 K星域)的差异对齐:
- 星图/location校验走get_sectors(仅K, 22个)
- 飞船组件/fault_log归类走_all_topics(含C/P, 32个)
case/essay模考错题现在正确归档到载荷/反应堆系统代表组件
- index.html: body 重构为三区座舱(顶栏操作舱/main.ark-cockpit/底栏readout)
  新增 #cockpit-console 右舷控制台 + .ark-hud-frame HUD取景角标
- cockpit.css(新): 座舱网格/控制台铺开/HUD角标/扫描线读出/窄屏(≤1100px)抽屉降级
- base.css: 面板避让控制台(slide-right/dock-left/top-drawer/center-modal右缘486px)
  + 顶栏底栏操作甲板质感 + 窄屏恢复默认布局
- t02-starmap.js: 星图开局cy.fit铺开+panBy避开控制台
  + renderScanline() 底栏DSEG7读出(SECTOR MAP/EXPLORE/ORE/RARE)
- t10-briefing.js: 渲染管线抽取renderBriefingInto(控制台/抽屉共用)
  + 修复t10未声明引用(变量提升至ARK.t10)
  + 驾驶舱模式不再自动弹top-drawer(控制台已铺开,窄屏回退弹出)
- boot.js: mountConsoleBriefing() 初次加载把日报挂载到控制台铺开
验证: e2e r6 0 blocker 0 major; 视觉核验控制台右舷/星图左舷/底栏readout
pytest 350 passed; r5的't10 is not defined'JS异常已修复
- cockpit.css: 控制台三页签条(.ark-console-tabs/tab.active高亮)
  + 日报HUD仪表化(section紧凑卡/电报六联3x2数字块/告警/位置条压缩)
  + 舱体视觉强化(clip-path右上斜切+玻璃叠层渐变+边缘光)
  + 飞船/勘探视图嵌入紧凑化(D3纵排/矿点行压缩/要素行收起)
- boot.js: ARK.showConsoleTab(key) API + 三页签骨架(惰性渲染t10/t09/t05)
  移除capture劫持, 接管下沉至各ticket(职责分离)
- t09/t05: 顶栏chip宽屏驾驶舱模式→进控制台页签(Shift强制浮层大视图)
  窄屏<1100px照常浮层
验证: 定向5/5(页签切换/chip接管/紧凑卡/斜切/结构) + D3剪影32槽位结构核验
  + 像素级核验(斜切角/页签高亮/统计块) + e2e r7 0 blocker 0 major
  + pytest 350 passed
Spec: 驾驶舱控制台交互完善
- Q1: 星球→控制台切勘探页签 (Shift保留浮层)
- Q2: 倒计时→控制台切日报 (窄屏弹抽屉)
- Q3: 拖拽手柄自由调宽300-700px
- Q4: 船员常驻前台可折叠小窗
- Q5: HUD舷窗复位按钮
- Q6: 快捷键暂缓
- Q7-Q10: 手柄细节/小窗设计/联动粒度/CSS变量

Seams: boot.showConsoleTab(最高) / t02 tap / t10 chip / --console-width / t04 mini-window / hud-reset
Issue: #15 (ready-for-agent)
Labels: ready-for-agent
- Switch from concentric to breadthfirst (directed, rightward) layout
- Compute max spanning tree via union-find on edge weights
- Tree edges: full opacity (0.3), non-tree edges: near-invisible (0.05)
- Root = first sector with no incoming tree edges
- Expand star dots from 8 to 34 radial-gradient points (0.8-2.2px)
- Add 5 shooting star CSS animations with staggered long delays
  (8s, 22s, 37s, 51s, 68s) for sporadic appearance
- Shooting stars: CSS @keyframes shoot, infinite loop, decorative only
- Position/duration/delay driven by CSS custom properties set in JS
- Inject .t02-shooting-star elements into map container from JS
- index.html: 新增左侧栏#left-panel+底部栏#crew-bar/#ship-section
  顶部slots仅保留燃料/倒计时/成就chip
- cockpit.css: 左侧栏(280px,z-3)+底部栏(flex)+可折叠section
  HUD frame inset避让左侧栏(290px)+右侧控制台
- sidebar-bottombar.js(新): 左侧栏/底部栏编排+折叠展开逻辑
  船员tab栏(6角色水平切换+聊天区)+飞船section渲染
- boot.js: TABS数组移除ship/explore(迁移到侧栏/底部)
- t04/t05/t08/t09: 删除ensureTopbarEntry(不再注入顶部chip)
  保留view注册(ARK.show路径仍可用)
t06/t12/mock-jump: 删除ensureTopbarEntry(),保留深链hash路由
顶部栏仅保留状态chip(星域/燃料/倒计时/成就/聚能斗)
- cockpit.css: .ark-cockpit改grid(dock布局)
  grid-areas: 'left main right' / 'bottom bottom bottom'
  星图=主视口(1fr, minmax(0,1fr)) 展开dock自动挤占星图
  左/右/底dock为grid停靠视口, 互不重叠
- 左dock(勘探/开采): 280px, 双击header折叠成36px窄条(竖排标签)
  窄条点击展开
- 右dock(控制台): var(--console-width), »按钮折叠成窄条, 窄条点击展开
- 底dock(船员tab+飞船): 限高260px(展开不挤没星图)
  飞船dock折叠成薄条
- HUD角标移入星图视口内(inset 10px跟随主视口)
- index.html: bottom-bar移入cockpit grid, hud-frame移入star-bg
- 窄屏≤1100px: grid退化单列主视口全宽+控制台抽屉
验证: 几何无重叠(star 660x528与三dock均0交叠)
  + 折叠挤占(左栏折叠星图660→904, 飞船折叠星图高528→748)
  + 像素级(主视口5071星球像素/dock内容均渲染)
- 删除 static/js/crew-mini.js + static/css/crew-mini.css + index.html引用
- index.html: crew-bar 增加 .ark-crew-bar-header(取代旧mini-btn位置作用)
  = dock 折叠/展开控制头 + .ark-crew-bar-content(tab条+对话区)
- sidebar-bottombar.js: mountCrewBar 改用 index.html 提供的结构
  setupCollapse 支持 crew header → 整栏折叠成薄条(仅header)
  折叠时收起已展开对话+清除tab高亮
- cockpit.css: .ark-crew-bar-header/.ark-crew-bar-title/.ark-crew-bar-content
  + .ark-crew-bar.collapsed 薄条(max-height 34px)
验证: crew-mini DOM不存在 / header点击折叠dock(内容隐藏)
  / tab展开对话 / dock折叠时对话收起 / 6 tabs常驻
petrezhu merged commit b93ada8c96 into master 2026-09-03 16:21:08 +08:00
Sign in to join this conversation.
No reviewers
No labels
ready-for-agent
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
petrezhu/ARK!16
No description provided.