Skip to content

chore(mobile): add Android runtime verification - #392

Merged
chhoumann merged 1 commit into
masterfrom
chore/android-verify
Oct 11, 2026
Merged

chhoumann merged 1 commit into
masterfrom
chore/android-verify

Conversation

@chhoumann

@chhoumann chhoumann commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Summary

Add seven npm commands to build, deploy, inspect and verify PodNotes in real Obsidian Android on Linux. The wrapper owns emulator and setup services across shell calls, isolates device vaults by worktree, preserves existing plugin data, and stops while retaining the AVD.

The smoke probe opens the visible mobile player. The download probe requires a new persisted registration, matching file size, no partials, stable app and renderer identities, and a responsive app. Memory reports use native PSS before and after.

Android phone checks passed for the five referenced issues. Phone results leave iOS and tablet reports unverified. Immediate playback after a successful download still reports media error 4 until Local Files reselection, a separate product follow-up. The final wrapper was tested with the cached SDK and APK.

Refs #100, #110, #113, #89, #109.

Verification

npm run lint          PASS
npm run format:check  PASS
npm run typecheck     PASS
npm run build         PASS
npm run test          PASS (1,296 tests across 84 files)
npm run docs:build    PASS (scratch docs venv on PATH)
npm run size          PASS (307,131 raw / 97,161 gzip bytes)

Obsidian Android 1.14.4, Android 14 API34, Pixel6, PodNotes 2.21.1. Two independent stopped-state smoke cycles preserved existing data and stopped cleanly. Two further stopped-state cycles exercised all seven commands, exact defaultData seeding, and real 249,955,445-byte downloads in 128 and 133 seconds. Both files matched an independently fetched host SHA-256. These samples establish neither peak memory nor absence of a leak.

Claude Opus5.5 and GPT6Astra requested no final code changes. Interrupted setup, foreign ownership refusal and whole-service cleanup were also verified. No owned emulator or setup process remains. The shared adb daemon and AVD are retained.

Full report and issue comments. Evidence bundle with commit hashes, JSON results, logs and screenshots.

Verified Android player

Release impact

None. Development tooling only. No plugin source, version, API, URI or migration changes.

Note

Add Linux/Android emulator verification CLI in scripts/omd.sh

Adds a full mobile Android verification workflow: scripts/omd.sh provides setup, verify, eval, download, logs, screenshot, and stop commands. It boots one owned headless emulator via systemd, provisions a worktree-specific device vault with the current plugin build, and runs CDP probes through a pinned obsidian-mobile-debug driver with owned port forwarding on 19333.

  • Adds in-app probes in podnotes-smoke.js (player view visibility) and podnotes-download.js (episode download with 150 MiB minimum, registration metadata, and partial-file rejection)
  • Adds a seeder (omd-seed.mjs), npm script aliases in package.json, usage docs in AGENTS.md, and a verification recipe in mobile.md
  • Ownership is tracked with session records, host boot ID, PID, and process start ticks; commands refuse stale, foreign, or concurrent sessions via a recursive flock
  • Risk: Linux-only; mobile commands target fixed serial emulator-5554 and CDP port 19333, so other emulators or a foreign forward on that port cause failure rather than reuse
📊 Macroscope summarized 58dd302. 3 files reviewed, 1 issue evaluated, 1 issue filtered, 0 comments posted

🗂️ Filtered Issues

scripts/omd.sh — 0 comments posted, 1 evaluated, 1 filtered
  • line 67: eval --timeout 090 passes the digit-only validation at line 460, but omd() evaluates it as Bash arithmetic here and aborts instead of running the evaluation. The GNU Bash Shell Arithmetic manual specifies that leading-zero constants are octal; 9 is not an octal digit. Normalize the validated timeout to base 10 before calculating the budget (also avoids interpreting 0100 as 64 seconds). [ Out of scope (post-validation triage) ]

@chhoumann
chhoumann merged commit 58a4f64 into master Oct 11, 2026
11 checks passed
@chhoumann
chhoumann deleted the chore/android-verify branch October 11, 2026 06:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant