feat(git): openen en opslaan kiezen hun repository #360

Merged
brenno merged 1 commit from feat/git-connection-picker into main 2026-07-19 14:19:43 +00:00
Owner

Sluit de verbindingenlijst af: na #358 (het model plus de WebDAV-kant) en #359 (wachtrij per repo) kan git nu ook meerdere verbindingen aan.

De regel die dit bruikbaar houdt

Niet elke handeling mag vragen. Er zijn er twee soorten:

  • Repo-breed — openen, synchroniseren, zoeken in alle decks, afbeeldingen in de repository. Die gaan over een repository als geheel, dus daar kiest de gebruiker welke.
  • Deck-gebonden — historie, versies, uitbrengen ter review, concept mergen, versie vastleggen, en opslaan van een deck dat al ergens vandaan komt. Die vragen nooit: ze volgen de herkomst van het geopende deck. Vragen zou de gebruiker juist de kans geven daarvan af te wijken, en naar de verkeerde opdrachtgever schrijven levert geen foutmelding op — alleen werk op de verkeerde plek.

En zoals bij WebDAV: met precies één git-verbinding verschijnt er helemaal geen dialoog.

Onder de motorkap

Alle forge-providers zijn families geworden op verbindings-id: gitForgeProvider, nativeGitMirrorProvider, draftMirrorProvider, outboxProvider, syncEngineProvider, gitDeckListProvider, gitDeckTagsProvider. Gekeyd op de id en niet op de configuratie, zodat het herstellen van een typefout in de server-URL een geopend deck niet losweekt van zijn bron.

GitOrigin draagt daarvoor een connectionId. Herkomst uit een oudere versie draagt die nog niet; AppSettings.gitConnectionFor valt dan terug op het vergelijken van de configuratie, zodat zo'n deck niet losgeslagen raakt. Is de verbinding echt verwijderd, dan zegt de app dat — in plaats van stilletjes een andere repo te pakken. Dat is het geval dat git_connection_resolution_test.dart bewaakt.

Splitsingen onderweg

Drie dingen liepen over hun grens en zijn gesplitst, niet gebaselined:

  • de verbindingskiezers → shell_actions_connections.dart
  • het git-menu → _gitMenuItems
  • de werkbranch-beslissing uit saveToGit → _workBranchFor (die nu ook de baseSha teruggeeft, waarmee drie midRound ? origin.baseSha : '' verdwijnen)

Controle

make check volledig groen: 3490 tests, dekking 79,2%.

🤖 Generated with Claude Code

Sluit de verbindingenlijst af: na #358 (het model plus de WebDAV-kant) en #359 (wachtrij per repo) kan git nu ook meerdere verbindingen aan. ## De regel die dit bruikbaar houdt Niet elke handeling mag vragen. Er zijn er twee soorten: - **Repo-breed** — openen, synchroniseren, zoeken in alle decks, afbeeldingen in de repository. Die gaan over een repository als geheel, dus daar kiest de gebruiker welke. - **Deck-gebonden** — historie, versies, uitbrengen ter review, concept mergen, versie vastleggen, en opslaan van een deck dat al ergens vandaan komt. Die vragen **nooit**: ze volgen de herkomst van het geopende deck. Vragen zou de gebruiker juist de kans geven daarvan af te wijken, en naar de verkeerde opdrachtgever schrijven levert geen foutmelding op — alleen werk op de verkeerde plek. En zoals bij WebDAV: met precies één git-verbinding verschijnt er helemaal geen dialoog. ## Onder de motorkap Alle forge-providers zijn families geworden op verbindings-id: `gitForgeProvider`, `nativeGitMirrorProvider`, `draftMirrorProvider`, `outboxProvider`, `syncEngineProvider`, `gitDeckListProvider`, `gitDeckTagsProvider`. Gekeyd op de **id** en niet op de configuratie, zodat het herstellen van een typefout in de server-URL een geopend deck niet losweekt van zijn bron. `GitOrigin` draagt daarvoor een `connectionId`. Herkomst uit een oudere versie draagt die nog niet; `AppSettings.gitConnectionFor` valt dan terug op het vergelijken van de configuratie, zodat zo'n deck niet losgeslagen raakt. Is de verbinding echt verwijderd, dan zegt de app dat — in plaats van stilletjes een andere repo te pakken. Dat is het geval dat `git_connection_resolution_test.dart` bewaakt. ## Splitsingen onderweg Drie dingen liepen over hun grens en zijn gesplitst, niet gebaselined: - de verbindingskiezers → `shell_actions_connections.dart` - het git-menu → `_gitMenuItems` - de werkbranch-beslissing uit `saveToGit` → `_workBranchFor` (die nu ook de baseSha teruggeeft, waarmee drie `midRound ? origin.baseSha : ''` verdwijnen) ## Controle `make check` volledig groen: 3490 tests, dekking 79,2%. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(git): openen en opslaan kiezen hun repository
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Web hardening (push) Has been cancelled
CI / Docs links (push) Has been cancelled
CI / Supply-chain (Trivy · advisory) (push) Has been cancelled
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Has been cancelled
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
CI / Web hardening (pull_request) Has been cancelled
CI / Docs links (pull_request) Has been cancelled
CI / Supply-chain (Trivy · advisory) (pull_request) Has been cancelled
a567d5d398
Met meerdere git-verbindingen moet elke handeling weten naar welke repo
hij gaat. Alle forge-providers zijn daarom per verbinding gekeyd — op id
en niet op de configuratie, zodat het herstellen van een typefout in de
server-URL een geopend deck niet losweekt van zijn bron.

Het onderscheid dat de kiezer bruikbaar houdt: repo-brede handelingen
(openen, synchroniseren, zoeken, afbeeldingen) vragen welke repository,
maar deck-gebonden handelingen (historie, versies, review, mergen, taggen)
nooit — die volgen de herkomst van het geopende deck. Vragen zou de
gebruiker daar de kans geven per ongeluk van af te wijken, en naar de
verkeerde opdrachtgever schrijven geeft geen foutmelding. Bij één
verbinding verschijnt er sowieso geen dialoog.

Is de verbinding van een deck verwijderd, dan zegt de app dat in plaats
van een andere repo te kiezen.

Onderweg gesplitst omdat ze over hun grens liepen: de verbindingskiezers
naar shell_actions_connections.dart, het git-menu naar _gitMenuItems, en
de werkbranch-beslissing uit saveToGit naar _workBranchFor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit e4897bac89 into main 2026-07-19 14:19:43 +00:00
brenno deleted branch feat/git-connection-picker 2026-07-19 14:19:43 +00:00
Sign in to join this conversation.
No description provided.