• Will Chen's avatar
    Fix repo name mismatch when GitHub repo name contains spaces (#2377) · 9108f67c
    Will Chen 提交于
    ## Summary
    - Adds `normalizeGitHubRepoName` function that converts spaces to
    hyphens to match GitHub's automatic normalization behavior
    - Applies normalization when creating repos, checking availability, and
    storing repo names in the database
    - Fixes issue where Dyad stored "my app" but GitHub created "my-app",
    causing a mismatch
    
    Fixes #1336
    
    ## Test plan
    - Unit tests added for `normalizeGitHubRepoName` function covering edge
    cases
    - E2E test added to verify repo names with spaces are properly
    normalized when creating and syncing
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2377">
      <picture>
    <source media="(prefers-color-scheme: dark)"
    srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
    <img
    src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
    alt="Open with Devin">
      </picture>
    </a>
    <!-- devin-review-badge-end -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Normalize GitHub repo names by converting all whitespace to hyphens so
    our stored name matches GitHub’s actual repo name. Fixes #1336.
    
    - **Bug Fixes**
      - Add normalizeGitHubRepoName to convert whitespace to hyphens.
    - Apply normalization for availability checks, repo creation, remote
    URLs, and DB storage.
    - Add unit tests for edge cases and an E2E test for create/sync with
    spaced names.
    
    <sup>Written for commit 0735ce38a11fced50e670821e58289dcc53fe86f.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > **Medium Risk**
    > Touches the GitHub create/availability flow and the repo name stored
    in the app DB, which could break GitHub linking if normalization is
    incorrect. Logic is small and well-covered by new unit and E2E tests,
    reducing risk.
    > 
    > **Overview**
    > Fixes repo-name mismatches when users enter names containing
    whitespace by introducing `normalizeGitHubRepoName` (trim + collapse
    whitespace to `-`).
    > 
    > Applies normalization to repo availability checks, repo creation
    payloads, generated remote URLs, and `updateAppGithubRepo` persistence
    so the app consistently uses GitHub’s normalized repo name.
    > 
    > Adds Vitest unit coverage for normalization edge cases and a
    Playwright E2E test that creates/syncs a repo named with spaces and
    asserts the hyphenated name is used end-to-end.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    0735ce38a11fced50e670821e58289dcc53fe86f. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    ---------
    Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
    9108f67c
名称
最后提交
最后更新
.claude 正在载入提交数据...
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
makers 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxfmtrc.json 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CLA.md 正在载入提交数据...
CLAUDE.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
lint-staged.config.js 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...