Add repositories directly into the connected services list.
Review Request #15201 — Created July 28, 2026 and submitted
This change adds a disclosure at the bottom of entries in the connected
services list page to show repositories for each service. When opened,
this provides the list of all connected repositories. This list shows
the repository name, the path (optionally munge-able by the hosting
service so we can show things like "org/repo" for GitHub), and an
indicator for when repositories have access controls.If there are fewer than 25 repositories in a given list, this just shows
them all. When there are more than that, several additional controls are
available. Above the list is a search bar (which searches both names and
paths), and when there are multiple connected accounts within the
service, a drop-down to filter by account. Below the list is a
paginator.
- Ran unit tests.
- Tested both the small and large cases. Verified that search and
filtering worked as expected.
| Summary | ID |
|---|---|
| mrlxyxunsxqxxqymtypkosxxyvyosmzt |
| Description | From | Last Updated |
|---|---|---|
|
What's going on with the double line here, can we make it so that there's only one line. |
|
|
|
I feel like "Limited access" is kind of ambiguous here, almost like this could mean Review Board has limited access … |
|
|
|
I think we could use _get_repository_owner_raw() and _get_repository_name_raw() here instead of parsing. |
|
|
|
This can be one statement: return HttpResponse( html, headers={ 'X-Num-Pages': ..., 'X-Page-Number': ..., 'X-Total-Count': ..., }, ) |
|
|
|
Can you keep the alphabetical order? |
|
|
|
Here, too. |
|
|
|
Missing a "Version Added"> |
|
|
|
We should stick with "Personal Access Tokens" here, especially since we then abbreviate it. |
|
|
|
All other CSS components are documented with the structure at a part-by-part level. This one isn't doing that, and should … |
|
|
|
These parts are missing docs. I know the top-level one is showing the overall structure, but component structure docs are … |
|
|
|
These should be placed alphabetically (it's nested between two cs). |
|
|
|
This section's ordering is all over the place. Can we aim for alphabetical? |
|
|
|
Here and others like it are missing parens. |
|
|
|
We are accessing this.#expanded in every statement. Can we pull out the new value first? |
|
|
|
We perform this check twice. Can we pull out the result into a variable once and then check that? |
|
|
|
This check is done in four places that I noticed. Is this something we can compute once up above and … |
|
|
|
This should be in our standard multi-line format. |
|
|
|
This is missing parens around the comparison. |
|
|
|
'typing.cast' imported but unused Column: 1 Error code: F401 |
|
- Change Summary:
-
Forgot I had a change that needed to be squashed.
- Commits:
-
Summary ID mrlxyxunsxqxxqymtypkosxxyvyosmzt mrlxyxunsxqxxqymtypkosxxyvyosmzt - Diff:
-
Revision 2 (+3860 -256)
Checks run (2 succeeded)
-
-
-
I feel like "Limited access" is kind of ambiguous here, almost like this could mean Review Board has limited access to this repository or something. We say "Private repository" in our docs, how about using "Private" here too?
-
I think we could use
_get_repository_owner_raw()and_get_repository_name_raw()here instead of parsing.
- Commits:
-
Summary ID mrlxyxunsxqxxqymtypkosxxyvyosmzt mrlxyxunsxqxxqymtypkosxxyvyosmzt - Diff:
-
Revision 3 (+3850 -256)
Checks run (2 succeeded)
-
-
This can be one statement:
return HttpResponse( html, headers={ 'X-Num-Pages': ..., 'X-Page-Number': ..., 'X-Total-Count': ..., }, ) -
-
-
-
-
All other CSS components are documented with the structure at a part-by-part level. This one isn't doing that, and should be updated for this. That style's important because we often have attributes (e.g., ARIA, roles, tabindexes) that must be specified per-part, and parts can sometimes be used within multiple other parts.
I don't want to get to a point where different components are documented in different ways. The approach used in Ink is the right one to follow.
-
These parts are missing docs.
I know the top-level one is showing the overall structure, but component structure docs are always part-by-part. That style's important because we often have attributes (e.g., ARIA, roles, tabindexes) that must be specified per-part, and parts can sometimes be used within multiple other parts.
I want to make sure we don't start to diverge too much as we write new ones, both for ourselves and for agents. When in doubt, use the components in Ink as a reference.
This all applies throughout the file.
-
-
-
-
-
-
This check is done in four places that I noticed. Is this something we can compute once up above and then reuse?
A descriptive name and maybe would also help make this code a bit more clear, because it's not entirely clear to me how we get into this condition.
-
-
- Commits:
-
Summary ID mrlxyxunsxqxxqymtypkosxxyvyosmzt mrlxyxunsxqxxqymtypkosxxyvyosmzt - Diff:
-
Revision 4 (+3922 -186)
- Commits:
-
Summary ID mrlxyxunsxqxxqymtypkosxxyvyosmzt mrlxyxunsxqxxqymtypkosxxyvyosmzt - Diff:
-
Revision 5 (+3920 -184)
