[Beta]: Safari pagination: Shift+Down selects only the first line of a paged paragraph and then stops extending
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- react, typescript
- Área
- accessibility, frontend
Línea de trabajo
Start with the pagination rendering style in packages/plitejs/src/pagination/react.tsx near line 621, where the issue reports generated line breaks after native flow breaks. Reproduce the steps on /docs/pagination in Safari and compare them with /docs/toc; investigate whether those breaks stop selection extension. Done means repeated Shift+↓ presses extend the selection line by line in the paged paragraph.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Testing lane
- Repository:
udecode/plate - Branch:
next - Release channel: Beta
- Exact commit/package version:
NOT_ENOUGH_INFO
Summary
In Safari, pressing Shift+↓ repeatedly from the start of a paragraph in the paged editor on /docs/pagination selects the first rendered line, and then the selection stops growing. In the same Safari, the same keys in a paragraph of the Table of Contents demo, which is not paged, extend the selection by one line per press. An agent reproduced the stop on 5 of 5 clean loads. Sin, who tested this page, also hit it by hand, but says it happens only sometimes and is hard to repeat.
Reproduction
Repro 1: /docs/pagination, Safari 27
- Open https://beta.platejs.org/docs/pagination in Safari, on a fresh load.
- In the Preview, click at the start of the first paragraph under
Paged documents, beforeEvery Plate plugin renders on pages. - Press Shift+↓ three times.
The first press selects the first rendered line, which ends at keep in the recording. The second and third presses leave the selection as it is. getSelection().toString() also returns only the first line. Shift+↑ shrinks the stuck selection, and a plain ↓ moves the caret to the next line, where typed text lands.
On https://beta.platejs.org/docs/toc in the same Safari, the same keys at the start of the first paragraph, The Table of Contents (TOC) feature allows you ..., select its first line, then its second line, then the next paragraph. That demo is not paged. It shows that Safari delivers the keys. It is not a reference for pagination.
An agent driving Safari 27 on macOS through Computer Use ran these steps on 2026-10-21. The selection stopped at the first line on 5 of 5 clean loads, and also once in the Section 5. paragraph before a reset.
Sin hit the same stop by hand in Safari on 2026-10-23 (Beijing time), but says it is intermittent and hard to repeat. No recording of Sin's case exists, and the exact trigger is not known.
Expected
Each Shift+↓ extends the selection by one more line, as it does on the Table of Contents demo in the same Safari. This is the expected result recorded in the tester's report. The Table of Contents demo is an input control, not a reference, and the pagination page has no reference site.
Actual
After the first Shift+↓, the selection holds the first rendered line, and more presses do not extend it. Because the selection stops inside the page, nobody could check keyboard selection across a page break.
Environment
- Exact
nextcommit/Beta package version:NOT_ENOUGH_INFO. The agent's run was not tied to a deployed commit. - Repro 1: Safari 27 on macOS, 2026-10-21. An agent drove the real browser through Computer Use, not Playwright.
- Sin's case: Sin's own Safari, by hand, 2026-10-23 (Beijing time). The Safari and macOS versions were not recorded.
- Other browsers were not tried with these steps.
Caveat
- A reading of the code suggests a candidate mechanism, not proven. The paged view ends each rendered line with a generated line break.
packages/plitejs/src/pagination/react.tsx:621onnextdefines a style that addscontent:'\A'after every element markeddata-pagination-native-flow-break='true', and the agent saw that attribute at the line ends of the selected paragraph. Safari's line-by-line extension may stop at that break. Nobody has checked this with a breakpoint or a fix. - The agent's 5 of 5 ran on 2026-10-21. Sin's retest two days later, possibly on a newer deploy, found the stop only sometimes. The agent's count does not settle how often it happens now.
Evidence
- Repro 1: English clip, 18 seconds, composed from the agent's Safari window captures of each step. The left side is the paged paragraph on /docs/pagination. The right side is the Table of Contents control, from a separate run, lined up by step. A zoomed strip under each side shows the selection. At 0:00 nothing is selected. From 0:02, after one Shift+↓, both sides select their first line. From 0:04, after the second press, the paged side still has only its first line, while the control has both lines of its first paragraph. From 0:06, after the third press, the paged side is unchanged and the control also selects
How to use the Table of Contents:. That state holds to the end.
Repro 1 — Safari 27, /docs/pagination (right side: /docs/toc input control)
https://github.com/user-attachments/assets/ad73e050-56b2-480e-9796-701d2e9ae0a3
Related
Other Beta issues on the pagination pages from the same round of testing:
- #5253: in Facing mode, clicks on the first left page land on the right page and drag-select selects nothing
- #5254: the docs sidebar covers the page and toolbar at 1280 px and wider
- #5255: with Facing on, the right page is cut off on first load
- #5257: in Safari, text shifts when the caret moves and headings overlap the text during selection
- #5258: typing lags with the default 990 stress pages
- Lenguaje dominante
- TypeScript
- Estrellas
- 16.6k
- Forks
- 993
- Merge medio
- 20 h 21 min
- PR fusionados (30 d)
- 60
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de udecode/plate
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
[Beta]: After Enter saves an edited link URL, the link toolbar stays hidden while the caret is in the linkPosiblemente ocupada @zbeyens la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
udecode/plate#5314 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
[Beta]: The docs Demo example page starts with an empty editorPosiblemente ocupada @natamox la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
udecode/plate#5308 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de udecode/plate
Issues similares
-
bug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
PhyberApex/kuroshiro#1687 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
microsoft/monaco-editor#5563 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
awslabs/visual-asset-management-system#937 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100