From da915488755bc960b9de27f94149b64e212ebbca Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 5 Feb 2023 09:40:41 +0800 Subject: [PATCH 01/13] Shows Twitter deprecation alert on macOS --- Mac/AppDefaults.swift | 11 +++++++++++ Mac/AppDelegate.swift | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/Mac/AppDefaults.swift b/Mac/AppDefaults.swift index df9b7c618..c169c76a9 100644 --- a/Mac/AppDefaults.swift +++ b/Mac/AppDefaults.swift @@ -42,6 +42,7 @@ final class AppDefaults { static let exportOPMLAccountID = "exportOPMLAccountID" static let defaultBrowserID = "defaultBrowserID" static let currentThemeName = "currentThemeName" + static let twitterDeprecationAlertShown = "twitterDeprecationAlertShown" // Hidden prefs static let showDebugMenu = "ShowDebugMenu" @@ -308,6 +309,16 @@ final class AppDefaults { UserDefaults.standard.set(newValue.rawValue, forKey: Key.refreshInterval) } } + + var twitterDeprecationAlertShown: Bool { + get { + return AppDefaults.bool(for: Key.twitterDeprecationAlertShown) + } + set { + AppDefaults.setBool(for: Key.twitterDeprecationAlertShown, newValue) + } + } + func registerDefaults() { #if DEBUG diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index b3a278556..c355555b3 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -132,6 +132,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(didWakeNotification(_:)), name: NSWorkspace.didWakeNotification, object: nil) appDelegate = self + + presentTwitterDeprecationAlertIfRequired() } // MARK: - API @@ -952,6 +954,46 @@ internal extension AppDelegate { } } + private func presentTwitterDeprecationAlertIfRequired() { + if AppDefaults.shared.twitterDeprecationAlertShown { return } + + let expiryDate = Date(timeIntervalSince1970: 1691539200).timeIntervalSince1970 // August 9th 2023, 00:00 UTC + let currentDate = Date().timeIntervalSince1970 + if currentDate > expiryDate { + return // If after August 9th, don't show + } + + var twitterIsActive: Bool = false + AccountManager.shared.accounts.forEach({ account in + account.flattenedWebFeeds().forEach({ webfeed in + guard let components = URLComponents(string: webfeed.url), + let host = components.host else { + return + } + if host == "twitter.com" { + twitterIsActive = true + return + } + }) + }) + if twitterIsActive { + showTwitterDeprecationAlert() + } + AppDefaults.shared.twitterDeprecationAlertShown = true + } + + private func showTwitterDeprecationAlert() { + DispatchQueue.main.async { + let alert = NSAlert() + alert.alertStyle = .warning + alert.messageText = NSLocalizedString("Twitter Integration Removed", comment: "Twitter Integration Removed") + alert.informativeText = NSLocalizedString("On February 1, 2023, Twitter announced the end of free access to the Twitter API, effective February 9.\n\nSince Twitter does not provide RSS feeds, we’ve had to use the Twitter API. Without free access to that API, we can’t read feeds from Twitter.\n\nWe’ve left your Twitter feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded. However, those feeds will no longer update.", comment: "Twitter deprecation informative text.") + alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) + alert.buttons[0].keyEquivalent = "\r" + alert.runModal() + } + } + @objc func openThemesFolder(_ sender: Any) { if themeImportPath == nil { let url = URL(fileURLWithPath: ArticleThemesManager.shared.folderPath) From b83345a47f8a21db97b5c254fd47adf8424dfef8 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 5 Feb 2023 21:30:44 +0800 Subject: [PATCH 02/13] Adds account type check for Twitter deprecation alert --- Mac/AppDelegate.swift | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index c355555b3..e337d1a29 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -965,16 +965,18 @@ internal extension AppDelegate { var twitterIsActive: Bool = false AccountManager.shared.accounts.forEach({ account in - account.flattenedWebFeeds().forEach({ webfeed in - guard let components = URLComponents(string: webfeed.url), - let host = components.host else { - return - } - if host == "twitter.com" { - twitterIsActive = true - return - } - }) + if account.type == .cloudKit || account.type == .onMyMac { + account.flattenedWebFeeds().forEach({ webfeed in + guard let components = URLComponents(string: webfeed.url), + let host = components.host else { + return + } + if host == "twitter.com" { + twitterIsActive = true + return + } + }) + } }) if twitterIsActive { showTwitterDeprecationAlert() From e7ae7887e30b1f6b37d6224c7ab1802d3016f102 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 5 Feb 2023 20:17:31 -0800 Subject: [PATCH 03/13] Add and use anyLocalOriCloudAccountHasAtLeastOneTwitterFeed in AccountManager. Simplify date comparison code. --- Account/Sources/Account/AccountManager.swift | 20 +++++++++++++++++ Mac/AppDelegate.swift | 23 ++++---------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Account/Sources/Account/AccountManager.swift b/Account/Sources/Account/AccountManager.swift index 24ff0a764..ad588f955 100644 --- a/Account/Sources/Account/AccountManager.swift +++ b/Account/Sources/Account/AccountManager.swift @@ -351,6 +351,26 @@ public final class AccountManager: UnreadCountProvider { return false } + public func anyLocalOriCloudAccountHasAtLeastOneTwitterFeed() -> Bool { + // We removed our Twitter code, and the ability to read feeds from Twitter, + // when Twitter announced the end of the free tier for the Twitter API. + // We are cheering on Twitter’s increasing irrelevancy. + + for account in accounts { + if account.type == .cloudKit || account.type == .onMyMac { + for webfeed in account.flattenedWebFeeds() { + if let components = URLComponents(string: webfeed.url), let host = components.host { + if host == "twitter.com" { // Allow, for instance, blog.twitter.com, which might have an actual RSS feed + return true + } + } + } + } + } + + return false + } + // MARK: - Fetching Articles // These fetch articles from active accounts and return a merged Set
. diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index e337d1a29..f080f72d3 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -957,28 +957,13 @@ internal extension AppDelegate { private func presentTwitterDeprecationAlertIfRequired() { if AppDefaults.shared.twitterDeprecationAlertShown { return } - let expiryDate = Date(timeIntervalSince1970: 1691539200).timeIntervalSince1970 // August 9th 2023, 00:00 UTC - let currentDate = Date().timeIntervalSince1970 + let expiryDate = Date(timeIntervalSince1970: 1691539200) // August 9th 2023, 00:00 UTC + let currentDate = Date() if currentDate > expiryDate { return // If after August 9th, don't show } - - var twitterIsActive: Bool = false - AccountManager.shared.accounts.forEach({ account in - if account.type == .cloudKit || account.type == .onMyMac { - account.flattenedWebFeeds().forEach({ webfeed in - guard let components = URLComponents(string: webfeed.url), - let host = components.host else { - return - } - if host == "twitter.com" { - twitterIsActive = true - return - } - }) - } - }) - if twitterIsActive { + + if AccountManager.shared.anyLocalOriCloudAccountHasAtLeastOneTwitterFeed() { showTwitterDeprecationAlert() } AppDefaults.shared.twitterDeprecationAlertShown = true From 3168c9c935ad7517dc7ba638c0b4efe04b66ec25 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 5 Feb 2023 20:20:51 -0800 Subject: [PATCH 04/13] Update release notes and version. --- Technotes/ReleaseNotes-Mac.markdown | 5 +++++ xcconfig/common/NetNewsWire_mac_target_common.xcconfig | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Technotes/ReleaseNotes-Mac.markdown b/Technotes/ReleaseNotes-Mac.markdown index 92b5c1f5b..2478a4287 100644 --- a/Technotes/ReleaseNotes-Mac.markdown +++ b/Technotes/ReleaseNotes-Mac.markdown @@ -1,5 +1,10 @@ # Mac Release Notes +### 6.1.1b2 build 6108 5 Feb 2023 + +Remove Twitter integration. On first launch, for people with Twitter feeds, display an alert explaining what happened +Fix a crashing bug that could happen in the sidebar + ### 6.1.1b1 build 6107 3 Nov 2022 Fixed a bug that could prevent users from accessing BazQux if an article was missing a field diff --git a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig index e26e42d17..f74251ac2 100644 --- a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig @@ -1,6 +1,6 @@ // High Level Settings common to both the Mac application and any extensions we bundle with it -MARKETING_VERSION = 6.1.1b1 -CURRENT_PROJECT_VERSION = 6107 +MARKETING_VERSION = 6.1.1b2 +CURRENT_PROJECT_VERSION = 6108 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; From 86966b29ec1e81e7671790872dfa98074f94461d Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Thu, 9 Feb 2023 21:46:46 -0800 Subject: [PATCH 05/13] =?UTF-8?q?Update=20Safari=20extension=20icon=20?= =?UTF-8?q?=E2=80=94=C2=A0new=20icon=20by=20Louie=20Mantia.=20Update=20rel?= =?UTF-8?q?ease=20notes=20and=20build.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Mac/SafariExtension/ToolbarItemIcon.pdf | Bin 4079 -> 4239 bytes Mac/SafariExtension/ToolbarItemIcon.sketch | Bin 31857 -> 0 bytes Technotes/ReleaseNotes-Mac.markdown | 5 +++++ .../NetNewsWire_mac_target_common.xcconfig | 4 ++-- 4 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 Mac/SafariExtension/ToolbarItemIcon.sketch diff --git a/Mac/SafariExtension/ToolbarItemIcon.pdf b/Mac/SafariExtension/ToolbarItemIcon.pdf index 07eb6c7434bd40d94bc98e964319e6829d099607..07ad82090ff29d5246e443aa38b97e34e2bc1731 100644 GIT binary patch delta 1365 zcmah}e@qi+7~c4`?Vvi1$Y3x&=J?UbxbMEZYs)NEDag8tK+8Y}9Xr~q9KxMzudXn+ zYBVC5L8TfNqh=8`;~xjO2rLU3gbAU`+<=+Pjg2@HHa5jNg9eOJKMY}vltC10NJ zdEfVY-{-lTO+K1(Y%M_p2&C#-La#rbwbn;&<;9(H4PX!h3b5gidSd$w6>@|3$VeHJ=q5Banw;wz(CC?dq zdd96e->n+o@yorIp+B2XP2FofAG@(}B(q}riSpII?$}*W>!YKZXUw%@1^vUtzNXW! zs0O)HBU8@}_jb1RA3V@in%H4dMb^LBRn>eZZfYTZvlNIMTCiV1go)Aal(@&>` ze-J%DZ4kFc+AhVeIMV%kyYaw8W_k3*bG>7612+t%aAxvkr89TWXp{fxgN`39ciLW! zSd+h=I``$1W7lLMylm9eN0)SWX+HCrRr@E=GtQdd%haf0!@lvU+^6Wv1FhuO{QmUM z8>+sT|E=W3yPEBL`f3v{-OBD;ceVbaKE`V}HWa}ew%`8nn{Dqke&vsHwi|w0HK%@~ zt-td|cg)Sblqan%?RoNMOJd5*Tao2WyB4+&4DS7Sl^L7ev9Bm$C7GzrwB{=fhyJp$YRdLi!wl1ZwnwTyj$|P?7SN=i-1uQ zWqj@iiXkwekaq}NuH*$35Cb%1l-EX(7D?u09z)n3OBEP@Oc;ED4aOM^fXw&G1=b)- zuLop-n*ti;j4&8l!{XMLHtgm@Ib>0BA)rFiX)$@xk^Y@wNzqG=L>dYm&sul+LYR>V z)>0@HfHWD6xtyDK042-Ia79f4B?21&MhQ_l~R>&En!>)J~gIe^D98jypu6vY6 zYv8|NY)B0}BB73V;XfB3t%9$S2NcA{mLwVA3W|qKqEiBjg33M*tFF(sBb|<+t09+d scW5cZFd7JT(1{op=@46OApV~MY|7l+GFCD;HCm^miPXr{{Gu(yU!7>hrvLx| delta 1172 zcmeBId@nyiOu|ILKp{UVi_6AFLEk4eFTEr~!4xPIG*LlpvM)1leb8C2BMvmUr4|An)lCz=cu*ttuOdrkQkwt&3tg_ zm8rk_TymziPczn?XLa{VRIlB7O|8JM9nJ1@j~E~G>vGmwEo&`*L#rp)anIHoCjI|gZP$LOGrg|5Y=ZP{QTJYV z)klGCrK^|xQfAALLcnHL_4J zGqQ+P(09%+%_~tbRM7X%Oet1~RxpC7Mskdy!DJCWg?fmu5NhJ7yNy|@MXI@_xru3NQetwd zd18`87{@82#WdH#Rdf;!;(0^>^a}0Ef12 AG5`Po diff --git a/Mac/SafariExtension/ToolbarItemIcon.sketch b/Mac/SafariExtension/ToolbarItemIcon.sketch deleted file mode 100644 index aff4b6832f5cab7db9ecf3e134c1bd7c2d8cf7f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31857 zcmeFZ^;=b2_%8~}C9XwCOT$81x&=WO(j68^OG&4s!~zKc0ck}_Ktw_$Bn1p4RHURq zK%}J@rieC1MMSdIwBMih6wp*GDy@(l$eOf z8%0D!0l&9(x4GeJ=jJ2g?djB>rQ`8N^(0hty7n5 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%0AX?5y>D+vPKbQ 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 bzW@6}A Date: Thu, 9 Feb 2023 21:51:58 -0800 Subject: [PATCH 06/13] =?UTF-8?q?Update=20the=20Twitter=20removal=20warnin?= =?UTF-8?q?g=20to=20say=20=E2=80=9Clater=20in=20February=E2=80=9D=20instea?= =?UTF-8?q?d=20of=20=E2=80=9CFebruary=209,=E2=80=9D=20since=20Twitter=20po?= =?UTF-8?q?stponed=20the=20removal=20date=20to=20the=2013th,=20and=20might?= =?UTF-8?q?=20do=20so=20again.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Mac/AppDelegate.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index f080f72d3..b3740902e 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -974,7 +974,7 @@ internal extension AppDelegate { let alert = NSAlert() alert.alertStyle = .warning alert.messageText = NSLocalizedString("Twitter Integration Removed", comment: "Twitter Integration Removed") - alert.informativeText = NSLocalizedString("On February 1, 2023, Twitter announced the end of free access to the Twitter API, effective February 9.\n\nSince Twitter does not provide RSS feeds, we’ve had to use the Twitter API. Without free access to that API, we can’t read feeds from Twitter.\n\nWe’ve left your Twitter feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded. However, those feeds will no longer update.", comment: "Twitter deprecation informative text.") + alert.informativeText = NSLocalizedString("On February 1, 2023, Twitter announced the end of free access to the Twitter API, effective later in February.\n\nSince Twitter does not provide RSS feeds, we’ve had to use the Twitter API. Without free access to that API, we can’t read feeds from Twitter.\n\nWe’ve left your Twitter feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded. However, those feeds will no longer update.", comment: "Twitter deprecation informative text.") alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) alert.buttons[0].keyEquivalent = "\r" alert.runModal() From f112b08acb9f8c98b417e5b4a71cca529b3ae2a5 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Thu, 9 Feb 2023 21:52:08 -0800 Subject: [PATCH 07/13] Update version and build number. --- xcconfig/common/NetNewsWire_mac_target_common.xcconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig index e8833468f..ebdacccb9 100644 --- a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig @@ -1,6 +1,6 @@ // High Level Settings common to both the Mac application and any extensions we bundle with it -MARKETING_VERSION = 6.1.1b3 -CURRENT_PROJECT_VERSION = 6109 +MARKETING_VERSION = 6.1.1b4 +CURRENT_PROJECT_VERSION = 6110 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; From c848f5ef3c4c71f78371e939f775e5d11dee20f3 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Thu, 9 Feb 2023 22:02:59 -0800 Subject: [PATCH 08/13] Write release notes for 6.1.1b4. --- Technotes/ReleaseNotes-Mac.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Technotes/ReleaseNotes-Mac.markdown b/Technotes/ReleaseNotes-Mac.markdown index f486317c2..30b310de4 100644 --- a/Technotes/ReleaseNotes-Mac.markdown +++ b/Technotes/ReleaseNotes-Mac.markdown @@ -1,5 +1,9 @@ # Mac Release Notes +### 6.1.1b4 build 6110 9 Feb 2023 + +Update the Twitter removal warning to say “later in February” instead of “February 9,” since Twitter postponed the removal date to the 13th and might postpone it further. + ### 6.1.1b3 build 6109 6 Feb 2023 Update Safari extension icon (credit to Louie Mantia for the new icon) From 0ba9a06b92eccba973d9a5b962550a862cdbe73e Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Mon, 13 Mar 2023 21:44:32 -0700 Subject: [PATCH 09/13] Update Twitter notice to not specify any dates. Bump version and build. --- Mac/AppDelegate.swift | 2 +- Technotes/ReleaseNotes-Mac.markdown | 8 ++++++++ xcconfig/common/NetNewsWire_mac_target_common.xcconfig | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index b3740902e..d94bb544b 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -974,7 +974,7 @@ internal extension AppDelegate { let alert = NSAlert() alert.alertStyle = .warning alert.messageText = NSLocalizedString("Twitter Integration Removed", comment: "Twitter Integration Removed") - alert.informativeText = NSLocalizedString("On February 1, 2023, Twitter announced the end of free access to the Twitter API, effective later in February.\n\nSince Twitter does not provide RSS feeds, we’ve had to use the Twitter API. Without free access to that API, we can’t read feeds from Twitter.\n\nWe’ve left your Twitter feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded. However, those feeds will no longer update.", comment: "Twitter deprecation informative text.") + alert.informativeText = NSLocalizedString("Twitter has ended free access to the parts of the Twitter API that we need.\n\nSince Twitter does not provide RSS feeds, we’ve had to use the Twitter API. Without free access to that API, we can’t read feeds from Twitter.\n\nWe’ve left your Twitter feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded. However, those feeds will no longer update.", comment: "Twitter deprecation informative text.") alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) alert.buttons[0].keyEquivalent = "\r" alert.runModal() diff --git a/Technotes/ReleaseNotes-Mac.markdown b/Technotes/ReleaseNotes-Mac.markdown index 30b310de4..a02693092 100644 --- a/Technotes/ReleaseNotes-Mac.markdown +++ b/Technotes/ReleaseNotes-Mac.markdown @@ -1,5 +1,13 @@ # Mac Release Notes +## 6.1.1 build 6112 13 Mar 2023 + +Revised Twitter removal warning to not mention any specific month. We’re holding this release until Twitter shuts down free access to its API. + +## 6.1.1 build 6111 9 Feb 2023 + +Same as 6.1.1b4 but with updated build and version number. + ### 6.1.1b4 build 6110 9 Feb 2023 Update the Twitter removal warning to say “later in February” instead of “February 9,” since Twitter postponed the removal date to the 13th and might postpone it further. diff --git a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig index ebdacccb9..73248e143 100644 --- a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig @@ -1,6 +1,6 @@ // High Level Settings common to both the Mac application and any extensions we bundle with it -MARKETING_VERSION = 6.1.1b4 -CURRENT_PROJECT_VERSION = 6110 +MARKETING_VERSION = 6.1.1 +CURRENT_PROJECT_VERSION = 6112 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; From 82cb561fc7bb21d535a272bbfdf0575de4b0a5b1 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Mon, 13 Mar 2023 21:47:10 -0700 Subject: [PATCH 10/13] Update copyright for 2023. --- Mac/Resources/Info.plist | 2 +- iOS/Settings/AboutViewController.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Mac/Resources/Info.plist b/Mac/Resources/Info.plist index aeafbb93b..fea09b40e 100644 --- a/Mac/Resources/Info.plist +++ b/Mac/Resources/Info.plist @@ -60,7 +60,7 @@ NSAppleScriptEnabled NSHumanReadableCopyright - Copyright © 2002-2022 Brent Simmons. All rights reserved. + Copyright © 2002-2023 Brent Simmons. All rights reserved. NSMainStoryboardFile Main NSPrincipalClass diff --git a/iOS/Settings/AboutViewController.swift b/iOS/Settings/AboutViewController.swift index bd7e76e16..d072aafca 100644 --- a/iOS/Settings/AboutViewController.swift +++ b/iOS/Settings/AboutViewController.swift @@ -28,7 +28,7 @@ class AboutViewController: UITableViewController { let buildLabel = NonIntrinsicLabel(frame: CGRect(x: 32.0, y: 0.0, width: 0.0, height: 0.0)) buildLabel.font = UIFont.systemFont(ofSize: 11.0) buildLabel.textColor = UIColor.gray - buildLabel.text = NSLocalizedString("Copyright © 2002-2022 Brent Simmons", comment: "Copyright") + buildLabel.text = NSLocalizedString("Copyright © 2002-2023 Brent Simmons", comment: "Copyright") buildLabel.numberOfLines = 0 buildLabel.sizeToFit() buildLabel.translatesAutoresizingMaskIntoConstraints = false From 86294c32e6a018666c6a32c5e9afb2c571416be5 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 8 Apr 2023 10:00:12 -0700 Subject: [PATCH 11/13] =?UTF-8?q?Update=20feeds=20to=20remove=20feeds=20th?= =?UTF-8?q?at=20=E2=80=94=20sadly!=20=E2=80=94=20appear=20to=20be=20inacti?= =?UTF-8?q?ve.=20Add=20Allen=20Pike=E2=80=99s=20feed.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared/Importers/DefaultFeeds.opml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/Shared/Importers/DefaultFeeds.opml b/Shared/Importers/DefaultFeeds.opml index 7c1c6efac..684697f54 100644 --- a/Shared/Importers/DefaultFeeds.opml +++ b/Shared/Importers/DefaultFeeds.opml @@ -4,21 +4,19 @@ Default Feeds - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + From e03d5b85fd909fd03f534515791536f7a8674ca9 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 8 Apr 2023 10:00:30 -0700 Subject: [PATCH 12/13] Update build number. Write release notes. --- Technotes/ReleaseNotes-Mac.markdown | 4 ++++ xcconfig/common/NetNewsWire_mac_target_common.xcconfig | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Technotes/ReleaseNotes-Mac.markdown b/Technotes/ReleaseNotes-Mac.markdown index a02693092..8629fbfad 100644 --- a/Technotes/ReleaseNotes-Mac.markdown +++ b/Technotes/ReleaseNotes-Mac.markdown @@ -1,5 +1,9 @@ # Mac Release Notes +## 6.1.1 build 6113 7 Apr 2023 + +Update default feeds to remove feeds that don’t appear to be active anymore (sadly!). + ## 6.1.1 build 6112 13 Mar 2023 Revised Twitter removal warning to not mention any specific month. We’re holding this release until Twitter shuts down free access to its API. diff --git a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig index 73248e143..746e43bc8 100644 --- a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig @@ -1,6 +1,6 @@ // High Level Settings common to both the Mac application and any extensions we bundle with it MARKETING_VERSION = 6.1.1 -CURRENT_PROJECT_VERSION = 6112 +CURRENT_PROJECT_VERSION = 6113 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; From 0e1ae52a32cf29736408b8234dac68960645ecd4 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 8 Apr 2023 10:02:33 -0700 Subject: [PATCH 13/13] Bump version and build to 6.1.2 and 6114 to avoid confusion with previous GitHub-only release of 6.1.1. --- Technotes/ReleaseNotes-Mac.markdown | 2 +- xcconfig/common/NetNewsWire_mac_target_common.xcconfig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Technotes/ReleaseNotes-Mac.markdown b/Technotes/ReleaseNotes-Mac.markdown index 8629fbfad..b9d8ad230 100644 --- a/Technotes/ReleaseNotes-Mac.markdown +++ b/Technotes/ReleaseNotes-Mac.markdown @@ -1,6 +1,6 @@ # Mac Release Notes -## 6.1.1 build 6113 7 Apr 2023 +## 6.1.2 build 6114 8 Apr 2023 Update default feeds to remove feeds that don’t appear to be active anymore (sadly!). diff --git a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig index 746e43bc8..8869df359 100644 --- a/xcconfig/common/NetNewsWire_mac_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_mac_target_common.xcconfig @@ -1,6 +1,6 @@ // High Level Settings common to both the Mac application and any extensions we bundle with it -MARKETING_VERSION = 6.1.1 -CURRENT_PROJECT_VERSION = 6113 +MARKETING_VERSION = 6.1.2 +CURRENT_PROJECT_VERSION = 6114 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;