Skip to content

Set up a GitHub project's checkout on this machine from channel creation #204

Description

@iamnbutler

A GitHub project checked out only on another of the person's hosts showed as ace2 · natembp on Nate16, and every channel creation entry point was missing or disabled there. The person expected one ace2 project across machines and chose to set up a checkout on Nate16 and run channels there, with a default folder they can change.

Expected

  • A GitHub-backed project shows its ordinary name (ace2) in the picker and All Projects regardless of which host has a checkout. Folders without a GitHub remote keep host disambiguation; a channel's host stays independent.
  • A GitHub project without a checkout on this machine offers Set up on this Mac. New channel / + (Channels sidebar, All Projects per-project +, dashboard, GitHub Open in a channel) reaches setup instead of being hidden. Selecting a project never clones.
  • Setup shows an editable destination, ~/code/<repo> by default, before cloning. The host clones asynchronously, expands ~, normalizes the path, and registers the checkout through the existing project-open machinery. An existing matching checkout is opened; other non-empty folders are refused; failures stay in the form with the path preserved; Ace never deletes a partial clone.
  • A creation that led to setup continues locally with its initial dashboard or GitHub text; drafts survive until admission. Standalone setup only adds the project. Nothing is created or run on the other machine.
  • Cloning must not depend on gh's authenticated GraphQL lookup: on Nate16, gh repo clone githubnext/ace2 is refused by organization SAML SSO applied to the gh token even though ace2 is public, while anonymous git ls-remote https://github.com/githubnext/ace2.git works. A plain git clone of the validated https://github.com/<owner>/<repo>.git works for public repositories and uses existing Git credential helpers only when the server requires authentication.

Part of #15; follows #157, which merged repository identity but deliberately creates only from this host's checkout. Dogfooding gap from #5.

Activity

  1. iamnbutler commented on Oct 7, 2026

    @iamnbutler
    ContributorAuthor

    Validated natively with signed build-only Canary 0.0.20 (#206, run 37650079277; DMG SHA-256 04fe5f0a56910a5cf6b7fcc2ddcde07eb81506607537d4873d01fc47a1ac1840 matched, Gatekeeper accepted), installed on natembp and Nate16.

    • On natembp, existing channels and drafts were kept.
    • On Nate16, the sidebar's New channel + in ace2 opened setup with ~/code/ace2, edited to /Users/natebutler/code/ace2. Clone and start channel cloned public ace2 and created a channel within about 12 seconds, with no SSO prompt or error.
    • The channel a24ec4567772d9e0 (renamed natively to nate16-ace2-test) is listed with natembp's channels under plain ace2.
    • Read-only peer metadata: host nate16-1, not hosted, repo githubnext/ace2, project ID github:githubnext/ace2, and project/root /Users/natebutler/Code/ace2. macOS resolved the typed lowercase path to the existing Code folder; only an exact-string path assertion differed.
    • No model run was checked on Nate16 (no providers configured there). Broader two-host acceptance remains in Verify repository-based project identity in the native app and across two hosts #15.
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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions