Repository navigation
v0.2.0
Install as a package, for amd64 (tested on Fedora 44 and Debian stable) or arm64
(built, not yet tested):
# Fedora
sudo dnf install https://github.com/fqazzazee/shuttle/releases/download/v0.2.0/shuttle_0.2.0_linux_amd64.rpm
# Debian, Ubuntu
curl -LO https://github.com/fqazzazee/shuttle/releases/download/v0.2.0/shuttle_0.2.0_linux_amd64.deb
sudo apt install ./shuttle_0.2.0_linux_amd64.debThen enable the service and, on GNOME 50, the extension: see the
README.
On Android 11 or later (arm64): download shuttle_0.2.0_android_arm64.apk on the
phone and open it. It installs over an earlier release, keeping its setup; see the
README.
checksums.txt has every file's SHA-256.
shuttle is source-available under PolyForm Noncommercial 1.0.0 or PolyForm Internal Use
1.0.0; its GNOME extension is GPL-2.0-or-later. See
LICENSE.
Changelog
Features
- feat(android): About links to the license; the notices on a page of their own (#183)
- feat(android): About links to the source, the releases and Buy me a coffee, and checks this copy (#178)
- feat(android): Help: how to use the app, as questions (#179)
- feat(android): a new folder on the share, from the wizard (#166)
- feat(android): a shuttle's settings, every row, set and reset (#145)
- feat(android): add a share and a shuttle on the phone (#140)
- feat(android): an App tab for Help, Backup, About and the app's colours (#182)
- feat(android): ask for the three permissions, and wait without them (#130)
- feat(android): back up and restore the app's setup (#180)
- feat(android): edit a shuttle in the wizard (#164)
- feat(android): enable, disable and delete a shuttle (#165)
- feat(android): examples under the share editor's fields (#174)
- feat(android): held deletions in the Conflicts tab, and Allow them (#147)
- feat(android): keep share passwords under an Android Keystore key (#131)
- feat(android): notifications in a channel per kind, worded as the desktop's (#139)
- feat(android): one daemon per process, and a service for real time (#132)
- feat(android): run scheduled and share-available shuttles with WorkManager (#133)
- feat(android): say so when the app was force-stopped, and sync again (#134)
- feat(android): shrink the release APK, 35 MB to 13 (#169)
- feat(android): shuttle's palette, and a switch for the wallpaper's colours (#177)
- feat(android): the Activity tab, by shuttle and problems only (#148)
- feat(android): the Conflicts tab: keep the phone's, the share's, or both (#146)
- feat(android): the Profiles tab: each profile and who uses it (#153)
- feat(android): the Shares tab: each share, its users, its state, its room (#150)
- feat(android): the TUI's logo, the bus and the wordmark, atop the Shuttles tab and About (#181)
- feat(android): the TUI's tabs, and a notice's tap opens its tab (#142)
- feat(android): the app's skeleton, built on the Go core in CI (#129)
- feat(android): the launcher icon, the bus in shuttle's colours on ink (#175)
- feat(android): the profile editor: new, its settings, duplicate, delete (#155)
- feat(android): the selected shuttle in full, as the TUI's panel (#144)
- feat(android): the share editor: add, edit, test, password, delete (#152)
- feat(android): the shuttle list, with Sync now, pause and pause all (#136)
- feat(android): the wizard replaces the minimal form; the flow test runs through it (#167)
- feat(android): the wizard's first step: the share, and its folder, browsed (#157)
- feat(android): the wizard's last steps: name, profile, settings, saved (#163)
- feat(android): the wizard's second step: what to sync of the folder, marked (#159)
- feat(android): the wizard's third step: the folder on the phone, browsed or made (#162)
- feat(android): third-party notices in the APK, and an About screen (#170)
- feat(config): a profile's settings as rows, set one at a time (#154)
- feat(config): a shuttle as its editor has it before it is saved (#160)
- feat(daemon): name this side in conflict copies by a given device name (#126)
- feat(daemon): read and set a shuttle's settings over D-Bus (#118)
- feat(daemon): shuttles pause on a metered connection, by default (#114)
- feat(engine): a local side that ignores case, as the phone's storage does (#124)
- feat(engine): leave out names the other side cannot hold, never delete them (#125)
- feat(extension): a preferences window for each shuttle's settings (#119)
- feat(extension): the dropdown says when a metered connection holds a shuttle (#116)
- feat(fsys): a local folder says whether it folds case and which names it refuses (#123)
- feat(mobile): the Android app's binding to the daemon (#127)
- feat(release): pin the release key's certificate (#172)
- feat(release): the signed arm64 APK in each release (#168)
- feat(tui): a Metered row in the settings of profiles and shuttles (#115)
Bug fixes
- fix(android): follow config reloads: the service, the jobs, removed shuttles (#135)
- fix(android): no freeze when the app opens while it is updated (#176)
- fix(core): name this side as the phone or the computer it runs on (#161)
- fix(daemon): no share notices from shuttles waiting for a permission (#138)
- fix(fsys): read a share 1 MB at a time, not 32 KB (#121)
- fix(release): read the APK's certificate as newer build tools print it (#173)
Other changes
- refactor(config): the settings form's rows, shared by every editor (#117)
- refactor(notice): word the daemon's events in a portable package (#137)
- refactor(pick): what a shuttle syncs of its folder, marked for the TUI and the phone (#158)
- refactor(present): say where a share is, for the TUI and the phone (#149)
- refactor(present): the shuttle panel's words, for the TUI and the phone (#143)
- refactor(secrets): keep the Secret Service apart from the Store (#122)
- refactor(shares): keep a share's password in one place, for the TUI and the phone (#151)
- refactor(shares): list a share's folder as the wizard shows it, for the TUI and the phone (#156)