Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
c659dbe
✨ add snapshot() for pre-packing directive subtrees
cowboyd Apr 17, 2026
a44b553
docs: add maintainer build guide
rauhryan May 9, 2026
264616b
💄 format build docs
rauhryan May 9, 2026
a62376d
🐛 improve pack string overflow errors
rauhryan May 10, 2026
d5e173d
Merge pull request #28 from thefrontside/docs/build-from-source
cowboyd May 15, 2026
427deb4
os matrix test in ci (#36)
jbolda May 23, 2026
982ced5
🧼 optimize build
natemoo-re May 23, 2026
c14f591
🧼 compress bundled wasm
natemoo-re May 23, 2026
82c9050
🧼 optimize wcwidth.c size
natemoo-re May 23, 2026
f8c5c1b
⚙️ update npm settings
natemoo-re May 23, 2026
1ec215b
🐛 install wasm-opt in ci
natemoo-re May 23, 2026
c6527e2
⚡ use brotli-11 + z85 wasm encoding
natemoo-re May 23, 2026
f470b1f
📌 pin @types/node to v22
natemoo-re May 23, 2026
db90740
🧼 apply @ghostdevv review suggestions from PR #35
natemoo-re May 23, 2026
1ea98a5
🔨 add type to bundle-wasm
natemoo-re May 24, 2026
3437804
💌 signed, sealed, delivered
natemoo-re May 24, 2026
aa2ebb9
chore: use hashes for versions
ghostdevv May 23, 2026
f68b862
chore: don't save git credentials
ghostdevv May 23, 2026
ffcf0d8
chore: use array syntax
ghostdevv May 23, 2026
e289429
perf: set concurrency limits to reduce cost and improve dx
ghostdevv May 23, 2026
a07c519
chore: use hashes for versions
ghostdevv May 23, 2026
ab8d05c
chore: update node version
ghostdevv May 23, 2026
3f9039e
perf: set concurrency limits to reduce cost and improve dx
ghostdevv May 23, 2026
dd3dd92
chore: don't save git credentials
ghostdevv May 23, 2026
d35706f
chore: mitigate potential template injection
ghostdevv May 23, 2026
6decb0e
chore: update ::set-output command to new syntax
ghostdevv May 23, 2026
5ccbffd
chore: use hashes for versions
ghostdevv May 23, 2026
822b00e
chore: don't save git credentials
ghostdevv May 23, 2026
851de35
chore: limit id-token permission to the publishing steps
ghostdevv May 23, 2026
e71f703
chore: explicitly disable npm cache to mitigate cache poisoning attacks
ghostdevv May 23, 2026
a968d96
chore: mitigate potential template injection
ghostdevv May 23, 2026
fa296c7
chore: use oidc
ghostdevv May 23, 2026
f48f103
chore: update ::set-output command to new syntax
ghostdevv May 23, 2026
79052b0
🙅 revert aggressive optimization experiments pending benchmark
natemoo-re May 24, 2026
bc285a1
Add CodSpeed performance benchmarks
codspeed-hq[bot] May 24, 2026
4596610
🔨 use deno
natemoo-re May 24, 2026
64170a5
🧼 deno fmt
natemoo-re May 24, 2026
7badc6c
⚙️ vitest -> tinybench
natemoo-re May 24, 2026
b117d21
🧼 remove codspeed assets
natemoo-re May 24, 2026
839bcb7
🔨 fix ci
natemoo-re May 24, 2026
c41f8bf
add type module
natemoo-re May 24, 2026
f762bee
fmt
natemoo-re May 24, 2026
042b7a1
Merge pull request #39 from ghostdevv/ci-preview
jbolda May 24, 2026
0956472
chore: update github url (#38)
ghostdevv May 24, 2026
e5ae33e
downgrade to tinybench@5
natemoo-re May 25, 2026
819da8e
Merge pull request #40 from ghostdevv/ci-verify
jbolda May 25, 2026
c9fec36
Merge pull request #43 from bombshell-dev/codspeed-wizard-1779643506234
natemoo-re May 26, 2026
ef9a3ed
Merge pull request #35 from bombshell-dev/ref/opt
natemoo-re May 26, 2026
92adfbe
Merge pull request #33 from bombshell-dev/rr/descriptive-pack-errors
cowboyd May 27, 2026
9eb3c24
Merge pull request #41 from ghostdevv/ci-publish
cowboyd May 27, 2026
088eb82
Merge pull request #17 from bombshell-dev/feat/snapshot
cowboyd May 27, 2026
ed95c3e
move to examples folder with readme
jbolda May 27, 2026
4139212
Merge pull request #46 from bombshell-dev/proper-example-folder
jbolda May 27, 2026
4145cac
Merge remote-tracking branch 'origin/main' into transitions
rauhryan May 31, 2026
a533953
🔧 export animating from wasm build
rauhryan May 31, 2026
4effe2e
🧪 cover transitions in snapshots and validation
rauhryan May 31, 2026
7eab1e4
✅ enforce nonnegative transition duration
rauhryan May 31, 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
48 changes: 48 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Benchmark

on:
push:
branches: [main]
pull_request:
branches: [main]
# `workflow_dispatch` allows CodSpeed to trigger backtest
# performance analysis in order to generate initial data.
workflow_dispatch:

permissions:
contents: read
id-token: write

jobs:
benchmarks:
name: Run benchmarks
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Build WASM
run: make

- name: Install dependencies
run: deno install

- name: Run benchmarks
uses: CodSpeedHQ/action@v4
with:
mode: simulation
# IMPORTANT! deno task bench fails in CI due to incompatible V8 bindings
run: node bench/mod.ts
20 changes: 13 additions & 7 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,24 @@ on: [pull_request]
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
preview:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

Expand All @@ -26,16 +31,17 @@ jobs:

- name: Get Version
id: vars
run: echo ::set-output name=version::$(git describe --abbrev=0 --tags | sed 's/^v//')-pr+$(git rev-parse HEAD)
run: echo "version=$(git describe --abbrev=0 --tags | sed 's/^v//')-pr+$(git rev-parse HEAD)" >> $GITHUB_OUTPUT

- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 20.x
registry-url: https://registry.npmjs.com
node-version: 24

- name: Build NPM
run: deno task build:npm ${{steps.vars.outputs.version}}
run: deno task build:npm "${STEPS_VARS_OUTPUTS_VERSION}"
env:
STEPS_VARS_OUTPUTS_VERSION: ${{steps.vars.outputs.version}}

- name: Publish Preview Versions
run: npx pkg-pr-new publish './build/npm'
54 changes: 36 additions & 18 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ on:

permissions:
contents: read
id-token: write

jobs:
verify-jsr:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

Expand All @@ -28,10 +28,12 @@ jobs:

- name: Get Version
id: vars
run: echo ::set-output name=version::$(echo ${{github.ref_name}} | sed 's/^v//')
run: echo "version=$(echo "${GITHUB_REF_NAME}" | sed 's/^v//')" >> $GITHUB_OUTPUT

- name: Build JSR
run: deno task build:jsr ${{steps.vars.outputs.version}}
run: deno task build:jsr "${STEPS_VARS_OUTPUTS_VERSION}"
env:
STEPS_VARS_OUTPUTS_VERSION: ${{steps.vars.outputs.version}}

- name: dry run publish
run: deno publish --dry-run --allow-dirty
Expand All @@ -40,12 +42,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

Expand All @@ -54,38 +57,47 @@ jobs:

- name: Get Version
id: vars
run: echo ::set-output name=version::$(echo ${{github.ref_name}} | sed 's/^v//')
run: echo "version=$(echo "${GITHUB_REF_NAME}" | sed 's/^v//')" >> $GITHUB_OUTPUT

- name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
package-manager-cache: false
cache: ""

- name: Build NPM
run: deno task build:npm ${{steps.vars.outputs.version}}
run: deno task build:npm "${STEPS_VARS_OUTPUTS_VERSION}"
env:
STEPS_VARS_OUTPUTS_VERSION: ${{steps.vars.outputs.version}}

- name: dry run publish
run: npm publish --dry-run --tag=verify
working-directory: ./build/npm

- name: upload build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: npm-build
path: ./build/npm

publish-npm:
needs: [verify-jsr, verify-npm]
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write

steps:
- name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
package-manager-cache: false
cache: ""

- name: download build
uses: actions/download-artifact@v4
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: npm-build
path: ./build/npm
Expand All @@ -97,15 +109,19 @@ jobs:
publish-jsr:
needs: [verify-jsr, verify-npm]
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write

steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

Expand All @@ -114,10 +130,12 @@ jobs:

- name: Get Version
id: vars
run: echo ::set-output name=version::$(echo ${{github.ref_name}} | sed 's/^v//')
run: echo "version=$(echo "${GITHUB_REF_NAME}" | sed 's/^v//')" >> $GITHUB_OUTPUT

- name: Build JSR
run: deno task build:jsr ${{steps.vars.outputs.version}}
run: deno task build:jsr "${STEPS_VARS_OUTPUTS_VERSION}"
env:
STEPS_VARS_OUTPUTS_VERSION: ${{steps.vars.outputs.version}}

- name: Publish JSR
run: deno publish --allow-dirty --token=${{ secrets.JSR_TOKEN }}
run: deno publish --allow-dirty
66 changes: 57 additions & 9 deletions .github/workflows/verify.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,32 @@ name: Verify

on:
push:
branches: main
branches:
- main
pull_request:
branches: main
branches:
- main

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

Expand All @@ -33,6 +40,45 @@ jobs:
- name: build wasm
run: make

- name: upload wasm artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: clayterm-wasm
path: |
clayterm.wasm
wasm.ts

test-alt-os:
needs: test
strategy:
matrix:
os:
- name: macos
value: macos-latest
- name: windows
value: windows-latest
fail-fast: false
runs-on: ${{ matrix.os.value }}
name: test ${{ matrix.os.name }}

steps:
- name: checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

- name: download wasm artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: clayterm-wasm
path: .

- name: test
run: deno task test

Expand All @@ -41,12 +87,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

Expand All @@ -64,17 +111,18 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
persist-credentials: false

- name: setup deno
uses: denoland/setup-deno@v2
uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4
with:
deno-version: v2.x

- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24

Expand Down
Loading
Loading