Skip to content

feat: migrate toolchain, add AspireC4 project, theme improvements#56

Merged
kieronlanning merged 1 commit into
mainfrom
copilot/toolchain-theme-aspirec4
May 12, 2026
Merged

feat: migrate toolchain, add AspireC4 project, theme improvements#56
kieronlanning merged 1 commit into
mainfrom
copilot/toolchain-theme-aspirec4

Conversation

@kieronlanning

Copy link
Copy Markdown
Contributor

Summary

Accumulated changes across multiple sessions:

Toolchain

  • Replace Bun with npm throughout (package.json, lockfiles, workflows, copilot instructions)
  • Replace husky/hereby with just + lefthook for git hooks and task running
  • Update all GitHub Actions to latest major versions (checkout v6, setup-node v6, deploy-pages v5, withastro/action v6)
  • Lock Vite to <8

Content Schema

  • Fix deprecated \z\ import: \�stro/zod\ instead of \�stro:content\
  • Add emoji support to links schema (XOR with image via Zod refine)

Markdown

  • Add markdownlint-cli2 with lefthook integration
  • Adjust .markdownlint.json for best-practice rules

Styles & UX

  • Complete dark/light/system theme across the site
  • Mobile-first, responsive, accessible layout
  • Limit hero/banner height on wide screens
  • Add sidebar with ToC and project list on project detail pages
  • Fix 'Say Hello' contact dialog

AspireC4 Project

  • New project entry with hasContent + remote README stacking
  • GitHub README badge on RemoteReadme component
  • Fix \likec4-wordmark.svg\ theme responsiveness via \colorScheme\ property
    (sets \document.documentElement.style.colorScheme\ so @media (prefers-color-scheme)\ inside <img>\ SVGs responds to the site theme picker, not just OS preference)

- Replace Bun with npm throughout (package.json, workflows, instructions)
- Replace husky/hereby with just + lefthook for git hooks and task running
- Update all GitHub Actions to latest major versions (checkout v6, setup-node v6, etc.)
- Fix deprecated z import: use astro/zod instead of astro:content
- Add emoji support to links schema (XOR with image via Zod refine)
- Add markdown linting with markdownlint-cli2 and lefthook integration
- Rebuild site styles: complete dark/light/system theme, mobile-first, accessible
- Add sidebar with ToC and project list on project detail pages
- Limit MainBanner and hero heights on wide screens
- Add AspireC4 project content entry with hasContent + remote README stacking
- Add GitHub README badge to RemoteReadme component
- Fix likec4-wordmark.svg theme responsiveness via colorScheme property
- Lock Vite to <8 as per deprecation warning
- Fix 'Say Hello' contact dialog with captcha support

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 12, 2026 13:52
@kieronlanning
kieronlanning merged commit df3ad54 into main May 12, 2026
5 checks passed
@kieronlanning
kieronlanning deleted the copilot/toolchain-theme-aspirec4 branch May 12, 2026 13:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 consolidates a broad set of updates across the site and tooling: migrating the repo from Bun/husky/hereby to an npm + lefthook + Just workflow, modernizing content schema and markdown tooling, and improving site UX (theme handling, project pages, layout/accessibility) alongside adding the new AspireC4 project content/assets.

Changes:

  • Migrate toolchain to npm (remove Bun/husky/hereby, add lefthook + Just, update CI workflows, add markdownlint-cli2).
  • Enhance content/project rendering (link schema supports emoji-or-image, project pages can stack local content + remote README, add project sidebar + updated ToC).
  • UX/theme + accessibility improvements across layouts/components (theme + color-scheme, focus rings, skip link, responsive sections, dark-mode styling, new/updated SVG assets).

Reviewed changes

Copilot reviewed 41 out of 54 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/src/types/component-types.ts Updates link prop typing to support optional image/emoji.
src/src/styles/global.css Removes legacy highlight CSS comments; adds focus-visible ring styling.
src/src/pages/projects/[...slug].astro Adjusts project rendering to stack local content with remote README; passes projectId to layout.
src/src/pages/404.astro Improves dark-mode text/link colors.
src/src/layouts/ProjectLayout.astro Adds project sidebar + wider layout; fetches all projects for sidebar nav.
src/src/layouts/Layout.astro Improves theme initialization (colorScheme) and adds skip-to-content link + main id.
src/src/content.config.ts Migrates Zod import to astro/zod; adds emoji-or-image link validation.
src/src/components/ThemeToggle.tsx Reworks theme toggle UI into 3-button selector and syncs colorScheme.
src/src/components/TableOfContents.astro Tweaks ToC filtering/styling and adds aria label.
src/src/components/RemoteReadme.astro Adds “README.md” GitHub blob link UI + sourceUrl support.
src/src/components/projects/ProjectSidebar.astro New component: sticky sidebar with ToC + “All Projects” list.
src/src/components/projects/ProjectLink.astro Renders either emoji or image for links; updates image alt behavior.
src/src/components/Navigation.tsx Adds id to mobile menu container for improved semantics.
src/src/components/MailToLink.tsx Fixes contact dialog dark-mode styling and focus states.
src/src/components/Logo.astro Applies dark-mode inversion to logo image.
src/src/components/index/WhatDoWeDo.astro Refactors section layout and switches to astro:assets <Image>.
src/src/components/index/ServiceCard.astro Adjusts heading level for card title.
src/src/components/index/OurServices.astro Refactors layout into a section with heading and responsive spacing.
src/src/components/HeroBanner.astro Refactors hero/banner into a responsive section with unified overlay.
src/src/components/Header.astro Adds header background + border for light/dark themes.
src/src/components/Footer.tsx Minor formatting + alt text adjustments; keeps links and layout.
src/src/collections/projects/TaskRunner.md Updates status and adds a “found Just” note + wording tweaks.
src/src/collections/projects/shared-assets/nuget.svg Adds NuGet logo asset under project shared assets.
src/src/collections/projects/shared-assets/likec4-logo.svg Adds LikeC4 logo asset under project shared assets.
src/src/collections/projects/shared-assets/aspire-logo.svg Adds Aspire logo asset under project shared assets.
src/src/collections/projects/PurviewTelemetrySourceGenerator.md Updates NuGet icon path to shared-assets location.
src/src/collections/projects/PurviewEventStore.md Adds 2026 update note to project content.
src/src/collections/projects/LikeC4.md Updates assets/links, adds sponsor emoji link, converts to hasContent: true with body content.
src/src/collections/projects/AzureDevOpsWikiUpgrade.md Small heading punctuation tweak.
src/src/collections/projects/aspirec4/likec4-wordmark.svg Adds wordmark SVG with theme responsiveness via prefers-color-scheme.
src/src/collections/projects/AspireC4.md Adds new AspireC4 project entry/content with logos/badges.
src/src/assets/likec4-light.svg Removes legacy LikeC4 light SVG asset.
src/src/assets/likec4-dark.svg Removes legacy LikeC4 dark SVG asset.
src/src/assets/github-mark.svg Reworks GitHub mark SVG to swap via prefers-color-scheme.
src/src/assets/github-mark-light.svg Adds standalone light GitHub mark SVG.
src/src/assets/github-mark-dark.svg Adds standalone dark GitHub mark SVG.
src/package.json Migrates astro-upgrade to npx and bumps Astro-related deps.
src/.markdownlint.json Expands markdownlint rules and allowed HTML elements.
scripts/hereby-exts.mts Removes Hereby helper script (Bun-oriented).
package.json Removes Bun/husky/hereby devDeps; adds lefthook + markdownlint-cli2 and prepare script.
lefthook.yml Adds git hooks for astro check, markdownlint, and commitlint via lefthook.
Justfile Adds Just tasks for dev/check/install/update/lint/release using npm.
index.ts Removes Bun placeholder entrypoint.
Herebyfile.mts Removes Hereby task runner definition.
bunfig.toml Removes Bun configuration.
bun.lock Removes Bun lockfile.
.markdownlint-cli2.yaml Adds markdownlint-cli2 ignores configuration.
.husky/commit-msg Removes Husky commit-msg hook.
.github/workflows/pull-request.yml Updates CI to Node/npm and newer action versions.
.github/workflows/deploy.yml Updates deploy workflow to Node/npm and newer action versions.
.github/copilot-instructions.md Updates Copilot guidance for npm toolchain (but currently contains duplicated sections).
Comments suppressed due to low confidence (1)

.github/copilot-instructions.md:190

  • This file now contains a duplicated block starting at “### Build & Development Tools” (it repeats large sections already defined above). Please remove the duplicate content to avoid contradictory/unclear Copilot guidance.

### Build & Development Tools

- **Astro**: Static site generator with component islands architecture
- **Vite**: Underlying build tool (managed by Astro)
- **ESLint**: Code linting with strict rules
- **Prettier**: Code formatting (check .prettierrc for config)
- **TypeScript**: Strict configuration in tsconfig.json

### Testing

- Follow existing test patterns if tests are present
- Prefer unit tests for utilities, integration tests for components

## Code Style & Standards

Comment on lines +26 to +32
<svg
class='w-4 h-4'
fill='none'
stroke='currentColor'
viewBox='0 0 24 24'
stroke-width='2'
aria-hidden='true'
Comment on lines +91 to +97
<svg
class='w-4 h-4'
fill='none'
stroke='currentColor'
viewBox='0 0 24 24'
stroke-width='2'
aria-hidden='true'
Comment on lines +119 to +122
<aside
aria-label='Page navigation'
class='w-full lg:w-56 xl:w-68 shrink-0 lg:sticky lg:top-4 lg:max-h-[calc(100vh-2rem)] lg:overflow-y-auto'
>
Comment on lines 89 to 91
{open && (
<div class='absolute top-full right-0 w-full bg-white dark:bg-gray-900 shadow-md p-4 md:hidden border-t border-gray-200 dark:border-gray-700 z-50'>
<div id='mobile-menu' class='absolute top-full right-0 w-full bg-white dark:bg-gray-900 shadow-md p-4 md:hidden border-t border-gray-200 dark:border-gray-700 z-50'>
<ul class='flex flex-col space-y-4'>
Comment on lines 15 to 22
export interface LinkProp {
name: string;
url: string;
image: ImageMetadata;
/** Mutually exclusive with `emoji`. Required if `emoji` is absent. */
image?: ImageMetadata;
/** Single-character emoji. Mutually exclusive with `image`. Required if `image` is absent. */
emoji?: string;
}

I've been using [Just 🤘](https://just-systems.com) - a rust-based task runner with a simple syntax and no dependencies - for a few months. And it's perfect. It does everything I need.

Granted, the scripting support is based on your shell - which can pose a problem for cross-platform projects, but I'm happy with the current state of plate.
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