Recently Written · git

rebind

Rebind: remap the hardware buttons of e-ink readers and any Android 12+ device. Free beta APK.

git clone https://github.com/equwal/rebind

Log | Files | Refs


CHANGELOG.md (10693 bytes)

1 # Changelog
2 
3 ## 0.1.0-beta - 2026-09-21
4 
5 Version code 16. The first beta. The alpha versions end here.
6 
7 - **Updates: Ink Update.** Rebind has no internet permission, so it cannot
8   look for a new version. Ink Update, an open source app of its own, does
9   that: F-Droid first, then Google Play (it leaves an app that Google Play
10   installed to Google Play), then GitHub. It makes a notification and opens
11   the page. Setup has an "Updates" row that installs or opens it. The build
12   for direct install carries it.
13 - The build for direct install carries Ink Dim too. Hardware hacks lists it.
14 - The lists of carried apps are named "Extensions".
15 
16 - **Settings are safe across versions and across an uninstall.** An update
17   always kept the settings: they are in the data of the app. An uninstall
18   removed them. Now Android asks at uninstall whether to keep the data
19   (`hasFragileUserData`), and Rebind keeps an automatic copy of the settings in
20   `Documents/Rebind/rebind-settings.json`, which an uninstall does not touch.
21   Import opens that folder. `StoredFormatTest` holds the texts that every
22   0.0.x version stored, so a new version cannot stop reading them unseen.
23 
24 ## 0.0.15-alpha - 2026-09-21
25 
26 Version code 15.
27 
28 - **The Recents button opens Ink Recents.** Android does not let an app take
29   the place of the recent-apps screen of the system. Rebind now sees that
30   screen open (the task manager of the Viwoods launcher, or the stock Android
31   one), closes it, and opens Ink Recents. It works for the Recents button of
32   the bar, for the swipe, and for the Recents action. Home and recents has the
33   switch "Recents button opens Ink Recents". It is on when Ink Recents is
34   installed. Tests: `SystemRecentsTest`.
35 
36 ## 0.0.14-alpha - 2026-09-21
37 
38 Version code 14.
39 
40 - **Permissions covers the extensions again.** New items, each only where it
41   can apply: "Install apps from Rebind" (the build that carries apps), "Ink
42   Recents: app usage data" (when Ink Recents is installed), and "Home screen"
43   to choose inkOS or ThinkLauncher (when one is installed). "Set up what is
44   missing" walks through them too. The main screen still counts only the
45   grants of Rebind itself.
46 - **Fix: voice typing said "The microphone is not allowed" although it was
47   allowed.** Android gives the microphone to an app only while that app is in
48   use. The Viwoods firmware does not count a speech app as in use while it
49   listens in the background for another app, so Whisper was refused (error
50   9). Rebind now goes to the speech screen of the speech app, where that app
51   is in use, takes the words from its result, and remembers the route.
52   Regression test: `DictationRouteTest`.
53 - **Fix: "Let Rebind get the Power hold" opened nothing.** Android has no
54   request dialog for the assistant role. The row now opens the settings page
55   "Default digital assistant app".
56 
57 ## 0.0.13-alpha - 2026-09-21
58 
59 Version code 13.
60 
61 - **Home screens: inkOS and ThinkLauncher in place of CLauncher.** The build
62   for direct install carries inkOS v0.6 and ThinkLauncher v3.0, both made for
63   e-ink, both GPL-3.0, each the release file of its maker and not changed.
64   ThinkLauncher has the internet permission of its own. Rebind still has
65   none.
66 
67 - **Change a button from the Done step.** "Change what it does" and "Change
68   how you press it" go back to those steps with the button kept. Back on the
69   Done step goes to the actions too. Tests: `Route.back`.
70 - **Show or hide the button bar** is an action (build for direct install).
71   Android 16 has no auto-hide for the three-button bar, so a button does it.
72   It uses the shell commands of the Navigation screen and keeps the gestures
73   as they are. The allow step asks for shell access for this action and for
74   the light actions.
75 - **AI voice prompt** is an action of its own (Viwoods). It is what the
76   firmware does on a hold of the AI key: the Viwoods AI screen, told to start
77   its voice prompt. It needs the Viwoods AI account, as the stock hold does.
78   A component launch can now carry text extras (`pkg/class?key=value`).
79   Tests: `ComponentPayloadTest`.
80 - **Ask when the user tries it.** The first run asks for every grant once.
81   After that the app asks at the moment something is missing: after a menu is
82   saved, after the Power switch on the Navigation screen, when a Power press
83   arrives while button remapping is off, and when voice typing starts with no
84   microphone grant. Before, those places showed a short message or nothing.
85 - **Fix: system Back always closed the button setup.** From Android 13 the
86   system does not call `onBackPressed` for an app with this target version.
87   The setup now registers the Back callback, and Back goes one step back.
88   Checked on the reader: Done, actions, how to press, main screen.
89 
90 ## 0.0.12-alpha - 2026-09-21
91 
92 Version code 12.
93 
94 - **Apps of other makers.** The build for direct install carries two apps and
95   can install them: CLauncher v5.3.0 (the release APK of its maker, not
96   changed) and Ink Recents 0.1.1 (open source). Home and recents lists them. Android asks before
97   each install. The APKs are in the build, because Rebind has no internet
98   permission. The Google Play build carries nothing and has no install
99   permission: Google Play does not allow that here. It opens the page of the
100   maker.
101 - Whisper 3.7 (speech to text on the device, MIT, the F-Droid build) is the
102   third app that the build for direct install carries. Voice typing lists it.
103 - **The home screen of Rebind is gone**, with its settings screens. CLauncher
104   is the home screen now, as its maker released it. An old settings file that
105   has home screen settings still imports. Those settings are skipped.
106 - **Recent apps is a program of its own: Ink Recents** (open source,
107   github.com/equwal/ink-recents). Rebind no longer has that screen, and no
108   longer asks for usage access or `KILL_BACKGROUND_PROCESSES`. The Recent apps
109   action opens Ink Recents. Old bindings keep working. Where Ink Recents is
110   not installed, the action opens the screen that offers it.
111 - Hardware hacks: the double tap of Power is one row. Its way in is the camera
112   intent or the wallet intent, as the device decides. There is no wallet
113   button.
114 - The setup of a Power combination no longer says the same thing twice.
115 
116 - **Hardware hacks** is a tile on the main screen with a screen of its own:
117   hold Power (assistant role), double tap Power (camera intent), the wallet
118   button, the full Power button (shell access), extra-dim light, and the
119   button settings of the device. Advanced no longer holds them.
120 
121 ## 0.0.11-alpha - 2026-09-21
122 
123 Version code 11.
124 
125 - **Fix: a Camera key in the drawing of a device that has none.** The Viwoods
126   reader declares a camera key to Android and has no such button. Detection
127   put the declared key in the drawing. The drawing now shows only the buttons
128   that the device profile knows, and a button that was really pressed in
129   normal use. The Detect screen still lists what the device declares, and
130   marks a key that was never seen. Regression test: `DeviceKeysTest`.
131   The double tap of Power uses the camera *intent* of Android. It needs no
132   camera button.
133 
134 ## 0.0.10-alpha - 2026-09-21
135 
136 Version code 10.
137 
138 - **No Google Play, no lock.** On a device where the Google Play app is not
139   installed or is turned off, the app is free and complete. There is no way
140   to buy there, so there is nothing to lock. The licence screen says "Free on
141   this device". A bought licence still comes first. Tests: `LicenseDecideTest`.
142 - The build for direct install has a tip link on the Licence screen
143   (ko-fi.com/truex). A tip unlocks nothing. The Google Play build has no such
144   link, because Google Play does not allow it.
145 - The reasons in the allow step are hints of three to seven words. The app
146   says "double tap" for Power too.
147 
148 ## 0.0.9-alpha - 2026-09-21
149 
150 Version code 9.
151 
152 - **New name: Rebind.** The name says what the app does, and it has the words
153   that buyers type in Play search. The package id stays `dev.equwal.assistkey`,
154   so an update keeps all settings. The settings file keeps its `AssistKey`
155   marker, so old exports still import.
156 - **Recent apps.** Swipe up closes the app. Swipe down closes all the others.
157   One swipe sideways moves one card in one step, with no glide. When the screen
158   opens, the card jumps up and sideways once to show the swipes. "Close all but
159   this app" and "Close all" are two tall buttons with space between them.
160   Closing works without shell access too: Android ends the background
161   processes of the app (`KILL_BACKGROUND_PROCESSES`, a normal permission).
162 - **Hardware hacks** have their own box under Advanced: hold Power, double
163   press Power, the wallet button, the full Power button, extra-dim light, and
164   the button settings of the device.
165 - **Ask when it is needed, everywhere.** A binding made under Advanced now opens
166   the same "allow" step as the guided setup, when something is missing.
167 - **The drawing is the main screen.** The device and its buttons are on the
168   first screen. Each button shows what it does now. Tap a button to set it up.
169   Tap two buttons to set up a combination.
170 - **Button order.** A device profile gives the order of its buttons from the
171   top down. Viwoods AiPaper: Power, Volume up, Volume down, AI key.
172 - **On-screen button.** A new button that needs no hardware: a small round
173   button that floats over every app. Tap it to do the action, drag it to move
174   it. The key filter draws it, only while it has an action. Android's own
175   accessibility button is not used, because Android shows that button to every
176   user as soon as a service asks for it.
177 - **More ways to press.** Step two lists tap, double tap, triple tap, hold, 4
178   taps and 5 taps, and an Advanced row with every gesture of the button.
179 - **More actions.** Step three adds Lock screen and Screenshot, and an Advanced
180   row with every action.
181 - **Ask when it is needed.** A Power press that Android hides from apps is now
182   offered where the build can have shell access. The app then asks for shell
183   access, which opens the full Power button. After a double press of Power is
184   set up, the app offers the wallet way for devices that use it.
185 - **Device detection.** At first start the app finds which buttons the device
186   has, and what the device can do. It never asks the user to press a button.
187   Advanced > Detect this device shows the result. The device report has it too.
188 - **Less text.** All "More about this" rows are gone. Notes are one short
189   sentence. The accessibility disclosure is short. Google Play requires it, so
190   it stays.
191 - Tests: selection rules of the drawing, the on-screen button route, shell
192   access as a need, detection parser and round trip.