You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Lists: GitHub-backed lists (create from a repo, refresh, repo link and private-repo tag) #50
Part of #49 — Lists parity gaps: GitHub-backed lists, saved views, view modes and collaborative editing
Web behaviour (/help/lists → GitHub-backed List): a list can be created from a GitHub
repository's issues. Rows map to issues (title, body, labels, assignees, state) — adding a row
creates an issue, editing updates it, deleting closes it. The schema is fixed; only the parent
list is editable. Refresh from GitHub pulls the latest issues.
Android has a :feature:integrations GitHub section (repos, issues, create/comment) but cannot
create or operate a GitHub-backed list.
Repo picker on list creation, sending githubRepo / githubSource; requires GitHub linked with
the Issues scope.
Link the repository under the list title, with the Private repo tag — the tag describes the repository's visibility on GitHub, not the list's, and warns that an invited collaborator may
hit a sign-in or "not found" page. Visibility is re-read on each sync.
Refresh from GitHub action (POST /api/lists/{id}/refresh is already wired).
Row edits must map to the issue operations, and the schema editor must be locked to parent-only
for these lists.
GET /api/github/orgs and GET /api/github/repos/{owner}/{repo}/next-issue-number are also
unused and belong here.
Tests: create with githubRepo; schema editor locked; refresh updates rows.
Filed from the parity review of feature/parity-wip @ 14d7795 against interlinedlist.com (OpenAPI /api/openapi.json, 233 paths) and the public help centre.
Implemented in the PR above (branch issue/50-github-backed-lists). Closing here — review and any follow-up happens on the PR.
Two facts established live that are worth keeping: POST /api/lists with source: "github" and a missing or slash-less repo returns 400 {"error":"githubRepo is required for GitHub-backed lists (format: owner/repo)"}, so client validation now matches the server exactly; and GET /api/github/repos / /api/github/orgs return bare arrays while next-issue-number returns {"nextNumber": n}.
githubSource: "issues" is an informed assumption, not a verified one — the server does not validate it before calling GitHub, so its accepted values could not be established. Worth confirming.
The end-to-end create could not be exercised: on the test account both GET /api/github/repos and /api/github/orgs return 200 [], so there is no repository to pick. The implementation distinguishes not linked, token refused / missing Issues scope, and linked but empty (an org OAuth-approval problem) with separate explanations, but only the first two are covered by tests against mocked responses.
One behaviour change beyond the issue's text: the Lists FAB no longer creates an untitled "New list" instantly — it opens a sheet where you choose Local or GitHub-backed. ListsViewModel.createList became dead code and was removed.
Activity
Adron commentedon Sep 16, 2026
Implemented in the PR above (branch
issue/50-github-backed-lists). Closing here — review and any follow-up happens on the PR.Two facts established live that are worth keeping:
POST /api/listswithsource: "github"and a missing or slash-less repo returns400 {"error":"githubRepo is required for GitHub-backed lists (format: owner/repo)"}, so client validation now matches the server exactly; andGET /api/github/repos//api/github/orgsreturn bare arrays whilenext-issue-numberreturns{"nextNumber": n}.githubSource: "issues"is an informed assumption, not a verified one — the server does not validate it before calling GitHub, so its accepted values could not be established. Worth confirming.The end-to-end create could not be exercised: on the test account both
GET /api/github/reposand/api/github/orgsreturn200 [], so there is no repository to pick. The implementation distinguishes not linked, token refused / missing Issues scope, and linked but empty (an org OAuth-approval problem) with separate explanations, but only the first two are covered by tests against mocked responses.One behaviour change beyond the issue's text: the Lists FAB no longer creates an untitled "New list" instantly — it opens a sheet where you choose Local or GitHub-backed.
ListsViewModel.createListbecame dead code and was removed.merge: #50 GitHub-backed lists (PR)