Skip to content

feat(ime): editing toolbar + adaptive dock height + floating resize (#48 #49 #50) - #51

Merged
willwade merged 3 commits into
mainfrom
feat/ime-ux-suite
Sep 16, 2026
Merged

willwade merged 3 commits into
mainfrom
feat/ime-ux-suite

Conversation

@willwade

Copy link
Copy Markdown
Contributor

Fixes #48 #49 #50 — Heide's three UX suggestions. Editing toolbar (backspace, cursor, clipboard) with engine re-anchoring; adaptive dock height (35% on tablets); floating window resize handle. DCO signed.

…e-convert

Score 4/10 with 2 criticals + 4 importants; all fixed:

Criticals:
- C1 Float crashed on first tap: toolbar added to floating while still
  attached to dockedRoot → IllegalStateException. Fixed: detach before
  attach (same pattern as canvasHost).
- C2 re-anchor double-converted the caret: seedBuffer already does the
  UTF-16→UTF-8 conversion internally; pre-converting shifted the anchor
  past the caret for non-ASCII text. Fixed: pass before.length directly.

Importants:
- I1 toolbar vanished after Float→Dock: exitFloatingMode removed it from
  floating but never re-added to docked. Fixed: re-insert at index 0.
  Also fixed the enterFloatingMode fallback path.
- I2 empty before-text left engine anchored to stale text. Fixed:
  newSession() (full reset) when the field is empty.
- I3 dock height didn't track fold/unfold. Fixed: onConfigurationChanged
  recomputes imeHeightPx() and calls setDockedHeight.
- I4 36dp touch targets → 48dp (accessibility: Heide is motor-impaired).

Minors: wrong ratio comment (0.6→0.47), floatingParams field removed
(write-only), grapheme-cluster backspace noted as v1 scope.

Signed-off-by: will wade <willwade@gmail.com>
…fold fix

- All 7 toolbar buttons now 48dp minimum touch target (5 were 44dp —
  the height fix only covered half the surface)
- onBufferChanged only fires for buffer-MUTATING actions (backspace,
  cursor, paste) — Copy and Select All no longer discard engine
  context mid-sentence
- Fold-while-floating: the recreated docked root is re-shrunk to 40dp
  (was full-height behind the floating overlay)
- Unused imeHeight local removed

Review score trajectory: 4 → 7 → expected 8+.

Signed-off-by: will wade <willwade@gmail.com>
@willwade
willwade merged commit 615dbc2 into main Sep 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

UX: dock mode too large — 42% of screen hides the zoom target

1 participant