Scaffold CommiTea: yarn workspaces, Electron shell, core label schema, design system

- apps/desktop: electron-vite + React + Tailwind mapped onto design tokens
  (preflight off; tokens/base.css owns the reset); boots to a Reginald
  placeholder proving fonts/tokens/core wiring
- packages/core: pure TS; gitea label schema (est/*, p/*, deadline/hard)
  with pessimistic conflict resolution + 15 unit tests
- docs/design: full design handoff (tokens, 16 component contracts,
  interactive 14-screen prototype, Reginald voice rules)
- docs/PLAN.md: product plan (purity rule, pm-state repo, deterministic
  scheduler + Monte Carlo, directive log)
- Deliberate deviation from novelpad stack: no ElectricSQL/PGlite — local
  store is a rebuildable cache over gitea REST/webhooks (better-sqlite3
  in main process, arriving in P1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Christian LeDoux
2026-07-07 20:42:46 -04:00
commit 7a5cacc54c
268 changed files with 15766 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
/* CommiTea webfonts — self-hosted, latin subsets */
@font-face {
font-family: 'Libre Caslon Display';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../assets/fonts/caslon-display-normal-400.woff2) format('woff2');
}
@font-face {
font-family: 'Libre Caslon Text';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../assets/fonts/caslon-text-normal-400.woff2) format('woff2');
}
@font-face {
font-family: 'Libre Caslon Text';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(../assets/fonts/caslon-text-italic-400.woff2) format('woff2');
}
@font-face {
font-family: 'Libre Caslon Text';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(../assets/fonts/caslon-text-normal-700.woff2) format('woff2');
}
@font-face {
font-family: 'Instrument Sans';
font-style: normal;
font-weight: 400 700;
font-display: swap;
src: url(../assets/fonts/instrument-sans-normal-400-700.woff2) format('woff2');
}
@font-face {
font-family: 'Instrument Sans';
font-style: italic;
font-weight: 400 700;
font-display: swap;
src: url(../assets/fonts/instrument-sans-italic-400-700.woff2) format('woff2');
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../assets/fonts/plex-mono-normal-400.woff2) format('woff2');
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../assets/fonts/plex-mono-normal-500.woff2) format('woff2');
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(../assets/fonts/plex-mono-normal-600.woff2) format('woff2');
}