chore: release 0.1.57 - #234
Merged
Merged
Conversation
The board merges a repo's copies across engines by (githubOwner, githubName), but that identity was captured once at registration and never again. The phone's "New project" git-inits an empty folder and registers it BEFORE anything is cloned into it, so the row is born with no identity and never regains one: the repo shows twice, and "Run on <box>" re-clones a copy the box already has, into a second directory. Read the identity from the repo's `origin` URL instead of `gh repo view`, and re-derive it on every projects:list so a repo that gains a remote later repairs itself. `gh repo view` needed gh installed, authed and online, so a box missing any of the three silently lost its identity; with no argument it also resolves through BaseRepo(), which reports a fork's PARENT, so two engines could derive two different identities for the same clone. The repair writes through a new repo.updateProject rather than upsertProject, which would have bumped lastOpenedAt and reshuffled the sidebar on every board load. The card key is now lowercased: two clones of one repo really do disagree on casing (clawnify/taskwindow here against clawnify/TaskWindow on a box) and GitHub treats those as the same repo.
The phone's only prominent action on "Add project" was "New", which creates a folder, git-inits it and makes an initial commit. People pressed it meaning "add", then grafted a real repo onto the empty one by hand. The box still shows the seam: TaskWindow's reflog is an initial commit at 21:22:24 followed by a `reset --hard origin/main` twenty minutes later. What that leaves behind is a repo with no origin, which is the one state that can never be merged with its copies on other engines and can never be provisioned onto a second box. Ask the intent up front instead. "Bring one over from GitHub" clones a repo the box's gh can see and registers it in one tap; "Use a repo already on the box" is the old browser; "Start something new" names a folder, inits it, and offers to create the GitHub repo for it at the same time, so a new project is portable from birth rather than a dead end. The repo list is read with `gh api user/repos?affiliation=owner,organization_member` rather than `gh repo list`, which takes a single owner and defaults to the authenticated user: it would have silently omitted every org repo, which for most people is where the work is. Creating the remote is best-effort — if GitHub refuses, the project is still registered and its null githubOwner is how the client knows it has no remote yet. Both halves are v9. Clone and the repo list stay off AteamApi, on the phone's Connection alongside update(), because they address a box rather than an entity on one: the desktop aggregate can't route them and would fall back to the local Mac. A pre-v9 box has neither, and since v7 skew is advisory rather than a refusal, FEATURE_MIN_VERSION.githubProjects is what hides them — an older engine accepts `createRemote` and silently ignores it. Those boxes get the paste-a-URL door instead, which works on anything from v2.
…ocally-then-i # Conflicts: # packages/git-core/src/index.ts # packages/server/src/dispatcher.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
apps/desktop/package.jsonto 0.1.57 and records it inbun.lock. Cuts frommainat2bef2f2, whose CI is green.Every PR merged since v0.1.56:
Protocol goes 8 → 10 (v9 from #220, v10 from #231), which has a fleet-wide side effect worth stating up front: every box is on 8, so once a desktop updates to this release the auto-heal condition in
host.ts(info.protocolVersion < PROTOCOL_VERSION) fires and each box is upgraded to this release on its next SSH connect. Boxes land on a dist carrying #218, #220 and #231 together, which is when the phone's GitHub repo picker becomes available on them.Not included: #114, #86 and #20 remain open. #86 and #20 are CONFLICTING against
main(135 and 218 commits behind), #114 is mergeable but has no CI run and is 109 behind. None can go into this release without being rehabilitated first.Verified before cutting: CI green on
2bef2f2; 443 tests and typecheck pass locally on this tree; Developer ID certX2VZX44YM2and theateam-notaryprofile both confirmed working.