feat(ui): align onboarding uploads with hi-fi designs - #227
Conversation
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Invalidate in-flight upload work when cancellation or unmounting occurs so stale file reads cannot overwrite the user's navigation intent. Co-authored-by: Cursor <cursoragent@cursor.com>
Run the pull request workflow against the corrected description and current branch head. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Hey Mark, I saw that Vincent also sent in some PRs that overlap with this PR and address some of the same issues. I had my agent create a quick summary comparing the PRs so we can decide the best merge order and reduce any confusion. PR 227 vs 230 / 231Overlap: Onboarding upload UI, welcome card order, and CSV mapping select styling. Scored on:
Preferred Merge: PR 227PR 227 is the strongest primary merge. It:
Merge PR 230 and PR 231 only as selective follow-ups—not as replacements.
Scorecard
Why PR 227 WinsBoth 227 and 230:
However:
Additionally, 227 fixes a correctness bug:
Neither 230 nor 231 addresses this issue. TradeoffPR 227 is a larger, multi-concern PR (branding, Results icons, upload cancellation). That additional scope is justified because it removes duplicate implementations instead of maintaining them indefinitely. What to Take from PR 230After merging 227:
Do not port:
What to Take from PR 231After merging 227:
Skip:
PR 227 already handles this area more cleanly. Suggested Merge Order
Source: GitHub diffs and CI for PRs 227, 230, and 231 (July 19, 2026). |
ReviewReviewed via 3 parallel agents split across the upload-cancellation logic, header/branding changes, and Results icons/CSV overlay. No blocking correctness bugs, but a few gaps between the PR description and actual behavior worth addressing before merge. High
Medium
Low / nits
What's done well
|
Apply Manrope to brand headers, restore vehicle icon size/color, make the brand name non-clickable, and harden upload cancellation guards. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Hey @markboenigk, Thanks for your feedback. I went ahead and addressed the high, medium, and nitpicks. This UI PR should be good to merge. |
Summary
This PR aligns onboarding and upload screens with the hi-fi design system, consolidates duplicated upload UI, applies consistent Manrope branding across Manage and Results headers, adds vehicle-specific Results icons, and prevents cancelled uploads from completing after Cancel or unmount.
Motivation
Upload and onboarding screens had inconsistent styling and duplicated presentation code. Cancelled uploads could still write storage and navigate after a delayed file read. Header brand treatment also drifted from the hi-fi Manrope styling, and Results vehicle icons needed type-specific artwork without enlarging or over-contrasting the meta row.
Changes
Frontend
HiFiUploadPage, preserving accepted file types, size limits, parsing paths, storage keys, and destinations.next/font, set body and brand header tokens to use it, and kept the brand name as non-clickable text in onboarding, Manage, and Results headers.Backend and infrastructure
Validation
npm test -- src/tests/uploadOperation.test.ts— 3 tests passed.npx tsc --noEmit --pretty false— passed.npx eslint --max-warnings=0 src/app/results/components/VehicleTypeIcon.tsx src/app/upload-route/page.tsx src/app/upload-save-point/page.tsx src/tests/uploadOperation.test.ts src/app/components/navbar/Navbar.tsx src/app/components/navbar/MobileNavbar.tsx src/app/results/components/MobileResultsNavbar.tsx src/app/edit/formStyles.v2.ts— passed.Intentionally skipped
npm --prefix app/ui run test— full suite was not run locally.npm --prefix app/ui run build— production build was not run locally.Risk
Main risks are visual regression in header typography, Results icon sizing, and upload control states during processing. Upload parsing and storage keys stay on the existing paths; cancellation only blocks stale async completion after Cancel or leave.
Rollout and Recovery
No migration, feature flag, or deployment sequencing is required. Revert the UI commits if a visual regression appears. To undo cancellation safety alone, remove the operation guard and restore prior upload completion behavior without changing persisted data formats.