Skip to content
Draft
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
17 changes: 6 additions & 11 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,21 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 🎨 Check for non-RTL/non-a11y CSS classes
run: pnpm vp run lint:css
run: vp run lint:css

- name: 🌐 Compare translations
run: pnpm vp run i18n:check
run: vp run i18n:check

- name: 🌍 Update lunaria data
run: pnpm vp run build:lunaria
run: vp run build:lunaria

- name: 🔠 Fix lint errors
run: pnpm vp run lint:fix
run: vp run lint:fix

- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27 # 635ffb0c9798bd160680f18fd73371e355b85f27
94 changes: 30 additions & 64 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,16 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm
run-install: false

- name: 📦 Install dependencies (root only, no scripts)
run: pnpm install --filter . --ignore-scripts
run: vp install --filter . --ignore-scripts

- name: 🔠 Lint project
run: pnpm vp run lint
run: vp run lint

types:
name: 💪 Type check
Expand All @@ -48,18 +46,13 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 💪 Type check
run: pnpm vp run test:types
run: vp run test:types

unit:
name: 🧪 Unit tests
Expand All @@ -68,18 +61,13 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 🧪 Unit tests
run: pnpm vp test --project unit --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml
run: vp test --project unit --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml

- name: ⬆︎ Upload test results to Codecov
if: ${{ !cancelled() }}
Expand All @@ -94,21 +82,16 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 🌐 Install browser
run: pnpm vp exec playwright install chromium-headless-shell
run: vp exec playwright install chromium-headless-shell

- name: 🧪 Component tests
run: pnpm vp test --project nuxt --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml
run: vp test --project nuxt --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml

- name: ⬆︎ Upload coverage reports to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
Expand All @@ -131,23 +114,18 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 🏗️ Build project
run: pnpm vp run build:test
run: vp run build:test
env:
VALIDATE_HTML: true

- name: 🖥️ Test project (browser)
run: pnpm vp run test:browser:prebuilt
run: vp run test:browser:prebuilt

a11y:
name: ♿ Accessibility audit
Expand All @@ -159,21 +137,16 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 🏗️ Build project
run: pnpm vp run build:test
run: vp run build:test

- name: ♿ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode)
run: pnpm vp run test:a11y:prebuilt
run: vp run test:a11y:prebuilt
env:
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
LIGHTHOUSE_COLOR_MODE: ${{ matrix.mode }}
Expand All @@ -185,18 +158,13 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: 🧹 Check for unused code
run: pnpm vp run knip
run: vp run knip

i18n:
name: 🌐 i18n validation
Expand All @@ -205,20 +173,18 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm
run-install: false

- name: 📦 Install dependencies (root only, no scripts)
run: pnpm install --filter . --ignore-scripts
run: vp install --filter . --ignore-scripts

- name: 🌐 Check for missing or dynamic i18n keys
run: pnpm vp run i18n:report
run: vp run i18n:report

- name: 🌐 Check i18n schema is up to date
run: |
pnpm vp run i18n:schema
vp run i18n:schema
git diff --exit-code i18n/schema.json
9 changes: 2 additions & 7 deletions .github/workflows/lunaria.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,10 @@ jobs:
# Makes the action clone the entire git history
fetch-depth: 0

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm

- name: 📦 Install dependencies
run: pnpm install
cache: true

- name: Generate Lunaria Overview
uses: lunariajs/action@4911ad0736d1e3b20af4cb70f5079aea2327ed8e # v1-prerelease
3 changes: 2 additions & 1 deletion .github/workflows/release-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ jobs:
with:
fetch-depth: 0

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*
run-install: false

- name: 🔍 Check for unreleased commits
id: check
Expand Down
21 changes: 7 additions & 14 deletions .github/workflows/release-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ jobs:
with:
fetch-depth: 0

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*
run-install: false

- name: 🔢 Determine next version
id: version
Expand Down Expand Up @@ -58,13 +59,9 @@ jobs:
git tag -a "$VERSION" -m "Release $VERSION"
git push origin "$VERSION"
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
if: steps.check.outputs.skip == 'false'
name: 🟧 Install pnpm

- name: 📦 Install dependencies
if: steps.check.outputs.skip == 'false'
run: pnpm vp install --filter . --ignore-scripts
run: vp install --filter . --ignore-scripts

- name: 📝 Generate release notes
if: steps.check.outputs.skip == 'false'
Expand Down Expand Up @@ -98,18 +95,14 @@ jobs:
with:
ref: release

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: voidzero-dev/setup-vp@73e69397a8b289de4b1d017ced18e18004183bb1 # v1
with:
node-version: lts/*
registry-url: https://registry.npmjs.org

- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # 5e1c8eafbd745f64b1ef30a7d7ed7965034c486c
name: 🟧 Install pnpm
with:
cache: false
run-install: false

- name: 📦 Install dependencies
run: pnpm install --filter npmx-connector...
run: vp install --filter npmx-connector...

- name: 🔢 Set connector version
env:
Expand All @@ -122,7 +115,7 @@ jobs:
echo "Publishing npmx-connector@${PKG_VERSION}"
- name: 🏗️ Build connector
run: pnpm --filter npmx-connector build
run: vp run --filter npmx-connector build

- name: 📤 Publish to npm with provenance
# Uses OIDC trusted publishing — no NPM_TOKEN needed.
Expand Down
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"editor.formatOnSave": true,
"i18n-ally.keystyle": "nested",
"i18n-ally.localesPaths": ["./i18n/locales"],
"typescript.tsdk": "node_modules/typescript/lib",
"js/ts.tsdk.path": "node_modules/typescript/lib",
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.vue": "${capture}.stories.ts"
Expand Down
30 changes: 30 additions & 0 deletions app/pages/about.stories.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import About from './about.vue'
import type { Meta, StoryObj } from '@storybook-vue/nuxt'
import AppHeader from '~/components/AppHeader.vue'
import AppFooter from '~/components/AppFooter.vue'

const meta = {
component: About,
parameters: {
layout: 'fullscreen',
},
decorators: [
() => ({
components: { AppHeader, AppFooter },
template: `
<div class="min-h-screen flex flex-col bg-bg text-fg">
<AppHeader :show-logo="true" />
<div id="main-content" class="flex-1 flex flex-col" tabindex="-1">
<story />
</div>
<AppFooter />
</div>
`,
}),
],
} satisfies Meta<typeof About>

export default meta
type Story = StoryObj<typeof meta>

export const Default: Story = {}
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ defineOgImageComponent('Default', {
<!-- File content / Directory listing - sticky with internal scroll on desktop -->
<div class="flex-1 min-w-0 self-start">
<div
class="sticky z-10 top-25 bg-bg border-b border-border px-4 py-2 flex items-center justify-between gap-2 text-nowrap overflow-x-auto max-w-full"
class="sticky z-5 top-25 bg-bg border-b border-border px-4 py-2 flex items-center justify-between gap-2 text-nowrap overflow-x-auto max-w-full"
>
<div class="flex items-center gap-2">
<div
Expand Down
Loading
Loading