Ismail Pelaseyed
487b27f512
try: scan print run after CSI fast-path dispatch
2026-04-21 09:26:07 +02:00
Ismail Pelaseyed
5d120de3d5
try: CSI fast-path - scan entire ESC[params;final without table lookups
2026-04-21 08:50:49 +02:00
Sridhar Ratnakumar
7a6e724bfe
Fix dispose leaks: register CursorBlinkStateManager + _pausedResizeTask
...
Three related disposable-registration gaps that leak xterm Terminal
instances when the host application unmounts a Terminal. Evidence +
full writeup at juspay/kolu#606 .
1. addon-webgl/WebglRenderer._cursorBlinkStateManager was declared
`= new MutableDisposable()` without the `this._register(...)`
wrapper that every sibling MutableDisposable in the class uses.
CursorBlinkStateManager runs a setInterval for the cursor blink
and its `dispose()` correctly clears it — but dispose() was never
called because the disposable wasn't registered. The live timer
kept the renderer (and thus the Terminal) alive past host
unmount.
2. common/TaskQueue.DebouncedIdleTask had no `dispose()` method.
Added one that clears the internal IdleTaskQueue (cancelling any
pending idle callback).
3. browser/services/RenderService._pausedResizeTask (a
DebouncedIdleTask) was not registered. Wrapped with
`this._register(...)` so RenderService.dispose propagates.
Verified in a downstream app (kolu) with a repro that toggles Focus
vs Canvas layout modes:
- Pre-fix: 24/28 disposed xterm Terminals retained past host unmount
+ forced GC.
- Post-fix: 0/28 retained.
Retention chain (before fix):
DOMTimer → ScheduledAction → V8Function
→ CursorBlinkStateManager._renderCallback → WebglRenderer
→ Terminal
2026-04-17 13:32:01 -04:00
Loïc Mangeonjean
69ee4ad23b
fix: use element window instead of global object
2026-04-13 12:51:17 +02:00
Jeffrey Chen
253d1e9beb
Underline entire wrapped OSC 8 link on hover
2026-04-12 20:06:43 -07:00
Anthony Kim
bd722e7b07
keep things clean
2026-04-03 09:46:07 -07:00
Anthony Kim
cccdd447a0
No need to mention vscode link
2026-04-03 09:45:01 -07:00
Anthony Kim
446bcb1f75
Fix option b and f
2026-04-03 09:26:32 -07:00
Anthony Kim
4a35a4880d
Do not report lock key presses without REPORT_ALL_KEYS in Kitty keyboard protocol
2026-03-31 16:45:52 -07:00
Daniel Imms
9c7c163dd4
Merge pull request #5776 from Gaubee/fix/headless-bun-deno-compat
...
Fix @xterm/headless compatibility with Bun and Deno runtimes
2026-03-26 08:05:03 -07:00
Per Bothner
8149d4481f
Fix bad import.
2026-03-22 22:04:21 -07:00
Per Bothner
2d9b21f5c7
Move extendedAttributes function to TestUtils so it can be used by InputHandler.test.ts.
...
This is a followup to pull request #5748 .
It removes the remaining test uses of internal _extendedAttrs.
2026-03-22 20:53:13 -07:00
Gaubee and Claude Opus 4.6
aa7716a333
Fix @xterm/headless compatibility with Bun and Deno runtimes
...
Replace `window` with `globalThis` in IdleTaskQueue export.
In Bun and Deno, `isNode` is false but `window` is undefined, causing
a ReferenceError. Using `globalThis` is safe in all JS runtimes and
makes the `isNode` guard unnecessary.
This is the only `in window` expression in code bundled into
@xterm/headless.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-15 10:30:12 +08:00
Daniel Imms
f1b0a96094
Merge pull request #5770 from mgabor3141/fix/viewport-sync-output-flicker
...
fix: defer viewport DOM sync during synchronized output (DEC 2026)
2026-03-15 04:35:17 +09:00
Daniel Imms
49096a21fd
Delete src/browser/Viewport.test.ts
...
Trying to remove jsdom eventually, this test is also overly fragile, we'll just do without.
2026-03-15 04:27:01 +09:00
Daniel Imms
4350536685
Prefer repeat over Array().join
...
Fixes #5771
2026-03-13 11:11:27 +09:00
mgabor3141
9feb963cc9
fix: defer viewport DOM sync during synchronized output
...
Defer Viewport DOM scroll updates while DEC 2026 synchronized output is
active, then flush once rendering resumes so DOM and canvas update
atomically.
Also update demo sizing to avoid relying on removed internal viewport
scrollBarWidth.
2026-03-12 18:51:38 +01:00
mgabor3141
f4042876c6
test: add viewport synchronized-output regression coverage (fails until fix)
2026-03-12 18:50:41 +01:00
mgabor3141
c294695444
refactor: plumb core service into Viewport constructor
2026-03-12 18:50:31 +01:00
Daniel Imms
5c2b19f2c8
Only update necessary DOM range on selection change
...
Fixes #4633
2026-03-12 11:36:33 +09:00
Daniel Imms
fb25eb8f79
Merge pull request #5764 from Tyriar/5675
...
Apply font styles directly to spans
2026-03-11 16:09:13 +09:00
Daniel Imms
e7a4578933
Don't apply color to the spans
2026-03-11 16:01:41 +09:00
Daniel Imms
a05a3321d5
Apply font styles directly to spans
...
The universal selector was overriding this since the font styles
only applied to the div, not the span.
Fixes #5675
2026-03-11 13:44:22 +09:00
Daniel Imms
1c1aac0da8
Update src/browser/input/CompositionHelper.ts
2026-03-11 13:12:36 +09:00
Daniel Imms
beeebca1a4
Merge branch 'master' into fix/ime-middle-composition-suffix
2026-03-11 13:06:35 +09:00
Daniel Imms
fd1e53c63f
Merge pull request #5762 from Tyriar/5760
...
Fix RTL breaking IME composition rendering
2026-03-11 12:49:50 +09:00
Daniel Imms
2285ac6ab8
Fix RTL breaking IME composition rendering
...
Fixes #5760
2026-03-11 12:41:48 +09:00
sergiochan
5302e62c90
fix: sync helper textarea position after terminal resize
2026-03-10 20:38:45 -07:00
Daniel Imms
5b9b531012
Merge branch 'master' into 5377_scroll
2026-03-11 12:19:42 +09:00
Daniel Imms
6813fc175e
Merge remote-tracking branch 'upstream/master' into 5377_scroll
2026-03-11 12:15:59 +09:00
Daniel Imms
409f049f39
Update src/browser/CoreBrowserTerminal.ts
2026-03-11 12:02:02 +09:00
sergiochan
9e1b89651a
fix(ime): resync textarea position on composition start
2026-03-10 19:36:17 -07:00
Daniel Imms
16b5da5c4c
Fix assertion, bring back triggerMouseEvent tests
2026-03-11 11:03:17 +09:00
Daniel Imms
5f3a4646be
Move non-state methods into MouseService
...
Fixes #5756
2026-03-11 10:49:55 +09:00
Daniel Imms
d63445be94
Move custom mouse event handler into MouseStateService
...
Don't need to keep it in CoreBrowserTerminal
2026-03-11 10:36:35 +09:00
Daniel Imms
2331abe6bd
Rename CoreMouseService to MouseStateService
...
Part of #5756
2026-03-11 10:31:57 +09:00
Daniel Imms
b66128b239
Avoid unnecessary
2026-03-11 10:24:46 +09:00
Daniel Imms
c727240f16
Fix cyclic dependency
...
Linkifier -> MouseService -> SelectionService -> Linkifier
2026-03-11 10:23:38 +09:00
Daniel Imms
649ce22081
Move bindMouse into MouseService
...
Fixes #5754
2026-03-11 10:10:13 +09:00
Anthony Kim
6f3ce7b0fe
comment
2026-03-10 00:30:29 -07:00
Anthony Kim
fdb7346f3a
Fix kitty keyboard disambiguate mode for space, enter, tab, backspace
2026-03-10 00:27:27 -07:00
Daniel Imms
783c4a34d2
Merge pull request #5747 from anthonykim1/anthonykim1/fixIMEoverFlowing
...
Fix IME composition text overflowing terminal
2026-03-10 11:18:48 +09:00
Daniel Imms
8a1760b924
Merge pull request #5748 from PerBothner/extendedAttrs-test
...
Fix testsuite access to internal _extendedAttrs
2026-03-10 11:16:00 +09:00
Per Bothner
8d6ff3a27b
Fix testsuite access to internal _extendedAttrs
2026-03-09 18:19:04 -07:00
Anthony Kim
55281022a0
Fix IME composition text overflowing terminal
2026-03-09 14:32:38 -07:00
Daniel Imms
87bf81cf96
Call out hack, fix lint
2026-03-09 13:44:02 +09:00
Serge
f155c65e5a
work around Safari sending keycode 13 (enter) when typing ctrl-c on iphone, iPad, AppleVisionPro
2026-03-09 13:42:36 +09:00
Daniel Imms
671425bf5a
Use helpers in other tests
2026-03-09 13:03:00 +09:00
Daniel Imms
df5393ec45
Use helper function and const for cell data tests
2026-03-09 12:54:27 +09:00
Daniel Imms
b2553c17b4
Clarify indexes in CharData and IColorRGB
...
Part of #5740
2026-03-09 12:42:55 +09:00