Commit Graph

3 Commits

Author SHA1 Message Date
5c7a53384a Draw at Mac size, and build only for Apple Silicon
A Catalyst app draws its iPad interface at 77% unless it says otherwise,
so everything on the Mac was smaller than it should have been.
UIDesignRequiresCompatibility: false asks for the Mac idiom and true size.

ARCHS is pinned to arm64 for macOS: the default is a universal binary, and
the x86_64 half is weight nothing here will run. It was never running under
Rosetta -- the arm64 slice was always the one in use.

There is no zoom command. A pair was tried and taken out again: pageZoom
only works on a document that scrolls, and ipx's page is a fixed viewport
-- body is height:100dvh with overflow hidden -- which WebKit resolves
against the unzoomed window, so the page laid itself out at the wrong size
and was then scaled, spilling off the right edge with its toolbar clipped.
Text size belongs to the page, which owns its own layout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 19:36:49 -04:00
7aac011df3 The app has iPodderX's own icon, and a way onto the Mac
The 2004 icon, from ipodderx-rs's apple-touch-icon.png, which at 180px is
the largest square copy that survives anywhere -- so the sizes above it are
upscaled and soft, and a real 1024px original would be worth having if one
turns up.

Every entry in the icon set gets its own file even where two are the same
pixels, because the asset compiler collapses entries that share a filename
and the first attempt produced an icns with four of the ten sizes.

tools/install-mac.sh builds Release for Catalyst and replaces the copy in
/Applications. It quits the running app first, or the replacement is the
one still in memory, and it sets DEVELOPER_DIR rather than relying on
xcode-select, which on this machine still points at the command line tools.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 19:28:43 -04:00
74a4ca6016 iPodderX for iPhone, iPad and Mac
A shell around the ipodderx-rs web UI whose audio is played by the host
rather than the page, so it carries on with the screen locked and a car can
control it. The page's half of the bridge is web/src/native.ts in
ipodderx-rs (#45): it replaces the playback surface of the page's media
element with one that posts here, so player.ts is unchanged and the player
bar, the row buttons and the keyboard shortcuts work as they always did.

Playback, Library, Bridge and CookieBridge never touch a view, which is
what makes a CarPlay scene a later addition rather than a rewrite, and what
lets the same target build for Mac Catalyst with no conditional code:
AVAudioSession, MPNowPlayingInfoCenter and the remote commands all exist
there. The Mac gets media keys and Now Playing; it has no CarPlay and no
lock screen, so it is a convenience rather than the reason for any of this.

Authentication is the web view's. ipx decides who is asking by cookie --
ipx_session, and CF_Authorization from Cloudflare Access in front of the
tunnel -- and its auth layer was written so a plain <audio src> would work,
which is why the player needs no API of its own. CookieBridge keeps
HTTPCookieStorage in step with the web view's store and hands them to each
asset.

Named ipodderx-app, not -ios: native.ts already carries the branch for an
Android host, and the iOS project is one directory rather than the repo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 19:21:06 -04:00