Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6a664a0
feat: add 0.5.0 TypeScript APIs
steipete Jul 25, 2026
89aae03
feat(native): add napi filesystem primitives
steipete Jul 25, 2026
c629b66
feat(native): prefer native guarded operations
steipete Jul 25, 2026
eede682
build(release): unify native package pipeline
steipete Jul 25, 2026
16fe233
fix(ci): align native and fallback validation
steipete Jul 25, 2026
026ba94
fix(native): handle platform syscall contracts
steipete Jul 25, 2026
973f683
test(native): add cross-platform host smoke
steipete Jul 25, 2026
971d36e
fix(native): duplicate Linux root descriptors
steipete Jul 25, 2026
3d19bb3
fix(native): validate Linux directory opens
steipete Jul 25, 2026
c219ed9
fix(native): create Windows directories with write access
steipete Jul 25, 2026
47049aa
fix(native): share Windows CRT descriptors
steipete Jul 25, 2026
31c833e
fix(native): resolve Windows libuv descriptors
steipete Jul 25, 2026
1e58cef
fix(native): return Windows libuv descriptors
steipete Jul 25, 2026
5a2e21d
fix(native): use handle-relative Windows rename
steipete Jul 25, 2026
c0b8fcc
ci: cover native host paths
steipete Jul 25, 2026
61f1686
test(native): cover mode aliases
steipete Jul 25, 2026
b3a6905
fix(native): harden loader migration and release proof
steipete Jul 25, 2026
66b72d3
feat(archive): add native fd-relative extraction
steipete Jul 25, 2026
1968a38
perf(durability): add native publication fast paths
steipete Jul 25, 2026
f8f480d
feat(permissions): add native Windows security APIs
steipete Jul 25, 2026
e5f5dbd
fix(permissions): preserve Windows ACL trust boundary
steipete Jul 25, 2026
50dc0e2
ci: expand native platform proof
steipete Jul 25, 2026
e83734a
test(native): keep fallback proof within CI budget
steipete Jul 25, 2026
88b1cbb
ci: build package before native smoke
steipete Jul 25, 2026
e96b94d
fix(native): preserve Windows handle semantics
steipete Jul 25, 2026
3dcea5c
test(coverage): exercise native and fallback archive paths
steipete Jul 25, 2026
e3f91c5
test(coverage): add archive fallback margin
steipete Jul 25, 2026
de5404e
fix(permissions): keep private directory API Windows-only
steipete Jul 25, 2026
434f969
fix(release): close final native safety gaps
steipete Jul 25, 2026
923b881
fix(release): close OpenClaw adoption gaps
steipete Jul 25, 2026
e28d3ce
feat(durability): add sync failure preservation
steipete Jul 26, 2026
294b4ee
docs: complete the 0.5 migration guide
steipete Jul 26, 2026
7442f9c
test(durability): cover sync identity drift portably
steipete Jul 26, 2026
cfbe661
feat(security): close final 0.5 API gaps
steipete Jul 26, 2026
3f77406
feat(permissions): expose current process SID
steipete Jul 26, 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
145 changes: 145 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,148 @@ jobs:

- name: Check
run: pnpm check

native-check:
name: Native check (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-15
- windows-latest
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Set up pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
with:
version: 10.34.5
run_install: false

- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Test native crate
run: cargo test --workspace --locked

- name: Build host binding
run: pnpm native:build

- name: Build package
run: pnpm build

- name: Test native mode auto
run: node scripts/native-mode-smoke.mjs auto

- name: Test native mode require
run: node scripts/native-mode-smoke.mjs require

- name: Test native mode off
run: node scripts/native-mode-smoke.mjs off

- name: Test native security and path equivalence
run: pnpm test test/native-integration.test.ts test/native-archive-equivalence.test.ts test/native-publish-equivalence.test.ts test/private-directory.test.ts

native-musl:
name: Native check (linux-x64-musl)
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Build and test in Alpine
run: |
docker run --rm -v "$GITHUB_WORKSPACE:/work" -w /work node:24-alpine sh -euxc '
apk add --no-cache cargo rust musl-dev build-base python3
npm install --global pnpm@10.34.5
pnpm install --frozen-lockfile
cargo test --workspace --locked
pnpm native:build
pnpm build
node scripts/native-mode-smoke.mjs auto
node scripts/native-mode-smoke.mjs require
node scripts/native-mode-smoke.mjs off
pnpm test test/native-archive-equivalence.test.ts test/native-publish-equivalence.test.ts
'

cargo-quality:
name: Cargo clippy and audit
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Cache Cargo
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-quality-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}

- name: Clippy
run: cargo clippy --workspace --locked -- -D warnings

- name: Install cargo-audit
run: cargo install cargo-audit --version 0.22.2 --locked

- name: Audit
run: cargo audit --deny warnings

release-graph-smoke:
name: Release graph smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-15
- windows-latest
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Set up pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
with:
version: 10.34.5
run_install: false

- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build host binding
run: pnpm native:build

- name: Pack and smoke test release graph
run: pnpm release-graph:smoke

- name: Upload behavior proof
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: release-graph-proof-${{ runner.os }}-${{ runner.arch }}
path: release-graph-proof.json
if-no-files-found: error
3 changes: 3 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build host binding
run: pnpm native:build

- name: Coverage
run: pnpm test:coverage

Expand Down
Loading
Loading