George Cushen
4de0ad0af9
feat(map): add open-source map block (MapLibre GL + OpenFreeMap)
...
Single-location + multi-marker, side-by-side and map-only layouts.
Zero-config — no API key. MapLibre is vendored via vite and loaded
conditionally when a page contains a map block. Provider resolution
is a single switchable function so other tile providers can be added
later without changing the block contract.
2026-05-17 22:45:49 +01:00
George Cushen
6015c70b1e
chore(lint): migrate CSS linting to Biome v2.3 (Tailwind v4) and remove stylelint
...
upgrade @biomejs/biome to ^2.3.2 and migrate biome.json to v2 schema
enable css.parser.tailwindDirectives; ignore .min.css and vendor CSS
remove stylelint deps and .stylelintrc.yaml; switch lint scripts to Biome
update workspace to use Biome for CSS; drop stylelint settings
2025-11-02 20:57:26 +00: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
bc8200c0ef
docs: update readme
2025-08-31 00:44:37 +01:00
George Cushen
aa8bfd6271
fix: resume-experience width
2025-08-21 03:14:55 +01:00
George Cushen
7722abcd66
feat: upgrade from Tailwind v3 to v4
...
See Tailwind v4 breaking changes: https://tailwindcss.com/docs/upgrade-guide
See Hugo's new integration with Tailwind v4: https://gohugo.io/functions/css/tailwindcss/
Close #3211
2025-08-17 20:58:14 +01:00
George Cushen
701dcd6f8f
build: update lock
2025-08-16 03:30:53 +01:00
George Cushen
9b2e271c7c
fix: links
2023-11-07 23:09:38 +00:00
George Cushen
6f622fb134
chore: update lint rules
2023-10-24 22:46:49 +01:00