Skip to content

LOAM 0.6.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 13:35
· 30 commits to master since this release
v0.6.0
c4f7980

LOAM 0.6.0: the Play launch release. A Welcome screen with the network rules (LOAM is for adults), reports moderators can act on, setup screens and display mode on the Android host, link and invite codes, a terminal screen and kiosk mode for loamnet, tablets and Android laptops, and every finding of the 9 October 2026 review.

Full details: CHANGELOG.md.

Android host (loam-host.apk, Android 8+, arm64)

  • Setup screens. The first launch asks for a language, the kind of network (Private and short-lived, Community, or choose every setting), its name, and Hotspot or Wi-Fi. Later launches continue the last network in one tap.
  • Display mode shows the join codes full screen, keeps the screen on and pins LOAM in front; leaving it takes a press-and-hold.
  • Link another LOAM node from the share screen with a one-time code; the other phone scans it in setup and the two networks share their public channels both ways. Invite codes on approval-only networks let a scanned phone straight in.
  • Tablets, foldables and Android laptops: portrait and landscape, resizable windows, keyboard and mouse. Wi-Fi mode hosts on a wired network too.
  • A clearer host menu, Emergency reset behind a three-second hold, About LOAM, saving received files, and update news on the opening screen only (the Play build asks the Play Store app; this GitHub build has a tap-only "Check for updates"). Nothing is downloaded automatically.
  • Every native screen, error and the hosting notification follow the chosen language (15 languages; Arabic, Persian, Dari, Pashto and Urdu read right to left).
  • Permissions: Android 13+ asks only for Nearby Wi-Fi devices; location is requested on Android 12 and older only.

Web app

  • Welcome screen and rules. New members see their random name and picture, the rules in one sentence, and "I'm 18 or over, and I agree". Until they agree the node refuses posts, reactions, uploads and typed names; reading, reporting and blocking always work. The full rules are at /rules, offline, in every language.
  • Reports moderators can act on: the reported message shown live with its pictures and files, Escalate to admins, and a live count of open reports on People.
  • Direct Messages lists your conversations, with a searchable picker for new ones. Light or dark theme. 15 reactions in a grid plus any emoji from the keyboard. Search with highlighted matches. Invite: Copy link. The privacy policy is served by the network itself.
  • The installed app's service worker precaches every file, so it opens offline from the first visit; one request answers every page load, so conversation ids never reach the network.

loamnet (npm)

  • A terminal screen: the join QR stays on screen, with Activity, People, Settings and Debug a key away. o opens LOAM in the browser as the network's admin. Kiosk mode (k or --kiosk) shows only the join QR until a password is entered.
  • Admin now comes from the host's own screen, never from being first to join. Free-port fallback when 3000 is taken. The CLI needs Node 22.14+ (the SQLCipher driver is v13, no install script).

Security

  • Encrypted replies are tied to the request that asked for them, and the web app refuses a reply whose encryption was stripped mid-session.
  • The node serves only requests addressed to it (IP, localhost, .local, or the advertised join host), which shuts out DNS rebinding; the WebSocket refuses pages from another origin or another port of the same host.
  • Joining by QR code no longer loses the network's key on the first redirect (every release since transport encryption arrived was affected).
  • Emergency Reset is journaled on every kind of node and finished by the next boot if interrupted; plaintext databases overwrite deleted rows and the reset compacts the file.
  • Sync and mesh hardening against hostile peers: bounded channel introductions, clamped timestamps, refused re-authoring of local users, remembered refusals, hop-budget and send-time jitter on mesh mail, canonical key checks.
  • Encrypted-session caps per device identity and per-address claim, panic and connection limits on IPv6 networks.
  • The data directory is private to the node's user (0700/0600). Private channel ids no longer leak the existence of a same-named channel. The panic route sends no rate-limit headers.
  • Supply chain: vendored, checksum-pinned SQLite packages for the Android build, pnpm audit in CI, a day's minimum release age for dependencies, and build provenance attestations for the APK and the Play bundle. Verify with gh attestation verify loam-host.apk --repo MagicZebraLtd/loam.

Still unverified on hardware (docs/25 §0): SQLCipher key, rekey and wipe on a physical phone; the hotspot permission flow on Android 12 and 13+; the hosting notification and foreground service on a phone; Windows durable writes on a real Windows machine.

Verify the download

shasum -a 256 -c loam-host.apk.sha256
gh attestation verify loam-host.apk --repo MagicZebraLtd/loam

The APK is signed with the same key as 0.5.0, so it installs over it as an update. The CLI is npx loamnet@0.6.0 once published to npm.