تخطَّ إلى المحتوى

Changelog

هذا المحتوى غير متوفر بلغتك بعد.

Release notes for the App Preview macOS desktop app. Each version is published to GitHub Releases as a signed, notarized .dmg, and installed apps auto-update themselves.

👉 Download the latest .dmg

Install builds by drag-and-drop, capture screenshots, and a persistent config.

  • Drag-to-install builds — drop an .apk / .ipa anywhere on the device frame to install it on the connected Android device/emulator or iOS device. The drop overlay stays available even while the live screen mirror is running, and Android installs auto-open the app afterwards.
  • Screenshot capture — grab the current device screen and dock the screenshot card beside the frame, with a configurable save folder.
  • Config / Paths dialog — point the app at specific tool binaries (adb, aapt, scrcpy, emulator, iproxy, go-ios, the WebDriverAgent project) and the screenshot directory, for machines where they aren’t on PATH. Blank means auto-detect.
  • Persistent app config — Runners, settings (the release checklist) and the tool-path overrides now persist to a single ~/.apppreview file instead of browser localStorage, so they survive reloads and are shared across browsers and the desktop app.

Remote iOS device control + Runners.

  • Remote iOS control over SSH — drive a physical iPhone/iPad attached to another machine straight from the Playground: tap, swipe and mirror over an SSH connection to a “runner” host. A Runners / Settings dialog adds hosts, picks password or SSH-key auth, and tests the connection before use.
  • Runner sharing — export/import the runner list as JSON, plus an “Initial Runner” action that shares the current machine’s SSH config so another operator can import it in one step.
  • iOS 26: remote tap uses W3C pointer actions (the legacy endpoint returns 500 there).
  • Android emulator launch resolves the modern emulator binary on Windows; the server no longer crashes at startup on a non-UTF-8 Windows console.

Windows support + multi-arch builds.

  • Windows desktop app — signed NSIS .exe installer builds alongside macOS, with fixes for the Windows blank-window/launch issue and a non-UTF-8 console crash.
  • macOS Intel + Apple Silicon — separate Intel (x64) and Apple-Silicon (aarch64) .dmg builds, combined into one auto-update manifest so every Mac gets the right slice.
  • Per-platform download buttons on the landing page (Mac arm / Mac Intel / Windows).

Preview panel + real-device mirroring. The Playground gains a slide-in preview panel (right-side icon rail) for previewing your work and driving real phones without leaving the tool.

  • Web / Media / Markdown previews — load any URL or local path (/docs/) in an inline frame, open an image / video / audio file, or render a .md file — all in a slide-in panel.
  • Android mirror + remote control — live device mirror over adb: click to tap, drag to swipe, keyboard text, and hardware buttons. A scrcpy ↗ button opens a native high-FPS window.
  • iPhone mirror + remote control — real-device mirror via WebDriverAgent over a USB tunnel (iproxy): live MJPEG stream with tap / swipe / button / text. Clear guidance when WDA isn’t running on the device.
  • Touch feedback — a red ripple blooms at each tap; swipes draw a fading trail — shared across Android and iPhone.
  • All device backends are localhost-only (127.0.0.1) and resolve adb / scrcpy / iproxy even from a GUI-launched app with a minimal PATH.

See the device preview & control reference for the full protocol and architecture.

  • Android control needs adb (Android platform-tools); iPhone control needs WebDriverAgent running on the device. Builds remain Apple Silicon (aarch64).

Signed & notarized builds, auto-update, and one-command deploy. This is the first release you can download and open like any normal Mac app — no scary warnings, no terminal workarounds.

Signed with Developer ID + notarized by Apple

Section titled “Signed with Developer ID + notarized by Apple”

The .app and .dmg are now code-signed with a Developer ID Application certificate and notarized by Apple (with the notarization ticket stapled). Double- click the .dmg, drag to Applications, open — no “AppPreview is damaged” warning and no xattr -dr com.apple.quarantine workaround. Verified with:

spctl -a -vvv -t exec AppPreview.app → accepted, source=Notarized Developer ID

The app keeps itself up to date via the Tauri updater:

  • File ▸ Check for Updates… — plus a silent check on launch — compares against the latest GitHub release.
  • When a newer version exists it downloads, verifies, installs, and relaunches — no manual reinstall.
  • Updates are cryptographically signed (separate from Apple signing), so the app only installs builds published by us.

Shipping a build is now a single command. deploy.sh:

  1. ensures the private signing assets are present (clones them if missing),
  2. imports the Developer ID certificate into the keychain,
  3. builds, signs, notarizes, and publishes the .dmg + updater manifest to a GitHub Release.

The GitHub Actions pipeline (release-dmg.yml / auto-release-dmg.yml) now builds signed + notarized .dmgs on Apple’s runners. Bump the version on main and the release — .dmg, updater bundle, and latest.json — is cut automatically.

  • Developer ID code-signing + Apple notarization of the .app and .dmg.
  • Auto-update manifest (latest.json) published with every release.
  • deploy.sh — ensure signing assets → build → sign → notarize → publish.
  • setup-signing.py — auto-create the Developer ID certificate from an App Store Connect API key.
  • finish-signing.py — finish signing from a manually issued certificate.
  • Release notes now state signed & notarized when a Developer ID identity is set.
  • appdist.sh uploads the updater artifacts (latest.json, .app.tar.gz, .sig) alongside the .dmg, so auto-update stays valid on locally cut releases.
  • Builds are Apple Silicon (aarch64). Intel / universal builds aren’t produced yet.

See the desktop app guide for build and signing details.

First release — meet App Preview. A local tool to preview, check, and polish your App Store and Google Play listings before you ship — see your new version exactly as users will, side by side with what’s live today.

  • Load live listings from the stores — pull screenshots + metadata straight from App Store Connect and Google Play with your own API keys, into the Current variant (⟳ Sync). No copy-pasting from the store consoles.
  • Preview your new version — see exactly how your New listing looks on the App Store and Google Play before uploading: title, subtitle, description, and screenshots — per locale.
  • Review Diff (Current → New) — a side-by-side diff of every change: text/metadata field-by-field, and screenshots slot-by-slot with a fullscreen lightbox. Know exactly what changed before you submit.
  • First-release checklist — a built-in gate covering everything a brand-new store submission needs: screenshots for each required device size, metadata for every locale, icon / feature graphic, and store-policy items.
  • Store SEO audit (ASO) — flags title / subtitle / keyword lengths against each store’s limits, highlights empty or over-long fields, and surfaces discoverability tips — per locale, for both stores.
  • Test keys — verify your App Store Connect and Google Play credentials in one click (builds a JWT and looks up the app; opens & deletes a throwaway Play edit) — without saving anything.
  • Import / Export — move configs as JSON, or as a self-contained .env that embeds the .p8 and service-account JSON as single-line base64.
  • Multi-language — the tool and these docs ship in English, Tiếng Việt, 한국어, العربية, and 日本語.
  • Runs locally — everything stays on your machine; your API keys never leave it.
  • Ships as a native macOS desktop app: a Tauri shell wrapping the tool with a bundled Python sidecar (PyInstaller), opening straight into the Playground.
  • Auto-update wired to the GitHub release manifest.
  • ⚠️ This build was unsigned — it needed a Gatekeeper workaround to open. Fixed in 0.2.0.