Compare commits

..
9 Commits
Author SHA1 Message Date
superdooper86 255de797f8 Release v1.0.7 — fix markdown rendering in release notes
Add ReleaseNotesText view that pre-processes headers (##, ###) to bold
and converts - bullets to • before passing to AttributedString, which
only supports inline markdown. Replaces both Text(.init()) call sites.
2026-05-07 17:43:46 +02:00
github-actions[bot] 0046c53283 Release v1.0.6 2026-05-07 15:39:24 +00:00
superdooper86 8d222d63f0 Release v1.0.6 — improve update notification subtitle
Change notification prompt to "Tap to view release notes & update now!"
2026-05-07 17:38:34 +02:00
github-actions[bot] 5720370649 Release v1.0.5 2026-05-07 15:31:00 +00:00
superdooper86 0843730ae1 Release v1.0.5 — fix markdown rendering in release notes
Use Text(.init()) to parse markdown in update sheet and banner.
Notification popup now shows a fixed subtitle instead of raw notes.
2026-05-07 17:29:29 +02:00
superdooper86 9c030fcdd5 Fix version.json containing invalid JSON (literal newlines in notes)
Use jq to build version.json so multiline release notes are properly
escaped as \n sequences. Also fix current version.json for v1.0.4.
2026-05-07 17:22:57 +02:00
github-actions[bot] dd68ff39d6 Release v1.0.4 2026-05-07 15:16:04 +00:00
superdooper86 b76bdf3bc1 Release v1.0.4 — clickable notifications
Notifications are now interactive: limit warnings and resets open the
main window on tap; update notifications open the update sheet directly.

Bump version to 1.0.4 (build 23).
2026-05-07 17:14:29 +02:00
github-actions[bot] c31950fd76 Release v1.0.3 2026-05-07 15:09:05 +00:00
6 changed files with 48 additions and 20 deletions
+6 -7
View File
@@ -50,13 +50,12 @@ jobs:
- name: Update version.json
run: |
cat > version.json << JSON
{
"version": "${{ steps.version.outputs.version }}",
"url": "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/ClaudeChecker.zip",
"notes": "$(cat RELEASE_NOTES.md 2>/dev/null || echo 'Release ${{ steps.version.outputs.version }}')"
}
JSON
notes=$(cat RELEASE_NOTES.md 2>/dev/null || echo "Release ${{ steps.version.outputs.version }}")
jq -n \
--arg version "${{ steps.version.outputs.version }}" \
--arg url "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/ClaudeChecker.zip" \
--arg notes "$notes" \
'{version: $version, url: $url, notes: $notes}' > version.json
- name: Update Homebrew cask
run: |
+32 -7
View File
@@ -977,6 +977,36 @@ struct UpdateSuccessBanner: View {
}
}
// MARK: - Markdown notes renderer
struct ReleaseNotesText: View {
let text: String
var font: Font = .system(size: 12)
var body: some View {
let processed = text
.split(separator: "\n", omittingEmptySubsequences: false)
.map { line -> String in
let s = String(line)
if s.hasPrefix("### ") { return "**\(s.dropFirst(4))**" }
if s.hasPrefix("## ") { return "**\(s.dropFirst(3))**" }
if s.hasPrefix("# ") { return "**\(s.dropFirst(2))**" }
if s.hasPrefix("- ") { return "\(s.dropFirst(2))" }
return s
}
.joined(separator: "\n")
if let attr = try? AttributedString(markdown: processed,
options: .init(interpretedSyntax: .inlineOnlyPreservingWhitespace)) {
Text(attr).font(font).foregroundColor(.secondary)
.fixedSize(horizontal: false, vertical: true)
} else {
Text(text).font(font).foregroundColor(.secondary)
.fixedSize(horizontal: false, vertical: true)
}
}
}
// MARK: - Update Banner
struct UpdateBanner: View {
@@ -992,10 +1022,7 @@ struct UpdateBanner: View {
Text("Update available — v\(updater.latestVersion)")
.font(.system(size: 12, weight: .semibold))
if !updater.releaseNotes.isEmpty {
Text(updater.releaseNotes)
.font(.system(size: 11))
.foregroundColor(.secondary)
.fixedSize(horizontal: false, vertical: true)
ReleaseNotesText(text: updater.releaseNotes, font: .system(size: 11))
}
}
Spacer()
@@ -1061,9 +1088,7 @@ struct UpdateSheet: View {
.foregroundColor(.blue)
}
if !updater.releaseNotes.isEmpty {
Text(updater.releaseNotes)
.font(.system(size: 12))
.foregroundColor(.secondary)
ReleaseNotesText(text: updater.releaseNotes)
}
}
Spacer()
+2 -2
View File
@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.3</string>
<string>1.0.7</string>
<key>CFBundleVersion</key>
<string>22</string>
<string>26</string>
<key>LSMinimumSystemVersion</key>
<string>13.0</string>
<key>LSUIElement</key>
+1 -1
View File
@@ -8,7 +8,7 @@
[![macOS](https://img.shields.io/badge/macOS-13.0+-000000?style=flat&logo=apple&logoColor=white)](https://www.apple.com/macos/)
[![Swift](https://img.shields.io/badge/Swift-5.9-F05138?style=flat&logo=swift&logoColor=white)](https://swift.org)
[![Version](https://img.shields.io/badge/version-1.0.2-orange?style=flat)](https://github.com/superdooper86/claudechecker/releases)
[![Version](https://img.shields.io/badge/version-1.0.6-orange?style=flat)](https://github.com/superdooper86/claudechecker/releases)
[![License](https://img.shields.io/badge/license-MIT-blue?style=flat)](LICENSE)
</div>
+4
View File
@@ -0,0 +1,4 @@
## What's new in v1.0.7
### Release notes now render correctly
Fixed markdown rendering in the update banner and update sheet — headers, **bold text**, and bullet points now display properly instead of showing raw `##` and `**` characters.
+3 -3
View File
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
"url": "https://github.com/superdooper86/claudechecker/releases/download/v1.0.2/ClaudeChecker.zip",
"notes": "Release 1.0.2"
"version": "1.0.6",
"url": "https://github.com/superdooper86/claudechecker/releases/download/v1.0.6/ClaudeChecker.zip",
"notes": "## What's new in v1.0.6\n\n### Improved update notification\nThe update notification now reads **\"Tap to view release notes & update now!\"** — making it clear you can read what's changed before installing."
}