githubnext/ace2Public

Ace: a collaborative coding environment on the team's own machines

feat(app): set up a GitHub project's checkout on this machine before creating channels #205

Mergediamnbutlermerged 2 commits intomainfromrefs/pull/205/head
  1. IA

    Closes #204. Part of #15 (follows #157); dogfooding gap from #5.

    On Nate16, ace2 is checked out only on natembp. The project appeared as `ace2 · natembp`, and none of its channel creation entry points worked. GitHub projects now show their ordinary name everywhere. Folders without a GitHub remote on another host keep the host label.

    If a GitHub project has no checkout on this machine, **Set up on this Mac** opens a setup dialog. So do New channel / + (sidebar, All Projects, dashboard) and GitHub **Open in a channel**. The dialog has an editable destination (default `~/code/<repo>`), and nothing is cloned until you confirm it. The host runs a new local-only `project-clone`, which does a plain `git clone` of the validated `https://github.com/<owner>/<repo>.git` and registers the checkout through `project-open`.

    - **Existing folders:** a matching checkout is opened instead of cloned. Any other non-empty folder is refused, with the error shown in the form and the path kept. - **Continuing work:** creation continues here with its dashboard or GitHub text. Dashboard drafts follow the project's identity, so they survive setup until a channel admits them. - **No gh:** `gh repo clone` isn't used. Its authenticated GraphQL lookup is what organization SAML SSO refused on Nate16, even though ace2 is public. Private repositories use the host's existing Git credentials.

    **Validation:** - `bun types`, `bun run ci`, and the React Doctor diff scan pass. The only warning is the `App` complexity one that was already there. - Real smoke through a source `ace serve` gateway with a temporary `HOME`/`ACE_HOME`, no Git config, and no `GH_TOKEN`: - Bad, relative, and unrelated-folder destinations were refused, and the unrelated folder was untouched. - `~/code/ace2` cloned public ace2 anonymously and registered as `githubnext/ace2`. - Repeating with `GitHubNext/ACE2` opened the existing checkout. - `create` made a channel listed with that repo and root.

    - Native, after installing signed Canary 0.0.20 (#206, build-only run 37650079277, DMG SHA-256 `04fe5f0a…1840` matched, Gatekeeper accepted) 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`. It was edited to `/Users/natebutler/code/ace2`, and **Clone and start channel** cloned and created a channel within about 12 seconds, with no SSO prompt or error. - The channel (ID `a24ec4567772d9e0`, renamed in the native UI to `nate16-ace2-test`) appears with natembp's channels under plain **ace2**. - Read-only peer metadata reports host `nate16-1`, not hosted, repo `githubnext/ace2`, and project ID `github:githubnext/ace2`. Its project and root are `/Users/natebutler/Code/ace2`: macOS resolved the typed lowercase `code` to the existing `Code` folder, so only an exact-string path assertion differed. - No model run was checked on Nate16, which has no providers configured.

    ### Built in Ace

    Implementation, checks, the smoke test, the issue, and this PR were done in an Ace channel. Outside Ace: - **Coordination and review:** Codex coordinated and reviewed the work (#9, #108, #52). - **Remote testing:** Codex tested the installed UI on Nate16 over macOS Screen Sharing, because Ace can't operate a teammate host's desktop yet (#202).

  2. iamnbutlermerged a1be4f3f9926last month on GitHub

  3. iamnbutlerclosedlast month on GitHub

  4. iamnbutlerreferenced this in chore(desktop): prepare canary 0.0.20 #206last month on GitHub