test: automated PR review for massive changesets - #29
Conversation
# Conflicts: # package-lock.json
# Conflicts: # package-lock.json # package.json # src/config/generated/config.ts # src/config/index.ts # src/db/index.ts # src/db/types.ts # src/proxy/index.ts # src/service/urls.ts # src/ui/components/CustomButtons/CodeActionButton.tsx # src/ui/views/User/UserProfile.tsx # test/testProxy.test.ts
Brings in commits from main (8c629c2) including ssh-agent support, tag push, Dockerfile optimizations, and various bug fixes.
Brings in commits from main (d6264eb) including dependabot dependency updates (uuid, globals, env-paths, github-actions, types/supertest).
# Conflicts: # package.json # src/db/mongo/pushes.ts # src/db/types.ts # src/ui/utils.tsx # src/ui/views/Login/Login.tsx # src/ui/views/PushDetails/PushDetails.tsx # src/ui/views/PushRequests/components/PushesTable.tsx # test/db/mongo/push.test.ts
Lockfile still reflected the pre-migration react@16/@material-ui tree after the main merge, causing npm ci to fail against @headlessui/react.
npm 11 resolved @emnapi/core and @emnapi/runtime differently than npm 10, which CI's Node 22.x/24.x runners ship, causing npm ci to fail with 'Missing: @emnapi/core@1.11.3 from lock file'.
Sink, User, and PublicUser in db/types.ts were never updated when the file/mongo backends added mustChangePassword and findUserByGitAccount, causing check-types:server to fail.
Flagged by the unused-dependencies CI job via depcheck. Its icon classes were only referenced by leftover dead CSS from the old Material Dashboard theme this PR replaces; the npm package itself was never imported.
react-is is a real dependency, pinned to satisfy @primer/react's peer requirement on React 19, but it's never directly imported in src. In CI depcheck runs before node_modules exists, so it can't tell it satisfies a peer dependency and always flags it as unused.
|
/security-review |
Automated Security ReviewSummaryReviewed the visible portions of this large refactor (Material-UI → Primer/Tailwind, TanStack Query, new SCM-metadata and user-activity backend endpoints). Most changes are presentational and low risk, but three items are worth attention: a server-side request to a repo-controlled host (SSRF surface) behind a new API route, dependency version downgrades, and a new user-activity endpoint that returns full push records for any username. Note: several files were truncated or excluded from the diff (including Findingssrc/service/gitProviders/index.ts, src/service/gitProviders/GitLabProvider.ts, src/service/routes/repo.ts export function getGitProvider(remoteUrl: string): GitProvider {
const hostname = new URL(remoteUrl).hostname.toLowerCase();
if (hostname === 'github.com') return new GitHubProvider();
if (hostname.includes('gitlab')) return new GitLabProvider(hostname);
return new UnsupportedProvider();
}Recommended fix: match GitLab hosts against an explicit allow-list (or a configured self-hosted GitLab host) rather than a substring check; reject private/loopback/link-local resolved addresses before issuing the request; set an explicit request timeout and package.json - "axios": "^1.18.1",
+ "axios": "^1.13.4",
- "connect-mongo": "^6.0.0",
+ "connect-mongo": "^5.1.0",Recommended fix: restore the previous floor versions unless the downgrade is required, and verify the resolved versions in src/service/routes/users.ts router.get('/:id/activity', async (req: Request<{ id: string }>, res: Response) => {
const username = req.params.id.toLowerCase();
if (!(await db.findUser(username))) { ...404... }
const pushes = await db.getPushesForUserProfile(username);
res.send(pushes);
});Recommended fix: confirm the router is mounted behind authentication, and add an explicit authorization check (requester is the same user or src/ui/views/PushDetails/components/Diff.tsx const outputHtml = Diff2Html.html(diff, { ... });
return <>{parse(outputHtml)}</>;Recommended fix: no change required if Coverage: 128 of 150 changed files were reviewed. Disclaimer: This review is AI-generated and covers only what is listed above. Please validate the findings before acting on them. Reviewed by claude-opus-5. Re-run by commenting |
7b03d62 to
145c0a9
Compare
|
/security-review |
Testing whether automated PR reviewer can handle large PRs and actual token costs