Zum Inhalt springen

Pastiera Feature Matrix

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Snapshot date: 2026-05-23

Reference repositories:

  • App: palsoftware/pastiera
  • Docs/site: palsoftware/palsoftware-web

Purpose

This matrix is a working inventory for tutorial scenarios that should serve three jobs at once:

  • feature showcase
  • user-facing how-to path
  • repeatable E2E/Maestro coverage

Statuses are intentionally pragmatic. covered by unit/e2e? unknown means the code or docs imply the feature, but this pass did not prove end-to-end coverage.

Source Notes

Primary sources checked:

  • Pastiera README.md
  • Pastiera app code under app/src/main/java
  • Pastiera assets under app/src/main/assets/common and app/src/main/assets/devices
  • Pastiera local docs under docs/*.md
  • Pastiera unit tests under app/src/test/java
  • Current docs pages under apps/docs/src/content/docs
  • Current docs screenshot and Maestro assets under apps/docs/e2e, apps/docs/scripts, and apps/docs/public/showcase/screenshots

Feature Matrix

AreaFeatureUser valueKey settings / entry pointsExisting docsExisting automated coverageSuggested Maestro scenarioMedia statusPriority
OnboardingIME setup and first typing flowHelps users enable Pastiera, select it, and verify that the physical keyboard path worksAndroid input method picker; Pastiera settings; TutorialActivity; ImeTestScreenguides/getting-started, localized variantsapps/docs/e2e/maestro/tutorial-onboarding.yaml; app-side instrumentation only sample/unknownFull first-run setup: open settings, enable IME, switch IME, type sample text, return to docs/tutorial stateneeds media beyond current quick-check; existing quick-check.png onlyP0
Typing corePhysical keyboard input, modifiers, punctuation, auto-spaceCore promise: make hardware typing fast and predictableSettings > Keyboard & Timing; SettingsManager; InputEventRouter; TextInputControllerguides/typing-and-navigation; READMEUnit coverage: TextInputControllerTest, InputEventRouterModifierE2ETest, PunctuationTest, ModifierStateControllerTestType sentence with Shift, Alt, punctuation, backspace, enter; assert text output and status changesneeds scenario mediaP0
Long pressLong-press behavior and timingLets users choose whether hold actions mean Alt, SYM, variations, etc.Settings > Keyboard & Timing; Long Press Modifier; Long Press Duration; KeyboardTimingSettingsScreenguides/typing-and-navigation, FAQ; localized docs mention itUnit coverage likely indirect via router/timing tests; covered by unit/e2e? unknownChange long-press mode to variations, hold a letter, select alternate characterneeds mediaP0
VariationsCharacter variations, including German umlauts / ß and accent variantsMakes accents and alternate letters available from a physical keyboardSettings > Customization > Customize Variations; VariationCustomizationScreen; VariationButtonHandler; assets common/variations/*.jsonguides/sym-and-variations; README; partial FAQUnit coverage: VariationRepositoryLayoutOverrideTest; UI/E2E unknownGerman setup: choose QWERTZ multitap or variations, produce ä, ö, ü, ß, show variation barSCREENSHOT_TODO: sym-pages-and-variations; no committed matching screenshotP0
Static variation barFixed symbol/number rows and layer behaviorGives power users predictable utility keys without context switchingStatusBarButtonsScreen; static_variation_* settings; VariationBarViewPartial in guides/sym-and-variations; README mentions optional static barcovered by unit/e2e? unknownToggle static symbols row, type brackets/numbers from row, verify sticky layer behaviorneeds mediaP1
SYM pagesReorderable symbol/emoji pages, touch and physical-key useTurns the SYM key into a configurable layer systemSettings > Customization > Customize SYM Keyboard; SymCustomizationScreen; assets common/sym/*.jsonguides/sym-and-variations; README; local docs/status_bar_buttons.md is developer-focusedUnit coverage: SymLayoutController not obviously covered; covered by unit/e2e? unknownOpen SYM, switch pages, enter symbol, verify optional auto-closescreenshot-scenes.json has sym-variations-overview, but screenshot openP0
EmojiEmoji page, full emoji picker, recent/search dataFast offline emoji insertion without leaving keyboard flowSYM page; status bar emoji button; EmojiPickerDialog; EmojiPickerView; assets common/emoji, common/emoji_search/*.tsvguides/sym-and-variations; FAQ says search is offline; no dedicated emoji-search pageRepository/data coverage unknown; UI/E2E unknownOpen emoji search, search localized term, insert emoji, verify recent emojiExisting emoji-search-inline.png; scene existsP0
ClipboardClipboard history panel and status bar countReuse recent clipboard entries from the keyboard surfaceSYM clipboard page; status bar clipboard button; ClipboardHistoryManager; ClipboardHistoryPopupView; ClipboardDatabaseMentioned in guides/sym-and-variations, FAQ; no dedicated clipboard pagecovered by unit/e2e? unknownCopy two strings, open clipboard history, paste one, verify count/statescreenshot-scenes.json has clipboard-history-panel, but screenshot openP0
Status barStatus bar customization and button slotsLets users keep frequent tools visible and hide noiseSettings > Customization > Status Bar Buttons; StatusBarButtonsScreen; button factoriesUser docs partial; local docs/status_bar_buttons.md is developer-focusedcovered by unit/e2e? unknownConfigure left/right slots: clipboard, emoji, symbols, language; verify status bar preview and IME barneeds mediaP1
NavigationNav ModeHardware navigation/editing without touching screenDouble-tap Ctrl outside text fields; Settings > Customization > Nav Mode; NavModeSettingsScreen; NavModeHandlerguides/typing-and-navigation; READMEUnit coverage: InputEventRouterCtrlHoldNavModeTest, TextSelectionHelperWordNavigationTestActivate Nav Mode, move cursor with ESDF/IJKL, exit mode, verify LED/statusneeds mediaP0
NavigationCtrl shortcuts and delete alternativesFaster editing commands for selected apps/contextsSettings > Customization > Nav Mode; layout-aware Ctrl setting; ctrl_key_mappings.jsonPartial in guides/typing-and-navigation; README note distinguishes Ctrl hold from Nav ModeUnit coverage: InputEventRouterShortcutKeysTest, InputEventRouterForwardDeleteAlternativesTest, SettingsManagerLayoutSwitchTestHold Ctrl + key for select/delete/cursor action, compare with latched Nav Mode behaviorneeds mediaP1
LauncherLauncher shortcuts and QuickLauncherOpen assigned apps quickly from launcher or keyboard shortcutLauncher context; SYM power shortcuts; QuickLauncherActivity; LauncherShortcutsScreen; LauncherShortcutControllerREADME; local docs/LAUNCHER_SHORTCUTS.md; partial guides/typing-and-navigationcovered by unit/e2e? unknownAssign app to letter, open from launcher; open QuickLauncher from shortcut key, launch appneeds docs refresh; needs mediaP0
LauncherPower shortcutsUse shortcut assignments outside launcher after SYM activationSYM then letter; LauncherShortcutController; LauncherShortcutAssignmentActivityREADME; local docs/LAUNCHER_SHORTCUTS.mdcovered by unit/e2e? unknownPress SYM, press assigned letter in non-launcher context, verify target app opensneeds mediaP1
App-specific behaviorMessenger Enter behavior / app overridesMakes Enter send/newline behavior fit chat apps and per-app expectationsAppEnterBehaviorScreen; AppPickerDialog; settings in SettingsManagerneeds docscovered by unit/e2e? unknownAdd override for a messenger package, type message, press Enter, verify configured send/newline behaviorneeds mediaP0
Text expansionText Expander / substitutions / auto-correctionsExpands or corrects common text patterns while typingAutoCorrectSettingsScreen; AutoCorrectEditScreen; assets common/autocorrect/auto_corrections_*.json; user dictionariesguides/suggestions-and-dictionaries; local docs/dictionary_autocorrect.md; READMEUnit coverage: AutoReplaceControllerLogicTest, AutoCorrectionManager likely indirectEnable substitution set, type trigger, press space/enter, verify replacement and undo path if availableneeds mediaP0
SuggestionsDictionaries, suggestions, autocorrectBetter typing through suggestions, user dictionary, and locale dictionariesSettings > Text Input; AutoCorrectSettingsScreen; InstalledDictionariesActivity; assets dictionaries and serialized dictionariesguides/suggestions-and-dictionaries; local docs/dictionary_autocorrect.md, custom_dictionary_guide.mdUnit coverage: SuggestionEngineTest, DictionaryRepositoryTest, SymSpellTest, CurrentWordTrackerTest, CasingHelperTest, WordNormalizationTestType misspelled word, show suggestions, accept correction, add custom word, verify future suggestionneeds mediaP0
Languages/layoutsBuilt-in layouts and language switchingAdapts physical keyboard output to language/user expectationsSettings > Languages and Maps; LanguagesScreen; KeyboardLayoutSettingsScreen; assets common/layouts/*.json; locale_layout_mapping.jsonguides/languages-and-layouts; local docs/online-dicts_layouts.md; READMEUnit coverage: AdditionalSubtypeUtilsLayoutTest, SettingsManagerLayoutSwitchTest, KeyMappingLoaderTestEnable two layouts, switch from status bar, type language-specific keysSCREENSHOT_TODO: languages-and-layouts-input-styles; needs mediaP0
Languages/layoutsGerman QWERTZ multitap and umlautsDirect German typing on compact physical keyboardsgerman_multitap_qwertz.json; layout selection; multi-tap timingFAQ and recipes mention it; no dedicated scenarioUnit coverage: MultiTapControllerTest; layout-specific output coverage unknownSelect German multitap layout, press multi-tap sequences for ä, ö, ü, ßneeds mediaP0
Languages/layoutsVietnamese TelexNative Vietnamese input from physical keyboardvietnamese_telex_qwerty.json; VietnameseTelexProcessor; layout selectionguides/languages-and-layouts; recipes mention it; no dedicated page despite backlogUnit coverage: VietnameseTelexProcessorTestSelect Telex layout, type Telex sequence, assert composed Vietnamese outputscreenshot-scenes.json has vietnamese-telex-layout, but screenshot openP0
Languages/layoutsGreek, Cyrillic, Arabic, Ukrainian, Serbian, Turkish, Norwegian, Bulgarian, Armenian, Russian layoutsBroad language support and transliteration optionsLayout assets under common/layouts; language/subtype settingsguides/languages-and-layouts; FAQ; no per-locale docsUnit coverage partial via layout loader/subtype testsCycle through representative non-Latin layout, type sample, switch backneeds mediaP1
Device supportDevice profiles and physical key mapsMakes hardware differences manageable across Titan 2, Q25, Key2, MP01, etc.Settings > Device Profile or advanced settings; DeviceSpecific; assets devices/*/alt_key_mappings.jsonguides/device-profiles; device archive docs; READMEUnit coverage: DeviceSpecificTest, PhysicalKeyboardInputMethodServiceDeviceBehaviorTest, KeyMappingLoaderTestSelect/auto-detect profile, verify Alt/SYM mapping differs by profilescreenshot-scenes.json has device-profile-q25, but screenshot openP0
Device supportDevice archive/debug captureRecords real device key behavior for future profile workdocs/device-archives; DebugCaptureStore; TrackpadDebugActivityPastiera local docs/device-archives/*; not user-facing docscovered by unit/e2e? unknownDeveloper-only scenario: capture key archive and export JSONneeds docs decision; media optionalP2
Backup/dataManual backup and restore ZIPLets users migrate or recover complex customizationSettings > Advanced > Backup/Restore; BackupManager; RestoreManager; BackupContractguides/backup-and-updates; local docs/backup_system.md; READMEUnit coverage: RestoreManagerAndBackupContractTest, RestoreManagerIntegrationTestChange setting/layout, create backup, reset/change value, restore, verify setting and custom mapSCREENSHOT_TODO: backup-and-updates-advanced-settings; needs mediaP0
Backup/dataAndroid Auto BackupPassive migration through Android backup where supportedAndroid backup rules; backup_rules.xml, data_extraction_rules.xmlREADME mentions it; local docs/backup_system.md likely technicalcovered by unit/e2e? unknownUsually not a Maestro target; document constraints and manual verification checklistneeds docs clarityP2
Updates/releasesGitHub stable/nightly update flow and F-Droid nightly differencesHelps users choose update channel and avoid surprisesSettings update check; UpdateChecker; UpdatePolicy; UpdateCheckWorker; public F-Droid repoguides/backup-and-updates; developer/release-channels; README; release public JSONUnit coverage: UpdateCheckerFlavorLogicTest, FlavorBuildConfigTestMock/no-network friendly scenario: open About/Advanced update state and ignored release UIneeds media; network-dependent behavior needs test strategyP1
SoundsTyping sounds and custom soundpacksTactile/audio feedback with optional custom packsTypingSoundSettingsRow; TypingSoundPlayer; raw sound assets; soundpack importguides/typing-soundpacks; localized variantscovered by unit/e2e? unknownEnable sound, choose bundled/custom pack, verify setting persists; audio assertion probably manualneeds media, not necessarily audio captureP1
AccessibilityAccessibility settings and TalkBack/layout announcementsMakes keyboard status and layout changes understandable with screen readersAccessibilitySettingsScreen; resource strings; IME status/layout announcementsFAQ/audit mention; no dedicated accessibility pagecovered by unit/e2e? unknownEnable accessibility option, switch layout/status, verify content descriptions via UIAutomator dump or manual TalkBack checklistneeds docs and mediaP0
Virtual keyboardVirtual keyboard / compact Pastierina modeControls whether Pastiera shows an on-screen keyboard surface or compact status-only UIIME selector; SoftwareKeyboardAutoDetector; KeyboardVisibilityController; AospKeyboardViewREADME mentions on-screen keyboard disabled/Pastierina; partial docsUnit coverage: SoftwareKeyboardAutoDetectorTest, AospKeyboardViewTestToggle/show software keyboard mode, verify compact status bar and physical typing still worksneeds docs and mediaP1
Trackpad/gesturesSwipe bar and trackpad gesturesCursor movement and touchpad-like control from keyboard area/deviceSettings > Advanced; TrackpadGestureSettingsScreen; TrackpadGestureDetector; TrackpadEventDeviceResolverguides/typing-and-navigation mentions swipe movement; no dedicated trackpad guideUnit coverage: TrackpadEventDeviceResolverTest; detector E2E unknownUse swipe bar to move cursor; verify sensitivity setting changes movementneeds mediaP1
SpeechMicrophone / speech recognitionVoice input from status bar buttonstatus bar microphone button; SpeechRecognitionActivity; SpeechRecognitionManagerlikely needs docsUnit coverage: SpeechRecognitionManagerLanguageTagTestTap mic, permission flow, return recognized text; may need mocked/manual scenarioneeds docs and mediaP2
UI localizationApp UI translationsMakes settings usable in multiple languagesAndroid resources values-*; AppLocaleManager; localized docsLocalized docs exist for de/it plus root English; app strings for several localescovered by unit/e2e? unknownSwitch app locale, verify major settings labels and docs linksneeds media if showcasedP2
Customization filesJSON import/export for layouts, variations, SYM/Ctrl mapsPower-user control and recoverable configurationFiles under app files/; in-app import/export screens; external key editor linkREADME; guides/languages-and-layouts; local layout/dictionary docsUnit coverage: layout/mapping loader tests; E2E unknownImport a small custom layout or variation JSON, type key, export/backupneeds docs refresh and mediaP1

Current Media Inventory

Media/scenario idCurrent statusNotes
emoji-search-inlinepartial media existsExisting screenshots under public/showcase/screenshots/local-1d159ac-*; likely usable as seed, but page still has screenshot TODOs.
clipboard-history-panelneeds mediaScene exists in screenshot-scenes.json; no committed screenshot found.
vietnamese-telex-layoutneeds mediaScene exists; no committed screenshot found.
device-profile-q25needs mediaScene exists; no committed screenshot found.
sym-variations-overviewneeds mediaScene exists; no committed screenshot found.
quick-checkpartial media existsOne English quick-check screenshot exists; not enough for feature showcase.

Highest-Value Scenario Backlog

  1. Typing baseline: setup, type physical-key sample, Shift/Alt/SYM status, punctuation, backspace, enter.
  2. German physical keyboard: select QWERTZ/multitap, produce umlauts and ß, show variations/long-press alternative.
  3. SYM + emoji + clipboard: configure page order, open SYM, search emoji, paste clipboard entry, auto-close behavior.
  4. Suggestions/substitutions: enable suggestions, trigger substitution/autocorrect, add word to user dictionary.
  5. Navigation: demonstrate Ctrl hold shortcut vs double-tap Ctrl Nav Mode and cursor movement.
  6. Device profile: choose/auto-detect Q25 or Titan 2 profile, show profile-sensitive Alt/SYM behavior.
  7. Backup/restore: create customization, back up, restore, verify settings/layout/symbol mappings survived.
  8. App override: configure Messenger Enter behavior for a known package and verify send/newline behavior.
  9. Accessibility: verify TalkBack-facing labels/announcements for layout/status changes with a manual or UIAutomator-backed checklist.

Open Questions / Uncertainties

  • The exact user-visible settings paths for device profile, app Enter overrides, accessibility, and virtual keyboard mode should be verified on a current build before writing tutorial copy.
  • Several features have strong unit coverage but no proven Maestro/UI coverage in this pass.
  • Clipboard and update flows depend on Android/OEM/network behavior; scenarios may need stable test doubles or manual verification notes.
  • Existing German/Italian localized docs still contain ASCII transliterations such as Geraeteprofile, Oeffne, and puo; if German docs are updated, they should use normal UTF-8 spelling.