Skip to content

Releases: shrippen/Kurrent

v0.4.0

Choose a tag to compare

@shrippen shrippen released this 02 Sep 22:56

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: projectId parsed 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 testMergeConflict for 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.qml generated 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 revision
  • persistTodo: refetch before modify when revision is 0
  • configViews.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; matchesViewFilter delegates 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-bucket
  • smartViewFilterAppliesInComputeCounts: 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

Choose a tag to compare

@shrippen shrippen released this 29 Aug 16:18

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.py auto-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 bash

Or pin this release:

curl -fsSL https://github.com/shrippen/Kurrent/releases/download/v0.3.1/install-linux.sh | bash -s -- --tag v0.3.1

Kurrent 0.3

Choose a tag to compare

@shrippen shrippen released this 29 Aug 16:12

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 / shared kurrentrc; default priority,due,title when unset
  • Sort keys: due latest-first, start date, reminder/recurring first|last, progress % low|high
  • Overdue view: chronometer icon (replaces missing appointment-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 (ParentPicker search 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.qml loads async once the plugin is ready)
  • Boot loader: Breeze gear icon (boot-gear.svg, from process-working-symbolic) while plugin / FullView load
  • Backend version mismatch banner: widget compares metadata.json to TaskController.pluginVersion; warning in FullView and General KCM with reinstall one-liner (KDE Store widget + outdated ~/.local plugin)
  • 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 PluginBackend asynchronously so the compact icon is not blocked on libkurrentplugin.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; use DateTime.isValidDate() (getTime() / format fallback) instead of task.dueDate.isValid === true
  • install-linux.sh Debian/Ubuntu build deps (#1): libkirigami-dev (not libkf6kirigami-dev)
  • Panel KCM category icon: plasmashell (Breeze has no generic panel icon)
  • 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 custom KineticScrollHandler
  • Sort popup scroll: same Kirigami.WheelHandler + OvershootBounds / returnToBounds as 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 + returnToBounds after wheel/flick)
  • Collapse: omit descendants from flat list so scrollbar matches visible rows; reserved collapse-arrow column + indent hierarchy
  • Task list: reuseItems, larger cacheBuffer; hover suppressed via wheelScrolling
  • 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 spaceSmall margin
  • Sidebar section heights: proportional when short; sectionsAllocated instead of -1 sentinel
  • Sidebar task counts stable when collapsing (default); optional “Exclude collapsed subtasks from counts”

Architecture

  • AbstractTaskStore boundary for task CRUD: AkonadiTaskStore (live) and MemoryTaskStore (unit tests, no Akonadi server). Optimistic UI + rollback stay in TaskController (cache, inflight, revertTodo)
  • Unit test kurrent-taskstore covers 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::dataDiffRoles always uses braces
  • QML spacing uses Design.space* / pads instead of raw Kirigami.Units.*Spacing

Installer

  • install-linux.sh: chown ~/.local before copy; drop kpackagetool6 for plasmoid install/update; legacy cleanup via rm -rf; verify file ownership after install; warn when not run via sudo; clearer fallback messages for incompatible prebuilt plugins
  • install-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; Fedora akonadi-server/akonadi-calendar without silent failure; lib64/qml in QML env (Fedora/RHEL source installs)
  • install.sh: same plasmoid install path as the release installer (cmake install + verify, no kpackagetool6); lib64/qml in QML env helper

Kurrent 0.2.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 09:18

Full Changelog: v0.2.1...v0.2.2

Kurrent 0.2.1

Choose a tag to compare

@shrippen shrippen released this 19 Aug 12:32

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

Choose a tag to compare

@shrippen shrippen released this 18 Aug 14:48

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(), never Control::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

Choose a tag to compare

@shrippen shrippen released this 17 Aug 11:12

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.