Brent Simmons
9b05c7185e
Remove unneeded self.
2019-03-03 12:05:34 -08:00
Brent Simmons
a9751d5a51
Get searchRowID by column index 0, since it’s a single-column query. This should make searching imperceptibly faster.
2019-03-03 12:02:26 -08:00
Brent Simmons
e04250f1b3
Use DatabaseDictionary instead of NSDictionary. Work around a Swift memory leak with NSDictionary.
2019-03-02 16:17:06 -08:00
Brent Simmons
1950b0ab47
Remove extra resultSet.close().
2019-02-25 21:01:20 -08:00
Brent Simmons
0a45dda375
Create SearchFeedDelegate. Make searching synchronous, since it’s fast enough.
2019-02-24 19:22:16 -08:00
Brent Simmons
b957753f5c
Revise fetchArticlesMatching function to use FTS.
2019-02-24 18:37:13 -08:00
Brent Simmons
e9c76e8ac0
Index articles using SQLite FTS.
2019-02-24 15:34:10 -08:00
Brent Simmons
44edbc7b09
Add search index to database. Move create-table statements into ArticlesDatabase since we can do big strings.
2019-02-22 22:17:05 -08:00
Brent Simmons
efe8a4ab15
Implement search — fetch articles matching a search string from the database.
2019-02-18 22:29:43 -08:00
Daniel Jalkut
ddb0ee21b6
Quiet warnings/errors from Xcode 10.2 about redundant public attributes on methods implemented inside public extensions.
2019-02-12 10:05:51 -05:00
Brent Simmons
8a5428c1cf
Discard future dates. Fix #538 .
2019-02-08 21:54:45 -08:00
Brent Simmons
1466f7e919
Fix bug getting unread count for the Today smart feed — it would skip articles with no pubDate, but that did arrive today (and thus should be considered as part of Today).
2019-02-08 21:05:55 -08:00
Brent Simmons
7f82f9d607
Fix a bug where articles with changed dates wouldn’t update in the database. Make the code a bit more clear, too.
2019-02-08 20:41:46 -08:00
Brent Simmons
6f41b2a728
Queue saving to disk, in Account, even during refresh.
2019-02-07 21:29:05 -08:00
Brent Simmons
eb3c69f4d0
Don’t write "Untitled" to Subscriptions.opml when a feed lacks a name or editedName — “Untitled” is a localizable, display-only string, not something to store in OPML. Fix #527 .
2019-02-06 21:18:22 -08:00
Brent Simmons
aadf4ec09f
Don’t set feed.editedName when importing OPML in Account.
2019-02-06 21:17:17 -08:00
Brent Simmons
ddccbdf610
Add addFeed and addFeeds to the Container protocol. This was confusing before. Now you can add directly to a Folder or Account.
2019-02-05 21:48:32 -08:00
Brent Simmons
448293a836
Set feed.title from the OPML — don’t just leave it blank.
2019-02-02 18:08:01 -08:00
Brent Simmons
30324c8ec0
Make sure that feed.editedName is never "". Treat it as nil.
2019-02-02 17:46:15 -08:00
Brent Simmons
a8ec3b9d58
Switch skip-install to Yes for Articles.framework.
2019-01-28 20:44:09 -08:00
Brent Simmons
f5d6e7e8fa
Fix bug where empty folders would be lost between runs of the app.
2019-01-27 21:42:58 -08:00
Brent Simmons
142774f5ae
Use hash(into…) instead of a hashValue instance variable.
2018-12-27 21:07:34 -08:00
Brent Simmons
b900cbc0b7
Make Feed and Folder conform to Renewable.
2018-11-22 13:57:49 -08:00
Brent Simmons
485bde7ff2
Complete (probably) work on Feedbin sync data types.
2018-10-14 18:38:33 -07:00
Brent Simmons
cd6e6daf31
Continue work on Feedbin sync data types.
2018-10-14 18:10:07 -07:00
Brent Simmons
d69058c10c
Fix a couple first-run startup bugs.
2018-09-26 22:05:35 -07:00
Brent Simmons
33fe733a8e
Redo the database indexes, after some trial and error, to get some significant speed boosts in fetching articles and unread counts.
2018-09-25 22:48:47 -07:00
Brent Simmons
7026eae899
Skip writing OPML file to disk during startup. Structure-changed notices happen during startup as the object graph is created, but it doesn’t mean that there’s a change that requires saving to disk.
2018-09-16 20:02:24 -07:00
Brent Simmons
1c3dca4d9b
Update unreadCount for an Account only when one of its feeds changes its unreadCount.
2018-09-16 19:07:07 -07:00
Brent Simmons
a914b3949b
Made launch performance *much* faster for large (thousands of feeds) subscriptions list. Also: split container.children in container.topLevelFeeds and container.folders. This simplifies a bunch of things, and makes some things faster.
2018-09-16 17:54:42 -07:00
Brent Simmons
6b6d393b3d
Delete some dead code.
2018-09-16 13:08:44 -07:00
Brent Simmons
3d45231494
Stop using urlToFeedDictionary. Feeds don’t have to be uniqued.
2018-09-16 13:04:42 -07:00
Brent Simmons
f8d6cb48dc
Remove instance where Feed equality was expected to be pointer equality, which is no longer true.
2018-09-16 12:46:50 -07:00
Brent Simmons
4010b4cb2a
On startup, import from AccountData.plist one last time, then rename it to AccountData-old.plist. On subsequent startups, import using Subscriptions.opml.
2018-09-16 12:42:46 -07:00
Brent Simmons
823d83c942
Write to disk on display-name-change only if it’s a Folder, since Feed names are stored in ODB.
2018-09-15 12:08:57 -07:00
Brent Simmons
d0df791b93
Skip writing to disk when feed setting changes, since we’re writing OPML now and storing feed settings in ODB.
2018-09-15 12:06:19 -07:00
Brent Simmons
abd8fb2236
Store feed.name and feed.editedName in ODB.
2018-09-15 11:45:01 -07:00
Brent Simmons
ce1fe6ed1f
Store feed.editedName in ODB.
2018-09-15 11:39:33 -07:00
Brent Simmons
0f59b904ef
Store feed.authors in ODB. Make Author Codable.
2018-09-15 11:16:05 -07:00
Brent Simmons
904feb9950
Store feed.homePageURL in ODB.
2018-09-14 22:23:30 -07:00
Brent Simmons
fb9590de98
Make feedID and accountID the things that determine hashing and equality for a Feed.
2018-09-14 22:15:22 -07:00
Brent Simmons
47cf018143
Store feed.unreadCount with the Account rather than the feed. This is part of making it so that feeds no longer have to be uniqued.
2018-09-14 22:06:03 -07:00
Brent Simmons
28d084e246
Store iconURL and faviconURL in ODB.
2018-09-14 21:51:05 -07:00
Brent Simmons
6d2bb123e3
Save conditional GET info in ODB.
2018-09-14 19:33:47 -07:00
Brent Simmons
3f1f4fd24c
Write Subscriptions.opml to disk.
2018-09-14 13:25:38 -07:00
Brent Simmons
b8546d8e8b
Don't store account.unreadCount in Settings.odb. Don’t rewrite AccountData.plist when feed.contentHash changes.
2018-09-14 13:12:55 -07:00
Brent Simmons
13fbad12a5
Store feed.contentHash in Settings.odb.
2018-09-13 22:52:34 -07:00
Brent Simmons
679e6f6c0b
Give Feed a weak account rather than accountID.
2018-09-13 22:37:40 -07:00
Brent Simmons
b5b42b8df6
Stop storing unreadCount for Feed and Folder objects on disk, since they’re fast to fetch at startup. Also, give Feed an ODBRawValueTable for metadata storage.
2018-09-13 22:25:10 -07:00
Brent Simmons
b7e9fbf2a6
Stop saving account’s unread count to disk — no need. It gets calculated at startup plenty fast enough.
2018-09-13 21:25:35 -07:00
Brent Simmons
4bc6c7d5db
Start using ODB code with Account. Store the unread count in the settings database.
2018-09-12 22:28:21 -07:00
Brent Simmons
25ff76e1e5
Fix a performance bug when fetching all unread articles. When validating unread counts, it was looping through the entire set of articles once per feed. Now it loops through articles just once, for a major performance boost with lots of feeds and/or lots of unread articles.
2018-09-10 22:08:38 -07:00
Maurice Parker
6e6f64321b
fixed unintended developement team change
2018-09-07 13:50:34 -05:00
Maurice Parker
808715892f
Changed project and framework projects to default to using tabs per the coding guidelines. Also corrected previously committed files with spaces used incorrectly.
2018-09-07 13:46:00 -05:00
Brent Simmons
0e5051b060
Fix a major performance regression with article fetching/creation by not using implicit hashing — use explicit and simpler hashValue that will still provide high quality.
2018-09-02 12:36:46 -07:00
Brent Simmons
fdb159a61b
Normalize homePageURL in its setter. Fix #397 .
2018-09-02 12:14:04 -07:00
Brent Simmons
5d2a3e9142
Normalize homePageURL on init-ing Feed.
2018-09-02 12:08:35 -07:00
Brent Simmons
141ae5cc2f
Continue rename to NetNewsWire.
2018-08-28 22:18:24 -07:00
Brent Simmons
9263ffcb79
Use synthesized init.
2018-08-25 17:07:55 -07:00
Brent Simmons
30972ef435
Use synthesized init, Equatable, Hashable.
2018-08-25 16:29:11 -07:00
Brent Simmons
d274b4eac1
Use new hash-into instead of hashValue. WIP on #402 .
2018-08-25 12:52:48 -07:00
Brent Simmons
a3a9e9c9bd
Use new hash-into over hashValue in Articles.framework. WIP on #402 .
2018-08-25 12:05:47 -07:00
Brent Simmons
cfb3bd706e
Use new hash-into function instead of calculating hashValue. WIP on #402 .
2018-08-25 11:54:58 -07:00
Brent Simmons
6d49cd4620
Unignore IDEWorkspaceChecks.plist.
2018-08-25 11:33:09 -07:00
Brent Simmons
f621f8fff7
Fix missing setting for Articles.framework — fixes bug doing Release build. (Didn’t affect Debug builds.)
2018-08-19 15:32:19 -07:00
Brent Simmons
b16112ad56
Remove deleted frameworks from Account.
2018-07-28 17:30:12 -07:00
Brent Simmons
fc338d5371
Move Feed from Articles.framework to Account.framework.
2018-07-28 12:16:14 -07:00
Brent Simmons
b7575c687c
Rename Data.framework to Articles.framework. Rename Database.framework to ArticlesDatabase.framework.
2018-07-23 18:29:08 -07:00
Brent Simmons
ce0d2450b8
Get the app building with Xcode 10 beta 3.
2018-07-15 12:05:00 -07:00
Brent Simmons
74e07521ea
Build still broken. De-framework-ized FeedFinder.
2018-06-23 11:35:55 -07:00
Brent Simmons
b61df8c185
Rename RSFeedFinder references to FeedFinder.
2018-06-21 13:18:28 -07:00
Brent Simmons
168f6138ac
Rename RSFeedFinder.h to FeedFinder.h.
2018-06-21 13:07:31 -07:00
Brent Simmons
375bef6d44
Break build. Rename RSFeedFinder on disk to FeedFinder.
2018-06-21 13:06:13 -07:00
Brent Simmons
fdda92e4c2
Break build. Remove local copy of DB5.framework.
2018-06-21 13:04:26 -07:00
Brent Simmons
ecfee69fdf
Break the build. Continue switch to submodules. Remove local copy of RSDatabase.
2018-06-18 16:59:22 -07:00
Brent Simmons
72a89dd048
Break the build. Continue switch to submodules. Remove local copy of RSParser.
2018-06-18 16:52:24 -07:00
Brent Simmons
2927422f1f
Break the build. Continue switch to submodules. Remove local copy of RSWeb.
2018-06-18 16:45:29 -07:00
Brent Simmons
d597631bd6
Break the build. Continue switch to submodules. Remove local copy of RSTree.
2018-06-18 16:39:16 -07:00
Brent Simmons
993d584731
Break the build. Switching to submodules. Delete local copy of RSCore.
2018-06-18 16:34:11 -07:00
Brent Simmons
a1374d5420
Remove no-longer-used RSTextDrawing.framework.
2018-06-18 16:31:08 -07:00
Olof Hellman
3dd74ce148
better logic for rs_normalizedURLString
2018-04-29 19:36:40 -07:00
Olof Hellman
c91f4621e1
Merge remote-tracking branch 'brentsimmons/master'
2018-03-04 18:43:49 -08:00
Brent Simmons
6e6eefab27
Make Node.childNodes non-optional.
2018-02-25 22:01:09 -08:00
Brent Simmons
7def2ae8d0
Fix bug where deleting from the sidebar would not stick across runs of the app sometimes — whatever you deleted could come back.
2018-02-24 15:54:32 -08:00
Olof Hellman
71005b56af
support for "make new feed"
2018-02-20 00:26:46 -08:00
Brent Simmons
b39bcd9a77
Remove RSTextDrawing and all references to it.
2018-02-19 22:06:36 -08:00
Brent Simmons
389f04bcfb
Make the selected text in the timeline white.
2018-02-19 21:49:32 -08:00
Brent Simmons
6342eaeb00
Add mactories.net to the JSON special case list with titles.
2018-02-19 21:23:58 -08:00
Brent Simmons
6d46b44e22
Remove no-longer-used RSSingleLineView and RSSingleLineRenderer.
2018-02-19 16:00:26 -08:00
Brent Simmons
c887cd7921
Fix bug in existingItemWithIdentifier.
2018-02-17 20:46:20 -08:00
Brent Simmons
5ffe3bb948
Move existingToolbarItem function to NSToolbar category in RSCore.
2018-02-17 20:45:15 -08:00
Brent Simmons
2325e7edbc
Move the isOpen property from specific window controllers to the NSWindowController extension in RSCore.
2018-02-17 18:22:57 -08:00
Brent Simmons
8e7863c66d
Add isDisplayingSheet calculated readonly property to NSWindow and NSWindowController.
2018-02-17 18:14:24 -08:00
Brent Simmons
c80e3e86de
Don’t save an Account to disk during a refresh session. Wait till it’s over.
2018-02-17 18:02:40 -08:00
Brent Simmons
3a94cf9a51
Create CoalescingQueue.standard, a shared instance.
2018-02-17 17:42:57 -08:00
Brent Simmons
64647c73c6
Use a coalescing queue (instead of a Timer) in Account for saving to disk.
2018-02-17 15:38:54 -08:00
Brent Simmons
4e7fc8efcb
Remove rs_performSelectorCoalesced, since it’s been replaced by the CoalescingQueue.
2018-02-17 15:18:42 -08:00
Brent Simmons
d9cba50c89
Remove DiskSave from RSCore, since it’s unused.
2018-02-17 15:17:08 -08:00
Brent Simmons
0951b525f1
Add CoalescingQueue, a FIFO queue of target/selector pairs, used for things like updating table row cells — things that should be coalesced and can be delayed minimally.
2018-02-17 15:14:00 -08:00
Brent Simmons
0e2e0f7eea
Do a case-insensitive match when checking for special-case feed URLs.
2018-02-16 13:15:20 -08:00
Brent Simmons
891416e7b7
Add a special case to the JSON Feed parser for feeds that include HTML entities in their titles. At the moment this is used for kottke.org and pxlnv.com. More could be added later, and these feeds could be removed if fixed.
2018-02-16 13:13:00 -08:00
Brent Simmons
f8f78810ef
When detecting and parsing a potential JSON Feed, allow for the version URL to have the wrong scheme, as it does (at this writing) in https://pxlnv.com/feed/json/
...
Fix #347 .
2018-02-14 20:56:02 -08:00
Brent Simmons
2f21dbf6be
Remove extraneous get { from a bunch of read-only accessors.
2018-02-14 13:14:25 -08:00
Brent Simmons
192439abe7
Make Folder watch for children-did-change notifications — when its own children change, update the unread count. Fix #322 .
2018-02-12 22:22:06 -08:00
Brent Simmons
2b6c2eb5ba
Create a PasteboardWriterOwner protocol and an NSPasteboard extension that references it.
2018-02-11 21:55:32 -08:00
Brent Simmons
a13d21395e
Fetch starred articles for the Starred smart feed.
2018-02-11 12:07:55 -08:00
Brent Simmons
5aeb914ab6
Fetch articles for the Today smart feed.
2018-02-10 17:37:47 -08:00
Brent Simmons
863de80281
Add convenience method to Set<Article> for just getting unread articles.
2018-02-10 13:21:43 -08:00
Brent Simmons
00cf3934e5
Add fetchUnreadArticles method to Account, which will be used by the All Unread smart feed.
2018-02-10 13:00:16 -08:00
Brent Simmons
c77866c4d7
Add takeItems: method to a new NSMenu extension.
2018-02-09 22:10:36 -08:00
Brent Simmons
dcf758acc5
Pass menuForEvent: to the enclosing tableview. This gets contextual menus to appear in e timeline.
2018-02-09 21:40:09 -08:00
Brent Simmons
839780303f
Add needed cast to return value in rs_enclosingTableView.
2018-02-09 21:39:33 -08:00
Brent Simmons
1b09d35c77
Add rs_enclosingTableView method as NSView category.
2018-02-09 21:33:13 -08:00
Brent Simmons
a6db249ab6
Add ArticleFetcher protocol. Add Feed and Folder extensions for it.
2018-02-04 10:57:41 -08:00
Brent Simmons
50dcf436d9
Change Cocoa imports to AppKit imports, because we don’t need CoreData imported (which Cocoa imports).
2018-02-02 22:51:32 -08:00
Olof Hellman
e038fb0fb5
convert Evergreen frameworks projects to use .xcconfig files.
2018-02-02 03:24:13 -08:00
Daniel Jalkut
56a39042f3
Remove Garbage-Collection-specific finalize method overrides, which were flagged by new deprecated OBJC methods warning.
2018-01-29 11:20:38 -05:00
Daniel Jalkut
3507313f84
Accept Xcode 9.3 recommended build settings.
2018-01-29 11:20:30 -05:00
Daniel Jalkut
68a8437ea2
It appears that libxml/parser.h must be explicitly imported as of Xcode 9.3.
2018-01-29 11:20:24 -05:00
Daniel Jalkut
d7f13ca4be
Change from flatMap to new compactMap rename in Xcode 9.3.
2018-01-29 11:19:54 -05:00
Brent Simmons
fb45ae11eb
Add URLPasteboardWriter to RSCore. It takes a string and writes a URL (if possible) and a string to the pasteboard.
2018-01-28 16:08:38 -08:00
Brent Simmons
ef8f508ee4
Add NSOutlineView extension methods: canSelectItem and selectItemAndScrollToVisible.
2018-01-27 12:34:53 -08:00
Brent Simmons
7ba2fe72dd
Add descendantNodeRepresentingObject to Node.swift.
2018-01-27 12:03:17 -08:00
Brent Simmons
cf0d5cdc51
Remove unwanted debugging print statement.
2018-01-24 21:48:20 -08:00
Brent Simmons
f109237bfa
Handle feed renames in the inspector. Handle multiple selection. Fix #137 .
2018-01-23 21:49:33 -08:00
Brent Simmons
2cf0dbd96e
Extend Notification.Name, not NSNotification.Name.
2018-01-22 22:00:01 -08:00
Brent Simmons
02ad70097e
Send a Notification when a Folder’s name changes.
2018-01-22 21:59:13 -08:00
Brent Simmons
786138d6e7
Create postDisplayNameDidChangeNotification, so that a DisplayNameProvider can post a Notification when its name changes.
2018-01-22 21:58:53 -08:00
Brent Simmons
c692d357d2
Adjust for < 0 x origin.
2018-01-21 13:10:42 -08:00
Brent Simmons
ca5703e14f
Keep the inspector’s top-left origin steady on changing views.
2018-01-21 12:46:22 -08:00
Brent Simmons
394274f1e5
Continue progress on inspector.
2018-01-21 11:35:50 -08:00
Brent Simmons
d3a0d8b8b7
Remove Inspector stuff from RSCore on YAGNI basis. Start work on inspector in Evergreen.
2018-01-20 19:06:07 -08:00
Brent Simmons
6b059671f5
Make progress on reloading timeline when feed updates.
2018-01-17 17:28:09 -08:00
Brent Simmons
d1e915394e
Use properties rather than strings and KVC. Duh.
2018-01-15 12:28:35 -08:00
Brent Simmons
f4aca068ea
Make SendToBlogEditorApp public in RSCore.
2018-01-15 12:21:54 -08:00
Brent Simmons
77bc330d8c
Create SendToBlogEditorApp, which implements the sending side of the external blog editor interface: http://ranchero.com/netnewswire/developers/externalinterface
2018-01-15 12:11:28 -08:00
Brent Simmons
c63303f05a
Add UserApp.targetDescriptor.
2018-01-15 12:10:57 -08:00
Brent Simmons
eaeb333120
Add NSAppleEventDescriptor category method: +descriptorWithRunningApplication:.
2018-01-15 12:10:31 -08:00
Brent Simmons
7a8e0ec4aa
Increase the sleep interval for waiting for an app to launch. I’m sure there’s a better way to do this, but I don’t know what it is yet.
2018-01-14 11:19:19 -08:00
Brent Simmons
39d6086e0c
Use %20 instead of + when encoding for URL query strings, since it appears to be more compatible. (Well, it works better with Micro.blog.)
2018-01-14 11:11:53 -08:00
Brent Simmons
75d0752a67
Make UserApp properties and methods public.
2018-01-14 11:00:29 -08:00
Brent Simmons
fd7c6d07ac
Add UserApp class to RSCore. It represents an of the type usually found in /Applications. A UserApp may or may not be running and may or may not exist locally on disk. It could be entirely fictional, even.
2018-01-14 10:56:06 -08:00
Brent Simmons
f430d6a095
Add Dictionary and String extensions for creating URL query strings. Add tests.
2018-01-13 17:40:27 -08:00
Olof Hellman
775dbf0852
basic readonly scripting support for account, feed, folder
2018-01-11 00:51:25 -08:00
Brent Simmons
1b0648cd18
Make feed icons show up more promptly and reliably in the timeline.
2018-01-08 21:34:39 -08:00
Brent Simmons
e181822c48
Merge, manually, fix and tests for detecting as JSON Feed feeds which do slash-escaping, such as Curt’s feed < http://curtclifton.net/feed.json >.
2018-01-08 13:13:15 -08:00
Brent Simmons
0d4a58e2ab
Create and use an NSTableView extension method: indexesOfAvailableRowsPassingTest.
2018-01-06 12:12:31 -08:00
Brent Simmons
2938cc718d
Check /index.xml when finding a feed when there are no other leads. Fix #235 .
2018-01-05 22:54:28 -08:00
Brent Simmons
e970caf459
Freeze the user agent as Evergreen (macOS; RSS Reader; https://ranchero.com/evergreen/ ). (An iOS version would say iOS rather than macOS, but would be the same otherwise.)
2017-12-31 10:09:40 -08:00
Brent Simmons
1968986d64
Make User-Agent of the form: Evergreen/1.0d28 (Macintosh; RSS Reader; ranchero.com/evergreen/)
...
The idea is that anyone looking at their stats can quickly find out what it is. It’s a Mac RSS reader. They can open that URL for even more info. (Before 1.0 ships, at that link will be a link to an article for publishers about RSS readers and lowering bandwidth use. Will talk about conditional GET, etc.)
2017-12-30 12:51:37 -08:00
Brent Simmons
f4b33c6afb
Add the OS to the User-Agent header, as in Macintosh or iOS.
2017-12-30 11:23:35 -08:00
Brent Simmons
d093bf9a21
Add rs_debugStringWithData — to use when debugging. A quick way to turn data into a string. It will work most of the time. Good enough for debugging.
2017-12-30 11:23:04 -08:00
Brent Simmons
1e90237e7e
Fix bug decoding ' entities.
...
1. Fix typo in the entities dictionary — add the actual ' character.
2. Add EntityDecodingTests.swift and a test for this.
2017-12-30 10:24:44 -08:00
Brent Simmons
20dccb1060
Add license and Readme from RSParser’s separate open source project. Just part of keeping these both in sync.
2017-12-30 10:24:04 -08:00
Brent Simmons
8f9575ee84
Remove assertion that wasn’t valid in some situations. Fix #283 .
2017-12-29 10:13:11 -08:00
Brent Simmons
a8bd15e9b4
Add method to convert HTML to plain text suitable for copying to text-based apps. It could be much improved, but it’s better than nothing for right now.
2017-12-26 16:17:57 -08:00
Brent Simmons
0b2d7c6733
Validate unread counts on fetching articles. Fix #274 .
2017-12-26 11:27:55 -08:00
Brent Simmons
288f203bea
Add setPointAndSizeAdjustingForScreen for placing windows without (usually) going offscreen. Use it for positioning the Keyboard Shortcuts window. Fix #263 .
2017-12-22 11:13:20 -08:00
Brent Simmons
a4c82739b6
Implement next and previous subscription navigation. Also: on first-run, position and size the window a bit nicer.
2017-12-21 14:43:29 -08:00
Brent Simmons
84845c21b3
Make sidebar expand/collapse keyboard shortcuts work.
2017-12-21 11:09:07 -08:00
Brent Simmons
70000c1d31
Progress on keyboard shortcuts. Add link to Technotes in Help menu. Fix #266 .
2017-12-20 21:23:48 -08:00
Brent Simmons
035702d403
Add KeyboardKey and KeyboardShortcut structs.
2017-12-20 12:54:01 -08:00
Brent Simmons
23769bc391
Add AccountDelegate.accountDidInitialize method, so that the delegate can set the account’s nameForDisplay before anything else happens. Fix #247 .
2017-12-19 17:48:30 -08:00
Brent Simmons
705efcb7e8
Add keyboard utilities to RSCore.
2017-12-19 15:23:42 -08:00
Brent Simmons
dd89f2dea7
Add test for Macworld authors — make sure they appear as names instead of email addresses, even though they’re using RSS.
2017-12-19 13:28:33 -08:00
Brent Simmons
6c5566e184
Parse Atom authors. Fix #260 .
2017-12-19 13:24:19 -08:00
Brent Simmons
0317196cf6
Add test for Atom authors. Currently failing.
2017-12-19 13:03:35 -08:00
Brent Simmons
ccd87040c3
Support multiple authors in RSS and Atom feeds.
2017-12-19 13:03:05 -08:00
Brent Simmons
83c49bf428
Add two tests for parsing Atom attachments. Thanks to Marco for finding some examples (they’re very rare).
2017-12-19 11:52:12 -08:00
Brent Simmons
b380d0597f
Test Omni Show and Macworld unique IDs. The Omni Show ids should come from the feed’s guids. Macworld’s unique IDs should be calculated, since the feed doesn’t have guids.
2017-12-19 11:20:40 -08:00
Brent Simmons
fefa96d259
Prefer permalink to link when creating a calculated unique ID.
2017-12-19 11:19:46 -08:00
Brent Simmons
a3dde79b84
Add test to make sure RSS parser is using guid for article.uniqueID.
2017-12-19 11:02:05 -08:00
Brent Simmons
a82cee29b8
Make RSParsedArticle calculate a unique ID only when there’s no guid. Otherwise use the guid. Do not attempt to create a globally-unique ID — that’s out of scope for the parser and should be (and is) handled at the app’s model layer.
2017-12-19 10:59:24 -08:00
Brent Simmons
7ccb531f0c
Parse Atom enclosures. However, I couldn’t find any in the wild, so there are no tests yet.
2017-12-19 10:17:09 -08:00
Brent Simmons
5b01f04afe
Save to disk right after importing OPML. Fix #249 .
2017-12-18 21:46:35 -08:00
Brent Simmons
fcda565d91
Remove references to tags. Fix #259 .
2017-12-18 18:20:13 -08:00
Brent Simmons
fb9a1d610c
Parse enclosures in RSS.
2017-12-18 15:35:50 -08:00
Brent Simmons
adf5a5e784
Add NSImage extension method to tint an image with a color.
2017-12-17 10:48:24 -08:00
Brent Simmons
0221eda956
Add Node.existingOrNewChildNode — recycles an existing node. Creates a new node only when needed.
2017-12-16 11:15:36 -08:00
Brent Simmons
859f479a89
Fix a memory leak that happened every time you added a feed. Use a weak delegate to avoid a retain cycle.
2017-12-13 21:19:12 -08:00
Brent Simmons
b04876185d
Clean up DownloadWithCacheManager’s cache at most every five minutes — it’s very expensive to do it on every request. This dramatically helps sidebar scrolling performance when you have a couple thousand feeds all trying to get their favicons.
2017-12-13 21:18:20 -08:00
Brent Simmons
3eb95ce63d
Fix OPML import performance regression. Fix #238 .
2017-12-11 23:12:54 -08:00
Brent Simmons
0b4a9f143e
Parse Feedbin articles.
2017-12-11 13:36:16 -08:00
Brent Simmons
8160d8e38e
Create Feedbin, FeedbinAccountDelegate, and FeedbinGetSubscriptionsDelegate.
2017-12-10 14:05:01 -08:00
Brent Simmons
6e93cc2718
Create FeedbinSubscription struct.
2017-12-10 14:04:14 -08:00
Brent Simmons
1d956c619d
Make APICall.init public.
2017-12-10 14:03:35 -08:00
Brent Simmons
89a74077d9
Create FeedbinSubscription struct.
2017-12-10 13:58:44 -08:00
Brent Simmons
8d7eb910da
Make APICall delegate based rather than defining a bunch of protocols.
2017-12-10 13:57:38 -08:00
Brent Simmons
de883ce082
Define string constants in JSONFeedParser rather than using literals all over the place. Also: remove a no-longer-needed do/try/catch.
2017-12-10 13:56:40 -08:00
Brent Simmons
cc3f77571b
Make JSONTypes public. Add JSONUtilities.
2017-12-10 13:53:00 -08:00
Brent Simmons
16b1918580
Continue work on web services client.
2017-12-10 12:31:10 -08:00
Brent Simmons
cc918daf37
Start work on web services support in RSWeb.
2017-12-09 11:27:06 -08:00
Brent Simmons
3d72ba4b44
Add case for detecting < https://www.natashatherobot.com/feed/ > as an RSS feed.
...
It’s missing the opening <rss> tag, but it has enough other distinct markers that we can detect it as RSS.
Add two tests to make sure it’s detected and that the parser handles it.
2017-12-07 20:05:58 -08:00
Brent Simmons
a488683550
Refresh all after importing OPML. Fix #59 .
2017-12-03 12:54:51 -08:00
Brent Simmons
0c176eccd0
Fetch all unread counts at startup. This is done with a single SQL call, and it’s done in the background, so performance hit should not be noticeable. Fix #138 .
2017-12-03 11:57:53 -08:00
Brent Simmons
c83e0ca68d
Do quite a bit less work on resizing the timeline. Fix #175 .
2017-12-02 22:18:43 -08:00
Brent Simmons
179c889d9b
Fix typo.
2017-12-02 21:35:02 -08:00
Brent Simmons
3da2521e8e
When adding a feed, update it right away rather than waiting for the next Refresh. Fix #147 . Fix #215 .
2017-12-02 17:47:08 -08:00
Brent Simmons
f99cd162bb
Add support for RSS 1.0 (RDF) feeds. Added so we can handle Pinboard feeds. (Not sure if anyone else is still using RSS 1.0.) Fix #231 .
2017-12-02 16:37:24 -08:00
Brent Simmons
35cb0fe078
Get rid of the lock. Add comment that Node is main-thread-only; add precondition to init method. Fix #230 .
2017-12-02 16:12:09 -08:00
Brent Simmons
e71d763443
Save feed.authors.
2017-12-02 14:20:58 -08:00
Brent Simmons
b5d8233955
Fix bug saving related objects for articles — authors, tags, and attachments.
2017-12-02 13:20:27 -08:00
Brent Simmons
f28d921aff
Avoid skipping parsing Dr. Drang’s JSON Feed, which can’t be detected that it’s a JSON Feed with only partial data, since it has the version element at the end. Add a test for this.
2017-12-01 13:19:30 -08:00
Brent Simmons
efcc4fedaa
Add tests for Dr. Drang’s JSON Feed.
2017-11-30 13:19:22 -08:00
Brent Simmons
1e528ee8b0
Fix bug detecting Macworld’s RSS feed as an RSS feed. The feed doesn’t start with the standard XML header.
2017-11-28 21:29:09 -08:00
Brent Simmons
6c36107320
Prefer Apple touch icons to other feed icons.
2017-11-26 20:40:07 -08:00
Brent Simmons
82dace2acc
Start FeedIconDownloader.
2017-11-26 13:48:40 -08:00
Brent Simmons
bfccda8c88
Get twitter:image:src from HTML metadata.
2017-11-26 11:49:01 -08:00
Brent Simmons
ff7695c290
Parse Open Graph images when parsing metadata from an HTML page.
2017-11-26 11:38:03 -08:00
Brent Simmons
18f6b177e9
Fix typo.
2017-11-25 20:24:12 -08:00
Brent Simmons
e026e159d1
Rebuild the feed dictionary at appropriate times. Fix #169 .
2017-11-25 18:05:20 -08:00
Brent Simmons
1047fa5a02
Use the proper index sets and so on to make deleting work from the sidebar again. Fix #192 .
2017-11-25 17:44:54 -08:00
Brent Simmons
7d579733f0
Add tests to HTMLFeedFinder for finding the best feed from a web page.
2017-11-25 16:48:42 -08:00
Brent Simmons
fce95bb5b6
Pull JSON feed from web page metadata (along with RSS and Atom, which already worked).
2017-11-25 16:48:13 -08:00
Brent Simmons
23af6b4d29
Adjust scoring in FeedSpecifier to slightly prefer JSON feeds.
2017-11-25 16:47:36 -08:00
Brent Simmons
489cf8e29b
Start redoing HTMLFeedFinderTests.
2017-11-25 16:34:40 -08:00
Brent Simmons
50f4e46913
Add 'json' as possible-feed match string.
2017-11-25 16:34:20 -08:00
Brent Simmons
68c01491fc
Note when feed settings change and update the sidebar cells.
2017-11-25 13:48:14 -08:00
Brent Simmons
9865bd8e51
Fix a crash on startup — detect when there are no feeds and don’t hit database.
2017-11-25 13:11:19 -08:00
Brent Simmons
97079108be
Add Atom parser test for getting the home page link. It passed, which means the bug I’m currently hunting (no favicon for Dr. Drang) is somewhere else.
2017-11-25 13:02:21 -08:00
Brent Simmons
0b5f470654
Check "icon" as well as "shortcut icon" when finding the favicon link in a web page. (See Macdrifter.com, for instance.)
2017-11-25 13:01:20 -08:00
Brent Simmons
55166e0979
Update a Feed with settings taken from the raw feed. (Some Feeds had no homePageURL set, which meant, in most cases, no favicons.)
2017-11-25 12:17:49 -08:00
Brent Simmons
bd8b7c6ed9
Implement debugDropConditionalGetInfo command. Fix #197 .
2017-11-25 11:13:15 -08:00
Brent Simmons
e4008b677f
Fix two typos in JSONFeedParser which kept the parser from getting the feed’s favicon and icon URLs. Also added a test for this.
2017-11-25 10:34:48 -08:00
Brent Simmons
32973c4c85
Fix an ambiguous call to download in DownloadWithCacheManager. I’m honestly not sure what function would have been called.
2017-11-24 13:11:41 -08:00
Brent Simmons
e4f65000b2
Replace Objective-C RSBinaryCache with Swift BinaryDiskCache in RSCore.
2017-11-24 13:10:22 -08:00
Brent Simmons
3282f0ec09
Create NSImage on background queue.
2017-11-23 12:15:33 -08:00
Brent Simmons
b4ff1785ab
Switch from download to downloadUsingCache where appropriate.
2017-11-23 10:29:00 -08:00
Brent Simmons
c9610f1f8e
Create DownloadWithCacheManager, for when it’s a good idea to use a cache.
2017-11-23 10:24:36 -08:00
Brent Simmons
ca4f4d408f
Create downloadUsingCache method — so we don’t download a home page several times in succession, for instance.
2017-11-22 13:37:07 -08:00
Brent Simmons
86907f6aab
Create ThreadSafeCache, which FaviconDownloader uses.
2017-11-19 23:58:35 -08:00
Brent Simmons
1864f60e0b
Save iconURL and faviconURL in Feed when found in ParsedFeed.
2017-11-19 22:38:42 -08:00
Brent Simmons
0284117bc3
Save and restore iconURL in Feed.
2017-11-19 22:37:59 -08:00
Brent Simmons
f457694922
Save and restore faviconURL in Feed.
2017-11-19 21:24:19 -08:00
Brent Simmons
ffaa55c50c
Implement mark-everywhere-as-read.
2017-11-19 16:28:26 -08:00
Brent Simmons
9c571271e6
Create SmartFeed class. It’s for Unread and Starred pseudo-feeds — and will also be used later on by predicate-based smart feeds.
2017-11-19 15:40:02 -08:00
Brent Simmons
83cee90929
Fix a couple bugs in PseudoFeed. Make callback for fetching unread count @escaping.
2017-11-19 12:45:35 -08:00
Brent Simmons
19673f5c8a
Add methods for fetching unread count since a certain date to Database.framework.
2017-11-19 12:44:17 -08:00
Brent Simmons
e681007bbe
Add TodayFeedDelegate. Start work on fetching unread count for Today pseudo-feed.
2017-11-19 12:12:43 -08:00
Brent Simmons
1cc532faa1
Add startOfToday and nullability annotations to NSCalendar+RSCore.
2017-11-19 12:11:56 -08:00
Brent Simmons
911e992b76
Use a Swift name for rs_performSelectorCoalesced — make it performSelectorCoalesced:with:delay:.
2017-11-19 11:42:22 -08:00
Brent Simmons
200ff61f6a
Fix code formatting nit in DisplayNameProvider.
2017-11-19 11:41:27 -08:00
Brent Simmons
eff6acba94
Create index on statuses (read) for performance reasons.
2017-11-19 11:40:45 -08:00
Brent Simmons
23ae585b12
Add a group-style row for accounts.
2017-11-18 16:56:36 -08:00
Brent Simmons
ca081c41a9
Decode HTML entities in the JSON Feed parser for content_html. Fix #176 .
2017-11-18 12:41:15 -08:00
Brent Simmons
828075454e
Skip calculating a zero size for empty RSSingleLineView and RSSingleLineRenderer.
2017-11-16 21:10:44 -08:00
Brent Simmons
0e5b400a0c
Show Error Log window from Window menu.
2017-11-15 22:40:49 -08:00
Brent Simmons
1d2fe4623b
Add Inspector to RSCore. Show/hide inspector via Info command in Window menu.
2017-11-15 22:33:35 -08:00
Brent Simmons
1e713e3bfd
Update Account unread count when BatchUpdate did perform.
2017-11-15 13:26:10 -08:00
Brent Simmons
38954448cb
Move BatchUpdate.swift to RSCore.
2017-11-15 13:25:43 -08:00
Brent Simmons
3612469954
Make LogItem not crash on init.
2017-11-15 13:13:19 -08:00
Brent Simmons
48ca636796
Make progress on LogWindowController.
2017-11-14 22:04:14 -08:00
Brent Simmons
887e562716
Post a notification when a LogItem is added.
2017-11-14 21:39:24 -08:00
Brent Simmons
60ee139451
Add ability to log items to AppDelegate.
2017-11-14 21:31:17 -08:00
Brent Simmons
bf45c3bdd9
Rename Logger to Log.
2017-11-14 21:19:12 -08:00
Brent Simmons
7e2420700c
Add Logger and LogItem. Start work on log window.
2017-11-14 21:15:06 -08:00
Brent Simmons
0bc84aa50c
Show the Keyboard Shortcuts menu via its new Window menu command. The window’s HTML content remains to be done, though.
2017-11-13 18:33:23 -08:00
Brent Simmons
5d781d1657
Add method to display contents of file in WebViewWindowController.
2017-11-13 18:19:25 -08:00
Brent Simmons
773f660601
Create WebViewWindow, which holds a WKWebView. To be used for keyboard shortcuts and whatever else needs a plain web view in a window.
2017-11-13 13:23:22 -08:00
Brent Simmons
9f56030b79
Calculate the Account’s unread count by looking at the set of flattened feeds — this way a given feed (which can occur more than once) is counted only once. Fix #101 .
2017-11-11 19:34:10 -08:00
Brent Simmons
0fe8cbd360
Remove redundant check to see if feed is probably XML.
2017-11-11 14:27:56 -08:00
Brent Simmons
a593661ba9
Add feed detection test for DCRainmaker feed. Make sure it’s detected as RSS. Fix #146 .
2017-11-11 10:37:28 -08:00
Brent Simmons
2982109f9b
Check that data is not XML, rather than that it is HTML, when determining feed type. Fix #144 .
2017-11-11 10:30:01 -08:00
Brent Simmons
9818278c9b
Make undo deleting feeds/folders work.
2017-11-05 12:14:36 -08:00
Brent Simmons
57296279e4
Switch back to AnyObject from AnyHashable, because of http://openradar.appspot.com/34824398
2017-11-04 23:05:20 -07:00
Brent Simmons
e16911b363
Make deleting work. Can’t undo yet. But now everything is messed-up because of an AnyHashable casting bug. Don’t run this build.
2017-11-04 22:51:14 -07:00
Brent Simmons
66c02a6fe1
Fix build errors.
2017-11-04 19:29:43 -07:00
Brent Simmons
17e22fb91a
Upgrade to recommended settings everywhere.
2017-11-04 19:16:07 -07:00
Brent Simmons
ad3020f13f
Upgrade to recommend changes for Data.
2017-11-04 19:14:55 -07:00
Brent Simmons
5c984cbd23
Upgrade to recommend changes for RSTextDrawing.
2017-11-04 19:14:38 -07:00
Brent Simmons
9886ac110a
Upgrade to recommend changes for RSFeedFinder.
2017-11-04 19:14:16 -07:00
Brent Simmons
ef303c0c38
Make progress on deleting and especially undoing delete.
2017-11-04 19:03:47 -07:00
Brent Simmons
c08bbaa970
Use AnyHashable instead of AnyObject as representedObject for tree nodes.
2017-11-04 15:27:32 -07:00
Brent Simmons
ef1d95341b
Show feeds in Feed Directory sidebar.
2017-11-04 14:53:21 -07:00
Brent Simmons
2bb0cdb0ba
Fix build failures in OPMLTests. Tests all still pass in RSParser.
2017-11-04 10:25:13 -07:00
Brent Simmons
911e6b0879
Do some refactoring.
2017-11-01 22:40:28 -07:00
Brent Simmons
17b84ec57c
Rename MarkAllReadCommand to MarkReadOrUnreadCommand and make it handle both cases.
2017-10-29 12:09:56 -07:00
Brent Simmons
f9b3eeb4d7
Switch macOS deployment target to 10.13. Get MarkAllReadCommand working as an undoable command.
2017-10-29 11:14:10 -07:00
Brent Simmons
d16f83c99a
Start UndoableCommand as part of undo support.
2017-10-24 09:28:58 -07:00
Brent Simmons
c101d9dd04
Maintain url-to-feed and feedID-to-feed dictionaries to make lookups faster. This makes OPML importing very fast.
2017-10-22 11:08:51 -07:00
Brent Simmons
649f62207f
Fix OPML importing.
2017-10-21 21:00:21 -07:00
Brent Simmons
8d5e568cde
Make folder.account weak and optional.
2017-10-21 16:37:40 -07:00
Brent Simmons
d512908b6f
Use @discardableResult with addFeed.
2017-10-21 16:32:29 -07:00
Brent Simmons
7bf1847588
Send notification on adding a feed to a folder. Also: Update ToDo.
2017-10-21 16:27:06 -07:00
Brent Simmons
c237aed5b8
Rejigger the find-feed scoring to handle bitsplitting.org — we were getting the podcast feed just because it had “RSS” in the title. But we want the blog feed to get the best score.
2017-10-21 16:23:51 -07:00
Brent Simmons
da1b7a6c7b
Post children-did-change notification after adding a feed.
2017-10-21 16:06:25 -07:00
Brent Simmons
edea37dba6
Add TreeController.normalizeSelectedNodes and supporting functions in Node.
2017-10-21 12:14:15 -07:00
Brent Simmons
702559cfb1
Define kDeleteKeyCode for use in key handling.
2017-10-21 10:54:59 -07:00
Brent Simmons
aca8acea7c
Update sidebar when adding a folder.
2017-10-19 13:27:59 -07:00
Brent Simmons
3812c216b2
Show unread count in window title.
2017-10-18 21:53:45 -07:00
Brent Simmons
2383ecd480
Implement ensureFolder — it actually creates and adds a folder and makes sure account is saved to disk.
2017-10-18 19:46:35 -07:00
Brent Simmons
31947854c0
Add AccountDelegate methods for reading and writing a userInfo dictionary that’s stored on disk in the same file as the rest of the Account info. Save account unreadCount with the disk dictionary. Mark an account as dirty when any descendant changes an unread count.
2017-10-18 19:14:40 -07:00
Brent Simmons
39599a43f3
Make hasAtLeastOneFeed() a Container protocol function with a default implementation. Scrap Account’s feedIDDictionary, since it’s not needed. (Well, profiling may tell us later to bring it back.)
2017-10-18 18:45:09 -07:00
Brent Simmons
fe29ccd2ed
Show unread count in dock badge. Force-update unread counts at startup.
2017-10-18 18:37:45 -07:00
Brent Simmons
324f330a3b
Use localizedStandardCompare when sorting Account names. It’s likely I got the order backwards, but I won’t know until we have accounts other than the local account. (I always get this backwards, even knowing that I always get it backwards.)
2017-10-18 18:21:36 -07:00
Brent Simmons
f90bf3bea1
Rename childrenContainsFeed to childrenContain. Add assertionFailure — expecting pointer equality.
2017-10-18 18:13:49 -07:00
Brent Simmons
3ea60cb461
Handle unread count change notifications in Folder. Update the unread count when needed.
2017-10-13 06:58:15 -07:00
Brent Simmons
505f4bcdba
Handle unread count did change notification in Account.
2017-10-13 06:50:33 -07:00
Brent Simmons
4897181909
Avoid a compiler bug with constrained Set extensions. Add a notification observation to Account when unread count changes.
2017-10-12 21:02:27 -07:00
Brent Simmons
165e74a3f3
Refactor status change handling in Account.
2017-10-10 13:23:12 -07:00