Releases: tako0614/ide
v3.5.33
Full Changelog: v3.5.32...v3.5.33
v3.5.32
Full Changelog: v3.5.31...v3.5.32
v3.5.31
Full Changelog: v3.5.30...v3.5.31
v3.5.30
Full Changelog: v3.5.29...v3.5.30
v3.5.29
Full Changelog: v3.5.28...v3.5.29
v3.5.28
Full Changelog: v3.5.27...v3.5.28
v3.5.27
Fixes
Terminal resize lock during buffer replay
Root cause: term.write() in xterm.js processes large buffers asynchronously across multiple animation frames. During this multi-frame processing, ResizeObserver callbacks and font-load events could fire and change the terminal column count. This caused part of the replayed content to be rendered at one width (e.g. 120 cols) and the rest at another (e.g. 115 cols), breaking cursor-positioned content like Claude Code's crab ASCII art.
Fix: Added replayResizeLock — a flag that blocks all runFit() calls during buffer replay. The initial fit in the sync handler runs before the lock engages (ensuring correct dimensions), then the lock prevents any mid-replay dimension changes. When replay completes, the lock is released and a catch-up scheduleFit(true) runs to apply any resize that was suppressed.
v3.5.26
Fixes
Terminal buffer replay hardening
-
OSC/DCS/APC escape sequence handling:
skipPartialEscapeSequencenow handles OSC (ESC ]), DCS (ESC P), APC (ESC _) sequences in addition to CSI. Buffer trimming could previously land inside these sequences, causing their payload (e.g. window title text, color query data) to render as garbled literal text. -
Buffer memory safety:
readBufferedRangenow returns a copy of the data instead of aBuffer.subarray()view that shares memory withbufferChunks. This prevents potential data corruption if chunks are trimmed/reassigned between the read and the WebSocket send. -
Blob data handling: WebSocket binary messages received as
Blob(unlikely but possible with certain proxies) are now properly read viaarrayBuffer()instead of being silently dropped.
v3.5.25
Fixes
- Terminal buffer replay corruption: Skip partial ANSI CSI escape sequences at buffer trim boundaries. When the 500KB buffer overflows and trims from the front, the cut point could land inside a color/cursor escape sequence (e.g.
\x1b[38;2;100;50m). The orphaned parameter bytes (100;50m) were rendered as literal text, shifting all cursor positions and corrupting ASCII art (including Claude Code's crab mascot). Now detects and skips these partial sequences during trimming.
v3.5.24
Fixes
- Terminal buffer replay: Fix
alignToUtf8Endto properly detect incomplete UTF-8 characters at the end of the buffer — prevents emoji/multi-byte character corruption on reload - Terminal replay sizing: Synchronous fit before buffer replay to ensure correct terminal dimensions, preventing ASCII art misalignment
- Right-click paste: Enable
rightClickSelectsWordand remove CSS overrides that pinned the xterm textarea to the top-left corner — browser context menu now shows "Paste" on right-click