feat: add a company location to work experience - #135
Merged
Conversation
Experience and internship entries now carry a `location` field. It
renders after the company on the same line, comma-joined ("Acme Corp,
San Francisco, CA"), in the preview, all six templates, all six PDF
documents, the .docx, and the plain-text export. Requested in #132.
Education already had a `location` field in its form, but no renderer
ever read it: anything typed there was stored and silently dropped. It
now renders next to the institution the same way, so existing documents
with a filled education location will start showing it.
The pair rides on the employer/institution line rather than a column of
its own, so it stays one contiguous phrase for text extractors, and a
linked company keeps its hyperlink on the company name only. All render
paths go through one `resume-entry-location` helper so the join can
never drift between the preview and an export.
Schema version 20 to 21, with a bail-safe ladder rung that stamps an
empty location onto existing experience and internship entries; entries
that already carry one keep it, and anything that is not entry-shaped is
skipped. The interchange schema is registry-driven, so JSON and YAML
round-trip the new field and older exports without it still import.
Verified by opening a v20 document in the app: it migrates, renders
unchanged, snapshots a pre-migration backup, and a typed location
reaches the preview and persists. The export gate now asserts an
employer and a school location survive extraction in every format.
Signed-off-by: Rizki Citra <rimzzlabs@proton.me>
rimzzlabs
pushed a commit
that referenced
this pull request
Aug 1, 2026
🤖 I have created a release *beep* *boop* --- ## [0.11.0](v0.10.2...v0.11.0) (2026-08-01) ### Features * add a company location to work experience ([#135](#135)) ([ac382ab](ac382ab)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #132.
Experience and internship entries now carry a
location. It renders after the company on the same line, comma-joined ("Acme Corp, San Francisco, CA"), in the preview, all six templates, all six PDF documents, the .docx, and the plain-text export.Education already had a
locationfield in its form, but no renderer ever read it, so anything typed there was stored and silently dropped. It now renders next to the institution the same way. Existing documents with a filled education location will start showing it.Keeping the location on the employer/institution line rather than in a column of its own means the pair stays one contiguous phrase for text extractors. A linked company keeps its hyperlink on the company name only. Every render path goes through a single
resume-entry-locationhelper, so the join cannot drift between the preview and an export.Schema version 20 to 21, with a bail-safe ladder rung that stamps an empty location onto existing experience and internship entries. Entries that already carry one keep it, and anything that is not entry-shaped is skipped. The interchange schema is registry-driven, so JSON and YAML round-trip the new field, and exports made before this change still import.
Testing
pnpm typecheck,pnpm lint, andpnpm validate:exportspass. The export gate now also asserts an employer location and a school location survive extraction in every format; the PDF extractsAcme Corp, San Francisco, CAas one contiguous phrase, and the text export readsSenior Frontend Engineer - Acme Corp, San Francisco, CA - Mar 2022 - Present.Opened a document written before this change: it migrates on read, renders unchanged with no stray comma, and gets a pre-migration backup snapshot. Typing a location updates the preview live and persists. The Location field shows up under Company in both the experience and internship forms, and the What's new sheet renders the new entry in English and Indonesian.