Repository navigation
Releases: RISE-Maritime/Logline
Release list
1.2
Packaging only: no behaviour changed since 1.1.
The release installs beside a development build
A phone that runs builds from a laptop holds a debug-signed se.rise.logline, and Android refuses an
APK signed with a different key over it (INSTALL_FAILED_UPDATE_INCOMPATIBLE). The only way through
was an uninstall, which takes filesDir with it — the mTLS credentials and the entity id, neither of
which the app can regenerate.
Release builds now use the application id se.rise.logline.release, so they install alongside a
development build instead of fighting it. The development build keeps the plain id, because that is
the install holding state nobody wants to re-import.
Two consequences. A phone carrying the 1.0 or 1.1 release sees this as a second app rather than an
upgrade, and the old one has to be removed by hand there. And the two installs are separate apps with
separate settings, so they must not be given the same entity_id — two installs publishing on one key
interleave with nothing on the bus saying so.
1.1
The Monitor tab, a Minimum logging mode, and keelson 0.6.0-pre.18.
Monitor
A new tab that watches another entity on the bus and draws what it publishes as cards you
choose — value, plot, heading, chart and the rest — the Foxglove panels on a phone. Cards resolve
their inputs by subject, so one board follows whichever source is publishing.
It reads the router's REST plugin as Server-Sent Events rather than subscribing, because a
subscribed sample aborts this Zenoh binding; docs/monitor.md explains the
mechanism. The Zenoh subscriber is written and ships dormant behind
ZenohBinding.SUBSCRIPTIONS_SAFE: it has been proven on a phone against a patched binding, and a
fix is proposed upstream (milyin/prebindgen#758, eclipse-zenoh/zenoh-flat-jni#49). Watching another
boat never restarts a run.
Minimum logging
A mode for a phone carried only to mark events: eight channels instead of thirty-nine, position
capped at 0.2 Hz, IMU and media off. Measured over two hours on a Pixel 6 — 0.361 MB/h against
240.2 MB/h, and about 25 hours of battery against 11. It narrows the tuned profile rather than
editing it, so Full comes back untouched.
Subjects and protocol
Re-synced to keelson 0.6.0-pre.18: all nineteen vendored protobuf files byte-identical, QoS
profiles re-verified. Six host-telemetry subjects adopted — free and used disk, memory, swap, host
name and boot time — with the disk ones carrying their mountpoint in the source id.
cpu_load_pct and cpu_temperature_celsius are unobtainable under an app's own uid and are
documented as such. set_config now refuses with UNSUPPORTED, which pre.18 added for exactly
this case.
Fixes
- A held radio reading's timestamp is converted once per reading, not per poll: ~166 real
measurements had been publishing as 18 766 distinct instants. - The MCAP schema descriptor is generated into
build/instead ofsrc/, which had made
./gradlew buildrefuse to run at all. - CI stopped installing an SDK package Google withdrew.
Docs
An install and setup guide, a Monitor page, and deploying.md narrowed to one audience.
Monitor over Zenoh — preview
Preview build of monitor-zenoh-subscriber (094dc0a, versionCode 10214). Not a version release — main is unchanged and still ships the REST-based Monitor tab.
What it does. The Monitor tab reads another entity over a real Zenoh subscriber instead of the router's REST plugin, so it no longer needs port 8000 to be reachable. Turning subscriptions on also re-enables the checklist screens and platform-document discovery, which the same fault had gated; only Monitor has been exercised.
Why it is a preview. It packages a hand-built libzenoh_flat_jni.so: zenoh-flat-jni 1.10.1 rebuilt with the class-loader fix proposed upstream in milyin/prebindgen#758 (see eclipse-zenoh/zenoh-flat-jni#49). Until that is merged and released, the shipped binary is not code any upstream release carries, and a merged version may differ. The library is deliberately not committed to the repository.
Verified on a Pixel 6, against tls/zenoh.mo.ri.se:443: 35 topics from slipway-usv-alpha rendering as live cards; three leave-and-return cycles each closed and reopened the session cleanly; 9 500 router-timestamped samples in 43 s in a separate probe, where the released 1.10.1 aborts on the first sample.
Before installing.
- arm64-v8a only. Only that ABI carries the patched library, so the APK refuses to install on anything else rather than aborting when Monitor opens. No emulators.
- Debug-signed, so it installs over a debug build. It will not install over a release-signed one without uninstalling first — and an uninstall wipes the phone's TLS credentials and entity id.
Rolling build from main
The current build of main. Replaced on every push, so this download link is always
the newest APK. Not a released version — the Releases list has those.
- version
1.2(10217) - commit
89ca00d983b6bb707c65e2e88eb63b9336f6e730— Cut 1.2: the release installs beside a development build - run 35507347769
Signed with the production key, so it installs straight over a tagged release or an
earlier rolling build and the settings, certificates and recordings all survive. See
docs/install.md
for setting a phone up from scratch.
1.0
First release. Internal use; see docs/deploying.md for getting it onto a
phone and docs/user-guide.md for using it.
What it does
- Publishes a phone's GNSS, IMU, barometer, light, battery and radio readings to a
Keelson/Zenoh bus — 50 subjects, each with its own record and publish rate, per-subject
switches, and QoS transcribed from upstream'sqos.yaml. - Records the same readings to MCAP, zstd-chunked, copied to
Downloads/Loglinewhen a run
ends. The file and the wire are independent: either half can be switched off, and a run that
only records still holds its place on the bus. - Live view — chart with track, heading and course, position and accuracy, the three
navigation values, radio and battery vitals, and per-group health. - Marks — quick buttons for an instant or a held interval, typed notes with a severity, and
run-wide tags that travel inside the recording. - Files — search, sort and filter recordings, with each row's own track drawn from the file,
and a detail view with the full track and figures. - Platform survey — measure a vessel's geometry with the phone, publish it as
configuration_jsonandframe_transform, and serveconfigurable/v1'sget_config. - Runs in the background with a foreground service, survives a reboot if asked, and replays
what a dropped link missed.
Not available in this build
Shared checklists and reading other platforms' geometry are gated off. The Zenoh Android
binding aborts the process on any subscription — a FindClass on one of Zenoh's own threads
cannot see app classes, and a router timestamps every sample it forwards, so every subscribed
sample trips it. Filed upstream as
eclipse-zenoh/zenoh-flat-jni#49;
ZenohBinding.SUBSCRIPTIONS_SAFE is the single boolean that restores both when it lands.
Everything the phone publishes or records is unaffected — publishing, queryables and liveliness
declaration all use different paths.
Known limitations
- Live camera over WHEP is unfinished, blocked by the same binding fault.
- Two runs of one checklist procedure would share a row, were checklists enabled.
- The Files list shows recordings written by the current install; the folder can be granted to
see the rest.