# Just Work Audio Player v0.2.0 — Native Build Report

**Date:** 2026-09-24 (AEST/Sydney)  
**Builder:** Grok Bot (executor)  
**Staged:** `/workspace/hoyhoyai/jwap/releases/v0.2.0/` and `/workspace/jwap-releases/v0.2.0/`

## Packaging method discovered (from v0.1.2 reference)

| Artifact | Method |
|----------|--------|
| Linux AppImage | **Electron 37.4.0** + electron-builder/AppImageKit. Embedded Node HTTP server (`server.cjs`) + `resources/static/` web UI. NOT Python/FastAPI. |
| Windows .exe | **Electron 37.4.0** NSIS installer (`NullsoftInst` overlay). Same app.asar + static layout as Linux. |
| Android .apk | **Capacitor** WebView shell (`com.justwork.audioplayer`), assets under `assets/public/static/`, custom `JwapBridgePlugin`. Frozen in-app UI (same HTML as desktop). |

v0.1.2 natives are **not** the Python FastAPI tree. FastAPI+static v0.2.0 on disk is a separate product shape (version from server). Natives keep the Capacitor/Electron shell and a frozen web UI.

## Approach for v0.2.0

1. Extracted Electron app from `just-work-audio-player-0.1.2-linux-x64.AppImage` (`app.asar` + `resources/static`).
2. Decoded APK with apktool 2.11.1 (kept native `JwapBridgePlugin` smali).
3. Ported v0.2.0 UI deltas into the native web assets (kept Capacitor/Electron bridges):
   - Removed top-left tagline (`Local audio · just works`)
   - Blue-orb brand mark + `v0.2.0` version badge
   - 1% playback-speed control under volume (`SPEED_STEP = 0.01`)
   - Cleaner library folder chips (basename labels)
   - Blue-orb icons from FastAPI v0.2.0 `static/icons/`
4. Bumped `APP_VERSION` to **0.2.0** in `server.cjs`, `package.json`, frozen `index.html`, and APK `versionName`/`versionCode` (4).
5. Rebuilt:
   - **Linux:** surgically updated AppDir + `appimagetool` → AppImage
   - **Windows:** reconstructed Electron project → `electron-builder --win nsis` on Office-PC (Node 24 installed via winget)
   - **Android:** apktool rebuild + uber-apk-signer (**debug keystore** — see notes)

## Produced binaries

| File | Size (bytes) | SHA-256 |
|------|-------------|---------|
| `JustWorkAudioPlayer-0.2.0.exe` | 86699691 | `77291f163cb867ce67b0a4c4a5c4b7ad4c5ae77c2e30584cbcde8350f1a3cc63` |
| `just-work-audio-player-0.2.0-linux-x64.AppImage` | 116712640 | `cc21e23630eaeaa7315b3204da7fa87100de7f7e661a498b3a29ec2bad1f9146` |
| `just-work-audio-player-0.2.0.apk` | 4162226 | `fb05f11f96c22d402643cf5ede200b49c4edbf009db3e44f975a1ea14f7bc6af` |

Checksums also in `SHA256SUMS.txt`. All three differ byte-for-byte from v0.1.2 (not renames). Verified embedded `APP_VERSION = "0.2.0"` / `brand-orb` in AppImage extract, Windows `win-unpacked/resources`, and APK `assets/public/static/index.html`.

## Blockers / caveats

1. **No original Electron/Capacitor source tree** on disk — reconstructed from packaged binaries. Works for this release; ideally check the real repo into git next time.
2. **Android APK is debug-signed** (CN=Android Debug via uber-apk-signer). Sideload/install works; Play Store / update-from-0.1.2 release signature will **not** match. Production release signing key was not available on the box.
3. **Wine not available** on the Linux box — Windows NSIS built on **Office-PC** (`182fb4d8-2e05-459f-bc29-325a21aa2fcc`) instead.
4. **Did not redeploy Netlify** — artifacts staged for Project Manager / site publish.

## Paths

- Workspace stage: `/workspace/hoyhoyai/jwap/releases/v0.2.0/`
- Mirror: `/workspace/jwap-releases/v0.2.0/`
- Build scratch: `/workspace/jwap-native-build/`
- Office-PC build: `C:\Users\Hoy\jwap-build\jwap-electron-0.2.0\`
