Releases: brobata/physiboard
Release list
PhysiBoard 2.0.6
A notification at night no longer lights the keyboard along with the ring.
- The keyboard stays dark while the ring is lit. The ring turns the screen on, and the
phone lights the keyboard whenever the screen comes on — so a message at 3am lit the whole
keyboard up to show a ring that exists precisely so nothing else has to. If you had the
keyboard backlight set to stay on, it then never went off again. The keyboard is now turned
off for the ring and put back exactly as it was when the ring ends — whether that is the
timer running out, a touch, a key, unlocking, or the screen going dark. There is a switch
for it under Notification ring, on to begin with. It needs the same one-time pairing the
keyboard backlight setup uses; without that the row says so, rather than offering a setting
that quietly does nothing.
PhysiBoard 2.0.5
The buttons you assign to the status bar now actually appear on it.
- The status bar shows the buttons you picked. Every choice made under Status Bar Theme
→ Buttons was ignored. The page saved it correctly, but the bar was still looking the
setting up under the name it had before 2.0 renamed it — a name 2.0 then deletes. Finding
nothing there, the bar quietly fell back to its own defaults and showed the language button
and the menu button no matter what you chose. The button layout the app ships with was
discarded the same way. Because the bar now reads your actual setting, it may change
appearance after this update: what it shows is whatever the settings page has been telling
you it shows all along. - Changing a button updates the bar straight away. Assigning one used to take effect only
the next time the keyboard was rebuilt, so the bar looked unchanged when you went back to it.
PhysiBoard 2.0.4
You can now set up Enter-to-send for any app on your phone, including Messenger.
- Any app can be given its own Enter behaviour. The list only ever showed a handful of
messengers, and the button that added your own was a bare "+" in the top bar that nobody
found — so an app that was missing looked unsupported rather than simply not added yet. There
is a plain Add app button at the end of the list now. The chooser itself was unusable too:
the settings above it left roughly one row of space to scroll several hundred apps through.
Picking the app comes first now, with a search box and room to see the list, and the settings
follow once you have chosen. Facebook Messenger is listed alongside the other messengers,
which is why Enter did nothing there — the feature was never applied to it at all. - The Diagnostics screen fits on the screen. Share was cut off mid-word, the export
options were squeezed into a column so narrow that a label broke in the middle of a word, and
the Last Keyboard Event heading appeared underneath the values it labels. - A bug report describes the app you were using. The report recorded the last text field the
keyboard saw — but opening Diagnostics to send the report made that PhysiBoard's own field, so
every report came back describing PhysiBoard instead of the app being reported. It now keeps
the last field from another app as well, which is what makes an Enter-to-send problem
diagnosable at all.
PhysiBoard 2.0.3
The app now checks that its device features actually work, instead of assuming they still do.
Enter-to-send does what you set it to, and autocorrect fixes dropped letters.
- The Enter send method was a setting that did nothing. App overrides has offered a send
method — App action, Plain Enter, Ctrl+Enter, Auto — since 2.0. The keyboard never read it,
and always used the app's send action. Anyone whose messenger ignores that action pressed
Enter and nothing happened at all: no send, no newline, no error. The keyboard now honours the
choice, and Auto keeps the old behaviour. The reason it could not be detected is that
Android'sperformEditorActionreports whether the connection is alive, not whether the app
acted, so a swallowed key looked like a success. - Per-app Enter settings were ignored outside a fixed list of apps. The check for "is this
one of the messengers we ship a default for" ran before the check for "has the user chosen
something for this app", so an override on WhatsApp Business, a Signal fork or Slack was
saved, shown as configured, and never applied. A preset still only applies to tested apps; an
app you name yourself now always counts. - Autocorrect fixes dropped and added letters. It only ever accepted corrections that kept
the word the same length, or added a doubled letter. Sodefinetlyandsensitivystayed
wrong while same-length slips were fixed, which is why it felt arbitrary — and why Maximum
correction distance promised more than it could deliver, since a bigger edit almost always
changes length. Word completion and grammatical endings are still left alone:workdoes not
becomeworks. How far a correction may change a word's length is now decided per language,
because a dropped letter is a typo in English but ordinary word-building in Turkish or
Hungarian; English is enabled, every other language keeps the previous behaviour until its
results have been checked by someone who reads it. - Features are checked, not assumed. Everything that reaches the phone itself — the
keyboard backlight, the screen trackpad, the orange side key, the bloat remover, the
notification ring — used to decide it was working by remembering that it had been set up
once. Nothing noticed when a system update, a reboot or another app quietly took that away,
so the app kept reporting success while the feature did nothing. Each of these now checks the
real state when you open its screen, tells you which part is missing, and offers the button
that fixes it. Two screens can no longer disagree, either: there is one answer now, shared,
rather than each screen asking separately and getting a different reply. - A mistyped pairing code no longer strands the app. Setting up wireless debugging generates
the key it pairs with before it checks the code you typed, and "paired" was never more than
"a key is stored" — so a single wrong digit left the app permanently certain it was paired,
against a key the phone had never accepted. Everything behind the pairing — the backlight, the
overlay grant, the screen trackpad, the package tools — was then gated on that, silently, and
the only way out was clearing app data and losing every setting. A failed pairing now throws
away the key it made, and Forget pairing on the setup card gets you out if you are already
stuck. A key from a pairing that worked is never touched. Setup also no longer claims to be
ready when Wireless debugging is switched off — it says so, and points at the switch rather
than telling you to pair again, because the pairing is not what is wrong in that case. - The Status screen takes you where the fix is. It reported that the keyboard was not
enabled, or not the active one, and left you to find the setting yourself. Those rows are now
tappable and open Android's keyboard list or the keyboard picker. The screen also re-reads
when you come back to it, instead of showing the state you left rather than the one you chose. - The keyboard backlight says why it stopped. Every step that needs wireless debugging
failed silently: it checked whether you had ever paired, never whether wireless debugging was
still on — and Android turns that off after a restart. The result was a switch that read "on",
a backlight that timed out anyway, and nothing to explain it. It now checks both, says which
one is missing, and remembers the last failure so it survives the keyboard restarting. - Dictionaries you import are no longer overwritten. Imported and downloaded dictionaries
shared one folder, so downloading a language destroyed a dictionary you had imported for it,
with no warning. They are now kept apart, yours always wins, and each one records where it
came from — which also means the app can finally tell when a newer dictionary is available
instead of keeping the first one it ever downloaded forever. - Dictionaries are served by this project. All nineteen languages are hosted here rather
than fetched from upstream, so they cannot disappear from under the app. Every file was
verified against the upstream checksum before publishing; the corpus is unchanged. - Diagnostics can see the features that break. The debug export now reports pairing state,
whether wireless debugging is on, the overlay and notification permissions, whether the
keyboard is selected, and the last outcome of each privileged step — none of which was
visible before, in a build where the logs that would have shown it are stripped. It also
records the editor'simeOptions, the field that decides whether Enter can send at all. - Autocorrections stay on your phone. The debug export used to include the words you typed,
as before-and-after pairs. That section is now excluded unless you switch it on.
PhysiBoard 2.0.2
Your settings have been reset to fix some bugs. Won't happen again. Thanks for your support!
PhysiBoard 2.0.1
Your settings have been reset, once, on purpose. Sorry. Settings carried up through 1.x
and then through the 2.0 rework had landed in states no screen could reach and no combination
was ever tested in — some of you were stuck with a keyboard you could not fix from inside the
app. Every one of these phones is the same hardware on the same firmware, so there is one
configuration that is known to work, and this update replaces yours with it. Set it up how you
like from here; it will stick, and this will not happen again.
Your words are safe. The personal dictionary and your custom layouts are untouched. What was
replaced is the settings themselves — theme, SYM pages, the notification ring's fit, shortcuts,
the toggles and the Fn layer. The old values are written to settings_before_reset.json inside
the app's storage first, so nothing is actually gone.
The pre-2.0 settings file is deleted at the same time. It was the route the old values came back
by, which is the whole reason for this release, so the Restore my old settings button from 2.0
goes with it.
Also in this release:
- The what's-new card shows the right release. It was a copy of the notes that had to be
updated by hand, and 2.0.0 shipped with the 1.2.4 note in it. The card is now generated from
this file at build time, and it understands the way these notes are written. - The status bar's height setting is back. Bar height went missing in the 2.0 settings
rework — the code still read the value, so anyone who had set 48 or 64 was quietly stuck
with it and had no way to change it. It sits under Show status bar again, with all four
heights. 36 is below Android's minimum touch target and says so: it is there for people who
type on the keys and only read the bar, and want it out of the way. - Failures say so. A long list of places where an error was logged at a level the shipped
build strips, or not at all, and the app carried on as if the thing had worked: saving key
mappings, SYM layers, variations, custom corrections and the personal dictionary now report
when the write fails; restoring a backup that is not a PhysiBoard backup, or one with an
unreadable settings file, says so instead of "Restore completed"; dictation that cannot
reach the text field ends the session with an error instead of leaving the mic listening; a
stored wireless-debugging key that can no longer be read asks you to pair again instead of
quietly replacing itself with one the phone does not trust. - Nothing is overwritten that could not be read. A settings file that fails to parse used
to be replaced by an empty one on the next save, taking every other entry with it. Those
paths now refuse the write. Importing a typing-sound pack keeps the old pack until the new one
is in place. - Less work per keystroke. The Alt character map and the launcher shortcut table were being
re-read from disk on every key press while Alt or Sym was active; both are cached now.
Clipboard history writes moved off the input thread. The brightness shortcuts no longer stall
typing while the shell command runs. - A leaked background process. Turning the trackpad settings on and off left a
getevent
reader running each time. It is stopped properly now. - The update check cannot crash the app on an unexpected response from GitHub.
- Accessibility. The quick-launcher and dictionary rows' icon buttons announce what they
do; several buttons were smaller than the 48dp minimum touch target. - Every visible string is translatable. Thirty English strings were typed straight into the
screens, including the onboarding buttons. - Housekeeping. Lint is gated in CI against a baseline; the release pipeline builds the
sideload variant so ProGuard breakage shows before release day; the app no longer carries
Play-only dependency metadata, and unused resources are shrunk. Vendor firmware binaries and
upstream build leftovers were removed from the repository.
PhysiBoard 2.0.0
You will have to pick PhysiBoard as your keyboard again. This release renames
part of the app internally, and Android treats a renamed keyboard as a new one, so
it switches you to whatever else you have installed. Every setting you had is still
here — only the selection is lost. PhysiBoard now notices this on the first launch
after updating and offers you one tap back to setup, but that notice needs
notification permission, so this note is the backstop.
- Settings had two of several things and none of one. The Extras button on the
home screen opened the same page as All settings, because Extras had never
actually been built as a screen. It exists now, and holds the quick launcher,
input languages and text expansion. Screen trackpad and the SYM layer editor were
each listed in two places; the duplicates are gone. - Advanced is gone. Backup, restore, diagnostics and reset to stock are on the
settings list itself. They were the substance of that screen and there was no
reason to keep them a level down once everything else had moved out. - About is reachable again. It could only be found by typing "about" into the
search box, which is not where a fork's licence and credits should live. - The status bar and the keyboard theme are one page. The buttons, the cursor
colours, the LEDs and the theme are all the same subject, and were two separate
trips. It is called Status Bar Theme and sits under Keyboard. - Custom themes work. The tools to build one were already in the app with no
way to open them. There is now a button, a colour wheel for each part of the
keyboard, and a new theme starts as a copy of the one you are already using so
you can change one colour and save. Seven louder presets added: Synthwave,
Vapourwave, Hazard, Blueprint, Forest Floor, Rose Gold and Ink and Paper. - Theme assignment removed. Choosing separate light and dark themes and having
the system pick between them was more explaining than it was worth. You pick a
theme, and that is the theme you get. - The colour wheel fits the screen. On the Titan the dialog was taller than the
display, so the brightness slider was cut off at the bottom. - Remove bloat has more one-tap sets. Factory and lab tools, vendor apps and
games, and a set for the packages that report or record. The Android Auto
stabiliser is now labelled as in testing, because it is a reasonable hypothesis
and not a proven fix. - The notification ring's screen time is a slider, anywhere from one minute to
an hour, rather than a choice of three. - Emoji and symbol shortcodes are gone. Snippets stay, and moved to Extras.
- Sound and haptics, and the quick launcher's behaviour screen, stop hiding
their own settings behind a collapsed Advanced heading. - Going back returns you where you were, rather than to the top of the
previous screen. The home screen also gained a Status button that tells you
whether anything still needs setting up. - The app is called PhysiBoard in every language now. All nine translations
still called it Pastiera, including the name under the icon and in the keyboard
picker.
Verify the download
sha256sum -c physiboard-2.0.0.apk.sha256
Signing certificate SHA-256:
89a050fcb37aa14a16d77c737c70caaebdc4c7f10156f9dc8933adb3499c3261
PhysiBoard 1.2.4
- Turn the accent row off again. The row of è é ê ë under the suggestions had no switch:
it went missing in the settings redesign, and Reset on the Status Bar screen turned the row
on rather than off, with no way back. Show variations is on the Status Bar screen again,
under Bar height, and it now says what it is — off stays off, including after a reset.
Install: download the APK, verify with the .sha256, install over the previous version — settings are kept. Signing cert SHA-256 89a050fc…3261.
PhysiBoard 1.2.3
- Sym+C / Sym+V copy and paste. They did not: Sym+letter was reserved for the symbol
layer and app shortcuts, and copy/paste lived on Ctrl — the Fn key, but only once you have
remapped it. In a text field Sym+C, V, X and A now copy, paste, cut and select all; the
switch is on the SYM screen if you want those four chords back. - Fit the ring yourself again. The ring is fitted to one Titan 2 Elite, and it turns out
panels differ by a few pixels — a user's ring sat off the lens. The fit screen from 1.2.0 is
back on the Notification ring page: white canvas, drag the ring onto the dark spot, resize,
set thickness; Auto returns the fitted default.
Install: download the APK, verify with the .sha256, install over the previous version — settings are kept. Signing cert SHA-256 89a050fc…3261.
PhysiBoard 1.2.2
- A status bar you can actually hit. The hardware-keyboard strip was 32–36dp tall, under
Android's 48dp touch minimum, and its height was buried in the theme's Suggestions height
slider. It now has its own Bar height setting on the Status Bar screen — 36, 48, 56 or
64dp — and defaults to 56, the height of a text box. The theme slider still sizes the bar
above the on-screen keyboard and now reaches 2.2×. - The status bar can be per app. Show status bar is now Always, Never, or Only in these
apps: pick the apps where the on-screen bar earns its space (messaging, mail) and it stays
out of the way everywhere else, including the launcher's search box. Messaging, mail and
social apps (Messages, Gmail, WhatsApp, Messenger, Facebook, Instagram, Telegram, Signal and
friends) are listed to start with. Existing on/off settings carry over as Always/Never. - Clipboard and mic a third narrower, and the three suggestion slots take the space back.
SHA-256: ff9f2c33d102458902909b43fc48c71e9ca17bba7d1381c1b8e0de88eb218e0b
Install over 1.2.x — settings are kept.