Commit Graph
1983 Commits
Author SHA1 Message Date
George Cushen 171f8f4ade fix: logger 2025-09-23 00:28:52 +01:00
George Cushen 1412d517b6 feat: Add GitHub/Obsidian-style Markdown callout support
Implements Hugo's new blockquote render hooks (v0.132.0+) to support standard
Markdown alert syntax, improving content portability across platforms.

Features:
- 5 alert types: note, tip, important, warning, caution
- Custom titles with `> [!TYPE]+ Custom Title` syntax
- Multilingual support (EN, ES, FR, DE, ZH) with `callout_*` i18n keys
- Shared renderer for both shortcodes and render hooks
- Backward compatibility with deprecated `{{< callout >}}` shortcode

Example usage:
```markdown
> [!NOTE]
> This is a note callout with important information.

> [!WARNING]+ Custom Warning Title
> This warning has a custom title instead of just "Warning".

> [!TIP]
> Here's a helpful tip for better workflow!
```

Breaking changes: None (backward compatible)
Deprecation: `{{< callout >}}` shortcode now shows warning, use standard syntax

Configuration required (already applied to all sites by default):
```yaml
markup:
  goldmark:
    parser:
      attribute:
        block: true
```
2025-09-23 00:21:53 +01:00
George Cushen b8ab618087 feat: standardize content type names and URL structure
- Convert singular to plural: project→projects, publication→publications, event→events
- Rename: post→blog, teaching→courses (with "blog" being the justified exception to plural rule)
- Update i18n translations (en, zh, zh-Hant, de, nl, fr, es, pt)
- Fix template references to use new content type names
- Update section IDs to maintain compatibility with menu references
- Fix debug template to better handle variable log structures

This change provides a more intuitive content structure with URL paths that match
common expectations, following standard practices where collection types use plural
names (with blog as the standard exception).
2025-09-22 23:47:38 +01:00
George Cushen 220330d872 refactor: implement multi-tier logging and drop panicOnWarning
- Centralize logger: warnf/errorf for normal pages; HTML comments for adapters
- Add dev console logs and export structured logs to /hbx-debug.json
- Remove --panicOnWarning from dev scripts; builds no longer fail on warnings
- Fix prior lint/format issues across scripts and templates
2025-09-22 22:48:26 +01:00
dependabot[bot] 0fc34ba8c8 ci(deps): bump tj-actions/changed-files from 44 to 47 (#3265)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44 to 47.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v44...v47)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-version: '47'
  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>
2025-09-22 22:18:51 +01:00
dependabot[bot] afa66f5756 ci(deps): bump actions/labeler from 5 to 6 (#3264)
Bumps [actions/labeler](https://github.com/actions/labeler) from 5 to 6.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: '6'
  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>
2025-09-22 22:18:34 +01:00
dependabot[bot] 6f20917a6b ci(deps): bump actions/setup-node from 4 to 5 (#3263)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  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>
2025-09-22 22:18:23 +01:00
George Cushen a2aaa838c0 feat(preact+landing): enable Preact block rendering + reusable landing page content system
## Preact Block Integration
- Enable Preact component detection for data-driven pages:
  - Fix init.html to resolve sections_source + per-section ref before Preact detection
  - Correct resource paths: blox/* → js/hbx/blocks/* (Hugo module mounts)
  - Update libraries.html to load Preact core + compiled block scripts
- Add dynamic icon rendering for Preact components:
  - Create Icon.jsx component with SVG decoding
  - Add get_icon_data.html partial for passing icon strings to Preact props
  - Update preact-wrapper.html to fetch icon data and inject into props
  - Wire hero component to render dynamic icons via <Icon svg={icon_svg} />
- Centralized logging system:
  - Add functions/logger.html to wrap warnf/errorf safely
  - Degrade to HTML comments in constrained contexts (content adapters)

## Reusable Landing Page Content System
- Add sections_source support:
  - Page front matter: sections_source: pages/<key> loads base from data/pages/<key>.yaml
  - Inline sections deep-merge over base by position; extras appended
- Add per-section ref system:
  - Any section: ref: blocks/<slug> loads from data/blocks/<slug>.yaml
  - Inline section properties deep-merge over ref (content/design submaps)
  - Enable content reuse across multiple landing pages
- Create reusable block library:
  - Add test/data/blocks/: hero_basic.yaml, features_basic.yaml
  - Add test/content/linked/index.md demo using refs with overrides
- Add pragmatic deep merge for content/design override handling

## Infrastructure & Schemas
- Update base-block.json schema:
  - Fix gradient structure: flat → nested (gradient.start/end/direction)
  - Fix color structure: string|{light,dark} (matches parse_block_v3.html)
  - Update hero schema to properly extend base via $ref
- Fix Tailwind source path generation:
  - Add tailwind_sources.html with test vs starter site logic
  - scripts/view-test.sh: export HUGO_BLOX_TEST_SITE=true
- Update block directory structure:
  - blox/<name>/config.html (was blox/<name>--CONFIG.html)
  - Apply to init.html + parse_block_v2.html
- Code quality improvements:
  - Biome config: match Prettier rules

## Content Adapters (Removed)
- Investigated Hugo content adapters for landing pages
- Found execution context limitations (early build phase, limited site methods)
- Archived to backups/content-adapters-*.zip and removed from test site
- Decision: use standard pages + data linking instead of adapters

This enables dynamic Preact rendering with proper icon support while providing a flexible, reusable content system for landing pages that maintains the "single file = page" mental model with optional advanced linking.
2025-09-22 22:18:03 +01:00
George Cushen 0c43c902ce ci: fix labeller 2025-09-22 22:18:03 +01:00
github-actions[bot] 427f472ffc chore(starters): update modules to latest commits 2025-09-21 15:36:16 +00:00
George Cushen 9ab22e5397 ci(release): add option to update starters with module commit hashes 2025-09-21 16:33:59 +01:00
George Cushen 2f66c837fb ci: fix starter builds 2025-09-21 16:25:04 +01:00
George Cushen 1495a500e5 ci: fix 2025-09-21 16:17:58 +01:00
George Cushen 04890f328a ci: only run splitter for starters with changes 2025-09-17 23:14:14 +01:00
George Cushen bd25b85d1e ci: rename 2025-09-17 10:09:25 +01:00
George Cushen 1e909204d6 ci: fix pnpm 2025-09-17 03:23:18 +01:00
George Cushen d5d2f04c2d chore: adopt Biome + Stylelint, modernize CI/CD, add security/support docs, minor JS fixes
- Linting/format
  - Replace ESLint/Prettier with Biome; remove old configs; add `biome.json`; update scripts
  - Tailwind-friendly `.stylelintrc.yaml`; Stylelint and Biome pass
  - Enable Biome across `modules/**`; prune legacy JS globals; ignore oversized `devicon.json`

- Code fixes
  - `hb-theme.js`: avoid assignment-in-expressions; clearer dataset updates
  - `hugoblox-slides.js`: fix inner var scope (var → let); apply formatting

- CI/CD
  - Split lint/build workflows; add path filters; Node via Corepack (pnpm from package.json)
  - Hugo pinned to env `HUGO_VERSION`; add consistency check vs `starters/academic-cv/hugoblox.yaml`
  - Nightly starters matrix build (academic-cv, landing-page); CodeQL weekly; resource caches

- Workflows/Community
  - Greeter: switch to `pull_request_target`; add Contributor Guide to PR message
  - PR labeler for path-based labels

- Repo policies/docs
  - `CODEOWNERS` for `@gcushen`
  - `SECURITY.md`, `SUPPORT.md`
  - Documented branch protection in `.github/settings.yml`
  - Move `CODE_OF_CONDUCT.md` to `.github/`

- docs(zh): update `README.zh.md` translation

Notes:
- pnpm is sourced from `package.json: packageManager` via Corepack; no hard-coded pnpm versions in CI.
2025-09-17 03:17:38 +01:00
George Cushen db8a975a9f feat(css): remove legacy wc.min.css 2025-09-17 00:26:10 +01:00
George Cushen 9140e2f776 feat: modernize blocks with 2025 glassmorphism & UX improvements
CTA Card:
- Add 2025 glassmorphism styling with backdrop blur
- Implement icon support for buttons with hover animations
- Add contrast control (text_color, overlay_opacity)
- Support custom backgrounds (image, gradient, texture layers)

Hero Block:
- Fix hash fragment URL parsing (#portfolio -> #portfolio, not /#portfolio)

Infrastructure:
- Add reusable glassmorphism CSS components
- Create SVG noise texture for glassmorphism effects
2025-09-17 00:26:10 +01:00
George Cushen ef2b77ea92 feat: enhance block infrastructure with dynamic assets & multi-layer backgrounds
- Add dynamic JavaScript loading system for blocks
- Implement multi-layer background support (texture + gradient)
- Add Tailwind color variable conversion in templates
- Support light/dark background color modes
- Prevent framework CSS conflicts with custom styles
2025-09-17 00:26:10 +01:00
George Cushen 776157d486 feat: enable automatic Tailwind CSS v4 integration in blox-tailwind module
- Fix Hugo documentation inconsistency: mount hugo_stats.json to match @source directive
- Module provides all Tailwind v4 configuration - zero user config required
- Add comprehensive color variables safelist for dynamic YAML usage
- Enable build stats and cachebusters for optimal performance
- Maintain hugo_stats.json in .gitignore (auto-generated per site)

Benefits:
- Automatic Tailwind v4 support for all existing users (no breaking changes)
- Proper Hugo Stats content detection with corrected paths
- Module handles all complexity - users just import and use
2025-09-17 00:26:10 +01:00
George Cushen c5625bd0b7 ci: add --update-starters-to-commits option to release script
Add standalone option to update starter templates with latest module
commits using Go pseudo-versions instead of creating new release tags.

- New functions for commit info extraction and pseudo-version formatting
- Updates go.mod files with v0.0.0-YYYYMMDDHHMMSS-abcdefabcdef format
- Updates Hugo versions in hugoblox.yaml, netlify.toml, and deploy.yml
- Uses deploy.yml workflow filename (GitHub Pages convention)
- Supports --dry-run for preview and --yes for execution
- Perfect for GitHub UI workflows and development environments

Validated with:
`poetry run python scripts/release_modules.py --update-starters-to-commits --dry-run --log-level INFO`
2025-09-17 00:25:56 +01:00
George Cushen e6734f33ae feat(scripts): default to academic-cv starter when no argument provided
- Update view-starter-dev.sh to default to academic-cv if no starter specified
- Update view-starter-prod.sh to default to academic-cv if no starter specified
- Update usage documentation to show starter name as optional parameter
- Maintain backward compatibility with existing usage patterns
2025-09-17 00:16:19 +01:00
srgg d2f774f01f feat(resume-skills): add dynamic columns with responsive breakpoints (#3260)
Implement configurable columns parameter (default 2) with progressive responsive grid: 1→2→3→4→5 columns across breakpoints. Replace the fixed flex layout with CSS Grid for better multi-column control.

Example to change the default layout from 2 cols to 3 cols:

```
  - block: skills
    content:
      title: Skills & Hobbies
      username: admin
    design:
      show_skill_percentage: false
      columns: 3
```
2025-09-15 22:19:57 +01:00
srgg 1852d99718 feat(block): show clockwise progress in resume-languages rather than counter-clockwise
Fix progress bar display in resume-languages block:  Correct stroke-dashoffset calculation to show accurate progress. Previously, progress bars displayed the gap segment (remaining progress) starting from the first quadrant, whereas for 80% progress it should appear in the 4th quadrant, causing the visual representation to appear inverted.

See #3252
2025-09-15 21:26:37 +01:00
srgg 40e2193a07 feat(blocK): improve resume-skills style to top align both sections (#3259)
Change 'items-center' to 'items-start' to prevent shorter content from centering vertically, ensuring the Skills and Hobbies categories align at the same top level regardless of content size/height differences.
2025-09-15 21:24:20 +01:00
github-actions[bot] 77d2cebad0 chore(starters): bump modules and Hugo 2025-09-08 22:23:01 +00:00
github-actions[bot] abb3798d72 chore(blox-tailwind): prepare v0.7.0 2025-09-08 22:22:59 +00:00
dependabot[bot] 3b8ec5b737 ci(deps): bump actions/stale from 9 to 10 (#3248)
Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9...v10)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: '10'
  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>
2025-09-08 21:27:45 +01:00
dependabot[bot] d30e27c1d4 ci(deps): bump actions/setup-python from 5 to 6 (#3247)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  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>
2025-09-08 21:27:14 +01:00
George Cushen 1675dd45f0 feat: add embed shortcode
Embed GitHub repos, HuggingFace, and custom providers

See Academic CV demo blog for examples
2025-09-07 23:04:43 +01:00
George Cushen 21a72ba522 feat(shortcode): port button shortcode to Tailwind
Example:
{{< button url="/contact" >}}Contact Us{{< /button >}}
2025-09-07 21:26:42 +01:00
George Cushen c64305e2fe ci: add welcome msg 2025-09-07 19:04:31 +01:00
George Cushen 9fa165c6c3 fix(style): prevent inheriting italic from Chroma in dark mode
See https://discord.com/channels/722225264733716590/1414174968052187328/1414174968052187328
2025-09-07 18:49:33 +01:00
George Cushen 34e5c4d87b starters: edit readme 2025-09-07 03:41:17 +01:00
George Cushen 4c58bf92dd starters: edit readme 2025-09-07 03:36:14 +01:00
github-actions[bot] 930c712354 chore(starters): bump modules and Hugo 2025-09-07 01:25:36 +00:00
github-actions[bot] 6f621e963a chore(blox-tailwind): prepare v0.6.1 2025-09-07 01:25:34 +00:00
George Cushen 064c109db9 fix: rare bug causing site_footer.html error 2025-09-07 02:24:04 +01:00
George Cushen 888ffd66de chore: verbose Netlify logs 2025-09-07 01:36:38 +01:00
George Cushen d259eaeb99 chore: verbose Netlify logs 2025-09-07 01:23:53 +01:00
George Cushen 61a67d7c5a ci(split-packages): enable manual + chained runs; gate on success
- add workflow_dispatch to run splitter from the UI
- add workflow_run to follow “Release HugoBlox Modules” completion
- guard job to run only when upstream conclusion == success
- add comment: upstream workflow `name:` must match exactly
- retain push trigger on main
2025-09-07 01:13:21 +01:00
github-actions[bot] 540ba9c933 chore(starters): bump modules and Hugo 2025-09-06 23:42:01 +00:00
github-actions[bot] 3845e37d9e chore(blox-tailwind): prepare v0.6.0 2025-09-06 23:41:59 +00:00
George Cushen f81620a20f feat: modernize card view with 2025 design trends and smart metadata
- Refactor card layout with glassmorphism, improved shadows, and micro-interactions
- Add structured content_meta support (content_type, difficulty, prerequisites, trending)
- Implement trending overlay badge on image with i18n support
- Add configurable metadata display (show_date, show_read_time, show_read_more)
- Optimize for mobile with responsive metadata hiding and layout stacking
- Enhance image handling with fill_image toggle and AVIF/WebP support
- Unify article-grid and card views for consistency across theme
- Add reading time calculation and improved accessibility (ARIA labels, focus states)
- Support primary color category pills and author avatars with proper sizing
2025-09-07 00:38:59 +01:00
George Cushen 1d2248be50 starters: migrate Link-In-Bio to Tailwind 4 2025-09-06 22:42:46 +01:00
George Cushen 03718628e4 starters: edit resume 2025-09-06 22:12:33 +01:00
George Cushen 04f3b2e8ae feat: re-design resume-biography-3 block & support full color palettes
Modern re-design of the main Resume block.

Awards block icons are no longer tied to the 'brands' pack - any pack can be used and specified in the form `icon: <pack>/<icon>

Refactor Tailwind CSS theming to support full primary/secondary palettes

Refactors the theme system to correctly apply primary and secondary color palettes from theme packs.

Previously, Tailwind's build-time resolution of CSS variables in the `@theme` block caused theme pack colors to be overridden by the default blue theme.

This commit resolves the issue by adopting a best-practice, two-layer token system:
1.  All theme packs now define `--hb-primary-*-rgb` and `--hb-secondary-*-rgb` variables with raw RGB values.
2.  The core `theme.css` now defines `--color-primary-*` and `--color-secondary-*` inside the `@theme` block using a `rgb(var(...))` function. This makes Tailwind aware of the themeable color names so it can generate all necessary utilities (`bg-`, `text-`, `ring-`, etc.) while ensuring the final color value is resolved in the browser at runtime.

This change fixes the build error related to unknown utility classes (e.g., `ring-primary-500`) and ensures that the selected theme pack is correctly applied across all components.
2025-09-06 21:59:27 +01:00
George Cushen 3b314fe4b2 fix: resolve dark mode code blocks and JavaScript errors after Tailwind migration
- Fix dark mode code block styling in chroma.css (background stays bright issue)
- Resolve JavaScript errors with window.hbb object initialization
- Fix Mermaid.js color parsing errors with proper CSS variable fallbacks
- Move inline JavaScript to external files for CSP compliance
- Create dedicated hb-search.js for search functionality
- Add proper error handling and validation for PagefindUI initialization
- Update .stylelintrc.yaml to disable no-descending-specificity rule
- Fix remaining lint issues: flex-flow shorthand and kebab-case IDs
- Ensure theme toggler functionality works correctly

Resolves regressions introduced during Tailwind 3→4 migration.
All functionality now works in both light and dark modes.
2025-09-06 18:19:08 +01:00
George Cushen f1bd41ffa2 feat: add block metadata 2025-09-04 00:18:06 +01:00