2.0.0
Beautiful Native Settings and Hotkey Buttons!
- refactor: hotkeys run at six slots
- feat: imports tolerate slots beyond this build's count
- feat: paint rows at screen open, not first tap
- feat: counter_0 icon joins the picker pack
- fix: review fallout of the dialog fix — honest pins, swept docs
- fix: one tap, one dialog — kill the double-dialog on hotkey rows
- feat: popups borrow Gboard's own editor-dialog layout
- feat: one row per hotkey — the composite editor dialog
- fix: after an import, the settings rows keep showing the old text
- refactor: one hotkey emission template, two site configs
- docs: park the grey-out-unpatched-rows design with its mechanisms pinned
- refactor: patch structure — slots internal, swipe-scoped seed, one controller resolution
- feat: real popups — icon picker grid, export text box, import paste box
- fix: hotkey bug hunt — validated legacy icons, honest clear contract, two new pins
- chore: keep the extracted Gboard APK in-repo for the dex gates
- fix: icon picker review — dispatch through the fragment's public d, not protected t
- feat: per-slot icon picker — cycle rows on the aA click hook
- feat: import/export as real buttons — the port's click hook finally exists
- feat: drop the hold-delay settings row — fixed at 0ms
- feat: settings polish — per-slot icons on hotkey rows, version under About
- docs: park the bigger-toolbar plan with the corrected stock model
- docs: trace the toolbar-capacity chain and the native raise-the-max plan
- refactor: hotkey icon drawables carry their symbol names
- feat: default hotkey icons are the Flexboard vector pack from 8a25e2f
- docs: hotkey visibility contract — set text shows at open, clear removes at restart
- feat: hotkey slots appear only when the user types a value
- fix: toolbar module anchor needs the controller field, not just the signature
- docs: refresh-on-open lands; count slider retired
- feat: drop the hotkey count slider — slots are numbered placeholders
- feat: hotkey slots re-register on every keyboard open
- docs: hotkeys register on controller init — settings edits need a keyboard cycle
- test: pin the hotkey defaults table and the widened-array seam
- feat: hotkey import/export through a single edit-text row
- feat: hotkeys return — patch registration and settings rows
- feat: hotkeys return — the extension half
- feat: widen Gboard's toolbar allowed-id set with the Flexboard ids
- docs: research how to admit unlimited toolbar buttons natively
- docs: user queue adds hotkeys clarification and sdk-benefit questions
- test: run Morphe's whole patch pipeline on the desk with :driver
- test: compile the extension with plain javac, no SDK
- test: lint dex anchors and emitted smali before they reach a phone
- test: hold every settings row to the contract lanes
- test: pin the grammar flag-holder seam in preflight
- test: dress-rehearse the resource half of a release, on the desk
- docs: roadbook notes the hotkeys rollback and the rule for their return
- test: parse every patch-written resource file before handing it to Morphe
- feat: show the Flexboard version at the bottom of the settings screen
- fix: writePatchResource name/target concatenates the directory twice
- ci: skip build-provenance attestation on private repos
- docs: record the native settings-hosting mechanism
- test: pin the native-settings seam in preflight; checker lanes for the XML contract
- feat: host the settings screen as a native Gboard fragment (patch half)
- feat: host the settings screen as a native Gboard fragment (extension half)
- fix: drop duplicated palette constants in settings activity
- chore: drop an unused import
- chore: harden native toolbar emission and its checkers
- chore: remove Bigger Toolbar and Hotkeys — both are being rewritten natively