Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0d04d65
feat: migrate to createRoomStore + rc.1 APIs (persistSliceConfigs, Si…
claude May 6, 2026
9e3332a
fix: remove duplicate Sources button in sidebar
claude May 6, 2026
1a84011
feat: add pivot cell type using @sqlrooms/pivot@0.29.0-rc.2
claude May 7, 2026
1258254
fix: add pivot cell type to cellTypes list in notebookStore
claude May 7, 2026
f835080
fix(ci): trigger deploy on PR merge, not only on push
claude May 7, 2026
c376638
fix(build): stub PivotCellContent to unblock CDN build
claude May 7, 2026
eff400b
fix(build): also stub pivotCellRegistryEntry (rc.2 cells dep)
claude May 7, 2026
df47ff6
feat(pivot): table selector via PivotEditor.TableSelector, no SQL
claude May 7, 2026
e8c045b
feat(pivot): persist pivot config (renderer, rows, cols, vals) in cel…
claude May 7, 2026
ef5d332
feat(pivot): client mode shows only the pivot result, no config UI
claude May 7, 2026
6f6076a
fix: corrige erreur DuckDB non initialisé et double popup sqlrooms
claude May 7, 2026
f9edb2f
fix: retourne un Arrow table vide quand DuckDB pas encore prêt
claude May 7, 2026
e1cb324
chore: supprime mixins legacy + mise à jour DuckDB WASM 1.5.2
claude May 7, 2026
26076b1
docs: refonte README — sobre, concis, à jour
claude May 7, 2026
d03ceef
refactor: supprime @ts-nocheck — corrections TypeScript
claude May 7, 2026
fcf4d13
docs: corrige licence AGPL-3.0 + ajoute positionnement du projet
claude May 7, 2026
21c3db8
merge: intègre brainstorm (DuckDB 1.5.2 + suppression @ts-nocheck + R…
claude May 8, 2026
5c9cb94
fix(duckdb): align CDN version with sqlrooms (1.32.0, not 1.5.2)
claude May 8, 2026
5c18f62
refactor: apply sqlrooms contributing guidelines (TypeScript + patterns)
claude May 8, 2026
03ddc5a
refactor: apply sqlrooms contributing guidelines (typescript.md / pat…
claude May 8, 2026
1f1026b
refactor: align with sqlrooms examples (Zod panels, intersection type…
claude May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 18 additions & 5 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,35 @@ name: Deploy to GitHub Pages
on:
push:
branches: [main, beta, recette, claude/dev]
pull_request:
branches: [main, beta, recette, claude/dev]
types: [closed]
workflow_dispatch:

permissions:
contents: write

concurrency:
group: deploy-${{ github.ref_name }}
group: deploy-${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
cancel-in-progress: true

jobs:
build-and-deploy:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.merged == true
steps:
- name: Determine target branch
id: target
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "branch=${{ github.event.pull_request.base.ref }}" >> $GITHUB_OUTPUT
else
echo "branch=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi

- uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
ref: ${{ steps.target.outputs.branch }}

- uses: actions/setup-node@v4
with:
Expand All @@ -41,7 +54,7 @@ jobs:

# main → racine du site (/)
- name: Deploy main to /
if: github.ref_name == 'main'
if: steps.target.outputs.branch == 'main'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -50,7 +63,7 @@ jobs:

# beta / recette → sous-dossier /beta/
- name: Deploy beta to /beta/
if: github.ref_name == 'beta' || github.ref_name == 'recette'
if: steps.target.outputs.branch == 'beta' || steps.target.outputs.branch == 'recette'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -60,7 +73,7 @@ jobs:

# claude/dev → sous-dossier /dev/
- name: Deploy claude/dev to /dev/
if: github.ref == 'refs/heads/claude/dev'
if: steps.target.outputs.branch == 'claude/dev'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
13 changes: 9 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,22 @@
## Stack technique

### Framework UI — sqlrooms
- **`@sqlrooms/room-shell`** : layout mosaic (panneaux redimensionnables), sidebar avec boutons toggle par panneau, `RoomShell` / `RoomPanel` / `RoomShell.Sidebar` / `RoomShell.LayoutComposer`.
- **`@sqlrooms/ui`** : composants Shadcn/Radix (Button, Input, Tooltip, useToast…).
- **`@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`.
- 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.2` installé avec npm `overrides` pour contourner les références `workspace:*` non résolues (les dépendances transitives sont forcées sur rc.1). Fournit `PivotEditor` (drag-and-drop, multi-renderer) + `PivotResults` (useSql). L'exécution crée une VIEW DuckDB `pivot_src_<id>` et `PivotResults` calcule les requêtes pivot directement via `useSql` (bridgé sur `DuckDBManager`).
- ⚠️ **rc.2 (packages hors pivot) toujours bloqué** : `@sqlrooms/codemirror@0.29.0-rc.2` et les autres packages rc.2 restent inutilisables hors monorepo. Seul `@sqlrooms/pivot` a pu être intégré via overrides.

### State management — Zustand
- Store principal : `src/app/store/notebookStore.ts`
- Le store fusionne via un proxy `this → get/set` les 9 mixins Alpine migrés : `pagesMixin`, `helpersMixin`, `groupsMixin`, `cellsMixin`, `filesMixin`, `executionMixin`, `parametersMixin`, `editorsMixin`, `exportImportMixin`.
- Store créé via `createRoomStore<NotebookState>()` de `@sqlrooms/room-shell` — retourne `{ roomStore, useNotebookStore }`.
- `roomStore` est le store brut passé à `<RoomShell roomStore={roomStore}>` ; `useNotebookStore` est 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é localStorage `sqljob-layout-state-v1`).

### DuckDB
- **Instance unique** : `src/lib/DuckDBManager.ts` — singleton statique partagé par toutes les cells et le dropzone.
Expand Down
Loading
Loading