diff --git a/ClaudeChecker/ContentView.swift b/ClaudeChecker/ContentView.swift index 4c8cc00..b9b1cb0 100644 --- a/ClaudeChecker/ContentView.swift +++ b/ClaudeChecker/ContentView.swift @@ -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() diff --git a/ClaudeChecker/Info.plist b/ClaudeChecker/Info.plist index 8ee6b4e..95170f8 100644 --- a/ClaudeChecker/Info.plist +++ b/ClaudeChecker/Info.plist @@ -15,9 +15,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0.6 + 1.0.7 CFBundleVersion - 25 + 26 LSMinimumSystemVersion 13.0 LSUIElement diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index d049848..179ed9f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,4 +1,4 @@ -## What's new in v1.0.6 +## What's new in v1.0.7 -### Improved update notification -The update notification now reads **"Tap to view release notes & update now!"** — making it clear you can read what's changed before installing. +### 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.