Skip to content

v0.2.1

Choose a tag to compare

@cubepy cubepy released this 21 Aug 13:24
· 33 commits to main since this release
c101b83

Your servers on the home screen, a terminal that floats over other apps, and the version the app shows is now the version it is.

Added

A home-screen widget. The servers you actually use, one tap from the launcher: pinned first, then favourites, then whatever you connected to most recently. Resize it and it holds more.

It knows less than you might expect, on purpose. A widget is drawn by the launcher, in the launcher's process, long before CubePilot is running — so it cannot read the vault, whose key only this app can use. What it reads instead holds a name and an internal id and nothing else: no host, no username, no port, no key, no password. Nothing in it can reach a machine. And with the app lock on, the widget lists nothing at all: a home screen is readable by whoever is holding the phone, which is the situation the lock is there for.

A Quick Settings tile. CubePilot two swipes from anywhere, landing on the dashboard with the quick-connect field already focused. The tile deliberately connects to nothing on its own — it can be tapped over a lock screen, and a tile that opened a session to the last server you used would be a one-tap root shell on a phone lying on a table.

A floating terminal. Shrink a session into a small window that stays on top while you use other apps — the button is in the tab bar, beside the one that opens a new session. It shows the output and takes no input: a floating window has no keyboard, and a stray tap that reached a root shell would be a bad way to find that out. Tap it to come back full size.

Connect outside the VPN — for real this time. The setting has existed since v0.2 and has been answering "not supported" on every device, because the Android side of it was never written. It is written now: connections for a server with that switch on go out over the network underneath the VPN rather than through it.

The version, faintly, beside the Dashboard title. "Which build are you on?" is the first question of every bug report, and the answer was four taps deep in Settings. It sits next to the heading now, dim enough to disappear until it is the thing you need.

Fixed

Shell prompts are coloured. All of them. v0.2 coloured the first prompt of a session and no others, and the reason is that a prompt is only ever alone once. As soon as you type something and press Enter, the shell echoes what you typed onto the same line and ends it — so from the second prompt on, the prompt arrives inside a complete line, behind the control bash sends between commands, with your command after it. Whole lines were being refused for carrying an escape, and the prompt pattern was anchored to the end of the line, which by then is your command rather than the $.

Both rules now match what a shell actually sends, captured from bash on a pty rather than guessed at. Your command keeps its own colours after the prompt, and Note: see foo#bar is still not a prompt.

Every filled button was under the contrast standard. White text on the brand blue came to 4.42:1 and on the brand purple to 4.23:1, against WCAG AA's minimum of 4.5:1 — the line below which text stops being readable for a good number of people rather than merely looking soft. Both colours are one step deeper now. Side by side you will not see the difference; that was the point of measuring instead of looking.

Tapping a row in Settings looked like nothing happened. The ripple was being painted behind the card it was supposed to appear on, so every tappable row in a card responded invisibly.

About said 0.2.0 in every build since 0.1.0. The line under About was written out by hand, so the one screen whose entire job is to answer "which build is this?" answered it wrongly for eighteen releases, and called itself a pre-release regardless of how the release was actually published. Both now come from one constant, and a test reads pubspec.yaml and fails if the two ever disagree.

Under the surface

Every screen in the app is now run through Flutter's own accessibility guidelines on every build — tap-target size, labelled controls, text contrast in both themes, right-to-left layout, and the largest system font. The two fixes above are what the first run found, and both had been shipping for months.

Which file do I want?

Almost certainly arm64-v8a — every Android phone sold in the last several years. armeabi-v7a is for older 32-bit devices, x86_64 for emulators.

Upgrading

Installs straight over v0.2. Same signing key, so your servers, keys and timeline are untouched.

The widget and the tile have to be added by you, once: long-press the home screen → Widgets → CubePilot, and pull down the Quick Settings panel → edit → drag the CubePilot tile in.

Checksums

52133ca9be344461503ceadda4e1d55c15966570c8cb831b4f9dfc16f131b0d3  CubePilot_v0.2.1_arm64_v8a.apk
f08143785ce43e739e5dcc5914e29a19700a9f4b4ff1a0aec9aa0c7365dc0bf2  CubePilot_v0.2.1_armeabi_v7a.apk
a7f8323a3c2576f918ad67b87b94ab895710f406b19fbfca8e5b14ae5071b702  CubePilot_v0.2.1_x86_64.apk