From a39f1fe4dd22e5cee7200187a46dea32fc811708 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:48:13 +0100 Subject: [PATCH 01/49] Subproject ngff-spec under specfications directory - update build tools to handle ngff-spec contents - Make sure schemas are provided as html artefacts - deprecate bikeshed --- .github/workflows/pages.yml | 69 +++++++++++++++++++++++++++ .github/workflows/review.yml | 48 +++++++++---------- .github/workflows/validation.yml | 52 ++++++++++---------- .gitignore | 2 +- .gitmodules | 30 +++--------- .readthedocs.yaml | 17 ------- 0.1 | 1 - 0.2 | 1 - 0.3 | 1 - 0.4 | 1 - 0.5 | 1 - conf.py | 82 ++++++++++++++++++-------------- latest | 1 - specifications/0.5 | 1 + specifications/0.6.dev2 | 1 + specifications/index.md | 19 ++++---- 16 files changed, 184 insertions(+), 143 deletions(-) create mode 100644 .github/workflows/pages.yml delete mode 100644 .readthedocs.yaml delete mode 160000 0.1 delete mode 160000 0.2 delete mode 160000 0.3 delete mode 160000 0.4 delete mode 160000 0.5 delete mode 160000 latest create mode 160000 specifications/0.5 create mode 160000 specifications/0.6.dev2 diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 00000000..7f60ab71 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,69 @@ +name: Build and Deploy to GitHub Pages + +on: + push: + branches: [ main, subproject-ngff-spec ] + +env: + # `BASE_URL` determines the website is served from, including CSS & JS assets + BASE_URL: /${{ github.event.repository.name }} + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: 'pages' + cancel-in-progress: false + +env: + # `BASE_URL` determines the website is served from, including CSS & JS assets + # You may need to change this to `BASE_URL: ''` + BASE_URL: /${{ github.event.repository.name }} + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Pages + uses: actions/configure-pages@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: | + pip install -r requirements.txt + pip install specifications/0.6.dev2 + + - name: Build documentation + run: | + make html + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: '_build/html' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 0679ea76..0c7042cf 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -1,27 +1,27 @@ ---- -name: Add review url +# --- +# name: Add review url -on: - pull_request_target: +# on: +# pull_request_target: -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: peter-evans/find-comment@v2 - id: fc - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: Automated Review URLs +# jobs: +# build: +# runs-on: ubuntu-latest +# steps: +# - uses: peter-evans/find-comment@v2 +# id: fc +# with: +# issue-number: ${{ github.event.pull_request.number }} +# comment-author: 'github-actions[bot]' +# body-includes: Automated Review URLs - - uses: peter-evans/create-or-update-comment@v2 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - #### Automated Review URLs - * [Readthedocs](https://ngff--${{ github.event.pull_request.number }}.org.readthedocs.build/) - * [render latest/index.bs](http://api.csswg.org/bikeshed/?url=https://raw.githubusercontent.com/ome/ngff/${{ github.event.pull_request.head.sha }}/latest/index.bs) - * [diff latest modified](https://services.w3.org/htmldiff?doc1=https%3A%2F%2Fngff.openmicroscopy.org%2Flatest%2F&doc2=http%3A%2F%2Fapi.csswg.org%2Fbikeshed%2F%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fome%2Fngff%2F${{ github.event.pull_request.head.sha }}%2Flatest%2Findex.bs) - edit-mode: replace +# - uses: peter-evans/create-or-update-comment@v2 +# with: +# comment-id: ${{ steps.fc.outputs.comment-id }} +# issue-number: ${{ github.event.pull_request.number }} +# body: | +# #### Automated Review URLs +# * [Readthedocs](https://ngff--${{ github.event.pull_request.number }}.org.readthedocs.build/) +# * [render latest/index.bs](http://api.csswg.org/bikeshed/?url=https://raw.githubusercontent.com/ome/ngff/${{ github.event.pull_request.head.sha }}/latest/index.bs) +# * [diff latest modified](https://services.w3.org/htmldiff?doc1=https%3A%2F%2Fngff.openmicroscopy.org%2Flatest%2F&doc2=http%3A%2F%2Fapi.csswg.org%2Fbikeshed%2F%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fome%2Fngff%2F${{ github.event.pull_request.head.sha }}%2Flatest%2Findex.bs) +# edit-mode: replace diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 180bf42c..007642e7 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -1,28 +1,28 @@ -name: Validation -on: - push: - pull_request: +# name: Validation +# on: +# push: +# pull_request: -jobs: +# jobs: - validate: - name: Validation - strategy: - matrix: - ngff: - - '0.1' - - '0.2' - - '0.3' - - '0.4' - - '0.5' - - 'latest' - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - with: - submodules: 'true' - - uses: actions/setup-python@v5 - with: - python-version: '3.9' - - run: python -mpip install --upgrade wheel tox - - run: cd ${{matrix.ngff}} && tox +# validate: +# name: Validation +# strategy: +# matrix: +# ngff: +# - '0.1' +# - '0.2' +# - '0.3' +# - '0.4' +# - '0.5' +# - 'latest' +# runs-on: ubuntu-24.04 +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: 'true' +# - uses: actions/setup-python@v5 +# with: +# python-version: '3.9' +# - run: python -mpip install --upgrade wheel tox +# - run: cd ${{matrix.ngff}} && tox diff --git a/.gitignore b/.gitignore index d9cfbca7..8fa1e54c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ **/__pycache__/* */index.html _build -_bikeshed +_html_extra .tox .vscode .*plist diff --git a/.gitmodules b/.gitmodules index 88a43580..43153a6f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,24 +1,8 @@ -[submodule "0.1"] - path = 0.1 - url = https://github.com/ome/ngff - branch = v0.1 -[submodule "0.2"] - path = 0.2 - url = https://github.com/ome/ngff - branch = v0.2 -[submodule "0.3"] - path = 0.3 - url = https://github.com/ome/ngff - branch = v0.3 -[submodule "0.4"] - path = 0.4 - url = https://github.com/ome/ngff - branch = v0.4 +[submodule "0.6.dev2"] + path = specifications/0.6.dev2 + url = https://github.com/jo-mueller/ngff-spec + branch = main [submodule "0.5"] - path = 0.5 - url = https://github.com/ome/ngff - branch = v0.5 -[submodule "latest"] - path = latest - url = https://github.com/ome/ngff - branch = v0.5 + path = specifications/0.5 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.5 diff --git a/.readthedocs.yaml b/.readthedocs.yaml deleted file mode 100644 index b23558fa..00000000 --- a/.readthedocs.yaml +++ /dev/null @@ -1,17 +0,0 @@ -version: 2 - -build: - os: ubuntu-24.04 - tools: - python: "3.10" - -submodules: - include: all - recursive: true - -sphinx: - configuration: conf.py - -python: - install: - - requirements: requirements.txt diff --git a/0.1 b/0.1 deleted file mode 160000 index d669ceb9..00000000 --- a/0.1 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d669ceb90b424638eff0885f29ff588670333caa diff --git a/0.2 b/0.2 deleted file mode 160000 index d2dbd2d1..00000000 --- a/0.2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d2dbd2d13d9899e0b012ddaddd629fe39ec134f7 diff --git a/0.3 b/0.3 deleted file mode 160000 index e53257b1..00000000 --- a/0.3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e53257b18bac6ba5e86f3e74dc5fc9c3773a5a4e diff --git a/0.4 b/0.4 deleted file mode 160000 index 7ac3430c..00000000 --- a/0.4 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7ac3430c74a66e5bcf53e41c429143172d68c0a4 diff --git a/0.5 b/0.5 deleted file mode 160000 index 8cbba216..00000000 --- a/0.5 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8cbba216e37407bd2d4bd5c7128ab13bd0a6404e diff --git a/conf.py b/conf.py index a5351675..e5872cac 100644 --- a/conf.py +++ b/conf.py @@ -30,6 +30,9 @@ "README.md", "LICENSE.md", "CONTRIBUTING.md", + "**/README.md", + "**/LICENSE.md", + "**/CONTRIBUTING.md", ] redirects = { @@ -56,7 +59,7 @@ ] html_extra_path = [ - "_bikeshed", + "_html_extra", ] # #################################### @@ -164,42 +167,49 @@ def post_process(): import os import shutil import subprocess + import sys - versions = ["latest"] + glob.glob("[0-9]*") - for version in versions: - - # Run bikeshed - index_file = f"{version}/index.bs" - output_file = index_file.replace("bs", "html") - output_dir = os.path.dirname(output_file) - target_dir = os.path.join("_bikeshed", output_dir) - - run_bikeshed = True - - # Give the loop a chance to skip files if no build is needed/requested - if "BIKESHED" not in os.environ and os.path.exists(output_file): - src_time = os.path.getmtime(index_file) - out_time = os.path.getmtime(output_file) - if src_time < out_time: - print(f"{index_file} unchanged") - run_bikeshed = False - - if run_bikeshed: - subprocess.check_call( - f"bikeshed spec {index_file} {output_file}", shell=True, - ) - - if os.path.exists(target_dir): - shutil.rmtree(target_dir) - shutil.copytree(output_dir, target_dir) - - # Run json-schema-for-humans - try: - d = os.getcwd() - os.chdir("_bikeshed") - gen_version(version) - finally: - os.chdir(d) + # build ngff-spec docs + ngff_spec_versions = [ + {"submodule": "specifications/0.5", "target": "0.5"}, + {"submodule": "specifications/0.6.dev2", "target": "0.6.dev2"}, + ] + + serve_directory = "_html_extra" + shutil.rmtree(serve_directory, ignore_errors=True) + os.makedirs(serve_directory, exist_ok=True) + + for spec_version in ngff_spec_versions: + submodule_dir = spec_version["submodule"] + target_dir = spec_version["target"] + + if os.path.exists(submodule_dir): + print(f"Building ngff-spec docs for version {target_dir}...") + + os.chdir(submodule_dir) + + # prebuild ngff-spec examples and schemas + subprocess.check_call([sys.executable, "ngff_spec/pre_build.py"]) + os.chdir("ngff_spec") + + # Set BASE_URL from environment (for GitHub Pages) or fallback + os.environ["§BASE_URL"] = f"/{target_dir}/" + subprocess.check_call(["jupyter", "book", "build", "--ci", "--html"]) + os.chdir("../../..") + + # copy built ngff-spec to _html_extra for serving + source = Path(submodule_dir) / "ngff_spec" / "_build" / "html" + target = Path(serve_directory) / target_dir + shutil.copytree(source, target) + + # copy examples and schemas to bikeshed output + schema_files = glob.glob(os.path.join( + submodule_dir, "ngff_spec/schemas", '*.schema'), recursive=True) + target = Path(serve_directory) / target_dir / "schemas" + os.makedirs(target, exist_ok=True) + + for schema_file in schema_files: + shutil.copy2(schema_file, target) post_process() diff --git a/latest b/latest deleted file mode 160000 index 8cbba216..00000000 --- a/latest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8cbba216e37407bd2d4bd5c7128ab13bd0a6404e diff --git a/specifications/0.5 b/specifications/0.5 new file mode 160000 index 00000000..54566ffc --- /dev/null +++ b/specifications/0.5 @@ -0,0 +1 @@ +Subproject commit 54566ffc3f313c6c7c6873319b2501679f62b6a4 diff --git a/specifications/0.6.dev2 b/specifications/0.6.dev2 new file mode 160000 index 00000000..0cc2793b --- /dev/null +++ b/specifications/0.6.dev2 @@ -0,0 +1 @@ +Subproject commit 0cc2793b551b20f46823b03b9d6e8115d9536a9b diff --git a/specifications/index.md b/specifications/index.md index abfe2e8d..9c9b0fa8 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -3,13 +3,12 @@ Specifications OME-Zarr files have standardized metadata (that is the OME portion of "OME-Zarr") - each new version of OME-Zarr files has its own specification. Those specifications are listed below. -The current released version of the OME-Zarr specification is 0.5. - - +The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spec/specification.md). + +```{toctree} +:maxdepth: 1 +:caption: available specifications + +0.5/ngff_spec/index.md +0.6.dev2/ngff_spec/index.md +``` \ No newline at end of file From a3e8d5016ca37db88d8cd1b710b609cdd49d4502 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:39:25 +0100 Subject: [PATCH 02/49] Update submodule configuration to use ome/ngff-spec --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 43153a6f..e577730a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "0.6.dev2"] path = specifications/0.6.dev2 - url = https://github.com/jo-mueller/ngff-spec - branch = main + url = https://github.com/ome/ngff-spec + branch = 5650481b4d259ca4b43253f7c87491290d92626f [submodule "0.5"] path = specifications/0.5 url = https://github.com/jo-mueller/ngff-spec From 7926b1bcd677ba5a06f899a7aee8c63d62c8f0d5 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 8 Jan 2026 14:07:50 +0100 Subject: [PATCH 03/49] rename development submodule to "Dev" --- .gitmodules | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index e577730a..5121db9e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,16 @@ +[submodule "Dev"] + path = specifications/0.6.dev3 + url = https://github.com/ome/ngff-spec + branch = main [submodule "0.6.dev2"] path = specifications/0.6.dev2 url = https://github.com/ome/ngff-spec - branch = 5650481b4d259ca4b43253f7c87491290d92626f + branch = 0.6.dev2 [submodule "0.5"] path = specifications/0.5 url = https://github.com/jo-mueller/ngff-spec branch = 0.5 +[submodule "specifications/0.6.dev3"] + path = specifications/0.6.dev3 + url = https://github.com/ome/ngff-spec + branch = main From 57a9fdb2f6cb494f82282f81fb37e9ae2dce085e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 8 Jan 2026 14:13:00 +0100 Subject: [PATCH 04/49] fix Dev submodule config --- .gitmodules | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index 5121db9e..c5fa8941 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "Dev"] - path = specifications/0.6.dev3 + path = specifications/Dev url = https://github.com/ome/ngff-spec branch = main [submodule "0.6.dev2"] @@ -10,7 +10,3 @@ path = specifications/0.5 url = https://github.com/jo-mueller/ngff-spec branch = 0.5 -[submodule "specifications/0.6.dev3"] - path = specifications/0.6.dev3 - url = https://github.com/ome/ngff-spec - branch = main From 6d84125c2ee28e890880d63974760ec1bc521966 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 8 Jan 2026 14:16:28 +0100 Subject: [PATCH 05/49] fix links --- specifications/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specifications/index.md b/specifications/index.md index 9c9b0fa8..c29fe8d4 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -3,7 +3,7 @@ Specifications OME-Zarr files have standardized metadata (that is the OME portion of "OME-Zarr") - each new version of OME-Zarr files has its own specification. Those specifications are listed below. -The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spec/specification.md). +The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spec/index.md). ```{toctree} :maxdepth: 1 @@ -11,4 +11,5 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe 0.5/ngff_spec/index.md 0.6.dev2/ngff_spec/index.md +Dev/index.md ``` \ No newline at end of file From 808c37ac35b048bd098e466b40e8539b42aa53a1 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 8 Jan 2026 14:20:09 +0100 Subject: [PATCH 06/49] Create Dev --- specifications/Dev | 1 + 1 file changed, 1 insertion(+) create mode 160000 specifications/Dev diff --git a/specifications/Dev b/specifications/Dev new file mode 160000 index 00000000..5650481b --- /dev/null +++ b/specifications/Dev @@ -0,0 +1 @@ +Subproject commit 5650481b4d259ca4b43253f7c87491290d92626f From 944496ad475010e5bd7469bc9d85794e2167d4ef Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 9 Jan 2026 18:13:18 +0100 Subject: [PATCH 07/49] bring back RTD --- .github/workflows/pages.yml | 69 ------------------------------------- readthedocs.yml | 19 ++++++++++ 2 files changed, 19 insertions(+), 69 deletions(-) delete mode 100644 .github/workflows/pages.yml create mode 100644 readthedocs.yml diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index 7f60ab71..00000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Build and Deploy to GitHub Pages - -on: - push: - branches: [ main, subproject-ngff-spec ] - -env: - # `BASE_URL` determines the website is served from, including CSS & JS assets - BASE_URL: /${{ github.event.repository.name }} - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: 'pages' - cancel-in-progress: false - -env: - # `BASE_URL` determines the website is served from, including CSS & JS assets - # You may need to change this to `BASE_URL: ''` - BASE_URL: /${{ github.event.repository.name }} - -jobs: - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup Pages - uses: actions/configure-pages@v3 - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install dependencies - run: | - pip install -r requirements.txt - pip install specifications/0.6.dev2 - - - name: Build documentation - run: | - make html - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: '_build/html' - - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/readthedocs.yml b/readthedocs.yml new file mode 100644 index 00000000..c91318af --- /dev/null +++ b/readthedocs.yml @@ -0,0 +1,19 @@ +version: 2 + +build: + os: ubuntu-24.04 + tools: + python: "3.10" + +submodules: + include: all + recursive: true + +sphinx: + configuration: conf.py + +python: + install: + - requirements: requirements.txt + - method: pip + path: specifications/0.6.dev2 \ No newline at end of file From d826d12840620543dcea1844e4fe6c62fc92e50f Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 9 Jan 2026 18:22:12 +0100 Subject: [PATCH 08/49] add node to RTD tools --- readthedocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/readthedocs.yml b/readthedocs.yml index c91318af..fee71963 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -4,6 +4,7 @@ build: os: ubuntu-24.04 tools: python: "3.10" + nodejs: "22" submodules: include: all From 87fb6b02cf3d6b199d6e46b70921801978670d06 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 9 Jan 2026 21:40:10 +0100 Subject: [PATCH 09/49] Update submodules to latest commits - specifications/0.5: Updated to f3729f5 (untrack built bs files) - specifications/0.6.dev2: Updated to da4606b (0.6.dev2 tag) - specifications/Dev: Updated to 05b8089 (main branch) --- specifications/0.5 | 2 +- specifications/0.6.dev2 | 2 +- specifications/Dev | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/specifications/0.5 b/specifications/0.5 index 54566ffc..f3729f59 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 54566ffc3f313c6c7c6873319b2501679f62b6a4 +Subproject commit f3729f59550a0c3574b99129d94213f25885a1e7 diff --git a/specifications/0.6.dev2 b/specifications/0.6.dev2 index 0cc2793b..da4606bf 160000 --- a/specifications/0.6.dev2 +++ b/specifications/0.6.dev2 @@ -1 +1 @@ -Subproject commit 0cc2793b551b20f46823b03b9d6e8115d9536a9b +Subproject commit da4606bf96d2829ad74b4dbaf6de5afb6b7a595a diff --git a/specifications/Dev b/specifications/Dev index 5650481b..05b8089c 160000 --- a/specifications/Dev +++ b/specifications/Dev @@ -1 +1 @@ -Subproject commit 5650481b4d259ca4b43253f7c87491290d92626f +Subproject commit 05b8089c73d67cd3daadfd6737f0ce17776504ae From 76fa1830749a8e38e2f67e64f6a0d5efd7d74836 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 9 Jan 2026 22:58:56 +0100 Subject: [PATCH 10/49] invoke build scripts in submodules --- conf.py | 189 +++++++++------------------------------- specifications/0.5 | 2 +- specifications/index.md | 2 +- 3 files changed, 43 insertions(+), 150 deletions(-) diff --git a/conf.py b/conf.py index e5872cac..397da44c 100644 --- a/conf.py +++ b/conf.py @@ -62,155 +62,48 @@ "_html_extra", ] -# #################################### -# Post-process all versions -# #################################### - - - -from pathlib import Path - -from json_schema_for_humans.generate import ( - generate_from_filename, - GenerationConfiguration, -) - - -def get_version_index_html(*, version: str, schmea_fnames: list[Path]) -> str: - schemas_list = "\n".join( - [f"
  • {p.stem}
  • " for p in schmea_fnames] - ) - return f""" - - - - - - - - - - - - - - OME-zarr version {version} - - - -

    Version {version}


    - - - -""" - - -def get_index_html(*, versions: list[str]) -> str: - versions_list = "\n".join( - [f"
  • {v}
  • " for v in versions] - ) - return f""" - - - - - - - - - - - - - - OME-zarr JSON schema specifications - - - -

    OME-zarr JSON schema specifications


    -

    Nicely rendered JSON schemas generated directly from the OME-zarr specifications.

    -

    Generated using json-schema-for-humans.

    - - - -""" - - -def gen_version(version): - version_path = Path(version) - schema_path = version_path / "schemas" - for schema_file in sorted(schema_path.glob("*.schema")): - print(schema_file) - generate_from_filename( - schema_file, - result_file_name=schema_path / schema_file.with_suffix(".html").name, - config=GenerationConfiguration(template_name="js", with_footer=False), - ) - - schema_fnames = [ - p - for p in sorted(schema_path.glob("*.html")) - if p.name != "index.html" - ] - with open(schema_path / "index.html", "w") as f: - f.write( - get_version_index_html(version=version, schmea_fnames=schema_fnames) - ) - - -def post_process(): +def build_served_html(): import glob - import os - import shutil import subprocess import sys + import os + import shutil - # build ngff-spec docs - ngff_spec_versions = [ - {"submodule": "specifications/0.5", "target": "0.5"}, - {"submodule": "specifications/0.6.dev2", "target": "0.6.dev2"}, - ] - - serve_directory = "_html_extra" - shutil.rmtree(serve_directory, ignore_errors=True) - os.makedirs(serve_directory, exist_ok=True) - - for spec_version in ngff_spec_versions: - submodule_dir = spec_version["submodule"] - target_dir = spec_version["target"] - - if os.path.exists(submodule_dir): - print(f"Building ngff-spec docs for version {target_dir}...") - - os.chdir(submodule_dir) - - # prebuild ngff-spec examples and schemas - subprocess.check_call([sys.executable, "ngff_spec/pre_build.py"]) - os.chdir("ngff_spec") - - # Set BASE_URL from environment (for GitHub Pages) or fallback - os.environ["§BASE_URL"] = f"/{target_dir}/" - subprocess.check_call(["jupyter", "book", "build", "--ci", "--html"]) - os.chdir("../../..") - - # copy built ngff-spec to _html_extra for serving - source = Path(submodule_dir) / "ngff_spec" / "_build" / "html" - target = Path(serve_directory) / target_dir - shutil.copytree(source, target) - - # copy examples and schemas to bikeshed output - schema_files = glob.glob(os.path.join( - submodule_dir, "ngff_spec/schemas", '*.schema'), recursive=True) - target = Path(serve_directory) / target_dir / "schemas" - os.makedirs(target, exist_ok=True) - - for schema_file in schema_files: - shutil.copy2(schema_file, target) - - -post_process() -del post_process + versions = [d for d in os.listdir("specifications") if os.path.isdir(os.path.join("specifications", d))] + + for version in versions: + + # copy schemas to _html_extra + os.makedirs(f'_html_extra/{version}/schemas', exist_ok=True) + schemas = glob.glob(f'specifications/{version}/**/*.schema', recursive=True) + for schema in schemas: + shutil.copy2(schema, f'_html_extra/{version}/schemas/') + print(f'✅ Copied schemas for version {version}') + + # find 'pre_build.py' in 'specifications' subdirectories + script = glob.glob(f'specifications/{version}/**/pre_build.py', recursive=True)[0] + + subprocess.check_call([sys.executable, script]) + print('✅ Built rendered examples/schemas for version', version) + + # build jupyter-book docs in specification submodules + myst_file = glob.glob(f'specifications/{version}/**/myst.yml', recursive=True)[0] + if os.path.exists(myst_file): + cdir = os.getcwd() + os.chdir(os.path.dirname(myst_file)) + subprocess.check_call(['jupyter-book', 'build', '--ci', '--html']) + os.chdir(cdir) + print('✅ Built jupyter-book documentation for version', version) + + # copy built html files to _html_extra + bikeshed_output = f'specifications/{version}/index.html' + if os.path.exists(bikeshed_output): + shutil.copy2(bikeshed_output, f'_html_extra/{version}/index.html') + print(f'✅ Found legacy bikeshed, serving as extra html for {version}') + else: + build_dir = glob.glob(f'specifications/{version}/**/_build/html', recursive=True)[0] + shutil.copytree(build_dir, f'_html_extra/{version}', dirs_exist_ok=True) + print(f'✅ Copying jupyter-book documentation as extra html for {version}') + +build_served_html() + \ No newline at end of file diff --git a/specifications/0.5 b/specifications/0.5 index f3729f59..4a9322cc 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit f3729f59550a0c3574b99129d94213f25885a1e7 +Subproject commit 4a9322cc23bb4c68d03ca3955625f03d1b46049a diff --git a/specifications/index.md b/specifications/index.md index c29fe8d4..befffcb4 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -10,6 +10,6 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe :caption: available specifications 0.5/ngff_spec/index.md -0.6.dev2/ngff_spec/index.md +0.6.dev2/ngff_spec/specification.md Dev/index.md ``` \ No newline at end of file From 27d77c63d40116ad5bdf9c163d8c90981bda6f4f Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 9 Jan 2026 23:22:12 +0100 Subject: [PATCH 11/49] fix index location --- specifications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/index.md b/specifications/index.md index befffcb4..cdb949de 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -9,7 +9,7 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe :maxdepth: 1 :caption: available specifications -0.5/ngff_spec/index.md +0.5/index.md 0.6.dev2/ngff_spec/specification.md Dev/index.md ``` \ No newline at end of file From d26cbbf5b9323ec7fb6f859e18dd8a1623227e7a Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 9 Jan 2026 23:33:38 +0100 Subject: [PATCH 12/49] update commit --- specifications/0.5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/0.5 b/specifications/0.5 index 4a9322cc..77fdd6c8 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 4a9322cc23bb4c68d03ca3955625f03d1b46049a +Subproject commit 77fdd6c82081d23f99c6344c7cf52f41ce7192b4 From 365094e2c17d8fa3c0fcf99d58dcf9574aa630f4 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 00:33:03 +0100 Subject: [PATCH 13/49] do not build jupyter book here --- conf.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/conf.py b/conf.py index 397da44c..19a4d8ee 100644 --- a/conf.py +++ b/conf.py @@ -86,15 +86,6 @@ def build_served_html(): subprocess.check_call([sys.executable, script]) print('✅ Built rendered examples/schemas for version', version) - # build jupyter-book docs in specification submodules - myst_file = glob.glob(f'specifications/{version}/**/myst.yml', recursive=True)[0] - if os.path.exists(myst_file): - cdir = os.getcwd() - os.chdir(os.path.dirname(myst_file)) - subprocess.check_call(['jupyter-book', 'build', '--ci', '--html']) - os.chdir(cdir) - print('✅ Built jupyter-book documentation for version', version) - # copy built html files to _html_extra bikeshed_output = f'specifications/{version}/index.html' if os.path.exists(bikeshed_output): From 9eee8082d26c87b53b6c0080611ef5e512e03565 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 00:33:10 +0100 Subject: [PATCH 14/49] add 0.4 --- .gitmodules | 9 +++++++++ specifications/index.md | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index c5fa8941..0fedd7dc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,12 @@ path = specifications/0.5 url = https://github.com/jo-mueller/ngff-spec branch = 0.5 +[submodule "0.4"] + path = specifications/0.4 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.4 + +[submodule "specifications/0.4"] + path = specifications/0.4 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.4 diff --git a/specifications/index.md b/specifications/index.md index cdb949de..8fc267a1 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -9,7 +9,10 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe :maxdepth: 1 :caption: available specifications -0.5/index.md -0.6.dev2/ngff_spec/specification.md Dev/index.md +0.6.dev2/ngff_spec/specification.md +0.5/index.md +0.4/index.md + + ``` \ No newline at end of file From 8228f2bcc754779974f584ea3aeefae4fd47ca3b Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 12:27:42 +0100 Subject: [PATCH 15/49] build books --- conf.py | 10 ++++++++++ specifications/0.5 | 2 +- specifications/index.md | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/conf.py b/conf.py index 19a4d8ee..db27d78f 100644 --- a/conf.py +++ b/conf.py @@ -86,6 +86,16 @@ def build_served_html(): subprocess.check_call([sys.executable, script]) print('✅ Built rendered examples/schemas for version', version) + # build jupyter-book docs in specification submodules + myst_file = glob.glob(f'specifications/{version}/**/myst.yml', recursive=True)[0] + if os.path.exists(myst_file): + cdir = os.getcwd() + os.chdir(os.path.dirname(myst_file)) + subprocess.check_call(['jupyter-book', 'build', '--ci', '--html']) + os.chdir(cdir) + print('✅ Built jupyter-book documentation for version', version) + + # copy built html files to _html_extra bikeshed_output = f'specifications/{version}/index.html' if os.path.exists(bikeshed_output): diff --git a/specifications/0.5 b/specifications/0.5 index 77fdd6c8..41dbe15c 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 77fdd6c82081d23f99c6344c7cf52f41ce7192b4 +Subproject commit 41dbe15cf7acd531eee4b745cb5ebdccc0a22518 diff --git a/specifications/index.md b/specifications/index.md index 8fc267a1..0ab69156 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -13,6 +13,7 @@ Dev/index.md 0.6.dev2/ngff_spec/specification.md 0.5/index.md 0.4/index.md +0.3/index.md ``` \ No newline at end of file From 8e2462f4b98b38e00303fe5f662988ce52541469 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 12:28:01 +0100 Subject: [PATCH 16/49] update modules --- .gitmodules | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0fedd7dc..7923c3b8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,8 +14,7 @@ path = specifications/0.4 url = https://github.com/jo-mueller/ngff-spec branch = 0.4 - -[submodule "specifications/0.4"] - path = specifications/0.4 +[submodule "0.3"] + path = specifications/0.3 url = https://github.com/jo-mueller/ngff-spec - branch = 0.4 + branch = 0.3 \ No newline at end of file From 87871c30ee82f7e9f5e93f5833634d5760748a4d Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 12:49:19 +0100 Subject: [PATCH 17/49] add 0.1 and 0.2 --- .gitmodules | 10 +++++++++- specifications/0.1 | 1 + specifications/0.2 | 1 + specifications/index.md | 3 ++- 4 files changed, 13 insertions(+), 2 deletions(-) create mode 160000 specifications/0.1 create mode 160000 specifications/0.2 diff --git a/.gitmodules b/.gitmodules index 7923c3b8..fa7520b1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -17,4 +17,12 @@ [submodule "0.3"] path = specifications/0.3 url = https://github.com/jo-mueller/ngff-spec - branch = 0.3 \ No newline at end of file + branch = 0.3 +[submodule "specifications/0.2"] + path = specifications/0.2 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.2 +[submodule "specifications/0.1"] + path = specifications/0.1 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.1 diff --git a/specifications/0.1 b/specifications/0.1 new file mode 160000 index 00000000..f565f8c8 --- /dev/null +++ b/specifications/0.1 @@ -0,0 +1 @@ +Subproject commit f565f8c8b2c21e648a96bfd0b3972c78bc7e2bd3 diff --git a/specifications/0.2 b/specifications/0.2 new file mode 160000 index 00000000..4732bb28 --- /dev/null +++ b/specifications/0.2 @@ -0,0 +1 @@ +Subproject commit 4732bb28e13d09522327f38372159bf92d05ae66 diff --git a/specifications/index.md b/specifications/index.md index 0ab69156..c322bbfb 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -14,6 +14,7 @@ Dev/index.md 0.5/index.md 0.4/index.md 0.3/index.md - +0.2/index.md +0.1/index.md ``` \ No newline at end of file From b8f036fe6c03aacef568cf5da8f1ee1691cad2ae Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:09:07 +0100 Subject: [PATCH 18/49] use bibtex references and parsing on page --- conf.py | 6 ++- references.bib | 121 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 references.bib diff --git a/conf.py b/conf.py index db27d78f..f1b46094 100644 --- a/conf.py +++ b/conf.py @@ -13,7 +13,11 @@ # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration -extensions = ["myst_parser","sphinx_reredirects"] +extensions = [ + "myst_parser", + "sphinx_reredirects", + "sphinxcontrib.bibtex"] +bibtex_bibfiles = ["references.bib"] source_suffix = [".rst", ".md"] myst_heading_anchors = 5 myst_enable_extensions = ["deflist", "strikethrough"] diff --git a/references.bib b/references.bib new file mode 100644 index 00000000..25e054af --- /dev/null +++ b/references.bib @@ -0,0 +1,121 @@ +@article{moore2021ome, + title={OME-NGFF: a next-generation file format for expanding bioimaging data-access strategies}, + author={Moore, Josh and Allan, Chris and Besson, S{\'e}bastien and Burel, Jean-Marie and Diel, Erin and Gault, David and Kozlowski, Kevin and Lindner, Dominik and Linkert, Melissa and Manz, Trevor and others}, + journal={Nature methods}, + volume={18}, + number={12}, + pages={1496--1498}, + year={2021}, + publisher={Nature Publishing Group US New York} +} + +@software{ngff_spec_latest, + author = {Josh Moore}, + title = {ome/ngff: Next-generation file format (NGFF) + specifications for storing bioimaging data in the + cloud. + }, + month = nov, + year = 2020, + publisher = {Zenodo}, + version = {0.0.1}, + doi = {10.5281/zenodo.4282107}, + url = {https://ngff.openmicroscopy.org/latest/}, +} + +@software{zarr, + author = {Alistair Miles and + jakirkham and + Martin Durant and + Matthias Bussonnier and + James Bourbeau and + Tarik Onalan and + Joe Hamman and + Zain Patel and + Matthew Rocklin and + shikharsg and + Ryan Abernathey and + Josh Moore and + Vincent Schut and + raphael dussin and + Elliott Sales de Andrade and + Charles Noyes and + Aleksandar Jelenak and + Anderson Banihirwe and + Chris Barnes and + George Sakkis and + Jan Funke and + Jerome Kelleher and + Joe Jevnik and + Justin Swaney and + Poruri Sai Rahul and + Stephan Saalfeld and + john and + Tommy Tran and + pyup.io bot and + sbalmer}, + title = {zarr-developers/zarr-python: v2.5.0}, + month = oct, + year = 2020, + publisher = {Zenodo}, + version = {v2.5.0}, + doi = {10.5281/zenodo.4069231}, + url = {https://doi.org/10.5281/zenodo.4069231}, +} + +@software{n5, + author = {Stephan Saalfeld and + Igor Pisarev and + Philipp Hanslovsky and + Andrew Champion and + Curtis Rueden and + John Bogovic and + Mark Kittisopikul and + jakirkham}, + title = {saalfeldlab/n5: n5-2.5.1}, + month = may, + year = 2022, + publisher = {Zenodo}, + version = {n5-2.5.1}, + doi = {10.5281/zenodo.6578232}, + url = {https://doi.org/10.5281/zenodo.6578232}, +} + +@software{ome-zarr-py, + author = {Josh Moore and + Will Moore and + Sébastien Besson and + jean-marie burel and + Constantin Pape and + Dimitri Papadopoulos Orfanos and + David Stansby and + toloudis and + Giovanni Palla and + Guillaume Gay and + Evan Lyall and + Satrajit Ghosh and + Simon Li and + Benjamin Rombaut and + Minh Nhat Nguyen and + Juan Nunez-Iglesias and + aeisenbarth and + Albert Dominguez Mantes and + Yaroslav Halchenko and + Joshua Gould and + Camilo Laiton and + Tommaso Comparin and + LucaMarconato and + Heath Patterson and + Wouter-Michiel Vierdag and + Talley Lambert and + Sean Martin and + Peter Sobolewski and + M Bussonnier}, + title = {ome/ome-zarr-py: v0.12.2}, + month = aug, + year = 2025, + publisher = {Zenodo}, + version = {v0.12.2}, + doi = {10.5281/zenodo.16925672}, + url = {https://doi.org/10.5281/zenodo.16925672}, +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index d38c3f69..4f2a50a9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ sphinx-book-theme json-schema-for-humans testresources sphinx-reredirects +sphinxcontrib-bibtex From 8767c3a0f119787f4c2a860ee77a45745701c21b Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:14:04 +0100 Subject: [PATCH 19/49] update submodules --- specifications/0.1 | 2 +- specifications/0.2 | 2 +- specifications/0.5 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/specifications/0.1 b/specifications/0.1 index f565f8c8..8baea875 160000 --- a/specifications/0.1 +++ b/specifications/0.1 @@ -1 +1 @@ -Subproject commit f565f8c8b2c21e648a96bfd0b3972c78bc7e2bd3 +Subproject commit 8baea875a20741fd13e1d2cb63f3f1de0ff03a97 diff --git a/specifications/0.2 b/specifications/0.2 index 4732bb28..6299f0b2 160000 --- a/specifications/0.2 +++ b/specifications/0.2 @@ -1 +1 @@ -Subproject commit 4732bb28e13d09522327f38372159bf92d05ae66 +Subproject commit 6299f0b25afe5d78b72d73e312b052ef4634ef5f diff --git a/specifications/0.5 b/specifications/0.5 index 41dbe15c..4b8eef69 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 41dbe15cf7acd531eee4b745cb5ebdccc0a22518 +Subproject commit 4b8eef690c1ceae5c1f5fd232a34d89a4ce0c8a3 From f088baf58c8c1e8b1598f857509d9fd80a736fa0 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:36:59 +0100 Subject: [PATCH 20/49] update submodules --- specifications/0.1 | 2 +- specifications/0.2 | 2 +- specifications/0.5 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/specifications/0.1 b/specifications/0.1 index 8baea875..52db97ce 160000 --- a/specifications/0.1 +++ b/specifications/0.1 @@ -1 +1 @@ -Subproject commit 8baea875a20741fd13e1d2cb63f3f1de0ff03a97 +Subproject commit 52db97ceb723321e629825204e3f4da5e8fa80ae diff --git a/specifications/0.2 b/specifications/0.2 index 6299f0b2..22152cb2 160000 --- a/specifications/0.2 +++ b/specifications/0.2 @@ -1 +1 @@ -Subproject commit 6299f0b25afe5d78b72d73e312b052ef4634ef5f +Subproject commit 22152cb2e0891d7f1d5b5f8778252e263abdf4ab diff --git a/specifications/0.5 b/specifications/0.5 index 4b8eef69..41246310 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 4b8eef690c1ceae5c1f5fd232a34d89a4ce0c8a3 +Subproject commit 412463103412f0a5d31d325579793185eb9030c6 From 9efec3120a608bc465b1909d593a1fb59c3ead82 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:28:22 +0100 Subject: [PATCH 21/49] skip references.bib in codespell --- .codespellrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codespellrc b/.codespellrc index ba63319e..98a102d6 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,6 +1,6 @@ [codespell] # Ref: https://github.com/codespell-project/codespell#using-a-config-file -skip = .git,.codespellrc +skip = .git,.codespellrc,references.bib check-hidden = true # ignore-regex = ignore-words-list = commend,Fuchsia From 05b5e377f7dcb7306bd62b2c70e5d7f97a0685e4 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:30:08 +0100 Subject: [PATCH 22/49] use ngff-spec as origin for submodules --- .gitmodules | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index fa7520b1..4b85fb6d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,21 +8,21 @@ branch = 0.6.dev2 [submodule "0.5"] path = specifications/0.5 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.5 [submodule "0.4"] path = specifications/0.4 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.4 [submodule "0.3"] path = specifications/0.3 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.3 [submodule "specifications/0.2"] path = specifications/0.2 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.2 [submodule "specifications/0.1"] path = specifications/0.1 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.1 From cf367ee33cc2146afaf8308021ba696d95ab8c48 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 19 Jan 2026 18:53:18 +0100 Subject: [PATCH 23/49] add escape clause to build workflow --- conf.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/conf.py b/conf.py index 4d6a89ec..7fcac1f7 100644 --- a/conf.py +++ b/conf.py @@ -99,21 +99,26 @@ def build_served_html(): myst_file = glob.glob(f'specifications/{version}/**/myst.yml', recursive=True)[0] if os.path.exists(myst_file): cdir = os.getcwd() - os.chdir(os.path.dirname(myst_file)) - subprocess.check_call(['jupyter-book', 'build', '--ci', '--html']) - os.chdir(cdir) + try: + os.chdir(os.path.dirname(myst_file)) + subprocess.check_call(['jupyter-book', 'build', '--ci', '--html']) + finally: + os.chdir(cdir) print('✅ Built jupyter-book documentation for version', version) # copy built html files to _html_extra bikeshed_output = f'specifications/{version}/index.html' - if os.path.exists(bikeshed_output): - shutil.copy2(bikeshed_output, f'_html_extra/{version}/index.html') - print(f'✅ Found legacy bikeshed, serving as extra html for {version}') - else: - build_dir = glob.glob(f'specifications/{version}/**/_build/html', recursive=True)[0] - shutil.copytree(build_dir, f'_html_extra/{version}', dirs_exist_ok=True) - print(f'✅ Copying jupyter-book documentation as extra html for {version}') + try: + if os.path.exists(bikeshed_output): + shutil.copy2(bikeshed_output, f'_html_extra/{version}/index.html') + print(f'✅ Found legacy bikeshed, serving as extra html for {version}') + else: + build_dir = glob.glob(f'specifications/{version}/**/_build/html', recursive=True)[0] + shutil.copytree(build_dir, f'_html_extra/{version}', dirs_exist_ok=True) + print(f'✅ Copying jupyter-book documentation as extra html for {version}') + except Exception as e: + print(f'⚠️ Could not copy served html for version {version}: {e}') build_served_html() \ No newline at end of file From 0ffb1cddd428d4d191c39c932085cd3c704bd2b9 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:19:59 +0100 Subject: [PATCH 24/49] Add submodules specifications/0.3 and 0.4 --- .gitmodules | 26 +++++++++++++++++--------- specifications/0.3 | 1 + specifications/0.4 | 1 + 3 files changed, 19 insertions(+), 9 deletions(-) create mode 160000 specifications/0.3 create mode 160000 specifications/0.4 diff --git a/.gitmodules b/.gitmodules index 4b85fb6d..0e712369 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,27 +2,35 @@ path = specifications/Dev url = https://github.com/ome/ngff-spec branch = main -[submodule "0.6.dev2"] - path = specifications/0.6.dev2 - url = https://github.com/ome/ngff-spec - branch = 0.6.dev2 +; [submodule "0.6.dev2"] +; path = specifications/0.6.dev2 +; url = https://github.com/ome/ngff-spec +; branch = 0.6.dev2 [submodule "0.5"] path = specifications/0.5 - url = https://github.com/ome/ngff-spec + url = https://github.com/jo-mueller/ngff-spec branch = 0.5 [submodule "0.4"] path = specifications/0.4 - url = https://github.com/ome/ngff-spec + url = https://github.com/jo-mueller/ngff-spec branch = 0.4 [submodule "0.3"] path = specifications/0.3 - url = https://github.com/ome/ngff-spec + url = https://github.com/jo-mueller/ngff-spec branch = 0.3 [submodule "specifications/0.2"] path = specifications/0.2 - url = https://github.com/ome/ngff-spec + url = https://github.com/jo-mueller/ngff-spec branch = 0.2 [submodule "specifications/0.1"] path = specifications/0.1 - url = https://github.com/ome/ngff-spec + url = https://github.com/jo-mueller/ngff-spec branch = 0.1 +[submodule "specifications/0.4"] + path = specifications/0.4 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.4 +[submodule "specifications/0.3"] + path = specifications/0.3 + url = https://github.com/jo-mueller/ngff-spec + branch = 0.3 diff --git a/specifications/0.3 b/specifications/0.3 new file mode 160000 index 00000000..bab36099 --- /dev/null +++ b/specifications/0.3 @@ -0,0 +1 @@ +Subproject commit bab360992236886951bc6db05e9fa928a77197ea diff --git a/specifications/0.4 b/specifications/0.4 new file mode 160000 index 00000000..ade388de --- /dev/null +++ b/specifications/0.4 @@ -0,0 +1 @@ +Subproject commit ade388de74a906a35271b54e750b7103d655dc9c From dc76f0ed4cb9c5cbb7086232d12ad76699418bd9 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:21:35 +0100 Subject: [PATCH 25/49] Fix: remove duplicate submodule entries in .gitmodules --- .gitmodules | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0e712369..756e1bbd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -26,11 +26,4 @@ path = specifications/0.1 url = https://github.com/jo-mueller/ngff-spec branch = 0.1 -[submodule "specifications/0.4"] - path = specifications/0.4 - url = https://github.com/jo-mueller/ngff-spec - branch = 0.4 -[submodule "specifications/0.3"] - path = specifications/0.3 - url = https://github.com/jo-mueller/ngff-spec - branch = 0.3 + From 14c1114e15e4479f0ebdfd41d0684466a55f7b4f Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:25:40 +0100 Subject: [PATCH 26/49] tie down working directory --- conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf.py b/conf.py index 5107e6ef..0a102900 100644 --- a/conf.py +++ b/conf.py @@ -90,7 +90,9 @@ def build_served_html(): import sys import os import shutil + from pathlib import Path + os.chdir(Path(__file__).parent) versions = [d for d in os.listdir("specifications") if os.path.isdir(os.path.join("specifications", d))] for version in versions: From 3b452fb4b8211ad2f72c61673cd7fc8c3d92af45 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:25:57 +0100 Subject: [PATCH 27/49] use correct command to trigger jupyter book build --- conf.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/conf.py b/conf.py index 0a102900..5ebfb731 100644 --- a/conf.py +++ b/conf.py @@ -115,8 +115,10 @@ def build_served_html(): if os.path.exists(myst_file): cdir = os.getcwd() try: - os.chdir(os.path.dirname(myst_file)) - subprocess.check_call(['jupyter-book', 'build', '--ci', '--html']) + os.chdir(os.path.join(cdir, os.path.dirname(myst_file))) + subprocess.check_call( + [sys.executable, + '-m', 'jupyter_book', 'build', '--ci', '--html']) finally: os.chdir(cdir) print('✅ Built jupyter-book documentation for version', version) From 5a31bf6da9930d8cbf9923c412cb5089da2eb528 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:26:13 +0100 Subject: [PATCH 28/49] remove 0.6.dev2 from index --- specifications/0.6.dev2 | 1 - specifications/index.md | 1 - 2 files changed, 2 deletions(-) delete mode 160000 specifications/0.6.dev2 diff --git a/specifications/0.6.dev2 b/specifications/0.6.dev2 deleted file mode 160000 index da4606bf..00000000 --- a/specifications/0.6.dev2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit da4606bf96d2829ad74b4dbaf6de5afb6b7a595a diff --git a/specifications/index.md b/specifications/index.md index c322bbfb..4734ba89 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -10,7 +10,6 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe :caption: available specifications Dev/index.md -0.6.dev2/ngff_spec/specification.md 0.5/index.md 0.4/index.md 0.3/index.md From c68c6180b25da2978248dc1481d5886328d1cd0e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 00:03:01 +0100 Subject: [PATCH 29/49] build myst documents only when no bikeshed present --- conf.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/conf.py b/conf.py index 5ebfb731..75e4d814 100644 --- a/conf.py +++ b/conf.py @@ -112,28 +112,30 @@ def build_served_html(): # build jupyter-book docs in specification submodules myst_file = glob.glob(f'specifications/{version}/**/myst.yml', recursive=True)[0] - if os.path.exists(myst_file): - cdir = os.getcwd() - try: - os.chdir(os.path.join(cdir, os.path.dirname(myst_file))) - subprocess.check_call( - [sys.executable, - '-m', 'jupyter_book', 'build', '--ci', '--html']) - finally: - os.chdir(cdir) - print('✅ Built jupyter-book documentation for version', version) - + bikeshed_output = f'specifications/{version}/index.html' # copy built html files to _html_extra - bikeshed_output = f'specifications/{version}/index.html' try: if os.path.exists(bikeshed_output): shutil.copy2(bikeshed_output, f'_html_extra/{version}/index.html') print(f'✅ Found legacy bikeshed, serving as extra html for {version}') else: - build_dir = glob.glob(f'specifications/{version}/**/_build/html', recursive=True)[0] - shutil.copytree(build_dir, f'_html_extra/{version}', dirs_exist_ok=True) - print(f'✅ Copying jupyter-book documentation as extra html for {version}') + myst_dir = os.path.dirname(myst_file) + cmd = [sys.executable, '-m', 'jupyter_book', 'build', '--ci', '--html'] + proc = subprocess.run(cmd, cwd=myst_dir, capture_output=True, text=True) + print(f"Running: {' '.join(cmd)} in {myst_dir}") + if proc.stdout: + print(proc.stdout) + if proc.stderr: + print(proc.stderr) + proc.check_returncode() + print('✅ Built jupyter-book documentation for version', version) + + build_dirs = glob.glob(f'specifications/{version}/**/_build/html', recursive=True) + if not build_dirs: + raise FileNotFoundError(f'No build directory found for version {version}') + shutil.copytree(build_dirs[0], f'_html_extra/{version}', dirs_exist_ok=True) + print(f'✅ Copied jupyter-book documentation as extra html for {version}') except Exception as e: print(f'⚠️ Could not copy served html for version {version}: {e}') From 1f43b2bec330f067020b870af05722e6fe9efd8a Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 00:04:07 +0100 Subject: [PATCH 30/49] update submodule commit --- specifications/0.1 | 2 +- specifications/0.2 | 2 +- specifications/0.3 | 2 +- specifications/0.4 | 2 +- specifications/0.5 | 2 +- specifications/Dev | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/specifications/0.1 b/specifications/0.1 index 52db97ce..6b83fe96 160000 --- a/specifications/0.1 +++ b/specifications/0.1 @@ -1 +1 @@ -Subproject commit 52db97ceb723321e629825204e3f4da5e8fa80ae +Subproject commit 6b83fe966d7b49b1c8fb8ec773f747250c491b47 diff --git a/specifications/0.2 b/specifications/0.2 index 22152cb2..6b83fe96 160000 --- a/specifications/0.2 +++ b/specifications/0.2 @@ -1 +1 @@ -Subproject commit 22152cb2e0891d7f1d5b5f8778252e263abdf4ab +Subproject commit 6b83fe966d7b49b1c8fb8ec773f747250c491b47 diff --git a/specifications/0.3 b/specifications/0.3 index bab36099..c7b832d7 160000 --- a/specifications/0.3 +++ b/specifications/0.3 @@ -1 +1 @@ -Subproject commit bab360992236886951bc6db05e9fa928a77197ea +Subproject commit c7b832d77f2e9153458ba21482e559fb0d3259ca diff --git a/specifications/0.4 b/specifications/0.4 index ade388de..56b6de90 160000 --- a/specifications/0.4 +++ b/specifications/0.4 @@ -1 +1 @@ -Subproject commit ade388de74a906a35271b54e750b7103d655dc9c +Subproject commit 56b6de903e06da6f300b38786b6947492b00937f diff --git a/specifications/0.5 b/specifications/0.5 index 41246310..8f3e2943 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 412463103412f0a5d31d325579793185eb9030c6 +Subproject commit 8f3e29437d90e710529e69b12fbae7eea4f8827c diff --git a/specifications/Dev b/specifications/Dev index 05b8089c..e280a9a6 160000 --- a/specifications/Dev +++ b/specifications/Dev @@ -1 +1 @@ -Subproject commit 05b8089c73d67cd3daadfd6737f0ce17776504ae +Subproject commit e280a9a6c62dba84d91189035e9e6be3b544a8fb From a752372ca5a80cbf219b894b06302576407c2afa Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 00:10:03 +0100 Subject: [PATCH 31/49] update dependency path --- readthedocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs.yml b/readthedocs.yml index fee71963..c7e62bd1 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -17,4 +17,4 @@ python: install: - requirements: requirements.txt - method: pip - path: specifications/0.6.dev2 \ No newline at end of file + path: specifications/Dev \ No newline at end of file From 391c72bcc6bc18517c170561bc9c45daf662bcbd Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 11:19:11 +0100 Subject: [PATCH 32/49] Switch specifications/Dev submodule to branch generated-files-in-subdirs --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 756e1bbd..bed552b6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "Dev"] path = specifications/Dev url = https://github.com/ome/ngff-spec - branch = main + branch = generated-files-in-subdirs ; [submodule "0.6.dev2"] ; path = specifications/0.6.dev2 ; url = https://github.com/ome/ngff-spec From 727058565f63799224a4f3ff023944327c4c5a51 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 11:20:22 +0100 Subject: [PATCH 33/49] Switch specifications/Dev submodule to https://github.com/jo-mueller/ngff-spec@generated-files-in-subdirs --- .gitmodules | 2 +- specifications/Dev | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index bed552b6..276ad43c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "Dev"] path = specifications/Dev - url = https://github.com/ome/ngff-spec + url = https://github.com/jo-mueller/ngff-spec branch = generated-files-in-subdirs ; [submodule "0.6.dev2"] ; path = specifications/0.6.dev2 diff --git a/specifications/Dev b/specifications/Dev index e280a9a6..097edd04 160000 --- a/specifications/Dev +++ b/specifications/Dev @@ -1 +1 @@ -Subproject commit e280a9a6c62dba84d91189035e9e6be3b544a8fb +Subproject commit 097edd04be7e34d8684c59154bf119d0ca5fb20c From 309fc097c6e5f1766952b9564ef9cc949884de52 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 11:39:54 +0100 Subject: [PATCH 34/49] Update specifications/Dev submodule to latest generated-files-in-subdirs --- specifications/Dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/Dev b/specifications/Dev index 097edd04..c8906886 160000 --- a/specifications/Dev +++ b/specifications/Dev @@ -1 +1 @@ -Subproject commit 097edd04be7e34d8684c59154bf119d0ca5fb20c +Subproject commit c8906886278c51b5a965f3a45013eb4d076f3fbb From 9072c066598580992485b304b599d910d7aff1ca Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 29 Jan 2026 12:02:11 +0100 Subject: [PATCH 35/49] use redirects instead of page builds --- conf.py | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/conf.py b/conf.py index 75e4d814..8897bf73 100644 --- a/conf.py +++ b/conf.py @@ -45,10 +45,22 @@ ] redirects = { - "tools/index": "../resources/tools/index.html", - "publications/index": "../resources/publications/index.html", - "data/index": "../resources/data/index.html", - "about/index": "../index.html" + "tools/index": "../resources/tools/index.html", + "publications/index": "../resources/publications/index.html", + "data/index": "../resources/data/index.html", + "about/index": "../index.html", + "0.1/index": "../specifications/0.1/index.html", + "0.1/": "../specifications/0.1/index.html", + "0.2/index": "../specifications/0.2/index.html", + "0.2/": "../specifications/0.2/index.html", + "0.3/index": "../specifications/0.3/index.html", + "0.3/": "../specifications/0.3/index.html", + "0.4/index": "../specifications/0.4/index.html", + "0.4/": "../specifications/0.4/index.html", + "0.5/index": "../specifications/0.5/index.html", + "0.5/": "../specifications/0.5/index.html", + "Dev/index": "../specifications/Dev/index.html", + "Dev/": "../specifications/Dev/index.html" } # -- Options for HTML output ------------------------------------------------- @@ -119,23 +131,6 @@ def build_served_html(): if os.path.exists(bikeshed_output): shutil.copy2(bikeshed_output, f'_html_extra/{version}/index.html') print(f'✅ Found legacy bikeshed, serving as extra html for {version}') - else: - myst_dir = os.path.dirname(myst_file) - cmd = [sys.executable, '-m', 'jupyter_book', 'build', '--ci', '--html'] - proc = subprocess.run(cmd, cwd=myst_dir, capture_output=True, text=True) - print(f"Running: {' '.join(cmd)} in {myst_dir}") - if proc.stdout: - print(proc.stdout) - if proc.stderr: - print(proc.stderr) - proc.check_returncode() - print('✅ Built jupyter-book documentation for version', version) - - build_dirs = glob.glob(f'specifications/{version}/**/_build/html', recursive=True) - if not build_dirs: - raise FileNotFoundError(f'No build directory found for version {version}') - shutil.copytree(build_dirs[0], f'_html_extra/{version}', dirs_exist_ok=True) - print(f'✅ Copied jupyter-book documentation as extra html for {version}') except Exception as e: print(f'⚠️ Could not copy served html for version {version}: {e}') From 69e5f48e240e0d933e65ae7f9c4c200e2cc22d1d Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 30 Jan 2026 14:51:31 +0100 Subject: [PATCH 36/49] update checked out commit --- specifications/0.1 | 2 +- specifications/0.2 | 2 +- specifications/0.3 | 2 +- specifications/0.4 | 2 +- specifications/0.5 | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/specifications/0.1 b/specifications/0.1 index 6b83fe96..bdbf2c39 160000 --- a/specifications/0.1 +++ b/specifications/0.1 @@ -1 +1 @@ -Subproject commit 6b83fe966d7b49b1c8fb8ec773f747250c491b47 +Subproject commit bdbf2c39c6665ce24aa487160f4f4b3bdebb93d8 diff --git a/specifications/0.2 b/specifications/0.2 index 6b83fe96..695973a4 160000 --- a/specifications/0.2 +++ b/specifications/0.2 @@ -1 +1 @@ -Subproject commit 6b83fe966d7b49b1c8fb8ec773f747250c491b47 +Subproject commit 695973a402e1a926a7e0a7f47bf21b793d57b5ad diff --git a/specifications/0.3 b/specifications/0.3 index c7b832d7..5c9f279a 160000 --- a/specifications/0.3 +++ b/specifications/0.3 @@ -1 +1 @@ -Subproject commit c7b832d77f2e9153458ba21482e559fb0d3259ca +Subproject commit 5c9f279a1ab48030ed94dea40ba4a45c4e3cb1bf diff --git a/specifications/0.4 b/specifications/0.4 index 56b6de90..41462d7e 160000 --- a/specifications/0.4 +++ b/specifications/0.4 @@ -1 +1 @@ -Subproject commit 56b6de903e06da6f300b38786b6947492b00937f +Subproject commit 41462d7e4f6212a94d723cff07039ad84b663a29 diff --git a/specifications/0.5 b/specifications/0.5 index 8f3e2943..678d97f3 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 8f3e29437d90e710529e69b12fbae7eea4f8827c +Subproject commit 678d97f3aa9210011d9ade0013197cceb2bb1688 From 3f501d87b855d26fc63d5e7b6fea564a6e943813 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:11:51 +0100 Subject: [PATCH 37/49] Add specifications/latest submodule (branch 0.5) --- .gitmodules | 9 +++++++++ specifications/latest | 1 + 2 files changed, 10 insertions(+) create mode 160000 specifications/latest diff --git a/.gitmodules b/.gitmodules index 276ad43c..ef370990 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,6 +10,11 @@ path = specifications/0.5 url = https://github.com/jo-mueller/ngff-spec branch = 0.5 + +[submodule "latest"] + path = specifications/latest + url = https://github.com/jo-mueller/ngff-spec + branch = 0.5 [submodule "0.4"] path = specifications/0.4 url = https://github.com/jo-mueller/ngff-spec @@ -27,3 +32,7 @@ url = https://github.com/jo-mueller/ngff-spec branch = 0.1 +[submodule "specifications/latest"] + path = specifications/latest + url = https://github.com/jo-mueller/ngff-spec + branch = 0.5 diff --git a/specifications/latest b/specifications/latest new file mode 160000 index 00000000..acb23fba --- /dev/null +++ b/specifications/latest @@ -0,0 +1 @@ +Subproject commit acb23fbac1d937b944932b7a46bc30817ace9819 From 4b73c85ab974291db3405924df7468facdb95831 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:13:13 +0100 Subject: [PATCH 38/49] Rename Dev submodule to dev (lowercase) --- .gitmodules | 8 ++------ specifications/{Dev => dev} | 0 2 files changed, 2 insertions(+), 6 deletions(-) rename specifications/{Dev => dev} (100%) diff --git a/.gitmodules b/.gitmodules index ef370990..4da9b142 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ -[submodule "Dev"] - path = specifications/Dev +[submodule "dev"] + path = specifications/dev url = https://github.com/jo-mueller/ngff-spec branch = generated-files-in-subdirs ; [submodule "0.6.dev2"] @@ -32,7 +32,3 @@ url = https://github.com/jo-mueller/ngff-spec branch = 0.1 -[submodule "specifications/latest"] - path = specifications/latest - url = https://github.com/jo-mueller/ngff-spec - branch = 0.5 diff --git a/specifications/Dev b/specifications/dev similarity index 100% rename from specifications/Dev rename to specifications/dev From 12d06f8d784d89e84b5b8f1197a8416817a55d9e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:14:18 +0100 Subject: [PATCH 39/49] updated submodules --- specifications/0.1 | 2 +- specifications/0.2 | 2 +- specifications/0.3 | 2 +- specifications/0.4 | 2 +- specifications/0.5 | 2 +- specifications/dev | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/specifications/0.1 b/specifications/0.1 index bdbf2c39..4affd105 160000 --- a/specifications/0.1 +++ b/specifications/0.1 @@ -1 +1 @@ -Subproject commit bdbf2c39c6665ce24aa487160f4f4b3bdebb93d8 +Subproject commit 4affd105cc2ef4ef3ecd299763866db2297ec6e5 diff --git a/specifications/0.2 b/specifications/0.2 index 695973a4..8eb58c16 160000 --- a/specifications/0.2 +++ b/specifications/0.2 @@ -1 +1 @@ -Subproject commit 695973a402e1a926a7e0a7f47bf21b793d57b5ad +Subproject commit 8eb58c1665156fe20cc7f1323d0e0e782711b64f diff --git a/specifications/0.3 b/specifications/0.3 index 5c9f279a..4a7efee6 160000 --- a/specifications/0.3 +++ b/specifications/0.3 @@ -1 +1 @@ -Subproject commit 5c9f279a1ab48030ed94dea40ba4a45c4e3cb1bf +Subproject commit 4a7efee679a761ba8b8123dc11d9da537ae81541 diff --git a/specifications/0.4 b/specifications/0.4 index 41462d7e..fd39e070 160000 --- a/specifications/0.4 +++ b/specifications/0.4 @@ -1 +1 @@ -Subproject commit 41462d7e4f6212a94d723cff07039ad84b663a29 +Subproject commit fd39e0708b0b99dcc3c8fb0c277ead06a413282d diff --git a/specifications/0.5 b/specifications/0.5 index 678d97f3..acb23fba 160000 --- a/specifications/0.5 +++ b/specifications/0.5 @@ -1 +1 @@ -Subproject commit 678d97f3aa9210011d9ade0013197cceb2bb1688 +Subproject commit acb23fbac1d937b944932b7a46bc30817ace9819 diff --git a/specifications/dev b/specifications/dev index c8906886..ca1ec34f 160000 --- a/specifications/dev +++ b/specifications/dev @@ -1 +1 @@ -Subproject commit c8906886278c51b5a965f3a45013eb4d076f3fbb +Subproject commit ca1ec34fef90740b5ffc621c9802a5095ddb066c From 950549175f3500821c078ffd4741b34fd5f3cbd2 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:15:34 +0100 Subject: [PATCH 40/49] update toctree --- specifications/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specifications/index.md b/specifications/index.md index 4734ba89..3e09ed2f 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -9,7 +9,8 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe :maxdepth: 1 :caption: available specifications -Dev/index.md +dev/index.md +latest/index.md 0.5/index.md 0.4/index.md 0.3/index.md From 98bd5b429e2b3a85f4ccfb292350369d2ebb8dde Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:16:41 +0100 Subject: [PATCH 41/49] install deps from correct location --- readthedocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs.yml b/readthedocs.yml index c7e62bd1..d73b0d3b 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -17,4 +17,4 @@ python: install: - requirements: requirements.txt - method: pip - path: specifications/Dev \ No newline at end of file + path: specifications/dev \ No newline at end of file From 93ce6679132273e8f43b9de139f659fcdb35a73e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:21:17 +0100 Subject: [PATCH 42/49] add redirect from latest to 0.5 --- conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf.py b/conf.py index 8897bf73..eecc52a9 100644 --- a/conf.py +++ b/conf.py @@ -59,6 +59,8 @@ "0.4/": "../specifications/0.4/index.html", "0.5/index": "../specifications/0.5/index.html", "0.5/": "../specifications/0.5/index.html", + "latest/index": "../specifications/0.5/index.html", + "latest/": "../specifications/0.5/index.html", "Dev/index": "../specifications/Dev/index.html", "Dev/": "../specifications/Dev/index.html" } From efe5d7c0d15fe257ce6d08e24fc8352d268ba01d Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Feb 2026 09:52:40 +0100 Subject: [PATCH 43/49] updated redirects so that old bs files are still discoverable --- conf.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/conf.py b/conf.py index eecc52a9..29fcaf35 100644 --- a/conf.py +++ b/conf.py @@ -49,20 +49,15 @@ "publications/index": "../resources/publications/index.html", "data/index": "../resources/data/index.html", "about/index": "../index.html", - "0.1/index": "../specifications/0.1/index.html", "0.1/": "../specifications/0.1/index.html", - "0.2/index": "../specifications/0.2/index.html", "0.2/": "../specifications/0.2/index.html", - "0.3/index": "../specifications/0.3/index.html", "0.3/": "../specifications/0.3/index.html", - "0.4/index": "../specifications/0.4/index.html", "0.4/": "../specifications/0.4/index.html", - "0.5/index": "../specifications/0.5/index.html", "0.5/": "../specifications/0.5/index.html", "latest/index": "../specifications/0.5/index.html", "latest/": "../specifications/0.5/index.html", - "Dev/index": "../specifications/Dev/index.html", - "Dev/": "../specifications/Dev/index.html" + "dev/index": "../specifications/dev/index.html", + "dev/": "../specifications/dev/index.html" } # -- Options for HTML output ------------------------------------------------- From 5ca3bbc92e7a8adb66fccdacdeba84acfa328e72 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:50:19 +0100 Subject: [PATCH 44/49] remove latest submodule --- .gitmodules | 4 ---- specifications/latest | 1 - 2 files changed, 5 deletions(-) delete mode 160000 specifications/latest diff --git a/.gitmodules b/.gitmodules index 4da9b142..3495e344 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,10 +11,6 @@ url = https://github.com/jo-mueller/ngff-spec branch = 0.5 -[submodule "latest"] - path = specifications/latest - url = https://github.com/jo-mueller/ngff-spec - branch = 0.5 [submodule "0.4"] path = specifications/0.4 url = https://github.com/jo-mueller/ngff-spec diff --git a/specifications/latest b/specifications/latest deleted file mode 160000 index acb23fba..00000000 --- a/specifications/latest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit acb23fbac1d937b944932b7a46bc30817ace9819 From 635bc96f6e4902b59dd95aa21ad06483c1734900 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:53:24 +0100 Subject: [PATCH 45/49] remove latest from section navigation --- specifications/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/specifications/index.md b/specifications/index.md index 3e09ed2f..4b228c14 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -10,7 +10,6 @@ The current released version of the OME-Zarr specification is [0.5](0.5/ngff_spe :caption: available specifications dev/index.md -latest/index.md 0.5/index.md 0.4/index.md 0.3/index.md From 805310ff3f54280cf94af405a9e8ea852913dd8d Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:55:27 +0100 Subject: [PATCH 46/49] Update submodule URLs and branches --- .gitmodules | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitmodules b/.gitmodules index 3495e344..b0df15ce 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,30 +1,30 @@ [submodule "dev"] path = specifications/dev - url = https://github.com/jo-mueller/ngff-spec - branch = generated-files-in-subdirs + url = https://github.com/ome/ngff-spec + branch = main ; [submodule "0.6.dev2"] ; path = specifications/0.6.dev2 ; url = https://github.com/ome/ngff-spec ; branch = 0.6.dev2 [submodule "0.5"] path = specifications/0.5 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.5 [submodule "0.4"] path = specifications/0.4 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.4 [submodule "0.3"] path = specifications/0.3 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.3 [submodule "specifications/0.2"] path = specifications/0.2 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.2 [submodule "specifications/0.1"] path = specifications/0.1 - url = https://github.com/jo-mueller/ngff-spec + url = https://github.com/ome/ngff-spec branch = 0.1 From 1c8a816a5c634bbf0d56260a9c77072238d3b795 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:55:41 +0100 Subject: [PATCH 47/49] update submodules --- specifications/dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/dev b/specifications/dev index ca1ec34f..e280a9a6 160000 --- a/specifications/dev +++ b/specifications/dev @@ -1 +1 @@ -Subproject commit ca1ec34fef90740b5ffc621c9802a5095ddb066c +Subproject commit e280a9a6c62dba84d91189035e9e6be3b544a8fb From 35da6790fb08b69dbbd3e9f4a75850191b4a7319 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:21:57 +0100 Subject: [PATCH 48/49] bump commit --- specifications/dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/dev b/specifications/dev index e280a9a6..f7da49b3 160000 --- a/specifications/dev +++ b/specifications/dev @@ -1 +1 @@ -Subproject commit e280a9a6c62dba84d91189035e9e6be3b544a8fb +Subproject commit f7da49b3dd4f89b9019cde7bb8911ac97bb4933e From dece0aedc5a380078fb153eb86d9b470a3a46d0a Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 12 Feb 2026 17:27:10 +0100 Subject: [PATCH 49/49] feat: add dependabot for spec dev head --- .github/workflows/dependabot.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/workflows/dependabot.yml diff --git a/.github/workflows/dependabot.yml b/.github/workflows/dependabot.yml new file mode 100644 index 00000000..9acee99b --- /dev/null +++ b/.github/workflows/dependabot.yml @@ -0,0 +1,9 @@ +version: 2 +updates: + - package-ecosystem: "gitsubmodule" + directory: "/specifications/dev" + schedule: + interval: "daily" + open-pull-requests-limit: 10 + commit-message: + prefix: "chore(deps): "