看板视图

看板视图以列式布局展示任务,直观反映每个任务当前所处的状态。通过拖拽操作即可快速变更任务状态,无需打开任务详情页。

进入看板页面

启动 Web 界面后,点击顶部导航栏的「看板」标签,即可进入看板视图页面。页面默认展示以任务状态划分的列布局。

异步加载指示

看板页面采用 bind-first 启动:浏览器界面会立即显示骨架屏和加载阶段文案(如扫描任务、构建索引),后台完成 Core 语料初始化后再渲染真实内容。如果初始化过程中出错,页面会显示可重试的错误面板,点击即可重新加载。加载期间侧边栏保持挂载,仅任务计数显示为加载状态。

隐藏空状态列

当项目使用 5+ 个状态而多数任务集中在少数几个状态时,看板会出现大量空列造成杂乱。可在设置面板(或 config.yml 的 hide_empty_columns)开启隐藏空状态列:启用后,当前没有任何任务的空状态列会被自动隐藏,看板只展示至少有一个任务的状态列。

拖拽任务期间所有状态列保持可见,以便将任务放入目标列。拖拽结束后,空列再次隐藏。

拖放变更任务状态

看板页面将任务按状态分列展示,常见列包括:

  • Todo — 待办任务
  • In Progress — 进行中任务
  • Done — 已完成任务

将鼠标悬停在目标任务卡片上,按住左键拖动卡片,移动到目标状态列后松开,任务状态即自动更新。状态变更会实时同步到对应的 Markdown 文件。

拖动过程中,目标列会高亮显示,提示可放置区域。

拖拽行为细节

  • 保持列排序:如果当前列已手动排序(如按 ID 降序),拖拽期间视觉顺序保持稳定,不会在光标下重新排序
  • 跨列精确放置:将任务拖入目标列时,可以放置到该列中任意两个现有任务之间。系统会根据你松开鼠标时的视觉位置插入任务,而非简单地追加到列末尾
  • 跨列后排序恢复:任务跨列放置后,目标列的手动排序会自动清除,恢复为默认的 ordinal 排序,确保新任务出现在正确位置

里程碑泳道

若项目中存在里程碑,看板页面支持以里程碑为维度划分泳道。在页面上方找到里程碑筛选或视图切换控件,点击选择「按里程碑分组」。

每个里程碑展开为一个横向泳道,泳道内再按状态分列显示任务。这种视图便于追踪特定里程碑的推进情况。

标签筛选

页面顶部提供标签筛选下拉框。点击下拉框,勾选需要筛选的标签,看板将只显示带有选中标签的任务。

  • 支持多选标签,任务只需匹配任一选中标签即可显示
  • 取消勾选或点击「清除筛选」可恢复显示全部任务

自定义标签颜色

每个标签右侧有一个彩色小方块(颜色 swatch),点击可打开颜色选择器,为标签设置自定义颜色。

  • 预设调色板:提供 17 种预设颜色,自动适配亮色/暗色模式
  • 持久化:非默认颜色配置保存到 backlog/config.yml 的 label_colors 字段,重启服务后仍然有效
  • 默认恢复:选择「Default」并保存可恢复为系统默认灰色
  • 卡片渲染:看板任务卡片上的标签会显示配置的背景色,未配置的标签保持默认灰色

标签颜色配置按项目独立存储,不同项目可拥有不同的标签配色方案。

任务卡片标签

每张任务卡片底部会显示该任务的标签列表。

  • 宽度自适应:卡片会根据自身可用宽度动态计算能显示多少标签,尽可能多地展示,超出部分以 +N 折叠
  • 实时响应:调整窗口大小或侧边栏宽度时,标签显示数量会自动重新计算
  • 标签颜色:已配置自定义颜色的标签会以对应背景色显示

任务卡片验收标准进度

对于状态为 In Progress 且包含验收标准(AC)的任务,卡片标题行会显示圆角进度条和已勾选/总数分数(如 2/4),进度条与任务 ID 同处一行弹性排列:

  • 进度从验收标准实时计算,不持久化为单独字段
  • 没有验收标准的任务不显示任何进度指示
  • 全部验收标准勾选后,任务仍保持 In Progress 状态,需手动拖拽到 Done 列完成
  • 进度条使用翠绿填充配灰色轨道,亮 / 暗主题下均保证与卡片背景的对比度

任务列表视图同样在标题列显示该进度指示(固定宽度 80px 的进度条,每行占位一致)。

显示已完成任务

看板与任务列表的筛选栏提供「显示已完成」(Show completed)复选框:

  • 勾选后,backlog/completed/ 目录中的已完成记录与活跃任务走同一条筛选、排序与分组管线一并展示;卡片和列表行以「Completed」徽章标记
  • 勾选状态同步到地址栏(completed=1),可随链接分享、刷新后保留;它计入激活筛选,「清除筛选」会一并取消勾选
  • 已完成卡片不可拖拽(状态无法写回 completed 目录),点击打开的是只读弹窗:展示全部内容但不提供编辑、状态变更等操作按钮,标题栏下方显示只读提示
  • 未勾选时不产生任何额外查询开销

多选与批量拖拽

看板支持一次移动多张卡片:

  • 多选:Ctrl/Cmd + 点击 切换单张卡片的选中状态,Shift + 点击 按区间选择;选中后页面顶部出现选择工具栏,显示选中数量并提供清除入口
  • 批量拖拽:拖动任一已选中卡片即可整组移动,拖拽幽灵上的徽章显示实际移动的卡片数;对未选中的卡片按住 Ctrl/Cmd 起拖会将其并入当前选择
  • 定点插入:批量放置支持精确插入到目标列任意两卡之间,落点顺序按看板阅读顺序一并提交;目标列若处于手动排序状态,放置时自动回到默认排序以保证落点正确
  • 跨分支卡片不参与批量写入;在原地松手属于无操作,不会发出请求

列内排序

每列右上角有一个「⋮」列操作按钮,点击展开排序菜单:

本地排序(6 个选项)

菜单上半部分提供 6 个纯展示排序选项:

  • ID ↑ / ID ↓:按任务 ID 升序/降序排列
  • 标题 ↑ / 标题 ↓:按任务标题字母顺序升序/降序排列
  • 优先级 ↑ / 优先级 ↓:按优先级升序/降序排列

本地排序仅影响当前看板列的展示顺序,不会保存到后端。选中后再次展开菜单,激活的排序项会以深色背景高亮显示,右侧出现 × 按钮,点击即可清除排序,恢复按原始顺序(ordinal)显示。

拖拽任务卡片或执行下方的「Apply Priority Order」后,本地排序会自动清除。

按创建日期排序

列菜单在本地排序之外还提供按创建日期排序操作(升序/降序)。系统使用 parseStoredUtcDate 比较各任务的 createdDate 字段,缺失或无效日期的任务排在末尾,任务 ID 作为平局决胜。该排序与优先级排序一样作用于当前列。

跨分支任务的列菜单

当某一列包含来自其他分支的任务(cross-branch tasks)时,列操作菜单仍然可见,但部分操作会受到限制:

  • 本地排序选项(ID/标题/优先级)仍可正常使用,因为这些仅影响视图展示顺序,不会修改任何持久化数据
  • Apply Priority Order 按钮会被隐藏,因为该操作会修改当前列所有任务的 ordinal 字段,而跨分支任务不应被当前分支的排序操作影响

跨分支任务在卡片上会显示分支来源标识。当列中所有任务均属于当前分支时,Apply Priority Order 恢复正常显示。

按优先级重排(保存)

菜单底部(以分隔线与上方隔开)提供「按优先级重排(保存)」选项:

  • 一键将当前列所有任务按优先级(高 → 中 → 低)重新排列
  • 新顺序会保存到后端,刷新页面后仍然保持
  • 图标为列表+向上箭头,表示这是一个持久化操作

任务卡片日期指示器

看板中的每张任务卡片会显示日期信息(如已设置):

  • 头部:日历图标 + plannedStart ~ plannedEnd 计划日期范围。当年份与当前年一致时自动省略年份,减少视觉噪音。
  • 脚部:时钟图标 + dueDate 截止日期,紧邻相对创建时间显示。
  • 完成时间:处于终态(如 Done)且有 actualEnd 的卡片,在脚部负责人右侧显示实际完成时间(本地时间 M/D HH:mm,跨年显全年;鼠标悬停显示存储的 UTC 值)。
  • 逾期高亮:当任务未处于终端状态(Done / Cancelled)且截止日期已过时,dueDate 以红色高亮显示(text-red-600 dark:text-red-400 font-semibold)。

打开任务详情

点击看板中的任意任务卡片,即可打开任务详情模态框:

  • 底层看板页面保持可见,地址栏自动更新为 /task/:id/:title
  • 支持依赖项钻取导航:在任务详情中点击依赖标签可进一步查看子任务
  • 任务详情中包含 Comments 区域,可查看和追加评论(编辑模式下)
  • 验收标准(AC)列表项会显示序号编号(#1、#2 …),便于引用与沟通
  • 关闭模态框后回到原来的看板视图,保留当前的标签筛选和列排序状态
  • 直接访问 /task/:id 链接时,系统会以看板为背景打开对应任务

看板中的任务卡片本身不支持拖放与点击同时触发;开始拖拽后松开即完成状态变更,不会误打开任务详情。

任务详情键盘快捷键

打开任务详情后,以下快捷键可快速操作:

按键 操作
e / E 进入编辑模式
c 变更状态
d 删除任务
p 打印
Escape 关闭模态框 / 取消编辑
Cmd/Ctrl + S 保存修改

当焦点在 input、textarea、select 或 contenteditable 等可编辑元素内时,预览态快捷键(e/E/c/d/p)会被抑制,不会拦截正常的文字输入。编辑态的 Escape 和 Cmd/Ctrl + S 在可编辑目标内仍然生效。

实时更新

看板视图支持多人协作场景下的实时同步:

  • 其他用户在 Web 界面中拖放任务,你的页面会自动更新卡片位置
  • 外部编辑器修改任务文件后,看板列中的卡片内容和状态会自动刷新
  • 新建或删除任务后,看板会即时反映变化,无需手动刷新
  • 里程碑、文档、决策与 Wiki 的变更同样通过 WebSocket 按类型广播,对应列表原地增量刷新

刷新采用原地调和(reconcile)策略:未变化的数据保持原对象引用,已打开的页面、滚动位置与筛选状态不受广播影响;仅在首次加载、配置变更或增量刷新失败时才回退为整页重载。

results matching ""

    No results matching ""