| Branche | Rôle | GitHub Pages |
|---|---|---|
main |
Production | / (racine) |
beta |
Recette / pré-prod | /beta |
claude/dev |
Intégration continue | /dev |
- Ne jamais committer directement sur
mainoubeta. Tout développement se fait sur une brancheclaude/<feature>. - Une fois la feature terminée, merger directement la branche
claude/<feature>dansclaude/dev(pas de PR pour cette étape). - La promotion vers les branches supérieures se fait par PR :
claude/dev→beta→main. - Toujours committer et pousser les changements sur la branche de travail désignée avant de merger dans
claude/dev.
- Ne jamais lancer
npm run build:cdnmanuellement. Le build du bundledist-cdn/est géré par GitHub Actions :build-cdn.yml: build déclenché manuellement (workflow_dispatch), commit surmain.deploy.yml: build + déploiement GitHub Pages à chaque push surmain,betaoudev.main→ déploie sur/viapeaceiris/actions-gh-pages(branchegh-pages, racine)beta→ déploie sur/beta(branchegh-pages, sous-dossierbeta/)dev→ déploie sur/dev(branchegh-pages, sous-dossierdev/)
⚠️ GitHub Pages doit être configuré sur Source : Deploy from a branch →gh-pages// (root).
- Ne pas committer les fichiers
dist-cdn/sauf si explicitement demandé.
@sqlrooms/room-shell: layout mosaic (panneaux redimensionnables), sidebar,RoomShell/RoomPanel/RoomShell.Sidebar/RoomShell.SidebarButtons/RoomShell.LayoutComposer/RoomShell.LoadingProgress/RoomShell.CommandPalette.@sqlrooms/ui: composants Shadcn/Radix (Button, Input, Tooltip, useToast, ThemeSwitch…).@sqlrooms/dropzone:FileDropzone— drag & drop de fichiers.@sqlrooms/sql-editor: éditeur SQL CodeMirror.@sqlrooms/utils: utilitaires (convertToValidColumnOrTableName…).- Version fixée :
0.29.0-rc.1(sauf@sqlrooms/pivot@0.29.0-rc.2— voir ci-dessous). @sqlrooms/pivot:0.29.0-rc.2installé avec npmoverridespour contourner les référencesworkspace:*non résolues (les dépendances transitives sont forcées sur rc.1). FournitPivotEditor(drag-and-drop, multi-renderer) +PivotResults(useSql). L'exécution crée une VIEW DuckDBpivot_src_<id>etPivotResultscalcule les requêtes pivot directement viauseSql(bridgé surDuckDBManager).⚠️ rc.2 (packages hors pivot) toujours bloqué :@sqlrooms/codemirror@0.29.0-rc.2et les autres packages rc.2 restent inutilisables hors monorepo. Seul@sqlrooms/pivota pu être intégré via overrides.
- Store principal :
src/app/store/notebookStore.ts - Store créé via
createRoomStore<NotebookState>()de@sqlrooms/room-shell— retourne{ roomStore, useNotebookStore }. roomStoreest le store brut passé à<RoomShell roomStore={roomStore}>;useNotebookStoreest le hook React.- Le store fusionne les slices sqlrooms (roomShell, sqlEditor, cells, notebook, canvas) et les 9 slices Zustand purs (pages, helpers, parameters, export, groups, cells, files, execution, copyPaste).
- La slice RoomShell (
createRoomShellSlice) gère le layout mosaic et l'état des panneaux. - Le layout est persisté via
persistSliceConfigs(clé localStoragesqljob-layout-state-v1).
- Instance unique :
src/lib/DuckDBManager.ts— singleton statique partagé par toutes les cells et le dropzone. - Deux moteurs possibles :
duckdb-wasm(défaut) etducklings. addRoomFileest overridé dans le store pour passer parDuckDBManagerau lieu du connecteur sqlrooms (get().db).refreshDuckdbTables()(helpersMixin) synchronise_duckdbTables(état React) avec les tables réelles de DuckDB après chaque chargement.
- React 18 + Vite 5 + Tailwind CSS 4.
- Les icônes utilisent
@iconify/iconify(data-icon sur des<span>). - Les cellules SQL/Table utilisent SimpleDatatables pour l'affichage des résultats.
src/
app/
components/ # Composants React (DataSourcesPanel, NotebookPanel, modals…)
mixins/ # 9 mixins logique métier (ex-Alpine)
store/
notebookStore.ts # Store Zustand principal
room.tsx # Composant racine (RoomShell)
lib/
DuckDBManager.ts # Singleton DuckDB (init, requêtes, fichiers)
ConfigManager.ts # Config notebook (groupes, cells, pages)
CDNManager.ts # Chargement dynamique de libs CDN
.github/workflows/
build-cdn.yml # Build manuel dist-cdn → commit main
deploy.yml # Build + deploy GitHub Pages (main→/, beta→/beta, dev→/dev)