═══════════════════════════════════════════════════════════════════════ TODO #6 — size-limit budgets in CI ═══════════════════════════════════════════════════════════════════════ Adds .size-limit.cjs with budgets for 6 pilot @bytelyst/* packages, plus a Gitea Actions workflow (.gitea/workflows/size-limit.yml) that fails the build on any regression. Current measurements vs budget (all comfortably under): @bytelyst/api-client 793 B / 8 KB @bytelyst/auth-client 1.97 KB / 8 KB @bytelyst/celebrations 236 B / 6 KB @bytelyst/quick-actions 122 B / 6 KB @bytelyst/react-auth 2.71 KB / 10 KB @bytelyst/dashboard-shell 3.96 KB / 30 KB Scripts: pnpm size — measure + assert against budgets pnpm size:why — explain top contributors Deps: size-limit@^12.1.0, @size-limit/preset-small-lib@^12.1.0. Pilot scope (this commit): 6 packages. Full @bytelyst/* rollout is incremental — each entry added separately. ═══════════════════════════════════════════════════════════════════════ TODO #5 — Storybook canonical pattern ═══════════════════════════════════════════════════════════════════════ Discovery: @bytelyst/ui already has Storybook 8 with the @bytelyst/ addon-a11y addon configured and 5 .stories.tsx files. This commit: - Documents that setup as the canonical template (docs/STORYBOOK_TEMPLATE.md) including the .storybook/main.ts, preview.ts, package.json scripts, and an example story. - Catalogs which of the 8 visual @bytelyst/* packages need Storybook added (1/8 done — @bytelyst/ui). - Per docs/ROADMAP_2026_DECISIONS.md §9, hosting target is self-hosted Gitea Pages (no Chromatic). Full rollout to the other 7 packages stays open as incremental work. ═══════════════════════════════════════════════════════════════════════ TODO #4 — DTCG v3 token migration RFC ═══════════════════════════════════════════════════════════════════════ This is too large to land in a single commit. Drafted RFC instead: docs/rfc/0001-dtcg-v3-token-migration.md The RFC proposes a 4-PR sequence: PR 1 — Add converter + dual-emit (byte-identical assertion) PR 2 — Flip source of truth to DTCG JSON PR 3 — Introduce the component tier PR 4 — Multi-theme via DTCG token sets Estimate: 2 person-weeks total. Backward compatibility: --ml-* and --bl-* names preserved through all 4 PRs. Status: Draft, awaiting reviewers. Refs: learning_ai_uxui_web/docs/ROADMAP_2026.md §10 TODOs #4, #5, #6
76 lines
2.0 KiB
YAML
76 lines
2.0 KiB
YAML
name: Size limit
|
|
|
|
# ROADMAP TODO #6 — enforces bundle-size budgets defined in
|
|
# .size-limit.cjs on every push to main and every PR. Failures block
|
|
# merge so that bundle bloat is a visible, deliberate decision.
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'packages/**'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'package.json'
|
|
- '.size-limit.cjs'
|
|
- '.gitea/workflows/size-limit.yml'
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- 'packages/**'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'package.json'
|
|
- '.size-limit.cjs'
|
|
|
|
concurrency:
|
|
group: size-limit-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
size:
|
|
name: size-limit
|
|
runs-on: [ubuntu-latest, bytelyst, hostinger]
|
|
container:
|
|
image: node:20-bookworm
|
|
timeout-minutes: 10
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
github-server-url: https://gitea.bytelyst.com
|
|
|
|
- name: Install pinned pnpm
|
|
run: |
|
|
npm install -g pnpm@10.6.5
|
|
pnpm --version
|
|
|
|
- name: Install dependencies
|
|
run: HUSKY=0 pnpm install --frozen-lockfile
|
|
|
|
- name: Build measured packages
|
|
# size-limit measures dist/ — ensure every entry in
|
|
# .size-limit.cjs has a fresh build before running.
|
|
run: |
|
|
pnpm --filter @bytelyst/api-client \
|
|
--filter @bytelyst/auth-client \
|
|
--filter @bytelyst/celebrations \
|
|
--filter @bytelyst/quick-actions \
|
|
--filter @bytelyst/react-auth \
|
|
--filter @bytelyst/dashboard-shell \
|
|
run build
|
|
|
|
- name: Enforce size budgets
|
|
run: pnpm size
|
|
|
|
- name: Upload size report
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: size-limit-${{ github.run_id }}
|
|
path: |
|
|
.size-limit/
|
|
retention-days: 14
|
|
continue-on-error: true
|