| Age | Commit message (Collapse) | Author | Files | Lines |
|
The Rsync comment about draining a hostile remote's pipe sat on the
Tally type, where it means nothing; it describes boundedLines. Scheduler
explained itself with what happened during development instead of the
constraint that WorkManager persists unique names across upgrades, and
MainActivity and SyncLog did the same. Keys pointed at a pin() that does
not exist. The App header restated the class name and omitted half of
what onCreate does. OUT_FORMAT had no caller outside its file.
The README layout list omitted fastlane. The e2e test hardcodes a copy
of the app's rsync vector with nothing saying so. useradd already writes
a locked password field, so "skip passwd -l" does not leave a non-locked
one and key auth is still refused; verified against sshd with UsePAM no.
The CI file also runs verify-repro on a tag, and the NDK and build-tools
are pinned by revision and verified against Google's manifest rather
than a checksum this repository owns, which the reproducibility notes
claimed for every input.
metadata/ held one document and nothing else, and reads as a store
metadata directory beside fastlane/metadata. Root, extensionless,
beside THIRD_PARTY.
|
|
Document the multi-remote release, publish matching store metadata,
and advance the version once from the released 0.1.3 base.
|
|
Support Alpine/musl and Debian/glibc hosts, lock downloaded and
Gradle artifacts, and verify native and APK security properties.
|
|
versionCode 4. Bound the SSH handshake so a stalled server cannot hang
a sync. Persist config, key, and host pin atomically so an interrupted
write cannot corrupt state. Replace the chained one-time jobs with
periodic work that survives reboots; the schedule floor is now
WorkManager's 15-minute minimum.
|
|
Checksum-pin every downloaded toolchain archive. Before publishing,
verify the APK was built from HEAD, the tag matches versionName,
apksigner passes, and the tree is clean; publish a sha256 sidecar
and treat published assets as immutable. Compare full unsigned APKs
in verify-repro and run the Android unit tests in CI.
|
|
versionCode 3. Drop --mkpath so remotes with an rsync older than 3.2.3
(stock macOS included) can receive syncs; rsync still creates the final
remote path component on its own. NDK host toolchain detection so the
native build also runs on macOS hosts.
|
|
versionCode 2. Empty-path and config-corruption fixes, rsync process
cleanup on stopped syncs, keygen error reporting, and the store icon.
|
|
A small Android app for one-way folder backup, a KISS alternative to
Syncthing. It bundles rsync (built from pinned source via the NDK) and
a pure-Go SSH transport, both shipped in the APK as lib*.so and run from
the native library directory.
rsend pins the host key, stores the ed25519 identity Keystore-encrypted,
pushes each folder additively or as a mirror, and runs on demand or on a
WiFi-only schedule. The build is self-contained and reproducible: make
setup provisions the toolchain, make builds rsync, rsh, and the APK.
|