Thanks for the clear report — this is a real gap, not a stale refresh of an existing field.
T3 does not have a merge-queue state, so a PR that GitHub shows as Queued keeps looking Approved here.
What T3 actually shows
Linked-PR status is built from host snapshot fields that stop at lifecycle + review + checks:
PullRequestStateis onlyopen | closed | merged, with draft overlaid (packages/contracts/src/pullRequest.ts)ThreadPullRequestSnapshotpersistsstate,isDraft,reviewDecision,checksState, andmergeability— nothing for queue membership (packages/contracts/src/orchestration.ts)- The thread “Approved” glyph is the review verdict, shown whenever an open snapshot has
reviewDecision === "approved"(apps/web/src/components/pullRequest/ThreadPullRequestsPanel.tsx) - Sidebar / composer badges use
resolvePullRequestState()and can only render Open / Draft / Closed / Merged (apps/web/src/components/pullRequest/pullRequestIcons.tsx,apps/web/src/components/ThreadStatusIndicators.tsx)
GitHub’s fetch path never asks for queue membership either. List and detail queries request state, isDraft, mergeable, reviewDecision, checks, and autoMergeRequest — not isInMergeQueue / mergeQueueEntry (apps/server/src/pullRequest/gitHubPullRequestJson.ts). The sync reactor copies only those summary fields onto the thread snapshot (apps/server/src/orchestration/PullRequestSyncReactor.ts).
So after a PR is approved and then added to the merge queue:
- GitHub: still
OPEN, stillreviewDecision: APPROVED, andisInMergeQueue: true→ UI says Queued - T3: still
open+approved→ UI says Approved / Open - Once GitHub merges it, T3 already has
state: "merged"and can show Merged as today
autoMergeEnabled is a different thing. It exists on detail (the armed auto-merge control) and is not on the thread snapshot, so it cannot substitute for a yellow Queued badge on a linked PR.
The product already knows enqueue can happen — stack merge treats GitHub’s enqueued response as success and toasts “merged the stack or added it to its merge queue” (apps/server/src/pullRequest/githubStackActions.ts, apps/web/src/components/pullRequest/PullRequestStackMenu.tsx) — but that does not change the displayed status.
Not a duplicate
I did not find an existing issue or Ideas discussion that asks for a Queued merge-queue status on linked PRs. Nearby “queued” threads are about composer/outbox messages, not GitHub’s merge queue.
Suggested shape (if we take this)
This is a small, GitHub-only model addition rather than a general status rewrite:
- Optional
inMergeQueue(or equivalent) onPullRequestSummary,ThreadPullRequestSnapshot, list rows, and detail - Request GitHub
isInMergeQueue(and maybemergeQueueEntry.state) on the existing list + detail reads - Prefer Queued (amber/yellow) over Open + Approved on the linked-PR surfaces: thread panel, list row, sidebar/composer badge, detail header
- Leave other hosts unset; they have no merge queue
- Keep Merged as the terminal state after GitHub completes the queue
CONTRIBUTING.md still prefers Ideas discussions for net-new product work. This one is tightly scoped to an existing PR-status surface, and T3 already enqueues into merge queues, so keeping it as an issue looks reasonable.
I have not changed code or opened a PR.