Skip to content

[lexical-y] Documentation Update: Add five open questions to the decision register and update the comment-spread row - #9611

Merged
zurfyx merged 2 commits into
mainfrom
zurfyx/y-decisions-open-1030
Oct 30, 2026
Merged

zurfyx merged 2 commits into
mainfrom
zurfyx/y-decisions-open-1030

Conversation

@zurfyx

@zurfyx zurfyx commented Oct 30, 2026

Copy link
Copy Markdown
Member

Description

The @lexical/y decision register did not list several design questions that came up on 10-30. This adds them as OPEN rows, each with where it stands and its links:

D65 (a comment spreading after an offline client types plain text into it) now says that #9562 is parked, that the case is tracked in #9609 with tests in #9605, and links #9603, the 64-item end scan cap.

Changeset

None: documentation only.

Test plan

Before

The register had no rows for #9561, #9582, #9608, #9610 or #9599, and D65 linked only #9564.

After

$ pnpm run ci-check
...
Changeset check passed: 41 pending changeset(s) valid.
...
Found 0 errors

…sion register and update the comment-spread row

## Description

The `@lexical/y` decision register did not list several design questions that came up on 10-30. This adds them as `OPEN` rows, each with where it stands and its links:

- D74: keeping the run ends of text an undo removes from inside a format run. #9561 is parked after it regressed a concurrent undo (#9593); option C would settle the kept ends inside the undo that makes them stale, where the undoing client has seen them. Its tests move to main in #9605.
- D75: the table padding contract under collaboration (#9582): only the client that created a row pads it, or a width that is a function of the document. Meanwhile #9539 pads only the rows that lost cells.
- D76: a code-token-aware trim for remade text (#9608).
- D77: a stale comment on a word a collaborator rewrites lands on the new word for one client id order only (#9610): clarify the docs or make both orders agree.
- D78: a format spreading after one client's triple undo (#9599).

D65 (a comment spreading after an offline client types plain text into it) now says that #9562 is parked, that the case is tracked in #9609 with tests in #9605, and links #9603, the 64-item end scan cap.

## Changeset

None: documentation only.

## Test plan

### Before

The register had no rows for #9561, #9582, #9608, #9610 or #9599, and D65 linked only #9564.

### After

```
$ pnpm run ci-check
...
Changeset check passed: 41 pending changeset(s) valid.
...
Found 0 errors
```
@vercel

vercel Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
lexical Ready Ready Preview Oct 30, 2026 8:17pm UTC
lexical-playground Ready Ready Preview Oct 30, 2026 8:17pm UTC

Request Review

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 30, 2026
@pkg-pr-new

pkg-pr-new Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
lexical

npm i https://pkg.pr.new/lexical@9611

@lexical/a11y

npm i https://pkg.pr.new/@lexical/a11y@9611

@lexical/clipboard

npm i https://pkg.pr.new/@lexical/clipboard@9611

@lexical/code

npm i https://pkg.pr.new/@lexical/code@9611

@lexical/code-core

npm i https://pkg.pr.new/@lexical/code-core@9611

@lexical/code-prism

npm i https://pkg.pr.new/@lexical/code-prism@9611

@lexical/code-shiki

npm i https://pkg.pr.new/@lexical/code-shiki@9611

@lexical/compiler

npm i https://pkg.pr.new/@lexical/compiler@9611

@lexical/devtools-core

npm i https://pkg.pr.new/@lexical/devtools-core@9611

@lexical/dragon

npm i https://pkg.pr.new/@lexical/dragon@9611

@lexical/eslint-plugin

npm i https://pkg.pr.new/@lexical/eslint-plugin@9611

@lexical/extension

npm i https://pkg.pr.new/@lexical/extension@9611

@lexical/fast-check

npm i https://pkg.pr.new/@lexical/fast-check@9611

@lexical/file

npm i https://pkg.pr.new/@lexical/file@9611

@lexical/hashtag

npm i https://pkg.pr.new/@lexical/hashtag@9611

@lexical/headless

npm i https://pkg.pr.new/@lexical/headless@9611

@lexical/history

npm i https://pkg.pr.new/@lexical/history@9611

@lexical/html

npm i https://pkg.pr.new/@lexical/html@9611

@lexical/internal

npm i https://pkg.pr.new/@lexical/internal@9611

@lexical/link

npm i https://pkg.pr.new/@lexical/link@9611

@lexical/list

npm i https://pkg.pr.new/@lexical/list@9611

@lexical/mark

npm i https://pkg.pr.new/@lexical/mark@9611

@lexical/markdown

npm i https://pkg.pr.new/@lexical/markdown@9611

@lexical/mdast

npm i https://pkg.pr.new/@lexical/mdast@9611

@lexical/offset

npm i https://pkg.pr.new/@lexical/offset@9611

@lexical/overflow

npm i https://pkg.pr.new/@lexical/overflow@9611

@lexical/plain-text

npm i https://pkg.pr.new/@lexical/plain-text@9611

@lexical/react

npm i https://pkg.pr.new/@lexical/react@9611

@lexical/rich-text

npm i https://pkg.pr.new/@lexical/rich-text@9611

@lexical/selection

npm i https://pkg.pr.new/@lexical/selection@9611

@lexical/table

npm i https://pkg.pr.new/@lexical/table@9611

@lexical/tailwind

npm i https://pkg.pr.new/@lexical/tailwind@9611

@lexical/text

npm i https://pkg.pr.new/@lexical/text@9611

@lexical/utils

npm i https://pkg.pr.new/@lexical/utils@9611

@lexical/y

npm i https://pkg.pr.new/@lexical/y@9611

@lexical/yjs

npm i https://pkg.pr.new/@lexical/yjs@9611

commit: 97e9de9

@meta-code-review

meta-code-review Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

AI review status for this pull request.

Review status Updated
🟢 Reviewed (for maintainers only) Oct 30, 2026, 8:33 PM UTC

@meta-code-review meta-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me. The five new OPEN rows (D74 to D78) and the D65 update match the issues and pull requests they link, the row IDs continue from D73 without gaps, and every new link reference is defined and points at the right issue or pull request page.

One optional, non-blocking suggestion:

  • packages/lexical-y/DECISIONS.md line 134 (D75): "Meanwhile [#9539] … pads only the rows that lost cells" reads as current behaviour, but #9539 is still an open pull request. The Open table's Where it stands column is where the register records status (D65 and D74 say when their pull requests are parked), so consider "Meanwhile the open [#9539] would pad only the rows that lost cells …". A pointer to D55, the accepted limit for two clients padding a table at once, would also connect the two rows.

No changeset is needed: DECISIONS.md is not in the files list of packages/lexical-y/package.json, so nothing published changes, and CONTRIBUTING.md says changes with no effect on people who use Lexical need none.

Comment thread packages/lexical-y/DECISIONS.md Outdated
| D68 | **Splice-based text edit helpers exported from Lexical** for agents that rewrite text, and named APIs for intent that `setTextContent` drops. | Agents should edit text in place; the API shape is undecided. | `OPEN` | 10-27 | [#9483] |
| D69 | **Comments on block decorators** (an image), as in Google Docs. | Not today, same as `MarkNode`; keep the door open. | `OPEN` | 10-23 | [#9380] |
| D74 | **Keeping the run ends of text an undo removes from inside a format run.** | [#9561] keeps them, but regressed a concurrent undo ([#9593]) and is parked. Option C: settle the kept ends inside the undo that makes them stale, where the undoing client has seen them; the truly concurrent case would stay a documented limit. Its tests move to main in [#9605]. | `OPEN` | 10-30 | [#9561], [#9593], [#9605] |
| D75 | **The table padding contract under collaboration.** When every client re-runs the table transforms after remote changes, concurrent pads add cells and the table never settles. | Padding that converges needs a rule: only the client that created a row pads it, or a width that is a function of the document instead of each client's write. Meanwhile [#9539], when an edit leaves the table's rows in place, pads only the rows that lost cells. | `OPEN` | 10-30 | [#9582], [#9539] |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional, non-blocking: #9539 is still an open pull request, so "Meanwhile [#9539] … pads only the rows that lost cells" reads as current behaviour. D65 and D74 say when their pull requests are parked; consider "Meanwhile the open [#9539] would pad only the rows that lost cells …", plus a pointer to D55, the accepted limit for two clients padding a table at once.

…, and point to D55

## Description

D75 described #9539's padding as current behaviour, but #9539 is an open pull request. The row now says what it would do, and points to D55, the accepted limit for two clients padding a table at once.

## Changeset

None: documentation only.

## Test plan

### Before

D75 read "Meanwhile #9539 ... pads only the rows that lost cells".

### After

```
$ pnpm run ci-check
...
Found 0 errors
```

@meta-code-review meta-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good: D74-D78 and the D65 update match the issues and pull requests they link, the row ids and link definitions are consistent, and no changeset is needed because DECISIONS.md is outside @lexical/y's published files. Two optional, non-blocking suggestions:

  1. D75 (packages/lexical-y/DECISIONS.md, line 134): #9539 was merged into main on 10-30, shortly before the commit that changed this sentence to "the open [#9539] would pad", so the row now describes shipped padding as pending. packages/lexical-y/AGENTS.md asks contributors and reviewers to read this register before working on @lexical/y, so it is worth keeping the status current, for example: "Meanwhile [#9539], merged on 10-30, pads only the rows that lost cells when an edit leaves the table's rows in place." (The first commit's present-tense wording was accurate.)
  2. D74 (line 133): #9607, also open, adds a different D74 (an ACCEPTED LIMIT for the Yjs version guard) in the Accepted limits table. Because the two rows land in different tables, merging both conflicts only in the link definitions at the end of the file and would leave two D74 rows. The register's preamble says rows are never deleted, so whichever of the two pull requests lands second could take the next free id.

| D67 | **The rest of the server-defence proposals:** a relay gate judging version records against a published ceiling, budgets, recovery, an author map, agent write policies. | Researched and proposed; nothing decided beyond D46. | `OPEN` | 10-29 | |
| D68 | **Splice-based text edit helpers exported from Lexical** for agents that rewrite text, and named APIs for intent that `setTextContent` drops. | Agents should edit text in place; the API shape is undecided. | `OPEN` | 10-27 | [#9483] |
| D69 | **Comments on block decorators** (an image), as in Google Docs. | Not today, same as `MarkNode`; keep the door open. | `OPEN` | 10-23 | [#9380] |
| D74 | **Keeping the run ends of text an undo removes from inside a format run.** | [#9561] keeps them, but regressed a concurrent undo ([#9593]) and is parked. Option C: settle the kept ends inside the undo that makes them stale, where the undoing client has seen them; the truly concurrent case would stay a documented limit. Its tests move to main in [#9605]. | `OPEN` | 10-30 | [#9561], [#9593], [#9605] |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional: #9607 (also open) adds a different D74, an ACCEPTED LIMIT for the Yjs version guard, in the Accepted limits table. The two rows are in different tables, so merging both conflicts only in the link definitions at the end of the file and would leave two D74 rows. The register's preamble says rows are never deleted, so whichever of the two pull requests lands second could take the next free id.

| D68 | **Splice-based text edit helpers exported from Lexical** for agents that rewrite text, and named APIs for intent that `setTextContent` drops. | Agents should edit text in place; the API shape is undecided. | `OPEN` | 10-27 | [#9483] |
| D69 | **Comments on block decorators** (an image), as in Google Docs. | Not today, same as `MarkNode`; keep the door open. | `OPEN` | 10-23 | [#9380] |
| D74 | **Keeping the run ends of text an undo removes from inside a format run.** | [#9561] keeps them, but regressed a concurrent undo ([#9593]) and is parked. Option C: settle the kept ends inside the undo that makes them stale, where the undoing client has seen them; the truly concurrent case would stay a documented limit. Its tests move to main in [#9605]. | `OPEN` | 10-30 | [#9561], [#9593], [#9605] |
| D75 | **The table padding contract under collaboration.** When every client re-runs the table transforms after remote changes, concurrent pads add cells and the table never settles. | Padding that converges needs a rule: only the client that created a row pads it, or a width that is a function of the document instead of each client's write. Meanwhile the open [#9539] would pad, when an edit leaves the table's rows in place, only the rows that lost cells. Two clients padding at once is the accepted limit D55. | `OPEN` | 10-30 | [#9582], [#9539] |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional: #9539 was merged into main on 10-30, shortly before the commit that changed this sentence to "the open [#9539] would pad", so the row now describes shipped padding as pending. packages/lexical-y/AGENTS.md asks contributors and reviewers to read this register first, so keeping the status current helps:

Suggested change
| D75 | **The table padding contract under collaboration.** When every client re-runs the table transforms after remote changes, concurrent pads add cells and the table never settles. | Padding that converges needs a rule: only the client that created a row pads it, or a width that is a function of the document instead of each client's write. Meanwhile the open [#9539] would pad, when an edit leaves the table's rows in place, only the rows that lost cells. Two clients padding at once is the accepted limit D55. | `OPEN` | 10-30 | [#9582], [#9539] |
| D75 | **The table padding contract under collaboration.** When every client re-runs the table transforms after remote changes, concurrent pads add cells and the table never settles. | Padding that converges needs a rule: only the client that created a row pads it, or a width that is a function of the document instead of each client's write. Meanwhile [#9539], merged on 10-30, pads only the rows that lost cells when an edit leaves the table's rows in place. Two clients padding at once is the accepted limit D55. | `OPEN` | 10-30 | [#9582], [#9539] |

Merged via the queue into main with commit 545003a Oct 30, 2026
57 checks passed

This branch was successfully deployed

2 active deployments
Preview – lexical — 97e9de94 Deployed Oct 30, 2026 by vercel[bot]
Preview – lexical-playground — 97e9de94 Deployed Oct 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant