Mark unread turn summaries in the switcher and Project rows

This commit is contained in:
Ian Gulliver
2026-10-16 11:08:57 -07:00
parent ec169583ff
commit 34db128afe
24 changed files with 755 additions and 239 deletions
+35 -1
View File
@@ -125,6 +125,16 @@ paths:
"400": { $ref: "#/components/responses/Error" }
"404": { $ref: "#/components/responses/Error" }
/api/me/summary-reads:
get:
operationId: getSummaryReads
responses:
"200":
description: For each active task the calling user has read a turn summary of, the highest seq read.
content:
application/json:
schema: { type: object, additionalProperties: { type: integer, format: int64 } }
/api/me/pane-focus:
put:
operationId: setPaneFocus
@@ -277,6 +287,23 @@ paths:
schema: { $ref: "#/components/schemas/TaskWorkflow" }
"404": { $ref: "#/components/responses/Error" }
/api/tasks/{taskId}/summary-read:
parameters:
- { name: taskId, in: path, required: true, schema: { type: string } }
put:
operationId: markSummaryRead
description: Records that the calling user has read the task's turn summaries up to seq. A seq at or below the one already recorded changes nothing; a higher one emits summary.read, owned by the user.
requestBody:
required: true
content:
application/json:
schema: { $ref: "#/components/schemas/SummaryRead" }
responses:
"204":
description: Recorded.
"400": { $ref: "#/components/responses/Error" }
"404": { $ref: "#/components/responses/Error" }
/api/tasks/{taskId}/workflow/run:
parameters:
- { name: taskId, in: path, required: true, schema: { type: string } }
@@ -985,7 +1012,7 @@ components:
Task:
type: object
required: [id, project_id, title, merge_title, branch, worktree_path, base_ref, port_base, color, status, created_by, created_at, reviewing, merging, discarding, merging_into_parent]
required: [id, project_id, title, merge_title, branch, worktree_path, base_ref, port_base, color, status, created_by, created_at, reviewing, merging, discarding, merging_into_parent, summary_seq]
properties:
id: { type: string }
project_id: { type: string }
@@ -1016,6 +1043,7 @@ components:
discarding: { type: boolean, description: "Whether a Discard was started and the task isn't closed yet: its summary turn is waiting for the running turn, running, or done and the task is being removed." }
parent_task_id: { type: string, description: "The task whose agent created this one as its subtask; absent for other tasks." }
merging_into_parent: { type: boolean, description: "Whether a merge of this subtask into its parent was requested and the parent hasn't merged it yet." }
summary_seq: { type: integer, format: int64, description: "The seq of the task's latest turn.ended event with summary: true; 0 when it has none." }
Todo:
type: object
@@ -1502,6 +1530,12 @@ components:
created_at: { type: string, format: date-time }
updated_at: { type: string, format: date-time }
SummaryRead:
type: object
required: [seq]
properties:
seq: { type: integer, format: int64, description: "The seq of the turn.ended event whose summary was shown." }
PaneFocus:
type: object
required: [focused, drafting]