Skip to content

Sidebar 会话二级列表:常显箭头、数量标记、展开更多与跨画布定位 - #29

Merged
Yaphet2015 merged 4 commits into
mainfrom
sidebar-sessions
Oct 25, 2026
Merged

Yaphet2015 merged 4 commits into
mainfrom
sidebar-sessions

Conversation

@Yaphet2015

Copy link
Copy Markdown
Owner

改了什么

按 Designer 的 Sidebar 会话方案(/workspace/studyboard-sidebar/SESSIONS.md,含「去掉行首红点」的修订)实现会话二级列表。根因:原展开箭头 .workspace-disclosure 是 opacity:0,只有悬停才出现,用户找不到。

  • 箭头常显(点击区 ≥24×24),右侧带会话数量;点箭头/数量展开,点行其他位置只切换画布。默认折叠,展开状态按画布存 localStorage。
  • 数据层:Board/BoardSummary 增加 sessionCount,保存时写入;旧存档未知,加载后补上。
  • 会话行两行:标题 +「锚点卡 · 时间」;当前会话浅红底 + 加粗标题(无红点);画布折叠但有会话打开时数量标记变红;切换中 spinner 放在原圆点位置,其他时候不留空。
  • 超过 8 个:最近 6 个 + 置顶当前会话 + 「展开更多 · 还有 N 个」;超过 20 个出现搜索;无嵌套滚动框。
  • 点其他画布的会话:切画布、聚焦锚点卡、打开右侧面板,侧栏该行保持高亮;锚点卡已删除时提示并 fitView。
  • 空 / 读取中 / 读取失败(可重试)三种状态;键盘上下键、aria-tree 语义。
  • 新 token ink3t(浅 #70695f / 深 #948d83)用于时间行小字。

测试(Linux 盒子)

  • tsc --noEmit、tsc -p tsconfig.electron.json --noEmit 通过
  • vitest 45 文件 / 418 用例通过
  • vite build 通过
  • Playwright e2e:107 passed / 51 skipped / 0 failed(含新增 sidebar-sessions.spec.ts 与调整后的 sessions.spec.ts、drawer.spec.ts、electron.spec.ts 选择器)
  • 设置 SHOTS_DIR 时,shots-round2.spec.ts(一次性设计截图脚本)4 个用例会失败:在 main 上同样失败(点卡被侧栏标题遮挡),与本 PR 无关,常规运行里它是 skipped。

截图

/workspace/studyboard-sidebar/shots/sessions-{light,dark}-*.png:collapsed、collapsed-current、expanded、twelve-current、hover-focus、empty-loading、read-error、switching、empty-current(SHOTS_DIR=… npx playwright test sidebar-sessions 生成)。

与方案的差异

  • 数量按钮高 24px(方案 22px),因点击区要求 ≥24。
  • 切换中状态下整份列表被淡化(方案只展示单行)。
  • Ctrl+K 保留原有画布/卡片搜索,没有新增全局会话搜索(>20 个时的搜索是列表内搜索)。

已知遗留 / 未验证

  • listSessions 仍把「存成批注卡」产生的 note 算作会话(sessionCount 也按 notes 总数),本 PR 未扩大范围。
  • 没有在 macOS 真机 / 打包版 Electron 上验证(hover、键盘焦点与动画的实际观感)。
  • playwright.config.ts 里盒子用的 npx vite 替代 pnpm dev:web 改动没有提交。

@Yaphet2015
Yaphet2015 merged commit cc1cdd9 into main Oct 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant