Android · Kotlin · Jetpack Compose

Dorado-HD

The Zune HD handheld, reborn for modern Android phones: white-on-black typography-first Metro design, a text menu cropped at the screen edge, crossbar navigation, and the tri-state heart rating.

Android 9+ Kotlin Compose Media3 / ExoPlayer Room + DataStore

The device-side sibling

Just as the Zune HD was the device and Zune 4.8 was the desktop, Dorado-HD is the phone and Dorado is the desktop. The current port faithfully reproduces the device across home + quickplay + 5 media pivots + 29 installed mini-apps — design-language-correct, tokenized, and audited by Robolectric unit tests and a source-level design-invariant scanner.

Shell — home & quickplay

  • Home menu with the full canonical 9 entries — music, videos, pictures, radio, marketplace, social, podcasts, internet, settings — lowercase, oversized, right-edge cropped, kinetically scrollable.
  • Quickplay slides out as a 3D-parallax “left and rear” panel: Now Playing card, Smart DJ lane (hearts-first, broken-skipped), Pins, History and New.
  • Lock shade with a wallpaper-backed translucently-tinted background that fades up under the time and date.
  • Device mode letterboxes the whole UI in the canonical 480×272 canvas.

Crossbar navigation

Every collection screen uses a horizontal CrossbarBar pivot strip with right-edge-cropped labels and the spec’d 380 ms deceleration.

  • Music — albums · artists · playlists · songs · genres (the real device order).
  • Artist — albums · songs · bio · photos · related (bio via Wikipedia REST, photos via MusicBrainz).
  • Marketplace — music · videos · podcasts · apps, with the full frozen official catalog (62 entries).
  • Videos, Pictures, Podcasts and Radio each carry their canonical pivots.

Music & Now Playing

  • Alphabet rail with a full A–Z popup, separated at the right edge.
  • Now Playing with an explicit back arrow, tappable title → album track list, tappable artist → artist page, swipe ← → to skip.
  • Transport overlay — play/pause centre, prev/next sides, vertical-swipe volume.
  • Smart DJ shuffle — hearts prioritized, broken hearts skipped.
  • Screensaver — tokenized 5 s idle with a slow Ken Burns artist photo; tap-to-show-overlay.
  • Tri-state heart rating (heart / broken heart / none).

Mini-app platform — 29 apps

Behavioral re-implementations across three categories:

  • Utilities (12) — calculator, notes, stopwatch, metronome, alarm clock, calendar, level, piano, drum machine, chord finder, music quiz, shuffle by album. PCM-synth instruments; accelerometer level; Room-backed notes / calendar / alarms.
  • Games (9) — solitaire, sudoku, hexic, reversi, hearts, spades, checkers, chess, texas hold ’em. Pure-Kotlin engines with dealer, hand-rank, check/stalemate and AI logic under test; chess is alpha-beta depth 3.
  • Mock shells (8) — weather, twitter, facebook, email, messenger, msn money, zune reader, zunesocial — era-faithful canned layouts for the dead marketplace services.

Reverse-engineering deliverable

docs/zcp-inventory.md lists all 62 official Zune HD marketplace packages with title, GUID and description, regenerable from the community ZuneRedux archive. Encrypted payloads are never bundled — metadata only.

Build & test

./gradlew assembleDebug test lint
36 Robolectric unit tests plus a design-invariant source scanner that forbids rounded corners, springs, raw hex colours and named colour constants in the UI. Green on JDK 21 / AGP 9.4.

Licensing posture

MIT for code. Selawik (SIL OFL 1.1) stands in for Segoe-metric Zegoe; MedTune attribution lives in NOTICE.md. MusicIn2001 is Research-Only and used strictly as a behavioral specification — no code copied. No Microsoft fonts or firmware are bundled.

Put the Zune HD in your pocket.

Text-first navigation, zero rounded corners, hearts not stars — the canon is law.