Kalendar v0.3.0 out soon, with improved stability, efficiency, accessibility… and a Windows version?? – Kalendar devlog 23

Over the past two weeks, we have been hard at work under the hood of Kalendar. What you can expect from these two weeks’ refactors, additions, and changes is a version of Kalendar that is more stable, faster to use, and easier to use than ever before.

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

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:

Making Kalendar faster to use

Improve defaults (Claudio Cambra)
Double-clicking on incidence now opens up the editor (Claudio Cambra)
Added menu entries to refresh all calendars, including an F5 shortcut (Claudio Cambra)
Can now resize incidences in the week view by dragging on bottom edge (Claudio Cambra)
Kalendar now auto rounds new start dates for events to next nearest 15 mins (Claudio Cambra)
Kalendar now auto rounds new due dates for tasks to next nearest 15 mins (Claudio Cambra)

We’ve made several small tweaks and additions that should make Kalendar faster to use when you’re in a hurry.

Plasma’s motto has been ‘simple by default, powerful when needed’ for the past half-decade. Kalendar’s philosophy is the same, and this week we tweaked our default configuration to make the application as clean and simple as it needs to be. Concretely, we have changed the month view to not show week numbers by default, and for tasks to be arranged in ascending date order. This should save you from fiddling around with the settings!

Thanks to feedback from some of our users, we have now also made Kalendar much faster to interact with. In the last devlog, we explored the new drag-and-drop feature, and this week we are expanding on the week view’s speed by introducing event “resizing” directly from within the view. Clicking and dragging on the bottom edge of an event now lets you adjust its end time without having to open the editor window.

If you do need to edit an event in more detail, however, this is now a lot quicker too: you can just double-click on an incidence in any of Kalendar’s views to bring up the editor.

We have also added an action to immediately refresh all of your synchronised calendars if you need a remote change to be immediately reflected in Kalendar. A new “Refresh All Calendars” action can be found in Kalendar’s menus, and can also be quickly invoked by pressing F5.

Lastly, we are making setting the time for your new events and tasks easier: rather than simply setting the start or due times of these incidences to the current time, we are rounding them to the nearest upcoming 15-minute multiple. Hopefully this will save you from having to manually edit start, end and due times as much!

Visual improvements and tweaks

Made currently selected time more obvious with bolding in the time picker (Claudio Cambra)
Added rectangle to show clearly current time selected in time picker (Claudio Cambra)
Add list section headings to tasks view (Claudio Cambra)

It wouldn’t be a Kalendar update without some visual improvements!

We have paid some attention to the time picker, which was preciously not very clear on what time was being selected. We have added a background and bolding to the currently selected time in order to highlight it. This should make selecting and event’s time much clearer.

Additionally, we have also added some section headings to the tasks view. These section headings adapt according to what type of sorting you are using for your tasks (i.e. alphabetically, by date, or by priority) and clearly show the categories that your open tasks fall under.

Accessibility improvements throughout Kalendar

Improve accessibility of sidebar (Carl Schwan)
Improve color checkbox visual focus (Carl Schwan)
Fix keyboard navigation in TreeView (Carl Schwan)
Added a delete key shortcut to delete currently viewed incidence (Claudio Cambra)

Carl has merged some changes to Kalendar that should significantly improve keyboard-based navigation around the app. The sidebar is now much more responsive to keyboard navigation and allows you to interact with all of its elements without the mouse, including selected calendar’s checkboxes, view-switching buttons, and so on.

Similar changes have taken place to the tree-view that forms the basis of the tasks view. Whereas before this component was not really navigable by keyboard alone, this is no longer the case: the up and down arrow keys let you select the row, while the left and right arrow keys let you expand or collapse a rows with children.

Finally, there is also a new change that lets you delete the incidence you are currently viewing by pressing the Delete key, saving you from having to navigate through the UI.

Having said this: we still have a long way to go accessibility-wise throughout the rest of Kalendar, especially when it comes to its calendar views. If you have any experience in improving the accessibility of QML-based applications, or simply have feedback as to how we can help make Kalendar easier to use for more diverse audiences, don’t hesitate to get in contact with us!

Big bug-fixes

Fix drag and drop and resize behaviour for recurring incidences (Claudio Cambra)
Incidence wrapper is now an ItemMonitor, letting us update incidence info automatically when they change in calendars (Claudio Cambra)
Add an alarm client to Kalendar (Claudio Cambra)

While conventionally bug-fixes are listed at the bottom of these updates, some significant refactors have occurred over the past two weeks that should fix a variety of fairly problematic issues.

The first was drag and drop for recurring incidences. We have rewritten how drag and drop works, and it now works far more intuitively than it did before. Dragging and dropping a recurring event’s occurrence now prompts you to pick what you want to do, rather than just pushing forward all of your recurring incidences to the date you just dropped this incidence at. The choices lets you create an exception (or several exceptions) for a recurrence, letting you modify how your event is supposed to recur over time.

Additionally, we now properly handle time-zones in drag+drop, meaning you shouldn’t face a jarring issue where dropping an incidence in one place would immediately make it move elsewhere.

The class that handles presenting incidence’s data to the UI has also been modified. Changing an incidence in the editor, for example, will now cause these changes to be reflected in the incidence info drawer if it is also showing the data for said incidence. This should fix issues with an edited event now having these changes propagated throughout all of Kalendar.

Finally, we have added a big new component to Kalendar’s backend: an alarm client that runs in the background, providing notifications for upcoming reminders for your events. The alarm client starts in the background and remains running after you close Kalendar to ensure your reminders always reach you. This daemon lives in the system tray and provides you with a few options you can tweak to your liking.

Kalendar on Windows??

Thanks to Nicolas, we now have a running and working version of Kalendar on Windows! Thanks to the flexibility of Qt, the KFrameworks, and Akonadi, you can now download a version of Kalendar for Windows — though do note that we test mainly on Linux and that the Windows version is definitely more of an experiment than a final product. Still — if you’re tired of using the proprietary calendar app on Windows, give it a try!

kalendar.PNG

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

Kalendar v0.2.0 is out now, adding drag-and-drop, improved calendar management, and lots of bug-fixes — Kalendar devlog 22

A week has passed since our first release and we are back with another one! We’ve worked hard to go through your bug reports and suggestions, and thanks to these we have a new version of Kalendar that is more stable and powerful 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 0.2.0 release

While we are excited to have you try Kalendar, please not that 0.2.0 is still an in-development release and that there will be bugs and missing features. 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.

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:

Drag-and-drop incidences to change their times

!147: Add drag and drop to change incidence start times (Claudio Cambra)
Commit 95b2a5f5: Dragged incidences now correctly return to where they were when dragged into non-droparea space (Claudio Cambra)

Another highly-requested feature has been added to Kalendar: you can now drag-and drop editable incidences in your views to change their times.

This feature has been added to all the calendar views. Both the month and schedule views let you drag and drop incidences onto different days and thus change the start date of your dragged incidence, while the week view offers more granularity by letting you set your incidence start time to the nearest quarter-hour.

Manage and customise your synchronised calendars

!148: Add menu with calendar editing options (Claudio Cambra)

image

We have also added a new context menu that you can invoke by right-clicking on your synchronised calendars in the sidebar. This context menu provides a number of new actions that let you easily manage your calendars straight from Kalendar.

  • ‘Edit calendar…’ invokes a properties dialog that lets you set an icon, name, and retrieval (sync) settings for this calendar
  • ‘Update calendar’ lets you immediately refresh the calendar and pull new changes from the calendar source
  • ‘Delete calendar’ is… self-explanatory
  • ‘Set calendar colour…’ lets you change the calendar’s colour without having to go into the settings

Usability tweaks and visual improvements

Commit 2a7db762: Can now press enter when delete dialog open to quickly delete (Claudio Cambra)
Commit ab0b5bd9: Completed tasks now have strikeout across views (Claudio Cambra)
Commit d06eed8f: Add number of tasks left to complete to filter header (Claudio Cambra)
Commit 53b7cfdd: Completion sliders now have highlight colour of parent collection (Claudio Cambra)

We’ve made some things faster and clearer.

Incidence deletion, for instance, now responds to the Escape and Return/Enter keys. So if you bring up the dialog to delete an incidence, you can rapidly dismiss it by either pressing Escape or quickly delete by pressing enter.

Regarding tasks: these are now more clearly marked as completed throughout calendar by appearing with strikethrough text across Kalendar’s calendar views.

In what is potentially an anxiety-inducing addition, we have also added the number of tasks to be completed to the tasks view’s header. This should let you know how much stuff you have left to do, which should help you panic a bit more!

Lastly, we have tweaked the completion sliders in tasks to have the same colour as the task’s parent calendar, helping the incidence info section feel less incongruent colour-wise.

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

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