WinCode
Sessions

会话卡片

SessionCard 的外观、悬停按钮、右键菜单与会话状态

会话卡片

会话卡片(SessionCard)是侧边栏里最频繁打交道的元素。每张卡片对应一条 Session 记录,承载切换、重命名、置顶、导出、删除等常用操作。

会话卡片与右键菜单

卡片外观

一张 SessionCard 由四部分构成:

[消息图标]  会话标题(截断)   [活跃指示点]   [置顶] [删除] [⋯]
元素说明
MessageSquare 图标来自 lucide-react,统一风格
标题单行截断,默认取自 Claude Code 会话首条用户消息;可被重命名
活跃指示点仅当卡片为当前激活会话时,右侧出现 1.5x1.5 的强调色圆点
悬停按钮组鼠标进入时淡入:置顶开关、删除按钮
MoreVertical 按钮悬停时淡入,点击弹出完整右键菜单

激活态卡片使用 --bg-active 背景,非激活态悬停使用 --bg-hover

交互方式

触发动作
单击激活会话,切换到对应聊天 Tab
双击打开"重命名"输入对话框
悬停 + 点击 Pin 图标切换置顶状态
悬停 + 点击 Trash 图标立即删除(无二次确认)
悬停 + 点击 弹出上下文菜单

右键菜单

SessionCard 内置一个 ContextMenu,菜单项包括:

  1. 置顶会话 / 取消置顶(Pin / PinOff 图标)
    • 调用 sessionTogglePin(id),然后重新初始化所在项目的分页(initProjectPagination),置顶会话总是排在最前
  2. 重命名(Pencil 图标)
    • 弹出 InputDialog,标题"重命名会话",提示"保持简短且易于识别",预填当前标题
    • 确认后调用 sessionUpdateTitle(id, newTitle)
  3. 导出为 Markdown(Download 图标)
    • 弹出系统保存对话框,默认文件名取会话标题,调用 sessionExportToFile 写入 .md
  4. 删除会话(Trash2 图标,红色)
    • 调用 sessionDelete(id),然后通过 removeSessionAndFill 把激活态交给相邻会话

置顶行为

  • 置顶项目、置顶会话都使用同一个 SQLite 字段(pinned),排序规则统一:置顶项排在前面,非置顶项按更新时间倒序
  • 一个会话的置顶状态会随所在项目一起持久化到本地数据库
  • 切换置顶后,前端调用 initProjectPagination(projectPath) 重新拉取该项目的排序结果

状态标签

源码中会话本身没有"草稿 / 归档 / 进行中"等状态字段在卡片上显示,状态差异主要通过:

  • 草稿 — 在搜索时显示,或进入聊天界面后在输入框自动恢复,详见 搜索与归档
  • 归档 — 搜索结果和归档列表里区分,卡片本身不显示标签
  • 活跃 — 右侧小圆点指示

相关文档

On this page