Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
456dbb7
feat: stream large files with current ant-client core
mickvandijke Oct 15, 2026
4f678c9
docs: record large-file browser and release validation
mickvandijke Oct 15, 2026
461dc2f
feat: add recoverable pointers, manifest exports and streaming saves
mickvandijke Oct 15, 2026
0d1aa55
docs: record pointer, manifest and streaming-save validation
mickvandijke Oct 15, 2026
d84ec49
docs: confirm browser validation against committed SDK
mickvandijke Oct 15, 2026
a4b6a53
fix: harden pointer recovery, streaming saves and client shutdown
mickvandijke Oct 15, 2026
ff2136b
fix: adopt ant-client #230 pointer options and keyed recovery receipts
mickvandijke Oct 15, 2026
12957cd
fix: adopt ant-client #230 bab6beb checkpoint layout and receipts
mickvandijke Oct 19, 2026
b69bbbb
fix: adopt ant-client #230 4d27758 pointer write errors
mickvandijke Oct 19, 2026
b44ebfb
feat: adopt ant-client #230 404fa34 and surface manifest sha256
mickvandijke Oct 19, 2026
317a634
feat: check manifest sha256 on download and make wallets wait for jou…
mickvandijke Oct 19, 2026
65a8ce0
docs: record the 2026-10-20 real-browser devnet run
mickvandijke Oct 22, 2026
84eace2
build: rebuild the WASM from ant-client main 8b19c14
mickvandijke Oct 22, 2026
8c00e82
chore: release 0.1.3
mickvandijke Oct 22, 2026
56f4f6d
build: rebuild the WASM from ant-client main ccd4106
mickvandijke Oct 26, 2026
7b5568a
perf(media): start playback sooner and keep Firefox's worker running
mickvandijke Oct 22, 2026
f177ff4
docs: record the media first-frame measurements
mickvandijke Oct 22, 2026
d06c176
docs: report every media first-frame batch, and no seek difference
mickvandijke Oct 26, 2026
637eba0
docs: compare the SDK's streaming start with try.autonomi.com's player
mickvandijke Oct 26, 2026
bb38da8
ci: release when a new package.json version is merged to main
mickvandijke Oct 26, 2026
3e6daec
fix(save): leave the picked file in place after a failed save
mickvandijke Oct 26, 2026
084e0b9
test: check for a wallet call only once a paused pointer write resumes
mickvandijke Oct 26, 2026
6c2f7ef
fix(pointers): copy the owner seed before zeroing it
mickvandijke Oct 26, 2026
802db87
ci: never publish from a manual release run
mickvandijke Oct 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
102 changes: 45 additions & 57 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
name: Release

# Pushing a `v<package.json version>` tag on main publishes that version to npm.
# Running the workflow manually performs every release check and packs the tarball
# without publishing it.
# Merging a change to main that sets an untagged `package.json` version publishes
# that version to npm and tags the merge commit `v<version>`; pushes to main whose
# version is already tagged release nothing. Pushing a `v<version>` tag on main
# publishes that version too. Running the workflow manually, on a branch or a tag,
# performs every release check and packs the tarball without publishing it.
# scripts/release-decision.sh decides which of these a run is.
on:
push:
branches:
- main
tags:
- "v*"
workflow_dispatch:
Expand All @@ -17,13 +22,29 @@ concurrency:
cancel-in-progress: false

jobs:
package:
name: Verify and pack
decide:
name: Determine the release
runs-on: ubuntu-latest
outputs:
name: ${{ steps.meta.outputs.name }}
version: ${{ steps.meta.outputs.version }}
tag: ${{ steps.meta.outputs.tag }}
dist_tag: ${{ steps.meta.outputs.dist_tag }}
publish: ${{ steps.meta.outputs.publish }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Determine version and dist-tag
id: meta
run: bash scripts/release-decision.sh
package:
name: Verify and pack
needs: decide
if: needs.decide.outputs.publish == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
outputs:
tarball: ${{ steps.pack.outputs.tarball }}
steps:
- uses: actions/checkout@v4
Expand All @@ -34,48 +55,6 @@ jobs:
node-version: 22
cache: npm

- name: Determine version and dist-tag
id: meta
shell: bash
run: |
name="$(node -p 'require("./package.json").name')"
version="$(node -p 'require("./package.json").version')"

if [ "$GITHUB_REF_TYPE" = "tag" ]; then
if [ "$GITHUB_REF_NAME" != "v${version}" ]; then
echo "::error title=Tag does not match package.json::Tag ${GITHUB_REF_NAME} does not match package.json version ${version}. Tag the release as v${version}."
exit 1
fi
if ! git merge-base --is-ancestor "$GITHUB_SHA" origin/main; then
echo "::error title=Tag is not on main::${GITHUB_REF_NAME} points at ${GITHUB_SHA}, which is not on main."
exit 1
fi
fi

# Same dist-tag policy as @withautonomi/ant: the first dot-separated pre-release
# identifier decides, and an unrecognised one fails rather than moving `latest`.
pre=""
if [ "$version" != "${version%%-*}" ]; then
pre="${version#*-}"
fi
if [ -z "$pre" ]; then
dist_tag="latest"
else
case "${pre%%.*}" in
beta) dist_tag="beta" ;;
rc) dist_tag="rc" ;;
*)
echo "::error title=Unrecognised pre-release::Version ${version} has pre-release identifier '${pre%%.*}', which maps to no npm dist-tag."
exit 1
;;
esac
fi

echo "name=${name}" >> "$GITHUB_OUTPUT"
echo "version=${version}" >> "$GITHUB_OUTPUT"
echo "dist_tag=${dist_tag}" >> "$GITHUB_OUTPUT"
echo "Releasing ${name}@${version} to dist-tag ${dist_tag}"

- run: npm ci

# The published WASM must be a clean build of a commit on ant-client main.
Expand Down Expand Up @@ -112,19 +91,21 @@ jobs:

publish:
name: Publish to npm
needs: package
if: github.event_name == 'push'
needs: [decide, package]
# The decision publishes only for a push; checked here too, since a manual run must never publish.
if: github.event_name == 'push' && needs.decide.outputs.publish == 'true'
runs-on: ubuntu-latest
environment: npm
permissions:
# Create the GitHub release.
# Create the GitHub release, and its tag after a merge to main.
contents: write
# npm provenance and trusted publishing exchange this token with the registry.
id-token: write
env:
NAME: ${{ needs.package.outputs.name }}
VERSION: ${{ needs.package.outputs.version }}
DIST_TAG: ${{ needs.package.outputs.dist_tag }}
NAME: ${{ needs.decide.outputs.name }}
VERSION: ${{ needs.decide.outputs.version }}
TAG: ${{ needs.decide.outputs.tag }}
DIST_TAG: ${{ needs.decide.outputs.dist_tag }}
TARBALL_NAME: ${{ needs.package.outputs.tarball }}
steps:
- uses: actions/download-artifact@v4
Expand Down Expand Up @@ -180,17 +161,24 @@ jobs:
shell: bash
run: |
set -euo pipefail
if gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
echo "::notice title=Release exists::GitHub release ${GITHUB_REF_NAME} already exists; skipping."
if gh release view "$TAG" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
echo "::notice title=Release exists::GitHub release ${TAG} already exists; skipping."
exit 0
fi
prerelease=()
if [ "$DIST_TAG" != "latest" ]; then
prerelease=(--prerelease)
fi
gh release create "$GITHUB_REF_NAME" "$RUNNER_TEMP/package/$TARBALL_NAME" \
# A pushed tag already exists; after a merge, the release creates the tag
# on the merge commit. Tags made with this token start no other workflow.
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
target=(--verify-tag)
else
target=(--target "$GITHUB_SHA")
fi
gh release create "$TAG" "$RUNNER_TEMP/package/$TARBALL_NAME" \
--repo "$GITHUB_REPOSITORY" \
--verify-tag \
"${target[@]}" \
--generate-notes \
"${prerelease[@]}"

Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ binary and notices checksums. Run
`npm run build:examples` and `npm pack --dry-run` to check the shipped assets, and
`npm run verify:wasm` to check the WASM release requirements.

Maintainers release by pushing a `v<version>` tag on main; see "Releasing to npm"
in the [README](README.md#releasing-to-npm).
Maintainers release by merging a change that sets a new `package.json` version to
main; see "Releasing to npm" in the [README](README.md#releasing-to-npm).

## Architecture decisions

Expand Down
Loading
Loading