Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
4187ccf
Update dependencies and improve documentation
jcwang587 Sep 12, 2026
b5cb933
Refactor documentation and update navigation structure
jcwang587 Sep 12, 2026
a0fd7aa
Update README for clarity and quick start instructions
jcwang587 Sep 12, 2026
3cc166f
Enhance README with additional quick start examples for Rust and Node.js
jcwang587 Sep 12, 2026
4387193
Remove outdated installation instructions for Python, Rust, and Node.…
jcwang587 Sep 12, 2026
77fb898
Remove license section from README.md to streamline content and focus…
jcwang587 Sep 12, 2026
3cea35d
Update format documentation in README.md and formats.md for clarity a…
jcwang587 Sep 12, 2026
4ab1c07
Refactor GitHub Actions workflows and update Node.js API
jcwang587 Sep 12, 2026
2c84868
Update geddes and geddes-node versions to 1.0.0
jcwang587 Sep 12, 2026
9d19032
Merge main into dev and resolve release workflow conflicts
jcwang587 Sep 12, 2026
3d20053
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 12, 2026
aa82892
Preserve imported fixture bytes during formatting
jcwang587 Sep 12, 2026
4a6be03
Fix descending UXD scans and benchmark documentation
jcwang587 Sep 12, 2026
8bde954
Add documentation links to project files
jcwang587 Sep 12, 2026
3433cd8
Fix format detection, CIF axes, and XML attribute decoding
jcwang587 Sep 12, 2026
1bf16db
Rename pattern selection option from scan to index
jcwang587 Sep 12, 2026
da81a36
Update format documentation in README.md and formats.md for clarity a…
jcwang587 Sep 12, 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
119 changes: 119 additions & 0 deletions .github/workflows/check-node.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Check Node packages

on:
workflow_call:

permissions:
contents: read

jobs:
version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.12"
- run: python tests/check_release_version.py

build:
needs: version
runs-on: ${{ matrix.host }}
strategy:
fail-fast: false
matrix:
include:
- host: windows-latest
target: x86_64-pc-windows-msvc
flags: ""
- host: windows-11-arm
target: aarch64-pc-windows-msvc
flags: ""
- host: macos-15-intel
target: x86_64-apple-darwin
flags: ""
- host: macos-latest
target: aarch64-apple-darwin
flags: ""
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
flags: --use-napi-cross
- host: ubuntu-latest
target: aarch64-unknown-linux-gnu
flags: --use-napi-cross
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: "24"
cache: npm
cache-dependency-path: node/package-lock.json
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- run: npm ci
working-directory: node
- name: Build native binding and loader
working-directory: node
run: npm run build -- --target ${{ matrix.target }} ${{ matrix.flags }} -- --locked
- uses: actions/upload-artifact@v7
with:
name: bindings-${{ matrix.target }}
path: |
node/geddes.*.node
node/index.js
node/index.d.ts
if-no-files-found: error

pack:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: "24"
cache: npm
cache-dependency-path: node/package-lock.json
- run: npm ci
working-directory: node
- uses: actions/download-artifact@v8
with:
pattern: bindings-*
path: node/artifacts
- name: Pack the JS package and all native packages
working-directory: node
run: npm run pack:release -- artifacts packages
- uses: actions/upload-artifact@v7
with:
name: node-packages
path: node/packages/*
if-no-files-found: error

install-test:
needs: pack
runs-on: ${{ matrix.host }}
strategy:
fail-fast: false
matrix:
host: [ubuntu-latest, ubuntu-24.04-arm, macos-15-intel, macos-latest, windows-latest, windows-11-arm]
node-version: ["16", "24"]
exclude:
- host: windows-11-arm
node-version: "16"
include:
# Node 16 has no Windows ARM64 distribution.
- host: windows-11-arm
node-version: "20"
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node-version }}
- uses: actions/download-artifact@v8
with:
name: node-packages
path: node/packages
- name: Install tarballs and test the public loader
working-directory: node
run: npm run check:package -- packages
23 changes: 23 additions & 0 deletions .github/workflows/check-packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Check packages

on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
workflow_dispatch:
workflow_call:

permissions:
contents: read

jobs:
rust:
name: Check Rust distribution
uses: ./.github/workflows/check-rust.yml
python:
name: Check Python distributions
uses: ./.github/workflows/check-python.yml
node:
name: Check Node distributions
uses: ./.github/workflows/check-node.yml
82 changes: 82 additions & 0 deletions .github/workflows/check-python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: check Python packages

on:
workflow_call:

permissions:
contents: read

jobs:
version:
name: Package version agreement
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Check package and tag versions
run: python tests/check_release_version.py

wheels:
name: Wheel / ${{ matrix.os }} / Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
needs: version
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
- name: Build manylinux wheel
if: matrix.os == 'ubuntu-latest'
uses: PyO3/maturin-action@v1
with:
command: build
args: --release --locked --out dist -i python${{ matrix.python-version }}
manylinux: auto
- name: Build wheel
if: matrix.os != 'ubuntu-latest'
uses: PyO3/maturin-action@v1
with:
command: build
args: --release --locked --out dist -i python
- name: Install and test the built wheel
run: python tests/check_python_package.py --dist-dir dist --kind wheel
- name: Upload checked wheel
uses: actions/upload-artifact@v7
with:
name: checked-python-wheel-${{ matrix.os }}-${{ matrix.python-version }}
path: dist/*.whl
if-no-files-found: error

sdist:
name: Source distribution / Python 3.12
runs-on: ubuntu-latest
needs: version
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Build source distribution
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Build, install, and test the source distribution
run: python tests/check_python_package.py --dist-dir dist --kind sdist
- name: Upload checked source distribution
uses: actions/upload-artifact@v7
with:
name: checked-python-sdist
path: dist/*.tar.gz
if-no-files-found: error
42 changes: 42 additions & 0 deletions .github/workflows/check-rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Check Rust package

on:
workflow_dispatch:
workflow_call:

permissions:
contents: read

jobs:
checked-crate:
name: Rust crate (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- uses: dtolnay/rust-toolchain@stable
- name: Check package versions and tag
id: version
run: python tests/check_release_version.py
- name: Test release version validation
run: python -m unittest discover -s tests -p release_version_cases.py
- name: Test repository sources
run: cargo test --locked
- name: Package and verify the distributable crate
run: cargo package --locked
- name: Test the unpacked distributable crate
working-directory: target/package/geddes-${{ steps.version.outputs.version }}
run: cargo test --locked
- name: Retain the checked crate
uses: actions/upload-artifact@v7
with:
name: checked-rust-crate-${{ matrix.os }}
path: target/package/*.crate
if-no-files-found: error
retention-days: 7
62 changes: 62 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Documentation

on:
push:
branches: [main]
paths:
- "docs/**"
- "overrides/**"
- "zensical.toml"
- "requirements-docs.txt"
- ".github/workflows/docs.yml"
pull_request:
branches: [main]
paths:
- "docs/**"
- "overrides/**"
- "zensical.toml"
- "requirements-docs.txt"
- ".github/workflows/docs.yml"
workflow_dispatch:

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: requirements-docs.txt
- name: Install documentation dependencies
run: python -m pip install -r requirements-docs.txt
- name: Build documentation
run: zensical build --clean --strict
- name: Upload generated site
uses: actions/upload-pages-artifact@v5
with:
path: site/

deploy:
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
concurrency:
group: github-pages
cancel-in-progress: false
steps:
- name: Configure GitHub Pages
uses: actions/configure-pages@v6
- name: Deploy documentation
id: deployment
uses: actions/deploy-pages@v5
Loading
Loading