Skip to content

fix(ci): vendor wm-theme css for jekyll build - #76

Merged
wintermuted merged 5 commits into
masterfrom
copilot/convert-design-system-to-wintermuted-ui-theme
Jul 31, 2026
Merged

fix(ci): vendor wm-theme css for jekyll build#76
wintermuted merged 5 commits into
masterfrom
copilot/convert-design-system-to-wintermuted-ui-theme

Conversation

@wintermuted

Copy link
Copy Markdown
Owner

Summary

  • Fixed GitHub Actions Jekyll build failure caused by missing css/wm-theme in CI.
  • Replaced the css/wm-theme symlink (which pointed to local node_modules) with vendored theme CSS files tracked in the repo.
  • Kept only the component CSS files referenced by the blog head include.

Root cause

The deploy workflow failed with:

Errno::ENOENT: No such file or directory @ rb_sysopen - /home/runner/work/blog/blog/css/wm-theme

CI runners do not have the local symlink target available, so Jekyll failed while scanning source files.

Validation

  • Ran bundle exec jekyll build locally after the change.
  • Build exited successfully (exit code 0).

Notes

  • No workflow logic changes were required.
  • This makes the build deterministic in CI and independent of local workspace paths.

Copilot AI review requested due to automatic review settings July 31, 2026 03:02

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR resolves CI/Jekyll build instability caused by css/wm-theme being a non-existent symlink target in GitHub Actions by committing the theme CSS into the repository, while also rolling out a broader set of site UI/layout and content additions (projects pages, tag/project archives, weblog map view, and updated navigation/sidebars).

Changes:

  • Vendor @wintermuted/ui-theme CSS into css/wm-theme/ and reference it from the site head.
  • Introduce new/updated layouts and includes for posts, projects, wiki pages, tag/category archives, and weblog views (including a new map view).
  • Expand client-side theming behavior (dark mode label sync + background tone selector) and add supporting data/content.

Reviewed changes

Copilot reviewed 59 out of 68 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
weblog-map.html Adds a top-level page that renders the weblog map include.
tags.html Refactors the tags page layout and adds a script to sync archive column sizing.
projects/wm-asset-workflows.md Adds a new project detail page (front matter + content).
projects/wintermuted-ui-theme.md Adds a new project detail page (front matter + placeholder content).
projects/sub-killer.md Adds a new project detail page (front matter + placeholder content).
projects/playdate-skills.md Adds a new project detail page (front matter + content).
projects/playdate-rpg-prototype.md Adds a new project detail page (front matter + content).
projects/playdate-mcp.md Adds a new project detail page (front matter + content).
js/dark-mode.js Updates dark mode initialization + adds background tone persistence and UI wiring.
css/wm-theme/tokens.css Adds vendored theme design tokens.
css/wm-theme/base.css Adds vendored base element styling.
css/wm-theme/components/tag.css Adds vendored tag pill styling.
css/wm-theme/components/side-nav.css Adds vendored side nav + floating nav primitives.
css/wm-theme/components/separator.css Adds vendored separator primitive.
css/wm-theme/components/list.css Adds vendored list primitive.
css/wm-theme/components/layout.css Adds vendored layout primitives (app shell, docs topbar, sidebar layout, etc.).
css/wm-theme/components/gallery.css Adds vendored gallery + lightbox styling primitives.
css/wm-theme/components/code-block.css Adds vendored code block styling (header bar + copy button styling).
css/wm-theme/components/card.css Adds vendored card component styling.
css/wm-theme/components/button.css Adds vendored button component styling.
css/wm-theme/components/badge.css Adds vendored badge primitive styling.
collections/_posts/2026-06-11-game-of-life-devlog-rules-and-diagnostics.md Adds a new devlog post.
collections/_posts/2026-05-18-game-of-life-devlog-url-share-state.md Adds a new devlog post.
collections/_posts/2026-04-26-game-of-life-devlog-pattern-workflow.md Adds a new devlog post.
collections/_posts/2026-04-07-game-of-life-devlog-render-loop.md Adds a new devlog post.
collections/_posts/2022-06-01-microsoft-acquires-xandr.md Updates post image usage (switch to SVG + inline markup).
collections/_posts/2021-9-20-rachel-birthday-foraging.md Adds structure/headings to the post content.
assets/img/projects/game-of-life/gol-mark.svg Adds a new SVG mark asset.
assets/img/posts/2022/jun/microsoft/logo-monochrome.svg Adds a new monochrome Microsoft logo SVG asset.
about.md Refactors About page markup and content into structured sections.
.github/plans/2026-06-28-homepage-split-hero.md Adds a planning doc for homepage hero layout work.
_plugins/project_tag_archive_generator.rb Adds a generator to create tag archive pages for project-related slugs.
_layouts/tag-archive.html Updates tag archive UI and adds project listing + column sizing script.
_layouts/projects-home.html Updates projects home layout wrapper/structure.
_layouts/project-detail.html Adds a new project detail layout with tabs, side nav, slideshow/lightbox, and Mermaid rendering.
_layouts/post.html Refactors post layout into a multi-column detail grid with side nav + toggles.
_layouts/page-wiki.html Refactors wiki detail layout into a multi-column grid with generated section nav.
_layouts/page-wiki-hub.html Refactors wiki hub layout similarly (grid + section nav + sidebar tags).
_layouts/page-about.html Simplifies About page layout wrapper.
_layouts/default.html Adds homepage-specific body class + inline homepage style overrides.
_layouts/category-archive.html Refactors category archive layout to match new archive UI + column sizing script.
_includes/weblog.html Updates weblog list view wrapper and adds responsive column-sizing script.
_includes/weblog-summary.html Updates weblog summary wrapper and improves SVG handling for post images.
_includes/weblog-nav.html Replaces weblog view nav with a new “filter bar” style navigation.
_includes/weblog-map.html Adds a Leaflet-based map view for posts with location metadata.
_includes/weblog-gallery.html Refactors gallery view and extracts card rendering into a new include.
_includes/weblog-gallery-card.html Adds reusable weblog gallery card include (with SVG handling + category badges).
_includes/weblog-by-year.html Updates wrapper structure for the by-year weblog view.
_includes/tag-cloud.html Refactors tag cloud rendering (sorting + new pill-style list).
_includes/sidebar.html Updates weblog sidebar styling and adds a Dev Logs category link.
_includes/sidebar-wiki.html Refactors wiki sidebar to show topic/tags/related pages with updated styling.
_includes/sidebar-post.html Refactors post sidebar to show category + tag pills with updated styling.
_includes/projects-home.html Adds client-side project filtering UI and hover effects for project cards.
_includes/post-title.html Adds devlog icon support.
_includes/homepage.html Refactors homepage hero into a split layout with link blocks.
_includes/header.html Refactors header (homepage vs non-homepage variants; new scroll-to-top title button).
_includes/footer.html Refactors footer markup and adds theme + background tone controls.
_data/weblog_location_coordinates.yml Adds curated location-to-coordinate data for the weblog map.
_data/picture.yml Updates picture preset configuration (removes a crop setting).

Comment on lines 79 to 83
{% elsif post.category == 'roadtrip' %}
<i class="fas fa-car-side"></i>
{% elsif post.category == 'changelog' %}
<i class="fas fa-list-alt"></i>
{% elsif post.category == 'devlog' %}
<i class="fas fa-terminal"></i>
{% else %}
Comment thread _layouts/tag-archive.html
Comment on lines +36 to +42
{% elsif post.category == 'travelogue' %}
<i class="fas fa-passport"></i>
{% elsif post.category == 'changelog' %}
<i class="fas fa-list-alt"></i>
{% elsif post.category == 'devlog' %}
<i class="fas fa-terminal"></i>
{% endif %}
Comment on lines +8 to +12
def generate(site)
project_pages = site.pages.select { |page| page.data['layout'] == 'project-detail' }
return if project_pages.empty?

project_tag_slugs = Set.new
Comment thread _includes/weblog-nav.html
Comment on lines +3 to +26
<div class="projects-filter-bar" role="tablist" aria-label="Weblog views">
<a class="projects-filter-button{% if current[1] == 'weblog' %} is-active{% endif %}" href="/weblog" role="tab" {% if current[1] == 'weblog' %}aria-selected="true"{% else %}aria-selected="false"{% endif %}>
<i class="fas fa-bars" aria-hidden="true"></i>
Simple
</a>
<a class="projects-filter-button{% if current[1] == 'weblog-by-year' %} is-active{% endif %}" href="/weblog-by-year" role="tab" {% if current[1] == 'weblog-by-year' %}aria-selected="true"{% else %}aria-selected="false"{% endif %}>
<i class="fas fa-calendar" aria-hidden="true"></i>
By Year
</a>
<a class="projects-filter-button{% if current[1] == 'weblog-gallery' %} is-active{% endif %}" href="/weblog-gallery" role="tab" {% if current[1] == 'weblog-gallery' %}aria-selected="true"{% else %}aria-selected="false"{% endif %}>
<i class="fas fa-images" aria-hidden="true"></i>
Magazine
</a>
<!--
<a class="projects-filter-button{% if current[1] == 'weblog-summary' %} is-active{% endif %}" href="/weblog-summary" role="tab" {% if current[1] == 'weblog-summary' %}aria-selected="true"{% else %}aria-selected="false"{% endif %}>
<i class="fas fa-newspaper" aria-hidden="true"></i>
Summary
</a>
-->
<a class="projects-filter-button{% if current[1] == 'weblog-map' %} is-active{% endif %}" href="/weblog-map" role="tab" {% if current[1] == 'weblog-map' %}aria-selected="true"{% else %}aria-selected="false"{% endif %}>
<i class="fas fa-map-marked-alt" aria-hidden="true"></i>
Map
</a>
</div>
@github-actions

Copy link
Copy Markdown
Contributor

Preview deployment failed!

Common issues:

  1. Invalid token: Verify your NETLIFY_AUTH_TOKEN is valid

    • Generate a new token in User settings > Applications
    • Make sure it's a Personal Access Token, not a Deploy Key
  2. Permissions: Ensure the token has permission to deploy

Check the workflow run for more details.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1e24ad9080

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread _sass/main.scss
Comment on lines +36 to +39
--site-link-color: #f3f3f3;
--site-link-hover-color: #ffffff;
--site-link-visited-color: #b7b7b7;
--site-link-underline: color-mix(in srgb, #f3f3f3 42%, transparent);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Set readable default link colors

On first paint, and for anyone with JavaScript disabled or delayed until all assets finish loading, the body has a white --wm-color-bg but the global body a rule uses these default --site-link-* values, making normal links nearly white on white. The neutral tone only fixes this after dark-mode.js adds bg-tone-neutral on window.load, so slow image/CDN loads can leave navigation and content links unreadable for a noticeable period; the defaults should match the light neutral colors instead of the dark-theme palette.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown
Contributor

Preview deployment failed!

Common issues:

  1. Invalid token: Verify your NETLIFY_AUTH_TOKEN is valid

    • Generate a new token in User settings > Applications
    • Make sure it's a Personal Access Token, not a Deploy Key
  2. Permissions: Ensure the token has permission to deploy

Check the workflow run for more details.

@github-actions

Copy link
Copy Markdown
Contributor

Preview deployment failed!

Common issues:

  1. Invalid token: Verify your NETLIFY_AUTH_TOKEN is valid

    • Generate a new token in User settings > Applications
    • Make sure it's a Personal Access Token, not a Deploy Key
  2. Permissions: Ensure the token has permission to deploy

Check the workflow run for more details.

@wintermuted
wintermuted merged commit 3abe3c4 into master Jul 31, 2026
1 check passed
@wintermuted
wintermuted deleted the copilot/convert-design-system-to-wintermuted-ui-theme branch July 31, 2026 03:47
@github-actions

Copy link
Copy Markdown
Contributor

🧹 Preview deployment has been automatically cleaned up by Netlify.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants