Player development
Before changing Player behavior, choose its implementation owner. The native Player extraction contract keeps shared behavior separate from Linux integration and presentation execution. It does not change the current Edge process or security boundaries.
Work on the Android Player
Section titled “Work on the Android Player”The Android Player is a native Kotlin and Jetpack Compose app in apps/player-android. The Android Player development guide covers Android build and device workflows, including the Rust toolchain, cargo-ndk, and the pinned Android NDK.
Work on Tilecast Edge
Section titled “Work on Tilecast Edge”Tilecast Edge lives in apps/edge. Its software milestones M1 to M10 and the M11 remote-web implementation are merged; physical WPE and hardware qualification is next, and no signed release is published yet. Read apps/edge/README.md and apps/edge/AGENTS.md first. From the repository root:
make edge-checkmake edge-testThe Rust workspace, lockfile, toolchain pin, and formatter settings live at the
repository root. These commands select Edge packages explicitly; Cargo’s
--workspace also includes future native products. The Edge release version
comes from apps/edge/release/VERSION, separately from Rust library versions.
The release SBOM uses packages from the actual shipped-binary build, so another
native product’s dependencies won’t appear merely because they share a lockfile.
The renderer and the session bridge are C projects built with CMake on Linux. The session bridge needs GLib, json-glib, GStreamer, and WirePlumber 0.5 development packages. Hardware tests never touch a real TV or monitor: test daemons use empty device directories, the HDMI-CEC test in CI uses the kernel’s vivid virtual driver, and the session bridge test uses a real PipeWire with a virtual microphone. The hardware capability matrix says what each feature needs and how it is tested.