Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Beta]: Safari pagination: Shift+Down selects only the first line of a paged paragraph and then stops extending

Abierto
#5,260 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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

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

bug safari target:beta

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
  1. Open https://beta.platejs.org/docs/pagination in Safari, on a fresh load.
  2. In the Preview, click at the start of the first paragraph under Paged documents, before Every Plate plugin renders on pages.
  3. 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 next commit/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:621 on next defines a style that adds content:'\A' after every element marked data-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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de udecode/plate

Todos los issues de udecode/plate

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.