Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Render marker-only parsed lines in "Other bullets" read-only instead of offering refused actions

Closed
#1,052 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
88/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
typescript
Domain
frontend, testing

Research direction

Start in src/components/features/ReconstructedRole.tsx, where RoleEntry supplies callbacks to ResumeBulletRow, and read the existing refusal checks for unresolvable bullet keys. Run the ExperienceSection.other-bullets.test.tsx tests, then add coverage for parsed marker-only, user-added marker-only, and ordinary unmatched bullets. Done means only the parsed marker-only row lacks editing and removal affordances.

Written by the indexing model from the issue text.

Description

gaal improvement ready-for-agent ux:edit-export

Problem

On /, a line from the parse that is nothing but a bullet or number marker (for example 4.) lands in the "Other bullets" group as a normal-looking row. It offers both click-to-edit and Remove, but both actions are refused:

  • Edit. setBulletField refuses an id whose text half is empty (isUnresolvableBulletKey, added by #1048 for #679). You can click the row, type, and press Save, and the text snaps back with no message.
  • Remove. removeBullet refuses the same id (#660).

The UI offers two actions it will always throw away. The row can't be fixed or removed, and nothing tells the user why.

Proposal

Don't offer the actions on these rows. Render the row read-only: no click-to-edit, and no Remove button.

ResumeBulletRow already hides each affordance when its callback is absent (editable = onBulletChange !== undefined, and RemoveButton renders only when onRemove is set). The change can therefore sit in RoleEntry (src/components/features/ReconstructedRole.tsx): pass undefined for both callbacks on a row whose edits would be refused.

The condition must be "no write can land", not just "the id is unresolvable". A marker-only line the user added also has an empty text half, but #1048 made it editable through resolveBucketRef. So the rule is:

isUnresolvableBulletKey(b.id) && resolveBucketRef?.(b.text) === undefined

Out of scope

  • A message explaining the refusal. Removing the action makes it unnecessary.
  • Dropping these lines from the parse or pool. That is a parser change with scoring effects.

Acceptance criteria

  1. A marker-only line from the parse in "Other bullets" renders with no click-to-edit affordance and no Remove button.
  2. A marker-only line the user added stays editable and removable (the #1048 behaviour).
  3. An ordinary unmatched parsed bullet in "Other bullets" is unchanged: still editable and removable.
  4. Tests in ExperienceSection.other-bullets.test.tsx pin 1–3, and reverting the production change turns the first one red.

Depends on #1048.

Dominant language
TypeScript
Stars
11
Forks
4
Avg merge
18h 56m
Merged PRs (30d)
92

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from offlinecv/OfflineCV

All issues in offlinecv/OfflineCV

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.