Skip to content

feat(settings): consolidate keypad preferences on a Keyboard settings page - #42

Open
manuel-rtsch wants to merge 6 commits into
HarlenPostill:mainfrom
manuel-rtsch:pr/keyboard-settings
Open

manuel-rtsch wants to merge 6 commits into
HarlenPostill:mainfrom
manuel-rtsch:pr/keyboard-settings

Conversation

@manuel-rtsch

@manuel-rtsch manuel-rtsch commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

What changed?

Settings > Keyboard — one page for the keypad preferences that used to be four separate rows on the Settings home: the module, the input mode, the Back key accessibility service and the custom mapping, with the key diagram underneath. (KeyboardSettingsScreen.kt, SettingsScreen.kt, KeypadDemo.kt)

  • Settings home gains a single Keyboard row ("Keys & input") that opens the page; the old Keypad / Input mode / Keypad Back key rows are gone. The mapping editor is still reachable from the page ("Mapping", Automatic or Custom).
  • The page shows the module currently in use, cycles it on tap unless a custom mapping fixes it, toggles the input mode, shows the Back-key service state, and draws KeypadDemo for the active module (new idleHint parameter).
  • The diagram (new keyboard_settings_page.png) and the resulting Settings home (re-recorded settings_system_home.png) are committed; keypad_mapping_settings.png is replaced by the page's own baseline.

Rows that act in place vs rows that open a page (Item.kt)
SidekitItem gains secondaryToEnd (toggle values right-aligned) and showLinkArrow now draws the arrow whether or not a value is present, so a row reads as "this changes here" or "this opens another page" without a second convention. Settings uses the split: Launcher default and Compact layout stay compact toggle rows, Home app stays compact (it opens a system dialog), and Arrange apps / Case colour / Keyboard are full rows with the arrow.

Tests — KeypadMappingUiTest updated for the new route and rows.

Branch state

The branch is rebased directly onto current upstream/main (3debe06). The obsolete merge history and the duplicate screenshot-baseline commit from the old branch are gone. The work is now five focused commits: the four Keyboard commits plus Apply Spotless formatting.

How to test

  1. ./gradlew :app:testDebugUnitTest then git status --short — must print nothing.
  2. Settings → Keyboard. The page shows the active module, input mode, Back-key state and Mapping, plus the key diagram for that module.
  3. Tap Keypad: the module cycles (the diagram follows). With a custom mapping, the row opens the mapping editor instead.
  4. Tap Input mode: Numbers/Letters toggles, and typing uses it. Tap Mapping: the editor opens. Back returns to Settings.

Real-device testing

  • Device model: Sidephone SP01_FE_GE
  • Android version: 12
  • Keypad or attached module, if relevant: built-in Sidephone keypad; no external module attached
  • Commit tested: c790a06 — the latest commit, a13dd17, only applies Spotless formatting and does not change behavior
  • Test steps and results: installed the .dev build, opened Settings → Keyboard, exercised module cycling, Input mode, Mapping and Back navigation, and checked that the key diagram follows the active module. The run was satisfactory.
  • Screenshots, recording, or relevant logs: keyboard_settings_home.png, keyboard_settings_page.png are committed.

Checklist

  • I created this branch from the latest main and this PR targets main.
  • I kept this PR focused and described its changes above.
  • I built the affected app and recorded the build command and result below.
  • I tested the changed behavior on a physical device and completed the device details above.
  • I checked nearby behavior for regressions, including keypad navigation and input when affected.
  • I ran the relevant automated tests and recorded commands and results below.
  • I added or updated tests where practical, or explained why no test is needed.
  • I updated documentation when behavior or setup changed.
  • I removed debug code, credentials, and personal data from the diff and test evidence.

Documentation remains unchecked: docs/keypad-mapping.md describes the mapping editor, not the Settings rows. Say if you want the Keyboard page added there.

Build and automated test results

Run on a13dd17, parent 3debe06:

  • ./gradlew spotlessCheck :app:testDebugUnitTest — success; 392 app tests and 34 sidekit tests, 0 failures. git status --short afterwards: empty.
  • ./gradlew :app:assembleDebug :app:lintDebug :sidekit:testDebugUnitTest — success; lintDebug completed with no errors.
  • ./gradlew spotlessCheck — success after applying formatting.

Known issues and exceptions

  • Dependency review CI is blocked by repository configuration. The job fails with “Dependency review is not supported on this repository” because Dependency graph is not enabled on the upstream repository; this is not caused by the branch.
  • Screenshot tests never compare. roborazzi.test.record=true is hardcoded in app/build.gradle.kts, so the only signal is the dirty tree after a local run. Unchanged from main.

Maintainer review

Changes to main require approval from @HarlenPostill. Request review only when the required testing is complete.

The Keyboard feature commits were authored on the integration branch, whose
screenshots were recorded with the compact layout. Re-recorded here on main so
the committed images match this branch's code and ./gradlew test leaves the
tree clean.
@manuel-rtsch manuel-rtsch changed the title Consolidate keypad preferences on a Keyboard settings page feat(settings): consolidate keypad preferences on a Keyboard settings page Nov 10, 2026
Share the Item API with HarlenPostill#45 so the two branches merge cleanly, and leave
the Sundial demo layout to HarlenPostill#44.
manuel-rtsch added a commit to manuel-rtsch/Sidekit that referenced this pull request Nov 10, 2026
Share the Item API with HarlenPostill#42 so the two branches merge cleanly.
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.

1 participant