Repository navigation
chore: prune 6 unused dependencies, 2 dead scripts, and dead Tailwind globs - #35
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Free Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (3)
💤 Files with no reviewable changes (3)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe pull request updates verification scripts and removes unused dependencies. It narrows Tailwind content scanning to ChangesConfiguration and dependency cleanup
Estimated code review effort: 1 (Trivial) | ~5 minutes Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing. Comment |
7dee427 to
eca6e5b
Compare
eca6e5b to
cd7fd52
Compare
|
Interim independent review while CodeRabbit is rate limited (Free plan allows 1 review/hour). Reviewer: Claude Opus 4.5, run locally against CodeRabbit will still review this PR when its hourly window resets; this does not replace it. |
cd7fd52 to
660f8a0
Compare
|
Independent review, second pass, model upgraded to Claude Opus 5 (the earlier comment on this PR used Opus 4.5). Run locally against Every should-fix finding below has been addressed in the current head. Full output: |
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
… globs Dependencies with zero imports anywhere in src, e2e, scripts, supabase, or any config file: - @stripe/stripe-js: checkout and portal go through the create-checkout and create-portal Edge Functions and a plain URL redirect (src/lib/stripe.ts). The browser SDK is never loaded. - i18next-browser-languagedetector: src/i18n.ts sets lng and fallbackLng explicitly and SettingsPage calls changeLanguage. No detector is registered. - @types/jspdf and @types/react-joyride: both runtime packages ship their own declarations, so the DefinitelyTyped stubs are redundant. - baseline-browser-mapping and caniuse-lite: incidentally added as direct dependencies, never imported. Both stay installed transitively through autoprefixer/browserslist, which is the only consumer. npm now records them as dev-only, since browserslist is a devDependency; that is safe here because every install path in this repo (Dockerfile, all three workflow jobs, Vercel) runs a plain `npm ci` with devDependencies included. No path uses --omit=dev or --production. @types/file-saver stays: file-saver ships no declarations of its own. Also removes two npm scripts and three dead Tailwind content globs: - test:coverage, superseded by `npm test -- --coverage`. No workflow, script, or docs file invokes it. Two rows in .audit/crossfire.tsv do mention it, but those are historical records of August runs, not callers, and that log is deliberately left untouched. - test:e2e:ui, which nothing references at all. - the ./pages, ./components, and ./app content globs, for directories that do not exist in this repo. The verify script keeps the docs:check step main added in #39. Verified on main fe679fd, from a clean npm ci: docs:check, lint, typecheck, 956 unit tests, 121 edge tests, build, and 126 Chromium e2e tests pass. Coverage 90.45% statements.
660f8a0 to
c74479d
Compare
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
…ps-and-dead-config # Conflicts: # package-lock.json # package.json
Second PR from the over-engineering audit. Plumbing only: no source file changes. Independent of #34, #36, #37, and #38, based directly on current
main.Note: #34 also edits
package.jsonandpackage-lock.json. Whichever merges second needs a lockfile rebase, whichnpm ciregenerates, and the verification numbers below should be re-run against the rebased lockfile. I originally stacked this on #34 to avoid that, but CodeRabbit refuses to review a PR whose base is notmain, so independent branches are the better trade.Dependencies removed
Each has zero imports across
src,e2e,scripts,supabase, and every config file:@stripe/stripe-js—src/lib/stripe.tsdrives checkout entirely through thecreate-checkout/create-portalEdge Functions and then hands the returned URL toopenExternalUrl. The browser SDK is never loaded.i18next-browser-languagedetector—src/i18n.tssetslngandfallbackLngdirectly, and the settings page callschangeLanguage. No detector is ever registered.@types/jspdfand@types/react-joyride— both runtime packages ship their own declarations (jspdfdeclarestypes: types/index.d.ts,react-joyridedeclaresdist/index.d.ts), so the DefinitelyTyped stubs are dead weight that can only drift.baseline-browser-mappingandcaniuse-lite— declared as direct dependencies, never imported. Both stay installed transitively throughautoprefixer→browserslist, the only consumer.One wrinkle worth stating rather than glossing: because
autoprefixeris a devDependency, npm now records both packages as"dev": truein the lockfile. So "still installed transitively" holds for installs that include devDependencies. That covers every install path in this repo, all plainnpm ci:No path uses
--omit=devor--production, and Vercel installs dev dependencies too. If a prod-only install stage is ever added ahead of a PostCSS step, these would need to move back.@types/file-saverdeliberately stays:file-saverships no declarations of its own.Also removed
test:coveragescript. Nothing invokes it: no workflow, npm script, or shell script calls it, and the documented command isnpm test -- --coverage, which bothverifyand CI use. To be precise,.audit/crossfire.tsvmentionsnpm run test:coveragein two rows, but those are historical records of commands run in August, not callers. I left that log untouched rather than edit history to make this claim tidier.test:e2e:uiscript — no workflow, doc, or script references it.contentglobs for./pages,./components, and./app. None of those directories exists here; all source lives insrc/.Rejected during this pass
Two config cuts I tried and backed out:
The
compilerOptionsblock in the roottsconfig.json, on the theory that nothing extends it andtypecheckruns againsttsconfig.app.json. Reverted: esbuild parses the roottsconfig.jsonwhen it transformsvite.config.tsandvitest.config.ts, so it is not unreferenced.optimizeDeps.entries: ['index.html']. I originally removed this as a restatement of Vite's default. That was wrong, and it is now documented in the config with a comment instead. Vite's default crawls every.htmlfile under the root, and this repo has 84 of them, becausepublic/holds 58 prerendered SEO pages plus their siblings:The explicit entry narrows dev-server prebundling from 84 files to 1. It is load-bearing, so it stays, with a comment so the next person does not make my mistake.
Verification
Clean
npm cion Node 22, all green:npm run lintnpm run typechecknpm test -- --coveragenpm run test:edgenpm run buildnpm run test:e2eThe dependency removals are largely self-verifying: any static consumer in
src,e2e, orscriptswould breaktypecheckorbuildafter a cleannpm ci, and both are green.Not run: the WebKit smoke gate and the protected staging suite. No rendering-engine-specific or staging-dependent changes here.
Summary by CodeRabbit