Logo Cyca

A Week of Dev #13

I am a bit late for this “episode” of A week of dev, but it has been a pretty busy week, so let’s see what happened !

Cyca Revoluta

This week’s headline is without a doubt the release of the first stable version of Cyca, named Revoluta. I have already published a - long - announcement, so I am going to let you read it for more details.


I’ve done some interesting updates during the week, and some of them will give you a glimpse about what’s coming next. But let’s begin with the less “interesting” stuff.

There was a bug preventing to update some documents. They were not selected by the updater because they must already have a checked_at property and non-null. Now, the updater will select them as well.

I am using an excellent tool for parsing and formatting HTML from the feed items now: HTML Purifier. I know this tool for quite a time and I have been wanting to use it for Cyca for a while. Well, now it’s done ! I will probably adjust some settings over time, but for now, it’s part of the process and does its job pretty well.

I added support for bookmarking a PDF document.

The idea here is that Cyca should be able to handle just about any kind of documents you might want to add to your bookmarks. To be specific, anything that has a URL pointing to it. Not just web pages, but obviously PDF, images, videos, etc. So I am working on a pluggable system to support more file types over time, and the first one I wrote is for PDF files. Every data that can be extracted from a document will be. And I plan to do this for a lot of other types as well.

To go pair with this new feature, I decided to add an icons set. I’ve added icons from the mimetypes section of the flat-remix, a very popular GNU-Linux desktop icons set. Now, whenever a document doesn’t have a favicon, it will be assigned a flat-remix icon based on its MIME type for a nice, relatively, satisfyingly consistent interface.

MIME type that now, along with the HTTP status code and reason, is displayed under the Details section when you click on a document.

With these new icons for MIME types, I also added few icons for HTTP response status icons. They are visible right to the document in document’s list, so you instantly know which document is doing wrong. This system will be expanded in a near future, you will see how on the bottom of this page.

One last thing I did on UI is I reduced the footprint of data displayed on the side of each feed item in the feed items list (the parent feed’s title and date of publication). I have also added few responsive classes so the parent feed title is hidden on narrow screens.


I also got to write a few fixes. For instance, I adjusted HTTP client timeout to 30s instead of 10s. Some websites (reddit for instance) took a bit more than 10s to send me a response, so it remained marked as on error.

I added missing style to the folders list. When you are dragging a folder onto another, the folder being dragged on should have a green background when you could drop your content into it, and red if drop is not allowed (for instance, in the Unread feed items folder).

I have discovered few websites that do include the URL to their feed in the <head> of the page, but the URL itself was invalid (like /// instead of //). Fixing specific issues would do the trick, but it won’t be a long term solution (which would be for the person in charge to update said links). So I decided to parse these URLs in a try/catch block. It won’t add the feed to Cyca, so you would never see it, but it won’t block updating other feeds.

What’s next

As I said in Cyca Revoluta announcement, I know what I want to work on, just not the order I will work on. But my next commits should be about the import/export, and a search form. A good search form.

And adding a few plugins to handle URLs to images, maybe videos.

We’ll see !