Changelog
Nội dung này hiện chưa có sẵn bằng ngôn ngữ của bạn.
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.
0.4.7 — 2026-06-27
Section titled “0.4.7 — 2026-06-27”Install builds by drag-and-drop, capture screenshots, and a persistent config.
✨ Highlights
Section titled “✨ Highlights”- Drag-to-install builds — drop an
.apk/.ipaanywhere 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 onPATH. Blank means auto-detect. - Persistent app config — Runners, settings (the release checklist) and the
tool-path overrides now persist to a single
~/.apppreviewfile instead of browser localStorage, so they survive reloads and are shared across browsers and the desktop app.
0.4.6 — 2026-06-26
Section titled “0.4.6 — 2026-06-26”Remote iOS device control + Runners.
✨ Highlights
Section titled “✨ Highlights”- 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.
0.4.1 – 0.4.5 — 2026-06-25 → 26
Section titled “0.4.1 – 0.4.5 — 2026-06-25 → 26”Windows support + multi-arch builds.
✨ Highlights
Section titled “✨ Highlights”- Windows desktop app — signed NSIS
.exeinstaller 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).dmgbuilds, 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).
0.3.0 — 2026-06-25
Section titled “0.3.0 — 2026-06-25”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.
✨ Highlights
Section titled “✨ Highlights”- Web / Media / Markdown previews — load any URL or local path (
/docs/) in an inline frame, open an image / video / audio file, or render a.mdfile — 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. Ascrcpy ↗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 resolveadb/scrcpy/iproxyeven from a GUI-launched app with a minimalPATH.
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).
0.2.0 — 2026-06-25
Section titled “0.2.0 — 2026-06-25”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.
✨ Highlights
Section titled “✨ Highlights”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 IDAuto-update built in
Section titled “Auto-update built in”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.
One-command release (deploy.sh)
Section titled “One-command release (deploy.sh)”Shipping a build is now a single command. deploy.sh:
- ensures the private signing assets are present (clones them if missing),
- imports the Developer ID certificate into the keychain,
- builds, signs, notarizes, and publishes the
.dmg+ updater manifest to a GitHub Release.
Signed builds in CI
Section titled “Signed builds in CI”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
.appand.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.
Changed
Section titled “Changed”- Release notes now state signed & notarized when a Developer ID identity is set.
appdist.shuploads 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.
0.1.0 — 2026-06-24
Section titled “0.1.0 — 2026-06-24”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.
🚀 Main features
Section titled “🚀 Main features”- 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
.envthat embeds the.p8and 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.
🖥️ Packaging
Section titled “🖥️ Packaging”- 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.