managarten/scripts
Till JS 4d5a96e21b perf(invoices): lazy-load pdf-lib + swissqrbill, -516 KB on route
/(app)/invoices/[id] route bundle drops from **534 KB → 18.6 KB** by
moving PDF rendering behind dynamic imports.

Changes:
  - views/DetailView.svelte: `await import('../pdf/renderer')` inside
    renderPdf() + downloadPdf(), cached in a module-local ref.
  - components/SendModal.svelte: same for openAndDownload().
  - pdf/scor.ts (new): generateSCORReference extracted so the
    invoices store can derive a reference string without pulling
    swissqrbill/svg + pdf-lib into the list-view bundle.
  - pdf/qr-bill.ts: re-exports generateSCORReference from scor.ts
    for backward compatibility.
  - stores/invoices.svelte.ts: imports from ../pdf/scor (light) instead
    of ../pdf/qr-bill (heavy).
  - index.ts: drop re-export of the PDF renderer from the module
    barrel so `import ... from '$lib/modules/invoices'` never drags
    pdf-lib in.

The heavy chunk (pdf-lib + swissqrbill, ~576 KB) now only loads when
a user actually opens an invoice detail — list views, create flow, and
all other routes stay lean.

20/20 qr-bill tests pass; svelte-check clean.

Bonus: scripts/audit-icon-usage.mjs (+ pnpm run audit:icon-usage)
audits @mana/shared-icons imports. Reveals 204 distinct icons across
the codebase, 199 of them at default weight but paying for all 6
Phosphor weights. Biggest offender: app-registry/apps.ts with 69
static icon imports accounting for ~290 KB of the shared 466 KB icon
chunk. Migration path for that is documented in
docs/optimizable/bundle-analysis.md §2 — next session's work.

docs/optimizable/bundle-analysis.md also updated with the root (app)
layout (260 KB) investigation notes (start/stop lifecycle hooks to
defer via idleCallback).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 18:03:53 +02:00
..
dev chore(dev): seed real credit balance in setup-dev-user.sh 2026-04-15 18:51:39 +02:00
mac-mini refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
test-data feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
test-reporting chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
audit-bundle.mjs chore(bundle): add bundle-size audit + snapshot inventory 2026-04-22 17:52:08 +02:00
audit-complexity.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
audit-crypto-registry.mjs feat(crypto): Phase C — build-time registry ↔ Dexie audit 2026-04-20 14:36:32 +02:00
audit-i18n-coverage.mjs chore(i18n): add coverage audit + migration inventory 2026-04-22 17:16:55 +02:00
audit-icon-usage.mjs perf(invoices): lazy-load pdf-lib + swissqrbill, -516 KB on route 2026-04-22 18:03:53 +02:00
audit-module-coupling.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
audit-modules.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
audit-port-drift.mjs chore(services): add port-drift audit 2026-04-22 17:22:37 +02:00
audit-test-coverage.mjs chore(test + audit): add test-coverage audit + wire audit:all 2026-04-22 17:38:12 +02:00
audit-workspace-deps.mjs refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
backup-monitoring.sh feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
build-complexity-map.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
check-status.sh feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
create-gift-codes.mjs feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
deploy-metrics.sh fix(deploy): fix image size measurement in deploy metrics 2026-03-20 21:13:03 +01:00
ecosystem-audit.mjs feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
fix-mixed-imports.mjs Fix wrong type 2025-12-04 23:25:25 +01:00
generate-dockerfiles.mjs feat(infra): extend Dockerfile validator to backends and services 2026-03-25 08:57:10 +01:00
generate-env.mjs chore(broadcast): wire mana-mail into env pipeline + push schema 2026-04-21 16:21:57 +02:00
generate-status-page.sh feat(mana-ai): Prometheus /metrics endpoint + status.mana.how integration 2026-04-15 01:41:40 +02:00
lighthouse-audit.sh refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
migrate-theme-tokens.mjs refactor(theming): migrate remaining 738 token violations across routes + components 2026-04-22 15:42:55 +02:00
migrate-transition-all.mjs refactor(theming): replace transition-all with specific transitions 2026-04-22 15:57:49 +02:00
run-integration-tests.sh fix(mana-auth): account lockout was structurally dead + add failure-path tests 2026-04-08 18:29:00 +02:00
run-tests-with-coverage.sh feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
setup-databases.sh chore(mail): add infra — port 3042, DB schema setup, pnpm install 2026-04-13 20:42:12 +02:00
setup-secrets.mjs feat(env): persistent dev secrets via .env.secrets override 2026-04-08 17:50:37 +02:00
test-chat-auth.sh chore: tidy root files + reorganize a few stale docs 2026-04-08 12:15:27 +02:00
validate-cloudflared-config.mjs chore(infra): pre-commit validator for cloudflared-config.yml 2026-04-09 18:02:51 +02:00
validate-dockerfiles.mjs refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
validate-monorepo.mjs refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
validate-no-recursive-turbo.mjs chore(turbo): lint against recursive \turbo run\ calls in child packages 2026-04-20 14:39:32 +02:00
validate-pg-schema-isolation.mjs chore(db): enforce pgSchema isolation with a lint script 2026-04-20 14:45:59 +02:00
validate-theme-parity.mjs refactor(theming): migrate who semantic colours to theme tokens 2026-04-22 17:19:53 +02:00
validate-theme-utilities.mjs refactor(theming): migrate who semantic colours to theme tokens 2026-04-22 17:19:53 +02:00
validate-theme-variables.mjs refactor(theming): re-apply theme validator suite after parallel rebase 2026-04-22 17:07:48 +02:00