bitpiston / rss-button-for-safari Goto Github PK
View Code? Open in Web Editor NEWSafari web extension for news feed discovery of RSS, Atom, JSON Feed & RDF+RSS.
Home Page: https://rssdiscovery.app
License: MIT License
Safari web extension for news feed discovery of RSS, Atom, JSON Feed & RDF+RSS.
Home Page: https://rssdiscovery.app
License: MIT License
RiverNews doesn't register with Launch Services as a viewer for the feed URL scheme.
I reached out to the author a few times via email and the emails always bounce back. Product dead despite site and still on MAS?
For those that want a more minimal option than yet another toolbar button we could do a share sheet.
https://feedwrangler.net/feeds/bookmarklet?feed_url={url}
Registered in launch services but no dialog to subscribe opens after NewsBar 3.8.4 takes focus.
For those darn pages only linking to feeds instead of using alternates in head.
Since iOS version doesn’t have a toolbar button. Bonus points for being more accurate descriptor of what it does.
The list of applications and services is getting a bit long plus telling the difference between an app and a web service with the same name is confusing.
Ideally this could be changed into a two step selection. First the user is presented with a drop down choice between: desktop applications, web services, custom/self hosted or copy to clipboard. Secondly for applications or web services present a list of the available ones to choose from much like we already do. For custom / self hosted present the current text input for the URL. We should probably validate it for the placeholder string and present some guidance here as well.
Alternatively instead of the drop down menus we could do something iOS settings menus with the list of options split into groups with the checkmark. Sorta like the VPN list from iOS under general but with a selection rather than toggle above it for app/web/etc?
With a share sheet like #21 it should be possible to support iOS as well.
This would likely require putting a list of known rss readers together and checking if the uri schemes exist since there isn’t a public API equivalent of launch services to fetch apps by uri scheme.
Platforms such as WordPress, Medium, Tumblr, YouTube, Blogger etc have predictable feed urls even if they aren’t publishing the auto discovery links in the head section.
See:
https://perishablepress.com/what-is-my-wordpress-feed-url/
https://zapier.com/blog/how-to-find-rss-feed-url/
For other websites that publish pages with links of feeds without auto-discovery it’s a little more of a pain. Perhaps we can crawl these and generate a database?
It’s possible for apple mail to be the default reader in launch services (presumably old installs where preferences have persisted since before apple mail’s rss support was dropped) which will then throw an error when using the extension if the user has not selected a reader from the app.
Easiest fix is blacklisting the apple mail identifier for v1.x and v2 onward won’t be affected by this due to using whitelisted readers.
This would handle SPAs should the available feeds change during navigating.
https://developer.apple.com/documentation/appkit/nsworkspace/1535886-open
open(_:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:)
needs to be replaced with open(_:withApplicationAt:configuration:completionHandler:)
which will require changes to FeedHandlerModel
, SettingsManager
, and ViewController.updateFeedHandlers()
to replace bundle IDs with URLs. Existing preferences will need to be updated as well.
Alternatively we can leave everything else as is and use urlForApplication(withBundleIdentifier:)
to fetch this as needed. Probably an even better idea strictly in the event the application is either renamed or moved for some reason.
https://developer.apple.com/documentation/appkit/nsworkspace/1534053-urlforapplication
Bump minimum required macOS version to 11 and Safari to 14 for SwiftUI 2.0.
Perhaps we should display the popover with information no feeds are available rather than disabling the popover on pages without feeds.
This would likely result in less negative reviews and support requests.
Additionally it would be a good place to add a report an issue link. Users could then easily submit the website via email to support to verify if the website has proper auto-discovery tags.
Provided we use the existing identifier and replace it with a v2 rather than new app.
Currently Safari extensions do not support localization.
This would be ideal for determining feed type at a glance provided atom had a logo. It would also reduce the space taken up currently for types giving URLs a little more space.
Displaying a text field below the drop down when a new custom web reader entry is selected would probably the easiest way to handle it.
All / rss / atom / json tabs? Alternatively combine multiple formats of each feed into one entry with a drop down selection when clicking subscribe?
Winds doesn't register in Launch Services as a viewer for the feed URL scheme.
Unable to find email or contact info?
https://www.facebook.com/macrssreader/
Specifically should mention the readers with known issues / known working readers.
Should also mention how to reinstall if the extension is not visible in Safari.
https://github.com/bitpiston/rss-extension.bitpiston.com/issues/1
Extensions have a 6Mb memory limit and background pages are not persistent. I doubt the app extension process is persistent either as the existing app extensions are not.
Rather than the pop up dialog informing the user we should just launch the app.
Probably best to hide incompatible readers from the list of available readers installed that are known to be dead or otherwise not interested in supporting the feed URI scheme.
Requested numerous times and easier than maintaining the list of blacklisted clients to display the warning dialog to copy URLs from.
Probably should be an option in the client list as the URL displayed in the popover is truncated when too long.
Add ability to tab through feeds auto focusing the subscribe button similar to the Safari downloads popover.
Takes focus but doesn't pre-populate the subscription dialog. Fairly sure this used to work in v1 and v2 so I think its a regression. v4 is coming "soon".
Contacted the developer via email about a month ago with no response.
Appears to be limited to running debug builds presumably during attaching the debugger to the process. The debug and release builds in both xcode 12 and 13 run fine without the debugger attached.
Creating a new xcode project for comparison does not seem to hang though.
Temporary work around is to uncheck debug executable in schemes.
Registered in launch services but no dialog to subscribe opens after Thunderbird takes focus.
Bug filled upstream with Mozilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=1611776
Mentioned as not supported in an review on the AppStore. Need to investigate and likely reach out to the author for support.
Pulp doesn't register as a viewer for the feed URL scheme and isn't detected as an available reader.
Author responded via email that this will not be fixed as development has ceased despite it being for sale on MAS still.
So far consistently on macOS 11.1 (20C69) and across both X86-64 (Native) / ARM-64 on the main thread 0 with nothing in the traces from the extension itself.
Several nearly identical stack traces on the developer forms for safari extensions seem to indicate this may be a known issue upstream from the extension?
Readable feeds would be nice if we can target injecting styles by mime type or parse for something to consistently identify feeds. A bar along the top with a button to subscribe or copy the url to clipboard would be handy.
This could be included as an optional additional extension or be part of the existing extension.
Looks like application/feed+json isn't widely used yet so we will have to live with some non-feed json alternates showing up.
It’s pretty ugly. I believe 1blocker has or had an option for this but there is a leak in Safari:
https://github.com/1Blocker/MemoryLeaker-DemoProject
If parsing pages for feeds was moved from the injected client side script to a server side API we wouldn’t need the entitlement for full access which is apparently scary judging by AppStore reviews complaining about security risks.
This could likely be done on AWS Lambda free tier. Additionally CloudFlare workers could be used to cache at the edge and reduce costs or the entire thing could be handled at the edge by CloudFlare workers. Much better latency (no cold starts) and much more predictable costs with only CloudFlare workers.
Pros:
Cons:
Machine learning might be viable to sniff out feeds linked on the page that don’t have alternates or for providing feeds from page content when no feeds are available.
Likely the extension failed to load after installation from MAS. This can be verified with:
pluginkit -mAvvv -p com.apple.Safari.extension
Sometimes rebooting or quitting both the app and Safari then relaunching is sufficient to trigger loading the extension. Otherwise quit Safari, trash the application and reinstall from MAS.
Client | Tested | Result |
---|---|---|
Cappuccino | ✔️ | ✅ |
Cream | ✔️ | ❌ |
Feed Notifier | ✔️ | ❌ |
Feedy | ✔️ | ✅ |
Leaf | ✔️ | ✅ |
MobileRSS | ||
NetNewsWire (old) | ✔️ | ✅ |
NetNewsWire (new, v5?) | ✔️ | ✅ |
NewsBar | ||
News Explorer | ✔️ | ✅ |
Pulp | ✔️ | ❌ |
ReadKit | ✔️ | ✅ |
Reeder 3 | ✔️ | ❌ |
Reeder 4 | ✔️ | ✅ |
RSS Bot | ||
RSS Follower | ||
RSS Menu | ||
RiverNews | ✔️ | ❌ |
Stripes | ✔️ | ✅ |
Winds | ✔️ | ❌ |
We should add this client to unsupported list for now.
Reached out to the developer earlier this year on behalf of a user but no response or update to fix support for parsing feed:https:// vs feed://
The minimal reader link now redirects to some defense company with a url similar to https://lmtdefense.designingit.co. In addition, the website is not safe as per a Safari warning.
For SPAs we currently poll as a ugly work around to the lack of any event for history changes not intimidated by the browser/user and lack of the webNavigation API.
Not polling would be preferred. On iOS it might even be required due to the lack of persistence to save battery life. I’m not sure offhand if content scripts are persistent at all.
If I remember correctly the current polling method would only catch the change if the URL changes but not the history or page content itself. If we must poll this should at least be cases we can cover.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.