Commits
Bumps the github-actions group with 4 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache), [CodSpeedHQ/action](https://github.com/codspeedhq/action) and [actions/github-script](https://github.com/actions/github-script).
Updates `actions/checkout` from 6.0.2 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6.0.2...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)
Updates `actions/cache` from 5.0.5 to 6.0.0
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...2c8a9bd7457de244a408f35966fab2fb45fda9c8)
Updates `CodSpeedHQ/action` from 4.17.0 to 4.17.6
- [Release notes](https://github.com/codspeedhq/action/releases)
- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codspeedhq/action/compare/9d332c4d90b43981c3e55ae8e38e68709996240f...63f3e98b61959fe67f146a3ff022e4136fe9bb9c)
Updates `actions/github-script` from 7.1.0 to 9.0.0
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/f28e40c7f34bde8b3046d885e986cb6290c5673b...3a2844b7e9c422d3c10d287c895573f7108da1b3)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
- dependency-name: actions/cache
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
- dependency-name: CodSpeedHQ/action
dependency-version: 4.17.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
- dependency-name: actions/github-script
dependency-version: 9.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test: failing repro for nested-clip
* fix: stack clip regions so nested clips restore the parent rect
Clip state was a single rect, so closing an inner clip turned
clipping off entirely and later siblings leaked past the outer
bounds. Replace it with a fixed-depth stack: SCISSOR_START pushes
intersect(parent, child) and SCISSOR_END pops, restoring the parent
rect while the stack is non-empty. The active top mirrors into the
existing clipx/clipy/clipw/cliph scalars, so setcell is unchanged.
Fixes #77
* test: move nested-clip regression into test/clip.test.ts
* 🌆 Use visual language for clipping tests
* 📝 Update render spec to include clipping behavior
* fix: honor clip depth limit
---------
Co-authored-by: Charles Lowell <cowboyd@frontside.com>
♻️ rename clayterm -> @bomb.sh/tty
* test: add input event-loop integration test
Drives createInput as a consumer would (read chunk, scan, flush a pending ESC, dispatch) and asserts the same event stream whether input is fed whole, byte-by-byte, or split mid-sequence. Covers the lone-ESC flush path.
* bench: add macro throughput WallTime bench
In-process bench over a large mixed corpus, measured in WallTime where real work dominates placement/JIT/alloc noise (the Simulation micro-benches sit on codegen cliffs). Feeds the corpus in small reads: a single scan() drains at most 256 events (the wasm event-buffer cap), so small reads keep every call under the cap and process the whole corpus.
* bench: remove input micro-suite (codegen-cliff artifacts)
The Simulation input micro-benches (long input burst, printable ASCII single char) move by 50-90% on unrelated changes, even a test-only rename, because their simulated cost snaps to a different value when the combined wasm shifts. Input perf is now gated by the throughput WallTime bench; correctness by the event-loop integration test.
* ci(bench): pin build runner and drop wasm cache
Pin ubuntu-24.04 so the wasm toolchain is stable and drop the wasm cache so main and PRs always rebuild identically. The cache froze main's baseline on a stale build, so every PR compared a fresh build against a stale baseline and produced phantom regressions.
* fix(ci): return a promise from throughput bench for CodSpeed walltime
CodSpeed's walltime tinybench plugin only populates result.latency on its async path; a sync task fn leaves it undefined and crashes (Cannot destructure 'min' of result.latency). startup.bench works because its tasks return a promise (spawnFixture). Return Promise.resolve() from the throughput task so the plugin takes the async path — a bare async fn with no await would trip deno's require-await lint. The walltime job runs startup and throughput as separate node processes.
* bench: move render/ops to WallTime macro benches, drop the simulation job
CodSpeed Simulation (Valgrind) is unviable for CI here: flaky measurements (dashboard layout swung 20x, diff render 17% on changes that touch no render code) and unpredictable runtime — the same commit's simulation job finished in ~2 min one run and hung past 30 min the next. Convert render/ops to ms-scale WallTime macro benches (looped, promise-returning, ~7-11ms at <1% variance) run as separate node processes in the walltime job, and drop the simulation job entirely. mod.ts is now a local aggregator for deno task bench.
* ref(test): use built-in
* ref(bench): centralize withCodSpeed workaround
* ref(test): use semantic util functions
fix(ci): rebuild from clean in size-report so build-config changes are measured
* ✨ Add border-cell backgrounds
* format the spec file
* fix merge conflicts
* Adds code comment and validation for bg
* Updated the tests as suggests by paul
* feat: expand floating parameters
* ♻️ use string literals for floating options
* Remove any casts from validation tests
refactor: alignment to use string literals instead of magic numbers
* ✨ Add glyph-cell text backgrounds
Packs a bg color into the pack string
after decoding the bg color, its pass through to the render text method
properly
* chore: update the render-spec
* Add a very usage of text bg in the examples
* Adds a demo that looks like a code diff to show all the different colors features in action
* adds test to verify the bg color is reset have the directive
* move our tests into color.test.ts
rename test for generic color
The size report builds head then base without cleaning between them. For PRs that change only build config (Makefile, patches/, flags) and not src/*.c, make sees clayterm.wasm as newer than the unchanged sources and skips the base rebuild, so base re-measures head's artifact, delta is 0, and no size comment is posted. Run make clean && make for both builds so each is from scratch.
fix: leave terminal default foreground for uncolored text
Just testing text attributes, shouldn't need an enclosing box.
Text with no explicit color was packed as concrete white
(0xFFFFFFFF), forcing white on light-background terminals. Encode
absent color as ATTR_DEFAULT (0x80 in the attrs byte) so the C path
skips the foreground SGR entirely, mirroring how an unset background
is already left alone.
Fixes #62
🏃 add input + combined startup benchmarks
build(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions group
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).
Updates `actions/checkout` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com>
🧼 compress bundled wasm with brotli + z85 encoding
bench: add WASM init and startup timing benchmarks
Bumps the github-actions group with 4 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache), [CodSpeedHQ/action](https://github.com/codspeedhq/action) and [actions/github-script](https://github.com/actions/github-script).
Updates `actions/checkout` from 6.0.2 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6.0.2...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)
Updates `actions/cache` from 5.0.5 to 6.0.0
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...2c8a9bd7457de244a408f35966fab2fb45fda9c8)
Updates `CodSpeedHQ/action` from 4.17.0 to 4.17.6
- [Release notes](https://github.com/codspeedhq/action/releases)
- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codspeedhq/action/compare/9d332c4d90b43981c3e55ae8e38e68709996240f...63f3e98b61959fe67f146a3ff022e4136fe9bb9c)
Updates `actions/github-script` from 7.1.0 to 9.0.0
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/f28e40c7f34bde8b3046d885e986cb6290c5673b...3a2844b7e9c422d3c10d287c895573f7108da1b3)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
- dependency-name: actions/cache
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
- dependency-name: CodSpeedHQ/action
dependency-version: 4.17.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
- dependency-name: actions/github-script
dependency-version: 9.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test: failing repro for nested-clip
* fix: stack clip regions so nested clips restore the parent rect
Clip state was a single rect, so closing an inner clip turned
clipping off entirely and later siblings leaked past the outer
bounds. Replace it with a fixed-depth stack: SCISSOR_START pushes
intersect(parent, child) and SCISSOR_END pops, restoring the parent
rect while the stack is non-empty. The active top mirrors into the
existing clipx/clipy/clipw/cliph scalars, so setcell is unchanged.
Fixes #77
* test: move nested-clip regression into test/clip.test.ts
* 🌆 Use visual language for clipping tests
* 📝 Update render spec to include clipping behavior
* fix: honor clip depth limit
---------
Co-authored-by: Charles Lowell <cowboyd@frontside.com>
* test: add input event-loop integration test
Drives createInput as a consumer would (read chunk, scan, flush a pending ESC, dispatch) and asserts the same event stream whether input is fed whole, byte-by-byte, or split mid-sequence. Covers the lone-ESC flush path.
* bench: add macro throughput WallTime bench
In-process bench over a large mixed corpus, measured in WallTime where real work dominates placement/JIT/alloc noise (the Simulation micro-benches sit on codegen cliffs). Feeds the corpus in small reads: a single scan() drains at most 256 events (the wasm event-buffer cap), so small reads keep every call under the cap and process the whole corpus.
* bench: remove input micro-suite (codegen-cliff artifacts)
The Simulation input micro-benches (long input burst, printable ASCII single char) move by 50-90% on unrelated changes, even a test-only rename, because their simulated cost snaps to a different value when the combined wasm shifts. Input perf is now gated by the throughput WallTime bench; correctness by the event-loop integration test.
* ci(bench): pin build runner and drop wasm cache
Pin ubuntu-24.04 so the wasm toolchain is stable and drop the wasm cache so main and PRs always rebuild identically. The cache froze main's baseline on a stale build, so every PR compared a fresh build against a stale baseline and produced phantom regressions.
* fix(ci): return a promise from throughput bench for CodSpeed walltime
CodSpeed's walltime tinybench plugin only populates result.latency on its async path; a sync task fn leaves it undefined and crashes (Cannot destructure 'min' of result.latency). startup.bench works because its tasks return a promise (spawnFixture). Return Promise.resolve() from the throughput task so the plugin takes the async path — a bare async fn with no await would trip deno's require-await lint. The walltime job runs startup and throughput as separate node processes.
* bench: move render/ops to WallTime macro benches, drop the simulation job
CodSpeed Simulation (Valgrind) is unviable for CI here: flaky measurements (dashboard layout swung 20x, diff render 17% on changes that touch no render code) and unpredictable runtime — the same commit's simulation job finished in ~2 min one run and hung past 30 min the next. Convert render/ops to ms-scale WallTime macro benches (looped, promise-returning, ~7-11ms at <1% variance) run as separate node processes in the walltime job, and drop the simulation job entirely. mod.ts is now a local aggregator for deno task bench.
* ref(test): use built-in
* ref(bench): centralize withCodSpeed workaround
* ref(test): use semantic util functions
* ✨ Add glyph-cell text backgrounds
Packs a bg color into the pack string
after decoding the bg color, its pass through to the render text method
properly
* chore: update the render-spec
* Add a very usage of text bg in the examples
* Adds a demo that looks like a code diff to show all the different colors features in action
* adds test to verify the bg color is reset have the directive
* move our tests into color.test.ts
The size report builds head then base without cleaning between them. For PRs that change only build config (Makefile, patches/, flags) and not src/*.c, make sees clayterm.wasm as newer than the unchanged sources and skips the base rebuild, so base re-measures head's artifact, delta is 0, and no size comment is posted. Run make clean && make for both builds so each is from scratch.
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).
Updates `actions/checkout` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com>