canto-next.git
2 years agoAdd plugin to use feed generating scripts
Jack Miller [Fri, 14 Jul 2017 08:07:51 +0000 (03:07 -0500)]
Add plugin to use feed generating scripts

More information in the plugin header.

2 years agoMove fetch plugin execution before feedparser output check
Jack Miller [Fri, 14 Jul 2017 08:05:34 +0000 (03:05 -0500)]
Move fetch plugin execution before feedparser output check

This means that fetch threads can completely replace the parsed contents
even if the feed URL isn't actually resolvable.

3 years ago0.9.6 v0.9.6
Jack Miller [Wed, 1 Jun 2016 18:46:22 +0000 (13:46 -0500)]
0.9.6

3 years agoUpdate copyright to 2016
Jack Miller [Wed, 1 Jun 2016 18:46:09 +0000 (13:46 -0500)]
Update copyright to 2016

3 years agoProperly close dead connections
Jack Miller [Wed, 1 Jun 2016 02:47:03 +0000 (21:47 -0500)]
Properly close dead connections

I'm a bit surprised I haven't caught this before, I guess I was relying
on garbage collection to destroy dead connections for me, but when you
do something like

$ while /bin/true; do canto-remote status; done

and create nonstop connection thrashing that's not good enough (if it
works at all), so explicitly call close().

3 years agoProperly handle connection missing from write_locks
Jack Miller [Sun, 24 Jan 2016 05:38:49 +0000 (23:38 -0600)]
Properly handle connection missing from write_locks

Fixes an occasional hang when write would occur after a connection had
already disconnected. More rationale in comments.

3 years agoMerge pull request #27 from Sathors/master
Jack Miller [Wed, 20 Jan 2016 16:12:34 +0000 (10:12 -0600)]
Merge pull request #27 from Sathors/master

[FIX] Added a None argument to utime in setup.py to support python3.2.

3 years ago[FIX] Added a None argument to utime in setup.py to support python3.2.
Sathors [Wed, 20 Jan 2016 15:49:22 +0000 (10:49 -0500)]
[FIX] Added a None argument to utime in setup.py to support python3.2.

3 years agoTest fix for mkstemp breakage
Jack Miller [Mon, 21 Dec 2015 16:17:10 +0000 (10:17 -0600)]
Test fix for mkstemp breakage

3 years agoMerge pull request #25 from Fraterius/master
Jack Miller [Mon, 14 Dec 2015 17:22:48 +0000 (11:22 -0600)]
Merge pull request #25 from Fraterius/master

Fixed issue with pushing tag changes back to the Inoreader.

3 years agoFixed issue with pushing tag changes back to the Inoreader.
Fraterius [Mon, 14 Dec 2015 13:55:40 +0000 (14:55 +0100)]
Fixed issue with pushing tag changes back to the Inoreader.

3 years agoreddit: Give reddit_score_sort a proper name
Jack Miller [Sun, 29 Nov 2015 02:23:13 +0000 (20:23 -0600)]
reddit: Give reddit_score_sort a proper name

3 years agoMeta-transforms shouldn't error on transform without name
Jack Miller [Sun, 29 Nov 2015 02:22:15 +0000 (20:22 -0600)]
Meta-transforms shouldn't error on transform without name

3 years agoOn transform error, include backtrace
Jack Miller [Sun, 29 Nov 2015 02:21:51 +0000 (20:21 -0600)]
On transform error, include backtrace

3 years agoUndifferentiate SIGINT and SIGTERM
Jack Miller [Sun, 29 Nov 2015 01:47:27 +0000 (19:47 -0600)]
Undifferentiate SIGINT and SIGTERM

3 years agoDump feeds database to tempfile before overwriting
Jack Miller [Sun, 29 Nov 2015 01:46:57 +0000 (19:46 -0600)]
Dump feeds database to tempfile before overwriting

3 years agoIf old shelf migration fails, keep going
Jack Miller [Sun, 29 Nov 2015 01:23:40 +0000 (19:23 -0600)]
If old shelf migration fails, keep going

We'll never be able to do anything constructive with crap data, so log
it and then continue on with an empty feeds database.

4 years agosync-inoreader: Completely flush tags on syncing database
Jack Miller [Sat, 7 Nov 2015 22:40:16 +0000 (16:40 -0600)]
sync-inoreader: Completely flush tags on syncing database

4 years ago0.9.5 v0.9.5
Jack Miller [Mon, 27 Jul 2015 19:42:53 +0000 (14:42 -0500)]
0.9.5

4 years agoAdd ItemLimit filter
Jack Miller [Mon, 27 Jul 2015 18:54:51 +0000 (13:54 -0500)]
Add ItemLimit filter

4 years agosync-inoreader: quiet debug, fix exception return
Jack Miller [Mon, 27 Jul 2015 18:27:46 +0000 (13:27 -0500)]
sync-inoreader: quiet debug, fix exception return

4 years ago0.9.4 v0.9.4
Jack Miller [Thu, 23 Jul 2015 03:07:42 +0000 (22:07 -0500)]
0.9.4

4 years agoShould not wait on locks for queued writes
Jack Miller [Thu, 23 Jul 2015 03:02:29 +0000 (22:02 -0500)]
Should not wait on locks for queued writes

If we're just trying to flush data, it's okay to fail to get the lock
and back out.

4 years agoForce add/edit plugins to explicitly return tag lists
Jack Miller [Wed, 22 Jul 2015 08:11:21 +0000 (03:11 -0500)]
Force add/edit plugins to explicitly return tag lists

My missing item fix inadvertently broke because these plugins require
everything to be done in place (so we don't overwrite our reference).
That's a shitty gotcha to have, so instead of changing my fix to operate
in place, just make it so these lists are explicitly passed and
returned.

4 years agoHandle exceptions on disconnect
Jack Miller [Wed, 22 Jul 2015 03:39:56 +0000 (22:39 -0500)]
Handle exceptions on disconnect

4 years agosync-inoreader: more missing item fixes
Jack Miller [Wed, 22 Jul 2015 03:05:38 +0000 (22:05 -0500)]
sync-inoreader: more missing item fixes

- Needed to prefix the from_inoreader attribute with canto, so it's
  preserved.

On first run, this version will still serve the dead items, but on
restarting the daemon they'll be gone for good.

4 years agosync-inoreader remove comment
Jack Miller [Tue, 21 Jul 2015 16:42:09 +0000 (11:42 -0500)]
sync-inoreader remove comment

4 years agoUseful return with RWLock release
Jack Miller [Tue, 21 Jul 2015 16:09:22 +0000 (11:09 -0500)]
Useful return with RWLock release

Will return True if the lock should be fully released.

4 years agoQueue writes when socket is full
Jack Miller [Mon, 20 Jul 2015 16:30:28 +0000 (11:30 -0500)]
Queue writes when socket is full

Current code breaks down when there's a large amount of socket traffic.
The reason is that both sides, the client and server can block in poll()
on write() forever because the socket is full and the condition will
never clear if the other side is also blocked on write (or any other
reason it's not actively reading data from the socket).

Right now, the flush is attached to the read() because this is where the
thread will idle and it doesn't hurt to wake up a couple of times a
second if we have data pending.

4 years ago0.9.3 v0.9.3
Jack Miller [Fri, 17 Jul 2015 03:41:49 +0000 (22:41 -0500)]
0.9.3

4 years agosync-inoreader: fix leaving dead items
Jack Miller [Fri, 17 Jul 2015 03:34:16 +0000 (22:34 -0500)]
sync-inoreader: fix leaving dead items

This case happens when an Inoreader item has some tags_to_add, but a
copy is found in canto's data. So, in addition to adding to remove_ids,
we should strip any pending tags_to_add too.

4 years agosync-rsync: don't hold feed lock while waiting on new threads
Jack Miller [Fri, 17 Jul 2015 02:22:52 +0000 (21:22 -0500)]
sync-rsync: don't hold feed lock while waiting on new threads

4 years agoFix sync-rsync.py
Jack Miller [Fri, 17 Jul 2015 01:13:41 +0000 (20:13 -0500)]
Fix sync-rsync.py

Never got updated for the new database format.

4 years ago0.9.2
Jack Miller [Tue, 14 Jul 2015 19:45:20 +0000 (14:45 -0500)]
0.9.2

4 years agoPer-socket r/w locks
Jack Miller [Wed, 15 Jul 2015 07:16:00 +0000 (02:16 -0500)]
Per-socket r/w locks

4 years agoRemove work_done hook
Jack Miller [Wed, 15 Jul 2015 02:27:33 +0000 (21:27 -0500)]
Remove work_done hook

- Only used for do_tag_changes

- This is better done when we actually cause changes, instead of
  potentially in the thread reaping thread, or the connection thread.

4 years agoRework get_attributes to have fewer loops
Jack Miller [Wed, 15 Jul 2015 02:27:19 +0000 (21:27 -0500)]
Rework get_attributes to have fewer loops

4 years agoOnly send an AUTOATTR response if necessary
Jack Miller [Wed, 15 Jul 2015 02:26:43 +0000 (21:26 -0500)]
Only send an AUTOATTR response if necessary

4 years agoOnly take locks for socket transforms when necessary
Jack Miller [Wed, 15 Jul 2015 02:26:20 +0000 (21:26 -0500)]
Only take locks for socket transforms when necessary

4 years agoChange hook information storage
Jack Miller [Wed, 15 Jul 2015 02:19:39 +0000 (21:19 -0500)]
Change hook information storage

- Shouldn't have to iterate through 10k possible hooks to find the ones
  with a specific key.

- Clean up as we go, to avoid having to iterate over the entire
  structure on every removal.

4 years agoDo work_done hook before causing sync()
Jack Miller [Mon, 13 Jul 2015 21:18:35 +0000 (16:18 -0500)]
Do work_done hook before causing sync()

4 years agoRework feed.index for fewer loops
Jack Miller [Mon, 13 Jul 2015 21:18:15 +0000 (16:18 -0500)]
Rework feed.index for fewer loops

4 years agoDon't reparse the config on tag.collapsed change
Jack Miller [Sun, 12 Jul 2015 01:46:47 +0000 (20:46 -0500)]
Don't reparse the config on tag.collapsed change

4 years agoPrevent duplicate watch sockets
Jack Miller [Sun, 12 Jul 2015 00:15:51 +0000 (19:15 -0500)]
Prevent duplicate watch sockets

4 years agoDon't decode fragments, only whole messages
Jack Miller [Sat, 11 Jul 2015 22:35:56 +0000 (17:35 -0500)]
Don't decode fragments, only whole messages

So we don't try to decode an incomplete character.

4 years agoFix EINTR with new fragless code
Jack Miller [Sun, 5 Jul 2015 07:16:38 +0000 (02:16 -0500)]
Fix EINTR with new fragless code

Returning used to just postpone the current fragment, now that we know
the size and have no fragments, we can just properly retry.

4 years agosync-inoreader: requests should timeout
Jack Miller [Mon, 29 Jun 2015 21:04:35 +0000 (16:04 -0500)]
sync-inoreader: requests should timeout

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.

4 years agoBrush up manpages
Jack Miller [Wed, 24 Jun 2015 21:11:52 +0000 (16:11 -0500)]
Brush up manpages

- XDG paths
- removed -c option
- Add canto-remote status

4 years agoXDG Support
Jack Miller [Wed, 24 Jun 2015 21:04:31 +0000 (16:04 -0500)]
XDG Support

- 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

4 years agoMake sure we are using the length of the encoded string in the protocol
Jack Miller [Tue, 23 Jun 2015 17:17:43 +0000 (12:17 -0500)]
Make sure we are using the length of the encoded string in the protocol

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.

4 years agoDon't run deferred fetch threads for dead feeds
Jack Miller [Fri, 19 Jun 2015 16:51:21 +0000 (11:51 -0500)]
Don't run deferred fetch threads for dead feeds

4 years agoInoreader sync: fixes for dupe finding
Jack Miller [Fri, 19 Jun 2015 14:57:23 +0000 (09:57 -0500)]
Inoreader sync: fixes for dupe finding

4 years agoMake filter_read default
Jack Miller [Thu, 18 Jun 2015 20:13:09 +0000 (15:13 -0500)]
Make filter_read default

4 years agoInoreader sync: work harder to avoid dupes
Jack Miller [Thu, 18 Jun 2015 18:40:22 +0000 (13:40 -0500)]
Inoreader sync: work harder to avoid dupes

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.

4 years agoAllow feed plugins to remove items
Jack Miller [Thu, 18 Jun 2015 18:39:11 +0000 (13:39 -0500)]
Allow feed plugins to remove items

4 years agoFix Inoreader sub sync with duplicate names
Jack Miller [Thu, 18 Jun 2015 15:09:27 +0000 (10:09 -0500)]
Fix Inoreader sub sync with duplicate names

4 years agoFix dead imports
Jack Miller [Thu, 18 Jun 2015 04:02:51 +0000 (23:02 -0500)]
Fix dead imports

4 years agoreddit: trim the json data
Jack Miller [Thu, 18 Jun 2015 02:13:33 +0000 (21:13 -0500)]
reddit: trim the json data

Save some memory by not storing any data we aren't currently using in
the edit function.

4 years agoThread limit fetching
Jack Miller [Tue, 16 Jun 2015 23:21:07 +0000 (18:21 -0500)]
Thread limit fetching

- Defaults to number of cpus (as reported by multiprocessing.cpu_count)

4 years agoGive feed objects better string representation
Jack Miller [Tue, 16 Jun 2015 23:19:27 +0000 (18:19 -0500)]
Give feed objects better string representation

4 years agoRemove unused constant
Jack Miller [Tue, 16 Jun 2015 21:39:08 +0000 (16:39 -0500)]
Remove unused constant

4 years agoStop using shelve
Jack Miller [Tue, 16 Jun 2015 20:53:25 +0000 (15:53 -0500)]
Stop using shelve

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.

4 years agoRemove extraneous debug
Jack Miller [Tue, 16 Jun 2015 07:25:51 +0000 (02:25 -0500)]
Remove extraneous debug

4 years agoRefactor tag handling on feed index and setattributes
Jack Miller [Tue, 16 Jun 2015 07:21:11 +0000 (02:21 -0500)]
Refactor tag handling on feed index and setattributes

- Simplified set_attribute tag logic, and should re-apply filters on
  changing attributes.

4 years agoStop paginating items
Jack Miller [Mon, 15 Jun 2015 22:14:35 +0000 (17:14 -0500)]
Stop paginating items

ITEMSDONE is still present, but obsolete.

4 years agoChange how protocol messages are sent.
Jack Miller [Mon, 15 Jun 2015 22:12:47 +0000 (17:12 -0500)]
Change how protocol messages are sent.

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.

4 years agoDo transforms on tag changes instead of on ITEMS
Jack Miller [Mon, 15 Jun 2015 21:08:10 +0000 (16:08 -0500)]
Do transforms on tag changes instead of on ITEMS

4 years agoFeed index: convert items to IDs later
Jack Miller [Mon, 15 Jun 2015 15:59:48 +0000 (10:59 -0500)]
Feed index: convert items to IDs later

- Less confusing for sync plugins
- Easier to work with for the next stuff

4 years agoUpdate manpage plugins sections
Jack Miller [Sat, 13 Jun 2015 00:09:48 +0000 (19:09 -0500)]
Update manpage plugins sections

- Remove sync/sync-rsync differentiation
- Add sync-inoreader

4 years agoInoreader sync: better auth/error handling
Jack Miller [Thu, 11 Jun 2015 20:45:58 +0000 (15:45 -0500)]
Inoreader sync: better auth/error handling

- 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.

4 years agoAdd canto-remote status command to print item counts
Jack Miller [Mon, 8 Jun 2015 18:05:54 +0000 (13:05 -0500)]
Add canto-remote status command to print item counts

4 years agoUpdate remote user agent
Jack Miller [Mon, 8 Jun 2015 17:08:42 +0000 (12:08 -0500)]
Update remote user agent

4 years agoMinor help text fix in remote
Jack Miller [Mon, 8 Jun 2015 16:57:11 +0000 (11:57 -0500)]
Minor help text fix in remote

4 years agoFix breaking URL limit in Inoreader sync
Jack Miller [Mon, 8 Jun 2015 07:06:20 +0000 (02:06 -0500)]
Fix breaking URL limit in Inoreader sync

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.

4 years agoInoreader sync v0.3
Jack Miller [Sun, 7 Jun 2015 02:08:36 +0000 (21:08 -0500)]
Inoreader sync v0.3

- 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.

4 years agoUse new additems plugin hook for Inoreader
Jack Miller [Sat, 6 Jun 2015 23:28:35 +0000 (18:28 -0500)]
Use new additems plugin hook for Inoreader

This should integrate Inoreader data into Canto when Canto hasn't found
the item.

4 years agoAdd an additems plugin hook in feeds
Jack Miller [Sat, 6 Jun 2015 23:15:09 +0000 (18:15 -0500)]
Add an additems plugin hook in feeds

Allow plugins to add items before they're potentially edited.

4 years agoFix sync-rsync with global config
Jack Miller [Sat, 6 Jun 2015 00:13:53 +0000 (19:13 -0500)]
Fix sync-rsync with global config

4 years agoAdd program checks to sync-inoreader and reddit plugins
Jack Miller [Fri, 5 Jun 2015 23:53:26 +0000 (18:53 -0500)]
Add program checks to sync-inoreader and reddit plugins

4 years agoMerge sync.py and sync-rsync.py
Jack Miller [Fri, 5 Jun 2015 23:52:53 +0000 (18:52 -0500)]
Merge sync.py and sync-rsync.py

To avoid confusion, since inoreader doesn't require sync.py

4 years agoAdd check_program for plugins
Jack Miller [Fri, 5 Jun 2015 23:51:24 +0000 (18:51 -0500)]
Add check_program for plugins

Stop execution with a silent exception if this plugin will have no
effect on the currently running program.

4 years agoPrefix Inoreader attributes with canto-
Jack Miller [Fri, 5 Jun 2015 03:25:00 +0000 (22:25 -0500)]
Prefix Inoreader attributes with canto-

This causes the feed logic to automatically keep them, so older items
don't lose their ids because they're no longer in the Inoreader data.

4 years agoFix some log.debug breakage
Jack Miller [Fri, 5 Jun 2015 03:22:24 +0000 (22:22 -0500)]
Fix some log.debug breakage

4 years agoMass conversion to better log.debug use
Jack Miller [Fri, 5 Jun 2015 00:50:35 +0000 (19:50 -0500)]
Mass conversion to better log.debug use

Pass the format arguments to log.debug so we avoid the CPU hit
formatting strings we won't use.

4 years agoInoreader sync better item matching
Jack Miller [Wed, 3 Jun 2015 17:31:53 +0000 (12:31 -0500)]
Inoreader sync better item matching

- Cover the case where canto fetches an item first, it leaves the source
  feed (expires, whatever), and then later we get Inoreader data on it.
Canto should now properly synchronize all items it has, instead of just
the items that are present in the feed and Inoreader at the same time.

4 years agoFix some stuck Inoreader synchronized items
Jack Miller [Wed, 3 Jun 2015 00:43:47 +0000 (19:43 -0500)]
Fix some stuck Inoreader synchronized items

It appears that sometimes, an item will be given a "com.google/fresh"
tag, and it will resist being set as "read" on Inoreader's side, so
don't let fresh items override our local "read" state. If you mark it in
canto, it should stay read in canto.

4 years agoInoreader sync fixes
Jack Miller [Tue, 2 Jun 2015 22:15:39 +0000 (17:15 -0500)]
Inoreader sync fixes

- Introduce canto-inoreader-sync in the feed data
- Fix initial sync to Inoreader happening too often
- Get proper ids to tags_to_add/remove

4 years agoInoreader sync v0.2
Jack Miller [Tue, 2 Jun 2015 18:17:32 +0000 (13:17 -0500)]
Inoreader sync v0.2

- Stop using Inoreader as the source for feed data. Instead, use the
  standard canto-daemon fetch, and integrate Inoreader information into
  it. I made this decision for these reasons:

    - Fuck Inoreader ads coming through Canto
    - Inoreader seems to have trouble keeping up with quick feeds, not
      to mention the daemon concept of "rate" conflicts with InoReader
    - Inoreader content is sterile, so you don't have access to any
      interesting feed content, which breaks some reader extras.
    - Can use standard canto item IDs, so no dupes when you first turn
      on the plugin.

- Better initial merging, when we first see an item in Inoreader, if the
  canto item has important state, it's sent. This means that we don't
need to have Inoreader information to do the right thing when it does
show up (i.e. items won't be set as unread when they show up in
Inoreader, but have already been touched in canto)

- Fix removing tags via Inoreader not showing up in canto

4 years agoAllow feed edit_* plugins to declare add / remove tags
Jack Miller [Tue, 2 Jun 2015 18:16:51 +0000 (13:16 -0500)]
Allow feed edit_* plugins to declare add / remove tags

4 years agoRevert "Give canto-* attributes priority if it came from fetch thread"
Jack Miller [Tue, 2 Jun 2015 17:43:56 +0000 (12:43 -0500)]
Revert "Give canto-* attributes priority if it came from fetch thread"

This is better integrated later.

This reverts commit 3de10432bd86efd844724f303541705ef957ed0c.

4 years agoTrim Inoreader sync to 200 items
Jack Miller [Mon, 1 Jun 2015 06:28:56 +0000 (01:28 -0500)]
Trim Inoreader sync to 200 items

Yeah... probably don't need to be grabbing Inoreader's entire backlog
for the feeds. This might be sufficient, but it might be better to use
some of the time based API options, this is just a quickfix.

4 years agoRemove experimental TT-RSS server
Jack Miller [Mon, 1 Jun 2015 04:12:21 +0000 (23:12 -0500)]
Remove experimental TT-RSS server

Not interested in messing with this anymore.

4 years agoInoreader synchronization plugin v0.1
Jack Miller [Mon, 1 Jun 2015 04:06:56 +0000 (23:06 -0500)]
Inoreader synchronization plugin v0.1

Read the file for some caveats, but it seems to work pretty well.

4 years agoFix internal delconfig
Jack Miller [Mon, 1 Jun 2015 03:56:06 +0000 (22:56 -0500)]
Fix internal delconfig

4 years agoMake config globally available
Jack Miller [Mon, 1 Jun 2015 03:11:00 +0000 (22:11 -0500)]
Make config globally available

Similar to allfeeds and alltags, this is something that should be easy
to get to from anywhere.

4 years agoTypo fix populating tags from old items
Jack Miller [Mon, 1 Jun 2015 01:12:38 +0000 (20:12 -0500)]
Typo fix populating tags from old items

4 years agoGive canto-* attributes priority if it came from fetch thread
Jack Miller [Mon, 1 Jun 2015 01:12:02 +0000 (20:12 -0500)]
Give canto-* attributes priority if it came from fetch thread

Lets plugins sub in internal content on fetch.

4 years ago0.9.1 v0.9.1
Jack Miller [Fri, 9 Jan 2015 21:08:41 +0000 (15:08 -0600)]
0.9.1

4 years agoAdd hook test
Jack Miller [Fri, 9 Jan 2015 02:51:49 +0000 (20:51 -0600)]
Add hook test

4 years agoTrim empty hooks on removals
Jack Miller [Fri, 9 Jan 2015 02:50:13 +0000 (20:50 -0600)]
Trim empty hooks on removals

Don't think this has caused any memory trouble yet (since our usecase is
a handful of long lived hooks), but these should be disposed of.