Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Awesome GitHub Site Phase 07: Catalogue list pages with filter bar and Wapuu hero** — Replaced the old catalogue index with a spec-aligned `/c/[cat]` route, added the shared Wapuu hero component, introduced tag-chip filtering with AND logic, and surfaced the category type note and install-action cards for all eight catalogue pages. ([#866](https://github.com/lightspeedwp/.github/issues/866), [#867](https://github.com/lightspeedwp/.github/pull/867))
- **Awesome GitHub Site Phase 05: Homepage all 5 blocks wired to live data** — Rebuilt the homepage with the spec-aligned hero, live catalogue counts, feature strip, and Cook+Learn cards. Added the typed catalogue exports used by the homepage counts, copied the Wapuu assets into `website/public/assets/wapuus/`, and added an `onboarding/` alias that redirects to `getting-started/` for the primary CTA. ([#861](https://github.com/lightspeedwp/.github/issues/861), [#862](https://github.com/lightspeedwp/.github/pull/862))

### Added

- **Awesome GitHub Site Phase 13: Search command palette** — Site-wide ⌘K search palette (`website/src/components/SearchPalette.astro` + `website/src/scripts/search.js`) added to `AwesomeGithubLayout`. Build-time JSON index of all catalogue items serialised into a `data-items` attribute. Empty query shows 7 Popular items; typed query uses multi-word AND substring matching across name, description, tags, and category (capped at 12 results). Keyboard navigation (↑↓ arrow keys, Enter to open result, Escape to close, Tab focus-trap between input, close button, and result items). Fully accessible: `role="dialog"`, `aria-modal`, `aria-selected`, focus returns to trigger on dismiss. ([#764](https://github.com/lightspeedwp/.github/issues/764), [#889](https://github.com/lightspeedwp/.github/pull/889))

- **Awesome GitHub Site Phase 11: Tools page + Phosphor Icons sitewide** — Standalone `/c/tools.astro` with astropuu Wapuu hero, section nav pills (AI Defaults, Scripts, Schemas, Config & Setup), and a build-time Phosphor icon loader (`website/src/lib/phosphor.ts`) using `createRequire` for robust package resolution. Updated `Icon.astro` with `ph:` prefix routing to load any Phosphor icon at SSG time. Migrated item card and type badge styles into `global.css` for reuse across catalogue and tools pages. Updated all category, nav, learn, and home icons to Phosphor equivalents sitewide. ([#885](https://github.com/lightspeedwp/.github/issues/885), [#886](https://github.com/lightspeedwp/.github/pull/886))

- **Awesome GitHub Site Phase 02: CSS Token Layer + Global Styles** — Established the complete CSS foundation for the Awesome GitHub site. Added `website/src/styles/site-tokens.css` with app-specific surface tokens (`--panel`, `--panel-2`, `--hair`), font stacks, radius/shadow/transition scales, and `color-scheme` declarations for both light and dark themes. Added `website/src/styles/global.css` with container system (`.wrap` 1320px, `.wrap-prose` 820px), section rhythm via `clamp()`, button system (`.btn-primary`, `.btn-ghost`, `.btn-soft`, `.icon-btn`) with `:focus-visible` rings and browser-compat fallbacks, breadcrumb, kbd chip, burger breakpoints, `.md` prose styles, and scroll-motion accessibility guard. Fixed `BaseLayout.astro` CSS import order and corrected `localStorage` theme key to `ag-theme`. ([#852](https://github.com/lightspeedwp/.github/issues/852), [#853](https://github.com/lightspeedwp/.github/pull/853))

- **Awesome GitHub Site: UI Redesign — Dark Mode, Navigation & Responsive Layout** — Complete navigation and UI overhaul. Added desktop Browse mega-dropdown with 4-column category grid (hover/click open, keyboard Escape dismiss, focus-out close). Added full-height mobile drawer sliding from right with backdrop overlay, scroll-lock, and `inert` guard. Fixed dark-mode nav header (was showing light background). Added fluid responsive CSS tokens for spacing and font sizes across breakpoints. Improved accessibility: Disclosure pattern (`aria-expanded`/`aria-controls`, no `role="menu"`), `aria-pressed` on theme toggle buttons, `inert` on closed drawer, nav z-index raised above drawer so hamburger stays accessible. ([#847](https://github.com/lightspeedwp/.github/issues/847), [#845](https://github.com/lightspeedwp/.github/pull/845))
Expand Down
7 changes: 5 additions & 2 deletions docs/BRANCHING_STRATEGY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
file_type: documentation
title: Org-wide Git Branching Strategy
description: Canonical branch naming, protection, merge discipline, and automation rules for LightSpeedWP repositories.
last_updated: '2026-06-08'
last_updated: '2026-06-09'
owners:
- LightSpeed Team
version: v1.4
version: v1.5
status: active
stability: stable
domain: governance
Expand Down Expand Up @@ -149,6 +149,7 @@ hotfix/ga4-purchase-duplicate
- If the current branch belongs to a different issue, PR, or task, create a new branch from `develop` before making changes.
- Do not reuse in-flight branches for unrelated work, even when the working tree is already open.
- If unrelated local changes are present, use a clean worktree rather than mixing scopes.
- Temporary audit replay branches created for PR merge prep may use the form `pr-<number>-audit` when they need to keep a live PR attached to a historical review branch.

Use a single regex in a workflow to enforce naming discipline:

Expand All @@ -172,6 +173,8 @@ jobs:
BRANCH="${{ github.head_ref }}"
# Allow dependabot/renovate
if [[ "$BRANCH" =~ ^(dependabot|renovate)/ ]]; then exit 0; fi
# Allow temporary audit replay branches used for PR merge prep
if [[ "$BRANCH" =~ ^pr-[0-9]+-audit$ ]]; then exit 0; fi
if [[ ! "$BRANCH" =~ ^(feat|fix|hotfix|release|refactor|chore|docs|test|perf|ci|build|deps|security|revert|research|design|a11y|ux|i18n|ops|proto|ds|api|schema|telemetry|content|seo|config|migrate|qa|uat)/[a-zA-Z0-9._-]+$ ]]; then
echo "❌ Branch '$BRANCH' must match the required pattern."
exit 1
Expand Down
32 changes: 32 additions & 0 deletions scripts/validation/__tests__/validate-branch-name.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* @jest-environment jsdom
*/

const { spawnSync } = require("child_process");
const path = require("path");

const scriptPath = path.join(__dirname, "../validate-branch-name.js");

function runValidator(branchName) {
return spawnSync(process.execPath, [scriptPath, "--branch", branchName], {
encoding: "utf8",
});
}

describe("Branch name validation", () => {
it("accepts temporary audit replay branches", () => {
const result = runValidator("pr-895-audit");

expect(result.status).toBe(0);
expect(result.stdout).toContain(
"matches the repository branching strategy",
);
});

it("rejects malformed branch names", () => {
const result = runValidator("audit-branch");

expect(result.status).toBe(1);
expect(result.stderr).toContain("does not follow the required format");
});
});
3 changes: 3 additions & 0 deletions scripts/validation/validate-branch-name.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ const ALLOWED_PREFIXES = [
];

const BOT_PREFIXES = /^(dependabot|renovate)\//;
const AUDIT_BRANCH_PATTERN = /^pr-\d+-audit$/;
const PROTECTED_BRANCHES = new Set(["main", "develop"]);
const BRANCH_PATTERN = new RegExp(
`^(${ALLOWED_PREFIXES.join("|")})/[a-zA-Z0-9._-]+$`,
Expand Down Expand Up @@ -90,6 +91,7 @@ function isAllowed(branchName) {
return (
PROTECTED_BRANCHES.has(branchName) ||
BOT_PREFIXES.test(branchName) ||
AUDIT_BRANCH_PATTERN.test(branchName) ||
BRANCH_PATTERN.test(branchName)
);
}
Expand All @@ -100,6 +102,7 @@ function printFailure(branchName) {
"Expected: {prefix}/{branch-slug} (see docs/BRANCHING_STRATEGY.md)",
);
console.error(`Allowed prefixes: ${ALLOWED_PREFIXES.join(", ")}`);
console.error("Audit replay branches: pr-<number>-audit");
console.error(
"Examples: fix/frontmatter-validation, docs/canonical-configs-guide, ops/branch-governance-guardrails",
);
Expand Down
2 changes: 2 additions & 0 deletions website/src/styles/site-tokens.css
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
/* Surface elevation above --bg */
--panel: #FFFFFF;
--panel-2: #F9FAFB;
--overlay-scrim: rgba(9, 9, 9, 0.55);

/* Hairline border — use this, NOT var(--border) */
--hair: var(--border);
Expand Down Expand Up @@ -47,6 +48,7 @@
color-scheme: dark;
--panel: #16171D;
--panel-2: #1B1C23;
--overlay-scrim: rgba(0, 0, 0, 0.65);
--hair: rgba(255, 255, 255, 0.09);
--overlay-hover: rgba(255, 255, 255, 0.06);

Expand Down
Loading