@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.
@@ -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
- ignorePaths: ['node_modules', 'dist', 'coverage', 'playwright-report', 'test-results'],
5
- words: ['Catppuccin', 'contentinfo', 'daisyui', 'Fira', 'fontsource', 'Macchiato', 'prefersdark', 'Sveltia'],
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.