You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5cf8ea6
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+28Lines changed: 28 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,6 +81,34 @@ DataLab-Web is fully internationalised: English is the source language and Frenc
81
81
82
82
DataLab-Web sometimes backports a feature or patches a bug that is fixed upstream (`guidata`, `sigima`, …) but not yet in a released wheel. These **temporary shims** are tracked centrally so they can be audited and removed once upstream catches up. Every backport shim is declared once in [src/runtime/shims/registry.ts](src/runtime/shims/registry.ts), carries `# TEMPORARY SHIM` / `@shim-registry: <id>` markers in its source, and is kept in sync by a network-free anti-drift test that runs in `npm test`. Use `npm run audit:shims` for the fast PyPI/lockfile pre-audit and `npm run audit:shims:runtime` to verify the versions actually installed in Pyodide. A `ready-to-remove` version result is only a candidate: focused contract or E2E tests must also prove native behavioral parity before the shim is deleted. The full workflow is in [doc/shim-registry.md](doc/shim-registry.md).
83
83
84
+
## Sigima development snapshots
85
+
86
+
When DataLab-Web needs a Sigima change that is merged but not yet published,
87
+
declare it in [sigima-dependency.json](sigima-dependency.json). Keep
88
+
`publishedRequirement` as the exact release target (`sigima==X.Y.Z`) and set
89
+
`developmentRef` to the full lowercase 40-character commit SHA. Branch names,
90
+
tags, abbreviated SHAs and version ranges are rejected because they are not an
91
+
immutable, release-qualified dependency.
92
+
93
+
Do not add a source URL to [requirements-dev.txt](requirements-dev.txt) or copy
94
+
the SHA into a workflow. The following command installs the common Python
95
+
requirements and then resolves the configured Sigima selection:
The `PYTHONPATH` entries in `.env` take priority over installed packages;
102
+
remove `..\Sigima` when the purpose of the test is to qualify the exact SHA
103
+
declared in the manifest.
104
+
105
+
CI uses the same resolver to build the Pyodide wheel. A non-null
106
+
`developmentRef` blocks `release:guard`, `release:pack`, the tag helper and the
107
+
release workflow. After the exact target version is published, qualify CPython
108
+
and Pyodide without `PYTHONPATH` or `VITE_SIGIMA_INSTALL_SPEC`, then set
109
+
`developmentRef` to `null`. See [doc/releasing.md](doc/releasing.md) for the
110
+
release checklist.
111
+
84
112
## Branching model
85
113
86
114
DataLab-Web follows the same two-branch model as the sibling repositories (DataLab, Sigima): day-to-day work lands on **`develop`**, and **`main`** is the release branch — `develop` is merged into `main` only when cutting a real release. CI ([tests.yml](.github/workflows/tests.yml)) runs the cheap regression suite on both branches and on pull requests targeting either. The multi-minute performance benchmarks are **not** part of that run; they are opt-in and driven by a separate on-demand workflow (see the **Performance benchmarks** section of [doc/testing-strategy.md](doc/testing-strategy.md)).
Copy file name to clipboardExpand all lines: doc/releasing.md
+28-9Lines changed: 28 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,21 +2,40 @@
2
2
3
3
## Versioning
4
4
5
-
The application version is declared **once**, in `package.json`, and is injected into the bundle at build time via Vite's `define` option (see `vite.config.ts`). The _Help → About_ dialog reads it from `import.meta.env.VITE_APP_VERSION`.
5
+
The application version is declared in `package.json`, kept aligned with `packages/sdk/package.json`, and injected into the bundle at build time via Vite's `define` option (see `vite.config.ts`). The _Help → About_ dialog reads it from `import.meta.env.VITE_APP_VERSION`.
6
6
7
-
To bump the version, use the standard npm command (it edits `package.json`, creates a commit, and tags it `vX.Y.Z`):
7
+
Use the release helper to bump both packages, promote the changelog, create one commit and tag it `vX.Y.Z`:
node scripts/release.mjs minor # feature: 0.1.0 → 0.2.0
12
+
node scripts/release.mjs major # breaking: 0.1.0 → 1.0.0
13
13
```
14
14
15
-
The next `npm run dev` or `npm run build` automatically picks up the new value — no other file needs to be edited.
15
+
The push remains manual, providing a final checkpoint before the release workflow starts.
16
16
17
-
> **Keep `packages/sdk/package.json` in sync** — bump its `version` to the same value before tagging. The release CI fails if the two `package.json` files disagree.
17
+
## Sigima release qualification
18
18
19
-
> **What `git push --tags` triggers** — the [`Release tarballs`](../.github/workflows/release.yml) workflow runs, in order: version coherence check (tag ↔ both `package.json` files) → `pytest tests/python` (3.11 + 3.12) and Playwright E2E (in parallel) → lint + Vitest + build + pack the two `.tgz` → publish a GitHub Release with the tarballs and auto-generated notes → deploy `dist/` to GitHub Pages. Any failing gate aborts the release **and** the deploy.
19
+
[`sigima-dependency.json`](../sigima-dependency.json) separates the exact
20
+
published requirement from the temporary integration snapshot. Before
21
+
preparing a DataLab-Web release:
22
+
23
+
1. Confirm that `publishedRequirement` is an exact pin such as
24
+
`sigima==1.3.0` and is available on PyPI.
25
+
2. Run pytest and Playwright without a sibling Sigima `PYTHONPATH`, local wheel
26
+
or `VITE_SIGIMA_INSTALL_SPEC`.
27
+
3. Confirm the live Pyodide runtime reports that exact Sigima version.
28
+
4. Set `developmentRef` to `null` only after those checks pass.
29
+
30
+
`npm run release:guard` performs the network-free structural checks. It blocks
31
+
while any snapshot SHA is active and is called before `release:pack`, before
32
+
the release helper mutates files, and by the release workflow before its other
33
+
jobs. The release Python tests explicitly install `publishedRequirement`, and
34
+
the release browser tests never build or export a development wheel.
35
+
`release:pack` uses `build:release`, whose release mode ignores even an
36
+
accidental `VITE_SIGIMA_INSTALL_SPEC` from the developer's ignored `.env`.
37
+
38
+
> **What `git push --tags` triggers** — the [`Release tarballs`](../.github/workflows/release.yml) workflow runs, in order: Sigima release guard and version coherence check (tag ↔ both `package.json` files) → `pytest tests/python` (3.11 + 3.12) and Playwright E2E against the published Sigima pin (in parallel) → lint + Vitest + build + pack the two `.tgz` → publish a GitHub Release with the tarballs and auto-generated notes → deploy `dist/` to GitHub Pages. Any failing gate aborts the release **and** the deploy.
20
39
21
40
## Distribution: app bundle + SDK tarballs
22
41
@@ -30,7 +49,7 @@ DataLab-Web is shipped to integrators as **two `.tgz` artefacts** produced by th
30
49
Generate them locally:
31
50
32
51
```powershell
33
-
npm run release:pack # lint → test → build → SDK pack → app pack → summary
52
+
npm run release:pack # guard → lint → test → build → SDK pack → app pack
34
53
```
35
54
36
55
Or invoke each step independently (`npm run sdk:pack`, `npm run app:pack`). Output lands in `release/`.
0 commit comments