<feed xmlns='http://www.w3.org/2005/Atom'>
<title>android/rsend, branch 0.1.2</title>
<subtitle>[no description]</subtitle>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/'/>
<entry>
<title>app: release 0.1.2</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=8141ea0b4e29644327e3ba579e2caf083c50f6f6'/>
<id>8141ea0b4e29644327e3ba579e2caf083c50f6f6</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>native: pick the NDK host toolchain tag by build host</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>jsvk</name>
<email>850037+jsvk@users.noreply.github.com</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=977629ec3effeaeab698fcc4f42c7827c2b181ed'/>
<id>977629ec3effeaeab698fcc4f42c7827c2b181ed</id>
<content type='text'>
The NDK names its prebuilt toolchain directory after the build host,
not the target. Hardcoding linux-x86_64 broke rsync/build.sh and
rsh/build.sh on macOS, which ships the toolchain under darwin-x86_64
(x86_64 binaries, run under Rosetta on Apple Silicon). Detect the
host with uname and fail loud on anything else.

Link: https://codeberg.org/0xlena/rsend/pulls/1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The NDK names its prebuilt toolchain directory after the build host,
not the target. Hardcoding linux-x86_64 broke rsync/build.sh and
rsh/build.sh on macOS, which ships the toolchain under darwin-x86_64
(x86_64 binaries, run under Rosetta on Apple Silicon). Detect the
host with uname and fail loud on anything else.

Link: https://codeberg.org/0xlena/rsend/pulls/1
</pre>
</div>
</content>
</entry>
<entry>
<title>app: drop --mkpath for compatibility with old remote rsyncs</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=44ebf6db6cf2725e18f0e1129f4005fd456b03dc'/>
<id>44ebf6db6cf2725e18f0e1129f4005fd456b03dc</id>
<content type='text'>
rsync forwards --mkpath to the remote side when sending, so a remote
rsync older than 3.2.3 (notably stock macOS, whose openrsync is
"rsync 2.6.9 compatible") rejects every sync with "unrecognized
option '--mkpath'".

rsync creates the final component of the destination path on its own,
so flat remote paths keep working everywhere, including the documented
rrsync setup whose root is pre-created. Only a nested remote path with
missing parents now needs a one-time mkdir -p on the server; the log
shows rsync's error when it is missing.

Reported-by: jsvk
Link: https://codeberg.org/0xlena/rsend/pulls/1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
rsync forwards --mkpath to the remote side when sending, so a remote
rsync older than 3.2.3 (notably stock macOS, whose openrsync is
"rsync 2.6.9 compatible") rejects every sync with "unrecognized
option '--mkpath'".

rsync creates the final component of the destination path on its own,
so flat remote paths keep working everywhere, including the documented
rrsync setup whose root is pre-created. Only a nested remote path with
missing parents now needs a one-time mkdir -p on the server; the log
shows rsync's error when it is missing.

Reported-by: jsvk
Link: https://codeberg.org/0xlena/rsend/pulls/1
</pre>
</div>
</content>
</entry>
<entry>
<title>app: release 0.1.1</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=48a9af712d13ac885d8945df29e88c291dfc07f6'/>
<id>48a9af712d13ac885d8945df29e88c291dfc07f6</id>
<content type='text'>
versionCode 2. Empty-path and config-corruption fixes, rsync process
cleanup on stopped syncs, keygen error reporting, and the store icon.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
versionCode 2. Empty-path and config-corruption fixes, rsync process
cleanup on stopped syncs, keygen error reporting, and the store icon.
</pre>
</div>
</content>
</entry>
<entry>
<title>metadata: add the fastlane store icon</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=6cbbfba9fd19caa1b204b536c4d4d12f0b9a0226'/>
<id>6cbbfba9fd19caa1b204b536c4d4d12f0b9a0226</id>
<content type='text'>
The app ships only an adaptive vector launcher icon, which F-Droid
cannot render, so the store listing showed no icon. Ship a 512x512
raster of the same mark where F-Droid looks for it (fastlane images/
icon.png).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The app ships only an adaptive vector launcher icon, which F-Droid
cannot render, so the store listing showed no icon. Ship a 512x512
raster of the same mark where F-Droid looks for it (fastlane images/
icon.png).
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: remove unused testsshd</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=04fede70866f209a8cb9dfe8736872fc25009336'/>
<id>04fede70866f209a8cb9dfe8736872fc25009336</id>
<content type='text'>
Nothing referenced it: the rsh tests run their own in-process SSH
server (sshserver_test.go), which testsshd largely duplicated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nothing referenced it: the rsh tests run their own in-process SSH
server (sshserver_test.go), which testsshd largely duplicated.
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: make release.sh idempotent</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=fb3199b4a993be16804129111c0bb35cc39a70f3'/>
<id>fb3199b4a993be16804129111c0bb35cc39a70f3</id>
<content type='text'>
Re-running on the same tag died creating a release that already
existed. Reuse the tag's release when present, replace a stale asset
before uploading, and parse API responses with python3 instead of sed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Re-running on the same tag died creating a release that already
existed. Reuse the tag's release when present, replace a stale asset
before uploading, and parse API responses with python3 instead of sed.
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: fail when gradle pins drift from versions</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=80a4a209d63e55ff09c7f31b59358bfe56b055b4'/>
<id>80a4a209d63e55ff09c7f31b59358bfe56b055b4</id>
<content type='text'>
The gradle files and go.mod repeat pins from versions because gradle
cannot source a shell file. Compare them in ci/test.sh so a bump that
misses a copy fails loud instead of silently building with the old
version.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The gradle files and go.mod repeat pins from versions because gradle
cannot source a shell file. Compare them in ci/test.sh so a bump that
misses a copy fails loud instead of silently building with the old
version.
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: pin the exact JDK release</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=f8253eace9d231b276024dd66406d890c1d954e1'/>
<id>f8253eace9d231b276024dd66406d890c1d954e1</id>
<content type='text'>
The Adoptium "latest 17 GA" endpoint floats while versions promises
never to float. Pin the full Temurin build and fetch it by version.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Adoptium "latest 17 GA" endpoint floats while versions promises
never to float. Pin the full Temurin build and fetch it by version.
</pre>
</div>
</content>
</entry>
<entry>
<title>app: anchor the picker start path at the storage root</title>
<updated>2026-07-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-07-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/rsend/commit/?id=2c867cf95341daed1509e3cc48fec9de72cfe2f2'/>
<id>2c867cf95341daed1509e3cc48fec9de72cfe2f2</id>
<content type='text'>
The containment check was a bare prefix match, so a sibling such as
/storage/emulated/0-evil passed for a root of /storage/emulated/0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The containment check was a bare prefix match, so a sibling such as
/storage/emulated/0-evil passed for a root of /storage/emulated/0.
</pre>
</div>
</content>
</entry>
</feed>
