Changelog
What’s new in Homepage Panda
Latest: 0.8.0, 24 September 2026
Every release, newest first. Updates are free and the app checks for them on launch.
0.8.0 24 September 2026
Added
- iOS 27 support: the new full-page "extra large portrait" widget (4×6) is recognised, sized and counted correctly. Previously it was treated as a single cell, so a page holding one could be overfilled in the editor and iOS would relocate items on apply.
- The editor now reads the home screen grid (columns, rows, dock slots, folder grid) from the connected iPhone instead of assuming 4×6. Groundwork for iPhone Duo and future devices; the 4×6 default applies when a phone doesn't report it.
- Onboarding hint for the iOS 26+ "Wired Accessories" setting, which can hide the phone from the app when set to Ask.
- App Library warning: after loading, the app lists installed apps that aren't on any Home Screen page, because iOS adds all of them back to the Home Screen when a layout is applied (verified on iOS 27). Offloaded apps are placeholders the phone doesn't list, so they can't be named, but the warning says they come back too. Apple apps hidden by Screen Time may be listed although iOS keeps them hidden.
Documented
- Apple's layout API exposes item order only. Verified on iOS 27 that a widget dragged to a custom spot produces the same record as one in its in-order position, that no other format version helps, and that applying moves it back. FAQ, llms.txt and the in-app banner now say so precisely.
- Hidden Home Screen pages are read as ordinary pages and become visible again after an apply (verified on iOS 27). Documented in the same places.
Changed
- Layout items the app doesn't recognise are now passed through untouched on apply instead of being dropped. A newer iOS item type can no longer be silently deleted from the phone.
- Unknown widget sizes are counted as a full page (safe overestimate) rather than one cell.
- Updated the device library (idevice 0.1.60 → 0.1.68), which among other things tolerates pairing records without an escrow bag.
- Website and llms.txt now state iOS 14 through 27.
Fixed
- In-app update (25 September): the 0.8.0 update package was built with hidden macOS metadata entries that the updater couldn't unpack, so clicking "Update & Restart" in 0.7.0 showed "Update failed. Try again later." The package was rebuilt and re-signed, and the release process now checks for this. If you hit the error, click "Update & Restart" again; no reinstall is needed. Thanks to the customer who reported it.
- The update banner now shows the actual error instead of a generic message (in the next release).
0.7.0 17 May 2026
Added
- "Load from iPhone" / "Apply to iPhone" button terminology (replaces Read/Push)
- Tauri auto-updater infrastructure with signed update artifacts
- LemonSqueezy checkout overlay on website (replaces redirect links)
- Hero demo video on landing page (side-by-side Mac + iPhone)
- "Download Free" CTA for try-before-you-buy flow
- llms.txt for AI discoverability
- TikTok social link in website footer
- Remotion video project for marketing assets (demo videos, carousel slides, platform banners)
Changed
- Complete website visual redesign: warm dark theme, scroll-reveal animations, gradient dividers, micro-interactions
- All "Push" / "Read" terminology changed to "Apply" / "Load" throughout app and website
- New product screenshots across all website sections
- Personal plan highlighted as recommended (was Family)
- FAQ updated with device limit details
Removed
- Legacy Python backend (`src/homescreen/`) and Python tests — fully replaced by Rust
- Old website screenshots archived to `site/images/archive/`
0.6.0 15 May 2026
Added
- In-app Privacy modal with plain-language summary and collapsible technical details
- "Privacy" button in editor footer
- App version number displayed on the license gate
- Screenshot prompt in feedback email template
- Push limitations banner now shows on first editor load (not just on push click)
Changed
- Footer buttons restyled with visible borders for better discoverability
- "Feedback" renamed to "Support & Feedback"
- "Buy a license to push" changed from green link to orange button for better visibility
- Folder empty placeholder slots upgraded from dashed boxes to solid app-shaped outlines
- Removed redundant subtitle from onboarding screen
Fixed
- Privacy policy updated to disclose auto-update version check on launch
0.5.0 14 May 2026
Added
- Pre-push layout sanitization: strips null entries, unknown fields, and validates item types before sending to device
- Free mode UX: "Free mode" banner on onboarding, crossed-out push button with "Buy a license to push" hint, two-column paywall with value proposition bullets
- Visible scrollbar styling across all screens so users know there's more content
- Folder name paste handler strips HTML and caps at 50 characters
- 4 new sanitization tests
Changed
- "Try free first" button restyled as a proper secondary button (outlined green, same size as Activate)
- Onboarding notes split into "Requirements" and "Good to know" sections
- Onboarding footer links reordered (Manage License above feedback) and wrapped in a visible box
- License and search inputs now have maxlength limits (50 and 200 respectively)
- Editor content area and onboarding card are scrollable on small screens
Security
- `sanitizeLayoutForPush()` removes unknown fields and null/undefined entries before pushing to device, preventing malformed data from reaching SpringBoardServices
0.4.0 14 May 2026
Added
- External links now open in system browser/email client via `/api/open-url` endpoint (fixes footer links, buy link, feedback email in Tauri WKWebView)
- "Manage License" link on onboarding screen — activate or deactivate without a phone connected
- Activation count display in license modal ("1 of 2" from LemonSqueezy API)
- Backup restore warning: info banner when pushing a layout loaded from a backup
- `layoutSource` tracking ('device' or 'backup') for contextual push warnings
Changed
- "Clear backups" now refreshes the list from the server (original backup visibly survives instead of disappearing from UI)
- Clear button text updated to "Clear backups (keeps originals)"
- License modal display logic extracted into reusable `showLicenseDetailsModal()` function
Security
- `/api/open-url` endpoint validates URL scheme (only http, https, mailto) to prevent `file://` abuse
0.3.0 14 May 2026
Added
- **Trial mode**: Unlicensed users can connect their phone, read layouts, and rearrange freely. Push is gated behind a paywall modal with license activation and email capture.
- **Pre-push limitations disclosure**: First-time push shows a confirmation modal explaining that gaps collapse and web clips get placeholder icons. One-time acknowledgment stored in localStorage.
- Folder page overflow enforcement: 9 apps per folder page (3x3 grid), up to 15 pages per folder, matching iOS behavior
- "Add Page" button in folder modal for creating new folder sub-pages
- iOS-style page indicator dots in folder modal
- Feedback link accessible from the license/paywall screen
- Reusable `openFeedbackEmail()` function
Changed
- Single-app folders now persist (matches iOS behavior; previously auto-unwrapped at 1 app)
- Folder modal grid changed from 4 columns to 3 columns (matching iOS 3x3 layout)
- License gate repurposed as dual-context screen (startup + paywall) with "Try free first" skip button
- Deactivating a license drops to trial mode instead of booting to a locked gate
- Background license invalidation drops to trial mode instead of locking the app
Fixed
- `moveItemIntoFolder()` now places apps on the first page with room instead of always page 0
- Folder drag-and-drop within modal now enforces page overflow cascade
0.2.0 14 May 2026
Security
- API endpoints now require a per-session auth token; only the app's webview can access the localhost server
- Removed permissive CORS policy
- Removed unused tower-http dependency
Added
- "Original layout" golden backup: first-ever layout read from each device is automatically preserved and protected from deletion
- Info banner for post-push read-back failures (non-blocking)
- Pre-push device connectivity check before sending layout to phone
- Two new security tests (unauthenticated request rejection, frontend served without auth)
- Two new backup tests (original label, clear preserves original)
Changed
- "Clear backups" now preserves original layout backups
0.1.0 11 May 2026
Added
- Read and edit iPhone home screen layouts via USB
- Drag-and-drop app rearrangement with undo/redo
- Widget nudge controls (small, medium, large, extra-large)
- Folder management (create by dragging app onto app, rename, reorder)
- Automatic backups on every layout read and before every push
- Backup restore from any previous snapshot
- Mass edit operations (sort alphabetically, remove empty pages, delete all folders)
- App search with Cmd+F
- License activation via LemonSqueezy (2-device limit, 30-day offline grace)
- Auto-update via Tauri updater with signed artifacts
- Onboarding flow with device detection
- Universal binary (Intel + Apple Silicon)