Skip to content

feat(threads): snooze until github replies - #1

Draft
ashx-j wants to merge 13 commits into
prototype/github-snooze-upstream-basefrom
feat/snooze-until-github-reply
Draft

ashx-j wants to merge 13 commits into
prototype/github-snooze-upstream-basefrom
feat/snooze-until-github-reply

Conversation

@ashx-j

@ashx-j ashx-j commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

snooze a thread until new feedback arrives on a linked github pr or repository discussion. the server returns the thread to the inbox as unread without starting an agent turn, so waiting work can stay out of the inbox without choosing a timer.

  • "until a github reply" waits for a new outside comment or submitted review on a pr, or a comment or reply on a discussion. prs can be open, closed or merged.
  • "until changes are requested" waits for a new submitted changes-requested review on a linked open pr. reviews without text count. ordinary comments and approvals do not.

both ignore existing feedback and activity from the signed-in github account. choose the conversation when several are linked. checks run about every two minutes, survive server restarts and respect the shared github quota limits. there is no deadline, and manual wake is available. web, desktop, mobile and agent tools use the same server behavior.

discussion support is limited to linking, listing, unlinking and opening github. the full discussion reader and editor have been removed. no posting, reactions, voting, label editing or category editing is included.

this version integrates upstream main at 101f8b2f55. github reads use the shared http api with pinned credentials and credential-aware caching. waiting text and manual wake use upstream's thread status line. explicit usage-limit recovery clears the github snooze suppression, while stale recovery commands remain rejected.

evidence

captured through t3 code's built-in browser against isolated development state. the before image uses upstream's sidebar at 101f8b2f55; the after image uses this pr. the workspace and thread are synthetic, and github responses come from a local fixture. no github comment was posted and no agent turn was started.

before, upstream timed snooze menu after, github feedback options
upstream timed snooze menu github reply and changes-requested snooze choices

snoozed thread with waiting label, conversation link and manual wake action

thread returned to the inbox after github feedback

30-second selection and wake recording. idle time is omitted and labelled. full recording retains the normal background-check timing.

verification

20 focused test files pass across the batches below. they cover feedback filtering and pagination, credentials and quota pauses, restart recovery, stale actions, explicit recovery, undo, client state, menus, mobile list logic and mcp permissions. github responses are mocked. no provider or live github mutation is needed for these tests.

vp test run apps/server/src/sourceControl/GitHubReplyReader.test.ts apps/server/src/sourceControl/GitHubDiscussions.test.ts apps/server/src/orchestration-v2/runtimeLayer.test.ts apps/server/src/orchestration-v2/RestartContinuation.test.ts apps/server/src/mcp/ThreadDiscussionMcpService.test.ts apps/server/src/orchestration-v2/ThreadManagementService.test.ts

vp test run apps/server/src/orchestration-v2/ThreadManagementService.test.ts packages/contracts/src/githubReply.test.ts packages/contracts/src/threadDiscussion.test.ts packages/client-runtime/src/githubReplyConversations.test.ts packages/client-runtime/src/state/threadCommands.test.ts packages/client-runtime/src/state/threadSnoozed.test.ts packages/client-runtime/src/work-log/presentation.test.ts apps/web/src/components/githubReplySnoozeMenu.logic.test.ts apps/web/src/components/threadActionMenu.logic.test.ts apps/web/src/components/Sidebar.logic.test.ts apps/web/src/hooks/useThreadActions.undo.test.ts

vp test run apps/server/src/mcp/ThreadDiscussionMcpService.test.ts apps/server/src/mcp/McpToolAccess.race.test.ts apps/server/src/mcp/OrchestratorMcpToolkit.integration.test.ts apps/server/src/mcp/toolkits/worktree/registration.test.ts apps/mobile/src/features/threads/threadListV2.test.ts

the new upstream thread-management fixture and the discussion mcp tests were rerun after integration fixes. package typechecks passed with tsc --noEmit -p apps/server/tsconfig.json, tsc --noEmit -p apps/web/tsconfig.json and tsc --noEmit -p apps/mobile/tsconfig.json. formatting and lint passed for files changed against upstream, with lint warnings remaining.

the integrated browser pass verified reply-snooze selection, the waiting state and return to the inbox as unread after mocked feedback. persisted state confirmed the reply notice and zero runs for the test thread. native mobile device verification has not been run. ci status must be checked on this head; queued or skipped jobs do not establish a passing implementation check.

upstream scope

fork prototype for ideas discussion #16459. explicit maintainer approval of the direction and scope has not yet been received.

the remaining behavior choice is unread-only failure handling. an account change or repeated unavailable reads ends the wait and returns the thread unread without showing a failure reason in clients. a github quota pause keeps the wait active.


gpt 6 astra and gpt 6.1 sol in codex through t3 code, writing on behalf of ash.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Oct 6, 2026
@ashx-j
ashx-j changed the base branch from prototype/snooze-replies-base to prototype/github-snooze-upstream-base October 9, 2026 11:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant