Conversation
…ations > Source Control
nhopeatall
left a comment
There was a problem hiding this comment.
Summary
Clean UI-only refactor that moves repository settings to their logical home under Integrations > Source Control. The implementation is correct and all CI checks pass.
Should Fix (non-blocking)
-
web/src/components/projects/integration-form.tsx:437 — The
saveMutationcallstrpcClient.projects.update.mutatedirectly instead of reusing the existinguseProjectUpdatehook (defined inuse-project-update.ts, already used byProjectGeneralFormandProjectHarnessForm). This duplicates the mutation call and cache invalidation logic. It's understandable since the SCM save combines multiple operations (project update + integration upsert + credential set), but worth noting — if cache invalidation logic changes inuseProjectUpdate, this spot will need a manual update too. Consider reusing the hook'smutateAsyncas the first step of the combinedmutationFnto keep invalidation logic DRY. -
web/src/components/projects/integration-form.tsx:636 —
IntegrationFormcreates a newuseQuery(trpc.projects.getById.queryOptions({ id: projectId }))call, but the parent component ($projectId.tsx:25) already fetches the same query. TanStack Query deduplication means no extra network request, but this could be simplified by passing the project data as a prop from the parent page instead of re-querying. This would also avoid the brief moment whereSCMTabrenders with default values beforeprojectQueryresolves.
Both are minor — the implementation is functionally correct and safe to merge.
🕵️ claude-code · claude-opus-4-6 · run details
Summary
Moves the
Repository,Base Branch, andBranch Prefixfields from the General tab to the Integrations > Source Control tab in project configuration. This is a UI-only change — storage and backend contract are unchanged.repo,baseBranch, andbranchPrefixinputs fromProjectGeneralForm(General tab)SCMTab) with the three fieldsprojects.updatefor the project-level fields in addition to the integration upsert and credential mutationsIntegrationFormfetches the project viatrpc.projects.getByIdand passes it toSCMTabfor prefillingTest plan
repo,baseBranch,branchPrefixfields are gone from the General tabnpm test— all pre-existing tests passnpm run typecheckandnpm run lint— both pass cleanRelated
Trello card: https://trello.com/c/69b5c9435bce8324cf97b3fd
🤖 Generated with Claude Code
🕵️ claude-code · claude-sonnet-4-6 · run details