Commit Graph

1917 Commits

Author SHA1 Message Date
Sina Atalay
d475aab312 Fix logo and title hover effect to only apply when not scrolled 2026-03-21 21:27:54 +03:00
Sina Atalay
e8eb000421 Better branding in the documentation 2026-03-21 19:21:43 +03:00
Sina Atalay
9387166637 Fix offline wheel test Unicode crash on Windows
The rich progress panel outputs ✓ (U+2713), which Windows cp1252
console encoding cannot encode. Set PYTHONIOENCODING=utf-8 in the
subprocess environment.
2026-03-21 15:15:16 +03:00
Sina Atalay
56c30dc605 Show stdout/stderr in offline wheel test failures for better diagnostics 2026-03-21 15:11:28 +03:00
Sina Atalay
617dcf779f Fix offline wheel test failing on Windows due to hardcoded Unix venv path 2026-03-21 14:54:44 +03:00
Sina Atalay
dd5ac9115a Fix test_raises_error_when_version_missing_from_typst_toml match pattern 2026-03-21 03:56:52 +03:00
Sina Atalay
c917f3a05b Add typst-fontawesome as bundled Typst package for offline icon support
Bundle the typst-fontawesome package as a git submodule so that Font
Awesome icons are available during Typst compilation without network
access. Refactor get_package_path to install multiple bundled packages
into the temporary cache. Add an offline wheel installation test that
renders a PDF with a poisoned HTTP proxy to verify no network calls.
2026-03-21 03:54:59 +03:00
Sina Atalay
e445296b79 Update skill guides 2026-03-21 03:50:18 +03:00
Sina Atalay
2eba248100 Update changelog for version 2.8 release v2.8 2026-03-21 03:14:52 +03:00
Sina Atalay
065125c52c Update rendercv-skill 2026-03-21 03:00:06 +03:00
Sina Atalay
4a89560fbc Update AI skill docs to frame as skills standard, add eval details 2026-03-21 02:57:20 +03:00
Skeleton022
a1c47095c4 Add Hungarian locale support
- Add Hungarian locale YAML with translations for time units (év, hónap), month names/abbreviations, and degree_with_area phrase
- Hungarian does not use plural after numbers, so month/months and year/years are identical
- Add "hungarian": "hu" mapping to language_iso_639_1
- Update schema.json and docs/llms.txt
2026-03-21 02:54:55 +03:00
Sina Atalay
e9da5884ad Revert "Add Hungarian locale support"
This reverts commit a259affdb6.
2026-03-21 02:51:52 +03:00
Hoàng Trọng Trà
2569d84574 Add Vietnamese locale support 2026-03-21 02:49:21 +03:00
Sina Atalay
a259affdb6 Add Hungarian locale support 2026-03-21 02:47:39 +03:00
Sikai Zhang
3b6f20ff95 Fix custom fonts folder not found when using relative input path (#692) 2026-03-21 02:40:50 +03:00
Sina Atalay
4206be2593 Fix Docker command in docs to avoid permission issues and leftover containers
- Add `--rm` to auto-remove containers after exit
- Add `-u $(id -u):$(id -g)` to run as host user (fixes PermissionError on Linux
  where container's UID 999 doesn't match host user)
- Add `-e HOME=/tmp` so Typst can create its package cache when running as an
  arbitrary UID (without this, `rendercv render` fails)
- Update both user guide and developer guide docs
2026-03-21 02:30:55 +03:00
Sina Atalay
8961744ebd Extract shared development and testing context into reusable skills
Move code guidelines from docs into two Claude Code skills so that
triage, solve, and review skills share a single source of truth
instead of duplicating project standards inline.

- Create rendercv-development-context skill with source code standards
  (type annotations, linting, docstrings) and codebase references
- Create rendercv-testing-context skill with test authoring standards
  (file structure, naming, parametrize, fixtures, principles)
- Remove docs/developer_guide/code_guidelines/ (content moved to skills)
- Remove Code Guidelines section from mkdocs.yaml nav
- Refactor solve-rendercv-issue, review-rendercv-pr, and
  triage-rendercv-issue to reference the shared context skills
2026-03-21 02:05:07 +03:00
Sina Atalay
da94718587 Update dev tooling and dependencies to latest versions
Bump black (26.3.1), ruff (0.15.7), ty (0.0.24), prek (0.3.6), typer
(0.24.1), and codespell (v2.4.2). Add ty:ignore comments and type
annotations to satisfy stricter checks in ty 0.0.24. Make skill zip
generation reproducible with a fixed timestamp.
2026-03-21 01:20:17 +03:00
Sina Atalay
70d9efcb66 Fix #595: Auto-create intermediate dicts for CLI overrides on missing keys
When using CLI overrides like `--design.theme "moderncv"` with a separate
design file, `update_value_by_location` crashed with `KeyError: 'design'`
because intermediate dictionary keys were not auto-created during traversal.
Now missing intermediate keys are initialized as empty dicts, allowing
overrides to work regardless of whether the target section exists in the
main YAML.
2026-03-21 01:03:32 +03:00
Sina Atalay
d9864d9495 Revert "Fix #689: Allow arbitrary font names in JSON schema while keeping enum suggestions"
This reverts commit 9ebcebd3ccc6abee3c71c07c884488614044b958.
2026-03-21 01:03:32 +03:00
Sina Atalay
295ae6185b Fix #653: Allow SUMMARY placeholder to be used inline in templates
process_summary() unconditionally wrapped summary text in Markdown admonition
syntax (!!! summary), which only works as a block-level construct on its own
line. When users placed SUMMARY inline in a template (e.g., "**COMPANY**,
SUMMARY"), the admonition syntax broke rendering.

Now render_entry_templates() checks if SUMMARY appears on its own line in
the template. If standalone, admonition wrapping is applied for the special
#summary[] Typst formatting. If inline, the raw summary text is used directly.
2026-03-21 01:03:32 +03:00
Sina Atalay
d5c1e724fa Fix #690: Load design/locale overlay files from YAML settings.render_command
When users specified design or locale overlay file paths in their YAML via
settings.render_command.design or settings.render_command.locale, these were
parsed but never actually loaded as overlays. Only CLI flags (--design,
--locale) triggered overlay loading.

Now cli_command_render resolves these paths from the YAML (via the existing
collect_input_file_paths helper) before building arguments, so overlay files
referenced in settings are loaded the same way as CLI-provided ones.
2026-03-21 01:03:32 +03:00
Sina Atalay
847e4f9ea3 Fix #689: Allow arbitrary font names in JSON schema while keeping enum suggestions
The FontFamily JSON schema used a strict enum that rejected custom and system
fonts like Georgia. Changed from SkipJsonSchema[str] to plain str in the union
type, so the generated schema uses anyOf with both the known font enum (for
editor autocomplete) and a generic string type (for arbitrary fonts).
2026-03-21 01:03:32 +03:00
Sina Atalay
21e3cd7f33 Fix #673: Make copied template files writable for immutable distros
On NixOS and other immutable distributions, package files in the store are
read-only. shutil.copytree preserves source permissions, so copied template
files remain read-only. This causes PermissionError when create-theme tries
to write __init__.py into the copied directory.

Added make_tree_writable() that adds user-write permission to all files and
directories after copying. Called automatically by copy_templates().
2026-03-21 01:03:32 +03:00
Sina Atalay
e80ecfc559 Fix #685: Process markdown lines independently to prevent cross-line emphasis interference
When multi-line template fields (like main_column) contained markdown emphasis
markers on adjacent lines, the Python markdown library treated single-newline-
separated lines as one paragraph, causing markers to interact across lines and
produce garbled Typst output with mismatched brackets.

The fix processes each line of input independently in markdown_to_typst() while
preserving multi-line admonition blocks. This prevents emphasis markers on one
line from interfering with markers on adjacent lines.
2026-03-21 01:03:32 +03:00
dependabot[bot]
585d663f5d build(deps-dev): update griffe requirement from <2,>=1.0 to >=1.0,<3 (#677)
Updates the requirements on [griffe](https://github.com/mkdocstrings/griffe) to permit the latest version.
- [Release notes](https://github.com/mkdocstrings/griffe/releases)
- [Changelog](https://github.com/mkdocstrings/griffe/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mkdocstrings/griffe/compare/1.0.0...2.0.0)

---
updated-dependencies:
- dependency-name: griffe
  dependency-version: 2.0.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-21 00:50:59 +03:00
Quentin Mazars-Simon
7d426c7ba5 Setup multi-platform docker build (#697)
See: https://docs.docker.com/build/ci/github-actions/multi-platform/

Avoids getting this warning when running on an ARM mac, or having to pass `--arch amd64` when using Apple's [`container`](https://github.com/apple/container)

> WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

Tested locally by running

```sh
docker build --platform linux/arm64,linux/amd64  -t render:qms -f Dockerfile .
```

And then verifying that I'm not getting the warning when

```sh
docker run -v "$PWD":/work -w /work render:qms render cvyaml
```

It might need some tweaks when running in Github Actions, we'll have to test.
2026-03-21 00:45:13 +03:00
Noah Croghan
fb9b0e9295 Fix EducationEntry location placement in markdown reference file (#691)
* Fix EducationEntry location placement

* Fix EducationEntry location placement in markdown reference file

---------

Co-authored-by: simonafield <simon.techkid@outlook.com>
2026-03-21 00:26:30 +03:00
Sina Atalay
9bc8c2862c Add Ink, Opal, and Ember themes with examples, docs, and test data
Ink: elegant academic theme with EB Garamond and purple palette.
Opal: modern minimalist with Lato and teal accents.
Ember: editorial theme with mixed Gentium Book Plus/Ubuntu fonts,
crimson accents, diamond bullets, and justified-with-no-hyphenation.

Updates README theme grid from 2x3 to 3x3 to showcase all 9 themes.
2026-03-20 21:25:38 +03:00
Sina Atalay
61e5396133 Update rendercv-skill 2026-03-20 21:16:54 +03:00
Sina Atalay
3f432b3401 Setup Claude Code automation 2026-03-20 21:14:04 +03:00
Sina Atalay
16f8753022 Rename publish-typst-package skill and add solve-rendercv-issue skill 2026-03-20 20:44:44 +03:00
Sina Atalay
9b83f07ac9 Move distributable skill to rendercv/rendercv-skill submodule
The skill file lived in the main repo, which meant `npx skills add`
had to clone the entire RenderCV codebase and exposed internal dev
skills. A dedicated lightweight repo solves both problems.

- Create rendercv/rendercv-skill repo as a read-only distribution channel
- Add it as a submodule at .claude/skills/rendercv-skill/
- Update generation script and tests to write to the submodule path
- Add submodules: true to test workflow checkout steps
- Update docs, README, and install commands to use rendercv/rendercv-skill
- Add --recursive clone instruction to developer guide
- Delete the old skills/ directory at repo root
2026-03-20 20:41:53 +03:00
Sina Atalay
021c9fbde3 Add RenderCV skill with eval framework and auto-generated docs/llms.txt
- Add SKILL.md for AI agents: YAML schema reference, entry type field
  tables, design samples per theme, CLI reference, and important patterns
  (YAML quoting, phone validation, bullet characters)
- Add Jinja2 template and generate.py that auto-generates SKILL.md and
  docs/llms.txt from live Pydantic models and sample generators
- Add promptfoo eval suite (15 tests across 4 files): cv_generation,
  pdf_parsing, design, and cli_workflow
- Add deterministic grader that validates LLM output through RenderCV's
  own pydantic pipeline (not jsonschema)
2026-03-20 20:15:09 +03:00
Sina Atalay
bc87090b96 Add tests for uncovered edge cases in pdf_png and sample_generator 2026-03-20 18:30:02 +03:00
Sina Atalay
009eec5dfb Bundle rendercv-typst inside the Python package to decouple from Typst Universe
Move `rendercv-typst/` into `src/rendercv/renderer/rendercv_typst/` so that
`lib.typ` and `typst.toml` ship with every pip install. This eliminates the
runtime dependency on Typst Universe, allowing releases without waiting for
external PR reviews. The wheel excludes non-essential files (examples, template,
README, etc.) via `[tool.uv.build-backend]` wheel-exclude.
2026-03-20 18:18:04 +03:00
Sina Atalay
5927cf0d00 Update Harvard theme 2026-03-20 16:52:35 +03:00
Sina Atalay
44dee63b96 Add entry figures for Harvard theme 2026-03-20 16:17:30 +03:00
Sina Atalay
67c7ccfc84 Publish Typst package and add skill for publishing Typst package. 2026-03-20 16:15:43 +03:00
Sina Atalay
4e07fa2380 Add centered section title types and bump rendercv-typst to 0.3.0
Add four new section title styles: `centered_without_line`,
`centered_with_partial_line` (baseline), `centered_with_centered_partial_line`
(middle-aligned), and `centered_with_full_line`. These allow section headings
to be centered with various line decorations, complementing the existing
left-aligned options.
2026-03-20 05:20:10 +03:00
Sina Atalay
1acdd29e34 Move rendercv-typst Typst package source into this repository
Previously maintained in a separate `rendercv/rendercv-typst` repository.
Consolidating here for easier co-development with the Python package.
2026-03-20 04:42:32 +03:00
Sina Atalay
663ced0492 Refactor docs folder structure 2026-03-20 03:45:08 +03:00
Sina Atalay
9b7830a0e1 Create new theme: harvard 2026-03-19 23:03:18 +03:00
Sina Atalay
0c45adf776 Fix formatting and linting issues 2026-03-19 22:28:33 +03:00
Sina Atalay
7138cee196 Fix orphaned connector words when placeholders are removed from templates
When a placeholder like DEGREE was missing from an education entry, the
locale phrase "DEGREE in AREA" left the connector word "in" behind,
producing output like "Princeton University, in Computer Science". This
affected all locales with connector words (en, em, di, at, etc.).

The fix adds a general-purpose `remove_connectors_of_missing_placeholders`
step inside `remove_not_provided_placeholders` that strips bare connector
words from separators between placeholders when either side is missing.
This works for any template, not just locale phrases — for example,
"JOB_TITLE at COMPANY" now correctly drops "at" when COMPANY is absent.
2026-03-19 22:17:00 +03:00
Sina Atalay
59c02dd957 Add ATS compatibility testing suite with PDF rendering, analysis, and reporting
- Introduced `scripts/ats_proof` directory containing tools for ATS compatibility testing.
- Added scripts for rendering PDFs, analyzing text extraction, and evaluating results against ground truth.
- Created a report generation script to summarize ATS compatibility findings.
- Updated `.gitignore` to exclude generated artifacts and added `pyproject.toml` for project dependencies.
- Included new documentation on ATS compatibility testing in `docs/user_guide/ats_compatibility.md`.
2026-03-19 22:16:56 +03:00
Sina Atalay
53c7343f2e Update web app link in docs 2026-03-06 19:00:29 +03:00
Sina Atalay
a818d88cf6 Update schema.json and example pdfs v2.7 2026-03-06 18:38:04 +03:00
Sina Atalay
bb143b363d v2.7 release 2026-03-06 18:35:10 +03:00