From 663116c48e9e12c040c6048dc3d64e4f3afaac7d Mon Sep 17 00:00:00 2001 From: rabble Date: Wed, 27 Nov 2024 11:01:37 +1300 Subject: [PATCH 1/7] fixing bugs with displaying the fediverse server on profiles --- Nos.xcodeproj/project.pbxproj | 24 +++++++++---------- .../CoreData/Author+CoreDataClass.swift | 2 +- Nos/Views/Profile/ActivityPubBadgeView.swift | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Nos.xcodeproj/project.pbxproj b/Nos.xcodeproj/project.pbxproj index 3a9aae362..8cbe04f28 100644 --- a/Nos.xcodeproj/project.pbxproj +++ b/Nos.xcodeproj/project.pbxproj @@ -2164,7 +2164,7 @@ C9B737702AB24D5F00398BE7 /* XCRemoteSwiftPackageReference "SwiftGenPlugin" */, C91565BF2B2368FA0068EECA /* XCRemoteSwiftPackageReference "ViewInspector" */, 3AD3185B2B294E6200026B07 /* XCRemoteSwiftPackageReference "xcstrings-tool-plugin" */, - C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1.swift" */, + C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1" */, C9FD35112BCED5A6008F8D95 /* XCRemoteSwiftPackageReference "nostr-sdk-ios" */, 03C49ABE2C938A9C00502321 /* XCRemoteSwiftPackageReference "SwiftSoup" */, 039389212CA4985C00698978 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */, @@ -2799,11 +2799,11 @@ /* Begin PBXTargetDependency section */ 3AD3185D2B294E9000026B07 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = 3AD3185C2B294E9000026B07 /* plugin:XCStringsToolPlugin */; + productRef = 3AD3185C2B294E9000026B07 /* XCStringsToolPlugin */; }; 3AEABEF32B2BF806001BC933 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = 3AEABEF22B2BF806001BC933 /* plugin:XCStringsToolPlugin */; + productRef = 3AEABEF22B2BF806001BC933 /* XCStringsToolPlugin */; }; C90862C229E9804B00C35A71 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -2812,11 +2812,11 @@ }; C9A6C7442AD83F7A001F9500 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = C9A6C7432AD83F7A001F9500 /* plugin:SwiftGenPlugin */; + productRef = C9A6C7432AD83F7A001F9500 /* SwiftGenPlugin */; }; C9D573402AB24A3700E06BB4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = C9D5733F2AB24A3700E06BB4 /* plugin:SwiftGenPlugin */; + productRef = C9D5733F2AB24A3700E06BB4 /* SwiftGenPlugin */; }; C9DEBFE6298941020078B43A /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3673,7 +3673,7 @@ minimumVersion = 4.0.0; }; }; - C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1.swift" */ = { + C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/GigaBitcoin/secp256k1.swift"; requirement = { @@ -3712,12 +3712,12 @@ package = 03C49ABE2C938A9C00502321 /* XCRemoteSwiftPackageReference "SwiftSoup" */; productName = SwiftSoup; }; - 3AD3185C2B294E9000026B07 /* plugin:XCStringsToolPlugin */ = { + 3AD3185C2B294E9000026B07 /* XCStringsToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = 3AD3185B2B294E6200026B07 /* XCRemoteSwiftPackageReference "xcstrings-tool-plugin" */; productName = "plugin:XCStringsToolPlugin"; }; - 3AEABEF22B2BF806001BC933 /* plugin:XCStringsToolPlugin */ = { + 3AEABEF22B2BF806001BC933 /* XCStringsToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = 3AD3185B2B294E6200026B07 /* XCRemoteSwiftPackageReference "xcstrings-tool-plugin" */; productName = "plugin:XCStringsToolPlugin"; @@ -3791,7 +3791,7 @@ package = C99DBF7C2A9E81CF00F7068F /* XCRemoteSwiftPackageReference "SDWebImageSwiftUI" */; productName = SDWebImageSwiftUI; }; - C9A6C7432AD83F7A001F9500 /* plugin:SwiftGenPlugin */ = { + C9A6C7432AD83F7A001F9500 /* SwiftGenPlugin */ = { isa = XCSwiftPackageProductDependency; package = C9B737702AB24D5F00398BE7 /* XCRemoteSwiftPackageReference "SwiftGenPlugin" */; productName = "plugin:SwiftGenPlugin"; @@ -3811,7 +3811,7 @@ package = C9B71DBC2A8E9BAD0031ED9F /* XCRemoteSwiftPackageReference "sentry-cocoa" */; productName = Sentry; }; - C9D5733F2AB24A3700E06BB4 /* plugin:SwiftGenPlugin */ = { + C9D5733F2AB24A3700E06BB4 /* SwiftGenPlugin */ = { isa = XCSwiftPackageProductDependency; package = C9C8450C2AB249DB00654BC1 /* XCRemoteSwiftPackageReference "SwiftGenPlugin" */; productName = "plugin:SwiftGenPlugin"; @@ -3823,12 +3823,12 @@ }; C9FD34F52BCEC89C008F8D95 /* secp256k1 */ = { isa = XCSwiftPackageProductDependency; - package = C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1.swift" */; + package = C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1" */; productName = secp256k1; }; C9FD34F72BCEC8B5008F8D95 /* secp256k1 */ = { isa = XCSwiftPackageProductDependency; - package = C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1.swift" */; + package = C9FD34F42BCEC89C008F8D95 /* XCRemoteSwiftPackageReference "secp256k1" */; productName = secp256k1; }; C9FD35122BCED5A6008F8D95 /* NostrSDK */ = { diff --git a/Nos/Models/CoreData/Author+CoreDataClass.swift b/Nos/Models/CoreData/Author+CoreDataClass.swift index 403e351fe..2ef579c85 100644 --- a/Nos/Models/CoreData/Author+CoreDataClass.swift +++ b/Nos/Models/CoreData/Author+CoreDataClass.swift @@ -54,7 +54,7 @@ import Logger } var hasMostrNIP05: Bool { - nip05?.hasSuffix("@mostr.pub") == true + nip05?.hasSuffix(".mostr.pub") == true } var nip05Parts: (username: String, domain: String)? { diff --git a/Nos/Views/Profile/ActivityPubBadgeView.swift b/Nos/Views/Profile/ActivityPubBadgeView.swift index bc17bf278..09ba5ec2d 100644 --- a/Nos/Views/Profile/ActivityPubBadgeView.swift +++ b/Nos/Views/Profile/ActivityPubBadgeView.swift @@ -6,7 +6,7 @@ struct ActivityPubBadgeView: View { @ObservedObject var author: Author var fediverseServer: String { - let regex = /[0-9A-Za-z._-]+_at_(?[0-9A-Za-z._-]+)@mostr\.pub/ + let regex = /[0-9A-Za-z._-]+@(?[0-9A-Za-z._-]+)\.mostr\.pub/ guard let match = author.nip05?.firstMatch(of: regex) else { return "mostr.pub" } From be349c3f0d404bfae3ec3822f8d3272a201c903c Mon Sep 17 00:00:00 2001 From: rabble Date: Wed, 27 Nov 2024 17:57:55 +1300 Subject: [PATCH 2/7] adding better display of mastodon users so it's more seemless --- CHANGELOG.md | 1 + Nos/Views/Components/Author/NIP05View.swift | 36 +++++++++++++++------ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67fe84009..4ea5b75d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +- Fixing display of mastodon users names so it shows @username@server.instance rather than username@instance-name.mostr.pub ## [1.0.2] - 2024-11-26Z diff --git a/Nos/Views/Components/Author/NIP05View.swift b/Nos/Views/Components/Author/NIP05View.swift index e636dfff0..7ab534a1e 100644 --- a/Nos/Views/Components/Author/NIP05View.swift +++ b/Nos/Views/Components/Author/NIP05View.swift @@ -63,17 +63,33 @@ struct NIP05View: View { /// A view that displays the given parts of the NIP-05 in different colors. func nip05Text(parts: (username: String, domain: String)) -> some View { - if parts.username == "_" { - Text(parts.domain) - .foregroundStyle(Color.primaryTxt) - } else { - Text(parts.username) - .foregroundStyle(Color.primaryTxt) + - Text("@" + parts.domain) - .foregroundStyle(Color.secondaryTxt) - } + if parts.domain.hasSuffix(".mostr.pub") { + // Extract the first part of the domain (before .mostr.pub) + let domainPrefix = parts.domain.replacingOccurrences( + of: ".mostr.pub", + with: "" + ) + // Replace hyphens with dots + let formattedDomain = domainPrefix.replacingOccurrences( + of: "-", + with: "." + ) + + return Text("@" + parts.username) + .foregroundStyle(Color.primaryTxt) + + Text("@" + formattedDomain) + .foregroundStyle(Color.secondaryTxt) + } else if parts.username == "_" { + return Text(parts.domain) + .foregroundStyle(Color.secondaryTxt) + } else { + return Text(parts.username) + .foregroundStyle(Color.primaryTxt) + + Text("@" + parts.domain) + .foregroundStyle(Color.secondaryTxt) + } } - + /// A view that displays the given `nip05` as text with strikethrough. /// Useful for when a user's NIP-05 is invalid, such as when they enter a raw domain like "example.com" /// for their NIP-05 identifier. From b2351bdb9f391fab5a778d190ad5c0a624bd0efb Mon Sep 17 00:00:00 2001 From: rabble Date: Tue, 3 Dec 2024 23:50:39 +1300 Subject: [PATCH 3/7] making swiftlint happy with it's anal tab rules --- .../Author/AuthorObservationView.swift | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Nos/Views/Components/Author/AuthorObservationView.swift b/Nos/Views/Components/Author/AuthorObservationView.swift index 80d8afd44..2903f38dd 100644 --- a/Nos/Views/Components/Author/AuthorObservationView.swift +++ b/Nos/Views/Components/Author/AuthorObservationView.swift @@ -1,29 +1,29 @@ import SwiftUI -/// A view that observes changes to an `Author` with the given `RawAuthorID` and continually passes the newest version +/// A view that observes changes to an `Author` with the given `RawAuthorID` and continually passes the newest version /// to a child view. Useful for hosting views that just take an `Author` but want to observe changes to the author. struct AuthorObservationView: View { - - /// A view building function that will be given the latest version of the `Author`. - let contentBuilder: (Author) -> Content - - /// A fetch request that will trigger a view update when the `Author` changes. - @FetchRequest private var authors: FetchedResults - - init(authorID: RawAuthorID?, contentBuilder: @escaping (Author) -> Content) { - if let authorID { - _authors = FetchRequest(fetchRequest: Author.request(by: authorID)) - } else { - _authors = FetchRequest(fetchRequest: Author.emptyRequest()) - } - self.contentBuilder = contentBuilder - } - - var body: some View { - if let author = authors.first { - contentBuilder(author) - } else { - Text("error") - } - } + + /// A view building function that will be given the latest version of the `Author`. + let contentBuilder: (Author) -> Content + + /// A fetch request that will trigger a view update when the `Author` changes. + @FetchRequest private var authors: FetchedResults + + init(authorID: RawAuthorID?, contentBuilder: @escaping (Author) -> Content) { + if let authorID { + _authors = FetchRequest(fetchRequest: Author.request(by: authorID)) + } else { + _authors = FetchRequest(fetchRequest: Author.emptyRequest()) + } + self.contentBuilder = contentBuilder + } + + var body: some View { + if let author = authors.first { + contentBuilder(author) + } else { + Text("error") + } + } } From dbd2e4b125e3bbd48480deae0584c9537cda5072 Mon Sep 17 00:00:00 2001 From: rabble Date: Tue, 3 Dec 2024 23:59:39 +1300 Subject: [PATCH 4/7] making swiftlint happy with it's anal tab rules --- .../Author/AuthorObservationView.swift | 50 +++++++++---------- Nos/Views/Components/NosNavigationStack.swift | 50 +++++++++---------- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/Nos/Views/Components/Author/AuthorObservationView.swift b/Nos/Views/Components/Author/AuthorObservationView.swift index 2903f38dd..255802232 100644 --- a/Nos/Views/Components/Author/AuthorObservationView.swift +++ b/Nos/Views/Components/Author/AuthorObservationView.swift @@ -1,29 +1,29 @@ import SwiftUI -/// A view that observes changes to an `Author` with the given `RawAuthorID` and continually passes the newest version -/// to a child view. Useful for hosting views that just take an `Author` but want to observe changes to the author. + /// A view that observes changes to an `Author` with the given `RawAuthorID` and continually passes the newest version + /// to a child view. Useful for hosting views that just take an `Author` but want to observe changes to the author. struct AuthorObservationView: View { - - /// A view building function that will be given the latest version of the `Author`. - let contentBuilder: (Author) -> Content - - /// A fetch request that will trigger a view update when the `Author` changes. - @FetchRequest private var authors: FetchedResults - - init(authorID: RawAuthorID?, contentBuilder: @escaping (Author) -> Content) { - if let authorID { - _authors = FetchRequest(fetchRequest: Author.request(by: authorID)) - } else { - _authors = FetchRequest(fetchRequest: Author.emptyRequest()) - } - self.contentBuilder = contentBuilder - } - - var body: some View { - if let author = authors.first { - contentBuilder(author) - } else { - Text("error") - } - } + + /// A view building function that will be given the latest version of the `Author`. + let contentBuilder: (Author) -> Content + + /// A fetch request that will trigger a view update when the `Author` changes. + @FetchRequest private var authors: FetchedResults + + init(authorID: RawAuthorID?, contentBuilder: @escaping (Author) -> Content) { + if let authorID { + _authors = FetchRequest(fetchRequest: Author.request(by: authorID)) + } else { + _authors = FetchRequest(fetchRequest: Author.emptyRequest()) + } + self.contentBuilder = contentBuilder + } + + var body: some View { + if let author = authors.first { + contentBuilder(author) + } else { + Text("error") + } + } } diff --git a/Nos/Views/Components/NosNavigationStack.swift b/Nos/Views/Components/NosNavigationStack.swift index baf3c4082..68118f8b6 100644 --- a/Nos/Views/Components/NosNavigationStack.swift +++ b/Nos/Views/Components/NosNavigationStack.swift @@ -1,7 +1,7 @@ import SwiftUI -/// A `NavigationStack` that knows how to present views common to all the tabs like `Events` and `Authors`. -/// Take care not to nest these. + /// A `NavigationStack` that knows how to present views common to all the tabs like `Events` and `Authors`. + /// Take care not to nest these. struct NosNavigationStack: View { @Binding var path: NavigationPath @@ -13,33 +13,33 @@ struct NosNavigationStack: View { content() .navigationDestination(for: NosNavigationDestination.self, destination: { destination in switch destination { - case .note(let noteIdentifiable): - if case let .identifier(eventID) = noteIdentifiable { - EventObservationView(eventID: eventID) { event in - NoteView(note: event) + case .note(let noteIdentifiable): + if case let .identifier(eventID) = noteIdentifiable { + EventObservationView(eventID: eventID) { event in + NoteView(note: event) + } + } else if case let .replaceableIdentifier(replaceableEventID, author, kind) = noteIdentifiable { + EventObservationView( + replaceableEventID: replaceableEventID, + author: author, + kind: kind + ) { event in + NoteView(note: event) + } + } + case .author(let authorID): + AuthorObservationView(authorID: authorID) { author in + ProfileView(author: author) } - } else if case let .replaceableIdentifier(replaceableEventID, author, kind) = noteIdentifiable { - EventObservationView( - replaceableEventID: replaceableEventID, - author: author, - kind: kind - ) { event in - NoteView(note: event) + case .url(let url): + URLView(url: url) + case .replyTo(let eventID): + EventObservationView(eventID: eventID) { event in + NoteView(note: event, showKeyboard: true) } - } - case .author(let authorID): - AuthorObservationView(authorID: authorID) { author in - ProfileView(author: author) - } - case .url(let url): - URLView(url: url) - case .replyTo(let eventID): - EventObservationView(eventID: eventID) { event in - NoteView(note: event, showKeyboard: true) - } } }) - } + } } } From 54fd3472d9b686f7993c00ba6718379d76395cad Mon Sep 17 00:00:00 2001 From: Josh Brown Date: Wed, 4 Dec 2024 16:09:53 -0500 Subject: [PATCH 5/7] fix swiftlint issues; minor changelog update --- CHANGELOG.md | 2 +- .../Author/AuthorObservationView.swift | 8 +-- Nos/Views/Components/Author/NIP05View.swift | 50 +++++++++---------- Nos/Views/Components/NosNavigationStack.swift | 44 ++++++++-------- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e02c05ec..d15aef23f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] -- Fixing display of mastodon users names so it shows @username@server.instance rather than username@instance-name.mostr.pub ### Release Notes - Added support for user setting and displaying pronouns. - Added display of website urls for user profiles. - Updated note header UI to make it more readable. [#23](https://github.com/verse-pbc/issues/issues/23) +- Fixed display of mastodon usernames so it shows @username@server.instance rather than username@instance-name.mostr.pub - Fixed galleries expanding past the width of the screen when there are lots of links or images. [#24](https://github.com/verse-pbc/issues/issues/24) - Fix quoted note composer does not expand to fit mention. [#25](https://github.com/verse-pbc/issues/issues/25) diff --git a/Nos/Views/Components/Author/AuthorObservationView.swift b/Nos/Views/Components/Author/AuthorObservationView.swift index 255802232..80d8afd44 100644 --- a/Nos/Views/Components/Author/AuthorObservationView.swift +++ b/Nos/Views/Components/Author/AuthorObservationView.swift @@ -1,13 +1,13 @@ import SwiftUI - /// A view that observes changes to an `Author` with the given `RawAuthorID` and continually passes the newest version - /// to a child view. Useful for hosting views that just take an `Author` but want to observe changes to the author. +/// A view that observes changes to an `Author` with the given `RawAuthorID` and continually passes the newest version +/// to a child view. Useful for hosting views that just take an `Author` but want to observe changes to the author. struct AuthorObservationView: View { - /// A view building function that will be given the latest version of the `Author`. + /// A view building function that will be given the latest version of the `Author`. let contentBuilder: (Author) -> Content - /// A fetch request that will trigger a view update when the `Author` changes. + /// A fetch request that will trigger a view update when the `Author` changes. @FetchRequest private var authors: FetchedResults init(authorID: RawAuthorID?, contentBuilder: @escaping (Author) -> Content) { diff --git a/Nos/Views/Components/Author/NIP05View.swift b/Nos/Views/Components/Author/NIP05View.swift index 7ab534a1e..b9294e164 100644 --- a/Nos/Views/Components/Author/NIP05View.swift +++ b/Nos/Views/Components/Author/NIP05View.swift @@ -63,31 +63,31 @@ struct NIP05View: View { /// A view that displays the given parts of the NIP-05 in different colors. func nip05Text(parts: (username: String, domain: String)) -> some View { - if parts.domain.hasSuffix(".mostr.pub") { - // Extract the first part of the domain (before .mostr.pub) - let domainPrefix = parts.domain.replacingOccurrences( - of: ".mostr.pub", - with: "" - ) - // Replace hyphens with dots - let formattedDomain = domainPrefix.replacingOccurrences( - of: "-", - with: "." - ) - - return Text("@" + parts.username) - .foregroundStyle(Color.primaryTxt) + - Text("@" + formattedDomain) - .foregroundStyle(Color.secondaryTxt) - } else if parts.username == "_" { - return Text(parts.domain) - .foregroundStyle(Color.secondaryTxt) - } else { - return Text(parts.username) - .foregroundStyle(Color.primaryTxt) + - Text("@" + parts.domain) - .foregroundStyle(Color.secondaryTxt) - } + if parts.domain.hasSuffix(".mostr.pub") { + // Extract the first part of the domain (before .mostr.pub) + let domainPrefix = parts.domain.replacingOccurrences( + of: ".mostr.pub", + with: "" + ) + // Replace hyphens with dots + let formattedDomain = domainPrefix.replacingOccurrences( + of: "-", + with: "." + ) + + return Text("@" + parts.username) + .foregroundStyle(Color.primaryTxt) + + Text("@" + formattedDomain) + .foregroundStyle(Color.secondaryTxt) + } else if parts.username == "_" { + return Text(parts.domain) + .foregroundStyle(Color.secondaryTxt) + } else { + return Text(parts.username) + .foregroundStyle(Color.primaryTxt) + + Text("@" + parts.domain) + .foregroundStyle(Color.secondaryTxt) + } } /// A view that displays the given `nip05` as text with strikethrough. diff --git a/Nos/Views/Components/NosNavigationStack.swift b/Nos/Views/Components/NosNavigationStack.swift index 68118f8b6..4528196bb 100644 --- a/Nos/Views/Components/NosNavigationStack.swift +++ b/Nos/Views/Components/NosNavigationStack.swift @@ -13,30 +13,30 @@ struct NosNavigationStack: View { content() .navigationDestination(for: NosNavigationDestination.self, destination: { destination in switch destination { - case .note(let noteIdentifiable): - if case let .identifier(eventID) = noteIdentifiable { - EventObservationView(eventID: eventID) { event in - NoteView(note: event) - } - } else if case let .replaceableIdentifier(replaceableEventID, author, kind) = noteIdentifiable { - EventObservationView( - replaceableEventID: replaceableEventID, - author: author, - kind: kind - ) { event in - NoteView(note: event) - } - } - case .author(let authorID): - AuthorObservationView(authorID: authorID) { author in - ProfileView(author: author) - } - case .url(let url): - URLView(url: url) - case .replyTo(let eventID): + case .note(let noteIdentifiable): + if case let .identifier(eventID) = noteIdentifiable { EventObservationView(eventID: eventID) { event in - NoteView(note: event, showKeyboard: true) + NoteView(note: event) + } + } else if case let .replaceableIdentifier(replaceableEventID, author, kind) = noteIdentifiable { + EventObservationView( + replaceableEventID: replaceableEventID, + author: author, + kind: kind + ) { event in + NoteView(note: event) } + } + case .author(let authorID): + AuthorObservationView(authorID: authorID) { author in + ProfileView(author: author) + } + case .url(let url): + URLView(url: url) + case .replyTo(let eventID): + EventObservationView(eventID: eventID) { event in + NoteView(note: event, showKeyboard: true) + } } }) } From 5797655a57087acc4d7155310f32cc6f27d2ff24 Mon Sep 17 00:00:00 2001 From: Josh Brown Date: Wed, 4 Dec 2024 16:15:37 -0500 Subject: [PATCH 6/7] little formatting tweak --- Nos/Views/Components/NosNavigationStack.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Nos/Views/Components/NosNavigationStack.swift b/Nos/Views/Components/NosNavigationStack.swift index 4528196bb..0c975f87e 100644 --- a/Nos/Views/Components/NosNavigationStack.swift +++ b/Nos/Views/Components/NosNavigationStack.swift @@ -1,7 +1,7 @@ import SwiftUI - /// A `NavigationStack` that knows how to present views common to all the tabs like `Events` and `Authors`. - /// Take care not to nest these. +/// A `NavigationStack` that knows how to present views common to all the tabs like `Events` and `Authors`. +/// Take care not to nest these. struct NosNavigationStack: View { @Binding var path: NavigationPath From 5cfe14a1eb95ade725c5b65368bae2619c76f181 Mon Sep 17 00:00:00 2001 From: Josh Brown Date: Wed, 4 Dec 2024 17:08:08 -0500 Subject: [PATCH 7/7] move CHANGELOG entry to the right spot after the merge broke it --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1a5d7f67..5d52bd84c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,13 +10,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Release Notes +- Fixed display of mastodon usernames so it shows @username@server.instance rather than username@instance-name.mostr.pub + +### Internal Changes + ## [1.0.3] - 2024-12-04Z ### Release Notes - Added support for user setting and displaying pronouns. - Added display of website urls for user profiles. - Updated note header UI to make it more readable. [#23](https://github.com/verse-pbc/issues/issues/23) -- Fixed display of mastodon usernames so it shows @username@server.instance rather than username@instance-name.mostr.pub - Fixed galleries expanding past the width of the screen when there are lots of links or images. [#24](https://github.com/verse-pbc/issues/issues/24) - Fix quoted note composer does not expand to fit mention. [#25](https://github.com/verse-pbc/issues/issues/25)