All other display toggles use positive naming (show_*, toc, share, etc.).
Flipping to show_date (default: true) aligns the API and reduces cognitive load.
BREAKING CHANGE
Add a second resolution tier to the typography system: before falling
back to Google Fonts, check assets/dist/font/ for a matching local
file. When found, emit @font-face with local() fallback instead of a
CDN <link>. Variable fonts detected from ".var." filename convention.
Bundle JetBrains Mono alongside Inter so the default "modern" pack
loads entirely from local files — zero external font requests.
SVG resources don't support .Width, .Height, or .Process in Hugo,
causing crashes in process_responsive_image.html and all callers
that pass SVGs without guards.
Add SVG checks to process_responsive_image.html, preact-wrapper.html,
resume-biography, resume-biography-3, authors/term, and
page_author_card.
Fixes#3305
Hugo doesn't natively merge language-specific data directories with the default data. Add a `get_authors_data` partial that manually
looks up `data/<lang>/authors/` and deep-merges translated fields
on top of the default data/authors/ profiles.
Centralizes all `site.Data.authors` access through this new partial
so author names, bios, roles, and other fields can be translated
per language while inheriting non-translated fields from the default.
migrate deprecated `includeFiles` to `files` glob slice (Hugo >= 0.153.0)
Replace `module.mounts.includeFiles` with the new `files` setting
introduced in Hugo v0.153.0. Update minimum Hugo version accordingly.
Affected files:
- modules/blox/hugo.yaml
- All template module.yaml configs (7 templates)
BREAKING CHANGE
See: https://gohugo.io/configuration/module/#files
Add explicit type checking and proper trimming for status icon extraction
to match the more robust pattern used in resume-biography-3.
Fixes issue where users couldn't omit the emoji status badge.
Previous commits broke the 2-column grid layout by prematurely closing
the grid container after the image, leaving the text content outside
the grid. Now both image and text are properly wrapped within the same
md:grid md:grid-cols-2 container.
Fixes regression where image and paragraph appeared stacked vertically
instead of side-by-side on medium+ screens.
Add visual pronunciation guides (pinyin, furigana, IPA) displayed as ruby text annotations above the profile name in biography blocks.
- Add conditional ruby rendering in resume-biography and resume-biography-3
- Include browser fallback for non-ruby-supporting browsers
Usage: Set `name.pronunciation` in author YAML (e.g., "Wáng Wěi")
Refactor the sidebar component logic to correctly handle the `no_sidebar` parameter.
Previously, `default true` treated an explicit `false` value as empty, causing the sidebar
to be hidden unintentionally. Replaced with an explicit inequality check.
- Add branding overlays: logo, title, author, and footer text
- Use Reveal.js theme CSS variables for automatic color adaptation
- Inline SVGs for currentColor support on any theme
- Per-slide control via HTML comments:
- <!-- no-branding -->: hide all elements
- <!-- no-header -->: hide logo + title
- <!-- no-footer -->: hide author + footer
- Fix body-level CSS selectors for proper visibility
- Add comprehensive documentation in example slides
- Update 'resume-biography', 'research-areas', 'logos', and 'cta-image-paragraph' blocks
- Add support for remote images (http/https) via resources.GetRemote
- Add support for Page Resources (bundles) via .Resources.GetMatch
- Normalize paths to handle 'assets/', 'media/', './' prefixes consistently
- Maintain backward compatibility with global assets and static URLs
- Support image resolution from Page Bundles, Remote URLs, and Global Assets
- Normalize paths to correctly handle 'assets/', 'media/', and './' prefixes
- Add fallback to static URLs if resource processing fails
- Fixes issue where avatar images failed to load in certain templates
- keep raw front-matter author strings as preferred display when no profile exists
- fall back to title-cased humanized slug only as last resort to avoid lowercase initials
- render authors directly from Params order and resolve links via taxonomy pages when present
Fix https://discord.com/channels/722225264733716590/1457522006462435541/1458539152160067784
Reviewed all 27 block schemas in modules/blox/blox against their block.html implementations and applied best-practice optimizations. Here's what was updated:
Schemas Updated with New Properties
Schema Changes
cta-button-list Added label, name, link aliases; added new_tab boolean; changed required to anyOf for flexibility
dev-hero Added content as required; added design.animations boolean
faq Added title/text aliases for items; added padding_sm and defaults to spacing arrays
knowledge-categories Added link field per category item; added minimum: 0 for count
portfolio Added design.animations boolean; added sort_by enum
tech-stack Added design.animations boolean
Schemas Updated with Improved Descriptions & Enums
Schema Improvements
collection Added sort_by enum; improved view description; changed columns to integer with min/max constraints
resume-experience Added $comment documenting author profile fields (button, tags, etc.)
resume-skills Added $comment documenting skill group structure
resume-awards Added $comment documenting award item fields
resume-languages Added $comment documenting language level conversions
resume-biography Enhanced avatar size description with pixel values
resume-biography-3 Enhanced avatar/name size descriptions
stats Improved statistic description with formatting examples
hero Clarified no_padding description with Tailwind classes
logos Enhanced display_mode description with layout behaviors
research-areas Enhanced layout description with style explanations
team-showcase Added sort_by enum with common values
search-hero Added examples array for suggestions
testimonials Added image processing note and examples
cta-image-paragraph Added responsive image processing note
features Enhanced icon description with pack formats and examples
Schemas Already Well-Aligned
These schemas were already in good shape and required no changes:
contact-info, cta-card, hero, markdown, stats, testimonials, trending-questions
Notes
New alias fields (label/name/link in buttons, title/text in FAQ items) provide backward compatibility with alternate naming conventions used in templates
The $comment fields document author profile data structures that aren't directly in the schema but are consumed by resume blocks
Finished hardening the remaining blocks by guarding content/design maps, normalizing list inputs, coercing numeric/boolean values, and sanitizing links; also tightened scroll target handling in block.html.
Changes
Normalized portfolio tags/tech stacks/links, made archive defaults safe, and ensured filter JS uses JSON-safe tags in block.html.
Validated research area layouts and item fields, added safe media/link handling, and made CTA rendering resilient in block.html.
Hardened resume blocks for profile fields, buttons/links, and dates using try with time in block.html, block.html, and block.html.
Improved numeric parsing and labeling for language/skill meters in block.html and block.html.
Added guarded items and predictable grid classes in block.html.
Sanitized badge/title/suggestions/stats rendering in block.html, normalized tech categories and made list style exclusive in block.html, and hardened testimonials’ items/image handling in block.html.
Normalized dynamic/static question data, badges, and safe links in block.html.
- default to last-name sort with numeric-friendly keys for weight/graduation_year
- support per-group sorting, optional empty-state, and role fallback to affiliation
- add grid/interest caps, alignment controls, and avatar initial placeholders
- expose graduation_year/weight/name_family_pref in profiles; update schema/README
- retain raw front-matter author strings as display names when no profile data is present
- title-case humanized slug only as last-resort fallback to avoid lowercase surnames
- reduce need for author profile files while keeping names correctly capitalized
Fixes https://discord.com/channels/722225264733716590/1457522006462435541