v0.12.0 — GitHub or GitLab: pick the forge for org/repo spawns
Repo-mode spawns learn that not every repo lives on GitHub.
Added
- GitHub / GitLab host choice for
org/reposhorthand. The spawn dialog grows a host toggle (github default) whenever the repo field holdsorg/reposhorthand, and the destination hint now previews the exact origin that will be cloned — no more guessing which forge a shorthand resolves to. GitLab nested subgroups (group/subgroup/repo) are supported: a 3+-segment path forces the gitlab host (GitHub has no such shape) instead of failing with a misleading "relative path" error. API:POST /api/spawnacceptsrepo_host(github|gitlab; absent means github, fully backward compatible).
Fixed
- SSH-cloned checkouts are reused by https/shorthand spawns. Origin matching is now transport-insensitive:
git@gitlab.com:org/repo.git,ssh://git@gitlab.com/org/repo.git, andhttps://gitlab.com/org/repo.gitcount as the same repository, so a repo-mode spawn reuses an existing checkout instead of refusing with "exists and is not …" or cloning a duplicate. Deliberately conservative: anssh://origin with an explicit port never normalizes (a nonstandard port can front a different server), and a missed match degrades to the old behaviour — never to reusing the wrong tree. - Nameless shorthand is refused.
org/.git-style input used to resolve to an empty repository name and collapse the clone destination onto the repos root itself; it now fails up front with "shorthand must end in a repository name".
Full changelog: https://github.com/lacion/fleet-deck/blob/main/CHANGELOG.md#0120---2026-07-15