Skip to content

fix(resume): escape < to fix rendercv 'unclosed label' error#29

Merged
subhayu99 merged 1 commit into
personalfrom
subhayu99/fix-pdf-unclosed-label
Apr 27, 2026
Merged

fix(resume): escape < to fix rendercv 'unclosed label' error#29
subhayu99 merged 1 commit into
personalfrom
subhayu99/fix-pdf-unclosed-label

Conversation

@subhayu99
Copy link
Copy Markdown
Owner

Summary

PR #26 introduced an unescaped `<` in a resume bullet (`"deploy to GitHub Pages in <10 min"`), which Typst (rendercv's renderer) interprets as the start of a `` token. The build that ran after merge failed with "unclosed label" at the rendercv step → no PDF regeneration → site is currently deployed without the freshly-rendered PDF.

Fix

One-line YAML escape, matching the pattern already used elsewhere in the resume (`\<0.22%`, `\<5s`, `\>95%`, `\>99.9%`):

```diff

    • "Zero-code: fork, drop in YAML, deploy to GitHub Pages in <10 min — ..."
    • "Zero-code: fork, drop in YAML, deploy to GitHub Pages in \<10 min — ..."
      ```

YAML double-quoted `\\<` → parses as `\<` → Typst treats as literal `<`.

Reproduction + verification

Locally with rendercv v2.3 (matching CI):

```
Before fix:
An error occurred: unclosed label
❌ Error running rendercv

After fix:
✅ rendercv completed successfully
✅ Copied Subhayu_Kumar_Bala_CV.pdf → client/public/resume.pdf
```

Failed run for reference

https://github.com/subhayu99/subhayu99.github.io/actions/runs/24991878686/job/73179185700

Why this slipped past CI on PR #26

PR #26 was just a YAML content change with no CI-level rendercv step on personal-branch PRs (the deploy workflow only fires on merge-to-personal, not on PR opens). A one-time `npm run generate-resume:prod` smoke before merging would have caught it. Worth considering as a follow-up: add a render-pdf check on PRs that touch `resume.yaml` so this can't happen again.

…label

The Portfolio Template entry's bullet "deploy to GitHub Pages in <10 min"
landed on personal in PR #26 with an unescaped <, which Typst (rendercv's
backend) interprets as the start of a <label> token — failing the build
with "unclosed label" and skipping the PDF regeneration.

Fix: escape with double backslash in YAML (\\<), matching the pattern
already used elsewhere in the resume (\\<0.22%, \\<5s, \\>95%, etc.).
After YAML parse → \< on the wire → Typst treats as literal <.

Verified locally: rendercv v2.3 (CI version) renders the PDF successfully
after the fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@subhayu99 subhayu99 merged commit 75941a8 into personal Apr 27, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant