Skip to content

Lists: GitHub-backed lists (create from a repo, refresh, repo link and private-repo tag) #50

Closed

Description

@Adron

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.

Activity

  1. added
    parityClosing a gap against interlinedlist.com
    P1Big hole in a shipped feature
    on Sep 15, 2026
  2. Adron commented on Sep 16, 2026

    @Adron
    MemberAuthor

    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.

  3. added a commit that references this issue on Sep 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Big hole in a shipped featurearea:integrationsOAuth, cross-posting, GitHubarea:listsListsparityClosing a gap against interlinedlist.com

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions