[pull] master from xtermjs:master#151
Merged
Merged
Conversation
Valid column indices are 0 through cols - 1. The previous check used startCol > cols, so on an 80-column terminal column 80 was accepted while column 100 correctly threw. Use >= so the out-of-range guard matches the documented error for invalid search positions. Co-authored-by: Cursor <cursoragent@cursor.com>
The merging-pages index sort used (a, b) => a > b ? 1 : -1, which returns -1 when a === b and violates the comparator contract. Use (a, b) => a - b for ascending numeric order. Co-authored-by: Cursor <cursoragent@cursor.com>
LinkComputer rebuilt the search RegExp with (regex.flags || '') + 'g', which throws if the caller already passed a global regex. Only append g when it is not already present in regex.flags. Co-authored-by: Cursor <cursoragent@cursor.com>
) <!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Improves reliability and correctness of `bin/` maintenance scripts used for local development and CI. ## Behavioral fixes - **Exit codes**: `test_integration.js` exits with code 1 when `--suite` names an unknown suite; `test_unit.js` uses a non-zero fallback (`-1`) when the coverage or mocha child process has no status; `esbuild_all.mjs` exits non-zero if any parallel esbuild child fails. - **Repo root**: `setup-full.mjs` resolves the repository root one directory above `bin/` (was incorrectly using `bin/` as root). - **esbuild_all**: Propagates child build failures instead of always exiting 0. - **Integration suites**: When `--suite` is omitted, all configured Playwright suites (core + addons) run; when provided, only the matching suite runs. - **test_unit.js**: Declares the `files` filter variable so file arguments from `npm run test-unit` work without a ReferenceError. - **test_mousemodes.js**: Uses the correct cursor-home CSI (`ESC [ H`) when clearing the menu screen. - **Cleanup**: Removes debug logging from the test-unit coverage path; adds a missing semicolon after the suite regex match. ## Affected scripts - `bin/test_integration.js` - `bin/test_unit.js` - `bin/esbuild_all.mjs` - `bin/setup-full.mjs` - `bin/test_mousemodes.js` ## Testing - Syntax-checked affected scripts with `node --check` - Verified `node bin/test_integration.js --suite=unknown` exits 1 with an error message - `npm run lint-changes` (no TypeScript files changed) <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-94b28f5d-740c-4cb6-8cd9-40f35bc6086c"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-94b28f5d-740c-4cb6-8cd9-40f35bc6086c"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div>
…89d6 fix(addons): search bounds, webgl sort, web-links regex, fit height clamp
PR #5966 switched benchmark imports to ../../src/ paths that do not resolve at runtime. Restore common/* and browser/* imports (with benchmark-only tsconfig paths for typechecking) and NODE_PATH=./out on benchmark npm scripts so emitted requires resolve against out/. Fixes #5970 Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com>
* fix(buffer): bound combined-cell copy in copyCellsFrom When copying a column range, combined-string metadata was copied for every source column >= srcCol with no upper limit. Partial copies could pull _combined entries from outside [srcCol, srcCol + length) into the destination and corrupt cells beyond the copied span. Only copy combined keys within the same range as the cell data loop. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(buffer): clear stale _combined entry in BufferLine.setCell setCell updated combined data when IS_COMBINED_MASK was set but left orphaned _combined[index] entries when writing a non-combined cell. Delete the map entry in that case so later combined copies and lookups stay aligned with cell content flags. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(buffer): clear stale extended attrs in BufferLine.setCell setCell stored extended attributes when HAS_EXTENDED was set but did not remove orphaned _extendedAttrs[index] when overwriting with a cell without extended background data. Delete the entry in that case, matching the combined-cell cleanup added for setCell earlier. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(buffer): clear dest extended attrs in copyCellsFrom When copying a column range, extended attributes were copied from source cells with HAS_EXTENDED but stale _extendedAttrs on the destination were left for cells without extended data. Delete dest entries in that case, matching setCell behavior and the bounded _combined copy loop. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(buffer): clear extended attrs in setCellFromCodepoint The input-handler fast path set extended data when HAS_EXTENDED was present but left orphaned _extendedAttrs entries when overwriting with non-extended cells. Delete the map entry in that case, matching setCell and copyCellsFrom. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(buffer): clear stale combined data in setCellFromCodepoint When the input handler overwrites a cell that previously held a grapheme cluster (IS_COMBINED_MASK), setCellFromCodepoint updated _data and _extendedAttrs but left this._combined[index] intact. setCell already deletes _combined for non-combined cells; this path did not, so getString and renderers could show the old cluster string after a normal codepoint write. Add delete this._combined[index] at the start of setCellFromCodepoint, matching setCell's non-combined branch and the extended-attrs cleanup already performed in the same method. Co-authored-by: Cursor <cursoragent@cursor.com> * perf(buffer): only delete stale combined/extended map entries when present Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com> * fix(buffer): treat combined/extended maps as flag-gated caches _flags in _data are authoritative; sparse maps are only read when IS_COMBINED_MASK or HAS_EXTENDED is set. setCellFromCodepoint no longer touches _combined. loadCell clears CellData side fields when flags are off. copyCellsFrom copies map entries per-cell from src flags only. Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )