"Other bullets" render editable on screen but never reach the Download PDF
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- frontend, testing-qa
Direzione di ricerca
Start by comparing the “Other bullets” handling in ReconstructedResume.tsx with buildAtsResumeModel in src/lib/pdf/ats-resume-model.ts, then read the round-trip tests named in the issue. Confirm the export-versus-surface decision with a maintainer before changing code. Done means the chosen behavior is covered by the listed acceptance tests and npm run verify is green.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The résumé column groups every parsed bullet by the entry the grouper attributes it to
(buildEntryGroups, src/lib/score/group-bullets.ts). Bullets it cannot attribute to any
experience, project, achievement, or certification fall into an "Other" group, which
ReconstructedResume.tsx appends to the tail of the Experience section as the "Other bullets"
bucket (experienceRenderGroups = other ? [...experienceGroups, other] : experienceGroups,
~line 1317; the bucket's own comment block is at ~line 47, 185, 252, 322, 333, 529). It is fully
editable on screen — text edits, add, remove all work on it, same as a real role's bullets.
The exported PDF does not carry it. buildAtsResumeModel (src/lib/pdf/ats-resume-model.ts)
groups bullets by experienceIndex (~line 740-751) and only bullets with a non-null
experienceIndex land in bulletsByIndex; experienceEntries (~line 776) is built by mapping
over experiences (parsed.experience) alone. The "Other" group — whose bullets carry no
experienceIndex by construction — is never consulted, so anything a user types into "Other
bullets" is silently absent from Download PDF, no matter how it's edited.
The whole-résumé rewrite CTA already treats this the same way: resumeSections (built for the
rewrite prompt in ReconstructedResume.tsx, ~line 1323) explicitly excludes the "Other" group
because "it has no parsed role to anchor the prompt to" — so this isn't a new asymmetry, it's an
existing one nobody has surfaced to the user yet.
This is a preview-fidelity gap worse than a cosmetic flag: the résumé column is supposed to be a
faithful preview of the exported document, and here it shows content — potentially edited,
user-authored content — that the export drops entirely, with no indication to the user that it
will vanish.
Proposal
Two directions, left open for the implementer/maintainer to pick between:
- Export them. Give the "Other" bucket a home in the PDF — e.g. its own untitled block at
the tail of Experience, or fold it under the last real role. Closes the fidelity gap outright,
but needs a design decision on where it lands and howrender-ats-pdf.ts+ the round-trip
tests (corpus-roundtrip.test.ts,render-roundtrip.repro.test.ts) represent it, since today's
round-trip model has no concept of an entry-less bullet run. - Surface it honestly. Leave the export behavior as-is, but tell the user in the UI that
"Other bullets" won't appear in the PDF, and add a "move to role" affordance so a bullet can be
reattached to a real entry (and thereby become exportable) instead of edited in a dead end.
Recommendation: option 2 is the smaller, lower-risk change — it doesn't touch
render-ats-pdf.ts, ats-resume-model.ts, or the round-trip contract, and it's honest rather than
silent, matching this repo's "copy claims must round-trip to code" standard. Option 1 is the
better long-term fix if the grouper's attribution can be made reliable enough that "Other" becomes
rare rather than a routine bucket.
Acceptance criteria
- A decision is made and recorded on export-vs-surface (or the maintainer instructs which).
- If surfaced: every bullet in the "Other bullets" bucket carries a clear, non-blocking
indication that it will not appear in the Download PDF. - If surfaced: a "move to role" (or equivalent) affordance lets the user reattach an "Other"
bullet to a real Experience/Project/Achievement/Certification entry. - If exported:
render-ats-pdf.tsrenders the bucket's bullets, andats-resume-model.ts's
buildAtsResumeModelincludes them without breakingexperienceIndex-keyed grouping for
real roles. -
corpus-roundtrip.test.tsandrender-roundtrip.repro.test.tspass and, if changed,
document the new behavior for an "Other"-bearing fixture. - No change to how the grouper (
buildEntryGroups) attributes bullets to entries — this issue
is about what happens to the ones it can't attribute, not the attribution logic itself. -
npm run verifyis green.
- Lingua principale
- TypeScript
- Stelle
- 11
- Fork
- 4
- Merge medio
- 1g 5h
- PR unite (30g)
- 66
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di offlinecv/OfflineCV
-
chore gaal
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 1 giorno
-
gaal improvement ux:job-search
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di offlinecv/OfflineCV
Issue simili
-
resources
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
railmapgen/rmg-palette#2445 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
danielmiessler/LifeOS#2242 ·
I maintainer di solito rispondono entro 5 giorni
-
good first issue hacktoberfest help wanted translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
callstackincubator/appduct#129 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100