Skip to content

fix(tv): open the on-screen keyboard only on explicit activation - #2179

Open
oasisjpeg wants to merge 5 commits into
4gray:masterfrom
oasisjpeg:fix/tv-explicit-keyboard
Open

oasisjpeg wants to merge 5 commits into
4gray:masterfrom
oasisjpeg:fix/tv-explicit-keyboard

Conversation

@oasisjpeg

@oasisjpeg oasisjpeg commented Nov 9, 2026 •

Copy link
Copy Markdown

What changed

Text inputs on the TV app no longer summon the on-screen keyboard when the user merely arrows through a form. Fields gain focus read-only; pressing OK/Enter or clicking inside the box starts editing, and blur restores read-only for the next pass.

  • New installImeGuard in @iptvnator/tv/ui arms text-like inputs (text, url, password, search, number, email, tel, textarea) as read-only on focus; activation refocuses so firmwares that only summon the IME on a focus transition still open the keyboard.
  • Read-only controls are barred from constraint validation, so on any submit attempt (button click, or Enter on an editable field for implicit submission) the form's guarded fields unlock first — required checks still run and can refuse empty values.
  • A shared backspaceEdits/editingText predicate in @iptvnator/tv/util unifies the previously divergent "Backspace in an input" carve-outs: remote navigation, TvDialog, settings panels, and player back-intents now all treat Backspace and caret keys as navigation on read-only fields and as text entry only while editing — previously a read-only Backspace inside a picker dialog reached the page's back action instead of closing the dialog.
  • Range sliders, checkboxes, radios and buttons are untouched.

Why

On Tizen, focusing an editable input always opens the IME, so every text field on the way through a form popped the keyboard up and down — settings pages with several fields were tedious to cross.

Testing

  • libs/tv/testing/platform.test.ts: focus stays read-only, Enter/click activates, blur re-arms, Enter inside an editable field stays native, submit attempts unlock required fields for validation, backspaceEdits separates deletion from navigation, non-text input types are not guarded.
  • Verified on a Samsung M7 (Tizen 5.5): arrowing over fields is silent, OK opens the keyboard, typing and Done work, leaving the field re-arms it.

Release note

  • Added a note under .changes/

Checks

  • Tests added or updated for the changed behavior
  • pnpm nx lint/typecheck on affected projects pass; pnpm nx run tv:test — 189/190 (1 pre-existing environment failure unrelated to this change: build-info.test.mjs needs Node ≥22.23 for .ts imports)

@greptile-apps

greptile-apps Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no new actionable issues remain.

Summary

Text fields stay read-only during remote navigation and become editable on activation or physical typing. The latest change preserves native validation messages after an invalid submission.

  • TV fields open the keyboard only when someone starts editing.
  • TV Back and arrow keys follow whether a text field is being edited.

No new actionable issues were found. Tests were inspected, not run.

Reviews (6) · Last reviewed commit: "fix(tv): preserve native form validation..." · Reviewed by Greptile

Comment thread libs/tv/ui/src/ime-guard.ts Resolved
@oasisjpeg
oasisjpeg force-pushed the fix/tv-explicit-keyboard branch from 3abccc9 to 94b64f9 Compare November 9, 2026 15:07
@oasisjpeg

Copy link
Copy Markdown
Author

@greptileai review

Comment thread libs/tv/ui/src/focus.ts Resolved
@oasisjpeg
oasisjpeg force-pushed the fix/tv-explicit-keyboard branch 2 times, most recently from 3700351 to 9844d74 Compare November 9, 2026 15:18
Text inputs gained focus read-only so arrowing through forms no longer
summons the IME on every field; Enter or click inside the box starts
editing and blur restores read-only.

Read-only controls are barred from constraint validation, so guarded
fields unlock when a form submits and required checks still refuse
empty values. A shared backspaceEdits/editingText predicate makes every
back layer — remote nav, dialogs, settings panels, player intents —
treat Backspace and caret keys as navigation on read-only fields and
as text entry only while editing.
@oasisjpeg

Copy link
Copy Markdown
Author

@greptileai review

@codecov

codecov Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.52%. Comparing base (deb1d52) to head (2d75573).
⚠️ Report is 5 commits behind head on master.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff            @@
##           master    #2179    +/-   ##
========================================
  Coverage   81.52%   81.52%            
========================================
  Files        1875     1875            
  Lines       97993    98070    +77     
  Branches    22864    23608   +744     
========================================
+ Hits        79885    79949    +64     
- Misses      11107    11109     +2     
- Partials     7001     7012    +11     
Flag Coverage Δ
unit 81.52% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@4gray

4gray commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@greptileai review
@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T21:35:50.900689Z 2d75573 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d8298a161b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread libs/tv/ui/src/ime-guard.ts Resolved
@4gray

4gray commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 2d75573cf3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

This branch has not been deployed

No deployments
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.

2 participants