Last months in Kube

  • Kube got a basic but functional todo view.
  • HiDPI support. After a bit of massaging, Kube now scales correctly on HiDPI displays, so we no longer end up with tiny icons everywhere.
  • Fixed HTML view resizing. Resizing the WebengineView to fit the contents has been a constant source of problems and continues to break every now and then.
  • Improved keyboard navigation that allows for switching between views.
  • Improved IMAP sync which fixes a couple of corner cases and improves performance as well as responsiveness while a sync is executed.
  • Fixed free-page accumulation in lmdb database, which results in ~10x smaller db files.
  • Experimented with zstd compression for things like mime messages, which reduced the database size, but doesn’t seem to affect performance much.
  • The account password is now protected using your gpg key as well, so if there is a gpg-key set up, you will only have to unlock your keyring to unlock
    kube. This effectively turns the gpg-keyring into your Kube keyring as well (assuming you have a gpg-key for every account).
  • Implemented fulltext indexing of encrypted emails as well as basic support for protected headers. Read more
  • Shaved off another 2000 SLOC from the messageparser library as I moved it over to sink for encrypted email indexing.

The todo view

The todo view’s goal is to have a small personal list of todos, acknowledging that you can only accomplish so much during a day, and there is no intention of turning this into a project management suite down the road.

The idea is that you have a couple of lists as backlogs, and that you then pick a reasonable amount of items (<10 probably?) from those lists as currently in progress (that’s also how it’s stored in iCal). This then gives you a nice little list of things during the day/week/whatever suits you, that you can tick off.

New items can quickly be entered using keyboard shortcuts (press “?”) and that’s about it for the time being.

I think sub-todos might find their way eventually in there, but the rest should rather be quality of life improvements and eventually taking other sources of “things you need to act on” into account, such as emails that you should probably be answering or events that need to be prepared.

The todo view was the last officially missing piece, so with that we are view-complete (feature complete may be a bit a stretch still).

The keyring

Having to enter your account password for every account whenever you start Kube doesn’t make for a great user-experience, so this was fairly high on the nuisance list.

Naturally the first thought was that we would just use your platform’s keyring, but regrettably there still isn’t a solution that works on multiple platforms (not even on Linux, libsecret was never implemented for KDE),
so that results in a lot of effort for implementation and maintenance.

Fortunately, there is an alternative.

We already rely on GPG for end-to-end encryption, so why not use your GPG-key to also secure your account related secrets?

We already had an experimental feature that stores the account password encrypted using the key as a POC, so the next was to build this into the core and improve the experience somewhat.

The result is that you will no longer have to enter any account passwords after the initial entry, but will instead be prompted to unlock your GPG-keyring (if not already unlocked), and just like that we’ll gain a keyring and sidestep the keyring mess. With gpg-agent we can at least reuse something that we rely on anyways, and that we have available on all supported platforms.

The one fly in the ointment is that we currently have to start a gpg-agent inside the flatpak, so we can’t reuse an already unlocked keyring on the system.

Kube Commits, Sink Commits

Previous updates

More information on the Kolab Now blog!

“Kube is a modern communication and collaboration client built with QtQuick on top of a high performance, low resource usage core. It provides online and offline access to all your mail, contacts, calendars, notes, todo’s and more. With a strong focus on usability, the team works with designers and UX experts from the ground up, to build a product that is not only visually appealing but also a joy to use.” For more info, head over to: kube-project.com

Author: cmollekopf

Christian Mollekopf is an open source software enthusiast with a special interest in personal organization tools. He started to contribute actively to KDE in 2008 and currently works for Kolab Systems leading the development for the next generation desktop client.

7 thoughts on “Last months in Kube”

  1. Great work so far Christian – I currently use it with a Kolab Now account on elementaryOS.
    A couple of observations:
    1. The calendar – when using the datepicker, it often goes ‘one day ahead’, and so I have to click slightly ahead of where I intend to be.
    2. Events only sync from server to Kube and not the other way round (in other words evens don’t get created on the server), and event titles don’t also show up
    3. Email – dragging and dropping email doesn’t quite work

    In regards to email I’d really love to see:
    1. With the composer, ability to set replies to appear above the quote as can be done in the Kolab Webclient – this is the most logical place, so that replies are also closer to the most recent text rather than further apart.
    2. In the conversation view, it should be optional to see the most recent message on top.
    3. The conversation view should have the option to disable default collapsing of threads.

    Really enjoying this excellent piece of work – can’t wait to see what’s next.

    Also – you didn’t mention a notes view – is this not on the cards, to fully support Kolab?

    1. Glad you like it =)

      For bugs, please report them to https://phabricator.kde.org/project/view/238/ and if possibly try to reproduce it with a test account.

      As for the conversation view; depends on whether your reply on top or not obviously πŸ˜‰

      Notes are not planned as there is no good standard protocol for them, and I’m sort of hoping to get away with using todo’s for most of the notes usecases. And anything knowledgebase alike is out of scope for the moment at least.

      1. My apologies Christian.

        In regards to Calendar syncing, I did not have the calendar ‘ticked’, thus nothing was syncing to Kolab Webclient or vice versa – now it works like a charm, perfectly.

        I’m hoping with the composer – once it is given more attention in due course, it will be possible to set where the reply is placed. By default now, it seems to be the subject line.

        Cannot wait for IMAP-IDLE support!

      2. Kjots was a nice notes app for Kontact but it lacked media embedding. I was supposed to work, but in reality you always had empty squares where an image or video should be. I think the standard format should be Markdown and not HTML.
        There’s a nice app called Vnote that does a nice job, a very nice one, in fact, but it organices the notes in a particular manner that doesn’t make easy to find and edit them if you use other note editor like Typora or Ghostwriter; also, it isn’t really WYSIWYG, like Typora, although its editor tries to keep the look as close to final document as possible.

        https://github.com/tamlok/vnote

        Maybe you could take it into consideration if you ever think about adding a notes app to the suite.

Leave a comment