About this project

## Geiravor Android app for [r/a/dio](https://r-a-d.io), an internet radio streaming service. User-facing name: **r/a/dio**. Package: `io.r_a_d.geiravor`. License: MIT (`LICENSE.md`). Copyright © 2026 Sakurai Momoka. **1.0.0** is a from-scratch rewrite of 0.3.0. The last 0.3.0 source is `legacy/0.3` (tag `v0.3.0`). ### Install GitHub Releases ship four sideload APKs: Debug and Release × `arm64-v8a` (phones) and `x86_64` (Waydroid / most emulators). Release is R8-minified and signed with the project sideload key (not Play). Debug is debug-signed. Same package (`io.r_a_d.geiravor`); installing one replaces the other. Latest: [v1.0.1](https://github.com/sakuumomo/geiravor/releases/tag/v1.0.1). ### Build Nix is the supported toolchain: ``` nix develop # full shell (JDK, Android SDK/NDK, DHU on Linux) nix develop .#rust # host Rust only (fmt, clippy, tests, rustdoc) cargo test --manifest-path core/Cargo.toml ./gradlew :app:testDebugUnitTest :app:assembleDebug ./scripts/dhu.sh # DHU; waits for Head Unit Server; --stop to end ``` Needs a flake-capable Nix. `aarch64-linux` is not a flake target. After clone: ``` git config core.hooksPath .githooks ``` ### Docs | File | Job | |---|---| | [`docs/spec/`](docs/spec/) | Product contract (what a listener gets) | | [`docs/`](docs/README.md) | Repo contract vs product split | | [`AGENTS.md`](AGENTS.md) | How to work in this tree | | [`CONTRIBUTING.md`](CONTRIBUTING.md) | Pointer to AGENTS and docs | | [`SECURITY.md`](SECURITY.md) | Vulnerability reports | | [`CHANGELOG.md`](CHANGELOG.md) | Version history of **this** tree | Generated crate docs (GitHub Pages, not the wiki): [rustdoc](https://sakuumomo.github.io/geiravor/geiravor_core/) or `nix develop .#rust -c cargo doc --no-deps --open` (not a second spec). The Pages site exists after `main` has the `pages` workflow.