Skip to content

Varco 0.2.0

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 27 Oct 23:54
· 27 commits to main since this release
f766138

Varco shows your trusted host keys in Settings and keeps your SFTP files safer. Servers have fewer ways to put text into the terminal or to show a false prompt.

Requires Android 15 or later. It runs on all ABIs because the APK has no native code. Update from 0.1.2 in place: the signing key is the same.

Changed

  • Settings > Trusted host keys shows each host key that you trusted, with its SHA-256 fingerprint. You can delete a key, or clear the lines that you imported from known_hosts. After a delete, the next connection asks you again to trust the key.
  • The ~/.ssh/config import does not add a host that needs ProxyJump or ProxyCommand, because Varco has no jump hosts. The import shows these hosts under "Not imported", with the reason. ProxyJump none still imports the host.
  • TalkBack: each extra key is a button with a spoken name. CTRL and ALT tell their state (Off, Next key or Locked), and keys with a long press have a named action. TalkBack also reads which theme is selected, and the session sheet tells the state of each tab in words.
  • The rows of extra keys are 48 dp high (before: 40 dp). This is the minimum size for a touch target.
  • UI text has a contrast of 4.5:1 or more in each colour scheme. Before, subtitles, accent text and error text were too light in some schemes (down to about 2.3:1, estimate). The default scheme does not change. 9 of the 13 built-in schemes change a little.
  • Settings > Open-source licences shows the full licence texts.
  • Files: a folder with many symbolic links opens faster. Varco checks only the first 50 links when it lists the folder. It checks a link when you tap it. Before, a folder with 200 links took about 12 s at 60 ms round-trip time (estimate).
  • A rotation, a pinch zoom or a font size change uses much less memory in a tab with a long scrollback. Before, each change used about 30 MB for 20,000 lines (estimate).
  • Varco reads the terminal font file and deletes keys in the background, not on the main thread. The terminal shows the built-in font until your font is loaded.
  • Build and internal: material3 1.5.0-beta02, profileinstaller 1.4.1 and Gradle 9.8.2. There are new unit tests for the host key trust rule, the app lock timeout, the terminal input and the colour contrast. The release APK does not contain unused native code and extra copies of licence files. It is about 100 KB smaller, about 3.6 MB (estimate).

Fixed

  • Reconnect uses the server as it is saved now. Before, Reconnect used the old values after you changed the host, port, user or key. Varco also asked again for a password that you saved at the first sign-in. The tab chip, the Home tab row and the session list also show the name and user@host of the last connection.
  • A saved password that the server rejects does not stay saved now. The password dialog starts with "Save password" on. A successful sign-in saves the new password. If you turn the box off, Varco removes the old password. This also works on servers that allow only keyboard-interactive. Before, each connection sent the wrong password first, and a server with fail2ban could ban your phone.
  • Files: the characters *, ? and \ in a remote file name now mean only themselves. Before, Delete on a file with the name * deleted all files in its folder. An upload to a?c could replace abc.
  • Files: an upload with Replace first writes to a temporary file in the same folder. Then it replaces the old file in one step. If the connection stops, the original file stays complete. A server without this rename function gets the old upload method.
  • Files: a download over a larger file does not keep old bytes at the end now. If a download fails, Varco deletes the incomplete file.
  • Files: if the first listing fails, Refresh now tries again. Before, Refresh did nothing, and you had to go out of the screen.
  • A large paste on a stalled connection does not freeze the app now. Typed input goes into a queue that never blocks. If more than 4 MiB waits, Varco does not send the new input and shows a short notice in the terminal.
  • The terminal bell vibrates one time in 150 ms or less often. Before, output with many bell characters (for example a binary file) made the phone vibrate without stop and the terminal slow.
  • A Keystore error when Varco saves its data does not stop the app and all sessions now. Varco saves again at the next change. If StrongBox cannot make a key, Varco uses the TEE.
  • The font size slider in Settings and pinch zoom now use the same range, 6 to 32 sp. Before, if you zoomed in with a pinch and then touched the slider, the size went back to 24 sp or less.
  • Three fixes from the Termux terminal engine:
    • Programs that ask the terminal for its keys do not get Page Up and Page Down swapped.
    • After an erase to the end of a line, copy and reflow do not join that line to the next line.
    • The terminal stores very long rows correctly.

Privacy and security

  • When you delete a server, Varco also deletes its trusted host keys if no other server uses the same host and port. Before, a list of each host that you connected to stayed on the phone.
  • Only accessibility tools, such as TalkBack, can read the terminal text. Other apps with accessibility access cannot read it.
  • A paste from the keyboard uses the same safe paste as the menu. Varco removes ESC and other control characters. It uses bracketed paste when the shell asks for it. Before, each line of the paste ran at once.
  • Varco removes control sequences from the server banner and from the disconnect reason. Before sign-in, a server that you did not trust yet could change the title, the clipboard or the screen.
  • Varco replies to a terminal capability request (XTGETTCAP) only for hex names, as xterm does. Before, the reply could send server text back to the shell as typed input.
  • The code dialog (keyboard-interactive) has the title " asks", and the label "Message from the server" marks the server text. Varco removes control and bidi characters from this text and shows 500 characters or fewer. Code fields use the password keyboard, so the keyboard does not learn the codes. A server cannot show a dialog that looks like the Varco dialog for the YubiKey PIN or a password.
  • In the host key dialog, Trust and Replace key are off for 0.5 s after each question. A tap that you made for one server cannot accept the key of a different server. Cancel works immediately.
  • Disconnect all in the notification needs an unlocked phone. The notification shows on the lock screen.
  • The session list always shows the real user@host. The title that the server set comes after it. A server cannot show a false user and host.
  • You can let servers set the clipboard (OSC 52). If a server sets the clipboard while Varco is in the background, Varco now clears it after 1 minute too. Before, the clip stayed.
  • Build: Google Maven gives only Google and AndroidX libraries. All other libraries come from Maven Central. The build reads the passwords for the release key from the Keychain only when it signs a release. Commands never get these passwords as arguments.
File Use
Varco-0.2.0.apk Release build, signed.

SHA-256:

  • Varco-0.2.0.apk: 00509978318d6220d60d044a57731f4e78b69f5f906cd99c18bc82e41b73be55

Signing certificate SHA-256: c1:c9:b7:b7:7e:23:d0:28:d1:55:ce:ae:f9:6f:80:b8:b1:8b:f6:92:22:b2:ef:c6:ff:7f:ff:1e:99:b0:a9:d9