| c1e97b1e |
scenario: polish — indent + RunContext geom comment |
a73x |
2026-04-19 |
| 32e5b24c |
scenarios: make blink-bar fixture render visible content |
a73x |
2026-04-19 |
| a1685301 |
scenarios: first fixture blink-bar + Makefile targets |
a73x |
2026-04-19 |
| 0ce56438 |
scenario: guard scale change + tighten captureCb errdefer |
a73x |
2026-04-19 |
| 98db6e5d |
main: let runScenarios defers run before process exit |
a73x |
2026-04-19 |
| df6b166c |
main: add scenario entry point + runtime callbacks |
a73x |
2026-04-19 |
| b1c9ad85 |
main: thread optional ScenarioState through runTerminal |
a73x |
2026-04-19 |
| ba71ab5e |
pty: close master fd on fcntl failure in openForScenario |
a73x |
2026-04-19 |
| b91f705a |
pty: add openForScenario — pty pair without a child |
a73x |
2026-04-19 |
| 3f961039 |
Plan 3 of 3 for scenario runner: main-loop integration |
a73x |
2026-04-19 |
| 52e5cdc1 |
scenario: plug capture leaks + thread CellGeom + distinct errors |
a73x |
2026-04-19 |
| 9a964981 |
scenario: size-check golden in cell_matches_golden predicate |
a73x |
2026-04-19 |
| 1f681745 |
scenario: add cell-region predicate evaluator + wire into tick |
a73x |
2026-04-19 |
| 39c1f074 |
scenario: close TickError set + extract blink_period_ns const |
a73x |
2026-04-19 |
| a36f7122 |
scenario: add ScenarioState + tick state machine |
a73x |
2026-04-19 |
| 2dadb5e0 |
scenario: reject size=0, out-of-bounds asserts, empty bytes-hex |
a73x |
2026-04-19 |
| 4e65a5d1 |
scenario: add parser for the scenario runner DSL |
a73x |
2026-04-19 |
| 46c96419 |
Plan 2 of 3 for scenario runner: parser + state + predicates |
a73x |
2026-04-19 |
| 9fae3529 |
imgdiff: shrink CLI to thin wrapper over src/imgdiff.zig |
a73x |
2026-04-19 |
| 5de16e01 |
imgdiff: add src/imgdiff.zig pure-math module |
a73x |
2026-04-19 |
| d725cafd |
Plan 1 of 3 for scenario runner: imgdiff extraction |
a73x |
2026-04-19 |
| 1a0fc00e |
Scenario runner design: agent-runnable render smoke |
a73x |
2026-04-19 |
| 07d3d200 |
main: use explicit viewportEql instead of std.meta.eql |
a73x |
2026-04-19 |
| 51f41728 |
main: wire blink state machine into the render loop |
a73x |
2026-04-19 |
| 73ad3949 |
main: collapse duplicate arm branches in reconfigureBlink |
a73x |
2026-04-19 |
| 2c4e9a52 |
main: add blink state machine + draw-rule pure helpers |
a73x |
2026-04-19 |
| e0e1171e |
main: widen computePollTimeoutMs to accept a second deadline |
a73x |
2026-04-19 |
| 73e2fd1c |
cursor: extract cursorInstance helper with DECSCUSR shape dispatch |
a73x |
2026-04-19 |
| 3394c210 |
Cursor blink implementation plan |
a73x |
2026-04-19 |
| 6dfa62bf |
Cursor blink design: DECSCUSR + 500ms phase |
a73x |
2026-04-19 |
| aadc1228 |
main: document drawTextCoverageCompareFrame as non-recoverable smoke path |
a73x |
2026-04-18 |
| 6be8f234 |
main: add exponential backoff on Vulkan timeout retries |
a73x |
2026-04-18 |
| dba2175a |
check_unbounded_vk: comment the PATTERNS list as maintainer-update target |
a73x |
2026-04-18 |
| fd817e8a |
Add grep gate that forbids unbounded Vulkan waits outside vk_sync |
a73x |
2026-04-18 |
| 9afdc9f8 |
Migrate 14 *WaitIdle sites to vk_sync.waitIdleForShutdown |
a73x |
2026-04-18 |
| c1de8b6f |
renderer: gate fence re-signal on pre-submit errors only |
a73x |
2026-04-18 |
| 0c5b68af |
Migrate 10 Vulkan wait/acquire sites to bounded helpers |
a73x |
2026-04-18 |
| 66ece494 |
renderer: reorder resetFences after acquire, add errdefer re-signal |
a73x |
2026-04-18 |
| 94f2d7b5 |
vk_sync: fail closed on unknown acquire result + comments |
a73x |
2026-04-18 |
| 2c50c63e |
Add vk_sync module with bounded Vulkan wait helpers |
a73x |
2026-04-18 |
| 03430faf |
Add Vulkan bounded-waits implementation plan |
a73x |
2026-04-18 |
| b98c28dc |
Vulkan bounded-waits spec: match inline-test convention |
a73x |
2026-04-18 |
| 7ef4a62c |
Add Vulkan bounded-waits design spec |
a73x |
2026-04-18 |
| 922aa410 |
Add input-latency bench implementation plan |
a73x |
2026-04-18 |
| 7a1e22d2 |
Input-latency bench: share grid-lock across all bench modes |
a73x |
2026-04-18 |
| da8a44a0 |
Input-latency bench: fold in reviewer feedback and controlled hot workload |
a73x |
2026-04-18 |
| 35311690 |
Input-latency bench: cold child is cat > /dev/null |
a73x |
2026-04-18 |
| 110e95aa |
Add input-latency bench design spec |
a73x |
2026-04-18 |
| 5f8b00ab |
Split gpu_submit into sub-stage timings (bench only) |
a73x |
2026-04-17 |
| 02224fad |
Default bench + profile to ReleaseFast |
a73x |
2026-04-17 |
| b7e080ca |
Make bench + profile workloads representative |
a73x |
2026-04-17 |
| 321b2280 |
Merge branch 'gpu-render-testing' |
a73x |
2026-04-17 |
| eb4ff88c |
Polish frame-loop visibility handling |
a73x |
2026-04-17 |
| 49903c96 |
Widen readbackOffscreen assert to usize |
a73x |
2026-04-17 |
| 6720a6b9 |
Add make targets for render + bench tests |
a73x |
2026-04-17 |
| 9e9d75b6 |
Add bench-baseline and bench-check |
a73x |
2026-04-17 |
| 828c61f5 |
Commit initial golden reference PNGs |
a73x |
2026-04-17 |
| a9c14dfd |
Add test-render orchestrator |
a73x |
2026-04-17 |
| 4ef7ebfb |
Add initial VT test scripts for render testing |
a73x |
2026-04-17 |
| 4679378d |
Add imgdiff: RMSE + per-pixel-max PNG comparison |
a73x |
2026-04-17 |
| 8f9e9953 |
Extract cell_instance helpers into shared module |
a73x |
2026-04-17 |
| a5726e8a |
Add --capture mode: render a VT script to PNG |
a73x |
2026-04-17 |
| 6986eef7 |
Add BaselineRecord + JSON round-trip for frame stats |
a73x |
2026-04-17 |
| 1d53cec2 |
Extract frame timing stats into bench_stats module |
a73x |
2026-04-17 |
| b0fdd27b |
Guard offscreen renderer against shared-state hazards |
a73x |
2026-04-17 |
| 2d429b7f |
Add offscreen render target + readback to renderer |
a73x |
2026-04-17 |
| 1acfbe4b |
Add vendored minimal RGBA8 PNG codec |
a73x |
2026-04-17 |
| 7b928983 |
Add GPU render testing implementation plan |
a73x |
2026-04-17 |
| 91570f6e |
Revise GPU render testing spec per review |
a73x |
2026-04-17 |
| b0ade34d |
Add GPU render testing design spec |
a73x |
2026-04-17 |
| f743ae41 |
Decouple rendering from visibility; fix v5 compositor bootstrap |
a73x |
2026-04-17 |
| c1104500 |
Final polish: restore SIGUSR1 under visibility gate, drop unused import |
a73x |
2026-04-16 |
| c0814a64 |
Restore stdin wait in --hidden-freeze-regression |
a73x |
2026-04-16 |
| fa7b59b5 |
Add --hidden-freeze-regression manual test mode |
a73x |
2026-04-16 |
| 13a38303 |
Add WAYSTTY_BENCH_UNTHROTTLED escape hatch |
a73x |
2026-04-16 |
| d236646a |
Migrate runDrawSmokeTest to FrameLoop |
a73x |
2026-04-16 |
| 33c334d6 |
Migrate runTextCoverageCompare to FrameLoop |
a73x |
2026-04-16 |
| 35c92e24 |
Add synthetic hidden-freeze regression test |
a73x |
2026-04-16 |
| 185553de |
Migrate main terminal loop to FrameLoop; fix hidden-workspace freeze |
a73x |
2026-04-16 |
| eb6c0232 |
Add real-path DisplayOps adapter on Window |
a73x |
2026-04-16 |
| da641eec |
Add MockDisplayOps + FrameLoop unit tests |
a73x |
2026-04-16 |
| b0070dd0 |
Harden FrameLoop per code-quality review |
a73x |
2026-04-16 |
| dec56ed3 |
Introduce FrameLoop module and DisplayOps trait |
a73x |
2026-04-16 |
| 729572fe |
Simplify applyToplevelStates signature and expand test coverage |
a73x |
2026-04-16 |
| aba50517 |
Bump xdg_wm_base to v6 and honor toplevel suspended state |
a73x |
2026-04-16 |
| 109a4daa |
Wire SurfaceState into Window |
a73x |
2026-04-16 |
| 70396bf0 |
Add SurfaceState struct for visibility tracking |
a73x |
2026-04-16 |
| cd9e8b61 |
Add ScaleTracker.enteredCount |
a73x |
2026-04-16 |
| 0c91e8f4 |
Add frame-callback throttling implementation plan |
a73x |
2026-04-16 |
| 7df2905c |
Add frame-callback throttling design spec |
a73x |
2026-04-16 |
| 551433ab |
Add incremental atlas upload with ASCII precompute |
a73x |
2026-04-10 |
| f754bb6b |
Add performance benchmarking instrumentation |
a73x |
2026-04-10 |
| fc9f9849 |
Add performance benchmarking and incremental atlas upload specs and plans |
a73x |
2026-04-10 |
| 16676784 |
Add implementation plans for dirty row rendering, font config, HiDPI, text coverage, and visible selection |
a73x |
2026-04-10 |
| d7e61651 |
Force full row rebuild when selection span changes |
a73x |
2026-04-09 |
| 6b990766 |
Clean up clipboard code after review: remove dead serial field and add guard comments |
a73x |
2026-04-09 |
| d0084ff5 |
Copy visible selection to clipboard |
a73x |
2026-04-09 |
| 772dbdd6 |
Fix selection clear on off-grid click and clampGridPoint row clamping |
a73x |
2026-04-09 |
| bf07276c |
Highlight visible text selection |
a73x |
2026-04-09 |
| f37ca90d |
Fix clipboard send fd lifecycle |
a73x |
2026-04-09 |
| 32c6ea16 |
Fix clipboard source transfer threading |
a73x |
2026-04-09 |
| ce9c391f |
Add Wayland pointer and clipboard source support |
a73x |
2026-04-09 |
| 499daca1 |
Remove spacer boundary normalization |
a73x |
2026-04-09 |
| 9a329e5a |
Fix selection grapheme and wide cell extraction |
a73x |
2026-04-09 |
| 87544d89 |
Fix visible selection text extraction |
a73x |
2026-04-09 |
| ec887038 |
Add visible selection copy extraction |
a73x |
2026-04-09 |
| e752cef0 |
Fix visible selection resize semantics |
a73x |
2026-04-09 |
| e536c796 |
Fix selection helper scope |
a73x |
2026-04-09 |
| 6a5f175f |
Refine selection span semantics |
a73x |
2026-04-09 |
| be9bf5ac |
Fix selection clamping semantics |
a73x |
2026-04-09 |
| d086c0e1 |
Add visible selection helpers |
a73x |
2026-04-09 |
| b5011067 |
Add visible selection design spec |
a73x |
2026-04-09 |
| ce21fd10 |
Honor wl_output buffer scale in terminal render loop |
a73x |
2026-04-09 |
| e4c70529 |
Merge branch 'feature/hidpi-support' into implement-v1 |
a73x |
2026-04-09 |
| 52933806 |
Honor wl_output buffer scale in text-compare mode |
a73x |
2026-04-09 |
| c6a25e27 |
Add Atlas.reset and Face.reinit for scale changes |
a73x |
2026-04-09 |
| 4f3b2926 |
Track wl_surface enter/leave on Window |
a73x |
2026-04-09 |
| 12b4f1c8 |
Bind wl_output globals into ScaleTracker |
a73x |
2026-04-09 |
| 2897c867 |
Add pure ScaleTracker for wl_output scale tracking |
a73x |
2026-04-09 |
| 6564efc5 |
Ignore .worktrees directory |
a73x |
2026-04-09 |
| adb35120 |
Fix text compare mode event loop and labels |
a73x |
2026-04-09 |
| 5cae59bc |
Add text coverage comparison mode |
a73x |
2026-04-09 |
| 124b4c98 |
Make comparison panel helper explicitly four-panel |
a73x |
2026-04-09 |
| 1146e2f0 |
Add text comparison layout helpers |
a73x |
2026-04-09 |
| 0b323daf |
Use shared baseline coverage preset |
a73x |
2026-04-09 |
| fc5431d4 |
Keep default rendering on baseline coverage |
a73x |
2026-04-09 |
| 96e8ea4e |
Plumb text coverage controls through renderer |
a73x |
2026-04-09 |
| 54ba5780 |
Pin text coverage preset values in tests |
a73x |
2026-04-09 |
| 2ff87ed6 |
Add text coverage variant helpers |
a73x |
2026-04-09 |
| 12bf992b |
Add text coverage comparison design |
a73x |
2026-04-09 |
| 1ad23272 |
Import terminal config directly in main |
a73x |
2026-04-09 |
| d9da3081 |
Read terminal font size from config |
a73x |
2026-04-09 |
| c3b6edc4 |
Resolve configured terminal font family |
a73x |
2026-04-09 |
| 6294958b |
Add terminal font config module |
a73x |
2026-04-09 |
| 3cdecfb9 |
Add font config design |
a73x |
2026-04-09 |
| 124fa6a4 |
Handle color-only render cells safely |
a73x |
2026-04-09 |
| 247fce8e |
Use dirty-row render cache in terminal loop |
a73x |
2026-04-09 |
| 1b76e08f |
Test partial upload API contract |
a73x |
2026-04-08 |
| 2fd9a6ab |
Fix partial upload fallback contract |
a73x |
2026-04-08 |
| 4f15ba85 |
Add partial instance buffer uploads |
a73x |
2026-04-08 |
| 1c051843 |
Fix cursor cache invalidation contract |
a73x |
2026-04-08 |
| 9d6c13c8 |
Add cursor cache rebuild logic |
a73x |
2026-04-08 |
| 9e189dbc |
Clarify row rebuild cache contract |
a73x |
2026-04-08 |
| 0615931a |
Extract row instance rebuild logic |
a73x |
2026-04-08 |
| 56668744 |
Reset row GPU spans on render cache resize |
a73x |
2026-04-08 |
| 5e9ae29b |
Fix render cache resize invariants |
a73x |
2026-04-08 |
| 7a8bf92e |
Add render cache data structures |
a73x |
2026-04-08 |
| 255115ee |
Refine instance upload planning contract |
a73x |
2026-04-08 |
| a49da033 |
Add instance upload planning helpers |
a73x |
2026-04-08 |
| 917999fd |
Fix dirty-row packing contract |
a73x |
2026-04-08 |
| f60856b1 |
Add dirty-row packing helpers |
a73x |
2026-04-08 |
| 545e5683 |
Fix same-row cursor refresh planning |
a73x |
2026-04-08 |
| f4135ed2 |
Fix dirty-row refresh planning helpers |
a73x |
2026-04-08 |
| 8975cd18 |
Add dirty-row refresh planning helpers |
a73x |
2026-04-08 |
| 68df7b96 |
Clarify dirty-row rendering edge cases |
a73x |
2026-04-08 |
| f5d1aa15 |
Add dirty-row rendering design spec |
a73x |
2026-04-08 |
| b44b035d |
Improve terminal responsiveness and state handling |
a73x |
2026-04-08 |
| 10cbcfdb |
Handle out-of-date swapchains during draw |
a73x |
2026-04-08 |
| 55523c50 |
Fix renderer merge blockers |
a73x |
2026-04-08 |
| 6f0c995e |
Fix clipboard paste deadlock |
a73x |
2026-04-08 |
| 161124e4 |
Heap-allocate vt.Terminal |
a73x |
2026-04-08 |
| 448e8bb8 |
Add clipboard paste support |
a73x |
2026-04-08 |
| b2d1bc2e |
Wire terminal effect callbacks |
a73x |
2026-04-08 |
| 430800c8 |
Improve glyph positioning |
a73x |
2026-04-08 |
| 9c669d38 |
Draw cell backgrounds |
a73x |
2026-04-08 |
| ae38f777 |
Render actual cell colors |
a73x |
2026-04-08 |
| 52554a17 |
Render terminal cursor |
a73x |
2026-04-08 |
| e4c26d38 |
Handle window resize |
a73x |
2026-04-08 |
| 3d5b717d |
Handle non-text key encoding |
a73x |
2026-04-08 |
| 47eefde2 |
feat: full terminal integration — waystty works |
a73x |
2026-04-08 |
| 6e422506 |
chore(main): extend draw smoke test duration for visual verification |
a73x |
2026-04-08 |
| e2859d88 |
feat(renderer): glyph atlas upload + instanced draw |
a73x |
2026-04-08 |
| ff8b9f51 |
feat(renderer): render pass + pipeline + clear-and-present loop |
a73x |
2026-04-08 |
| 5686b7ab |
feat(renderer): vulkan instance + surface + device + swapchain |
a73x |
2026-04-08 |
| ee1a63bd |
build(renderer): wire vulkan-zig + glslc + embed SPIR-V |
a73x |
2026-04-08 |
| 30b495f7 |
feat(wayland): keyboard + xkbcommon + key repeat |
a73x |
2026-04-08 |
| 2c843d0d |
feat(wayland): create surface + xdg_toplevel |
a73x |
2026-04-08 |
| 1f3f2cdf |
feat(wayland): connect + bind globals |
a73x |
2026-04-08 |
| 445311ee |
feat(font): glyph atlas with row-based packing |
a73x |
2026-04-08 |
| 61494a58 |
feat(font): freetype face + rasterize |
a73x |
2026-04-08 |
| 568caf21 |
feat(font): fontconfig monospace lookup |
a73x |
2026-04-08 |
| 5824bccb |
feat(main): headless mode — pty + vt proof of life |
a73x |
2026-04-08 |
| 5a01c1f3 |
feat(vt): Terminal facade wrapping ghostty-vt |
a73x |
2026-04-08 |
| 94e7b0ed |
feat(pty): add resize |
a73x |
2026-04-08 |
| 7367068b |
feat(pty): add read/write helpers |
a73x |
2026-04-08 |
| 835bd46d |
feat(pty): spawn child shell via forkpty |
a73x |
2026-04-08 |
| 83a75672 |
build: wire ghostty-vt module |
a73x |
2026-04-08 |
| 0d256ea4 |
build: add zig-wayland, vulkan-zig, vulkan-headers, ghostty deps |
a73x |
2026-04-08 |
| 796976ec |
chore: minimal build.zig with working fingerprint |
a73x |
2026-04-08 |
| d5946d76 |
chore: add build.zig.zon skeleton |
a73x |
2026-04-08 |
| 6d02f429 |
chore: add gitignore |
a73x |
2026-04-08 |
| 85df18a0 |
Add corrections section to waystty implementation plan |
a73x |
2026-04-08 |
| c05013f9 |
Add waystty implementation plan |
a73x |
2026-04-08 |
| 5c38fd57 |
Update design spec with review feedback |
a73x |
2026-04-07 |
| bddbc526 |
Add waystty design spec |
a73x |
2026-04-07 |