Problem
There is no UI to associate a project with a git repo, so projects are never git-bound. useProjectGitSync.buildPushArgs() returns null when project.git is absent (src/composables/useProjectGitSync.ts:47), so "Save" silently falls back to local-only and nothing ever reaches git. Because binding never happens, neither git sync nor backend project registration can occur downstream.
What already exists
ProjectGitBinding type is fully defined — src/composables/useProjectGitSync.ts:19-31.
inventoryStore holds configured git sources + PATs (src/stores/inventoryStore.ts).
ProjectRepoAdapter supports both shared_repo_subdir and dedicated_repo strategies.
- Project creation entry points:
src/views/CatalogList.vue:108, src/views/CatalogEntryDetail.vue:182,196 (currently projectStore.createProject() → localStorage only).
Work
GitBindingModal.vue: pick source (from inventoryStore), repo owner/name, branch strategy (shared_repo_subdir | dedicated_repo), subdir.
- Persist binding to
project.git (extend the project model in projectStore.js).
- "Link to Git" affordance in the editor settings tab.
- Auto-bind when forking from a catalog entry that already has a git source (
CatalogEntryDetail.vue).
Dependencies / relations
Size: L (~150 lines incl. modal + source picker).
Problem
There is no UI to associate a project with a git repo, so projects are never git-bound.
useProjectGitSync.buildPushArgs()returnsnullwhenproject.gitis absent (src/composables/useProjectGitSync.ts:47), so "Save" silently falls back to local-only and nothing ever reaches git. Because binding never happens, neither git sync nor backend project registration can occur downstream.What already exists
ProjectGitBindingtype is fully defined —src/composables/useProjectGitSync.ts:19-31.inventoryStoreholds configured git sources + PATs (src/stores/inventoryStore.ts).ProjectRepoAdaptersupports bothshared_repo_subdiranddedicated_repostrategies.src/views/CatalogList.vue:108,src/views/CatalogEntryDetail.vue:182,196(currentlyprojectStore.createProject()→ localStorage only).Work
GitBindingModal.vue: pick source (from inventoryStore), repo owner/name, branch strategy (shared_repo_subdir|dedicated_repo), subdir.project.git(extend the project model inprojectStore.js).CatalogEntryDetail.vue).Dependencies / relations
source_id+ repo coords) and feat(editor): activate git-backed live editing in ProjectEditor (wire dormant ProjectRepoAdapter) #96 (git-backed live editing).Size: L (~150 lines incl. modal + source picker).