Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

"Other bullets" render editable on screen but never reach the Download PDF

Chiusa
#1,007 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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

bug ux:edit-export

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:

  1. 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 how render-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.
  2. 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.ts renders the bucket's bullets, and ats-resume-model.ts's
    buildAtsResumeModel includes them without breaking experienceIndex-keyed grouping for
    real roles.
  • corpus-roundtrip.test.ts and render-roundtrip.repro.test.ts pass 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 verify is green.
Lingua principale
TypeScript
Stelle
11
Fork
4
Merge medio
1g 5h
PR unite (30g)
66

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di offlinecv/OfflineCV

Tutte le issue di offlinecv/OfflineCV

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.