zudo-text

検索したい単語を入力

いつでも検索バーを開ける

Viewport and Scroll Trace

The writing editor has an opt-in trace for investigating mobile keyboard, caret, and scroll behavior. On Android and iOS, enable it in Settings → Mobile; browser builds can still use the debugViewport URL override. The preference stays on this device and app/site origin instead of following synced workspace settings.

Enable or disable

In the Android or iOS app, open Settings → Mobile and turn on Record viewport and scroll trace. The page shows whether recording is on. The preference is stored locally on this device and is not synced. If the app cannot retain it, Settings → Mobile says that your choice lasts only for the current session.

Only the opt-in choice is stored in local storage. Captured events stay in memory, are bounded to the latest 500 entries, and contain no note text or printable keystrokes. Turn recording off when the reproduction is complete; mounted editors stop capturing immediately without changing their text, selection, or undo history.

For browser builds, including the production web editor, the URL override remains available:

Open the editor with ?debugViewport=1 in its URL, for example:

https://editor.zudo-text.app/?debugViewport=1

For an editor URL that already has a path or query, add debugViewport=1 before any # route and preserve the existing values. For example, the root editor route can be https://editor.zudo-text.app/?debugViewport=1#/. The query is read once when the app starts and initializes this origin's local preference. Later visits on that device and browser keep tracing enabled without the parameter.

To initialize it as off, open the editor with ?debugViewport=0. A later explicit in-app toggle takes precedence immediately and saves the new local preference. New editors inherit the current state. Disabled editors attach no diagnostic DOM listeners or observers.

If a browser cannot save the local preference, tracing still follows the URL choice for the current session; the URL path has no new retention notice UI. In the native app, Settings → Mobile shows a notice when it cannot retain the choice. This diagnostic preference belongs to this device and app/site origin; it is never synced with workspace settings.

Reproduce and copy

  1. Record the app build SHA, Android version/API level, device or emulator model, and keyboard version. Use a disposable note with synthetic text; never export a trace from a personal note.

  2. In the Android or iOS app, enable recording in Settings → Mobile. On the production web editor, use ?debugViewport=1 and reload once instead.

  3. Open the disposable note, focus the editor, and bring up the software keyboard.

  4. Type the synthetic fixture and reproduce the scroll or caret issue. Tap a visible editor line and repeat if needed.

  5. Choose Copy viewport trace from Settings → Mobile or the command palette, then turn recording off. Paste the clipboard contents into a local .json file for review. Browser and desktop builds download JSON when clipboard access is blocked; native Android/iOS reports a visible failure and does not try a browser download. A denied copy is a failed export, not saved evidence.

  6. Attach the JSON file or paste its contents into the issue tracking the device run, such as #6957.

The bounded trace records the last 500 pointer, focus, selection, editor-scroll, window-scroll, and visual-viewport events. Each entry includes its timestamp, CodeMirror selection user event, caret and compact-shell rectangles, editor and window scroll positions, visual viewport offset/height/scale, and effective typewriter-scrolling setting. It does not include note text or printable keystrokes.

CodeMirror/jsdom coverage verifies the lifecycle and privacy contract, not native keyboard/IME behavior or packaged clipboard access. The Android device checklist is tracked in #6776; this runbook does not claim an installed-device pass. Samsung keyboard evidence remains unverified in #7051.