GSoC/2025/StatusReports/PabloAriño
Appearance
Merkuro – Porting Away from QtWidgets
This project focuses on making Akonadi components used by Merkuro leaner by decoupling their UI from core logic and moving it into plugins, as well as reducing dependencies on QtWidgets.
Mentors
Carl Schwan - Claudio Cambra - Aakarsh MJ
Work report
Week 1:
- Etesync resource - removed configuration from core logic
- Etesync resource - created basic plugin
- Etesync resource - added plugin logic to CMakeLists.txt and removed QtWidget linking to resource.
- Wrote the GSoC week 1 blog post.
Week 2:
- Etesync resource - added knotification to replace last use of qtwidget
- Etesync resource - modified core logic to allow resource and plugin to have their own settings instance
- Etesync resource - finished setupwizard logic plugin
- Etesync resource - testing with akonadiconsole and merkuro calendar
- Wrote the GSoC week 2 blog post.
Week 3:
- Etesync resource - fixed remnant config window and requested MR
- Migration agent - removed configuration from core logic
- Migration agent - created basic plugin
- Migration agent - added plugin logic to CMakeLists.txt and removed QtWidget linking to resource.
- Migration agent - created dbus interface for plugin-agent communication (added to CMakeLists.txt)
- Wrote the GSoC week 3 blog post.
Week 4:
- Etesync resource - added .notifyrc file for KNotification support
- Etesync resource - merged refactored resource with plugin system into kdepim-runtime (MR accepted)
- Migration agent - investigated D-Bus communication issues between plugin and agent
- Migration agent - resolved agent registration issue caused by mismatched D-Bus sessions
- Migration agent - evaluated and ruled out AgentBase's built-in job tracking for lack of visual feedback
- Wrote the GSoC week 4 blog post.
Week 5:
- Migration agent - created local copy of KUiServerV2JobTracker without QtWidgets dependency
- Migration agent - replaced earlier job tracking code with this new lightweight tracker
- Migration agent - removed remaining QtWidgets dependencies from subcomponents and CMake files
- Migration agent - simplified D-Bus interface, removed obsolete methods
- Migration agent - integrated manual migration tasks into job executor with job tracking
- Migration agent - opened draft MR for updated agent logic
- Akonadi - implemented new SingleShot agent capability for short-lived agents
- Akonadi - opened draft MR for SingleShot support
- Wrote the GSoC week 5 blog post.
Week 6:
- NewMailNotifier agent – investigated remaining QtWidgets dependency (showNotNotificationHistoryDialog())
- NewMailNotifier agent – started replaced D-Bus method with a read-only property for notification history
- NewMailNotifier agent – began moving dialog code from kdepim-runtime to the KMail repository
- Wrote the GSoC week 6 blog post.
Weeks 7-13:
- NewMailNotifier agent – continued migration of remaining UI-related files from kdepim-runtime to KMail
- NewMailNotifier agent – identified and listed all additional files requiring relocation (dialogs, widgets, jobs)
- Migration agent – addressed MR feedback, removed temporary job tracker folder after upstream changes
- Migration agent – fixed missing addition of `finished()` signal in AgentBase header (Akonadi repo)
- Migration agent – investigated issue where migrations failed to run, preventing `finished()` signal emission
- Migration agent – confirmed `isPluginOpen()` method triggered correctly when plugin was manually opened/closed
- Migration agent – began redesign of plugin–agent communication to avoid premature shutdowns
- Migration agent – tested singleshot capability behavior, found agent failing to shut down after tasks
- Migration agent – analyzed incorrect status display ("Broken" / "Unable to start") during plugin launch
- Migration agent – identified missing restart mechanism when plugin was opened
- NewMailNotifier agent – worked on adapting dialog and widget code for integration into KMail repo
- NewMailNotifier agent – started preparing D-Bus testing for modified slotShowNotificationHistory()
- Migration agent – refined logic for plugin state tracking to prevent false shutdowns
- Migration agent – continued debugging migration jobs execution flow with mentor’s assistance
- Migration agent – confirmed jobs failed to initialize, blocking proper shutdown signaling
- Migration agent – explored approaches to notify Akonadi for agent restarts on plugin launch
- NewMailNotifier agent – advanced transfer of job-related files (openfolderjob, showmessagejob) to KMail
- NewMailNotifier agent – reviewed runtime repo to ensure no leftover dependencies remained
- Migration agent – documented outstanding issues regarding job execution and restart behavior
- Wrote the GSoC weeks 7-13 blog post.
Merge Requests
- https://invent.kde.org/pim/kdepim-runtime/-/merge_requests/244
- https://invent.kde.org/pim/akonadi/-/merge_requests/269
- https://invent.kde.org/pim/kdepim-runtime/-/merge_requests/257