Skip to content

feat(guided-review): Authored by me tab on the start tab - #151

Merged
sleeyax merged 16 commits into
mainfrom
feat/guided-review-authored-tab
Oct 12, 2026
Merged

sleeyax merged 16 commits into
mainfrom
feat/guided-review-authored-tab

Conversation

@sleeyax

@sleeyax sleeyax commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Adds an Authored by me tab beside Assigned to me on the start tab, listing your open PRs and MRs with a one-click Review, per the spec in #143.

Notes for review:

  • A truncated tab's total reads as the listed count followed by +, since one tab merges several searches and pages.
  • On GitLab, a reviewer revoking their own approval reads as approval-reset, the same as a reset by a push; GitLab does not tell them apart.
  • GitLab's push time comes from mergeRequestDiffs, which GitLab marks experimental.

Closes #143
Closes #150
Closes #146
Closes #147
Closes #148
Closes #149

sleeyax and others added 16 commits October 12, 2026 13:46
…-offs per tab

The preferences file and the check-offs file each hold an `assigned` and an `authored` key, so the Authored by me tab can have its own filters, sort, columns and check-offs.
A file in the old flat shape reads as `assigned`, so upgrading keeps every filter and check-off the reviewer has now.
`authored` starts at its own defaults: the six review statuses with all but `approved` shown, and the columns check-off, change, title, reviewers, updated, CI, state and local.
Each field still falls back to its default on its own, per tab.
The Assigned tab reads and writes the `assigned` key and behaves as before; authored check-offs are kept untouched until that tab lists anything.

Refs #150

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…quests, not review requests

The listing is about to hold the change requests the viewer authored beside those they review, so `listReviewRequests` becomes `listChangeRequests` and `ReviewRequestHost` becomes `ListedHost`.
Nothing it lists changes.

Refs #146

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ir review requests

The inbox listing searches `is:pr is:open author:@me archived:false` on GitHub as a third search, of the same size and in the same call as the other two, so one Refresh lists both and a host that fails says so once.
Each host now answers its review requests and the change requests the viewer authored, with whether each list was cut off, so a tab's total and its check-offs can tell a partial list from a full one.
The inbox lists the authored change requests beside the review requests, each joined with the review started here by the same ID, so a change request on both tabs shares one review, its guide and its drafts.
An authored change request is a review request's fields without the reviewer's own state, team and changed-since-review, which later tickets extend with the review status and reviewers.
GitLab answers no authored change requests yet.

Refs #146

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ored by me tab

The start tab's review section switches between `Assigned to me · n` and `Authored by me · n`, opening on Assigned.
A tab's total is what it lists before any filter, with a `+` when a host listed only part of it, and no number until the list is in.
Authored rows start, open and continue a review as Assigned rows do, with the guide's state, a moved head and the drafts in the Here column.
Each tab keeps its own forge filter, Hide drafts, sort, columns and search; New review and Refresh serve both from the section header.
The search on Authored looks in the title, project and number, since the author is always the viewer.
Authored offers no States, Needs my attention, check-off filter or the state, reviewers and check-off columns until it lists review statuses and check-offs.
A host's truncation note shows on the tab it cut short, and its error on both.
The sidebar count still counts only Assigned.

Refs #146

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ir review requests

The GitLab inbox query asks for the viewer's opened `authoredMergeRequests` beside the MRs they review, one page of 100 each, so a host behind the version gate or not logged in fails for both lists with one error.
An authored MR carries the same listed fields as a review request, drafts included, and its own page's `hasNextPage` marks the Authored list truncated.
The query scores 131 of gitlab.com's 250 complexity points.

Refs #147

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…th tabs

An MR the viewer authored and reviews is listed on both tabs, and each row asked GitLab for its drafts.
One listing now counts each review's drafts once and shares the count between the rows.

Refs #147

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both adapters report each authored change request's combined review status, its reviewers with their latest state, whether a review arrived since the last push, and when the newest review arrived.
A change request beats any approval, an approval still standing beats one taken back, and the rule is the same on both forges rather than either's merge verdict.
On GitHub, latestReviews keeps a DISMISSED review, and a ReviewDismissedEvent that names a pullRequestCommit tells a push dismissal from a manual one, which names none; this was checked read-only against public grafana/grafana and nodejs/node PRs.
A reviewer asked again reads as requested, as GitLab resets their state when asked again.
On GitLab, a push reset and a reviewer revoking their approval both give UNAPPROVED, checked read-only against gitlab-org/gitlab MRs, so both read as an approval reset.
GitLab's reviewed-since-push compares the review time to the head commit's date, as the Assigned tab already does.
The GitLab query now scores 159 of 250 on gitlab.com.
The Authored tab gains the State and Reviewers columns, the States filter over the six statuses, Needs my attention, and reviewer names in its search.
The sidebar count still counts Assigned only.

Refs #148

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Authored rows get the check-off box and the tab gets the check-off filter, as on Assigned.
An authored check-off records the review status and the newest review's time, and comes back when either differs, never on a push alone.
The newest review's time is compared by inequality, since a GitLab approval reset can lower it or clear it.
Following a listing drops authored check-offs by the same rule as assigned ones, reading the Authored list's own truncation.
The check-off RPC and the client's held rows and optimistic marks are now per tab, so a check-off on one tab leaves the same MR on the other alone.
The test that read the check-offs file to show tabs apart now asserts through the inbox in both directions.

Refs #149

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Authored by me

Asking a reviewer again on GitHub no longer hides a change request they left, since a blocking review is never hidden behind an approval.
Their review on the head then counts as one since the last push, like any other standing review.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ent on Authored by me

GitHub's `latestReviews` gives a reviewer's latest review of any kind, so a comment after an approval or a change request hid the verdict.
Each reviewer's verdict now comes from `latestOpinionatedReviews`, and they read as commented only when they gave none.
That list leaves dismissed reviews out, so a push dismissal is read from its event, by reviewer, and holds until they give a newer verdict.
Checked read-only on public PRs: cli/cli#14475 shows COMMENTED in `latestReviews` and APPROVED in `latestOpinionatedReviews`, and nodejs/node#66651 shows a dismissed review in the first and nothing in the second.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uthored by me

A review now counts as one since the last push only when it came after GitLab's newest diff version of the MR, which is when the head was pushed, rather than after the head commit's own date.
A review between committing and pushing no longer reads as feedback on the push.
Measured read-only on gitlab.com, the listing query scores 165 of the 250 allowed with `mergeRequestDiffs(first: 1)`, up from 159.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d order

On a narrow screen an Assigned card shows its review state, what is kept here and CI in that order again, as it did before the tabs.
Each tab now names its card's tinted order, and Authored follows the same one with its reviewers after the state.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A listed host and the inbox now hold their lists under `assigned` and `authored`, the same keys as `truncated` and the tabs, so a tab reads its list by name instead of through a switch.
Both forge adapters report a host they could not list through one `unlistedHost`, the inbox joins both tabs' lists through one helper, and the names that shadowed or read as slang are plain again.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every tab has states, an attention filter and a spec for each of its columns, so the nulls, the partial column specs and the Toolbar's `attention` switch that stood for a tab without them are gone.
TabSection takes the preferences hook's own `InboxPreferencesControl`, the state names share one `capitalised`, and a check-off rule is one function whose change names its tab once.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erywhere

The status schema, the States hint and the README now all read an approval reset as an approval taken back by a push, with a GitLab reviewer revoking their own approval reading the same.
The README no longer repeats the tab totals the tabs already show, and says what the review status combines instead of what the row shows.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… own line

The comments the Authored tab touched hold one sentence per line, the GitLab listing names its complexity limit without a score that goes stale, and none names an alternative it does not take.

Refs #143

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sleeyax
sleeyax marked this pull request as ready for review October 12, 2026 12:54
@sleeyax
sleeyax merged commit 8647e29 into main Oct 12, 2026
1 check passed
@github-actions github-actions Bot mentioned this pull request Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment