Merge branch 'master' of https://github.com/brentsimmons/Evergreen
This commit is contained in:
commit
1cb2a32b5a
|
@ -162,25 +162,41 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations {
|
|||
openArticleInBrowser(sender)
|
||||
}
|
||||
|
||||
func makeTimelineViewFirstResponder() {
|
||||
|
||||
guard let window = window, let timelineViewController = timelineViewController else {
|
||||
return
|
||||
}
|
||||
window.makeFirstResponderUnlessDescendantIsFirstResponder(timelineViewController.tableView)
|
||||
}
|
||||
|
||||
@IBAction func nextUnread(_ sender: Any?) {
|
||||
|
||||
guard let timelineViewController = timelineViewController, let sidebarViewController = sidebarViewController else {
|
||||
return
|
||||
}
|
||||
|
||||
func makeTimelineViewFirstResponder() {
|
||||
if timelineViewController.canGoToNextUnread() {
|
||||
goToNextUnreadInTimeline()
|
||||
}
|
||||
else if sidebarViewController.canGoToNextUnread() {
|
||||
sidebarViewController.goToNextUnread()
|
||||
if timelineViewController.canGoToNextUnread() {
|
||||
goToNextUnreadInTimeline()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window!.makeFirstResponderUnlessDescendantIsFirstResponder(timelineViewController.tableView)
|
||||
func goToNextUnreadInTimeline() {
|
||||
|
||||
guard let timelineViewController = timelineViewController else {
|
||||
return
|
||||
}
|
||||
|
||||
if timelineViewController.canGoToNextUnread() {
|
||||
timelineViewController.goToNextUnread()
|
||||
makeTimelineViewFirstResponder()
|
||||
}
|
||||
else if sidebarViewController.canGoToNextUnread() {
|
||||
sidebarViewController.goToNextUnread()
|
||||
makeTimelineViewFirstResponder()
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func markAllAsRead(_ sender: Any?) {
|
||||
|
|
|
@ -151,8 +151,6 @@ import RSCore
|
|||
}
|
||||
|
||||
outlineView.selectRowIndexes(IndexSet([row]), byExtendingSelection: false)
|
||||
|
||||
NSApplication.shared.sendAction(NSSelectorFromString("nextUnread:"), to: nil, from: self)
|
||||
}
|
||||
|
||||
func focus() {
|
||||
|
|
12
README.md
12
README.md
|
@ -7,3 +7,15 @@ It supports [RSS](http://cyber.harvard.edu/rss/rss.html), [Atom](https://tools.i
|
|||
It’s barely usable at this point. Barely. Probably not even. A whole bunch of things haven’t been done yet. (See the [bug tracker](https://github.com/brentsimmons/Evergreen/milestone/1)).
|
||||
|
||||
More info: [https://ranchero.com/evergreen/](https://ranchero.com/evergreen/)
|
||||
|
||||
Also see the [Technotes](Technotes/) and the [Roadmap](Technotes/Roadmap.md).
|
||||
|
||||
#### On accepting pull requests
|
||||
|
||||
It’s pretty early still, and we have strong opinions about how we want to do things, so we’re not seeking help just yet.
|
||||
|
||||
That said, we will seriously consider any pull requests we do get. Just note that we may not accept them, or we may accept them and do a bunch of revision.
|
||||
|
||||
It’s probably a good idea to let us know first what you’d like to do. ([Ask on Twitter](https://twitter.com/evergreen_mac), or email brent@ranchero.com, or post something to the [bug tracker](https://github.com/brentsimmons/Evergreen/issues).)
|
||||
|
||||
In the future — some time after 1.0 ships — we expect to want contributions. The plan is *not* to make this a one-person show forever.
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# What Development, Alpha, Beta, and Final Mean for Evergreen
|
||||
|
||||
#### Development version
|
||||
|
||||
Is not feature-complete, is full of bugs, may not be at all stable, and is liable to change wildly at any minute.
|
||||
|
||||
#### Alpha
|
||||
|
||||
The app reaches alpha when:
|
||||
|
||||
* It’s feature-complete
|
||||
* Has no known bugs
|
||||
|
||||
During the alpha period, the app is tested thoroughly. More tests are written. As many people as possible use the app and report bugs.
|
||||
|
||||
#### Beta
|
||||
|
||||
The app reaches beta when all bugs found during alpha testing are fixed and there are no known bugs. The app is believed to be in ship-shape.
|
||||
|
||||
More testing, however, is a good idea.
|
||||
|
||||
The code is considered frozen except for bug fixes, and any bug fixes are done with extreme care and the lightest possible touch.
|
||||
|
||||
#### Final
|
||||
|
||||
The app reaches final when the developers are confident that it’s ready to ship. It works as designed, has no known bugs, doesn’t crash, and is fast.
|
||||
|
||||
(Note: “no known bugs” is meant extremely seriously. That said, sometimes there are ambiguous weird cases that can’t be reproduced, and so there are exceptions to this rule. But we pretend most strenuously that that isn’t true. In fact, pretend you never read this paragraph, and we’ll pretend we never wrote it.)
|
|
@ -0,0 +1,11 @@
|
|||
# Questions Answered
|
||||
|
||||
#### How do I delete a feed?
|
||||
|
||||
Select it in the sidebar, then hit the Delete key. Or choose Edit > Delete from the menubar.
|
||||
|
||||
Note: you can delete multiple feeds, and you can delete folders. You can also undo if you change your mind.
|
||||
|
||||
#### Why does Evergreen require the latest macOS?
|
||||
|
||||
Since Evergreen is a nights-and-weekends project, we don’t have enough time to run and test on older versions of macOS. Most of the time it will require the most recent macOS.
|
|
@ -1,9 +1,15 @@
|
|||
# TechNotes
|
||||
|
||||
[Roadmap](Roadmap.md)
|
||||
|
||||
## How To
|
||||
|
||||
[How to Restore to Factory Settings](RestoreToFactory.md)
|
||||
|
||||
## Notes
|
||||
|
||||
[What Development, Alpha, Beta, and Final Mean for Evergreen](DevelopmentAlphaBeta.md)
|
||||
|
||||
[Hidden Preferences](HiddenPrefs.md)
|
||||
|
||||
[Questions Answered](QuestionsAnswered.md)
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
# Roadmap
|
||||
|
||||
<i>Updated Dec. 23, 2017</i>
|
||||
|
||||
This roadmap reflects thinking at the time of the last update. Anything can change at any time.
|
||||
|
||||
## Evergreen 1.0 for macOS
|
||||
|
||||
Ship: March 26, 2018 (we hope!)
|
||||
|
||||
Features:
|
||||
|
||||
* Standalone feed reading (unsynced)
|
||||
* Syncing via FeedBin
|
||||
* Built-in smart feeds (today, starred, all unread)
|
||||
* Searching
|
||||
* Starring
|
||||
* Keyboard shortcuts
|
||||
* Multiple windows
|
||||
* Feed Directory
|
||||
* AppleScript support
|
||||
* Inspector
|
||||
* Gestures
|
||||
* Notifications
|
||||
* Sharing
|
||||
* Share extension
|
||||
* Feed and user avatars
|
||||
* Microblog full-post rendering in the timeline
|
||||
* Thumbnail images in the timeline
|
||||
|
||||
Milestones:
|
||||
|
||||
[Evergreen 1.0 alpha](https://github.com/brentsimmons/Evergreen/milestone/1)<br />
|
||||
[Evergreen 1.0 beta](https://github.com/brentsimmons/Evergreen/milestone/2)<br />
|
||||
[Evergreen 1.0](https://github.com/brentsimmons/Evergreen/milestone/3)
|
||||
|
||||
(See [What Development, Alpha, Beta, and Final Mean for Evergreen](DevelopmentAlphaBeta.md) for definitions.)
|
||||
|
||||
## Evergreen 2.0 for macOS
|
||||
|
||||
Ship: March 26, 2019 (seems unlikely)
|
||||
|
||||
Features:
|
||||
|
||||
* Syncing via Feedly and other similar systems — not yet decided which ones exactly
|
||||
* Syncing via CloudKit (maaaaaybe, if feasible)
|
||||
* Smart feeds — edit and create
|
||||
* Filters that run during refresh
|
||||
* Scripted feeds (AppleScript and shell/Ruby/etc.)
|
||||
* Hiding read subscriptions
|
||||
* Hiding read articles
|
||||
* Deleting articles
|
||||
* [Dark mode](https://github.com/brentsimmons/Evergreen/issues/97)
|
||||
* Dinosaurs
|
||||
* Dock menu items
|
||||
* [Article themes](https://github.com/brentsimmons/Evergreen/issues/257)
|
||||
* Back/forward commands
|
||||
* [Article view zooming](https://github.com/brentsimmons/Evergreen/issues/38)
|
||||
* [Import OPML from URL](https://github.com/brentsimmons/Evergreen/issues/136)
|
||||
|
||||
Milestones:
|
||||
|
||||
[Evergreen 2.0 alpha](https://github.com/brentsimmons/Evergreen/milestone/4)<br />
|
||||
[Evergreen 2.0 beta](https://github.com/brentsimmons/Evergreen/milestone/5)<br />
|
||||
[Evergreen 2.0](https://github.com/brentsimmons/Evergreen/milestone/6)
|
|
@ -1,18 +1,17 @@
|
|||
@title Evergreen
|
||||
|
||||
Evergreen is an open source, productivity-style feed reader for Macs.
|
||||
Evergreen is a free and open source feed reader for macOS.
|
||||
|
||||
It’s at a very early stage — we use it, but we don’t expect other people to use it yet.
|
||||
|
||||
Nevertheless, you can:
|
||||
|
||||
<a href="https://ranchero.com/downloads/Evergreen-latest.zip">Download the latest build</a>
|
||||
|
||||
<a href="https://github.com/brentsimmons/Evergreen/issues">Report bugs and make feature requests</a>
|
||||
|
||||
<a href="https://github.com/brentsimmons/Evergreen">Checkout the code</a>
|
||||
|
||||
Also note: [Evergreen has its own blog](https://ranchero.com/evergreen/blog/). (The blog is one of the default feeds in Evergreen.)
|
||||
<ul><li><a href="https://ranchero.com/downloads/Evergreen-latest.zip">Download the latest build</a></li>
|
||||
<li><a href="https://github.com/brentsimmons/Evergreen/issues">Report bugs and make feature requests</a></li>
|
||||
<li><a href="https://github.com/brentsimmons/Evergreen">Checkout the code</a></li>
|
||||
<li><a href="https://ranchero.com/evergreen/blog/">Read the blog</a></li>
|
||||
<li><a href="https://github.com/brentsimmons/Evergreen/blob/master/Technotes/Roadmap.md">Read the roadmap</a>
|
||||
<li><a href="https://twitter.com/evergreen_mac">Follow Evergreen on Twitter</a></li></ul>
|
||||
|
||||
#### To Do
|
||||
|
||||
|
@ -25,4 +24,23 @@ However, a few notes about the future:
|
|||
* We don’t plan on doing an iOS version ever. We might change our minds, but we doubt it. (Update Dec. 5, 2017: Well, maaaaaybe…)
|
||||
* We don’t plan on making a for-pay version ever, either. We might change our minds, but it’s massively unlikely. [This app is written for love](http://inessential.com/2015/06/30/love), not money.
|
||||
* Future versions will add syncing via existing services (such as [FeedBin](https://feedbin.com/), [Feedly](https://feedly.com/), [Feed Wrangler](https://feedwrangler.net/), and others), though we make no promises about which ones and when. (This means that, some time in the future, you could use Evergreen on your Mac and [Unread](http://supertop.co/unread/), [Reeder](http://reederapp.com/ios/), or other feed reader on your iPhone and iPad.)
|
||||
* You’re free to use the code and make your own feed reader, even on iOS. It’s MIT-licensed. Just give us credit and call it something besides Evergreen.
|
||||
|
||||
#### Technical Notes
|
||||
|
||||
Evergreen supports <a href="http://cyber.harvard.edu/rss/rss.html">RSS</a>, <a href="https://tools.ietf.org/html/rfc4287">Atom</a>, <a href="https://jsonfeed.org/">JSON Feed</a>, and <a href="https://github.com/scripting/Scripting-News/blob/master/rss-in-json/README.md">RSS-in-JSON</a>.
|
||||
|
||||
Evergreen requires macOS 10.13.
|
||||
|
||||
#### About Using the Code
|
||||
|
||||
You’re free to use the code and make your own app, even on iOS. It’s MIT-licensed. Just give us credit and call it something besides Evergreen.
|
||||
|
||||
In fact, <i>please do</i> use any or all of this code. If you can learn from it — things to do or things *not* to do — then great! Creating a full-featured example Mac app of use to other developers is one of our goals.
|
||||
|
||||
Most of the code is written in Swift. Some older parts, particularly in the frameworks, are written in Objective-C. We think this is one of the largest open source Mac apps written mostly in Swift.
|
||||
|
||||
#### About the name
|
||||
|
||||
Evergreen is made in Seattle and is named for Washington, the Evergreen State. The author, who attended The Evergreen State College, has two evergreen trees in his yard.
|
||||
|
||||
But the name is a prayer for the open web — may it remain evergreen.
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
@title Testing
|
||||
@pubDate Mon May 29 10:36:02 -0700 2017
|
||||
@modDate Mon May 29 10:36:02 -0700 2017
|
||||
This thing on?
|
|
@ -0,0 +1,12 @@
|
|||
@title Inching Toward Usability
|
||||
@pubDate 2017-12-22 15:17:07 -0800
|
||||
@modDate 2017-12-22 15:17:07 -0800
|
||||
While there is still so much to do — GitHub says we’re just 36% of the way (at this writing) toward completing the <a href="https://github.com/brentsimmons/Evergreen/milestone/1">1.0 alpha milestone</a> — Evergreen is getting closer and closer to actually usable.
|
||||
|
||||
The latest build (1.0d25) adds keyboard shortcuts, so you can (for instance) go through all your news via the space bar. (You can read about <a href="http://inessential.com/2017/12/20/wkwebview_workarounds">how we got this to work</a>.) You can hit `k` to mark all as read, and so on.
|
||||
|
||||
(For a complete list, open the Window menu and choose Keyboard Shortcuts.)
|
||||
|
||||
If you want to try it out, you can [download the latest build](https://ranchero.com/downloads/Evergreen-latest.zip).
|
||||
|
||||
Note: in the Help menu is a Bug Tracker item — use that to report bugs and make feature requests. (It goes to <a href="https://github.com/brentsimmons/Evergreen/issues">Evergreen’s bug tracker on GitHub</a>.)
|
|
@ -0,0 +1,8 @@
|
|||
@title Roadmap
|
||||
@pubDate 2017-12-23 15:38:00 -0800
|
||||
@modDate 2017-12-23 15:38:00 -0800
|
||||
We published the <a href="https://github.com/brentsimmons/Evergreen/blob/master/Technotes/Roadmap.md">Evergreen roadmap</a> today — it covers 1.0 and 2.0.
|
||||
|
||||
(What’s beyond 2.0? We haven’t even thought about it much yet.)
|
||||
|
||||
If there’s anything missing, or if you have questions, post to the <a href="https://github.com/brentsimmons/Evergreen/issues">bug tracker</a> or <a href="https://twitter.com/evergreen_mac">ask on Twitter</a>.
|
|
@ -1,9 +1,24 @@
|
|||
</div> <!-- content -->
|
||||
|
||||
<div id="footer">
|
||||
<p>© 1995-2017 Ranchero Software, LLC</p>
|
||||
<p>Made in Seattle.</p>
|
||||
|
||||
<div id="sidebar">
|
||||
<p class="sidebarText"><a href="https://ranchero.com/evergreen/"><img src="https://ranchero.com/evergreen/images/evergreenAvatar.png" width="100" height="100" alt="Evergreen avatar" /></a></p>
|
||||
<p class="sidebarText"><a href="https://ranchero.com/downloads/Evergreen-latest.zip">Latest Build</a><br />
|
||||
<a href="https://github.com/brentsimmons/Evergreen/tree/master/Technotes">Technotes</a> • <a href="https://twitter.com/evergreen_mac">Twitter</a> • <a href="https://ranchero.com/evergreen/blog/">Blog</a><br />
|
||||
<a href="https://github.com/brentsimmons/Evergreen">Repository</a> • <a href="https://github.com/brentsimmons/Evergreen/issues">Bug Tracker</a> • <a href="https://github.com/brentsimmons/Evergreen/blob/master/Technotes/Roadmap.md">Roadmap</a><br />
|
||||
<a href="https://ranchero.com/evergreen/xml/rss.xml">RSS</a> • <a href="https://ranchero.com/evergreen/feed.json">JSON Feed</a></p>
|
||||
<p class="sidebarText">Open Web Friends<br />
|
||||
<a href="https://www.red-sweater.com/marsedit/">MarsEdit</a> • <a href="https://micro.blog/">Micro.blog</a> • <a href="https://overcast.fm/">Overcast</a></p>
|
||||
|
||||
|
||||
</div> <!-- sidebar -->
|
||||
|
||||
|
||||
<p>© 1995-2017 <a href="https://ranchero.com/">Ranchero Software, LLC</a><br />
|
||||
Made in Seattle.</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
|
@ -12,6 +12,6 @@
|
|||
<script type="text/javascript"> </script> <!-- FOUC hack: http://www.bluerobot.com/web/css/fouc.asp -->
|
||||
</head>
|
||||
<body>
|
||||
<div id="banner"><div id="innerbanner"><h1><a href="https://ranchero.com/">Ranchero Software</a></span></h1></div></div>
|
||||
<div id="banner"><div id="innerbanner"><h1><a href="https://ranchero.com/evergreen/">Evergreen</a></span></h1>by <a href="https://ranchero.com/">Ranchero Software</a></div></div>
|
||||
|
||||
<div id="content">
|
||||
|
|
|
@ -15,16 +15,17 @@ a {
|
|||
}
|
||||
#banner {
|
||||
line-height: 2em;
|
||||
padding-top: 17px;
|
||||
padding-bottom: 1px;
|
||||
background-color: #445088;
|
||||
padding-top: 1px;
|
||||
padding-bottom: 7px;
|
||||
background-color: #333333;
|
||||
text-align: center;
|
||||
}
|
||||
#innerbanner {
|
||||
max-width: 30em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: left;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
#content {
|
||||
padding-bottom: 2em;
|
||||
|
@ -33,9 +34,11 @@ a {
|
|||
margin-right: auto;
|
||||
margin-top: 3.5em;
|
||||
}
|
||||
h1 a:link, h1 a:visited {
|
||||
#innerbanner a:link, #innerbanner a:visited {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
#innerbanner h1 {
|
||||
font-size: 48px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
@ -45,7 +48,6 @@ h1 {
|
|||
h2 {
|
||||
color: #666;
|
||||
margin-top: 2em;
|
||||
font-weight: normal;
|
||||
}
|
||||
a:link {
|
||||
color: #437C95;
|
||||
|
@ -60,13 +62,13 @@ a:visited {
|
|||
color: #999;
|
||||
font-size: 0.9em;
|
||||
text-align: center;
|
||||
border-toxp: 1px solid #ddd;
|
||||
backgrxound-color: #6A7DD4;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
code, pre {
|
||||
font-family: "SF Mono", Menlo, "Courier", monospace;
|
||||
font-size: 14px;
|
||||
font-size: 16px;
|
||||
color: #666;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
@media (max-width: 700px) {
|
||||
#innerbanner {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[[=header.html]]
|
||||
<h1>[[@title]]</h1>
|
||||
[[@bodytext]]
|
||||
[[=footer.html]]
|
||||
</body>
|
||||
|
|
Loading…
Reference in New Issue