Skip to content

Commit c856545

Browse files
Prot10claude
andcommitted
feat: add CHANGELOG.md-based release workflow
- Remove version badge from Home header - Update release script to read changelog from CHANGELOG.md [Unreleased] section - Add step to update CHANGELOG.md after release (moves [Unreleased] to versioned section) - Update RELEASE.md documentation with new workflow Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent b4ddcb0 commit c856545

4 files changed

Lines changed: 211 additions & 53 deletions

File tree

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Changelog
2+
3+
All notable changes to MyMacCleaner will be documented in this file.
4+
5+
## [Unreleased]
6+
7+
<!-- Add your changes here during development. This section will be used for the next release. -->
8+
<!-- Format: - [type] Description -->
9+
<!-- Types: added, changed, fixed, removed -->
10+
11+
- [fixed] Removed version badge from Home header
12+
13+
## [0.1.1] - 2026-01-23
14+
15+
- [changed] Update notification button improvements
16+
- [fixed] Toolbar button visibility for auto-updates
17+
18+
## [0.1.0] - 2026-01-23
19+
20+
- [added] Initial release with auto-update functionality
21+
- [added] Sparkle integration for seamless updates
22+
- [added] Update notification button in toolbar

MyMacCleaner/Features/Home/HomeView.swift

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -114,20 +114,10 @@ struct HomeView: View {
114114
Spacer()
115115

116116
// System status indicator
117-
HStack(spacing: Theme.Spacing.sm) {
118-
// Version badge
119-
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0")")
120-
.font(Theme.Typography.size12)
121-
.foregroundStyle(.secondary)
122-
.padding(.horizontal, Theme.Spacing.sm)
123-
.padding(.vertical, Theme.Spacing.xxs)
124-
.background(.ultraThinMaterial, in: Capsule())
125-
126-
SystemHealthPill(
127-
status: viewModel.systemHealthStatus,
128-
color: viewModel.systemHealthColor
129-
)
130-
}
117+
SystemHealthPill(
118+
status: viewModel.systemHealthStatus,
119+
color: viewModel.systemHealthColor
120+
)
131121
}
132122
}
133123

RELEASE.md

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,37 +63,50 @@ Save the private key to your `.env` file and add the public key to your app's `I
6363

6464
### Quick Release (Recommended)
6565

66-
For a standard release, just run:
66+
**Step 1:** Update `CHANGELOG.md` during development. Add your changes to the `[Unreleased]` section:
67+
68+
```markdown
69+
## [Unreleased]
70+
71+
- [added] New feature description
72+
- [fixed] Bug fix description
73+
- [changed] Improvement description
74+
- [removed] Removed feature description
75+
```
76+
77+
**Step 2:** When ready to release, run:
6778

6879
```bash
69-
./scripts/release.sh <version> "<changelog>"
80+
./scripts/release.sh <version>
7081
```
7182

7283
**Examples:**
7384

7485
```bash
7586
# Patch release (bug fixes)
76-
./scripts/release.sh 0.1.2 "Fixed crash on startup"
87+
./scripts/release.sh 0.1.2
7788

7889
# Minor release (new features)
79-
./scripts/release.sh 0.2.0 "Added new disk analysis feature"
90+
./scripts/release.sh 0.2.0
8091

8192
# Major release
82-
./scripts/release.sh 1.0.0 "First stable release"
93+
./scripts/release.sh 1.0.0
8394
```
8495

8596
The script automatically:
86-
1. Increments the build number
87-
2. Updates version in Xcode project
88-
3. Builds and archives the app
89-
4. Signs with Developer ID certificate
90-
5. Notarizes with Apple
91-
6. Creates DMG and ZIP packages
92-
7. Signs ZIP for Sparkle auto-updates
93-
8. Updates `appcast.xml` for Sparkle
94-
9. Updates `website/public/data/releases.json`
95-
10. Creates GitHub release with assets
96-
11. Commits and pushes all changes
97+
1. Reads changelog from `CHANGELOG.md` `[Unreleased]` section
98+
2. Increments the build number
99+
3. Updates version in Xcode project
100+
4. Builds and archives the app
101+
5. Signs with Developer ID certificate
102+
6. Notarizes with Apple
103+
7. Creates DMG and ZIP packages
104+
8. Signs ZIP for Sparkle auto-updates
105+
9. Updates `appcast.xml` for Sparkle
106+
10. Updates `website/public/data/releases.json`
107+
11. Creates GitHub release with assets
108+
12. Updates `CHANGELOG.md` (moves `[Unreleased]` to versioned section)
109+
13. Commits and pushes all changes
97110

98111
---
99112

@@ -316,23 +329,54 @@ EOF
316329
sed -i '' 's/MARKETING_VERSION = [^;]*;/MARKETING_VERSION = 0.1.0;/g' MyMacCleaner.xcodeproj/project.pbxproj
317330
sed -i '' 's/CURRENT_PROJECT_VERSION = [^;]*;/CURRENT_PROJECT_VERSION = 0;/g' MyMacCleaner.xcodeproj/project.pbxproj
318331

332+
# Reset CHANGELOG.md
333+
cat > CHANGELOG.md << 'EOF'
334+
# Changelog
335+
336+
All notable changes to MyMacCleaner will be documented in this file.
337+
338+
## [Unreleased]
339+
340+
- [added] Initial release with auto-update functionality
341+
342+
EOF
343+
319344
# Commit and push
320345
git add -A && git commit -m "chore: prepare for fresh release" && git push
321346

322347
# Release first version
323-
./scripts/release.sh 0.1.0 "Initial release"
348+
./scripts/release.sh 0.1.0
349+
350+
# Update CHANGELOG.md for second version
351+
cat > CHANGELOG.md << 'EOF'
352+
# Changelog
353+
354+
All notable changes to MyMacCleaner will be documented in this file.
355+
356+
## [Unreleased]
357+
358+
- [changed] Update notification improvements
359+
360+
## [0.1.0] - 2026-01-23
361+
362+
- [added] Initial release with auto-update functionality
363+
364+
EOF
365+
366+
git add CHANGELOG.md && git commit -m "docs: prepare changelog for v0.1.1" && git push
324367

325368
# Release second version (for testing updates)
326-
./scripts/release.sh 0.1.1 "Update notification improvements"
369+
./scripts/release.sh 0.1.1
327370
```
328371

329372
---
330373

331374
## Quick Reference
332375

333376
```bash
334-
# Standard release
335-
./scripts/release.sh 0.1.2 "Bug fixes and improvements"
377+
# 1. Update CHANGELOG.md with your changes during development
378+
# 2. When ready to release:
379+
./scripts/release.sh 0.1.2
336380

337381
# Check current version
338382
grep -m1 "MARKETING_VERSION" MyMacCleaner.xcodeproj/project.pbxproj
@@ -344,6 +388,9 @@ gh release list
344388
# View appcast
345389
cat appcast.xml
346390

391+
# View changelog
392+
cat CHANGELOG.md
393+
347394
# Check notarization history
348395
xcrun notarytool history --keychain-profile "notary-profile"
349396
```

0 commit comments

Comments
 (0)