Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7df70a7936 | ||
|
|
e8c4c06d33 | ||
|
|
a9c0e64689 |
26
CHANGELOG.md
26
CHANGELOG.md
@@ -8,7 +8,12 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
|
||||||
## [1.1.0] - 2020-01-17
|
## [1.1.1] – 2020-08-31
|
||||||
|
### Fixed
|
||||||
|
- Feed indices weren't updated properly which resulted in empty feed menus (issue: #6)
|
||||||
|
|
||||||
|
|
||||||
|
## [1.1.0] – 2020-01-17
|
||||||
### Added
|
### Added
|
||||||
- *QuickLook*: Thumbnail previews for OPML files (QLOPML v1.3)
|
- *QuickLook*: Thumbnail previews for OPML files (QLOPML v1.3)
|
||||||
- *Status Bar Menu*: Tint menu bar icon with Accent color (macOS 10.14+)
|
- *Status Bar Menu*: Tint menu bar icon with Accent color (macOS 10.14+)
|
||||||
@@ -17,19 +22,19 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- Resolved Xcode warnings in Xcode 11
|
- Resolved Xcode warnings in Xcode 11
|
||||||
|
|
||||||
|
|
||||||
## [1.0.2] - 2019-10-25
|
## [1.0.2] – 2019-10-25
|
||||||
### Fixed
|
### Fixed
|
||||||
- *Status Bar Menu*: Preferences could not be opened on macOS 10.15
|
- *Status Bar Menu*: Preferences could not be opened on macOS 10.15
|
||||||
- *Status Bar Menu*: Menu flickering resulting in a hang on macOS 10.15
|
- *Status Bar Menu*: Menu flickering resulting in a hang on macOS 10.15
|
||||||
- *UI*: Text color in `About` tab
|
- *UI*: Text color in `About` tab
|
||||||
|
|
||||||
|
|
||||||
## [1.0.1] - 2019-10-04
|
## [1.0.1] – 2019-10-04
|
||||||
### Fixed
|
### Fixed
|
||||||
- Crash on macOS 10.14 due to a `CGColorRef` null pointer
|
- Crash on macOS 10.14 due to a `CGColorRef` null pointer
|
||||||
|
|
||||||
|
|
||||||
## [1.0.0] - 2019-10-03
|
## [1.0.0] – 2019-10-03
|
||||||
### Added
|
### Added
|
||||||
- App Signing
|
- App Signing
|
||||||
- Sandboxing & hardened runtime environment
|
- Sandboxing & hardened runtime environment
|
||||||
@@ -86,7 +91,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- *UI:* Mark unread articles with blue dot, instead of tick mark
|
- *UI:* Mark unread articles with blue dot, instead of tick mark
|
||||||
|
|
||||||
|
|
||||||
## [0.9.4] - 2019-04-02
|
## [0.9.4] – 2019-04-02
|
||||||
### Fixed
|
### Fixed
|
||||||
- Article order got mixed up for some feeds (issue: #4)
|
- Article order got mixed up for some feeds (issue: #4)
|
||||||
- If multiple consecutive items reappear in the middle of the feed mark them read
|
- If multiple consecutive items reappear in the middle of the feed mark them read
|
||||||
@@ -95,7 +100,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- *UI:* Removed checkbox `Start on login`. Use Preferences > Users > Login Items instead.
|
- *UI:* Removed checkbox `Start on login`. Use Preferences > Users > Login Items instead.
|
||||||
|
|
||||||
|
|
||||||
## [0.9.3] - 2019-03-14
|
## [0.9.3] – 2019-03-14
|
||||||
### Added
|
### Added
|
||||||
- Changelog
|
- Changelog
|
||||||
- *UI:* Show body tag in article tooltip if abstract tag is empty
|
- *UI:* Show body tag in article tooltip if abstract tag is empty
|
||||||
@@ -105,7 +110,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- Fixed update for feeds where all article URLs point to the same resource (issue: #3)
|
- Fixed update for feeds where all article URLs point to the same resource (issue: #3)
|
||||||
|
|
||||||
|
|
||||||
## [0.9.2] - 2019-03-07
|
## [0.9.2] – 2019-03-07
|
||||||
### Added
|
### Added
|
||||||
- Limit number of articles that are displayed in feed menu (issue: #2)
|
- Limit number of articles that are displayed in feed menu (issue: #2)
|
||||||
|
|
||||||
@@ -115,7 +120,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- libxml2 will ignore lower ascii characters (`0x00`–`0x1F`)
|
- libxml2 will ignore lower ascii characters (`0x00`–`0x1F`)
|
||||||
|
|
||||||
|
|
||||||
## [0.9.1] - 2019-02-14
|
## [0.9.1] – 2019-02-14
|
||||||
### Added
|
### Added
|
||||||
- Mark single article as un/read (hold down option key and click on article)
|
- Mark single article as un/read (hold down option key and click on article)
|
||||||
|
|
||||||
@@ -133,11 +138,12 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- Remove html tags from abstract on save (not on display)
|
- Remove html tags from abstract on save (not on display)
|
||||||
|
|
||||||
|
|
||||||
## [0.9] - 2019-02-11
|
## [0.9] – 2019-02-11
|
||||||
Initial release
|
Initial release
|
||||||
|
|
||||||
|
|
||||||
[Unreleased]: https://github.com/relikd/baRSS/compare/v1.1.0...HEAD
|
[Unreleased]: https://github.com/relikd/baRSS/compare/v1.1.1...HEAD
|
||||||
|
[1.1.1]: https://github.com/relikd/baRSS/compare/v1.1.0...v1.1.1
|
||||||
[1.1.0]: https://github.com/relikd/baRSS/compare/v1.0.2...v1.1.0
|
[1.1.0]: https://github.com/relikd/baRSS/compare/v1.0.2...v1.1.0
|
||||||
[1.0.2]: https://github.com/relikd/baRSS/compare/v1.0.1...v1.0.2
|
[1.0.2]: https://github.com/relikd/baRSS/compare/v1.0.1...v1.0.2
|
||||||
[1.0.1]: https://github.com/relikd/baRSS/compare/v1.0.0...v1.0.1
|
[1.0.1]: https://github.com/relikd/baRSS/compare/v1.0.0...v1.0.1
|
||||||
|
|||||||
@@ -196,7 +196,8 @@
|
|||||||
if (self.articles.count == 0) {
|
if (self.articles.count == 0) {
|
||||||
img = [NSImage imageNamed:NSImageNameCaution];
|
img = [NSImage imageNamed:NSImageNameCaution];
|
||||||
} else if (self.hasIcon) {
|
} else if (self.hasIcon) {
|
||||||
img = [[NSImage alloc] initByReferencingURL:[self iconPath]];
|
NSData* data = [[NSData alloc] initWithContentsOfURL:[self iconPath]];
|
||||||
|
img = [[NSImage alloc] initWithData:data];
|
||||||
} else {
|
} else {
|
||||||
img = [NSImage imageNamed:RSSImageDefaultRSSIcon];
|
img = [NSImage imageNamed:RSSImageDefaultRSSIcon];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,10 +89,11 @@
|
|||||||
- (void)setSortIndexIfChanged:(int32_t)sortIndex {
|
- (void)setSortIndexIfChanged:(int32_t)sortIndex {
|
||||||
if (self.sortIndex != sortIndex) {
|
if (self.sortIndex != sortIndex) {
|
||||||
self.sortIndex = sortIndex;
|
self.sortIndex = sortIndex;
|
||||||
[self iterateSorted:NO overDescendantFeeds:^(Feed *feed, BOOL *cancel) {
|
|
||||||
[feed calculateAndSetIndexPathString];
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
// Otherwise move from 0.0 -> 0 will not trigger index path update
|
||||||
|
[self iterateSorted:NO overDescendantFeeds:^(Feed *feed, BOOL *cancel) {
|
||||||
|
[feed calculateAndSetIndexPathString];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set @c name attribute but only if value differs.
|
/// Set @c name attribute but only if value differs.
|
||||||
|
|||||||
@@ -147,7 +147,13 @@
|
|||||||
return;
|
return;
|
||||||
self.currentDownload = [[NSURLRequest requestWithURL:self.remoteURL] downloadTask:^(NSURL * _Nullable path, NSError * _Nullable error) {
|
self.currentDownload = [[NSURLRequest requestWithURL:self.remoteURL] downloadTask:^(NSURL * _Nullable path, NSError * _Nullable error) {
|
||||||
if (error) path = nil; // will also nullify img
|
if (error) path = nil; // will also nullify img
|
||||||
NSImage *img = path ? [[NSImage alloc] initByReferencingURL:path] : nil;
|
NSImage *img;
|
||||||
|
if (path) {
|
||||||
|
NSData* data = [[NSData alloc] initWithContentsOfURL:path];
|
||||||
|
img = [[NSImage alloc] initWithData:data];
|
||||||
|
} else {
|
||||||
|
img = nil;
|
||||||
|
}
|
||||||
if (img.valid) {
|
if (img.valid) {
|
||||||
// move image to temporary destination, otherwise dataTask: will delete it.
|
// move image to temporary destination, otherwise dataTask: will delete it.
|
||||||
NSString *tmpFile = NSProcessInfo.processInfo.globallyUniqueString;
|
NSString *tmpFile = NSProcessInfo.processInfo.globallyUniqueString;
|
||||||
@@ -166,7 +172,8 @@
|
|||||||
if (self.canceled)
|
if (self.canceled)
|
||||||
return;
|
return;
|
||||||
NSURL *path = self.fileURL;
|
NSURL *path = self.fileURL;
|
||||||
NSImage *img = [[NSImage alloc] initByReferencingURL:path];
|
NSData* data = [[NSData alloc] initWithContentsOfURL:path];
|
||||||
|
NSImage* img = [[NSImage alloc] initWithData:data];
|
||||||
if (!img.valid) { path = nil; img = nil; }
|
if (!img.valid) { path = nil; img = nil; }
|
||||||
#if DEBUG && ENV_LOG_DOWNLOAD
|
#if DEBUG && ENV_LOG_DOWNLOAD
|
||||||
printf("ICON %1.0fx%1.0f %s\n", img.size.width, img.size.height, self.remoteURL.absoluteString.UTF8String);
|
printf("ICON %1.0fx%1.0f %s\n", img.size.width, img.size.height, self.remoteURL.absoluteString.UTF8String);
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.1.0</string>
|
<string>1.1.1</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>14603</string>
|
<string>14624</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string>public.app-category.news</string>
|
<string>public.app-category.news</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
|||||||
@@ -216,7 +216,13 @@
|
|||||||
*/
|
*/
|
||||||
- (void)faviconDownload:(FaviconDownload*)sender didFinish:(nullable NSURL*)path {
|
- (void)faviconDownload:(FaviconDownload*)sender didFinish:(nullable NSURL*)path {
|
||||||
// Create image from favicon temporary file location or default icon if no favicon exists.
|
// Create image from favicon temporary file location or default icon if no favicon exists.
|
||||||
NSImage *img = path ? [[NSImage alloc] initByReferencingURL:path] : [NSImage imageNamed:RSSImageDefaultRSSIcon];
|
NSImage *img;
|
||||||
|
if (path) {
|
||||||
|
NSData* data = [[NSData alloc] initWithContentsOfURL:path];
|
||||||
|
img = [[NSImage alloc] initWithData:data];
|
||||||
|
} else {
|
||||||
|
img = [NSImage imageNamed:RSSImageDefaultRSSIcon];
|
||||||
|
}
|
||||||
self.view.favicon.image = img;
|
self.view.favicon.image = img;
|
||||||
self.faviconFile = path;
|
self.faviconFile = path;
|
||||||
[self downloadComplete];
|
[self downloadComplete];
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
[content setFrameSize: NSMakeSize(w, h)];
|
[content setFrameSize: NSMakeSize(w, h)];
|
||||||
|
|
||||||
// after content size, increase to window size
|
// after content size, increase to window size
|
||||||
w += 2 * PAD_WIN;
|
w += 2 * (NSInteger)PAD_WIN;
|
||||||
h += PAD_WIN + contentOffsetY; // the second PAD_WIN is already in contentOffsetY
|
h += PAD_WIN + contentOffsetY; // the second PAD_WIN is already in contentOffsetY
|
||||||
|
|
||||||
NSWindowStyleMask style = NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskFullSizeContentView;
|
NSWindowStyleMask style = NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskFullSizeContentView;
|
||||||
|
|||||||
Reference in New Issue
Block a user