Repository navigation
Layered PDF configuration, cover credits and translation-team contributor files - #54
Conversation
…r files PDFs: Get-GuidePdfPlan now builds the recipe only from committed configuration, layered platform -> <site>/pdf -> guide -> edition with .<lang> variants. Adds default cover, licence, back, running header/footer and style templates, the reviewed callouts and Hugo image filters, CJK font keys, RTL support and per-download overrides. Removes the per-run HeaderPaths/LuaFilterPaths/FontOverrides parameters and the Kanban-specific cover-page.tex. Contributors: data/contributions/<guide>.<lang>.yml holds translation teams; localizedNames per record; Get-GuideCredits resolves authors (role creator), contributors and translators for PDFs. Website translator displays read the data files, including PDF-only translations. Prepare blocks retired front matter (author, translators, fonts, dir), invalid contributor records and PDF settings, and warns on missing creators, translators and PDF labels. Discovery reads declared downloads and records language direction. The sample site is migrated. Spec: docs/architecture/guide-pdf-and-contributors.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PDF covers broke weight ties alphabetically while the website keeps the data file's order; both now list equal-weight records in file order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fonts: pdf.yaml gains fontSources (font name -> where to get it). The plan records which settings file chose each font; New-GuidePdf checks every font before rendering and lists all missing ones with that file and the source. Test-GuidePdfFonts reports font status for every generated PDF of a site. Right-to-left: use babel bidi=bidi-r (the default XeTeX mode loses colour changes), add the rtl-latin filter that marks Latin runs and Latin-only paragraphs as English so their order survives, and mark cover values, including editions and dates, the same way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (61)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The packaged contributor workflow deletes and re-creates a translation; its team file must remain valid meanwhile. An unknown guide still blocks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved language-scoping, PDF planning, cache, discovery, and contributor issues remain.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (4)
What changed in this PR
This PR introduces layered PDF configuration and structured contributor/translation-team records, updating PDF generation, discovery, validation, Hugo rendering, documentation, tests, and the reference site.
Changes:
- Adds configurable PDF recipes, templates, filters, RTL/CJK support, and font diagnostics.
- Centralizes contributor credits and localized translation-team data.
- Updates discovery, Prepare validation, website rendering, documentation, tests, and sample content.
| File | Reviewed change |
|---|---|
tests/Core/HugoGuideRendering.Tests.ps1 |
Tests contributor and translator rendering. |
tests/Core/GuidePdfRecipe.Tests.ps1 |
Tests PDF recipes, metadata, templates, filters, and fonts. |
tests/Core/GuideCredits.Tests.ps1 |
Tests contributor resolution and validation. |
tests/Core/Discovery.Tests.ps1 |
Tests PDF declarations and language direction. |
tests/Core/Assessment.Tests.ps1 |
Tests retired metadata and PDF findings. |
system/OpenGuidePlatform.PowerShell.GuideSiteBuild/Discovery/New-GuideSiteDiscovery.ps1 |
Discovers declared PDFs and language directions. |
system/OpenGuidePlatform.PowerShell.Core/README.md |
Documents contributor and PDF APIs. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/Test-GuidePdfCache.ps1 |
Expands PDF cache evidence. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/style.tex |
Adds default PDF styling. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/rtl.tex |
Adds RTL LaTeX support. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/pdf.yaml |
Defines default PDF settings. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/page-header.tex |
Adds running headers. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/page-footer.tex |
Adds running footers. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/licence.tex |
Adds licence page rendering. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/labels.yaml |
Defines default PDF labels. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/filters/rtl-latin.lua |
Preserves Latin ordering in RTL PDFs. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/filters/hugo-images.lua |
Resolves Hugo image paths. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/filters/callouts.tex |
Adds callout LaTeX support. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/filters/callouts.lua |
Converts callouts to PDF boxes. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/cover.tex |
Adds the default cover template. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/cover-page.tex |
Removes the obsolete cover template. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/body-start.tex |
Resets body page numbering. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/templates/back.tex |
Adds the default back page. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/Resolve-GuidePdfRecipe.ps1 |
Resolves layered settings and templates. |
system/OpenGuidePlatform.PowerShell.Core/PdfPublishing/Get-GuidePdfPlan.ps1 |
Builds PDF metadata, arguments, and evidence. |
system/OpenGuidePlatform.PowerShell.Core/OpenGuidePlatform.PowerShell.Core.psm1 |
Loads new credits and recipe functions. |
system/OpenGuidePlatform.PowerShell.Core/OpenGuidePlatform.PowerShell.Core.psd1 |
Exports new public commands. |
system/OpenGuidePlatform.PowerShell.Core/GuideInventory/Get-GuideInventory.ps1 |
Records retired front matter keys. |
system/OpenGuidePlatform.PowerShell.Core/ContributorManagement/Update-GuideContributions.ps1 |
Supports language-specific files. |
system/OpenGuidePlatform.PowerShell.Core/ContributorManagement/New-GuideContributions.ps1 |
Validates translation-team roles. |
system/OpenGuidePlatform.PowerShell.Core/ContributorManagement/Get-GuideCredits.ps1 |
Resolves and validates credits. |
system/OpenGuidePlatform.PowerShell.Core/Contracts/site-policy.schema.json |
Adds language direction schema support. |
system/OpenGuidePlatform.PowerShell.Core/Assessment/Get-GuideAssessment.ps1 |
Reports source-convention findings. |
system/OpenGuidePlatform.Hugo.Guides/layouts/_partials/functions/localize-contributor.html |
Applies localized contributor names. |
system/OpenGuidePlatform.Hugo.Guides/layouts/_partials/functions/get-translators.html |
Loads translation-team records. |
system/OpenGuidePlatform.Hugo.Guides/layouts/_partials/functions/get-participants.html |
Includes data-backed translators. |
system/OpenGuidePlatform.Hugo.Guides/layouts/_partials/functions/get-contributors.html |
Localizes contributor output. |
system/OpenGuidePlatform.Hugo.Guides/layouts/_partials/components/translations/community-translations2.html |
Credits PDF-only translators. |
system/OpenGuidePlatform.Hugo.Guides/layouts/_partials/components/guide/guide-translators.html |
Renders translation teams. |
system/OpenGuidePlatform.Agents.Integration/skills/guide.genpdfs/SKILL.md |
Documents committed PDF generation. |
system/OpenGuidePlatform.Agents.Integration/skills/guide.contributions/SKILL.md |
Documents contributor workflows. |
system/OpenGuidePlatform.Agents.Integration/instructions/guide-site.md |
Updates guide-site conventions. |
examples/reference-guide-site/pdf/README.md |
Documents sample PDF configuration. |
examples/reference-guide-site/pdf/pdf.yaml |
Defines sample font settings. |
examples/reference-guide-site/pdf/pdf.ja.yaml |
Defines Japanese font settings. |
examples/reference-guide-site/i18n/min.yaml |
Adds translator UI text. |
examples/reference-guide-site/i18n/en.yaml |
Adds translator UI text. |
examples/reference-guide-site/data/contributions/guide2.yml |
Migrates Guide 2 credits. |
examples/reference-guide-site/data/contributions/guide2.min.yml |
Adds Guide 2 translation credits. |
examples/reference-guide-site/data/contributions/guide1.yml |
Migrates Guide 1 credits. |
examples/reference-guide-site/data/contributions/guide1.min.yml |
Adds Guide 1 translation credits. |
examples/reference-guide-site/content/Guide2/2025.7/index.min.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide2/2025.7/index.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide1/2025.5/index.min.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide1/2025.5/index.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide1/2020.7/index.min.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide1/2020.7/index.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide1/2020.12/index.min.md |
Removes retired metadata. |
examples/reference-guide-site/content/Guide1/2020.12/index.md |
Removes retired metadata. |
docs/architecture/guide-pdf-and-contributors.md |
Defines the new architecture and rollout. |
docs/architecture/current-system.md |
Updates system architecture documentation. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| $settings=Read-GuidePdfSettingsFile $file 'edition' "pdf/$GuideId/$EditionPath/$([IO.Path]::GetFileName($file))" | ||
| foreach($download in @($settings.downloads|Where-Object {$_})){ | ||
| [pscustomobject]@{Path=[string]$download.path;Handling=$(if($download.Contains('handling')){[string]$download.handling}else{'supplied'})} |
| $base="$($sourceGuide[0].contentRoot)/$($sourceEdition[0].path)" | ||
| foreach($name in @("index.$resolvedLanguage.md",'index.md')){ | ||
| $candidate=Resolve-GuideWorkspacePath $WorkspaceRoot "$base/$name" | ||
| if([IO.File]::Exists($candidate)){ $metadata.based_on=[string](Read-GuideDocument $candidate).Metadata['title'];$resources+="$base/$name";break } |
| $editionLanguages=@(@(Get-ChildItem $editionDirectory.FullName -Filter 'index*.md' -File|ForEach-Object {Language $_.Name})+@($pdfs|ForEach-Object {if($_.Name -match '\.([A-Za-z]{2,8}(?:-[A-Za-z0-9]{1,8})*)\.pdf$'){$Matches[1]}})|Sort-Object -Unique) | ||
| # Existing PDFs are supplied unless <site>/pdf/<guide>/<edition>/pdf.yaml declares | ||
| # otherwise; a declared generated PDF may not exist yet. | ||
| $declared=@(Get-GuidePdfDeclaredDownloads -SourceDirectory $source -GuideId $guideId -EditionPath $editionDirectory.Name) |
| - Contributors: other records in `g.yml` for `e`, filtered by the roles selected. | ||
| - Translators: records in `g.l.yml` for `e`. Absent for the source language. | ||
| - Names: `localizedNames[l]` when present, otherwise `name`. | ||
| - Order: `weight`, then `name`. |
|
Prepare completed. Workflow evidence. This is the candidate assessment, not independent policy or deployment approval. Prepare: passCommit: 1ef1a46 · Platform: 1.1.1-PullRequest54.4 · Target: canary Selection: v1.1.1-PullRequest54.4; resolved: v1.1.1-PullRequest54.4; OGP ring: preview.
Guide statusNo guide fixes identified by these checks. Artifact and live-site checks run in later stages. |
|
Preview deployed for commit 1ef1a46: https://blue-field-06cea8c03-54.westeurope.6.azurestaticapps.net/. Live verification follows in Actions. |
Coordinated update via ./build.ps1 Update -ring preview: installs the release containing nkdAgility/OpenGuidePlatform#54 (layered PDF recipe, contributor data, font reporting, right-to-left fixes), moves the site to the preview ring and @v1-preview workflow callers, refreshes managed skills and instructions, the Hugo module pin and the Actions lockfile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#116) ## Summary Adopts the OGP contributor and PDF format from nkdAgility/OpenGuidePlatform#54. **Contributors** - Translators move from front matter to `site/data/contributions/<guide>.<lang>.yml`: - fa, ja and min are moved as they were. - es-ES, pl and fr are copied from the translator notes in the guide text, which stay in place. - Authors come from `role: creator` records. The Persian and Minionese spellings are in `localizedNames`, and the home page reads the creators. - Removes a misplaced 2020.x Emily Coleman record from the Open Guide to Kanban data. She's credited in `the-kanban-guide.yml`. **Front matter** - Removes `author`, `translators`, font keys, `dir` and `pdf-engine` from every guide edition file. - Adds `short_title` to The Kanban Guide translations. **PDFs** - `site/pdf/` holds fonts per language with `fontSources`, plus the Kanban cover and heading styling for each guide: uppercase title, blue or red accent bar, coloured section headings. - Translated `pdf_*` labels are in every catalogue. - Regenerated (15): Open Guide to Kanban 2025.7 en, en-us (Letter), es-ES, fr, pl, fa, ja, min · The Kanban Guide 2025.5 en, es-ES, fr, pl, fa, ja, min. - Persian now uses Vazirmatn (SIL OFL). HMXRoya has no known public source. - Not regenerated: - The 2020.7 and 2020.12 editions: their web text is an abridged version, so the published PDFs stay authoritative. - Translations that exist only as PDFs. ## Before merging - **Platform release:** needs an OGP release containing #54, then `./build.ps1 Update -ring preview` on this branch to move the platform lock. Until then it builds only with `-PlatformSource Path` against that OGP branch. - **Native-speaker review:** needed for the new label translations. - **Remaining warning:** The Kanban Guide 2025.5 French has no translator names recorded anywhere (Prepare reports `TRANSLATORS_MISSING`). ## Testing - `./build.ps1 -Target local -PlatformSource Path` against the OGP branch: Prepare pass (warning above), Validate pass. - Covers and representative pages were checked visually for en, en-us, fr, pl, fa (right-to-left) and ja (CJK). 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * PDF editions feature redesigned title pages with edition details, optional descriptions, and available author, translator, and contributor credits. * PDF cover labels and callouts are localized across supported languages, with dedicated font support for Persian and Japanese. * Guide listings display localized creator credits, and Kanban Guide editions use short titles where available. * Translation-team credits are available for additional language editions. * **Updates** * Reviewed PDFs for the latest editions of both Kanban guides have been refreshed. * Platform builds now use a preview release. <!-- end of auto-generated comment: release notes by coderabbit.ai -->



Summary
Implements Guide PDFs and contributor records.
PDF generation
<site>/pdf/→<site>/pdf/<guide>/→<site>/pdf/<guide>/<edition>/, with.<lang>variants at every level. The per-runHeaderPaths/LuaFilterPaths/FontOverridesparameters are removed.cover-page.texis removed.pdf_*ids, English defaults).CJKmainfont…) enable Japanese line breaking.bidi=bidi-r, because the default XeTeX mode loses colour changes.rtl-latinfilter keeps Latin word and digit order.fontSourcesentry.Test-GuidePdfFontschecks a whole site.Contributors
data/contributions/<guide>.<lang>.ymlholds each translation team.localizedNamesgives a per-language spelling.Get-GuideCreditsresolves authors (role: creator), contributors and translators.Prepare / discovery
author,translators, font keys,dir)Sample site
Not included
supplied:opt-in, en/en-usvariants) is agreed in principle but not implemented here.Testing
./build.ps1 -Version 0.0.0-local: 530 passed, 0 failed, 3 skipped; sample preview and production pass Prepare/Validate.🤖 Generated with Claude Code
Summary by CodeRabbit