Skip to content
This repository was archived by the owner on Nov 16, 2025. It is now read-only.

Commit b324ad1

Browse files
steipeteclaude
andcommitted
Fix appcast generation to use local CHANGELOG.md instead of GitHub release body
- Updated generate-appcast.sh to use changelog-to-html.sh for local changelog - Updated RELEASE.md with critical requirement to update CHANGELOG.md before release - Added troubleshooting section for HTML escape issues - Fixed v1.1.0 appcast to show proper formatted changelog 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ab76710 commit b324ad1

File tree

4 files changed

+238
-37
lines changed

4 files changed

+238
-37
lines changed

appcast-prerelease.xml

Lines changed: 142 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,38 @@
1111
<sparkle:version>110</sparkle:version>
1212
<sparkle:shortVersionString>1.1.0-beta.1</sparkle:shortVersionString>
1313
<description><![CDATA[
14-
<h2>VibeMeter 1.1.0-beta.1</h2><p><strong>Pre-release version</strong></p><div><p>&lt;h2&gt;VibeMeter 1.1.0-beta.1&lt;/h2&gt;</p>
15-
<p>&lt;h3&gt;🎨 UI Improvements&lt;/h3&gt;</p>
16-
<p>&lt;ul&gt;</p>
17-
<p>&lt;li&gt;&lt;strong&gt;Enhanced popover design&lt;/strong&gt; - Switched to ultra-thin translucent material with blur effect for modern look&lt;/li&gt;</p>
18-
<p>&lt;li&gt;&lt;strong&gt;Adaptive border&lt;/strong&gt; - Added white border that automatically adapts to light/dark mode&lt;/li&gt;</p></div>
14+
<h2>VibeMeter 1.1.0-beta.1</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.1.0-beta.1...
15+
<h2>VibeMeter 1.1.0-beta.1</h2>
16+
<h3>🎨 UI Improvements</h3>
17+
<ul>
18+
<li><strong>Enhanced popover design</strong> - Switched to ultra-thin translucent material with blur effect for modern look</li>
19+
<li><strong>Adaptive border</strong> - Added white border that automatically adapts to light/dark mode</li>
20+
<li><strong>Optimized spacing</strong> - Reduced excessive left/right margins for better content density</li>
21+
<li><strong>Progressive gauge colors</strong> - Added smooth color transitions from green (low usage) to red (high usage)</li>
22+
<li><strong>Improved money formatting</strong> - Show "€0" instead of "€0,00" and remove unnecessary decimal places</li>
23+
</ul>
24+
<h3>⚡ Functionality Enhancements</h3>
25+
<ul>
26+
<li><strong>Smart gauge calculation</strong> - Display request usage percentage (182/500 = 36%) when no money spent, then switch to spending percentage when money is spent</li>
27+
<li><strong>Dynamic tooltip updates</strong> - Fixed tooltip refresh discrepancy using NSTrackingArea hover detection</li>
28+
<li><strong>Simplified tooltip</strong> - Removed keyboard shortcuts section and emoji indicators for cleaner display</li>
29+
<li><strong>Robust window display</strong> - Implemented multi-strategy window display system to prevent UI freezing</li>
30+
</ul>
31+
<h3>🐛 Bug Fixes</h3>
32+
<ul>
33+
<li><strong>Fixed UI deadlock</strong> - Resolved freezing when showing the custom menu window</li>
34+
<li><strong>Fixed tooltip inconsistency</strong> - Tooltip and popover now show consistent refresh timestamps</li>
35+
<li><strong>Fixed gauge accuracy</strong> - Corrected percentage calculations across all display components</li>
36+
<li><strong>Fixed money display</strong> - Consistent formatting without unnecessary decimals throughout the app</li>
37+
</ul>
38+
<h3>🔧 Technical Improvements</h3>
39+
<ul>
40+
<li><strong>Window display strategy</strong> - Added fallback mechanisms with <code>orderFrontRegardless()</code> and async display timing</li>
41+
<li><strong>Hover-based updates</strong> - Tooltip refreshes dynamically on mouse hover for real-time accuracy</li>
42+
<li><strong>Swift Concurrency compliance</strong> - Added proper <code>@MainActor</code> annotations throughout the codebase</li>
43+
<li><strong>Code consistency</strong> - Unified gauge calculation logic across StatusBarController and StatusBarDisplayManager</li>
44+
</ul>
45+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md#110-beta1-20250610">View full changelog</a></p></div>
1946
]]></description>
2047
<pubDate>Tue, 10 Jun 2025 01:14:25 +0100</pubDate>
2148
<enclosure
@@ -32,7 +59,12 @@
3259
<sparkle:version>105</sparkle:version>
3360
<sparkle:shortVersionString>1.0.0-beta.8</sparkle:shortVersionString>
3461
<description><![CDATA[
35-
<h2>VibeMeter 1.0.0-beta.8</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.8 (build 105)</p></div>
62+
<h2>VibeMeter 1.0.0-beta.8</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.8...
63+
Warning: No changelog section found for version 1.0.0-beta.8
64+
Using default content...
65+
<h2>VibeMeter 1.0.0-beta.8</h2>
66+
<p>Latest version of VibeMeter with new features and improvements.</p>
67+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md">View full changelog</a></p></div>
3668
]]></description>
3769
<pubDate>Sat, 07 Jun 2025 12:51:50 +0100</pubDate>
3870
<enclosure
@@ -49,7 +81,27 @@
4981
<sparkle:version>105</sparkle:version>
5082
<sparkle:shortVersionString>1.0.0-beta.7</sparkle:shortVersionString>
5183
<description><![CDATA[
52-
<h2>VibeMeter 1.0.0-beta.7</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.7 (build 105)</p></div>
84+
<h2>VibeMeter 1.0.0-beta.7</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.7...
85+
<h2>VibeMeter 1.0.0-beta.7</h2>
86+
<h3>🐛 Bug Fixes</h3>
87+
<ul>
88+
<li>Fixed invoice fetching for Cursor users without teams - teamId is now optional in API requests</li>
89+
<li>Fixed incorrect coding key for startOfMonth, causing failure to decode usage (#16)</li>
90+
<li>Fixed CI test execution by removing invalid -test-iterations parameter</li>
91+
<li>Fixed API response handling for Individual users (empty response object)</li>
92+
</ul>
93+
<h3>🔧 Improvements</h3>
94+
<ul>
95+
<li>Replaced mock data with actual API responses for better testing accuracy</li>
96+
<li>Improved error handling for team ID fallback (-1 for missing teams)</li>
97+
<li>Enhanced CI workflow permissions for external PR comments (#18)</li>
98+
<li>Enabled silent project regeneration without Xcode restart</li>
99+
</ul>
100+
<h3>📝 Documentation</h3>
101+
<ul>
102+
<li>Added link to code signing guide in scripts README</li>
103+
</ul>
104+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md#100-beta7-20250610">View full changelog</a></p></div>
53105
]]></description>
54106
<pubDate>Thu, 05 Jun 2025 21:44:22 +0100</pubDate>
55107
<enclosure
@@ -66,7 +118,12 @@
66118
<sparkle:version>105</sparkle:version>
67119
<sparkle:shortVersionString>1.0.0-beta.6</sparkle:shortVersionString>
68120
<description><![CDATA[
69-
<h2>VibeMeter 1.0.0-beta.6</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.6 (build 105)</p></div>
121+
<h2>VibeMeter 1.0.0-beta.6</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.6...
122+
Warning: No changelog section found for version 1.0.0-beta.6
123+
Using default content...
124+
<h2>VibeMeter 1.0.0-beta.6</h2>
125+
<p>Latest version of VibeMeter with new features and improvements.</p>
126+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md">View full changelog</a></p></div>
70127
]]></description>
71128
<pubDate>Thu, 05 Jun 2025 14:14:30 +0100</pubDate>
72129
<enclosure
@@ -83,7 +140,12 @@
83140
<sparkle:version>104</sparkle:version>
84141
<sparkle:shortVersionString>1.0.0-beta.5</sparkle:shortVersionString>
85142
<description><![CDATA[
86-
<h2>VibeMeter 1.0.0-beta.5</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.5 (build 104)</p></div>
143+
<h2>VibeMeter 1.0.0-beta.5</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.5...
144+
Warning: No changelog section found for version 1.0.0-beta.5
145+
Using default content...
146+
<h2>VibeMeter 1.0.0-beta.5</h2>
147+
<p>Latest version of VibeMeter with new features and improvements.</p>
148+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md">View full changelog</a></p></div>
87149
]]></description>
88150
<pubDate>Thu, 05 Jun 2025 11:21:54 +0100</pubDate>
89151
<enclosure
@@ -100,7 +162,12 @@
100162
<sparkle:version>103</sparkle:version>
101163
<sparkle:shortVersionString>1.0.0-beta.4</sparkle:shortVersionString>
102164
<description><![CDATA[
103-
<h2>VibeMeter 1.0.0-beta.4</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.4 (build 103)</p></div>
165+
<h2>VibeMeter 1.0.0-beta.4</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.4...
166+
Warning: No changelog section found for version 1.0.0-beta.4
167+
Using default content...
168+
<h2>VibeMeter 1.0.0-beta.4</h2>
169+
<p>Latest version of VibeMeter with new features and improvements.</p>
170+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md">View full changelog</a></p></div>
104171
]]></description>
105172
<pubDate>Thu, 05 Jun 2025 11:15:02 +0100</pubDate>
106173
<enclosure
@@ -117,7 +184,12 @@
117184
<sparkle:version>102</sparkle:version>
118185
<sparkle:shortVersionString>1.0.0-beta.3</sparkle:shortVersionString>
119186
<description><![CDATA[
120-
<h2>VibeMeter 1.0.0-beta.3</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.3 (build 102)</p></div>
187+
<h2>VibeMeter 1.0.0-beta.3</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.3...
188+
Warning: No changelog section found for version 1.0.0-beta.3
189+
Using default content...
190+
<h2>VibeMeter 1.0.0-beta.3</h2>
191+
<p>Latest version of VibeMeter with new features and improvements.</p>
192+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md">View full changelog</a></p></div>
121193
]]></description>
122194
<pubDate>Thu, 05 Jun 2025 11:11:01 +0100</pubDate>
123195
<enclosure
@@ -134,7 +206,27 @@
134206
<sparkle:version>101</sparkle:version>
135207
<sparkle:shortVersionString>1.0.0-beta.2</sparkle:shortVersionString>
136208
<description><![CDATA[
137-
<h2>VibeMeter 1.0.0-beta.2</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.2 (build 101)</p></div>
209+
<h2>VibeMeter 1.0.0-beta.2</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.2...
210+
<h2>VibeMeter 1.0.0-beta.2</h2>
211+
<h3>🔧 Improvements</h3>
212+
<ul>
213+
<li><strong>Release process refinement</strong> - Streamlined build and distribution workflow</li>
214+
<li><strong>Appcast optimization</strong> - Improved update feed generation and validation</li>
215+
<li><strong>Build number management</strong> - Enhanced version tracking for reliable updates</li>
216+
</ul>
217+
<h3>🐛 Bug Fixes</h3>
218+
<ul>
219+
<li>Fixed double beta suffix in release naming</li>
220+
<li>Corrected build number synchronization in appcast</li>
221+
<li>Resolved release script version handling</li>
222+
</ul>
223+
<h3>📝 Documentation</h3>
224+
<ul>
225+
<li>Updated release process documentation</li>
226+
<li>Added comprehensive release checklist</li>
227+
<li>Improved troubleshooting guides</li>
228+
</ul>
229+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md#100-beta2-20250610">View full changelog</a></p></div>
138230
]]></description>
139231
<pubDate>Thu, 05 Jun 2025 10:59:00 +0100</pubDate>
140232
<enclosure
@@ -151,7 +243,12 @@
151243
<sparkle:version>100</sparkle:version>
152244
<sparkle:shortVersionString>1.0.0-beta.1</sparkle:shortVersionString>
153245
<description><![CDATA[
154-
<h2>VibeMeter 1.0.0-beta.1</h2><p><strong>Pre-release version</strong></p><div><p>Release 1.0.0-beta.1 (build 100)</p></div>
246+
<h2>VibeMeter 1.0.0-beta.1</h2><p><strong>Pre-release version</strong></p><div>Extracting changelog for version 1.0.0-beta.1...
247+
Warning: No changelog section found for version 1.0.0-beta.1
248+
Using default content...
249+
<h2>VibeMeter 1.0.0-beta.1</h2>
250+
<p>Latest version of VibeMeter with new features and improvements.</p>
251+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md">View full changelog</a></p></div>
155252
]]></description>
156253
<pubDate>Thu, 05 Jun 2025 10:56:46 +0100</pubDate>
157254
<enclosure
@@ -168,11 +265,38 @@
168265
<sparkle:version>111</sparkle:version>
169266
<sparkle:shortVersionString>1.1.0</sparkle:shortVersionString>
170267
<description><![CDATA[
171-
<h2>VibeMeter 1.1.0</h2><div><p>Extracting changelog for version 1.1.0...</p>
172-
<p>Warning: No changelog section found for version 1.1.0</p>
173-
<p>Using default content...</p>
174-
<p>&lt;h2&gt;VibeMeter 1.1.0&lt;/h2&gt;</p>
175-
<p>&lt;p&gt;Latest version of VibeMeter with new features and improvements.&lt;/p&gt;</p></div>
268+
<h2>VibeMeter 1.1.0</h2><div>Extracting changelog for version 1.1.0...
269+
<h2>VibeMeter 1.1.0</h2>
270+
<h3>🎨 UI Improvements</h3>
271+
<ul>
272+
<li><strong>Enhanced popover design</strong> - Switched to ultra-thin translucent material with blur effect for modern look</li>
273+
<li><strong>Adaptive border</strong> - Added white border that automatically adapts to light/dark mode</li>
274+
<li><strong>Optimized spacing</strong> - Reduced excessive left/right margins for better content density</li>
275+
<li><strong>Progressive gauge colors</strong> - Added smooth color transitions from green (low usage) to red (high usage)</li>
276+
<li><strong>Improved money formatting</strong> - Show "€0" instead of "€0,00" and remove unnecessary decimal places</li>
277+
</ul>
278+
<h3>⚡ Functionality Enhancements</h3>
279+
<ul>
280+
<li><strong>Smart gauge calculation</strong> - Display request usage percentage (182/500 = 36%) when no money spent, then switch to spending percentage when money is spent</li>
281+
<li><strong>Dynamic tooltip updates</strong> - Fixed tooltip refresh discrepancy using NSTrackingArea hover detection</li>
282+
<li><strong>Simplified tooltip</strong> - Removed keyboard shortcuts section and emoji indicators for cleaner display</li>
283+
<li><strong>Robust window display</strong> - Implemented multi-strategy window display system to prevent UI freezing</li>
284+
</ul>
285+
<h3>🐛 Bug Fixes</h3>
286+
<ul>
287+
<li><strong>Fixed UI deadlock</strong> - Resolved freezing when showing the custom menu window</li>
288+
<li><strong>Fixed tooltip inconsistency</strong> - Tooltip and popover now show consistent refresh timestamps</li>
289+
<li><strong>Fixed gauge accuracy</strong> - Corrected percentage calculations across all display components</li>
290+
<li><strong>Fixed money display</strong> - Consistent formatting without unnecessary decimals throughout the app</li>
291+
</ul>
292+
<h3>🔧 Technical Improvements</h3>
293+
<ul>
294+
<li><strong>Window display strategy</strong> - Added fallback mechanisms with <code>orderFrontRegardless()</code> and async display timing</li>
295+
<li><strong>Hover-based updates</strong> - Tooltip refreshes dynamically on mouse hover for real-time accuracy</li>
296+
<li><strong>Swift Concurrency compliance</strong> - Added proper <code>@MainActor</code> annotations throughout the codebase</li>
297+
<li><strong>Code consistency</strong> - Unified gauge calculation logic across StatusBarController and StatusBarDisplayManager</li>
298+
</ul>
299+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md#110-20250610">View full changelog</a></p></div>
176300
]]></description>
177301
<pubDate>Tue, 10 Jun 2025 02:05:44 +0100</pubDate>
178302
<enclosure

appcast.xml

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,38 @@
1111
<sparkle:version>111</sparkle:version>
1212
<sparkle:shortVersionString>1.1.0</sparkle:shortVersionString>
1313
<description><![CDATA[
14-
<h2>VibeMeter 1.1.0</h2><div><p>Extracting changelog for version 1.1.0...</p>
15-
<p>Warning: No changelog section found for version 1.1.0</p>
16-
<p>Using default content...</p>
17-
<p>&lt;h2&gt;VibeMeter 1.1.0&lt;/h2&gt;</p>
18-
<p>&lt;p&gt;Latest version of VibeMeter with new features and improvements.&lt;/p&gt;</p></div>
14+
<h2>VibeMeter 1.1.0</h2><div>Extracting changelog for version 1.1.0...
15+
<h2>VibeMeter 1.1.0</h2>
16+
<h3>🎨 UI Improvements</h3>
17+
<ul>
18+
<li><strong>Enhanced popover design</strong> - Switched to ultra-thin translucent material with blur effect for modern look</li>
19+
<li><strong>Adaptive border</strong> - Added white border that automatically adapts to light/dark mode</li>
20+
<li><strong>Optimized spacing</strong> - Reduced excessive left/right margins for better content density</li>
21+
<li><strong>Progressive gauge colors</strong> - Added smooth color transitions from green (low usage) to red (high usage)</li>
22+
<li><strong>Improved money formatting</strong> - Show "€0" instead of "€0,00" and remove unnecessary decimal places</li>
23+
</ul>
24+
<h3>⚡ Functionality Enhancements</h3>
25+
<ul>
26+
<li><strong>Smart gauge calculation</strong> - Display request usage percentage (182/500 = 36%) when no money spent, then switch to spending percentage when money is spent</li>
27+
<li><strong>Dynamic tooltip updates</strong> - Fixed tooltip refresh discrepancy using NSTrackingArea hover detection</li>
28+
<li><strong>Simplified tooltip</strong> - Removed keyboard shortcuts section and emoji indicators for cleaner display</li>
29+
<li><strong>Robust window display</strong> - Implemented multi-strategy window display system to prevent UI freezing</li>
30+
</ul>
31+
<h3>🐛 Bug Fixes</h3>
32+
<ul>
33+
<li><strong>Fixed UI deadlock</strong> - Resolved freezing when showing the custom menu window</li>
34+
<li><strong>Fixed tooltip inconsistency</strong> - Tooltip and popover now show consistent refresh timestamps</li>
35+
<li><strong>Fixed gauge accuracy</strong> - Corrected percentage calculations across all display components</li>
36+
<li><strong>Fixed money display</strong> - Consistent formatting without unnecessary decimals throughout the app</li>
37+
</ul>
38+
<h3>🔧 Technical Improvements</h3>
39+
<ul>
40+
<li><strong>Window display strategy</strong> - Added fallback mechanisms with <code>orderFrontRegardless()</code> and async display timing</li>
41+
<li><strong>Hover-based updates</strong> - Tooltip refreshes dynamically on mouse hover for real-time accuracy</li>
42+
<li><strong>Swift Concurrency compliance</strong> - Added proper <code>@MainActor</code> annotations throughout the codebase</li>
43+
<li><strong>Code consistency</strong> - Unified gauge calculation logic across StatusBarController and StatusBarDisplayManager</li>
44+
</ul>
45+
<p><a href="https://github.com/steipete/VibeMeter/blob/main/CHANGELOG.md#110-20250610">View full changelog</a></p></div>
1946
]]></description>
2047
<pubDate>Tue, 10 Jun 2025 02:05:44 +0100</pubDate>
2148
<enclosure

0 commit comments

Comments
 (0)