alpha
Login
or
Join now
bomb.sh
/
tty
Star
5
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
[READ-ONLY] Mirror of https://github.com/bombshell-dev/tty. Platform independent 2D layout engine for terminal applications based on Clay
Star
5
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
tty
/
virtualizer
/
test
/
at
feat/virtualizer-v1
1 folder
17 files
Taras Mankovski
🐛 fix anchor eviction in single-line buffer + document columns precondition
3mo ago
bb48b92b
fixtures
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
ansi-golden.test.ts
🐛 fix anchor eviction in single-line buffer + document columns precondition Fix two blocking issues before merge: 1. When maxLines=1 and isAtBottom=false, evicting the anchor line left the anchor pointing at a gone lineIndex. resolveViewport() returned no entries from a non-empty buffer. Removed the `lineCount > 1` guard so the anchor always clamps to `evictedLineIndex + 1`. Added regression test R.EVICT.maxLines1-not-at-bottom. 2. Resolved the contradiction between O-9 ("every slice fits within columns") and the columns=1 + width-2 CJK glyph behavior. Documented columns ≥ max glyph width as a precondition on VirtualizerOptions, updated O-9 test name, wrap-golden test labels, and the spec.
3 months ago
ansi.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
append.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
bench.test.ts
✅ add property-based tests + validation-gate benchmarks (PR 5) Property tests cover identity monotonicity, eviction stability, estimation constraints, and viewport invariants under random ops. Benchmarks report informational gate results for all 7 perf gates.
3 months ago
empty.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
eviction.test.ts
🐛 fix anchor eviction in single-line buffer + document columns precondition Fix two blocking issues before merge: 1. When maxLines=1 and isAtBottom=false, evicting the anchor line left the anchor pointing at a gone lineIndex. resolveViewport() returned no entries from a non-empty buffer. Removed the `lineCount > 1` guard so the anchor always clamps to `evictedLineIndex + 1`. Added regression test R.EVICT.maxLines1-not-at-bottom. 2. Resolved the contradiction between O-9 ("every slice fits within columns") and the columns=1 + width-2 CJK glyph behavior. Documented columns ≥ max glyph width as a precondition on VirtualizerOptions, updated O-9 test name, wrap-golden test labels, and the spec.
3 months ago
exactness.test.ts
✨ add resize + conformance + exactness tests (PR 4) Implement Virtualizer.resize(): clear wrap cache on column change, recompute estimated visual rows, clamp anchor sub-row. Row-only changes update rows without invalidation. Add 17 new tests: C.RESIZE.* (8), G.RESIZE.* (2), deferred C.APPEND.caches-displayWidth (1), exactness structural tests (6). 109 virtualizer tests total, 249 repo-wide.
3 months ago
fraction.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
invariants.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
property.test.ts
✅ add property-based tests + validation-gate benchmarks (PR 5) Property tests cover identity monotonicity, eviction stability, estimation constraints, and viewport invariants under random ops. Benchmarks report informational gate results for all 7 perf gates.
3 months ago
real-world-ansi.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
resize.test.ts
🐛 fix three edge-case bugs with wide chars at narrow columns 1. resize() now clamps anchorSubRow using exact wrap count instead of ceil(displayWidth/columns) estimate, which undercounts when boundary waste from wide characters increases actual sub-row count. 2. _recomputeCurrentEstimate() clamps currentEstimatedVisualRow to [0, totalEstimatedVisualRows-1] so the scrollbar invariant holds even when exact wrap counts exceed the estimate. 3. computeWrapPoints() no longer emits wrap point at index 0 when the first visible character is wider than columns — the character overflows its row instead of creating an empty first sub-row. Adds 4 regression tests covering all three fixes.
3 months ago
scroll.test.ts
🐛 fix three edge-case bugs with wide chars at narrow columns 1. resize() now clamps anchorSubRow using exact wrap count instead of ceil(displayWidth/columns) estimate, which undercounts when boundary waste from wide characters increases actual sub-row count. 2. _recomputeCurrentEstimate() clamps currentEstimatedVisualRow to [0, totalEstimatedVisualRows-1] so the scrollbar invariant holds even when exact wrap counts exceed the estimate. 3. computeWrapPoints() no longer emits wrap point at index 0 when the first visible character is wider than columns — the character overflows its row instead of creating an empty first sub-row. Adds 4 regression tests covering all three fixes.
3 months ago
suite.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
viewport.test.ts
🐛 fix anchor eviction in single-line buffer + document columns precondition Fix two blocking issues before merge: 1. When maxLines=1 and isAtBottom=false, evicting the anchor line left the anchor pointing at a gone lineIndex. resolveViewport() returned no entries from a non-empty buffer. Removed the `lineCount > 1` guard so the anchor always clamps to `evictedLineIndex + 1`. Added regression test R.EVICT.maxLines1-not-at-bottom. 2. Resolved the contradiction between O-9 ("every slice fits within columns") and the columns=1 + width-2 CJK glyph behavior. Documented columns ≥ max glyph width as a precondition on VirtualizerOptions, updated O-9 test name, wrap-golden test labels, and the spec.
3 months ago
width.test.ts
✨ add @clayterm/virtualizer v1 (PRs 1–3) Implement the virtualizer package for viewport virtualization over large terminal text output. This covers PRs 1–3 of the implementation plan: - PR 1: Export createDisplayWidth from renderer (WASM per-codepoint wcwidth, R.WIDTH.* tests) - PR 2: Virtualizer core — appendLine, resolveViewport, ring buffer, ANSI scanner, wrap walker, getLineDisplayWidth (~66 tests) - PR 3: scrollBy + scrollToFraction with all deferred scroll-dependent tests (~92 tests total) resize() still throws "not implemented" — deferred to PR 4.
3 months ago
wrap-golden.test.ts
🐛 fix anchor eviction in single-line buffer + document columns precondition Fix two blocking issues before merge: 1. When maxLines=1 and isAtBottom=false, evicting the anchor line left the anchor pointing at a gone lineIndex. resolveViewport() returned no entries from a non-empty buffer. Removed the `lineCount > 1` guard so the anchor always clamps to `evictedLineIndex + 1`. Added regression test R.EVICT.maxLines1-not-at-bottom. 2. Resolved the contradiction between O-9 ("every slice fits within columns") and the columns=1 + width-2 CJK glyph behavior. Documented columns ≥ max glyph width as a precondition on VirtualizerOptions, updated O-9 test name, wrap-golden test labels, and the spec.
3 months ago