Releases: shrippen/Kurrent
Releases · shrippen/Kurrent
Release list
v0.4.0
0.4.0 — 2026-09-03
Added
View modes
- Swimlanes: lane × time matrix with configurable axes (Project, Label, Priority, Parent task × Day/Week/Month)
- Project plan: project × time grid with configurable time bucket (Day/Week/Month), planning horizon (0–52), consolidated overdue column, undated tasks column, optional completed task display
- Heatmap: day cells toggled by due date / completions
- Calendar + tasks: event chips + tasks for selected day; Day/Week mode
Smart Views
- Filter bug fixed:
projectIdparsed to 0 instead of -1 when key was missing → smart views showed no results - Smart views count correctly in sidebar badges (computed on load, not on click)
- Dedicated "Smart Views" folder in sidebar (below Maintenance) with badge and navigation
- Alphabetical sorting of smart views in sidebar and KCM
- KCM Views: section order corrected — Smart Views above Kanban
KCM Views — Swimlanes
- Row axis: Project / Label / Priority / Parent task
- Column axis: Day / Week / Month
KCM Views — Project plan
- Time grouping: Day / Week / Month
- Planning horizon: 0–52 periods (0 = unlimited)
- Show undated tasks (own column)
- Show completed tasks (optional)
Merge conflict dialog
- Wizard style: one field at a time, Kurrent/Akonadi columns, chip rendering
- Overlay card (like FullEditor), D-Bus
testMergeConflictfor testing - Null guards, auto-resolve, stale echo guard
Other
- Project chip in task delegate (visible when no project filter active)
- Diagnostics KCM visible in dev builds only (
DevBuildMarker.qmlgenerated via CMake) - Auto-check allDay when date is entered without a time
- Quick-add: full editor opens when button is clicked with empty text
Fixed
- Smart View editor: replaced free-text fields with dropdowns (Project, Label, Status, Due, Priority)
upsertTask: reject revision-0 monitor updates when cache has a real revisionpersistTodo: refetch before modify when revision is 0configViews.qml: dialog content fills dialog space correctly (anchors.fill instead of Layout)- Sidebar: smart view counts precomputed (not only on click)
computeCounts: smart view badge count calculated correctly;matchesViewFilterdelegates to smart rules
Changed
- CalendarAgendaView: stable toolbar with fixed label width, icon-only Today button, animated Day/Week toggle
- Chunked model application for smoother animations
- Sidebar highlight animation, dimming removed
- Calendar event integration (opaque/busy events)
- Version 0.4.0 (CMakeLists.txt + metadata.json)
Tests
planMatrixGridOverdueConsolidationAndHorizon: overdue consolidation, horizon clipping, showCompleted, undated, day-bucketsmartViewFilterAppliesInComputeCounts: smart view rules affect sidebar counts- All 69 tests passing (100%)
Not yet manually tested
The following features are implemented and unit-tested but have not been manually verified in a live environment.
- Swimlanes mode: matrix display, axis switching, touch interaction
- Project plan: overdue column, horizon clipping, undated column, show completed toggle
- Kanban DnD: card dragging between columns, field writes per source
- Merge conflict dialog: wizard flow, DBus test, editor integration
- Multi-select + bulk actions: complete/delete/reschedule/move/copy UIDs
- KRunner:
task today,task <search>, add task - Global shortcuts: Meta+Shift+K/N, D-Bus show/addTask
- Offline/syncing banner: Akonadi offline (red), Syncing… (yellow)
- KCM Swimlanes/Project plan: settings applied correctly and restored after restart
- i18n: German strings for new swimlanes/plan options; fallback checks in de/es/fr/ja/zh_CN
Kurrent 0.3.1
0.3.1 — 2026-08-29
Fixed
- i18n catalog completion: all 304 QML strings now translated for de, es, fr, ja, zh_CN (was ~166; ~158 fell back to English at runtime)
generate_po.pyauto-extracts msgids from QML and fails on missing per-locale translations
Install
Widget only (KDE Store / Get New Widgets): install com.github.shrippen.kurrent-0.3.1.plasmoid
Full install (widget + Akonadi backend):
curl -fsSL https://github.com/shrippen/Kurrent/releases/download/v0.3.1/install-linux.sh | sudo bashOr pin this release:
curl -fsSL https://github.com/shrippen/Kurrent/releases/download/v0.3.1/install-linux.sh | bash -s -- --tag v0.3.1Kurrent 0.3
0.3 — 2026-08-29
Added
- Search/sidebar filters keep the full open task tree; completed tasks only in Completed view (with open parents rescued)
- Sort popup stays open for multi-level edits; default Priority › Due › A–Z; opposite directions mutually exclusive; removed opaque “Default”
- Sort persistence: global or per-view scope (Tasks KCM); stored in
Plasmoid.configuration/ sharedkurrentrc; defaultpriority,due,titlewhen unset - Sort keys: due latest-first, start date, reminder/recurring first|last, progress % low|high
- Overdue view:
chronometericon (replaces missingappointment-missed); “Overdue” translated - Due date/time in task row chip line: right-aligned accent text (overdue stays negative)
- Full editor: pick any same-project task as parent (
ParentPickersearch field like labels) - Notifications KCM: optionally suppress reminders during ongoing calendar events; pick which Akonadi event calendars count (opaque/busy events only)
- Panel KCM: badge modes tomorrow and high priority; dot instead of number; overdue badge color (accent vs negative); configurable panel tooltip (open, today, today+overdue, overdue, high, all views)
- Panel flyout preloads at applet startup (
preloadFullRepresentation: true;FullView.qmlloads async once the plugin is ready) - Boot loader: Breeze gear icon (
boot-gear.svg, fromprocess-working-symbolic) while plugin / FullView load - Backend version mismatch banner: widget compares
metadata.jsontoTaskController.pluginVersion; warning in FullView and General KCM with reinstall one-liner (KDE Store widget + outdated~/.localplugin) - i18n catalog gap fill: ~129 UI/C++ strings (sort keys, ParentPicker, settings pages, notifications, parent errors) for de/es/fr/ja/zh_CN
Fixed
- Panel startup: load
PluginBackendasynchronously so the compact icon is not blocked onlibkurrentplugin.so; keep task cache during Akonadi fetch (no empty badge flash) - Flyout opens immediately with boot loader; FullView loads async; indeterminate progress while Akonadi connects / tasks load
- Today Catch-up (“Still open”) includes all overdue incomplete tasks (same set as the Overdue view), not only those within the former catch-up lookback window
- Sort menu radios no longer stick on “None” for levels 2–3
- Due dates missing in list chip and editor (#2): Qt 6 Date has no
isValid; useDateTime.isValidDate()(getTime()/ format fallback) instead oftask.dueDate.isValid === true install-linux.shDebian/Ubuntu build deps (#1):libkirigami-dev(notlibkf6kirigami-dev)- Panel KCM category icon:
plasmashell(Breeze has no genericpanelicon) - Remove Panel KCM flyout width/height (Plasma persists popup size via drag-resize)
- Full editor project radios: folder icon sits beside the name (not under the radio circle)
- Quick Add: long text wraps and the field grows (capped at
quickAddMaxLines); scrolls internally beyond that; Enter still adds, Shift+Enter inserts a newline - Parent picker: TextField stays focusable for typing; label vertically centered; suggestions open upward (height clamped to space above); priority/tag chips before task name
- Sidebar KCM reorder: keep dragging across multiple positions; persist order on drop
- Inline editor: closes on view/filter/search/sort change, drag start, or when the task leaves the list
- Inline editor: full delegate width flush with row hover; short unfold animation on open
- Task list scroll:
Kirigami.WheelHandler(same as Kirigami apps); removed customKineticScrollHandler - Sort popup scroll: same
Kirigami.WheelHandler+OvershootBounds/returnToBoundsas the task list - Join button: first chip in the status row (before date/labels/priority); tooltip „Open / Join“ (+ translations)
- Task list: touchpad overshoot rebounds (
OvershootBounds+returnToBoundsafter wheel/flick) - Collapse: omit descendants from flat list so scrollbar matches visible rows; reserved collapse-arrow column + indent hierarchy
- Task list:
reuseItems, largercacheBuffer; hover suppressed viawheelScrolling - Smoke test: process-wide step/leader so recreated FullView continues; faster ticks; 30s timeout; lib64 QML path
- Sidebar near-fit: grant full natural height when shortfall is at most one row; steal from sections that overflow more
- Sidebar scrollbars visible on overflow; bar fits in fixed
spaceSmallmargin - Sidebar section heights: proportional when short;
sectionsAllocatedinstead of-1sentinel - Sidebar task counts stable when collapsing (default); optional “Exclude collapsed subtasks from counts”
Architecture
AbstractTaskStoreboundary for task CRUD:AkonadiTaskStore(live) andMemoryTaskStore(unit tests, no Akonadi server). Optimistic UI + rollback stay inTaskController(cache, inflight, revertTodo)- Unit test
kurrent-taskstorecovers create/modify/move/delete and forced failure
Code quality (agent.md)
- View ids, reschedule presets, priority bands as named constants; DaySpan/CursorKind/LoadState enums instead of bool params in TaskLogic
TaskListModel::dataDiffRolesalways uses braces- QML spacing uses
Design.space*/ pads instead of rawKirigami.Units.*Spacing
Installer
install-linux.sh: chown~/.localbefore copy; dropkpackagetool6for plasmoid install/update; legacy cleanup viarm -rf; verify file ownership after install; warn when not run viasudo; clearer fallback messages for incompatible prebuilt pluginsinstall-linux.sh: hard Plasma 6 / Qt 6 / KF6 gate (check_plasma6_env) before deps or binary install; unknown distros warn and ask to continue (confirm_unknown_distro; auto-continues when non-interactive)install-linux.sh: immutable/atomic distro detection (warn_immutable_distro) with rpm-ostree, transactional-update, and Toolbx/Distrobox guidance; interactive continue prompt (auto-continues when non-interactive)install-linux.sh: Debian/Ubuntu Akonadi runtime packages; Fedoraakonadi-server/akonadi-calendarwithout silent failure;lib64/qmlin QML env (Fedora/RHEL source installs)install.sh: same plasmoid install path as the release installer (cmake install + verify, nokpackagetool6);lib64/qmlin QML env helper
Kurrent 0.2.2
Full Changelog: v0.2.1...v0.2.2
Kurrent 0.2.1
Bug-fix release.
- Fix QuickAdd highlight overlay shifting left when typing
- Fix double-text ghost layer when selecting text in QuickAdd (Ctrl+A)
- Fix smoke test never starting (QML scope shadowing made backend null)
- Fix smoke test skipping the first post-view step (off-by-one in switch cases)
- Landing page: Rajdhani heading font
- Design.md: reference shared DesignDefault repo
Full changelog: https://github.com/shrippen/Kurrent/blob/1.0/CHANGELOG.md
Kurrent 0.2.0
Catch-up on the 1.0 branch: planner-style task flow, a full settings dialog, notifications, and a faster panel startup.
- Today no longer mixes overdue into “due today”; Catch-up (“Still open”) and an Overdue sidebar view
- Reschedule from the task row (15m / 1h / 4h / tomorrow / next week)
- Morning / afternoon / evening grouping and a list section field in the editor
- Join button for http(s) links; quick add (
tomorrow 18:00 !high #tag) - Completing a recurring task advances the series without dropping the RRULE
- Sort mode, catch-up, day-part hours, and Join persist in shared settings
- Settings shell: Appearance, Sidebar, Tasks, Editor, Panel, Notifications, Projects, and Labels pages; per-page reset; density and sidebar width tokens
- Settings forms use ConfigFormShell (centered, width-capped). SimpleKCM scrolls; no nested Flickable
- Shortcuts live in Plasma System Settings (no dedicated KCM); sync is manual (interval setting removed)
- Sidebar section/view order in settings via drag-and-drop
- Empty states for Akonadi offline, no calendars, and empty views
- One-step undo (complete / reschedule / move / delete), collapse subtask trees
- Panel badge (open / today / overdue) and flyout size; default due date; confirm row delete
- VALARM reminders in the editor, Plasma notifications with snooze, optional quiet hours
- Rename labels; complete parent can complete children; per-project and per-label color overrides
- Keyboard in the widget plus global Meta+Shift+K / Meta+Shift+N (D-Bus
org.github.shrippen.Kurrent) - Relative due chips
- Panel startup: non-blocking Akonadi start (
ServerManager::start(), neverControl::start()); cache can fill the badge/list immediately - Compact panel icon first;
FullView.qml(sidebar, list, editor) loads on first expand (preloadFullRepresentation: false)
Kurrent 0.1.0
First public release of Kurrent, a KDE Plasma 6 task manager plasmoid.
- Inbox, Today, Tomorrow, Scheduled, Anytime, Recurring, Unlabeled, and Completed views
- Projects, labels, and priorities from Akonadi / Nextcloud CalDAV
- Create, edit, complete, delete, subtasks, and drag-and-drop
- Shared settings between desktop widget and panel flyout
- Optional Plasma wallpaper blur
Install: ./install.sh, then add Kurrent to your panel or desktop.