Browser Add-ons, Feed Sidebar

Feed Sidebar updated with everything you wanted

I’ve just released an update to the Feed Sidebar Firefox extension that adds essentially every major feature request that I’ve gotten since version 1.2 came out:

  • Biggest improvement: Feed Sidebar now has its own history for tracking which items are read, rather than using the browser history. This means that you can clear your browsing history without clearing your feed reading history.
  • Feed Sidebar now uses Firefox’s native feed parser. This slims down the code in the extension and (probably) the number of bugs.
  • The sidebar now remembers which feeds you collapse, and the next time those feeds load, they’ll still be collapsed. This has been requested ever since the first version came out, so I feel good about getting it done.
  • You can unsubscribe from a feed directly from the sidebar by right-clicking on it and choosing “Unsubscribe.”
  • You can choose to display all items from all feeds, not just new items. If you enable this (in the Feed Sidebar preferences dialog), items you’ve read will be light gray; new items will appear as they always have.
  • I moved the update status (“Next update: 11:00 PM”, “Checking 123 of 456 feeds…”) to a status bar inside the sidebar. This clears up room in the toolbar for more buttons, if necessary.
  • The first time you run Firefox after installing the extension, the sidebar will open automatically, and the Feeds button will be added to the toolbar. (I had gotten lots of comments along the lines of “I installed it; now what do I do?” Hopefully, this will mitigate that problem.)

Overall, I thinks this version is much sleeker and much more usable than the last, which is pretty much all that matters. You can download the latest version of Feed Sidebar from Mozilla Add-ons.

Standard

8 comments on “Feed Sidebar updated with everything you wanted

  1. useru clairvoyant says:

    Fscking nagger here.

    Is it just me, or the summary window is empty for everybody?
    In this last version it just shows “No summary provided”,
    although I know that the owners of the feeds are doing it
    right (check for example http://www.theregister.co.uk )…

  2. Achim says:

    Maybe an option to disable the greying out of already visited entries would be nice.
    Or if anyone can explain me, why in the Spiegel Online RSS Feed (http://www.spiegel.de/schlagzeilen/rss/0,5291,,00.xml), every single entry is marked visited for me. meh :(
    Otherwise: great stuff.

    Also cool would be:
    – A lower limit than “last day”. At best, configurable.
    Or maybe even some sort of folder structure you can define (eg. one folder for last 4 hours, today, yesterday, …)
    – Right click on feed => “Update this feed”
    – Option to only show feeds from a special folder
    – Favicon instead of folder for the feedlist
    – Some green dot or something that indicates “hey, look! new stuff in this feed!” that disappears when you opened that feed.

  3. BW says:

    It leaks. I’ve posted a leak report make by Leak Monitor below.
    http://dbaron.org/mozilla/leak-monitor/

    Leaks in window 0x18f3b540:
    [+] [leaked object] (18f3b090) = [Object]
    [ ] tree = true
    [ ] progressText = true
    [ ] previewPane = true
    [ ] nextUpdateDisplay = true
    [ ] strings = true
    [ ] displayPeriod = true
    [+] prefs (19000dd8) = [XPCWrappedNative_NoHelper]
    [+] QueryInterface (19000dd0) = [Function]
    [ ] prototype (4b7f3b8) = [Object]
    [ ] addObserver (19000db8) = [Function]
    [+] getIntPref (19052f40) = [Function]
    [ ] prototype (41c0e98) = [Object]
    [ ] getBoolPref (19052408) = [Function]
    [ ] root = true
    [+] getPrefType (41e8be0) = [Function]
    [ ] prototype (41c2740) = [Object]
    [+] setBoolPref (49c9e60) = [Function]
    [ ] prototype (41c2748) = [Object]
    [+] getCharPref (49c9d78) = [Function]
    [ ] prototype (41c2750) = [Object]
    [+] setCharPref (49c9d58) = [Function]
    [ ] prototype (41c2758) = [Object]
    [+] setIntPref (49c9d38) = [Function]
    [ ] prototype (41c2770) = [Object]
    [+] getComplexValue (49c9d30) = [Function]
    [ ] prototype (41c2788) = [Object]
    [+] setComplexValue (49c9ca8) = [Function]
    [ ] prototype (41c28a0) = [Object]
    [+] clearUserPref (49c99c8) = [Function]
    [ ] prototype (41c2988) = [Object]
    [+] lockPref (49c9970) = [Function]
    [ ] prototype (41c29e0) = [Object]
    [+] prefHasUserValue (49c9898) = [Function]
    [ ] prototype (41c2b10) = [Object]
    [+] prefIsLocked (49c9730) = [Function]
    [ ] prototype (41c2bd8) = [Object]
    [+] unlockPref (49c9728) = [Function]
    [ ] prototype (49c8cd8) = [Object]
    [+] deleteBranch (49c9718) = [Function]
    [ ] prototype (49c8dc0) = [Object]
    [+] getChildList (49c9700) = [Function]
    [ ] prototype (49c8e30) = [Object]
    [+] resetBranch (49c9658) = [Function]
    [ ] prototype (49c8e68) = [Object]
    [ ] PREF_INVALID = 0
    [ ] PREF_STRING = 32
    [ ] PREF_INT = 64
    [ ] PREF_BOOL = 128
    [+] removeObserver (49c9610) = [Function]
    [ ] prototype (49c95d0) = [Object]
    [ ] feedsToLoad = 0
    [ ] feedsLoaded = 0
    [ ] updateTimer = 3
    [ ] loadTimer = null
    [ ] currentRequest = null
    [ ] feeds (18f3ade8) = [Array]
    [ ] feedData (18f3ade0) = [Object]
    [ ] lastUpdate = true
    [ ] nextUpdate = true
    [+] init (18f3adc0, chrome://feedbar/content/feedbar.js, 57-96) = [Function]
    [ ] prototype (42d1f90) = [Object]
    [+] observe (18f3ada0, chrome://feedbar/content/feedbar.js, 99-120) = [Function]
    [ ] prototype (3af8c68) = [Object]
    [+] updateFeeds (18f3ad90, chrome://feedbar/content/feedbar.js, 124-138) = [Function]
    [ ] prototype (3af94a8) = [Object]
    [+] stopUpdate (18f3ad88, chrome://feedbar/content/feedbar.js, 142-144) = [Function]
    [ ] prototype (4945190) = [Object]
    [+] findFeeds (18f3ad80, chrome://feedbar/content/feedbar.js, 147-218) = [Function]
    [ ] prototype (40ae178) = [Object]
    [+] loadFeeds (18f3ad78, chrome://feedbar/content/feedbar.js, 221-232) = [Function]
    [ ] prototype (40af580) = [Object]
    [+] loadNextFeed (18f3ad70, chrome://feedbar/content/feedbar.js, 235-288) = [Function]
    [ ] prototype (40af598) = [Object]
    [+] queueForParsing (18f3ad60, chrome://feedbar/content/feedbar.js, 292-315) = [Function]
    [ ] prototype (40af5d8) = [Object]
    [+] setDisplayPeriod (18f3ad58, chrome://feedbar/content/feedbar.js, 318-319) = [Function]
    [ ] prototype (40af808) = [Object]
    [+] updateTreeViewFromCache (18f3ad50, chrome://feedbar/content/feedbar.js, 322-324) = [Function]
    [ ] prototype (40af8c0) = [Object]
    [+] clearTree (18f3ad48, chrome://feedbar/content/feedbar.js, 327-330) = [Function]
    [ ] prototype (40afae8) = [Object]
    [+] setUpdateFrequency (18f3ad40, chrome://feedbar/content/feedbar.js, 333-334) = [Function]
    [ ] prototype (40750e0) = [Object]
    [+] setReloadInterval (18f3ad38, chrome://feedbar/content/feedbar.js, 337-355) = [Function]
    [ ] prototype (40753f8) = [Object]
    [+] checkFrequencyItem (18f3ad30, chrome://feedbar/content/feedbar.js, 359-369) = [Function]
    [ ] prototype (4075bb8) = [Object]
    [+] checkPeriodItem (18f3ad28, chrome://feedbar/content/feedbar.js, 373-383) = [Function]
    [ ] prototype (4075c20) = [Object]
    [+] history (18f3ad20) = [Object]
    [+] hService (18f3acb0) = [XPCWrappedNative_NoHelper]
    [ ] isVisited (190523b0) = [Function]
    [-] QueryInterface (4bcfde8) = [Function]
    [-] addURI (4bcfca8) = [Function]
    [-] setPageTitle (4bcf680) = [Function]
    [+] ioService (18f3ac90) = [XPCWrappedNative_NoHelper]
    [ ] newURI (190523e8) = [Function]
    [-] QueryInterface (4bd0ae0) = [Function]
    [-] getProtocolHandler (4bd0460) = [Function]
    [-] getProtocolFlags (4bd03e8) = [Function]
    [-] newFileURI (4bd02f0) = [Function]
    [-] newChannelFromURI (4bd02e8) = [Function]
    [-] newChannel (4bd00e0) = [Function]
    [ ] offline = true
    [-] allowPort (4bd00a0) = [Function]
    [-] extractScheme (4bcfe08) = [Function]
    [+] URI (1968dfe8) = [XPCWrappedNative_NoHelper]
    [ ] spec = true
    [ ] prePath = true
    [ ] scheme = true
    [ ] userPass = true
    [ ] username = true
    [ ] password = true
    [ ] hostPort = true
    [ ] host = true
    [ ] port = true
    [ ] path = true
    [-] equals (4b914c8) = [Function]
    [-] schemeIs (4b913e8) = [Function]
    [-] clone (4b913d8) = [Function]
    [-] resolve (4b91378) = [Function]
    [ ] asciiSpec = true
    [ ] asciiHost = true
    [ ] originCharset = true
    [+] isVisitedURL (18f3ac88, chrome://feedbar/content/feedbar.js, 393-434) = [Function]
    [ ] prototype (4b7e460) = [Object]
    [+] updateLoadProgress (18f3ac80, chrome://feedbar/content/feedbar.js, 439-462) = [Function]
    [ ] prototype (4075c68) = [Object]
    [+] itemSelect (18f3ac78, chrome://feedbar/content/feedbar.js, 466-468) = [Function]
    [ ] prototype (4075d40) = [Object]
    [+] onTreeClick (18f3ac70, chrome://feedbar/content/feedbar.js, 471-569) = [Function]
    [ ] prototype (4076120) = [Object]
    [+] markItemAsRead (18f3ac68, chrome://feedbar/content/feedbar.js, 573-595) = [Function]
    [ ] prototype (3fea500) = [Object]
    [+] removeItem (18f3ac60, chrome://feedbar/content/feedbar.js, 598-608) = [Function]
    [ ] prototype (3fea748) = [Object]
    [+] showItems (18f3ac58, chrome://feedbar/content/feedbar.js, 611-731) = [Function]
    [ ] prototype (3fea980) = [Object]
    [+] confirmOpenTabs (18f3ac50, chrome://feedbar/content/feedbar.js, 735-765) = [Function]
    [ ] prototype (3fea9b0) = [Object]
    [+] options (18f3ac48, chrome://feedbar/content/feedbar.js, 768-769) = [Function]
    [ ] prototype (3d85fc0) = [Object]
    [+] contextMenu (18f3ac38) = [Object]
    [ ] item = true
    [+] customize (18f3ac28, chrome://feedbar/content/feedbar.js, 775-889) = [Function]
    [ ] prototype (5026a58) = [Object]
    [+] openItem (18f3ac20, chrome://feedbar/content/feedbar.js, 892-893) = [Function]
    [ ] prototype (5026a98) = [Object]
    [+] openInWindow (18f3ac18, chrome://feedbar/content/feedbar.js, 896-897) = [Function]
    [ ] prototype (5026ab0) = [Object]
    [+] openInTab (18f3ac10, chrome://feedbar/content/feedbar.js, 900-901) = [Function]
    [ ] prototype (5026ae0) = [Object]
    [+] openAll (18f3ac08, chrome://feedbar/content/feedbar.js, 904-919) = [Function]
    [ ] prototype (4fd6db8) = [Object]
    [+] openFeed (18f3abf0, chrome://feedbar/content/feedbar.js, 924-939) = [Function]
    [ ] prototype (4fd7570) = [Object]
    [+] markAsRead (18f3abe8, chrome://feedbar/content/feedbar.js, 944-949) = [Function]
    [ ] prototype (4fd7668) = [Object]
    [+] markFeedAsRead (18f3abe0, chrome://feedbar/content/feedbar.js, 953-959) = [Function]
    [ ] prototype (4fd8650) = [Object]
    [+] markAllAsRead (18f3abd8, chrome://feedbar/content/feedbar.js, 963-975) = [Function]
    [ ] prototype (4fd8768) = [Object]
    [+] unsubscribe (18f3abd0, chrome://feedbar/content/feedbar.js, 980-986) = [Function]
    [ ] prototype (4f95020) = [Object]
    [+] showPreview (18f3abc8, chrome://feedbar/content/feedbar.js, 990-1031) = [Function]
    [ ] prototype (1d96498) = [Object]
    [+] addError (18f3abc0, chrome://feedbar/content/feedbar.js, 1035-1037) = [Function]
    [ ] prototype (1d964a0) = [Object]
    [+] unsubscribe (18f3abb8, chrome://feedbar/content/feedbar.js, 1040-1084) = [Function]
    [ ] prototype (1d964b8) = [Object]
    [+] notifyCallback (18f3aba0, chrome://feedbar/content/feedbar.js, 1089-1093) = [Function]
    [ ] prototype (1d964d0) = [Object]
    [+] notifyNoFeeds (18f3ab98, chrome://feedbar/content/feedbar.js, 1096-1098) = [Function]
    [ ] prototype (1dc6208) = [Object]
    [+] noFeedsFoundCallback (18f3ab90, chrome://feedbar/content/feedbar.js, 1101-1102) = [Function]
    [ ] prototype (1dc6210) = [Object]
    [+] clearNotify (18f3ab88, chrome://feedbar/content/feedbar.js, 1105-1106) = [Function]
    [ ] prototype (1dc6220) = [Object]
    [+] getSelected (18f3ab80, chrome://feedbar/content/feedbar.js, 1109-1121) = [Function]
    [ ] prototype (1dc6230) = [Object]
    [+] launchUrl (18f3ab78, chrome://feedbar/content/feedbar.js, 1124-1132) = [Function]
    [ ] prototype (173bc40) = [Object]
    [+] _addTab (18f3ab70, chrome://feedbar/content/feedbar.js, 1136-1150) = [Function]
    [ ] prototype (173bc58) = [Object]
    [+] _inTab (18f3ab68, chrome://feedbar/content/feedbar.js, 1154-1155) = [Function]
    [ ] prototype (173bc68) = [Object]
    [+] getDB (18f3ab60, chrome://feedbar/content/feedbar.js, 1158-1168) = [Function]
    [ ] prototype (14a3778) = [Object]

  4. Cariboo says:

    I started using Feed Sidebar with 1.3.1 and beta 4 of firefox 3. The first problem I have with feeds was for example http://www.dwdl.de/features/rss/rss2.php?channels=all, with 1.3.1 it showed a script error, with 1.3.2 nothing is shown: no error, no feed. The feed works well within the firefox bookmarks.

    The second problem came with 1.3.2: half of all my subscribed feeds don’t show up at all, because all messages are marked as read even the new ones.
    http://www.stern.de/standard/rss.php?channel=politik
    http://www.spiegel.de/schlagzeilen/rss/0,5291,,00.xml

    Third problem, how to get to the options the easy way? Currently I have to go to the whole Tools->Add-ons thing or wait till the sidebar is empty to a popup menu with Options.

    One suggestion, a “Show only x messages per feed” option … please.

  5. Cariboo says:

    Forgot a bug(?): when I have feedbar set to show all read items and click on “Mark All as Read” the script hangs up, firefox asks for chrome://feedbar/content/feedbar.js:975 to cancel or resume.

  6. Boris says:

    Hi Christopher,
    thank you very much for your feedbar which I use for years.
    Unfortenatly since 2 days it does no longer work for the german site http://www.spiegel-online.de.
    Im getting no longer new feeds and if I click on a old one/existing one the sidebar is in any case only opening the overview side “www.spiegel-online.de” and no longer the deticated articel.
    I am using Beta FF26.0.
    Hope you can help.
    Many Thanks!
    Boris

Leave a Reply

Your email address will not be published. Required fields are marked *