KDE PIM in July and August

KDE PIM is the set of applications that helps you manage your email, contacts, appointments, tasks and more.

Since our last report covering KDE PIM in May and June, the PIM applications and libraries have seen over 1200 changes from almost 30 contributors. Let’s go over some of the biggest updates.

New features

Kalendar

I have been working on improvements to the calendar side of Kalendar. New changes include the addition of new and improved differentiation between all-day and not all-day events in the month view. This change makes the month view look quite different — in a good way!

Another new addition is the inclusion of a new incidence information popup in some of the calendar views. In views where horizontal space is at a premium, such as the month view or the week view, the popup lets us present the same amount of information without squishing the contents of the calendar view.

Of course, this change is optional, and can be toggled in the settings if you choose to do so.

Carl has worked hard on polishing Kalendar’s new address book feature. New additions include a context menu for contacts in the contact list containing commonly-used actions, as well as more contact management features that should better help you manage the people in your life.

We have both also worked hard on improving the overall stability of Kalendar. Lots of bugs and crashes have been fixed in the application and the common reminder daemon used by Kalendar and KOrganizer. Specifics can be found below in the bug fixes section.

During the Promo sprint in Saumur (France), Carl and I met and discussed Kalendar at length. We have big, ongoing plans for the future, which we will be discussing further at Akademy 2022!

KDE Itinerary

Volker has focused on improving Itinerary’s calendar integration. New features include supporting import and export with Akonadi calendars, and recognizing more travel-related calendar content automatically. These new features should make planning your next trip much easier.

For details see Volker’s dedicated summary post.

Calendar import page recognizing transport elements and allowing individual selection.

Kleopatra

Usability and accessibility was a main focus of development for Kleopatra in the last two months. Specifically:

Moreover, some new features were added:

KMail

Laurent has merged improvements to KMail’s translator support, which now uses a new translation engine. This should make translations of emails in unfamiliar languages more accurate than ever.

Another new addition is the inclusion of an embedded mail delivery notification widget in the email viewer, which should make interacting with this feature feel better integrated and easier to deal with.

You can now interact with mail delivery notification-related actions directly from the email viewer

Lastly, KMail now has a new plugin allowing you to manage the Akonadi database within KMail.

KOrganizer

Glen has worked on KOrganizer’s drag-and drop capabilities. The month view now lets users drag events, todos, and more out of KOrganizer. These items can then be dropped into other places, such as KMail’s email composer window, where they can be used to send event information.

This feature is now available in KOrganizer’s Month, Agenda, and Todo views.

Bug fixes and compatibility improvements

Each of the PIM apps have also had many bug fixes that should make them more stable and usable. Additionally, we have also been hard at working preparing for Qt6 and making changes to ensure compatibility.

KAlarm

Kalendar

Kalendar/KOrganizer reminder service

Kleopatra

KMail

Fix Bug 456578 recipient auto-completion does not work in master git snapshots
Fix bug 448674: Spam false-positive, because link’s href & text capitalization 
mismatch
Fix 395711: External images not loaded by default if message was opened in a 
separate window

Kontact

Fix bug 457241: When the user uses the `New To-do…` menu item, the to-do is created in the system time zone instead of the “floating” time zone ().

Help us make Kontact even better!

Check out some of our open junior jobs! They are simple, mostly programming-focused tasks, but they don’t require any deep knowledge or understanding of Kontact, so anyone can work on them. Feel free to pick any task from the list, then get in touch with us! We’ll be happy to guide you and answer all your questions. Read more here…

Kalendar 1.0 is out!

You might have noticed that there have been a lot of KDE releases this week, like Plasma 5.24 and Plasma Mobile Gear. Keen to hop onto this train, those of us in the Kalendar team are happy to reveal Kalendar version 1.0.

We are even happier to announce that this will be the final version of Kalendar before we will hopefully become part of KDE Gear, where Kalendar will join the rest of the KDE Application family in a 4 month release schedule, with bug fix releases in between.

A massive thank you, and much love, to everyone who has helped Kalendar reach this point! ❤️

Feel free to join us in Kalendar’s Matrix room., where we discuss Kalendar’s development, direction, and more. We are always looking for new contributors!

Our 1.0 release

We have worked hard over the past year to bring you a calendar app that you will enjoy using and that will fulfill your calendaring needs. We hope you enjoy using it as much as we have enjoyed making it. 🙂

It is now in the hands of distribution packagers to add Kalendar to their repositories. The most up-to-date and unstable version of Kalendar will continue to come from our git repository, and some users have gone ahead and started packaging builds of Kalendar coming straight from our master branch.

Git builds:

Stable versions are now also available on a number of distributions, such as Alpine, Fedora, Neon User, Manjaro, and NixOS!

Kalendar will obviously still get new features, additions, and changes in line with your feedback, our ideas, and the direction in which the KDE community as a whole moves towards. With 1.0, we think we have a good application that is complete enough and stable enough for most people to use at home.

With that, lets go through what has changed since our previous release!

Massively improved stability, reliability, and predictability

A significant amount of effort has been undertaken over the past month to address Kalendar’s major bugs and to make the application as stable and easy to live with as possible. While this is not a glamorous new feature, it is the most significant reason why this release is 1.0 — we now trust it to not crash under most use-cases, and we have stamped out all critical bugs that we have found and been made aware of. You can find a full list of bug-fixes and other smaller or backend changes at the end of this post.

That’s not to say we don’t have any exciting changes…

Vastly improved event and task reminder notifications

Thanks to Volker’s hard work, our event and task reminder notifications have been vastly improved since our last release.

Notifications now display event and task information much more clearly and concisely.

For example, we display different text depending on whether an incidence is a task or an event. An event reminder notification will display the start time of the event and the minutes left until the beginning of said event, letting you know how long you have until you need to be at that meeting. A task reminder, meanwhile, will let you know when that task is due, and tell you how many minutes you have left until you need to hand in that assignment.

If an incidence has a URL attached to its location information, the reminder notification will provide a button with which you can quickly open your default web browser. If you happen to have geolocation data attached to your event or task, this button will open your default mapping application instead.

You can now also click on the notification itself and open the event or task inside Kalendar. Upon clicking on the notification, Kalendar will pop up with the view set to the incidence time and with the incidence opened for viewing.

Work is now well underway for our notification system to make its way into KOrganizer too, so those of you who use that application will be able to enjoy all of these changes in the coming releases!

Splashes of colour

Calendar colours are one of the quickest ways to be able to differentiate one calendar from the next, and we’ve added touches of these colours throughout the application.

First, the incidence editor’s calendar selector now has a coloured circle that matches the selected calendar. If you’re like me and you can only really tell what calendars you’re using by colour, that should be helpful! You can also find these in the tasks view’s calendar picker, which you can invoke by adding a quick task in the ‘All tasks’ mode.

A smaller touch has been added to the circular checkboxes in the tasks view. Tasks’ checkboxes now have a subtle background colour matching the colour of the checkbox outline and fill, which makes them look quite nice.

Usability improvements

Thanks to Slawek, Kalendar is now smarter about what start times and due times are set by default for an incidence. New events will always have start times set to the nearest future quarter-hour, or due times in the case of tasks.

Slawek has also now enabled the option for incidences in the week, three-day, and day views to be dragged between the all-day and hourly sections, allowing you to quickly change an event from taking up the entire day to only taking up a section of said day. These views have also gained a nice animation when clicking the “Now” button, which scrolls the view down to the current time.

Additionally, it is now much easier to distinguish between incidence types in the month view. We have replaced redundant icons for incidence types with more useful start times for events, retaining only the type icons for tasks to make them easy to differentiate from events. Thanks to this, it is now also easier to differentiate between all-day and non all-day event types just by looking at whether or not they have a start time in the incidence label.

Tasks in the tasks view will now also display how complete they are in the circular checkboxes, by filling in the rough completion percentage. This lets you see at a glance just how much stuff you have left to do!

Those of you with calendar sources using calendar folders that can themselves have incidences in them are now able to customise these folders as you wish by right-clicking on them in the sidebar, much like other calendars. Additionally, this feature has been extended to calendar sources themselves, and you can now customise their names and icons, refresh them, or delete them from the sidebar.

image

Finally, if you have your desktop set to a language that is written right-to-left such as Arabic, Kalendar will be more usable for you as we have ensured that components such as the tasks view’s tree now correctly adapts to a right-to-left layout.

Bug-fixes, back-end and small changes

Sooooo many.

Supporting us

Is there anything you’d like to see added to Kalendar? Get in touch! I’m @clau-cambra:kde.org on Matrix.

If you want to support Kalendar’s development, I strongly encourage you to donate to the KDE community. These donations help us keep our infrastructure running, including our GitLab instance, our websites, and more. You can donate at https://kde.org/community/donations/.

Happy holidays! Kalendar v0.4.0 is our gift, and it brings new views, improved performance, and many many bugfixes – Kalendar devlog 24

I know it has been a while since our last update, but I can assure you that we have not been twiddling our thumbs! For the holiday season, we are happy to bring a new release of Kalendar, which we have worked hard on to bring new features, better performance, and a bunch of bugfixes that should make Kalendar better than ever on those of you with shiny new machines. This release should land over the newt couple of days.

Happy holidays!

Note: Kalendar is still under heavy development. You’re free to poke around and try it out, but it is not yet final software! If you want to contribute to its development, join us in Kalendar’s Matrix room.

Our 0.4.0 release

We are excited to have you try Kalendar, and we want your feedback — especially bug reports! These will help us improve Kalendar as much as possible before releasing 1.0.

It is now in the hands of distribution packagers to add Kalendar to their repositories. The most up-to-date and unstable version of Kalendar will continue to come from our git repository, and some users have gone ahead and started packaging builds of Kalendar coming straight from our master branch.

Git builds:

Stable versions are now also available on a number of distributions, such as Alpine, Fedora, Neon User, Manjaro, and NixOS!

We hope you enjoy using Kalendar as much as we enjoy making it, and look forward to what you have to tell us about it!

Now, here’s what’s new this week:

Three-day and single-day views

Add single-day and three-day views to Kalendar (Claudio Cambra)

0.4.0 brings two new views: the three-day and single-day views. These are based on the week view, presenting events and tasks according to their times. These new views should make it much easier to check your calendars when the window is width-constrained, or when you have lots of overlapping events.

The three-day view therefore replaces the week view on mobile. The week view was borderline unusable on mobile, and the three-day view makes for a much more usable calendar view.

The day view is also accessible as an overlay across all of Kalendar’s views, on both desktop and mobile. Clicking on the day header, in the month, week, and three-day views brings up the day view for that specific day.

For those of you with very busy schedules, this should make Kalendar a lot more legible.

Drag-drop calendar changing

Add drag/drop for tasks to change collections (Claudio Cambra)

Also new in 0.4.0 is a new thing you can drag and drop: you can drag tasks from the tasks view onto a calendar in the sidebar and quickly change a task’s calendar. This change was inspired by one of elementaryOS’ new features, so credit where credit is due — it’s a great idea!

We are working to extend this new feature to other views for the next release.

Making Kalendar faster than ever

Fixed massive freezing caused by changing date on week view (Claudio Cambra)
Background load for month view no longer async, accelerating startup significantly (Claudio Cambra)
Also load incidence delegates in month view async (Claudio Cambra)
Lazy load date change drawer (Claudio Cambra)
Change root MultiDayIncidenceDelegate component from Rectangle to Item, as Rectangle is unnecessary (Claudio Cambra)

This past week I finally received my Pinephone Pro, and was immediately disappointed to find that Kalendar was still somewhat sluggish on the device. Over the new year, we will be making sure to continue refining and optimising Kalendar to make it as smooth as we can on the device.

We have already began this work. Beginning with the week view, changing the view’s date to far-flung dates should no longer cause Kalendar to freeze while it pointlessly processes new dates. This should make navigation significantly faster.

We have also tweaked what components are loaded synchronously and which ones are loaded asynchronously. This tuning should help Kalendar more quickly load what you need, while loading things that you may not need in the background. Overall, this should make the app feel smoother and faster.

Lastly, we have made the component for incidence items in the month view slightly lighter, which should slightly improve loading times and general smoothness.

Usability improvements

Keep current time position when changing week (Slawek Kaplonski)
Added escape handling to remaining dialog windows (Claudio Cambra)
Tasks view now always shows date string according to system locale (Claudio Cambra)
Kalendar now gets raised to front when new instance is attempted to be opened (Claudio Cambra)

A nice new change in the week, three-day and day views is that your scroll position is conserved across the different weeks/three-day/day intervals. This should save you from having to always scroll to the times that you are interested in viewing in these views. Thanks, Slawek!

We have also ensured that now every dialog window in Kalendar can be closed with the escape key. Those of you on very up-to-date distributions (e.g. Neon user, Arch, openSUSE Tumbleweed, etc.) will have likely already experienced this change thanks to changes upstream, but changes within Kalendar should ensure that the escape key closes dialog windows regardless of the system’s Kirigami version.

The tasks view now also shows the date always according to your system locale, which should save you from being confused by the formatting of the dates shown here.

Lastly, trying to start a new instance of Kalendar when the application is already open will bring the Kalendar window to the front of your desktop!

Big improvements to the alarm notifier client

Fold NotificationHandler into KalendarAlarmClient (Volker Krause)
Create notifications from full incidence objects (Volker Krause)
Update active alarms if we get an earlier one for the same event (Volker Krause)
Create KNotification instances on demand (Volker Krause)
Unify handling of active and suspended notifications (Volker Krause)
Remove the alarm daemon systray entry (Volker Krause)
Store active alarm information whenever they change (Volker Krause)
Simplify incidence access in dumpAlarm() (Volker Krause)
Remove unused notification context (Volker Krause)
Remove unused D-Bus interface of the alarm daemon (Volker Krause)
Use Alarm::parentUid instead of the ETM specific custom property hack (Volker Krause)
Align the alarm timer to the next minute (Volker Krause)

Thanks to Volker, Kalendar’s notifier daemon has acquired some big technical improvements. Eventually, this daemon will be used by both Kalendar and KOrganizer, so these changes will eventually benefit KOrganizer users too!

The first improvement is that the daemon is much smaller and more efficient. Volker has reduced the amount of code that the notifier daemon uses while retaining the same functionality, making the daemon smaller and easier to maintain.

Additionally, the alarm client is now more reliable. For example, suspended notifications are now triggered immediately after a restart but at the correct time; active notifications that haven’t been dismissed are now also restored.

The notification daemon now also checks for alarms according to the stored alarm times, rather than polling every minute for active alarms. This is significantly more efficient (which should help save your battery!) and also more reliable across restarts.

We have also removed the system tray entry. We found that there were enough usecases to justify its retention. For one, the system tray is inaccessible on Plasma Mobile and on GNOME, making the tray icon unusable. Even on Plasma, we found that there were many reasons to use it; since we use KNotifications, we can simply use Plasma’s Do Not Disturb mode to hide notifications, and we found the use-case of turning off the daemon rare enough that it didn’t make much sense to keep around.

Lastly, the alarm daemon’s notifications now have full access to incidence data. This should allow us to add more contextual actions, extra relevant information, and more in the future.

Massive thanks to Volker for these improvements! 🙂

Other bug-fixes and small changes

Supporting us

Is there anything you’d like to see added to Kalendar? Get in touch! I’m @clau-cambra:kde.org on Matrix.

If you want to support Kalendar’s development, I strongly encourage you to donate to the KDE community. These donations help us keep our infrastructure running, including our GitLab instance, our websites, and more. You can donate at https://kde.org/community/donations/.