feat(tasks-ui): one task window everywhere, cards are their own detail entry

Round-three review feedback:

- NO PER-CARD DETAIL BUTTON: the ellipsis control is gone from graph cards
  and tree rows — the card IS the affordance, and clicking it opens the
  detail window (the transcript jump moved inside as the primary button).
  Fold aggregates keep click-to-expand.
- ONE TASK WINDOW: every task surface (board row, agent node task line, the
  node detail list, and creating a task) now opens the same non-fullscreen
  DRAGGABLE window (TaskWindow.tsx + its TaskPopover shell): markdown
  description by default, 编辑 switches the same card to multi-line editing,
  plus owner reassignment, complete/reopen and a two-step delete. The board
  lost its overflow menu and its Modal entirely; create uses the same window
  in create mode.
- REUSE: TaskPopover (4 call sites), MultilineField (the plugin's own
  multi-line input — the host primitive set has none), OwnerPicker,
  TaskCreateButton, and the shared glyph/TaskLine helpers across both modes.
- 3 new copy keys across zh/en/ja and the 18 third-language dictionaries.

Tests: the node-click spec now asserts the detail window (and that the jump
button inside it navigates), a new spec pins 'no nested control inside a
card', and two more cover the shared window: markdown-first view then
multi-line edit posting an 'edit' with the current revision, and immediate
owner reassignment. Full suite 1406 passed / 133 files.
This commit is contained in:
Menghuan1918
2026-09-27 22:18:19 +08:00
parent e41f10afc9
commit 7cbfc766a1
31 changed files with 799 additions and 347 deletions
+6
View File
@@ -455,6 +455,9 @@ export const zh = {
teamTaskError: '操作失败:{message}',
teamTaskDeleted: '已删除',
teamTaskActions: '任务操作',
teamTaskDetail: '任务详情',
teamTaskNoDescription: '暂无描述,点击「编辑」补充',
teamTaskBlockedBy: '被阻塞',
teamTaskSubjectPlaceholder: '一句话说明要做什么',
teamTaskDescriptionPlaceholder: '补充说明(可选)',
teamFilterAll: '全部',
@@ -959,6 +962,9 @@ export const en: Record<keyof typeof zh, string> = {
teamTaskError: 'Operation failed: {message}',
teamTaskDeleted: 'Deleted',
teamTaskActions: 'Task actions',
teamTaskDetail: 'Task detail',
teamTaskNoDescription: 'No description yet — click Edit to add one',
teamTaskBlockedBy: 'Blocked by',
teamTaskSubjectPlaceholder: 'One line describing the work',
teamTaskDescriptionPlaceholder: 'Extra context (optional)',
teamFilterAll: 'All',