Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
2af4011
chore: disallow crawlers by default
danielroe Apr 1, 2026
2ca79ab
feat: apply April research results (#2353)
alexdln Apr 1, 2026
6b5b847
feat: add logo to OAuth metadata (#2355)
nicolo-ribaudo Apr 1, 2026
a28563b
feat(docs): add favicon (#2330)
trueberryless Apr 2, 2026
88e4db0
chore: use built-in vue-data-ui pattern component (#2359)
graphieros Apr 2, 2026
95c2aae
fix: package code page improvements (#2217)
alex-key Apr 2, 2026
d3f60cb
chore: restore color modes (#2361)
alexdln Apr 2, 2026
4991268
feat(i18n): add missing french translation (fr-FR) (#2368)
juliendargelos Apr 3, 2026
1d1f450
fix: correct code colors (#2362)
alexdln Apr 3, 2026
4da792c
fix(i18n): update Czech translations (#2374)
VentyCZ Apr 4, 2026
b9300f4
refactor: replace fileURLToPath with import.meta.dirname (#2366)
trivikr Apr 4, 2026
b1595e8
chore(blog): remove boilerplate first blog post (#2376)
akadotsh Apr 4, 2026
8a36727
refactor(cli)!: use mkdtempDisposable and require node >=24.4 (#2365)
trivikr Apr 4, 2026
06d1eb0
feat(i18n): add Serbian Latin (sr-Latn-RS) translations (#2317)
miljkovic5 Apr 4, 2026
2eee0b5
refactor: use timers/promises setTimeout for async delays (#2377)
trivikr Apr 4, 2026
65d81bd
docs(ui): add stories for Privacy page (#2319)
cylewaitforit Apr 4, 2026
08bb984
fix(i18n): update missing Spanish translations (#2318)
aitorres Apr 4, 2026
ae16a6b
fix: relax devtools-specific security headers in dev (#2331)
RYGRIT Apr 4, 2026
23dc158
refactor: replace tinyglobby with Node.js built-in glob APIs (#2375)
trivikr Apr 4, 2026
b2ea9bc
chore: refactor header shortcuts (#2372)
43081j Apr 4, 2026
af6a590
ci: use voidzero-dev/setup-vp instead of setup-node + pnpm/action-set…
fengmk2 Apr 4, 2026
4c41b7b
fix: command for `create-*` packages in Deno (#2357)
knotbin Apr 4, 2026
0b68aea
refactor: use Promise.withResolvers in node-only flows and tests (#2378)
trivikr Apr 4, 2026
064cf97
fix: compare prerelease versions against previous stable for size dif…
joshuaisaact Apr 4, 2026
1106764
fix(ui): version selector older groups and versions history link (#2276)
tinsever Apr 4, 2026
e88c6e4
feat(i18n): add Arabic font support (#1511)
abaza738 Apr 4, 2026
5fe1486
fix(cli): use a shared cross-platform npm process resolver without sh…
MathurAditya724 Apr 4, 2026
eb4d862
feat: add semver range filter and element title support (#2176)
ShroXd Apr 4, 2026
a2254fd
docs(ui): add design system guidelines (#2252)
cylewaitforit Apr 5, 2026
5324b96
fix(ui): normalize README heading fragments to lowercase slugs (#2385)
trivikr Apr 5, 2026
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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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
10 changes: 4 additions & 6 deletions .github/workflows/chromatic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,13 @@ jobs:
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
ref: ${{ github.event.pull_request.head.sha || github.sha }}

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

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

- name: 📦 Install dependencies
run: pnpm install
- name: 🟧 Install pnpm globally
run: vp install -g pnpm

- name: 🧪 Run Chromatic Visual and Accessibility Tests
uses: chromaui/action@f191a0224b10e1a38b2091cefb7b7a2337009116 # v16.0.0
Expand Down
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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6
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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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@a03302daa50cf2f017c8c7345730c2740df207d6 # 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
20 changes: 20 additions & 0 deletions .storybook/decorators.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import AppFooter from '~/components/AppFooter.vue'
import AppHeader from '~/components/AppHeader.vue'

/**
* Wraps a page story with the standard site chrome: AppHeader, main content
* area, and AppFooter. Use this for any full-page story so the layout stays
* consistent and changes only need to be made in one place.
*/
export const pageDecorator = () => ({
components: { AppHeader, AppFooter },
template: `
<div class="min-h-screen flex flex-col bg-bg text-fg">
<AppHeader />
<div id="main-content" class="flex-1 flex flex-col" tabindex="-1">
<story />
</div>
<AppFooter />
</div>
`,
})
Loading
Loading