Commit Graph

14 Commits

Author SHA1 Message Date
GitHub Copilot 3f6cfd4e96 Replace xterm.js with ghostty-web
Migrate from xterm.js to ghostty-web (Ghostty WASM terminal emulator).

Benefits:
- WASM-compiled parser from Ghostty (same code as native app)
- Better Unicode/complex script handling
- Simpler initialization (no viewport.scrollBarWidth issues)
- ~400KB WASM bundle

Changes:
- Update package.json: remove @xterm/* deps, add ghostty-web
- Rewrite terminal.ts using ghostty-web API
- Use built-in FitAddon with observeResize()
- Remove WebGL/Canvas/Unicode11/WebLinks/Clipboard addons
- Remove xterm.css (ghostty uses canvas renderer)
- Add ghostty-vt.wasm to static assets
- Update HTML template and tests

BREAKING: Major version bump to 0.4.0
2026-01-28 00:54:50 +00:00
GitHub Copilot 712cc72911 Fix proposeDimensions error: skip call when terminal not ready
When terminal is not ready after max attempts, go directly to fallback
dimensions instead of falling through to call proposeDimensions() which
throws 'viewport.scrollBarWidth' TypeError.

Root cause: FitAddon.proposeDimensions() checks _renderService.dimensions
before accessing viewport.scrollBarWidth, but dimensions can be valid
while viewport is still undefined during terminal initialization.
2026-01-28 00:42:23 +00:00
GitHub Copilot 8ee6f2d605 Fix proposeDimensions error by checking terminal readiness first
Add isTerminalReady() check before calling fitAddon.proposeDimensions()
in the initial fit loop to prevent 'viewport.scrollBarWidth' TypeError
when terminal is not fully initialized.
2026-01-28 00:39:37 +00:00
GitHub Copilot a3b0d46fa8 Add robust fallback mechanism with timeout-based initialization
- Wrapped initial fit logic in comprehensive try-catch with multiple fallback strategies
- Added timeout-based fallback (2 seconds) to ensure terminal always gets initialized
- Enhanced error handling to prevent blank terminal on initialization failure
- Added cleanup of fallback timeout when WebSocket connects successfully
- Maintains all existing functionality and improves reliability

Bump version to 0.3.30

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-01-28 00:37:11 +00:00
GitHub Copilot 35aa0c0968 Enhance terminal readiness checks with comprehensive FitAddon validation
- Added more robust terminal readiness checking
- Explicitly check for viewport.scrollBarWidth being defined
- Added FitAddon function type checking before calling fit()
- Improved error handling for FitAddon initialization issues
- Prevents 'undefined is not an object' errors during terminal setup
- Maintains all existing functionality and test compatibility

Bump version to 0.3.29

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-01-28 00:35:21 +00:00
GitHub Copilot fae80d308a Add terminal readiness checks to prevent FitAddon errors during initialization
- Added isTerminalReady() method to check if terminal components are initialized
- Enhanced fit() method to check terminal readiness before attempting fit operations
- Improved initial fit logic with better error handling for viewport initialization
- Prevents 'undefined is not an object' errors when viewport.scrollBarWidth is accessed too early
- Maintains all existing functionality and backward compatibility

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-01-28 00:34:07 +00:00
GitHub Copilot d53e8488fb Fix terminal resize issues with comprehensive state management, error handling, and performance optimizations
- Added resize state management to prevent concurrent operations
- Enhanced error handling with automatic fallback mechanisms
- Implemented dimension validation (10-500 cols, 5-200 rows)
- Added WebSocket message queueing for reliable communication
- Enhanced ResizeObserver to watch parent elements
- Added throttling and debouncing for performance optimization
- Improved CSS layout with proper flex container sizing
- Maintained 100% backward compatibility
- All 327 tests passing

Bump version to 0.3.28

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-01-28 00:30:54 +00:00
GitHub Copilot 79fde1db2d Fix terminal resize issue and race condition. Bump version to 0.3.27 2026-01-28 00:21:39 +00:00
GitHub Copilot a1da841c45 Bump version to 0.3.26 and fix terminal resize issues 2026-01-28 00:08:02 +00:00
GitHub Copilot 2477491fa0 Guard initial fit sizing 2026-01-27 23:34:55 +00:00
GitHub Copilot cb6ea35c94 Stabilize initial terminal sizing 2026-01-27 23:27:02 +00:00
GitHub Copilot 5e84d00a30 Fix initial terminal resize 2026-01-27 23:14:49 +00:00
GitHub Copilot 6b1e17eda0 Improve terminal resizing 2026-01-27 22:45:34 +00:00
GitHub Copilot 67831a50ee Include pre-built terminal.js bundle in repo
Users can pip install directly from git URL without needing Bun.
Developers regenerate with: make bundle
2026-01-25 12:49:08 +00:00