chore: v1.0.4
This commit is contained in:
@@ -280,7 +280,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 8;
|
||||
CURRENT_PROJECT_VERSION = 9;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"meetingnotes/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = ML6HYR5LUR;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
@@ -294,7 +294,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.0.4;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = owen.meetingnotes;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -315,7 +315,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 8;
|
||||
CURRENT_PROJECT_VERSION = 9;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"meetingnotes/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = ML6HYR5LUR;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
@@ -329,7 +329,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.0.4;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = owen.meetingnotes;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
+18
-21
@@ -2,16 +2,29 @@
|
||||
<rss xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" version="2.0">
|
||||
<channel>
|
||||
<title>Meetingnotes</title>
|
||||
<item>
|
||||
<title>1.0.4</title>
|
||||
<pubDate>Wed, 16 Jul 2025 09:02:52 -0400</pubDate>
|
||||
<sparkle:version>9</sparkle:version>
|
||||
<sparkle:shortVersionString>1.0.4</sparkle:shortVersionString>
|
||||
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.4/Meetingnotes-1.0.4.zip" length="9518446" type="application/octet-stream" sparkle:edSignature="aWBAf2cnvhAf1WBEa9oUHzL+N5RBph8Xbsh/XXBhR7wo9Vkeh51CqBh+3pjWJqxaDGxb3aimgydjIKrCVVpyAw==" />
|
||||
<sparkle:deltas>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.4/Meetingnotes9-8.delta" sparkle:deltaFrom="8" length="2038454" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="AUNQbGbKk3a7Phzxfm1yEQQ6KuaqvX0NASF7u657DtdkcTbxvBqPBon/JKaZIEVtlnq+qDyjfcUpTY1S1Cj0Cw==" />
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.4/Meetingnotes9-7.delta" sparkle:deltaFrom="7" length="2027690" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="+libxIpQFVA0lsctoJzmH8dNGCcHZLE8agqRKMzbCN1+fRA8Zq0hrvIAxvrpyCim1StmOtvh/zWKz+483SyJBw==" />
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.4/Meetingnotes9-6.delta" sparkle:deltaFrom="6" length="2022146" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="LLFyZQK3TLSNvD8RCpQKNmKfefg8mp9Z7J1uw09zaYhahjSa+hV1jbzkSMIEG6P6ncBScBfmOrhhuimAG6OWBw==" />
|
||||
</sparkle:deltas>
|
||||
</item>
|
||||
<item>
|
||||
<title>1.0.3</title>
|
||||
<pubDate>Tue, 15 Jul 2025 13:35:21 -0400</pubDate>
|
||||
<sparkle:version>8</sparkle:version>
|
||||
<sparkle:shortVersionString>1.0.3</sparkle:shortVersionString>
|
||||
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.3/Meetingnotes-1.0.3.zip" length="9475086" type="application/octet-stream" sparkle:edSignature="YPaFIk/x98RBfM8qgLMPVYtIRAqtrLZ1Bl8Z4amgG7rcLcKEhP9XeTQ0CTlNQcaTp9UOJjhbW50Qi1jUpieqCg=="/>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.3/Meetingnotes-1.0.3.zip" length="9475086" type="application/octet-stream" sparkle:edSignature="YPaFIk/x98RBfM8qgLMPVYtIRAqtrLZ1Bl8Z4amgG7rcLcKEhP9XeTQ0CTlNQcaTp9UOJjhbW50Qi1jUpieqCg==" />
|
||||
<sparkle:deltas>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.3/Meetingnotes8-7.delta" sparkle:deltaFrom="7" length="300426" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="wrGn8nljzn8rmi0K2XhcH8y+p0BTD6q3Hbtzsq0yQd3ynIjPqS2VieKYYvmlHKFtl8kZL39JwJEixsAuUs7DAw=="/>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.3/Meetingnotes8-6.delta" sparkle:deltaFrom="6" length="642614" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="0TSiWwSQR6ECWn8iX6OjLU693zDwoX9NDuX3mKDiELDgpYgx1nFuVxB7O0/O41pYyyzgMCbhDJ6VnbO3zWnbBw=="/>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.3/Meetingnotes8-7.delta" sparkle:deltaFrom="7" length="300426" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="wrGn8nljzn8rmi0K2XhcH8y+p0BTD6q3Hbtzsq0yQd3ynIjPqS2VieKYYvmlHKFtl8kZL39JwJEixsAuUs7DAw==" />
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.3/Meetingnotes8-6.delta" sparkle:deltaFrom="6" length="642614" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="0TSiWwSQR6ECWn8iX6OjLU693zDwoX9NDuX3mKDiELDgpYgx1nFuVxB7O0/O41pYyyzgMCbhDJ6VnbO3zWnbBw==" />
|
||||
</sparkle:deltas>
|
||||
</item>
|
||||
<item>
|
||||
@@ -20,26 +33,10 @@
|
||||
<sparkle:version>7</sparkle:version>
|
||||
<sparkle:shortVersionString>1.0.2</sparkle:shortVersionString>
|
||||
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.2/Meetingnotes-1.0.2.zip" length="9453364" type="application/octet-stream" sparkle:edSignature="N2KYxZ5WuId3x3lkhbX6MMlzl1eu3ZJdpN3y4w7ANYd1HMFKgURHbsXbTUn7lh1So2gAulMj2omRkT7oQ0o/Ag=="/>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.2/Meetingnotes-1.0.2.zip" length="9453364" type="application/octet-stream" sparkle:edSignature="N2KYxZ5WuId3x3lkhbX6MMlzl1eu3ZJdpN3y4w7ANYd1HMFKgURHbsXbTUn7lh1So2gAulMj2omRkT7oQ0o/Ag==" />
|
||||
<sparkle:deltas>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.2/Meetingnotes7-6.delta" sparkle:deltaFrom="6" length="358238" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="FtVwt5RO1qg2KP39D4XJy9JEucBsJsXujejMgRsyW8v4M0KNruGi0RbW+K1p7ds3c1b96XV7m4z4vQa128H6Bg=="/>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.2/Meetingnotes7-6.delta" sparkle:deltaFrom="6" length="358238" type="application/octet-stream" sparkle:deltaFromSparkleExecutableSize="864832" sparkle:deltaFromSparkleLocales="de,he,ar,el,ja,fa,en" sparkle:edSignature="FtVwt5RO1qg2KP39D4XJy9JEucBsJsXujejMgRsyW8v4M0KNruGi0RbW+K1p7ds3c1b96XV7m4z4vQa128H6Bg==" />
|
||||
</sparkle:deltas>
|
||||
</item>
|
||||
<item>
|
||||
<title>1.0.1</title>
|
||||
<pubDate>Mon, 14 Jul 2025 18:59:45 -0400</pubDate>
|
||||
<sparkle:version>6</sparkle:version>
|
||||
<sparkle:shortVersionString>1.0.1</sparkle:shortVersionString>
|
||||
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.2/Meetingnotes-1.0.1.zip" length="9453114" type="application/octet-stream" sparkle:edSignature="mZUkDI01sjMNOG/GxOaE8ZyS706PkxDxe+4v16CyYP4/gvZdLWtZN8oB8+hfwPXBGk8aQ9Y4cOGWkHjswcYkAg=="/>
|
||||
</item>
|
||||
<item>
|
||||
<title>1.0.0</title>
|
||||
<pubDate>Mon, 14 Jul 2025 16:22:59 -0400</pubDate>
|
||||
<sparkle:version>5</sparkle:version>
|
||||
<sparkle:shortVersionString>1.0.0</sparkle:shortVersionString>
|
||||
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
|
||||
<enclosure url="https://github.com/owengretzinger/meetingnotes/releases/download/v1.0.0/Meetingnotes-1.0.0.dmg" length="9243712" type="application/octet-stream" sparkle:edSignature="JvjYtW9HvTtb1ILqSUieeFL8Na4d6NlnLLX4uYbkDRJd+B9vOcL5bkZYZQFWbzTFSoctatVeC9CQqocH9yjRDw=="/>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -275,13 +275,16 @@ rm -rf "$APPCAST_WORK"
|
||||
mkdir -p "$APPCAST_WORK"
|
||||
|
||||
echo "🔗 Staging ZIP archives for appcast generation..."
|
||||
echo "[DEBUG] Staging ZIP and delta archives with directory structure..."
|
||||
rsync -avm --include='*/' --include='*.zip' --include='*.delta' --exclude='*' "$RELEASES_DIR/" "$APPCAST_WORK/"
|
||||
echo "[DEBUG] Staging all ZIP archives from all versions..."
|
||||
find "$RELEASES_DIR" -maxdepth 2 -type f -name "*.zip" -exec cp {} "$APPCAST_WORK"/ \;
|
||||
|
||||
echo "[DEBUG] Staging all existing delta files to preserve them..."
|
||||
find "$RELEASES_DIR" -maxdepth 2 -type f -name "*.delta" -exec cp {} "$APPCAST_WORK"/ \;
|
||||
|
||||
echo "[DEBUG] Appcast workdir contents:"
|
||||
ls -la "$APPCAST_WORK"
|
||||
echo "[DEBUG] Running generate_appcast..."
|
||||
/opt/homebrew/Caskroom/sparkle/2.7.1/bin/generate_appcast "$APPCAST_WORK" \
|
||||
--download-url-prefix "https://github.com/owengretzinger/meetingnotes/releases/download/" \
|
||||
-o "appcast.xml" 2>&1 | tee "$BUILD_DIR/generate_appcast.log"
|
||||
|
||||
if grep -q "Could not unarchive" "$BUILD_DIR/generate_appcast.log"; then
|
||||
@@ -290,9 +293,60 @@ if grep -q "Could not unarchive" "$BUILD_DIR/generate_appcast.log"; then
|
||||
exit 3
|
||||
fi
|
||||
|
||||
echo "🚚 Moving generated delta files into version folder..."
|
||||
if compgen -G "$APPCAST_WORK/*.delta" > /dev/null; then
|
||||
mv "$APPCAST_WORK"/*.delta "$VERSION_DIR/"
|
||||
echo "🔧 Fixing download URLs in appcast.xml..."
|
||||
# Fix ZIP/DMG URLs to include version folder
|
||||
# Transform "https://github.com/.../download/Meetingnotes-1.0.3.zip" to "https://github.com/.../download/v1.0.3/Meetingnotes-1.0.3.zip"
|
||||
sed -i '' -E 's|url="([^"]*/download/)(Meetingnotes-([0-9]+\.[0-9]+\.[0-9]+)\.(zip\|dmg))"|url="\1v\3/\2"|g' appcast.xml
|
||||
|
||||
# Fix delta URLs - they need to be in the version folder of the release they belong to
|
||||
# We'll need to parse the appcast to figure out which version each delta belongs to
|
||||
python3 << 'EOF'
|
||||
import xml.etree.ElementTree as ET
|
||||
import re
|
||||
|
||||
# Parse the appcast
|
||||
tree = ET.parse('appcast.xml')
|
||||
root = tree.getroot()
|
||||
|
||||
# Register namespace to preserve it in output
|
||||
ET.register_namespace('sparkle', 'http://www.andymatuschak.org/xml-namespaces/sparkle')
|
||||
|
||||
# Process each item
|
||||
for item in root.findall('.//item'):
|
||||
# Get the version for this item
|
||||
version_elem = item.find('.//{http://www.andymatuschak.org/xml-namespaces/sparkle}shortVersionString')
|
||||
if version_elem is not None:
|
||||
version = version_elem.text
|
||||
|
||||
# Fix all delta URLs within this item's sparkle:deltas section
|
||||
deltas_elem = item.find('.//{http://www.andymatuschak.org/xml-namespaces/sparkle}deltas')
|
||||
if deltas_elem is not None:
|
||||
for enclosure in deltas_elem.findall('.//enclosure[@url]'):
|
||||
url = enclosure.get('url')
|
||||
if url and '.delta' in url:
|
||||
# Extract just the filename
|
||||
filename = url.split('/')[-1]
|
||||
# Set the correct URL with version folder
|
||||
new_url = f'https://github.com/owengretzinger/meetingnotes/releases/download/v{version}/{filename}'
|
||||
enclosure.set('url', new_url)
|
||||
|
||||
# Write the fixed appcast
|
||||
tree.write('appcast.xml', encoding='UTF-8', xml_declaration=True)
|
||||
|
||||
# Add back the standalone attribute
|
||||
with open('appcast.xml', 'r') as f:
|
||||
content = f.read()
|
||||
content = content.replace('<?xml version=\'1.0\' encoding=\'UTF-8\'?>', '<?xml version="1.0" standalone="yes"?>')
|
||||
with open('appcast.xml', 'w') as f:
|
||||
f.write(content)
|
||||
EOF
|
||||
|
||||
echo "🚚 Moving only NEW delta files into version folder..."
|
||||
# Get the build number from the project
|
||||
BUILD_NUMBER=$(grep -m1 "CURRENT_PROJECT_VERSION" Meetingnotes.xcodeproj/project.pbxproj | sed 's/.*= \(.*\);/\1/')
|
||||
if compgen -G "$APPCAST_WORK/${APP_NAME}${BUILD_NUMBER}-"*.delta > /dev/null 2>&1; then
|
||||
echo "[DEBUG] Moving new delta files for build $BUILD_NUMBER..."
|
||||
mv "$APPCAST_WORK/${APP_NAME}${BUILD_NUMBER}-"*.delta "$VERSION_DIR/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
rm -rf "$APPCAST_WORK"
|
||||
|
||||
Reference in New Issue
Block a user