Add agent task conversation foundation#1323
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 103bdb60f1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 83041e0366
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 06d4958075
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4d3a0c0ec9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
4d3a0c0 to
8ad906e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8ad906e802
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a7b625f1f5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| <MessageTimeline | ||
| agentPubkeys={agentPubkeys} | ||
| channelId={channel?.id ?? conversation.channelId} |
There was a problem hiding this comment.
Pass a task-specific layout key to the timeline
Fresh evidence after the earlier scroll-restoration fix: this dedicated conversation timeline never supplies layoutShiftKey, so MessageTimeline falls back to message-timeline:<channel>:none, the same bucket used by the source channel timeline. Opening a task from a scrolled source channel and then returning can still reuse or overwrite that channel's saved scroll position; pass a stable task discriminator such as conversation.id here.
Useful? React with 👍 / 👎.
| autoRouteAgentPubkeys: autoRoutedAgentPubkeys, | ||
| mentionPubkeys, | ||
| }), | ||
| parentEventId: conversation.threadRootId, |
There was a problem hiding this comment.
Keep older-task replies associated with the selected task
When a thread has task A followed by task B, replying from task A's dedicated view posts a plain reply to the shared threadRootId with no task marker/tag. Since task membership is bounded by the next marker, that new reply sorts after task B's anchor and is excluded from task A (and can appear under task B instead), so users cannot continue an older task once a later task exists in the same source thread.
Useful? React with 👍 / 👎.
| React.useEffect(() => { | ||
| const latestMessage = timelineMessages[timelineMessages.length - 1] ?? null; | ||
| if (latestMessage) { | ||
| markThreadRead(conversation.threadRootId, latestMessage.createdAt); |
There was a problem hiding this comment.
Avoid marking the whole source thread read from a task view
When a dedicated task view is opened for a source thread that also has unread replies outside this task, this advances the global thread:<root> read marker to the latest visible task message. Thread/Home activity uses that root marker via getThreadReadAt, so unrelated replies earlier than this timestamp can be cleared even though the task view never showed or individually marked them; only advance read state for the visible task messages or use task-scoped read state.
Useful? React with 👍 / 👎.
Summary
Stack
Snapshots
Task marker and recap
Channel Tasks tab
Tests
git diff --check origin/main..HEADcd desktop && pnpm check:file-sizes && ./node_modules/.bin/tsc --noEmitcd desktop && pnpm testcargo test --manifest-path desktop/src-tauri/Cargo.toml deep_link --lib