Commit Graph
1386 Commits
Author SHA1 Message Date
ys-ll d07813da37 Add cell color override API for text recoloring
Add setCellColorOverrides/clearCellColorOverrides to the terminal API,
backed by a per-line sparse override store consumed by the DOM renderer's
row factory. Covered cells render their original text in the given color,
with override equality participating in span merging so runs break only at
color boundaries. Overrides are keyed by absolute buffer line of the active
buffer; refresh is limited to the affected viewport rows.

This gives embedders a cheap way to recolor terminal text (e.g. keyword
highlighting) without decoration objects, which fragment text spans and
carry per-cell lookup cost in the DOM renderer, and which are force-hidden
while the alternate buffer is active.
2026-09-20 19:20:47 +08:00
Daniel Imms 3571d1f51a Remove windowsMode in favor of windowsPty 2025-12-21 05:01:15 -08:00
Daniel Imms d1c50c14e3 Merge pull request #5461 from Tyriar/tyriar/glob
Remove need for glob module
2025-12-20 08:44:33 -08:00
Daniel Imms 92b43bdf9b Remove only 2025-12-20 08:33:56 -08:00
Daniel Imms 34fd0dcf53 Remove need for glob module 2025-12-20 07:44:24 -08:00
Daniel Imms bd361af105 Fix lint 2025-12-10 07:59:52 -08:00
Daniel Imms 9ea059de6f Move SynchronizedOutputHandler to bottom of file 2025-12-10 07:50:59 -08:00
Daniel Imms 7cdf3f9dd7 Prefer const enum so the number is inlined 2025-12-10 07:50:28 -08:00
Chris LloydandClaude 6b63c5f260 Address PR review feedback for synchronized output
- Remove synchronizedOutputTimeout public API, hardcode 1s timeout
- Extract SynchronizedOutputHandler class for cleaner code
- Update spec URL to contour-terminal/vt-extensions
- Remove unnecessary comment in InputHandler
- Delete unit tests, add integration tests in SharedRendererTests
- Fix whitespace issue

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 07:58:31 -08:00
Chris LloydandClaude 7228e2e2dc Add synchronized output support (DEC mode 2026)
Implement synchronized output mode (CSI ? 2026 h/l) which allows
applications to batch terminal updates and render them atomically,
preventing screen tearing during rapid output.

Features:
- BSU (CSI ? 2026 h) pauses rendering, buffering row updates
- ESU (CSI ? 2026 l) flushes buffer and renders atomically
- Configurable timeout via synchronizedOutputTimeout option (default 5s)
- Exposed via terminal.modes.synchronizedOutputMode

Closes #3375

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 11:16:25 -08:00
Daniel Imms 98e234992b Prefer performance.now() over Date.now()
performance.now() is faster than Date.now() as there's no need to
consult the system clock. The more important part of this is that
performance.now() is monotonic and is guaranteed to never to backwards.
2025-11-23 08:32:35 -08:00
Daniel Imms 65a0e03b66 Merge pull request #5437 from xtermjs/anthonykim1/preventPageScrollWhenMouseOff
Prevent entire page from scrolling when scrolling in alt buffer with mouse event off
2025-11-02 03:54:46 -08:00
Anthony Kim 6ae020f51e add this.cancel(ev, true) when line is zero on wheel handler 2025-10-31 14:39:42 -07:00
Daniel Imms 9a7517d3eb Clear selection on vertical resize
Fixes #5300
2025-10-19 01:15:30 -07:00
Anthony Kim 2a6e22e8f8 set this._latestYDisp = undefined onBufferActivate 2025-10-01 20:36:06 -07:00
Anthony Kim 32c3cb01a1 Make sure this._latestYDisp is up to date 2025-09-30 23:04:04 -07:00
Daniel Imms 90bf20d9d8 Remove Thenable 2025-09-17 15:02:27 -07:00
Anthony Kim 26ecba8de1 Fix sluggish mouse problem. Now similar to trackpad 2025-09-08 21:03:05 -07:00
Anthony Kim b104a5b953 Respect original formatting 2025-08-28 22:56:15 -07:00
Anthony Kim ebddd5d346 Move from CoreBrowerTerminal to CoreMouseService. Still slow though 2025-08-28 22:54:50 -07:00
Daniel Imms 5bd7b4aaec Bring back partial wheel tracking
Part of microsoft/vscode#224750
2025-08-28 10:28:19 -07:00
Alexey Kozy a589be2826 fix: ensure that currentRow can not go out of the range 2025-08-20 13:47:40 -07:00
Daniel Imms 064efd6876 Merge branch 'master' into patch-1 2025-04-23 05:03:38 -07:00
Daniel Imms e9587cf68f Refresh viewport after clear or ED
Fixes #5327
2025-04-21 07:00:27 -07:00
Daniel Imms 18cd9b137f Revert "Merge pull request #5253 from akphi/patch-1"
This reverts commit 601efc3745, reversing
changes made to af4208dad0.
2025-02-14 06:35:24 -08:00
Alex Morris 1495e7134f Update AccessibilityManager.ts to use textContent rather than innerText
The innerText property requires layout and therefore is not very efficient. For more information, see http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/.
2025-02-12 16:46:01 +00:00
Daniel Imms 71f50b841f Move webgl-specific types into addon 2025-01-08 10:39:06 -08:00
Daniel Imms d70f2a462c Move webgl-specific shared code into addon
Never got moved when canvas addon was removed
2025-01-08 10:35:39 -08:00
Daniel Imms c21f32d012 Merge pull request #5282 from database-client-lib/fix-unexpected-composition
Fixed CapsLock triggering input twice in MacOS.
2025-01-08 09:34:03 -08:00
Daniel Imms 408d0995dd Support detailed ligatures and variants
Fixes #5284
2025-01-08 06:26:15 -08:00
cweijan 0433fb8a4b Fixed CapsLock triggering input twice in MacOS. 2025-01-07 22:57:40 +08:00
Daniel Imms a7b98de833 Handle overflowing to new row 2025-01-07 06:28:59 -08:00
Daniel Imms ff9a3a1067 Merge branch 'master' into liga_texture_limit 2025-01-06 11:53:36 -08:00
Daniel Imms 7541cf2fd7 Add todo 2025-01-06 11:52:20 -08:00
Daniel Imms e882f4a46a Prototype of adding a large atlas page for overflow glyphs
Part of #5246
2025-01-06 11:50:08 -08:00
Daniel Imms 9912e7b331 Disable ligatures when cursor is in range
Fixes #5230
2025-01-06 11:08:57 -08:00
Daniel Imms c7a1e0aea3 Handle selections in the middle of ligatures too 2025-01-06 11:03:10 -08:00
Daniel Imms 0521378e70 Fix ligature selection in DOM renderer
Part of #5231
2025-01-06 10:50:13 -08:00
An Phi 62656b8375 Merge branch 'master' into patch-1 2025-01-06 10:28:27 -05:00
Daniel Imms ce095b3593 Merge pull request #5249 from jtbandes/fix-click-not-delivered
Fix click event bug caused by DomRenderer replaceChildren behavior
2024-12-20 12:41:52 -08:00
Daniel Imms b579649a39 Revert to cursor options after DECSCUSR 0
Fixes #3293
2024-12-20 10:34:05 -08:00
Daniel Imms d5a2fed679 Merge pull request #5263 from Tyriar/5256
Make textarea readonly when disableStdin is set
2024-12-20 09:09:53 -08:00
Daniel Imms da22b0308e Make textarea readonly when disableStdin is set
Fixes #5256
2024-12-20 09:00:05 -08:00
Daniel Imms 3e998387fe Blend cursorAccent with background too
Fixes #5241
2024-12-20 08:51:17 -08:00
Daniel Imms b74ec267e2 Blend cursor with background to support alpha in webgl
Fixes #5241
2024-12-20 07:37:12 -08:00
An Phi 9f9bb3c11c bug: properly render the terminal when open() is called again 2024-12-18 01:26:47 -05:00
Jacob Bandes-Storch 1978399259 Fix click event bug caused by DomRenderer replaceChildren behavior 2024-12-13 13:57:17 -08:00
Daniel Imms 9186c724c4 Merge pull request #5171 from Tyriar/links
Fix links sometimes not activating
2024-09-27 13:08:14 -07:00
Daniel Imms f764c0ac91 Fix links sometimes not activating
This was a very long standing bug that was hard to nail down a repro case. Turns
out this was because at some point the current link can get cleared and re-evaluated,
I think because of a different fix we made. That caused the object check to fail.
So the fix there is to check link equality, not js object equality.

Additionally I found we don't dispose of old linkifiers when open is called
multiple times.

See microsoft/vscode#230010
2024-09-27 12:58:34 -07:00
jeanp413 ad38b1a166 Fix https://github.com/microsoft/vscode/issues/224750 2024-08-14 07:45:37 -05:00