feat: migrate toolchain, add AspireC4 project, theme improvements#56
Merged
Conversation
- 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>
Contributor
There was a problem hiding this comment.
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Accumulated changes across multiple sessions:
Toolchain
Content Schema
Markdown
Styles & UX
AspireC4 Project
(sets \document.documentElement.style.colorScheme\ so @media (prefers-color-scheme)\ inside <img>\ SVGs responds to the site theme picker, not just OS preference)