Pad/internal/editor
Greg Pomerantz 7a6b130078 editor: don't record a phantom trailing visual line at the window end
The shaper flags the last visible glyph of a final line without a
trailing newline (and the synthetic end-of-text glyph after a trailing
newline); the layout capture recorded both as visual-line starts at
len(str). Taps below the content mapped onto that phantom line
(harmless: it returned the EOF byte), but CaretPoint resolved the
caret through it and drew the caret on the phantom line - one line
BELOW where the typed text lands. Result: tap the empty space below
the last line, the cursor appears one line down, and the typed letter
appears one line ABOVE the cursor.

- render.go: only record a next-line start when a real line follows
  the break (a real newline cluster, or a soft wrap with content
  after it).
- state.go: a tap below every recorded line now returns the window
  end explicitly (the old clamp-to-last-text-line fallback remains
  only for layouts with no line starts at all).

Verified on the emulator for both 'test\nA' (caret now drawn at the
end of the 'A' line, where the letter lands) and 'test\nA\n' (caret
and letter on the trailing line); full test suite green.
2026-09-20 07:49:52 -04:00
..
auto_save_test.go gofmt: format all remaining files with the go1.27 toolchain 2026-08-23 10:03:27 -04:00
buffer_test.go gofmt: format all remaining files with the go1.27 toolchain 2026-08-23 10:03:27 -04:00
chunked_buffer_fuzz_test.go Data-corruption test suite: differential fuzz + atomicity contract 2026-08-17 12:43:17 -04:00
chunked_buffer_test.go Add text selection, real-file e2e tests, and Android arrow-key support 2026-08-17 00:32:53 -04:00
chunked_buffer.go IME: fix random mid-word capitalization (stable snippet window + commit in-flight handling) 2026-09-13 17:00:49 -04:00
cursor_test.go Fix word-wrap scroll jump: visual-line mapping via WrapIndex 2026-08-17 19:46:47 -04:00
deterministic_file.go feat: virtual scrolling with chunked buffer for large files 2026-06-05 09:11:32 -04:00
dirwatcher.go Browser: drive the live list off inotify, not a 1s poll 2026-09-02 19:21:19 -04:00
e2e_test.go gofmt: format all remaining files with the go1.27 toolchain 2026-08-23 10:03:27 -04:00
filename_test.go gofmt: format all remaining files with the go1.27 toolchain 2026-08-23 10:03:27 -04:00
find_scroll_test.go Fix find scroll position on long files 2026-08-20 06:50:14 -04:00
font_scale_test.go Track Android user font scale in all line-height geometry (Phase 11) 2026-08-17 10:59:34 -04:00
frame.go IME: map commits against the whole buffer; drop the renderer-side model 2026-09-13 11:57:38 -04:00
ime_range_test.go IME: map commits against the whole buffer; drop the renderer-side model 2026-09-13 11:57:38 -04:00
integration_test.go editor+ui: complete Android IME wiring (SelectionCmd, SnippetCmd, InputHintOp) 2026-08-16 02:43:58 -04:00
line_index_fuzz_test.go Data-corruption test suite: differential fuzz + atomicity contract 2026-08-17 12:43:17 -04:00
logic.go IME: fix random mid-word capitalization (stable snippet window + commit in-flight handling) 2026-09-13 17:00:49 -04:00
mock_setup.go Handle drags: 1:1 finger tracking with cross-flip; fix caret/taps on empty lines 2026-08-19 22:34:12 -04:00
perf_probe.go perf: default-off in-app profiler + debug scroll jumps; verify scroll perf & clamping 2026-08-16 16:53:28 -04:00
pinch_font_test.go Pinch-to-font-size (continuous, content-point pinned) + IME-open scroll fix 2026-08-23 09:00:51 -04:00
scroll_fix_test.go gofmt: format all remaining files with the go1.27 toolchain 2026-08-23 10:03:27 -04:00
search_test.go Stop the find input clearing itself while typing 2026-08-20 13:22:50 -04:00
search.go Hold the restored scroll on its line while wrap counts settle (spec §2.4) 2026-08-20 21:03:56 -04:00
selection_menu_track_test.go Make the editor top and bottom bars ~30% taller for bigger tap targets 2026-09-03 12:34:18 -04:00
selection_test.go Add text selection, real-file e2e tests, and Android arrow-key support 2026-08-17 00:32:53 -04:00
session.go Restore the browser page on relaunch, not the last edited file 2026-09-03 12:11:44 -04:00
state_api_fuzz_test.go Handle drags: 1:1 finger tracking with cross-flip; fix caret/taps on empty lines 2026-08-19 22:34:12 -04:00
state.go editor: don't record a phantom trailing visual line at the window end 2026-09-20 07:49:52 -04:00
tap_scroll_property_test.go Prove tap-to-position is scroll-offset independent; fix float32 decomposition bug 2026-08-17 09:57:21 -04:00
touch_selection_test.go Handle drags: 1:1 finger tracking with cross-flip; fix caret/taps on empty lines 2026-08-19 22:34:12 -04:00
wrap_apply_test.go gofmt: format all remaining files with the go1.27 toolchain 2026-08-23 10:03:27 -04:00
wrap_bookkeeping_test.go Fix word-wrap scroll jump: visual-line mapping via WrapIndex 2026-08-17 19:46:47 -04:00
wrap_index_test.go Fix word-wrap scroll jump: visual-line mapping via WrapIndex 2026-08-17 19:46:47 -04:00
wrap_index.go Fix word-wrap scroll jump: visual-line mapping via WrapIndex 2026-08-17 19:46:47 -04:00
wrap_mapping_test.go Handle drags: 1:1 finger tracking with cross-flip; fix caret/taps on empty lines 2026-08-19 22:34:12 -04:00