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>
This commit is contained in:
2026-09-19 19:28:43 -04:00
parent d8ea9cf516
commit 7aac011df3
15 changed files with 111 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
{
"images": [
{
"idiom": "universal",
"platform": "ios",
"size": "1024x1024",
"filename": "ios-1024.png"
},
{
"idiom": "mac",
"scale": "1x",
"size": "16x16",
"filename": "mac-16-1x.png"
},
{
"idiom": "mac",
"scale": "2x",
"size": "16x16",
"filename": "mac-16-2x.png"
},
{
"idiom": "mac",
"scale": "1x",
"size": "32x32",
"filename": "mac-32-1x.png"
},
{
"idiom": "mac",
"scale": "2x",
"size": "32x32",
"filename": "mac-32-2x.png"
},
{
"idiom": "mac",
"scale": "1x",
"size": "128x128",
"filename": "mac-128-1x.png"
},
{
"idiom": "mac",
"scale": "2x",
"size": "128x128",
"filename": "mac-128-2x.png"
},
{
"idiom": "mac",
"scale": "1x",
"size": "256x256",
"filename": "mac-256-1x.png"
},
{
"idiom": "mac",
"scale": "2x",
"size": "256x256",
"filename": "mac-256-2x.png"
},
{
"idiom": "mac",
"scale": "1x",
"size": "512x512",
"filename": "mac-512-1x.png"
},
{
"idiom": "mac",
"scale": "2x",
"size": "512x512",
"filename": "mac-512-2x.png"
}
],
"info": {
"author": "xcode",
"version": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

View File

@@ -0,0 +1 @@
{ "info": { "author": "xcode", "version": 1 } }

View File

@@ -23,6 +23,7 @@ targets:
supportsMacCatalyst: true supportsMacCatalyst: true
sources: sources:
- Sources - Sources
- Resources/Assets.xcassets
info: info:
path: Resources/Info.plist path: Resources/Info.plist
properties: properties:
@@ -58,6 +59,7 @@ targets:
# Set as build settings rather than xcodegen's supportsMacCatalyst:, which this version # Set as build settings rather than xcodegen's supportsMacCatalyst:, which this version
# accepts and then writes nothing for -- the generated project had no SUPPORTS_MACCATALYST # accepts and then writes nothing for -- the generated project had no SUPPORTS_MACCATALYST
# at all and the Mac destination simply did not exist. # at all and the Mac destination simply did not exist.
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
SUPPORTS_MACCATALYST: "YES" SUPPORTS_MACCATALYST: "YES"
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER: "NO" DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER: "NO"

34
tools/install-mac.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/sh
# Builds the Mac (Catalyst) app and replaces the copy in /Applications.
#
# Xcode 27 keeps its tools out of the default PATH unless xcode-select points at it, which on
# this machine it does not, so DEVELOPER_DIR is set here rather than relied upon.
set -eu
DEVELOPER_DIR=${DEVELOPER_DIR:-/Applications/Xcode.app/Contents/Developer}
export DEVELOPER_DIR
cd "$(dirname "$0")/../ios"
command -v xcodegen > /dev/null || { echo "xcodegen missing: brew install xcodegen" >&2; exit 1; }
xcodegen generate > /dev/null
DERIVED=${DERIVED:-/tmp/ipx-mac}
xcodebuild -project iPodderX.xcodeproj -scheme iPodderX \
-destination 'platform=macOS,variant=Mac Catalyst' \
-derivedDataPath "$DERIVED" -configuration Release \
CODE_SIGNING_ALLOWED=NO build > /dev/null
APP="$DERIVED/Build/Products/Release-maccatalyst/iPodderX.app"
[ -d "$APP" ] || { echo "no app at $APP" >&2; exit 1; }
# Quit the running copy first, or the replacement is the one still in memory.
osascript -e 'tell application "iPodderX" to quit' 2>/dev/null || true
sleep 2
rm -rf /Applications/iPodderX.app
cp -R "$APP" /Applications/iPodderX.app
# Ad-hoc, because the build is unsigned. Build in Xcode with your own team for one you keep.
codesign --force --sign - /Applications/iPodderX.app
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister \
-f /Applications/iPodderX.app 2>/dev/null || true
echo "installed /Applications/iPodderX.app"