Commit graph

319 commits

Author SHA1 Message Date
George Cushen
e9a47baa66 feat(seo): enhancements for rich Google and LLM results
Add WebPage/CollectionPage schema, BreadcrumbList, and configurable llms.txt output for better rich results and AI crawling.

New `marketing.seo.llm` params added to `params.yaml` to config llm scraping prefs.
2025-11-23 03:42:43 +00:00
George Cushen
1bff23752e feat: add breadcrumb structured data via BreadcrumbList JSON-LD for non-home pages 2025-11-23 02:44:54 +00:00
George Cushen
575f85fdde feat: allow hud to be re-positioned 2025-11-20 22:30:41 +00:00
George Cushen
89ab4d1a34 fix: search not working when site deployed to sub-folder 2025-11-15 16:18:46 +00:00
George Cushen
765ecf7da2 feat: update partials path for recent Hugo breaking changes
Completes previous commit 9fce47f
2025-11-12 19:48:04 +00:00
Geo
9fce47f11e
feat: update partials path for recent Hugo breaking changes 2025-11-12 19:37:39 +00:00
github-actions[bot]
c8cae88f17 chore(blox-tailwind): prepare v0.10.0 2025-11-08 00:16:06 +00:00
George Cushen
b765ba20e1 refactor: fix new Biome lint errors/warnings 2025-11-06 21:17:51 +00:00
George Cushen
8a7ce247da ci: add --no-frozen-lockfile 2025-10-25 14:51:41 +01:00
George Cushen
323f1122b7 feat: improve card view footer
Moves read more link to new link to prevent squash when long (author etc) metadata in footer.
2025-10-24 23:39:42 +01:00
George Cushen
482b7a8205 feat: add 'emoji' icon pack support
Use like `icon: emoji/wave`
2025-10-24 23:38:29 +01:00
George Cushen
0f474b371f feat: show author name rather than username in terms/taxonomy layout 2025-10-24 23:37:45 +01:00
George Cushen
c34ccd27b0 feat: add new blocks
For contact-info, logos, research-areas, team-showcase

Update:
- hero block: to prevent wide sub-title text on large screen
- stats block: re-designed stats block with new styles
2025-10-24 23:37:08 +01:00
George Cushen
5f2290d590 starters: standardise starters dir name to templates 2025-10-23 23:43:50 +01:00
George Cushen
20a6f8202e fix: linting 2025-10-23 21:28:34 +01:00
George Cushen
692dc8c62e feat: re-designed search UI and new FAQ and Q&A blocks
- Add search-hero block with ==highlight== syntax and gradient mesh backgrounds
- Add knowledge-categories block with dynamic Hugo taxonomy counts
- Add trending-questions block with content-driven trending system
- Add FAQ/questions layouts with Alpine.js accordions and search integration
- Redesign search modal using Pagefind headless API to create custom UI design
- Add gradient mesh background system (orbs, waves, dots, grid) to framework
- Add i18n support for new blocks
- Fix video backgrounds regression in parse_block_v3.html
- Add QAPage/FAQPage structured data for SEO optimization
2025-10-23 21:07:30 +01:00
github-actions[bot]
d9f1a8428c chore(blox-tailwind): prepare v0.9.0 2025-10-23 19:12:07 +00:00
Geo
2e6abec624
fix: for code scanning alert no. 10: Double escaping or unescaping (#3283)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-21 22:38:55 +01:00
Olaf Lipinski
8b7392b56d
feat: add support for displaying organization logos (#3282)
Add `icon` option to `organizations` and `education` data structures in author profiles.

Use the standard icon feature to apply a custom brand icon e.g. `icon: 'brands/my_company' and place `my_company.svg` in your `assets/media/icons/brands/` folder.

Co-authored-by: Olaf Lipinski <5785856+olipinski@users.noreply.github.com>

Closes #3281
2025-10-21 22:20:10 +01:00
Olaf Lipinski
cdee5c8997
fix: regression with custom icon rendering (#3279)
During previous refactoring, the {{with}} was refactored to {{if}} leading to missing icon resource context, and hence custom icons were no longer rendering.

Fixes #3278
2025-10-21 21:24:13 +01:00
syrinecheriaa
7f5478f705
i18n: add Haitien kreyol (ht) language (#3277)
Co-authored-by: syrine cheriaa <syrine@MacBook-Pro-de-syrine.local>
2025-10-21 19:48:35 +01:00
George Cushen
dd44522f1e fix(css): align color variables with Tailwind v4
- Replace rgb(var(--color-*))) with var(--color-*)
- Convert alpha forms to color-mix(in oklch, var(--color-*) X%, transparent)
- Normalize --color-hb-dark to rgb(...)
- Fix docs code block background in light mode

Closes #3272
2025-10-07 01:11:46 +01:00
Steve Jobz
bc5bf3c748
fix(commenting): incorrect path to comments plugin (#3271) 2025-10-06 23:57:36 +01:00
George Cushen
e9b31f8090 refactor(preact): switch from vendored globals to bundled node_modules approach
- Add preact dependency to all 6 starter package.json files for proper js.Build resolution
- Use automatic JSX runtime (JSX: "automatic", JSXImportSource: "preact") in libraries.html
- Restore proper ES module imports in hero/client.jsx and Icon.jsx components
- Remove vendored preact script loading since preact is now bundled via js.Build
- Fixes CI build failures with "Could not resolve preact/jsx-runtime" errors
- Provides cleaner, more standard JS tooling for users extending with custom components

BREAKING CHANGE: Starters now require `preact` in `package.json`to resolve preact dependency before hugo build
2025-09-25 21:51:54 +01:00
George Cushen
c843d01cf8 fix(ci): use classic JSX + global Preact to fix js.Build resolution
landing-page starter, which uses preact blocks, was only working only in monorepo due to Preact installed in root package.json but not starter package.json.

- Switch js.Build to classic JSX with global factory in `modules/blox-tailwind/layouts/_partials/libraries.html` (JSX=transform, JSXFactory=preact.h, JSXFragment=preact.Fragment)
- Update `modules/blox-tailwind/blox/hero/client.jsx` to call `preact.render` and remove `preact` import
- Remove `preact` import from `modules/blox-tailwind/blox/shared/js/components/Icon.jsx` (classic JSX uses global `preact.h`)
- Keep vendored `assets/dist/lib/preact/preact.min.js` and load it only when `needs_preact` is set
- Fixes CI error “Could not resolve preact/jsx-runtime” without requiring `preact` in each starter
2025-09-25 21:51:54 +01:00
George Cushen
787ac94b5d feat: add Dev HUD & 15 Obsidian callouts; more collection filters
Dev tools
- Add HBX Dev HUD (floating button + panel) with live log viewer
- Add get-build-id helper to dedupe logs per build (during `hugo server` refreshes)

Callouts
- Implement Obsidian-compatible callouts (15+ types) with shared renderer
- Add i18n title translations (en, es, fr) for all callout types
- Deprecate `callout` shortcode with suppressible warning; keep working
- Migrate starters to Markdown callouts (>[!TYPE]) and update docs

Logging
- Centralize logging in partial `functions/logger` with info/warn/error levels
- Use fmt.Warnidf for suppressible warnings (consistent IDs)
- Only show info in Dev HUD/JSON (no longer use warnf for info logging); warn/error still printed in CLI
- Include source metadata and build ID on each entry

Blocks – Collection
- Add support for `content.filters.kinds`
- Add `content.filters.tags` (array) alongside existing `filters.tag` (string)

Build/Tailwind/JS
- Fix missing Tailwind v4 styles in Hugo render: include preact-built assets, extract classes from JSX/TSX to `@sources`
- Load Preact client per block, publish source maps in dev; on-demand Alpine

CI
- Re-implement fast fails with panicOnWarning now that info logging as warnf removed
- Fix package splitter change detection: strip trailing slashes; collapse paths to starter roots

Starters/Docs
- Restructure courses under `courses/hugo-blox/`
- Update menus and landing pages
- Replace deprecated callout usage in content and docs
- Replace missing hero icon `download` with `arrow-down-tray` in academic-cv guide

Icons
- Improve icon resolver: default pack inference, better fallback, and precise missing-icon warnings (with page ref)
2025-09-25 01:58:32 +01:00
github-actions[bot]
6b1632ae78 chore(blox-tailwind): prepare v0.8.0 2025-09-22 23:35:25 +00:00
George Cushen
9146d36f1c ci: fix 2025-09-23 00:33:04 +01:00
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
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
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
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]
abb3798d72 chore(blox-tailwind): prepare v0.7.0 2025-09-08 22:22:59 +00: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
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
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
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