A simple, high performance text editor.
Go to file
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
.qwen Add ShapeText/DrawShapedText: single shaper call, zero-call drawing 2026-05-12 12:06:28 -04:00
cmd/pad IME: accept the one stale-caret commit after a key-event edit; fix the IME hold 2026-09-19 21:52:35 -04:00
doc IME: accept the one stale-caret commit after a key-event edit; fix the IME hold 2026-09-19 21:52:35 -04:00
internal editor: don't record a phantom trailing visual line at the window end 2026-09-20 07:49:52 -04:00
scripts IME: map commits against the whole buffer; drop the renderer-side model 2026-09-13 11:57:38 -04:00
tools/touchinject Pinch-to-font-size (continuous, content-point pinned) + IME-open scroll fix 2026-08-23 09:00:51 -04:00
.DS_Store Add drawPng function to Renderer for PNG icon rendering 2026-05-10 06:26:29 -04:00
.gitignore Pinch-to-font-size (continuous, content-point pinned) + IME-open scroll fix 2026-08-23 09:00:51 -04:00
go.mod IME: guard distant commits; arm the resync on the first anomaly 2026-09-13 22:31:28 -04:00
go.sum IME: guard distant commits; arm the resync on the first anomaly 2026-09-13 22:31:28 -04:00