Commit Graph
2208 Commits
Author SHA1 Message Date
George Cushen 26e1f775a2 chore(ci): bump GitHub Actions to Node.js 24-compatible versions
Bumps actions across all template and repo workflows to avoid the
Node.js 20 deprecation (enforced June 2026):
- actions/checkout v3/v4 → v6
- actions/cache v4 → v5
- actions/setup-go v5 → v6
- actions/setup-python v4/v5 → v6
- peter-evans/create-pull-request v5/v6 → v7
2026-03-30 19:20:15 +01:00
George Cushen ec5aca1fdb chore(tpl): migrate support for Hugo Content adaptor in Hugo v0.158+ 2026-03-30 19:04:08 +01:00
George Cushen 1c3e70a5f5 chore(tpl): devicon renamed aws icon 2026-03-30 19:03:13 +01:00
George Cushen 27313292ed chore(tpl): fix hugo version detection 2026-03-30 18:52:22 +01:00
github-actions[bot] f54d1c825e chore(templates): update modules to latest commits 2026-03-27 04:45:11 +00:00
George Cushen 76023f9461 refactor(images): adopt Hugo reflect.IsImageResource* API for type-safe image processing
Replace manual format detection (printf "%T", MediaType.SubType whitelists,
duck-typing) with Hugo's new reflect.IsResource, reflect.IsImageResource, and
reflect.IsImageResourceProcessable functions across 19 template files.

Key changes:
- process_responsive_image: collapse 15-line format whitelist into single
  reflect.IsImageResourceProcessable call
- Unify three-way SVG/processable/GIF branches into two-way $canProcess guard
- Remove duplicate GIF passthrough branches in single.html, events/page.html
- Add missing SVG guard in research-areas block (was calling .Fill unprotected)
- Replace nil checks with reflect.IsResource in get_cover_image/get_featured_image

Design decision: GIFs are intentionally excluded from processing despite Hugo
supporting it — processing strips animation frames, so we preserve user-optimized
animated GIFs by checking (IsImageResourceProcessable AND not GIF).
2026-03-27 04:35:53 +00:00
George Cushen ee683c8cd1 feat(hugo): replace deprecated cascade._target for Hugo v0.156+ compatibility 2026-03-27 04:17:17 +00:00
George Cushen 4fa40b91e2 feat(css): co-locate block CSS with auto-discovery via Tailwind pipeline
Move block-specific CSS from centralized assets/css/blox/ to co-located
style.css files within each block directory. The css.html partial now
auto-discovers style.css files from bundled and community blocks and
concatenates them into the Tailwind entry via resources.Concat, enabling
full @apply support while avoiding VFS path resolution issues.

Shared biography styles (avatar, ruby) are extracted to blox/shared/css/
and auto-included before per-block styles. Navbar CSS moves to
components/ as it's a framework-level concern. The separate community
CSS pipeline in site_head.html is removed — all block CSS now flows
through a single Tailwind entry point.
2026-03-27 04:15:49 +00:00
George Cushen 13dde12ae0 refactor(hugo): use strings.ReplacePairs for chained replacements
Adopt Hugo v0.158's strings.ReplacePairs in rss.xml and
parse_block_v3.html to replace nested replace calls.
2026-03-27 03:33:15 +00:00
George Cushen 815d25ca9d feat(hugo): replace deprecated language APIs for Hugo v0.158+ compatibility
Replace site.LanguageCode → site.Language.Locale and
.Language.LanguageCode → .Language.Locale in module layouts,
and languageCode → locale in all template language configs.
2026-03-27 03:30:44 +00:00
George Cushen ef8ed449c7 feat(hugo): replace deprecated APIs for Hugo v0.156+ compatibility
Migrate site.Data → hugo.Data (42 occurrences), site.IsMultiLingual →
hugo.IsMultilingual, and site.AllPages → hugo.Sites nested range.
Simplify Netlify redirects template to use pre-processed aliases
instead of relLangURL per gohugoio/hugo#14408.
2026-03-27 03:25:42 +00:00
George Cushen 94703c5c4f fix(share): use urls.PathEscape for mailto share links per RFC 6068
Enabled by new Hugo v0.153 release.

Replace the brittle `urlquery` + blanket `+` → `%20` workaround with
Hugo's `urls.PathEscape` for mailto URIs, which natively percent-encodes
spaces as `%20`. The old approach could corrupt titles containing
literal `+` characters.
2026-03-27 03:13:04 +00:00
George Cushen 5733b053bb feat(icons): expand brands icon pack and update all packs
Also, refactor icon resolution to avoid duplicated logic:

get_icon_svg.html	New shared core — alias resolution, pack lookup, hb fallback, user assets, hugo fallback. Returns raw SVG string.

get_icon.html	Thin wrapper — emoji handling, calls get_icon_svg, Unicode emoji fallback for bare names, attribute injection, safeHTML return.

get_icon_data.html	Thin wrapper — one-liner delegating to get_icon_svg.
2026-03-27 00:19:41 +00:00
George Cushen 2bb78df692 refactor(frontmatter): rename hide_date → show_date for consistent positive booleans
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
2026-03-26 23:17:42 +00:00
George Cushen c8702b2c5e chore: add AGENTS placeholder 2026-03-26 22:54:43 +00:00
George Cushen e02d32190a refactor(theme): prefix font/theme pack CSS vars with --hb- namespace 2026-03-13 15:46:35 +00:00
George Cushen 71b5a1b844 feat(typography): auto-detect bundled fonts and skip Google Fonts CDN
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.
2026-03-13 15:29:32 +00:00
George Cushen aa272895d8 fix: prevent double-unescaping in Icon SVG decoder (CWE-116)
Move \u0026 decode after HTML entity decodes so sequences like
\u0026lt; aren't double-unescaped into raw '<'.
2026-03-13 13:49:30 +00:00
George Cushen 2c3a2491f1 fix: handle SVG images in responsive image processing
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
2026-03-13 13:39:56 +00:00
dependabot[bot] 71f472d381 ci(deps): bump docker/login-action from 3 to 4 (#3308)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-13 12:18:39 +00:00
dependabot[bot] 949d15febb ci(deps): bump docker/build-push-action from 6 to 7 (#3307)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-13 12:18:06 +00:00
George Cushen 7bc44d0a31 ci: format 2026-03-03 00:31:09 +00:00
George Cushen 37f3c7bf32 ci: fix lint 2026-03-03 00:30:51 +00:00
George Cushen 5c03d17d38 feat: add experimental registry 2026-03-03 00:30:27 +00:00
George Cushen 4d38c40f9f feat(i18n): add multilingual support for author data files
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.
2026-03-03 00:30:27 +00:00
George Cushen dbe0c86df7 fix(blocks): restore missing background design features in v3 parser
- Fix background image brightness filter not applying (closes issue URL below)
- Add CSS filters: blur, contrast, saturate, grayscale
- Add background image size, position, and repeat controls
- Add background.css_class for custom classes on bg layer
- Add design.clip_path for shaped section edges
- Add errorf for missing background images
- Remove dead v2 parser (no longer referenced)

Fixes https://discord.com/channels/722225264733716590/1477717661981999114/1477717661981999114
2026-03-03 00:30:27 +00:00
George Cushen 24dc36f6d7 feat(typography): extend typography system with Google Fonts and font packs 2026-03-03 00:30:27 +00:00
github-actions[bot] 4fcfe33cc0 chore(templates): update modules to latest commits 2026-02-19 15:29:19 +00:00
George Cushen 9965378d18 refactor(slides): consolidate config into config/_default/hugo.yaml 2026-02-19 15:12:39 +00:00
George Cushen 764756ab50 feat(hugo): add support for Hugo v0.153 breaking changes
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
2026-02-19 14:57:09 +00:00
George Cushen a3c21b401e fix: lint 2026-02-19 14:15:26 +00:00
George Cushen 00147612cd feat(footer): add social icons and nav links to default minimal footer 2026-02-18 22:29:17 +00:00
George Cushen ab44db81d7 feat(blocks): add columns footer block 2026-02-18 22:09:10 +00:00
George Cushen bf41049de2 fix(blocks): Feature widget off-center Preact icons 2026-02-18 19:28:28 +00:00
George Cushen 9916ea5d2a feat(layouts): hide pager on root pages 2026-02-18 19:22:19 +00:00
George Cushen ef8a34e33a feat: convert remaining Landing Page blocks from Go HTML to React 2026-02-18 19:21:54 +00:00
dependabot[bot] 266d092fac ci(deps): bump symplify/monorepo-split-github-action from 2.4.2 to 2.4.4 (#3301)
Bumps [symplify/monorepo-split-github-action](https://github.com/symplify/monorepo-split-github-action) from 2.4.2 to 2.4.4.
- [Release notes](https://github.com/symplify/monorepo-split-github-action/releases)
- [Commits](https://github.com/symplify/monorepo-split-github-action/compare/v2.4.2...v2.4.4)

---
updated-dependencies:
- dependency-name: symplify/monorepo-split-github-action
  dependency-version: 2.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-18 16:12:53 +00:00
Olaf Lipinski 0707567fd3 fix: check author file has data before attempting to show the profile (#3304) 2026-02-18 16:11:37 +00:00
George Cushen 214e40464e chore: edit socials 2026-02-15 20:54:34 +00:00
George Cushen 3fd11f9853 chore: edit ext ID 2026-02-15 20:51:54 +00:00
George Cushen 4660d30978 tpl(resume): edit navbar 2026-02-15 20:50:15 +00:00
David SindenandGeo 002cccd6ac fix: style markdown lists within experience/education (#3299)
Co-authored-by: Geo <gcushen@users.noreply.github.com>
2026-02-08 01:55:23 +00:00
dependabot[bot] dc418686ba ci(deps): bump symplify/monorepo-split-github-action from 2.4.0 to 2.4.2 (#3300)
Bumps [symplify/monorepo-split-github-action](https://github.com/symplify/monorepo-split-github-action) from 2.4.0 to 2.4.2.
- [Release notes](https://github.com/symplify/monorepo-split-github-action/releases)
- [Commits](https://github.com/symplify/monorepo-split-github-action/compare/v2.4.0...v2.4.2)

---
updated-dependencies:
- dependency-name: symplify/monorepo-split-github-action
  dependency-version: 2.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 01:30:36 +00:00
George Cushen a139f74289 refactor(workflows): replace grep/awk with yq for robust YAML parsing
Pin yq v4.44.1 in all template workflows with retry logic,
error handling, and input validation.
2026-01-26 01:30:00 +00:00
George Cushen 58f7dcdaf9 fix(biography): make status.icon optional in resume-biography block
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.
2026-01-24 19:19:43 +00:00
github-actions[bot] a17fc859f9 chore(templates): update modules to latest commits 2026-01-24 04:21:22 +00:00
George Cushen 77f7678f08 fix(blox): restore side-by-side layout in cta-image-paragraph block
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.
2026-01-24 04:00:29 +00:00
George Cushen c043870d3d feat(biography): re-implement ruby pronunciation annotations for CJK names
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")
2026-01-24 03:30:32 +00:00
George Cushen 34959c03b1 tpl(ci): modernize CI/CD workflows
- Refactor build into reusable workflow (DRY)
- Add deploy.host config to control deployment target
- Upgrade to latest action versions (Node 22, Go 1.23, Python 3.13)
- Add timeout-minutes and concurrency groups for safety
- Use github.run_id for unique PR branch names
- Fix package_json_path for standalone repo compatibility
- Scope GITHUB_TOKEN to specific steps for security
2026-01-24 03:05:12 +00:00
George Cushen f99801d147 tpl(startup): add content adapter to solve author profile 404s
Introduces a Hugo Content Adapter ([content/authors/_content.gotmpl](templates/startup-landing-page/content/authors/_content.gotmpl:0:0-0:0)) to the Startup template. This automatically generates author pages for every entry in `data/authors/*.yaml`, ensuring that team members without published content effectively possess a profile page instead of returning a 404 error. This is critical for Organization/Team sites where all members are displayed in the Team block.
2026-01-24 02:52:05 +00:00