- Add intro/title page before TOC (configurable via intro.enabled in songbook.yaml)
- Rotate reference book column headers 90° in TOC to prevent text truncation
- Add progress callback to SongbookPipeline.build() with CLI and GUI integration
- Make GUI song loading async with spinner indicator
- Fix TOC page padding: use actual rendered page count instead of blindly adding tocPages-1 blank pages
- Pre-render TOC to measure actual pages needed (TocRenderer.measurePages)
- Account for intro pages in pagination offset and page numbering
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Improve PdfFontMetrics: use canonical path for cache key, validate
font file existence, use absolute paths for BaseFont.createFont
- Add font file path resolution in SongbookPipeline (relative to
project directory)
- Add font file existence validation in Validator.validateConfig
- Add end-to-end tests: custom font loading, umlaut rendering,
cache deduplication, missing file error
- Document custom font file usage in example songbook.yaml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ForewordConfig to BookConfig, Foreword model type, ForewordParser for
text files (quote/paragraphs/signatures), ForewordPage in PageContent,
pipeline integration to insert foreword after TOC, and PDF rendering with
styled quote, horizontal rule separator, word-wrapped paragraphs, and
right-aligned signatures.
Also adds Gradle wrapper and adjusts build toolchain for JDK 25 compat.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Kotlin/JVM multi-module project for generating a scout songbook PDF
from ChordPro-format text files. Includes ChordPro parser, layout engine
with greedy spread packing for double-page songs, OpenPDF renderer,
CLI (Clikt), Compose Desktop GUI, and 5 sample songs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>