Skip to content

Releases

Varco 0.2.4

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 08 Nov 01:14
2650c75

Varco 0.2.4 can connect to SSH servers on your local network on Android 17.

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

Changed

  • When you connect to a server that looks local, Varco asks for the Nearby devices permission first. Then it connects. A local server is a private IP address (for example 192.168.x.x or 10.x.x.x), a name without a dot, or a name that ends in .local, .lan, .home.arpa or .internal. Varco does not ask when you connect to a server on the internet.
  • If the permission is off and a connection times out, the message tells you to allow Nearby devices.

Fixed

  • SSH to a server on the local network timed out on Android 17. Android 17 blocks the local network for apps that target it until you allow Nearby devices, and Varco did not ask for this permission.

Privacy and security

  • New runtime permission: Nearby devices (ACCESS_LOCAL_NETWORK). Varco uses it only for SSH connections to your local servers. You can deny it; then only local servers do not work.
  • A VPN with "Block connections without VPN" still blocks local servers. Android lets only the VPN app through, and Varco cannot change this.
File Use
Varco-0.2.4.apk Release build, signed.

SHA-256:

  • Varco-0.2.4.apk: 083cffd5f2ec52c3c4104ce5f827bdacdd083e0909562d8ff5d9c4fa50c624fa

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

Check the certificate with apksigner verify --print-certs Varco-0.2.4.apk or with AppVerifier. Do not install an APK with a different certificate.

Varco 0.2.3

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 05 Nov 22:19
9fc4a2e

Varco 0.2.3 makes file transfers safer, hardens paste and the terminal, and fixes problems in the UI.

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

Changed

  • Files: a running transfer has a Stop button. Back asks before it stops a transfer. A finished download shows "Saved".
  • Closing a connected session (on Home or in the session sheet) asks first. A tab that is not connected closes at once.
  • Deleting a snippet asks first.
  • The server form tells why Save is off: "No spaces" for the host, "1–65535" for the port.
  • App lock does not turn on when the phone has no screen lock. The setting tells you to set one first.
  • With TalkBack, each switch row and each option row is one item, with its state.
  • After you deny the notification permission once, Varco does not ask again.

Fixed

  • A rename in Files no longer replaces a file that has the same name. Before, the old file was lost with no warning.
  • If Varco cannot read its data file, Home shows a notice. The file is kept, and a restart reads it again. Before, the app opened empty with no message.
  • A reconnect starts with a soft terminal reset. Before, the modes of the old connection (alternate screen, mouse reports) stayed on.
  • After an SFTP error, Back goes up one folder and does not close Files.
  • A new folder opens at the top of the list.
  • A link download shows an indeterminate progress bar, not the size of the link.
  • A name such as " .. " is not accepted in Files.
  • "New session" in the session sheet opens the server form when the user name is empty.
  • A long keyboard-interactive prompt can scroll.
  • A double tap on Save for a new server no longer adds the server two times or closes the app.
  • A public key file that you pick for import shows a message: pick the private key file.
  • The terminal gets its size one time when it opens, not two times.

Privacy and security

  • Other apps cannot draw over Varco, and Varco ignores taps that go through an overlay. This protects the host key and secret prompts. This adds the normal permission "hide overlay windows".
  • A one-line paste from the keyboard that holds control characters now goes through the paste filter and bracketed paste. Before, it went to the shell as typed keys.
  • The bracketed paste markers and the text go to the server in one write, so that a full input queue cannot drop one marker.
  • CAN and SUB end an APC string. Before, a server could leave the terminal in a state that ignored all output.
  • A server can set the clipboard (OSC 52, when you allow it) only from the tab on screen while Varco has focus. The bell vibrates only for the tab on screen.
  • A replaced file on the server keeps its mode during the upload. Before, the data was for a short time in a file with the default mode (for example 0644 for a 0600 key).
  • Remote file names and server errors are shown without control characters and without bidi characters, so that a name cannot look like a different name.
  • A close during connect now ends the new connection. Before, Files could leave a signed-in SSH session open.
  • A cancelled YubiKey tap cannot send a wiped PIN to the key. Before, this could use up a PIN retry.
  • Import reads at most 1 MB of a file that is not a font.
  • The app lock state changes only on the main thread, so a cold start cannot show the app before the lock.
File Use
Varco-0.2.3.apk Release build, signed.

SHA-256:

  • Varco-0.2.3.apk: 5350b27b5237343aaf0ddcf5068b1e48cf772e54f2fdba70149bf8c7853f9fd4

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

Check the certificate with apksigner verify --print-certs Varco-0.2.3.apk or with AppVerifier. Do not install an APK with a different certificate.

Varco 0.2.2

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 31 Oct 01:16
783948e

Varco has the arrow keys on the right of the key bar, as on a computer keyboard. Three problems that could stop the app and close all sessions are fixed.

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

Changed

  • The arrow keys are on the right of the key bar, in the layout of a computer keyboard: ↑ is on the top row, above ↓, and ←, ↓ and → are on the bottom row. The other keys stay on the left in the same order. ALT is now at the start of the bottom row. Each key keeps its size and the 48 dp row height.
  • Back during a text selection in the terminal ends the selection, and the terminal stays open. Before, Back went to Home.
  • The text selection toolbar shows only Copy and Paste. Before, it also had a "More…" item that did nothing and ended the selection.
  • Files cuts a long path at the start, so that you can see the open folder (for example …/projects/varco). A server name in the title is still cut at the end.
  • All text in the app is in English, also the text that comes from libraries. Before, some TalkBack words (for example "Close sheet", "On" and "Off") were in the language of the phone.
  • The APK is about 150 KB smaller, about 3.5 MB.

Fixed

  • If Varco cannot make its data file, for example when the storage is full, the app does not stop now. Before, the app stopped and closed all sessions after each connection and each settings change. Varco tries to save again at the next change.
  • A USB security key without a smart-card interface (for example a FIDO-only key, or a YubiKey with CCID off) does not stop the app now. The sign-in fails with an error in that tab. Before, the app stopped and closed all sessions.
  • Colours that a server sets (OSC 4 and OSC 10 to 12, for example from base16-shell or pywal) stay when you go back to the terminal from Files, Settings or Home, or after you unlock the app. Before, Varco reset these colours in all tabs. A change of colour scheme still resets all tabs.
  • After you delete a key, Varco shows the Keys list. Before, it went back to Home.

Privacy and security

  • A server cannot stop Varco with a folder listing that has the same name two times. Before, a bad server could stop the app and close the sessions to all other servers. Files now shows each name one time.
  • Varco does not have the unused autofill code of the terminal engine now. This code could write text into the shell without the safe paste filter. It did not run, and the terminal stays excluded from autofill.
  • The "More…" item kept a copy of the selected terminal text in memory. The item and the copy are gone.
  • The APK does not contain the list of AndroidX library versions now.
File Use
Varco-0.2.2.apk Release build, signed.

SHA-256:

  • Varco-0.2.2.apk: 2581f040c0ac4267cd878c67517f64387a8cb07664dff3c93be8b58f61375541

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

Check the certificate with apksigner verify --print-certs Varco-0.2.2.apk or with AppVerifier. Do not install an APK with a different certificate.

Varco 0.2.1

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 29 Oct 21:41
47162e3

Varco removes hidden characters from the tab title that a server sets, and bad terminal output from a server can no longer stop the app.

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

Fixed

  • A terminal sequence that causes an error is dropped, and the session continues. Before, bad output from a server could stop the app and close all tabs.
  • A colour reset (OSC 104) changes only colours 0 to 255 and ignores a value that is not a number.
  • A rectangle attribute change (DECCARA, DECRARA) stays on the screen when margins are set.

Privacy and security

  • Varco removes control and format characters (bidi marks, zero-width characters) from the tab title that a server sets. A server cannot show a title that hides or reverses text. A title with only such characters shows no title.
  • Dialogs that show server text now remove all format characters. Before, they removed only bidi overrides and isolates.
File Use
Varco-0.2.1.apk Release build, signed.

SHA-256:

  • Varco-0.2.1.apk: c28ccef752f601a90086081eae5c1f794b5fffddd289ced7b0dd1f81c3404d95

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

Check the certificate with apksigner verify --print-certs Varco-0.2.1.apk or with AppVerifier. Do not install an APK with a different certificate.

Varco 0.2.0

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 27 Oct 23:54
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

Varco 0.1.2

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 26 Oct 23:47
d33f619

Varco clears terminal copies from the clipboard after a minute, and a store read error no longer stops the app.

Requires Android 15 or later. Update from 0.1.1 in place: the signing key is the same.

Changed

  • Text that you copy in the terminal is cleared from the clipboard after 1 minute. Terminal output often holds secrets. When Varco is in the background, Android does not let it see the clipboard, so Varco then clears it also if you copied other text in that minute.

Fixed

  • When the store could not be read at start for a reason other than "no file" (for example a storage error), Varco stopped at each start. Now Varco keeps the file aside and opens with an empty list, as for a damaged file. If nothing is saved, the next start reads the copy again.
  • A store file that exists but cannot be opened is no longer treated as missing. Before, the next save replaced your servers and keys.

Privacy and security

  • Memory tagging (MTE) is on. On a phone with MTE (GrapheneOS, or a Pixel 8 or later with the developer option or Advanced Protection), a bad memory access stops the app at once.
  • Varco no longer asks for a downloadable emoji font. On a phone with Google Play Services, that request went to the Play Services font provider.
  • The build checks the SHA-256 of each dependency and of the Gradle distribution.
File Use
Varco-0.1.2.apk Release build, signed.

SHA-256:

  • Varco-0.1.2.apk: b76db6ad290d50f9a8ef3fc8f1372122342a9e82e0ac437ddd341bd43ac18824

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

Varco 0.1.1

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 26 Oct 23:47
ea58e96

Varco asks before an upload replaces a file, and keeps your saved data after a store read error.

Requires Android 15 or later. Update from 0.1.0 in place: the signing key is the same.

Changed

  • Upload: when the folder on the server has a file with the same name, Varco asks "Replace?". Before, the file on the server was overwritten with no warning.

Fixed

  • When the encrypted store cannot be read at start (for example after a passing Keystore error), Varco opens with an empty list and keeps the old file. A second error no longer overwrites that copy. If nothing was saved since, the next start reads the copy again, and your servers and keys come back.
  • A file name from the file picker is never empty, "." or "..". Varco uses "upload" instead.

Privacy and security

  • Store write warnings in the system log keep only the type of the error.
File Use
Varco-0.1.1.apk Release build, signed.

SHA-256:

  • Varco-0.1.1.apk: 27808e056e3140dc26485cefa53a5e4f6da88bf9ce48f3cff144a94b7fdc658b

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

Varco 0.1.0

Choose a tag to compare

@Turtlecute33 Turtlecute33 released this 26 Oct 23:46
5702224

First version.

  • Terminal: Termux engine (true colour, mouse, vim, htop, tmux), extra-keys bar, snippets, pinch zoom.
  • SSH: post-quantum key exchange first (mlkem768x25519-sha256, sntrup761x25519-sha512), chacha20-poly1305 / AES-GCM, strict host key check.
  • Keys in the secure chip (StrongBox/TEE): new keys and imported Termux keys. Optional fingerprint per use.
  • YubiKey PIV over NFC and USB-C.
  • Import from Termux: keys, ~/.ssh/config, known_hosts, colors.properties, font.ttf.
  • SFTP file browser, 13 colour schemes, optional app lock. No analytics, no network use except SSH.

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