You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reviewer feedback from @Vaishnavi1709 (CHANGES_REQUESTED) and @Samhit21.
Blocking:
- #1 Added LinkedIn/GitHub link (guided picker → addedProfiles) now back-fills
the empty legacy `_url` slot the scorer + contact gap read, so the add moves
the score. applyProfileOverrides returns the back-filled keys.
- #2 Anonymous scorer now treats a GitHub link as satisfying the
"Professional profile" completeness check (parity with the ContactCard rule),
so a GitHub-but-no-LinkedIn résumé isn't docked / listed as missing LinkedIn.
- #3 applyOverrides returns an edited `fieldConfidence` (user-affirmed contact
edits bumped to present, clears dropped to 0), threaded onto both the score
input and displayResult so a typed-in / added link stops reading as absent
against the frozen base parse.
- #4 useDownloadReport.download returns a boolean; the dialog closes only on
success, so a generation failure no longer unmounts the error UI.
- #5 New shared src/lib/pdf/text-wrap.ts breaks a single overlong word at char
boundaries (opt-in); the audit-report identity header uses it so a long URL
no longer overflows the page.
Secondary:
- #6 Audit-report identity sourced via buildContact + basicsFromContact (no full
buildAtsResumeModel + toJsonResume walk just to read .basics).
- #7 render-audit-report + serialize are now dynamic-imported in
useDownloadReport, keeping the ~470 LOC report path out of the entry chunk.
- #8 Extracted src/lib/download/blob-download.ts (slugifyName +
triggerBlobDownload); useDownloadPdf/useDownloadReport/useReportGap consume it.
- #9 wrapWordsToLines shared by both PDF renderers (render-ats-pdf keeps its
no-mid-word-break contract; the report opts into breaking).
- #12 Achievements now map to JSON Resume `awards[]` (title + optional date;
omitted entirely when absent, so achievement-free exports are byte-identical).
Nits:
- #14 usernameFromUrl drops its unreachable try/catch.
- #16 render-audit-report embeds Helvetica + Helvetica-Bold via Promise.all.
- #17 LinkedIn non-profile-path carve-out is now a `HostRule.nonProfilePath`
field instead of an inline special case in the classify loop.
Deferred (with rationale in the PR reply): #10 override-channel consolidation,
#11 profiles-mirror memo split, #13 ISO-3166 location country codes, #15
unconditional profiles assign (breaks the empty-override no-op invariant), and
@Samhit21's non-profile-LinkedIn label nit (by-design).
0 commit comments