Sage 1.5.2 Beta

Sage 1.5.2 beta has been released to the Dev Channel.

Update (7/29): beta 4 released

  • Fixed some issues that would cause the ‘Check Feeds’ action to fail
  • Resolved a problem with feeds using certain character encodings
  • Sage feed root management more robust
  • Better handling of feed items that don’t have a link

You can install this beta release here.

16 Responses to “Sage 1.5.2 Beta”

  1. Xeron says:

    Issue 104 is fixed as it renders the feed now but there is issue 67 on that feed as well. Feed items are checked as read in the sidebar (if you click “mark all read”) but not in the rendered view and the state isn’t remembered for those items (possible solution can be found in my comment on release version 1.5.1 – http://sagerss.com/blog/2013/06/sage-1-5-1-released/comment-page-1/#comment-64204 )

    • Great. True, we need to come up with a solution for the no feed item links scenario and, as with your proposal, may involve rethinking how Sage keeps track of read feed items. You might add your thoughts to the issue itself for easier tracking:

      https://github.com/petea/sage/issues/67

      • Xeron says:

        I tried messing with the mozilla addon sdk (jetpack) a bit and wrote my own xml parser and read/unread check. Using hashes works pretty well and collisions shouldn’t be a problem (chance for that should be way less than 1% with a normal feed length (10-1000 items) and a good hashing algorithm) but there a few ways to minimize them further:
        1. Each feed should have it’s own hash list. Shortend Javascript:
        require(“xhr”);
        var ss = require(“sdk/simple-storage”).storage;
        var xmlhttp = new XMLHttpRequest();
        // Using synchronous transfer should be enough for an example
        xmlhttp.open(“GET”,url,flase);
        xmlhttp.send();
        var xmlDoc = xmlhttp.responseXML;
        // Parse that Document in a JS Collection (there could be better Objects than Collections…)
        var parsedDoc = parseFeed(xmlDoc);
        // local storage for addons!
        if (!ss.list) {
        ss.list = {};
        }
        // we need a new list because we want to throw away the old one after comparing the items (unused items should be thrown out)
        var urlhash = hash(url), list = {}, itemhash;
        for (i = 0;i 32/64/128 bit – 32 should be enough -, url -> easy >30 byte (>240 bit)). A good hashing method under MIT-License is MurmurHash3 (there is a javascript implementation (by someone named Gary Court) available and I published that one on https://builder.addons.mozilla.org/ as a library).
        2. It could be enough to hash-check only linkless items.

        Both methods have problems:
        History:
        + Logs links clicked on other tabs than Sage tabs too.
        - Does only remember read links. If the entry changes (date/title/anything except link) it doesn’t revert back to “unread”/”new”.
        - Does not work on linkless items.
        Hash:
        + Works on any item.
        + If date/title(/description) is included in the hash it does log changes in the item.
        * Could log links clicked on other tabs but only if the pro argument above is neglecteted: Check history while parsing xml and set read state.
        - Possibility of collisions.

        P.S. like I said I don’t have a github account.

        • I think the feed item hash approach could potentially replace the current browser history based implementation. Maybe it’s time for you to get a GitHub account?

        • Xeron says:

          Oh…I just saw my code got cut in the loop:
          for (i = 0;i < parsedDoc['size']; i++) {
          // create hash using data available…using short version here but could consist of title + link (if it exists) + date (+ description but makes hashing slower because some descriptions are pretty long)
          itemhash = hash(parsedDoc['item']);
          // check for already visited items
          if (ss.list[urlhash][itemhash] == 'read') {
          list[itemhash] = 'read';
          }
          }
          // discard old list and replace with new one
          ss.list[urlhash] = list;
          renderFeed(parsedDoc,ss.list[urlhash]);

          This could also make it easier to combine feeds as they are parsed/statechecked before rendering.

          About github: I could create an account…but I don't have the time to do much at the moment so if I would create one I would not be available until late August or something.

      • Xeron says:

        I used the Addon Builder for testing so there could be a few problems integrating something like that in an addon not using jetpack…

        Migrating sage to the SDK isn’t an option yet right? (No sidebar in the SDK…)

  2. Don Pedro says:

    sage was a great extension, but firefox and it only gets worse.
    of that annoying
    1) so that if the feed is gone, the sage did not miss it and does not check the other feeds, and always makes checking
    2) very uncomfortable double click on the folders for
    3) mark all read was the mark (shade) news, the old sage logical flagged with only a list of news

  3. Martin says:

    ‘Check Feeds’ action still fails a lot for me. :(

  4. Matt Taggart says:

    1.5.2 beta fixed “Check feeds” for me (which broke on 1.5.1). I am on Iceweasel 22.

  5. While waiting for Sage to become useable again, I tried http://www.inoreader.com/ – works great. I might just switch.

Leave a Reply