Promote nvrsion trunk → dev
Squash-merge nucleic/trunk into dev (234 commits of accumulated nvrsion work). Resolved two auto-generated-file conflicts: - cloud/nucleic-edge/wrangler.jsonc: kept dev's real KV namespace ids and the xyz.blakeslee.nucleic.remote APNS topic, with binding names corrected to RELAY_TOKENS/PUSH_TOKENS to match the worker code on both branches. - Package.resolved: took trunk's newer dependency pins. Nucleic-Promote: 1 Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
efa94c51c8
commit
b50cb60190
+50
-8
@@ -28,8 +28,11 @@
|
||||
# NUCLEIC_SIGN_ID codesign identity (default: "-", ad-hoc). Set to a Developer ID
|
||||
# to sign for distribution (notarization/TestFlight is separate).
|
||||
#
|
||||
# An app icon is picked up automatically if present at Resources/AppIcon.icns
|
||||
# (or per-channel Resources/AppIcon-<channel>.icns).
|
||||
# An app icon is picked up automatically. Two formats, in priority order:
|
||||
# • Resources/AppIcon.icon — Icon Composer package (macOS 26 Liquid Glass). Carries the
|
||||
# themed appearances (default/dark/clear/tinted); actool compiles it to Assets.car.
|
||||
# • Resources/AppIcon.icns — legacy flat icon, no themed variants.
|
||||
# Per-channel overrides (AppIcon-<channel>.{icon,icns}) take precedence over the generic names.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
@@ -134,16 +137,55 @@ else
|
||||
echo " • kernel not bundled — it downloads automatically at runtime (optional: scripts/fetch-kernel.sh)"
|
||||
fi
|
||||
|
||||
# Optional icon.
|
||||
# Optional icon. Prefer a themed Icon Composer package (.icon → Assets.car via actool);
|
||||
# fall back to a flat .icns. Per-channel files win over the generic names.
|
||||
ICON_PLIST=""
|
||||
ICON_SRC=""
|
||||
[ -f "$ROOT/Resources/AppIcon-$CHANNEL.icns" ] && ICON_SRC="$ROOT/Resources/AppIcon-$CHANNEL.icns"
|
||||
[ -z "$ICON_SRC" ] && [ -f "$ROOT/Resources/AppIcon.icns" ] && ICON_SRC="$ROOT/Resources/AppIcon.icns"
|
||||
if [ -n "$ICON_SRC" ]; then
|
||||
cp "$ICON_SRC" "$CONTENTS/Resources/AppIcon.icns"
|
||||
ICON_SET="" # Resources/AppIcon[-<channel>].icon (Icon Composer, themed)
|
||||
[ -d "$ROOT/Resources/AppIcon-$CHANNEL.icon" ] && ICON_SET="$ROOT/Resources/AppIcon-$CHANNEL.icon"
|
||||
[ -z "$ICON_SET" ] && [ -d "$ROOT/Resources/AppIcon.icon" ] && ICON_SET="$ROOT/Resources/AppIcon.icon"
|
||||
ICON_ICNS="" # Resources/AppIcon[-<channel>].icns (legacy flat fallback)
|
||||
[ -f "$ROOT/Resources/AppIcon-$CHANNEL.icns" ] && ICON_ICNS="$ROOT/Resources/AppIcon-$CHANNEL.icns"
|
||||
[ -z "$ICON_ICNS" ] && [ -f "$ROOT/Resources/AppIcon.icns" ] && ICON_ICNS="$ROOT/Resources/AppIcon.icns"
|
||||
|
||||
if [ -n "$ICON_SET" ]; then
|
||||
# actool consumes the .icon directly (no .xcassets wrapper) and emits Assets.car into
|
||||
# Contents/Resources. --app-icon names the icon; CFBundleIconName resolves that name
|
||||
# against the compiled catalog at launch and is what enables the themed appearances.
|
||||
# actool's partial plist is unusable on macOS (it omits CFBundleIconName), so we discard
|
||||
# it and write the key ourselves below. ICON_NAME = the .icon basename (matches per-channel).
|
||||
ICON_NAME="$(basename "$ICON_SET" .icon)"
|
||||
echo " • compiling themed app icon: ${ICON_SET#"$ROOT/"} (CFBundleIconName=$ICON_NAME)"
|
||||
ACTOOL_PLIST="$(mktemp -t actool-partial-plist)"
|
||||
xcrun actool "$ICON_SET" \
|
||||
--compile "$CONTENTS/Resources" \
|
||||
--app-icon "$ICON_NAME" \
|
||||
--include-all-app-icons \
|
||||
--output-partial-info-plist "$ACTOOL_PLIST" \
|
||||
--enable-on-demand-resources NO \
|
||||
--development-region en \
|
||||
--target-device mac \
|
||||
--platform macosx \
|
||||
--minimum-deployment-target 26.0 \
|
||||
--output-format human-readable-text --notices --warnings --errors
|
||||
rm -f "$ACTOOL_PLIST"
|
||||
ICON_PLIST="
|
||||
<key>CFBundleIconName</key>
|
||||
<string>$ICON_NAME</string>"
|
||||
# Ship a flat .icns alongside if one exists — harmless belt-and-suspenders for contexts
|
||||
# that look for an icon file rather than the asset catalog.
|
||||
if [ -n "$ICON_ICNS" ]; then
|
||||
cp "$ICON_ICNS" "$CONTENTS/Resources/AppIcon.icns"
|
||||
ICON_PLIST="$ICON_PLIST
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>AppIcon</string>"
|
||||
fi
|
||||
elif [ -n "$ICON_ICNS" ]; then
|
||||
cp "$ICON_ICNS" "$CONTENTS/Resources/AppIcon.icns"
|
||||
ICON_PLIST="
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>AppIcon</string>"
|
||||
else
|
||||
echo " • no app icon found (Resources/AppIcon.icon or AppIcon.icns) — using system default"
|
||||
fi
|
||||
|
||||
# Sparkle auto-update keys. Embedded only for the distribution channels (beta/rc/stable) and
|
||||
|
||||
Reference in New Issue
Block a user