Maintenance Status

Canto is in maintenance mode.

This has come up a couple of times on Github and in the comments here, so it seems like an official post is in order. I actively use it, if it suddenly became incompatible with the latest Python 3, or someone reported a serious bug (like a security issue), I’d fix it. If someone cared to submit a patch / pull request, I’d consider it.

This site will remain up, with the docs and repos in their current state, but just to be crystal clear, I don’t have the motivation to work on this anymore.

Restored from backup

Hey all. My hosting fucked itself and managed to lose my entire disk. Which… shouldn’t happen. Anyway, I restored to a backup from August 2018 and I don’t think much has changed since then with respect to documentation / install etc. but I may have lost some comments etc.

Let this be a reminder to you: backup early, backup often. If I hadn’t made a snapshot when updating to Jessie this site would effectively be gone.

daemon 0.9.7

daemon 0.9.7

  • Fixed canto-remote status double counting items in user/category tags
  • Added script.py plugin to support executing scripts to generate feeds (details at the top of the plugin)
  • Add option to sync-rsync.py plugin to defer initial sync.

I’m happy to say that this is the first release for the daemon in more than a year, but the oldest new commit in this release is only about two weeks old, so it hasn’t been lingering.

The fix, and the new plugin are self-explanatory. The new option to sync-rsync.py is geared toward getting items to the client faster on startup (particularly noticeable when canto-daemon is started by canto-curses rather than on system/WM start). Rather than immediately trying to sync on startup before loading content from disk, allow the items on disk to be loaded and handed out to the client first. Technically this means “old” items can be seen again before the sync, but considering the alternative is seeing no items before that sync completes, I consider this better behavior.

Repos should already be updated.

Still need to write a post about future direction.

Repos updated

Just an FYI that I was able to get the Debian/Ubuntu repos updated. Latest 0.9.9 curses build, and a rebuild of the already existing 0.9.6 daemon.

NOTE: I have dropped support for Ubuntus utopic, vivid, wily since they’re officially unsupported and the vast majority of the repo traffic has been for trusty and xenial.

I have to give a shoutout to freight which greatly simplified the complicated task of taking already signed .debs and collecting them into a working repo. Converting to freight seems to have resolved the whole ‘weak digest’ problem with the repo, and I’m thankful that all of the GPG signing machinery is now abstracted from my build script.

curses 0.9.9

Quick fix for losing symbolic keys outside of inputs after resize.

There will be a forthcoming post about how much curses/readline and Python are a volatile mix. I can’t seem to get Python/curses to detect further window size changes if you resize while the command line (i.e. readline) is open. Nothing crashes, but the window will be stuck at a certain set of dimensions.

Still haven’t looked at updating repos.

curses 0.9.8

curses 0.9.8

  • Fixed nonsense pending update numbers (gray numbers now reflect reality) (#40)
  • Fixed some issues with exceptions / lockups during rapid resizing
  • Fixed cursor being invisible and certain keys being uninterpreted (HOME, END) after resize
  • Fixed some moronic selection fallbacks (#42, #45)

Once again, mostly pending commits from almost a year past.

Unfortunately I lost a disk with my script/chroots for building .debs, so it will take me a bit to upgrade them. I’ll take another stab at getting apt to shutup about weak digests too, but I’m hoping that creating signed .debs isn’t still such a pain in the ass.

daemon 0.9.6, curses 0.9.7

Before you know it, it’s been almost a year since the last release and there are a handful of bugfixes that need to be pushed out.

daemon 0.9.6

  • Fixed hanging file descriptors eventually killing the daemon (which fixes canto-remote misbehaving sometimes among other things)
  • Fixed occasional hang from writing to closed sockets
  • Better sync-inoreader behavior: killing unusable “???” items (me) and pushing changes back to Inoreader (thanks Fraterius)
  • SIGINT and SIGTERM paths are now identical, where before SIGTERM attempted to exit ASAP without regard to running threads
  • Daemon now dumps feed data into a temporary file and then moves it to replace the original data, to help prevent corruption if the daemon is killed in the middle of writing to the disk.
  • Daemon now marches on if it can’t use the feed data because of corruption, instead of requiring the user to delete it.
  • Minor Python 3.2 compatibility change (thanks Sathors)

curses 0.9.7

  • Fix tab completing empty command lines (closes issue 37)

I’ll get the Debian repos updated soon.

Repos updated, new pub key

Administering packages for a distro you don’t use is a clusterfuck. Anyway, someone kindly pointed out that my Debian sid packages were still built for Python 3.4, and they’ve sometime since moved up to Python 3.5. Of course I’m oblivious to this on Arch.

That’s not the problem though. It seems like the Python package to .deb path is constantly having little tweaks made to it such that it actually takes effort to support new versions of a distro for no other reason than whatever tool you’ve decided to use has fallen out of favor. Ugh. Give me a PKGBUILD already so I can escape the million stupid Debian only binaries I need to put this shit together. Could this process be any more baroque? I literally have to use a special utility just to update the fucking changelog because its format is so locked down.

Then, of course, the version of GnuPG that Debian variants are currently using is different than the version Arch has so suddenly my actual ~.gnupg breaks the entire signing process. Which is just as well because I lost the key I used to sign the old packages when my last laptop drive went south, but regardless now I have a separate directory of keys that are only for Debian that I have to keep track of.

Anyway, the repos have been updated. They now include the latest Ubuntu variants (wily and xenial) but they’ve been obviously very lightly tested.

You will have to re-import the repo public key:

curl http://codezen.org/static/canto-pub.gpg | sudo apt-key add -

daemon 0.9.5, curses 0.9.6

Yet more maintenance type fixes.

daemon 0.9.5

  • Minor cleanup to excessive debug info and error paths in sync-inoreader
  • The ItemLimit transform is now included by default, so you can, for example do “:set tag.transform ItemLimit(10)” to only show the first 10 items of the selected feed.

curses 0.9.6

  • Fix some old usage of tag_updater that caused weirdness like syncs happening when they shouldn’t and making your cursor jump.
  • The above also fixed direct usage of :transform/:filter/:sort
  • Fix waiting on pending configs (again) – hooks need to be called after the changes have been made.