Skip to content
Commits on Jul 13, 2015
Commits on Jul 12, 2015
  1. Prevent duplicate watch sockets

    committed Jul 11, 2015
Commits on Jul 11, 2015
  1. Don't decode fragments, only whole messages

    committed Jul 11, 2015
    So we don't try to decode an incomplete character.
Commits on Jul 5, 2015
  1. Fix EINTR with new fragless code

    committed Jul 5, 2015
    Returning used to just postpone the current fragment, now that we know
    the size and have no fragments, we can just properly retry.
Commits on Jun 29, 2015
  1. sync-inoreader: requests should timeout

    committed Jun 29, 2015
    Apparently the standard socket timeout is ignored? Regardless,
    occasionally the request seems to hang for a long period (possibly
    server trouble?) and it appears to deadlock the daemon because the
    feed's internal lock is being held, which halts sync operations.
Commits on Jun 24, 2015
  1. Brush up manpages

    committed Jun 24, 2015
    - XDG paths
    - removed -c option
    - Add canto-remote status
  2. XDG Support

    committed Jun 24, 2015
    - If it exists, will still use ~/.canto-ng
    
    - Respects $XDG_CONFIG_HOME, but will throw everything in there (won't
      use $XDG_DATA_HOME for feeds/logs)
    
    - canto is the directory name, not canto-ng so ~/.config/canto is likely
      the new directory
Commits on Jun 23, 2015
  1. Make sure we are using the length of the encoded string in the protocol

    committed Jun 23, 2015
    Length of the unicode string doesn't necessarily equal the length of the
    encoded string of bytes. Since we're using the len of the bytes on
    receive, make sure we're giving it the len of the bytes on write as
    well.
Commits on Jun 19, 2015
Commits on Jun 18, 2015
  1. Make filter_read default

    committed Jun 18, 2015
  2. Inoreader sync: work harder to avoid dupes

    committed Jun 18, 2015
    When Inoreader gets an item first, and we add it, it has an Inoreader
    id. When canto receives the same item later, it has a real id (or one
    canto assigned it), which is different and as such canto doesn't
    recognize that these items are identical (nor should it - that's the
    whole point of the id) and you end up with dupes (one from the feed, one
    from inoreader).
    
    To resolve this, when synchronizing with Inoreader, remove old items
    only seen in Inoreader content and attempt to re-add them, which will
    properly match the items if canto has found a real copy.
  3. Fix dead imports

    committed Jun 17, 2015
  4. reddit: trim the json data

    committed Jun 17, 2015
    Save some memory by not storing any data we aren't currently using in
    the edit function.
Commits on Jun 17, 2015
  1. Thread limit fetching

    committed Jun 16, 2015
    - Defaults to number of cpus (as reported by multiprocessing.cpu_count)
  2. Remove unused constant

    committed Jun 16, 2015
  3. Stop using shelve

    committed Jun 16, 2015
    NOTE: This will automatically migrate old shelves.
    
    - Copying shelve dbs is a fucking pain and has caused breakage when
      moving from one distro / OS to another when the available lightweight
    DBs change.
    
    - We use basically no database features, except the "cache" which is
      really just the DB holding the entire database in memory which we can
    also do with greater control (there has been 0 change in memory usage
    with this patch).
    
    - We have to workaround the database constantly expanding in size with
      some databases (GDBM requires reorganize())
    
    - Shelves don't (as far as I can see) play well with transparent
      compression and it doesn't look like it does any compression itself,
    so by just gzipping raw JSON, we can shrink the feeds file by 80%.
    
    - Internally, shelves use pickle, which is a Python only serialization.
      This isn't important at the moment, but gzipped JSON is platform
    agnostic.
    
    - Replace my feed dump script with zcat =P.
Commits on Jun 16, 2015
  1. Remove extraneous debug

    committed Jun 16, 2015
  2. Refactor tag handling on feed index and setattributes

    committed Jun 16, 2015
    - Simplified set_attribute tag logic, and should re-apply filters on
      changing attributes.
  3. Stop paginating items

    committed Jun 15, 2015
    ITEMSDONE is still present, but obsolete.
  4. Change how protocol messages are sent.

    committed Jun 15, 2015
    It's better to just know the size right off the bat than do this
    fragment management and add the possibility of a small message getting
    held up in a buffer waiting for it to fill.
Commits on Jun 15, 2015
  1. Feed index: convert items to IDs later

    committed Jun 15, 2015
    - Less confusing for sync plugins
    - Easier to work with for the next stuff
Commits on Jun 13, 2015
  1. Update manpage plugins sections

    committed Jun 12, 2015
    - Remove sync/sync-rsync differentiation
    - Add sync-inoreader
Commits on Jun 11, 2015
  1. Inoreader sync: better auth/error handling

    committed Jun 11, 2015
    - Should be able to reauthorize on 401
    - Deals with being disconnected from the internet better (will keep
      trying, but also won't spam log with exceptions)
    - Should be able to stop itself when the API rate limit has kicked in
    
    Still need a better way to get these errors into the client.
Commits on Jun 8, 2015
  1. Update remote user agent

    committed Jun 8, 2015
  2. Minor help text fix in remote

    committed Jun 8, 2015
  3. Fix breaking URL limit in Inoreader sync

    committed Jun 8, 2015
    Grouping tag add / remove calls is good, but when you start pushing the
    URL size too high, then the Inoreader server doesn't like it.
    
    NOTE: I couldn't find actual documentation on Inoreader's server/API
    limit, so I took a guess at 2048 bytes as a reasonable limit. Further
    tweaking may be required.
Commits on Jun 7, 2015
  1. Inoreader sync v0.3

    committed Jun 6, 2015
    - Put all the code into an API class. Once I'm done with this plugin,
      parts of it will probably be abstracted out into a generic API class
    that this will inherit from, but one thing at a time.
    
    - As discussed in the blog, merge Inoreader data into our data, so that
      we get all items across sources.
    
    - Group large tag changes together to go easier on the API call count,
      and avoid some trouble when, for example, trying to mark 200 items
    read at a time.
Something went wrong with that request. Please try again.