Kalendar is out! — Kalendar devlog 21

That’s right! Kalendar is now on version 0.1, and we have a first release. There’s still a lot we have left to work on before we get to 1.0, but we are getting there! More on this below.

We also have a truly titanic changelog for the past two weeks. Some truly big changes and a load of smaller ones make Kalendar better than ever and should mean a beta that is a significant improvement upon our previously unstable builds.

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 initial release

Kalendar now has a 0.1 release that you will (hopefully!) soon be able to install on your system. Note that this is still an in-development release and that there will be bugs, features still to be added, and so on. We want your feedback — especially bug reports! These will help us improve Kalendar as much as we possible can before we can release a truly stable 1.0 version.

You can get the tarball for Kalendar version 0.1 here.

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.

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

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

Massive performance gains

!140: Overhaul model assignment in views and centrally manage models (Claudio Cambra)

A massive refactoring of how incidences are retrieved means that Kalendar is now significantly faster to load, change views, and change dates than it was before. Those of you wanting to use Kalendar on older devices or the PinePhone will really appreciate this change, and using the app should now feel substantially faster and smoother!

You can now import iCal (.ics) files into Kalendar

!144: Add .ics import feature (Claudio Cambra)

A hotly requested feature is now a part of Kalendar: iCal importing!

image
image

You can now import .ics files and are presented with a choice of what to do: you can either create a new calendar from this file, or merge the file’s incidences into one of your existing calendars. This should make it a lot easier to get your data out of proprietary services and into your local machine, where your data is safe and sound.

Don’t worry, though: you can still use your preferred online services. 😉

Animations make things more swishy and swooshy and smoooooth

!142: Animate more elements of the UI (Claudio Cambra)

Selecting incidences now makes their colours shift in and out smoothly, with a nice colour-change animation that should make Kalendar feel much slicker.

We’ve given headers a similar treatment: resetting the all and multi day header in the week view now makes it slide up instead of simply be up, and the filter header now smoothly slides in and out of the current view too.

Improving the sidebar

!143: Sidebar improvements (Claudio Cambra)

image
Spot the search bar in the top left, the new tags in the sidebar, and the collapse ‘Calendars’ section

The sidebar now lets you collapse the ‘Tags’ and the ‘Calendars’ sections, letting you hide the sections that you don’t use. We’ve also changed the tags section to now show you actual tags instead of just a list of labels, making it look prettier, be clearer, and take up less vertical space.

Lastly we’ve removed the search bar from the tasks view header and moved it into the sidebar. This gives us more room to play withy in the future, and soon we will be extending the use of this sidebar searchbar into the rest of Kalendar.

The tasks view is faster and prettier than ever

Commit bd32795b: Added reset button to tasks view collection title to easily reset filtering collection (Claudio Cambra)
Commit bbdbe71b: Tasks tree view decoration now highlighted with task color on hover (Claudio Cambra)
Commit a58ff22b: Highlighted task now has less strong color, making checkbox and text visible, and now color pulled from task color (Claudio Cambra)

One usability improvement that came about as a suggestion from a tester is now here: resetting the current task calendar is much more obvious as we’ve added a ‘reset’ button in the header.

Subtle!

We’ve also added a few cool aesthetic tweaks: the expandability marker and the task highlight now both use the colour of the task, which we think looks pretty nice.

Making things clearer in the week view

Commit 5de8c257: Slightly thickened current hour label in week view (Claudio Cambra)
Commit 79f8de00: Made current time markers in weekview more accurate, overlapping hour labels now become invisible (Claudio Cambra)
Commit edd52764: Fixed breakage of hour label overlap calculations on current time change (Claudio Cambra)
Commit 5bcf09c8: Week view current week now scrolls to current time on load (Claudio Cambra)
Commit 131a5394: Week view now consistently scrolls to correct position (Claudio Cambra)

The week view now has a current time label in the hour label column to the left, making it much clearer where exactly the current time marker is pointing to. This hour label remains visible throughout the day, and hides the hour labels it overlaps with.

Additionally, the week view now automatically makes sure to scroll near the current time, meaning you won’t have to scroll down to the current time when you want to check your events.

The incidence editor is faster and a lot more stable

!141: Move all date-handling stuff to C++ (Claudio Cambra)
Commit 660e7330: Simplified timepicker and streamlines date assignment, should fix related bugs (Claudio Cambra)
Commit 7e805ddb: Pressing enter in the incidence editor now adds/edits current incidence (Claudio Cambra)
Commit 56c8c88e: Made time picker be exact size needed + aligned to right of time combo (Claudio Cambra)

Date and time handling in the incidence editor has been completely rewritten from scratch. Why? Because JavaScript dates can be pretty unpredictable, especially in the context of variables such as timezones, daylight savings time changes, and so on. Qt’s QDateTime, QDate, and QTime classes offer much more explicit, predictable, and controllable handling of all of these things, so we have replaced QML/JS dates across Kalendar with these instead. The result is the elimination of all date and time related bugs in the incidence editor.

We’ve also made some tweaks for the sake of usability. For example, something I personally found annoying was that you couldn’t just slam enter whenever you were done editing an incidence and have that save your changes. Well, now you can, so slam that key away.

The time picker’s size and position has also been tweaked to ensure that it is always within window bounds and takes up only as much space as it needs to.

Speaking of time: the time fields in the editor now show the set time in the same way as the rest of your system (e.g. 24 hour time or AM/PM), and you can now type in the time in the same way too.

Other bug-fixes and changes

Commit 44e966cd: Fixed font corruption in month and week views (Claudio Cambra)

  • Fonts no longer get garbled on certain system configurations (e.g. NVIDIA GPUs)

Commit 73a2c580: Added Connections component to ensure start and end times are updated correctly in editor (Claudio Cambra)

  • Start and end times are now always updated correctly in the time and date fields

Commit 11b25fcc: More incidence editor fixes, disabling due date when in tasks mode now disables all day (Claudio Cambra)

  • When adding or editing a task, the all day checkbox is no longer enabled when there is no due or start date set

Commit 88281cfb: The incidence editor now edits a copy if the incidence ptr (Claudio Cambra)

  • There are no longer visible changes in incidences during editing if the changes have not been saved

Commit f6839dbe: Both rows of start and end dates now have comboboxes of equal width (Claudio Cambra)

  • There is no longer varying widths between the start and end date and time combo boxes in the incidence editor

Commit 5a96d6b1: Added minimum width to tag labels to prevent background borkage (Claudio Cambra)

  • Tags now have a minimum width, preventing the tags from looking broken when the tag text is shorter than 3 characters

Commit f1123841: Fixed date misalignment in date picker (Claudio Cambra)
Commit 0fa5b617: Date picker now correctly aligned in all locales (Claudio Cambra)

  • Fixed date misalignment issues in the date picker, including across system locales

Commit fff4366f: Properly handle parent task deletion, preventing crashing on modifying orphaned child task (Claudio Cambra)

  • This fixes a bug where upon completing an orphaned task (i.e. the parent had been deleted) Kalendar would crash. This is now handled correctly and the crashing is eliminated.

Commit 63c75266: Week view now pulls hour labels from C++, solving a littany of bugs and workarounds (Claudio Cambra)
Commit 3e27867f: Ensure week view hour labels set to 0 mins (Claudio Cambra)

  • Fixed issues with the hour labels being misaligned or having non-0 minutes in certain locales

Commit b64db3ff: Fixed editing tasks resetting the task’s due date (Claudio Cambra)

  • Editing a task should no longer reset its due date

Commit 0c8f9b87: Tasks view no longer resets on everything (Claudio Cambra)

  • Adding, deleting, or modifying tasks no longer resets the view, making it less irritating to use with sub-tasks

Commit 31b175e0: Fix property warning (Claudio Cambra)

  • Fixed a compile-time warning

Commit dda77f87: Disabled clickable elements in sidebar when sidebar is collapsed (Claudio Cambra)

  • Sidebar elements that are hidden are no longer clickable when the sidebar is collapsed

Commit eb17eaab: Adding sub-task and marking completed actions once again show up for tasks in incidence info (Claudio Cambra)

  • The ‘Add Sub-Task’ and ‘Mark Completed’ actions now once again appear for tasks in the incidence info drawer

Commit 12648a20: Fixed shadow above scrollbar in week view

  • There is no longer a weird shadow when in the week view and there is no all/multi day header

Commit 3d89861e: Fixed tags jumping up delegates when unfolding nested tasks (Claudio Cambra)

  • Tags should no longer stick to a row index even if that row index no longer belongs to the task the tags actually are set to

Commit 780a296a: Tasks set to be all day and are on the current day no longer show ‘overdue’ (Claudio Cambra)

  • Tasks set to take all of the current day are no longer shown to be overdue

Commit e744c7ba: Bumped up version of kirigami import in sidebar qml (Claudio Cambra)

  • Kirigami version required by sidebar QML file is now the minimum required for the components

Commit 6919472e: Fixed incidence editor action stealing enter from other parts of Kalendar (Claudio Cambra)

  • The enter key now works across Kalendar again (oops)

Commit e7595dfc: Fixed task view placeholder messages (Claudio Cambra)

  • The placeholder messages in the tasks view now show up in all the task pages, and correctly

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

I’m livestreaming Kalendar development!

Today (Wednesday 27th Oct) at 18:00 CEST I will be streaming some Kalendar development live on YouTube and on KDE’s Peertube instance.

KDE Peertube (Kockatoo): https://tube.kockatoo.org/c/clau_cambra/videos

My YouTube channel: https://www.youtube.com/watch?v=etAlv78LaIE

If you are curious about contributing to Kalendar, have questions for me, or just want to hang out, come say hi! 😁

Some big usability improvements and fixes, fixes, fixes — Kalendar devlog 20

In our last week of KDE Review, we have been focused on fixing as many bugs — big and small — as we have been able to. Thank you to everyone who has reported bugs, and thank you even more if you have helped in fixing them!

Besides bug-fixes, we also have some pretty nifty usability improvements in store that should make Kalendar more intuitive, more user-friendly, and more pleasant to use than ever!

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 progress on KDE review

We have continued fixing bugs and making improvements during this week of KDE Review. This Sunday, KDE Review will be over, and (hopefully!) we will have passed! From then on, we will be able to start using KDE’s infrastructure to create actual releases. Exciting!

More exciting is the fact that we will be sharing more details about a beta very, very soon…

But first, this week’s improvements!

The sidebar is now collapsible

!129: Make it possible to collapse the sidebar (Felipe Kinoshita)
Commit 95d6429b: Sidebar collapsed-ness now remembered by Kalendar (Claudio Cambra)

If you don’t need to access your tags and calendars very often, you might find that the sidebar is an unnecessary use of the application window’s horizontal space. Or, maybe you would like to have Kalendar in a small window and find that the sidebar is too wide to see the current calendar view.

That’s why this week we have added a new feature: the sidebar is now collapsible into a thin strip. This thin strip only shows the buttons to switch views, meaning that you can retain access to your most needed actions while taking up the least horizontal space possible.

Kalendar also makes sure to remember which state you put the sidebar in, saving you from having to collapse the sidebar every single time you open up the app.

Note that this only affects the desktop mode; on mobile, the drawer still works as usual.

Improving the week view’s multi and all day view header

!135: Make week view all day header auto-adjust height to incidences and enable manual change of this view’s height (Claudio Cambra)

The week view’s multi and all day view has seen a significant improvement in how it handles its height. Whereas before the header’s size was consistent regardless of the number of incidences it had to show, it now automatically adjusts its height to that of the lines of incidences it shows.

Additionally, you can now click on the bottom edge of the header and drag to vertically resize this header, letting you set this header’s height as you please. A handy little ‘Reset’ button appears in the bottom-left corner when you do so, letting you return it to automatic height.

Making incidence editing/creation easier, faster and more intuitive

!130: Remember the last collection used when adding an incidence (Claudio Cambra)
Commit 1bb8bfd3: Setting an incidence start now makes the incidence end follow it (Claudio Cambra)

Several changes have been merged this week that improve the process of creating and editing incidences.

The first is that Kalendar now remembers the last calendar to which you added an incidence. This means that when you go ahead and add a new task or event, the incidence editor will automatically be set to the last calendar you added an incidence too. This should hopefully save you from having to pick your desired calendar when creating new tasks and events. Kalendar also differentiates between task and event calendars, meaning you won’t, for example, accidentally add an event to your last used task calendar — your last used event calendar will be pre-selected.

We have also reworked the way that time selection works for incidences. Before, start and end times were selected completely independently. This often lead to warnings about end times preceding start times, even though you hadn’t even had a chance to select an end time. Now, changing the start time of an incidence will automatically move the end time too, saving you from accidental errors. It should also make it easier to change the time of an event if you, for example, selected the wrong date, since upon changing the start date the end date will be changed too. The end date and time is always changed in accordance to the prior difference between start and end time, so if you had selected an incidence to start at 4 and end at 5, if you change the start time to 2 the incidence will now end at 3.

Improving the time picker on desktop

!131: Time pickers now respond to mouse scroll, making them more intuitive to use on desktop (Claudio Cambra)

Another time-related improvement relates to the time picker, used to select times in the incidence editor. This component can now be used with the mouse scroll wheel — meaning if you preferred to use the picker rather than type into the time field, this will now be a lot quicker and easier.

Date navigation in the menu bars

!128: Add a go menu to window and global menus (Claudio Cambra)

The menu bars now have a new menu: the ‘Go’ menu. This menu contains several entries that should make date navigation more accessible.

We have put the standard ‘Backwards’ and ‘Forwards’ actions here, as you would expect, which moves the different date views forwards or backwards one screen — whether this is a month in the month and schedule views, or a week in the week view. Also included is an action which lets you go back to today.

Additionally, we have added an action that brings up the date changer popup. We realised it’s not immediately obvious that the views’ date title is a button that brings up the date changer. The new ‘To Date…’ action in the ‘Go’ menu provides a more discoverable way to bring up the date changer, making Kalendar slightly more usable.

Pressing escape now dismisses dialogs and overlay elements

!122: Pressing Escape now closes dialog windows, overlay sheets, and incidence info (in that order) (Claudio Cambra)

Power users always request quicker ways to do things — to do things, open things, and close things. Well, now we’re making closing things a lot quicker: the Escape key now closes dialog windows, overlay sheets, and drawers. So you can quickly dismiss an incidence, or the incidence editor, or the delete confirmation sheet.

Use real windows on desktop for completed tasks and for picking a quick task’s calendar

!132: Use real window instead of OverlaySheet for tasks (Carl Schwan)

In the tasks view, opening the completed tasks on the desktop now brings up a separate window instead of an integrated overlay sheet. This should make this window more manipulable on the desktop, while retaining the sheet on mobile.

This also applies to the calendar selection dialog invoked when adding a quick task in the tasks view.

Improved link handling in the incidence information drawer

!125: Display hovered link in the bottom left (Carl Schwan)

Links are now easier to handle than they were before. When you hover above a link in the incidence information drawer — whether this is an attendee’s email address, a website in the description, or the URL for a meeting — you can now see the link’s URL in the bottom-left of the Kalendar window, just like you would in your browser.

Additionally, you can now drag-click and highlight (and then copy and paste) links too.

Bug-fixes and other changes

Commit b851709e: Fix typo in CMakeLists (Fabian Vogt)
Commit a19114fa: Fix multiple top-level definitions of enum Roles breaking ODR (Fabian Vogt)

  • Fixed backend typos and breakage due to typos in CMakeLists and badly defined Enum

Commit 7b48c205: Fixed touch on mobile, broken by deselectormousearea (Claudio Cambra)

  • Fixed view navigation and incidence selection on mobile

Commit c5213a06: Capitalization fixes (Justin Zobel)

  • Capitalisation of labels in settings now match rest of app

Commit 374f3920: Fix menu layout consistency (Justin Zobel)

  • Menu bar toggle is now above configure button in both hamburger and menu bar menus

Commit 60f68793: Deboldened Summary label in incidence editor (Claudio Cambra)

  • Deboldened the ‘Summary’ label in the incidence editor. This prevents borkage in the formatting of this label after pressing ‘Alt’ key.

Commit 5d94e5c0: Weekdays fixed in date picker (Claudio Cambra)

  • Week day labels now appear in the date picker everywhere

Commit a3b95a7b: Week view incidence squares now clip and font becomes small when space restricted (Claudio Cambra)

  • Incidences in the week view now have small labels instead of having text clipping through the rectangle

Commit ae746ce5: Fixed touch scroll on weekview (Claudio Cambra)

  • Week view vertical scroll now works correctly on mobile

Commit 56321a1d: Fixed hour label misalignment in different locales (Claudio Cambra)

  • Week view should now start from 00:00 regardless of what time locale is set on the system

Commit 5489bb9c: Fixed crashing when switching views and about page open (Claudio Cambra)

  • Switching views when the about page is open should no longer cause Kalendar to crash

Commit 69665e7b: Fixed week view incidence delegate binding loop for property isTinyHeight (Claudio Cambra)
Commit e187993a: Fixed TodoTreeView todoItemContents width property binding loop (Claudio Cambra)

  • Fixed binding loops, which would create masses of warnings in console output

Commit 5f1b9216: Fixed alignment of labels in tasks without occurrence details in tasks view (Claudio Cambra)

  • Labels in the tasks view should now be vertically centred when there is no detail about due times or recurrence

Commit 17527867: Make “Month View Settings” separator consistent with other separators (Felipe Kinoshita)

  • Separator for ‘Month View Settings’ section in view settings now consistent with other section separators

Commit a23778c3: Remove unused “getCurrentView” function (Felipe Kinoshita)

  • Removed an unused function in sidebar code

Commit b36f1274: Fixed sidebar behaviour on desktop when not widescreen (Claudio Cambra)
Commit 248a22e6: Fixed super glitchy sidebar collapse behaviour on window resize (Claudio Cambra)
Commit 9d99eb41: Fixed drawer on mobile when wide (Claudio Cambra)

  • A battery of fixes for the newly merged collapsible sidebar. Long story short: glitches fixed, behaviour is as you would expect across different devices and window sizes.

Coming up next

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