@rm-industries/create-forge 0.3.0-alpha.0 → 0.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +4 -2
- package/dist/index.mjs.map +1 -1
- package/dist/template/.gitignore.template +261 -0
- package/dist/template/.lighthouserc.json +28 -0
- package/dist/template/README.md +79 -22
- package/dist/template/audit-ci.jsonc +20 -0
- package/dist/template/cspell.config.ts +18 -2
- package/dist/template/docs/accessibility-checklist.md +50 -0
- package/dist/template/docs/performance-budget.md +68 -0
- package/dist/template/package-lock.json +5666 -381
- package/dist/template/package.json +15 -3
- package/dist/template/playwright.config.ts +9 -3
- package/dist/template/scripts/validate-build.test.ts +58 -0
- package/dist/template/scripts/validate-build.ts +64 -0
- package/dist/template/src/config/content-models/registry.test.ts +14 -0
- package/dist/template/src/config/site.test.ts +13 -0
- package/dist/template/src/content.config.test.ts +8 -0
- package/dist/template/src/integrations/sveltia/previews.test.ts +23 -0
- package/dist/template/src/lib/articles.test.ts +43 -0
- package/dist/template/src/lib/articles.ts +1 -1
- package/dist/template/src/lib/navigation.test.ts +2 -0
- package/dist/template/src/styles/global.css +7 -1
- package/dist/template/stylelint.config.ts +2 -0
- package/dist/template/tests/accessibility.spec.ts +56 -10
- package/dist/template/tests/navigation.spec.ts +43 -0
- package/dist/template/tests/routes.spec.ts +19 -12
- package/dist/template/vitest.config.ts +18 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://github.com/IBM/audit-ci/raw/main/docs/schema.json",
|
|
3
|
+
"high": true,
|
|
4
|
+
"allowlist": [
|
|
5
|
+
{
|
|
6
|
+
"GHSA-jmr9-qjv8-65gv": {
|
|
7
|
+
"active": true,
|
|
8
|
+
"expiry": "2026-11-30",
|
|
9
|
+
"notes": "Lighthouse CI development-only browser download path; Forge uses the installed CI browser and does not extract attacker-provided archives.",
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"GHSA-ph9p-34f9-6g65": {
|
|
14
|
+
"active": true,
|
|
15
|
+
"expiry": "2026-11-30",
|
|
16
|
+
"notes": "Lighthouse CI development-only temporary files use tool-controlled names and paths, not attacker-provided prefixes or postfixes.",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { defineConfig } from 'cspell';
|
|
2
2
|
|
|
3
3
|
export default defineConfig({
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// Ignore only installed dependencies and generated tool output.
|
|
5
|
+
ignorePaths: ['node_modules', 'dist', 'coverage', 'playwright-report', 'test-results', '.lighthouseci'],
|
|
6
|
+
words: [
|
|
7
|
+
'autorun',
|
|
8
|
+
'Catppuccin',
|
|
9
|
+
'contentinfo',
|
|
10
|
+
'daisyui',
|
|
11
|
+
'Fira',
|
|
12
|
+
'fontsource',
|
|
13
|
+
'GHSA',
|
|
14
|
+
'lhci',
|
|
15
|
+
'lighthouseci',
|
|
16
|
+
'Macchiato',
|
|
17
|
+
'prefersdark',
|
|
18
|
+
'Sveltia',
|
|
19
|
+
'unreviewed',
|
|
20
|
+
'WCAG',
|
|
21
|
+
],
|
|
6
22
|
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Accessibility review checklist
|
|
2
|
+
|
|
3
|
+
This checklist records the manual accessibility review of the unmodified Forge
|
|
4
|
+
template. Generated-project maintainers must repeat it after changing content,
|
|
5
|
+
navigation, themes, components, or interactive behavior; replace the review
|
|
6
|
+
record below with their own date, environment, results, and linked issues.
|
|
7
|
+
|
|
8
|
+
## Baseline review
|
|
9
|
+
|
|
10
|
+
- **Date:** 2026-08-30
|
|
11
|
+
- **Environment:** Chromium via Playwright 1.62.1 against the production preview
|
|
12
|
+
- **Viewport coverage:** desktop and 320 × 640 mobile
|
|
13
|
+
- **Input:** keyboard and pointer
|
|
14
|
+
- **Result:** passed without a release-blocking accessibility issue
|
|
15
|
+
|
|
16
|
+
## Manual checks
|
|
17
|
+
|
|
18
|
+
- [x] Keyboard order starts with the skip link and then follows the visible
|
|
19
|
+
page order without trapping focus.
|
|
20
|
+
- [x] Every interactive element displays a visible focus indicator in light
|
|
21
|
+
and dark modes.
|
|
22
|
+
- [x] Activating **Skip to content** moves focus to the single main landmark.
|
|
23
|
+
- [x] Text, controls, focus indicators, and linked text remain distinguishable
|
|
24
|
+
in the default Latte and Mocha themes.
|
|
25
|
+
- [x] Reduced-motion preference removes smooth scrolling and shortens CSS
|
|
26
|
+
animations and transitions.
|
|
27
|
+
- [x] Representative pages contain one descriptive level-one heading and do
|
|
28
|
+
not skip heading levels.
|
|
29
|
+
- [x] Public pages expose a banner, named primary navigation, one main landmark,
|
|
30
|
+
and a content information landmark.
|
|
31
|
+
- [x] Desktop and mobile navigation remain operable using only the keyboard.
|
|
32
|
+
- [x] The custom 404 page identifies the error and provides a clear route home.
|
|
33
|
+
|
|
34
|
+
The content manager startup and no-index policy are tested separately. Its
|
|
35
|
+
editor interface is supplied by the pinned Sveltia dependency and is outside
|
|
36
|
+
this public-site audit; evaluate that third-party UI against the needs of the
|
|
37
|
+
project's editors before deployment.
|
|
38
|
+
|
|
39
|
+
## Automated companion checks
|
|
40
|
+
|
|
41
|
+
Run `npm run test:a11y` after each manual review. The suite applies axe-core's
|
|
42
|
+
WCAG 2.0, 2.1, and 2.2 A/AA rules to representative public routes in both
|
|
43
|
+
default color schemes. It also asserts landmarks, level-one headings, skip-link
|
|
44
|
+
behavior, responsive overflow, current-page navigation, and reduced motion.
|
|
45
|
+
Serious or critical axe violations block the browser-test job.
|
|
46
|
+
|
|
47
|
+
Automated checks do not replace judgment about reading order, wording, focus
|
|
48
|
+
order, contrast in newly introduced states, or whether alternative text conveys
|
|
49
|
+
the intended meaning. Record any failure as a linked release-blocking issue
|
|
50
|
+
rather than checking off an unverified item.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Lighthouse performance budget
|
|
2
|
+
|
|
3
|
+
Lighthouse CI protects the generated site's public-page baseline. Run
|
|
4
|
+
`npm run lighthouse:ci` after changes that can affect rendering, assets,
|
|
5
|
+
metadata, or client behavior. The command builds the production site, collects
|
|
6
|
+
three reports per route, and evaluates the median result.
|
|
7
|
+
|
|
8
|
+
## Enforced routes
|
|
9
|
+
|
|
10
|
+
- `/` represents the landing-page layout and card content.
|
|
11
|
+
- `/articles/` represents a content collection and repeated cards.
|
|
12
|
+
- `/articles/designing-a-calm-starting-point/` represents rendered Markdown,
|
|
13
|
+
typography, tags, and article pagination.
|
|
14
|
+
|
|
15
|
+
The about and custom 404 pages reuse the same public layout with smaller or
|
|
16
|
+
equivalent resource profiles and remain covered by browser and accessibility
|
|
17
|
+
tests. The `/admin/` route is intentionally excluded: it loads the pinned
|
|
18
|
+
third-party Sveltia editor application and is not representative of public
|
|
19
|
+
visitor performance. Reassess that editor separately before deploying it for a
|
|
20
|
+
specific team.
|
|
21
|
+
|
|
22
|
+
## Category thresholds
|
|
23
|
+
|
|
24
|
+
| Category | Minimum |
|
|
25
|
+
| -------------- | ------: |
|
|
26
|
+
| Performance | 90 |
|
|
27
|
+
| Accessibility | 100 |
|
|
28
|
+
| Best practices | 95 |
|
|
29
|
+
| SEO | 95 |
|
|
30
|
+
|
|
31
|
+
Accessibility remains at 100 because FGE-063 separately enforces serious and
|
|
32
|
+
critical axe findings. The other thresholds allow ordinary Lighthouse runtime
|
|
33
|
+
variance while still failing a meaningful regression.
|
|
34
|
+
|
|
35
|
+
## Transfer budgets
|
|
36
|
+
|
|
37
|
+
| Resource | Maximum bytes | Rationale |
|
|
38
|
+
| -------- | ------------: | ------------------------------------------------------------------- |
|
|
39
|
+
| Script | 0 | The public template ships no client JavaScript. |
|
|
40
|
+
| Total | 125,000 | Approximately 24% headroom above the measured 100,675-byte maximum. |
|
|
41
|
+
|
|
42
|
+
The 2026-08-30 baseline used Lighthouse 12.6.1 and three local Chromium runs per
|
|
43
|
+
route. Every run scored 99 performance and 100 for accessibility, best
|
|
44
|
+
practices, and SEO. Script transfer was zero bytes. Total transfer was stable at
|
|
45
|
+
100,675 bytes for home, 100,447 bytes for the listing, and 100,498 bytes for the
|
|
46
|
+
article detail.
|
|
47
|
+
|
|
48
|
+
The total budget leaves room for minor generated-content and toolchain variance
|
|
49
|
+
without allowing an unreviewed asset or client bundle. Do not raise a threshold
|
|
50
|
+
or exclude a route merely to make CI pass. If a product requirement deliberately
|
|
51
|
+
changes the budget, record the new three-run measurements, explain the user
|
|
52
|
+
benefit and cost, and review the change in its pull request.
|
|
53
|
+
|
|
54
|
+
## Dependency note
|
|
55
|
+
|
|
56
|
+
`@lhci/cli` 0.15.1 pins Lighthouse 12.6.1. Forge keeps that upstream-tested
|
|
57
|
+
dependency graph instead of overriding Lighthouse or its transitive
|
|
58
|
+
dependencies independently. Upgrade the top-level Lighthouse CI package when a
|
|
59
|
+
release supports a newer Lighthouse runtime, then repeat the three-run
|
|
60
|
+
collection and assertion compatibility checks.
|
|
61
|
+
|
|
62
|
+
The pinned graph currently includes high-severity `extract-zip` and `tmp`
|
|
63
|
+
advisories. Both are confined to development-only Lighthouse tooling:
|
|
64
|
+
Lighthouse uses the installed browser rather than extracting an
|
|
65
|
+
attacker-provided browser archive, and its temporary paths are tool-controlled.
|
|
66
|
+
`audit-ci.jsonc` records narrow, expiring exceptions for those two advisory IDs.
|
|
67
|
+
All other high or critical advisories still fail `npm run audit`. Review or
|
|
68
|
+
remove the exceptions by 2026-11-30 rather than extending them automatically.
|