diff --git a/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift b/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift
index 5c8733317..0553513e1 100644
--- a/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift
+++ b/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift
@@ -223,10 +223,10 @@ private extension CloudKitArticlesZone {
record[CloudKitArticle.Fields.title] = article.title
record[CloudKitArticle.Fields.contentHTML] = article.contentHTML
record[CloudKitArticle.Fields.contentText] = article.contentText
- record[CloudKitArticle.Fields.url] = article.url
- record[CloudKitArticle.Fields.externalURL] = article.externalURL
+ record[CloudKitArticle.Fields.url] = article.rawLink
+ record[CloudKitArticle.Fields.externalURL] = article.rawExternalLink
record[CloudKitArticle.Fields.summary] = article.summary
- record[CloudKitArticle.Fields.imageURL] = article.imageURL
+ record[CloudKitArticle.Fields.imageURL] = article.rawImageLink
record[CloudKitArticle.Fields.datePublished] = article.datePublished
record[CloudKitArticle.Fields.dateModified] = article.dateModified
diff --git a/Account/Sources/Account/Feed.swift b/Account/Sources/Account/Feed.swift
index 958b25106..23d842f0a 100644
--- a/Account/Sources/Account/Feed.swift
+++ b/Account/Sources/Account/Feed.swift
@@ -17,6 +17,7 @@ public enum ReadFilterType {
public protocol Feed: FeedIdentifiable, ArticleFetcher, DisplayNameProvider, UnreadCountProvider {
+ var account: Account? { get }
var defaultReadFilterType: ReadFilterType { get }
}
diff --git a/Account/Sources/Account/FeedIdentifier.swift b/Account/Sources/Account/FeedIdentifier.swift
index 842963e74..05d3d7f23 100644
--- a/Account/Sources/Account/FeedIdentifier.swift
+++ b/Account/Sources/Account/FeedIdentifier.swift
@@ -12,7 +12,7 @@ public protocol FeedIdentifiable {
var feedID: FeedIdentifier? { get }
}
-public enum FeedIdentifier: CustomStringConvertible, Hashable {
+public enum FeedIdentifier: CustomStringConvertible, Hashable, Equatable {
case smartFeed(String) // String is a unique identifier
case script(String) // String is a unique identifier
@@ -80,22 +80,4 @@ public enum FeedIdentifier: CustomStringConvertible, Hashable {
}
}
- // MARK: - Hashable
-
- public func hash(into hasher: inout Hasher) {
- switch self {
- case .smartFeed(let id):
- hasher.combine("smartFeed")
- hasher.combine(id)
- case .script(let id):
- hasher.combine("smartFeed")
- hasher.combine(id)
- case .webFeed(_, let webFeedID):
- hasher.combine("webFeed")
- hasher.combine(webFeedID)
- case .folder(_, let folderName):
- hasher.combine("folder")
- hasher.combine(folderName)
- }
- }
}
diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift
index 047b6a422..fa89f005c 100644
--- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift
+++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift
@@ -91,8 +91,8 @@ private extension TwitterStatus {
}
}
- let offsetStartIndex = entity.startIndex - unicodeScalarOffset
- let offsetEndIndex = entity.endIndex - unicodeScalarOffset
+ let offsetStartIndex = unicodeScalarOffset < entity.startIndex ? entity.startIndex - unicodeScalarOffset : entity.startIndex
+ let offsetEndIndex = unicodeScalarOffset < entity.endIndex ? entity.endIndex - unicodeScalarOffset : entity.endIndex
let entityStartIndex = text.index(text.startIndex, offsetBy: offsetStartIndex, limitedBy: text.endIndex) ?? text.startIndex
let entityEndIndex = text.index(text.startIndex, offsetBy: offsetEndIndex, limitedBy: text.endIndex) ?? text.endIndex
@@ -115,7 +115,7 @@ private extension TwitterStatus {
}
if prevIndex < displayEndIndex {
- html += String(text[prevIndex..
Preferences: use full-width row style in accounts and extensions panes
+Fixed a crashing bug triggered by running some UI code outside of main thread
+Fixed a crashing bug that could happen when the app tries to find a feed for a website
+Fixed a crashing bug that could happen when rendering tweets
+Changed how images are placed in Twitter articles so that you can better see who Tweeted the image
+Fixed bug where iCloud syncing could stop prematurely when the sync database has records not in the local database
+Fixed bug where favicons wouldn’t be found when a home page URL has non-ASCII characters
+Fixed bug where external URLs in Feedbin feeds might be lost
+Fixed bug where words prepended with $ wouldn’t appear in Twitter feeds
+Fixed bug where newlines would be just a space in Twitter feeds
+Fixed bug where BazQux-synced feeds might stop updating
+ ]]>Feedly: handle API change with deleting and don’t show a spurious error
+NewsBlur: don’t fetch articles marked hidden by NewsBlur
+FreshRSS: add API endpoint URL example in setup form
+iCloud: fixed bug not retaining feeds in a folder where the folder hasn’t been synced yet
+iCloud: fixed bug where iCloud syncing could stop prematurely when the sync database has records not in the local database
+BazQux: fixed bug where BazQux-synced feeds might stop updating
+Feedbin: fixed bug where external URLs in Feedbin feeds might be lost
+Twitter extension: fixed weird bug where an extra https:/ could appear in tweet text
+Preferences: use full-width row style in accounts and extensions panes
+Fixed a crashing bug triggered by running some UI code outside of main thread
+Fixed a crashing bug that could happen when the app tries to find a feed for a website
+Fixed a crashing bug that could happen when rendering tweets
+Changed how images are placed in Twitter articles so that you can better see who Tweeted the image
+Fixed bug where favicons wouldn’t be found when a home page URL has non-ASCII characters
+Fixed bug where words prepended with $ wouldn’t appear in Twitter feeds
+Fixed bug where newlines would be just a space in Twitter feeds
+Feeds list: smart feeds remain visible despite Hide Read Feeds setting
+Keyboard shortcuts: fixed regression where L key wouldn’t go to next unread when feed is all read
+ ]]>