<?xml version="1.0" encoding="UTF-8" ?>
<component type="desktop-application">
  <id>com.trougnouf.Cfait</id>
  <name>Cfait</name>
  <summary>Powerful, fast and elegant CalDAV task manager</summary>
  <metadata_license>CC0-1.0</metadata_license>
  <project_license>GPL-3.0-only</project_license>
  <developer id="com.trougnouf">
    <name>Benoit Brummer (Trougnouf)</name>
  </developer>

  <description>
    <p>
      Cfait is designed for speed and stability using Rust. It puts you in control of your data with a local-first approach that syncs seamlessly across your devices via CalDAV.
    </p>
    <p>Key Features:</p>
    <ul>
      <li
            >Syncs Everywhere: Compatible with Nextcloud, iCloud, Radicale, and other standard CalDAV servers.</li>
      <li
            >Offline First: Optimistic UI updates mean you never wait for a server response.</li>
      <li
            >Smart Input: Typing "Buy cat food !1 @tomorrow" automatically sets priority and due date.</li>
      <li>Productivity: GTD Workflow, Sub-tasks, Dependencies, and Tags.</li>
    </ul>
  </description>

  <launchable type="desktop-id">com.trougnouf.Cfait.desktop</launchable>

  <categories>
    <category>Office</category>
    <category>Utility</category>
  </categories>

  <keywords>
    <keyword>todo</keyword>
    <keyword>caldav</keyword>
    <keyword>task</keyword>
    <keyword>gtd</keyword>
    <keyword>productivity</keyword>
    <keyword>organizer</keyword>
    <keyword>planner</keyword>
    <keyword>checklist</keyword>
  </keywords>

  <screenshots>
    <screenshot type="default">
      <image
            >https://commons.wikimedia.org/wiki/Special:Redirect/file/Cfait_task_manager_v0.5.2_screenshot_(GUI).png</image>
      <caption xml:lang="en">The Graphical User Interface</caption>
    </screenshot>
    <screenshot>
      <image
            >https://commons.wikimedia.org/wiki/Special:Redirect/file/Cfait_task_manager_v0.5.0_screenshot_(TUI).png</image>
      <caption xml:lang="en">The Terminal User Interface</caption>
    </screenshot>
  </screenshots>

  <branding>
    <color type="primary" scheme_preference="light">#fff0eb</color>
    <color type="primary" scheme_preference="dark">#211e1e</color>
  </branding>

  <url type="homepage">https://trougnouf.com</url>
  <url type="bugtracker">https://codeberg.org/trougnouf/cfait/issues</url>
  <url type="vcs-browser">https://codeberg.org/trougnouf/cfait</url>
  <url type="donation">https://liberapay.com/trougnouf</url>

  <content_rating type="oars-1.1" />

  <recommends>
    <control>keyboard</control>
    <control>pointing</control>
    <control>touch</control>
  </recommends>
  <requires>
    <display_length compare="ge">768</display_length>
  </requires>

  <releases>
    <release version="1.0.3" date="2026-05-30">
      <description>
        <p>Features:</p>
        <ul>
          <li>"complete and shift schedule" on recurrent tasks with shift+enter keyboard shortcut (TUI, GUI), add @after syntax as alternative to @every where CompleteAndShift is the default</li>
          <li>Complete and shift schedule: test and Android feature parity</li>
          <li>(gui) Add missing keyboard navigation when moving tasks</li>
          <li>(settings) Allow password hide/show</li>
          <li>(gui) Make context menu (right click / more actions) scrollable</li>
          <li>(sorting) Sort standard tasks by priority (toggle with p)</li>
          <li>(gui) Persist ui_scale between sessions</li>
          <li>(gui) Improve selection behavior after task completion</li>
          <li>Highlight relative recurrence and hide redundant shift action</li>
          <li>(tui) Support external editors (EDITOR/VISUAL env variable or description_editor setting, https://github.com/trougnouf/cfait/issues/36 )</li>
          <li>(android) Expose sorting and priority settings in UI</li>
          <li>Implement collapsible tag/location trees in TUI/GUI with alias hiding and persistent state ( https://github.com/trougnouf/cfait/issues/37 )</li>
          <li>(android) Implement collapsible tag/location trees in Android UI ( https://github.com/trougnouf/cfait/issues/37 )</li>
          <li>Implement settings and alias synchronization over CalDAV ( https://codeberg.org/trougnouf/cfait/issues/21 )</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>(i18n) Improve Czech translation wording for sorting/priority terms</li>
          <li>(store) Stop_task resets time tracking instead of accumulating</li>
          <li>(sync) Deduplicate cross-collection uids and add android parent navigation</li>
          <li>(ci) Build Android APKs originating from PRs with dummy signing key ( https://codeberg.org/trougnouf/cfait/pulls/68 )</li>
          <li>(ci) Move dummy keystore fallback logic from release.yml to test_roll.yml</li>
          <li>(auth) Ensure android returns config with credentials</li>
          <li>(gui) Remove "All actions pinned" from right click menu</li>
          <li>(gui) Move sort-by-priority to settings, change shortcut to Ctrl+P</li>
          <li>(android) Move sort_standard_by_priority to end of Preferences section</li>
          <li>(android) Add missing sortStandardByPriority param to saveConfig call</li>
          <li>(gui) Keep selection reasonable when task marked complete</li>
          <li>(gui) Show priority tag even without other metadata</li>
          <li>Prevent offline description data loss and add terminal-safe save shortcuts</li>
          <li>Prevent offline description data loss and add terminal-safe save shortcuts</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Translation `location` words: `loc:` versus `geo:`</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Merge pull request 'Fix Czech translation' (#65) from MarrekNozka/cfait:master into master</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Add cfait-bin AUR package to docs</li>
          <li>Merge pull request #34 from brandon-doornbos/cfait-bin</li>
          <li>Merge branch 'master' of https://codeberg.org/trougnouf/cfait</li>
          <li>Merge pull request 'Fix Czech translation' (#66) from MarrekNozka/cfait:master into master</li>
          <li>Merge branch 'master' of https://codeberg.org/trougnouf/cfait</li>
          <li>Merge pull request 'fix(store): stop_task resets time tracking instead of accumulating' (#67) from MarrekNozka/cfait:fix/stop-task-reset into master</li>
          <li>Remove tui feature</li>
          <li>Merge branch 'master' into show-password-toggle</li>
          <li>Merge branch 'master' into show-password-toggle</li>
          <li>Merge pull request 'feat(settings): Allow password hide/show' (#69) from eltower/cfait:show-password-toggle into master</li>
          <li>Merge branch 'master' into android-auth</li>
          <li>Merge branch 'master' into android-auth</li>
          <li>Merge pull request 'fix(auth): Ensure android returns config with credentials' (#68) from eltower/cfait:android-auth into master</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge branch 'master' of https://codeberg.org/trougnouf/cfait</li>
          <li>Merge pull request 'new feature: switch sorting by priority' (#70) from MarrekNozka/cfait:feature/switch-sorting-by-priority-or-date into master</li>
          <li>Unify for also toggle task case</li>
          <li>Merge pull request 'fix(gui): show priority tag even without other metadata' (#71) from MarrekNozka/cfait:fix/priority-hidden-without-metadata into master</li>
          <li>Merge pull request 'feat(gui): persist ui_scale between sessions' (#72) from MarrekNozka/cfait:feature/persist-ui-scale into master</li>
          <li>Merge branch 'master' into adjust-gui-selection-after-task-complete</li>
          <li>Merge pull request 'fix(gui): Keep selection reasonable when task marked complete' (#73) from eltower/cfait:adjust-gui-selection-after-task-complete into master</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Merge pull request 'feat(android): expose sorting and priority settings in UI' (#75) from MarrekNozka/cfait:feature/android-sorting-priority-settings into master</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
        </ul>
        <p>Refactor:</p>
        <ul>
          <li>(model) Introduce CompareOptions struct for compare_with_cutoff</li>
          <li>(gui) Centralized actions visibility logic</li>
          <li>Disallow(clippy::too_many_arguments)</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>(readme) Update sort toggle shortcut P → Ctrl+P, remove toolbar reference</li>
        </ul>
        <p>Performance:</p>
        <ul>
          <li>(gui) Defer tooltips, remove CursorMoved, use dynamic context menu placement</li>
          <li>(gui) Defer tooltips, remove CursorMoved, use dynamic context menu placement (part 2)</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>Use the same tree icons for tags and locations as in the tasks list</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>(auth) Regenerate kotlin bindings ( https://codeberg.org/trougnouf/cfait/pulls/68 )</li>
          <li>(android) Regenerate cfait.kt bindings without ktlint formatting</li>
          <li>Cleanup unused SORT_PRIORITY icon and apply ktlint</li>
          <li>Enforce code formatting and add pre-commit hooks ( https://codeberg.org/trougnouf/cfait/issues/74 )</li>
          <li>Workspace-wide cargo fmt sweep ( https://codeberg.org/trougnouf/cfait/issues/74 )</li>
          <li>Register codebase formatting sweep in .git-blame-ignore-revs</li>
          <li>Update Rust toolchain to 1.96.0</li>
          <li>Cargo fmt --all</li>
          <li>Fix Android compilation error</li>
          <li>Cargo fmt --all</li>
        </ul>
      </description>
    </release>
    <release version="1.0.2" date="2026-05-22">
      <description>
        <p>Features:</p>
        <ul>
          <li>Add target path to recovered tasks' description ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>Optimize companion event sync using CalDAV REPORT queries and task UID metadata</li>
          <li>Log level advanced setting ( https://github.com/trougnouf/cfait/issues/31 )</li>
          <li>Add ability to create remote CalDAV collections ( https://codeberg.org/trougnouf/cfait/issues/62 )</li>
          <li>Remember and synchronize task trees collapsed status</li>
          <li>(android) Merge calendar visibility toggles into collection editors ( https://codeberg.org/trougnouf/cfait/issues/62 )</li>
          <li>(android) Log Kotlin-related crashes to cache/android_crash.txt ( https://codeberg.org/trougnouf/cfait/issues/63 )</li>
          <li>Set sub-tasks' implicit start datetime based on parent's (for e.g. is:ready filtering and random task selection)</li>
          <li>Add ## and @@@ syntax to add tags and locations that remain in the title</li>
          <li>(gui) Remember cursor position after deleting a task</li>
          <li>(i18n) Add complete Czech translation</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>Fix cyclic parent_uid loops and prevent recursive UI event flood</li>
          <li>Refine CalDAV path overlap detection to ignore root-only slashes and support disjoint paths ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>(sync) Use status codes for robust error handling and allow recovery export ( https://github.com/trougnouf/cfait/issues/31 )</li>
          <li>(i18n) Fix mismatching substitution</li>
          <li>(android) Preserve stored password only for unchanged username</li>
          <li>(tui) Store password to keyring during onboarding</li>
          <li>(gui,mobile) Implement optimistic updates for remote calendar actions to prevent UI jitter ( https://codeberg.org/trougnouf/cfait/issues/62 )</li>
          <li>(mobile) Prevent DST gap panics in implicit alarm evaluators</li>
          <li>Hide collapsed sub-tasks which were picked up by the fallback routine for orphaned tasks (reported by @Shadowminx )</li>
          <li>(i18n) Improve Czech translation terminology and add missing keys</li>
          <li>(android) Fix language switch on older (&lt;13) Android versions ( https://github.com/trougnouf/cfait/issues/32 )</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (French)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Update translation files</li>
          <li>Update translation files</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Translated using Weblate (French)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge branch 'master' into wip-fix-android-credential-not-saved</li>
          <li>Merge pull request 'Fix Android credential persistence when password field is left blank' (#59) from zerodegress/cfait:wip-fix-android-credential-not-saved into master</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Update translation files</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Merge pull request 'Czech translation' (#64) from MarrekNozka/cfait:master into master</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Update French translations</li>
          <li>(i18n) Localize hardcoded strings, prune unused keys, and unify TUI/CLI help</li>
          <li>(i18n) Allow migration_complete_moved to be singular/pluralized (per gallegonovato)</li>
          <li>(i18n) Allow migration_complete_moved to be singular/pluralized (update existing translations)</li>
          <li>(i18n) Support singular/plural forms for calendars and sessions (reported by gallegonovato)</li>
          <li>(i18n) Add zero plural form and use tasks_count i18n key (suggested by @gallegonovato)</li>
          <li>(i18n) Remove unused color strings</li>
          <li>(i18n) French translations</li>
          <li>(i18n) Remove unnecessary formatting marks from translatable strings</li>
          <li>(i18n) Fix pluralization usage and remove duplicate help_search_filter_by_duration string</li>
          <li>(i18n) Replace hardcoded text with i18n strings, fix tasks_count usage</li>
          <li>(i18n) Replace hardcoded text with i18n strings</li>
          <li>(i18n) Remove unused strings</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>Make the Collapse tree button/icon a random shade of green</li>
          <li>Make Windows icons transparent ( https://codeberg.org/trougnouf/cfait/issues/60 )</li>
          <li>(android) Use one line per collection in the settings</li>
          <li>(gui) Improve collapsed tree icon visibility</li>
          <li>(android) Reduce space between collections in the settings</li>
        </ul>
        <p>Testing:</p>
        <ul>
          <li>Build binaries on PR</li>
          <li>Improve test coverage</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>Lint</li>
          <li>Switch locales to 4-spaces</li>
          <li>Fix Android compilation error</li>
        </ul>
      </description>
    </release>
    <release version="1.0.1" date="2026-05-14">
      <description>
        <p>Features:</p>
        <ul>
          <li>(parser) Support start-due time range (e.g. ^@2026-05-06 12:20-16:20)</li>
          <li>(linux) Warn users using the volatile keyutils keystore ( https://github.com/trougnouf/cfait/issues/29 )</li>
          <li>(gui) Unsynced icon tooltip shows unsynced items</li>
          <li>Optimize companion event sync using CalDAV REPORT queries and task UID metadata</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>Decouple keyring access and ensure Linux Secret Service unlocking to fix password loss ( https://github.com/trougnouf/cfait/issues/29 )</li>
          <li>(gui) Restore broken GUI task list items and navigation</li>
          <li>(linux) Handle locked keyrings and prevent redundant config save ( https://github.com/trougnouf/cfait/issues/29 )</li>
          <li>(flatpak-gui) Resolve flatpak hang and prevent mid-session password loss</li>
          <li>(gui) Silence calloop log noise by replacing blocking sleep with tokio sleep</li>
          <li>Decouple disk persistence from network sync to resolve timeouts and 412 ETag conflicts ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>(gui) Use in-memory state for UI refreshes to fix config race condition</li>
          <li>(tui) Restore and localize About/Support help screen</li>
          <li>(android) Fix Android filter flash by using local UI state after task dispatch</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Czech)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Fix stale unsynced state by triggering journal sync after local actions</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
        </ul>
        <p>Refactor:</p>
        <ul>
          <li>Centralize clients logic via AppIntent</li>
          <li>(tui) Preserve optimistic updates by using granular sync events in network actor</li>
          <li>Revert unified UI code (keep AppIntent, SessienState)</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Update cfait-gui bin name</li>
        </ul>
        <p>Performance:</p>
        <ul>
          <li>(ui) Optimize UI responsiveness by precomputing transient visual attributes in the filtering pipeline</li>
          <li>(client) Optimize companion event sync with concurrency and early returns</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>(gui) Restore tight layout</li>
          <li>(gui) Align tags/datetime/etc to the right</li>
          <li>(android) Improve android UI</li>
          <li>(gui) Add "Toggle Sidebar (Ctrl+B)" button and auto-hide/show depending on window size ( https://github.com/trougnouf/cfait/issues/12 , https://codeberg.org/trougnouf/cfait/issues/53 )</li>
          <li>(android) Improve UI</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>(ci) Prevent test_roll.yml jobs on new releases</li>
          <li>Fix Android version parser and bump version up to v1.0.0</li>
          <li>(pkg) Add org.freedesktop.secrets dependency (Arch, *.deb, README, https://github.com/trougnouf/cfait/issues/29 )</li>
          <li>Update libdav dependency (v0.10.4 is out, https://codeberg.org/trougnouf/cfait/issues/57 )</li>
          <li>Mute zbus spam from log and show INFO messages in the terminal</li>
          <li>(gui) Add permanent keyring subtitle in the loading screen, mute zbus log messages and unmute others</li>
          <li>Re-log some iced info messages</li>
          <li>Bump cache/storage versions, fix config save race condition, and remove unsafe unwraps</li>
          <li>Update libdav to v0.10.5 (breaking change) and other rust dependencies</li>
        </ul>
      </description>
    </release>
    <release version="0.5.9" date="2026-05-05">
      <description>
        <p>Features:</p>
        <ul>
          <li>(sorting) If a task depends on another task, the due date(time) of the blocking task is the sooner of its own or that of the task it blocks</li>
          <li>Handle more ISO 8601 date formats (YYYYMMDD and YYYY-MM) as well as YYYY alone ( https://codeberg.org/trougnouf/cfait/issues/38 )</li>
          <li>(parser) Allow decimal degrees with cardinal directions geo-coordinates format (e.g. "geo:50.13120° N, 4.50010° E", default format in OsmAnd~)</li>
          <li>(android) Add "geo:here" syntax to map current geo-coordinates</li>
          <li>Support sub(sub*) tasks creation and descriptions in initial task creation dialog using markdown syntax ( https://github.com/trougnouf/cfait/issues/22 )</li>
          <li>(android) Support sub(sub*) tasks creation and descriptions in initial task creation dialog usin markdown syntax ( https://github.com/trougnouf/cfait/issues/22 )</li>
          <li>Log to file (CLI, GUI, and TUI) and to stderr (CLI and TUI) ( https://codeberg.org/trougnouf/cfait/issues/48 )</li>
          <li>(android) Log to file which is part of the exportable debug data ( https://codeberg.org/trougnouf/cfait/issues/48 )</li>
          <li>Build Flatpak and Windows executables in rolling release</li>
          <li>(android) Add delete task tree, duplicate and promote actions (TUI/GUI parity)</li>
          <li>(android) Add haptic feedback</li>
          <li>Open locations (GPX) action which opens all sub-tasks locations on a map (Android, GUI, TUI)</li>
          <li>Improve create task with details and sub-tasks (Ctrl+e) experience (GUI, TUI)</li>
          <li>(gui) Add Open URL action to the customizable actions and version the settings</li>
          <li>(gui) Clickable jump to parent task</li>
          <li>Add a collapse/expand button for task trees</li>
          <li>Add work mode / is:ready "w" keyboard shortcut and button (feature requested by Geoffrey Frogeye, ﻿T[]M_S∆W, Martin Stut)</li>
          <li>Use OS-native keyring instead of plaintext password ( https://github.com/trougnouf/cfait/issues/9 , https://codeberg.org/trougnouf/cfait/issues/33 )</li>
          <li>Implement 'z' tree fold shortcut in GUI and update help documentation</li>
          <li>Implement robust history (custom) tagging and display completion info for related tasks</li>
          <li>(gui) Add missing keyboard shortcuts (TUI parity)</li>
          <li>(gui) Add keyboard shortcuts and document them on hover, use tab to switch from search/add to task list</li>
          <li>Filter read-only collections and handle 405 errors via task recovery ( https://github.com/trougnouf/cfait/issues/11 )</li>
          <li>Catch unrecoverable errors with error codes only ( https://github.com/trougnouf/cfait/issues/11 )</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>Support geo coordinates in alias and fix uncategorized tasks filtering ( https://codeberg.org/trougnouf/cfait/issues/39 and https://codeberg.org/trougnouf/cfait/issues/40 )</li>
          <li>Fix recurence issues</li>
          <li>Count sub-tags only once ( https://codeberg.org/trougnouf/cfait/issues/41 )</li>
          <li>(android) Detect global locale if system is set to an untranslated regional variation (e.g. fr_FR -&gt; fr, https://codeberg.org/trougnouf/cfait/issues/42 )</li>
          <li>(android) Use strict CalDAV Content-Type and fix coroutine cancellation handling</li>
          <li>(Android) Log sync errors, show journaled tasks in tasks list</li>
          <li>(sync) Route 404/409 errors to local recovery and prevent infinite sync loops ( https://codeberg.org/trougnouf/cfait/issues/43 )</li>
          <li>(client) Robust strip_host logic to fix URL matching collisions (journal_apply_move_removes_from_source_and_adds_to_target test failed on the CI but passed locally)</li>
          <li>(android) Fix geo:here feature (request permission)</li>
          <li>(sync) Enforce RFC 5545 compliance and resolve migration duplication ( https://codeberg.org/trougnouf/cfait/issues/43 )</li>
          <li>(model) Restore RFC 5545 duration compliance rules for ICS serialization</li>
          <li>(ui) Use (UID, Collection) identity to resolve disappearing tags and recovery tasks ( https://codeberg.org/trougnouf/cfait/issues/43 )</li>
          <li>Fix search result context and restore cross-collection parent-child linking</li>
          <li>(gui) Restore theme selection lost in 31fc410fedb80bf994fbd37c3d7d143afdb1bfbb ( https://github.com/trougnouf/cfait/issues/23 )</li>
          <li>Catch and send all network exceptions to the logger ( https://codeberg.org/trougnouf/cfait/issues/48 ), mute iced, winit and wgpu libraries ( https://codeberg.org/trougnouf/cfait/issues/50 ), increase channel size from 10 to 100</li>
          <li>Connection timeouts and sync race conditions via transactional journal processing ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>(gui) Fix flickering help icon</li>
          <li>(tui) Preserve create flow and add remote-only mode</li>
          <li>(tui) Create with alias</li>
          <li>(gui) Fix flickering help icon</li>
          <li>(gui) Prevent timeout from unseating the active application</li>
          <li>Ensure fs sync on atomic writes and DRY on datetime and duration utilities</li>
          <li>Decouple UI mutations from background sync via transactional diffing and fix tree soft-delete ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>(gui) Clear remote metadata on remote-to-local moves and optimize worker batching</li>
          <li>(gui) Stabilize widget tree reconciliation</li>
          <li>Case-insensitive RELATED-TO parsing and auto-heal mislinked sub-tasks</li>
          <li>(android) Fix GPX file export</li>
          <li>Fallback to create+delete if move failed ( https://codeberg.org/trougnouf/cfait/issues/54 )</li>
          <li>Resolve CalDAV connection timeouts and task state reversion race conditions ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>(keyring) Initialize ndk-context via JNI to resolve Android startup crash</li>
          <li>(android) Properly initialize NDK context via global JNI reference</li>
          <li>(gui) Remote task creation was mapped to update action ( https://github.com/trougnouf/cfait/issues/27 )</li>
          <li>Prevent recurring history snapshots from being misparsed as sub-tasks</li>
          <li>Properly randomize "Support development" icon</li>
          <li>Merge description tags from smart input with editor content instead of overwriting it</li>
          <li>(windows) Correct path to cfait.ico ( https://github.com/trougnouf/cfait/discussions/28 , https://github.com/trougnouf/cfait/issues/24 )</li>
          <li>Detect and reject cyclic parent/sub-tasks dependencies ( https://codeberg.org/trougnouf/cfait/issues/56 )</li>
          <li>Improve CalDAV compatibility, URL encoding, and sync reliability ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>Robust CalDAV path reconstruction for proxies and safe character encoding</li>
          <li>(flatpak) Add keyring support</li>
          <li>Debounce toggling, add startup timeouts, strict error matching ( https://github.com/trougnouf/cfait/issues/25 )</li>
          <li>(flatpak) Fix flatpak keyring using oo7</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Added translation using Weblate (Russian)</li>
          <li>Added translation using Weblate (Russian)</li>
          <li>Added translation using Weblate (Russian)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Italian)</li>
          <li>Translated using Weblate (Dutch)</li>
          <li>Translated using Weblate (Russian)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (French)</li>
          <li>Added translation using Weblate (Czech)</li>
          <li>Added translation using Weblate (Czech)</li>
          <li>Added translation using Weblate (Czech)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Merge branch 'master' into master</li>
          <li>Merge pull request '[FEATURE] add online only mode and some fixes' (#51) from d1diiego/cfait:master into master</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Merge remote-tracking branch 'refs/remotes/origin/master'</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (French)</li>
          <li>Added translation using Weblate (French)</li>
          <li>Translated using Weblate (French) - restore fr description by mrjoops</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Spanish)</li>
        </ul>
        <p>Refactor:</p>
        <ul>
          <li>Remove redundant Tokio runtime in GUI to fix UI thread blocking</li>
          <li>Remove VirtualState from Task model and decouple UI rendering lists</li>
          <li>Better error handling with anyhow</li>
          <li>Better error handling with anyhow (up to GUI boundary)</li>
          <li>(gui) Migrate GUI to debounced background actor to eliminate store cloning, prevent network spam, and ensure safe tree restoration</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Explicitly mention the dependencies, set rfd to use xdg-portal s.t. gtk3 is not required ( https://codeberg.org/trougnouf/cfait/issues/44 )</li>
          <li>(pkg) Add vulkan to requirements</li>
          <li>Clarify dependencies and use PKGBUILD as ground-truth ( https://codeberg.org/trougnouf/cfait/issues/44 and https://codeberg.org/trougnouf/cfait/issues/46 )</li>
          <li>Clarify dependencies ( https://codeberg.org/trougnouf/cfait/issues/44 and https://codeberg.org/trougnouf/cfait/issues/46 )</li>
          <li>Rename Advanced settings to More settings ( https://codeberg.org/trougnouf/cfait/issues/52 )</li>
          <li>Begin refactoring the built-in help</li>
          <li>Refactor built-in help</li>
          <li>Improve built-in help</li>
          <li>Make hardcoded strings translatable</li>
          <li>Update French translations</li>
          <li>(i18n) Fix missing and hardcoded strings</li>
          <li>(android) Remove keyboard shortcuts from Android built-in help</li>
        </ul>
        <p>Performance:</p>
        <ul>
          <li>MULTIGET parallel chunking optimization ( https://codeberg.org/trougnouf/cfait/issues/49 )</li>
          <li>Prevent stack overflow in the alias validation</li>
          <li>(gui) Debounce the search bar, make config saving asynchronous, incremental store indexing</li>
          <li>(gui) Keyed columns</li>
          <li>(gui) Fix performance and D-Bus spam by using cached config values</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>Change editor expansion icon (Android, GUI)</li>
          <li>(android) Make the help button more obvious</li>
          <li>(gui) More accurate GUI scroll-to-selected</li>
          <li>(gui) More accurate GUI scroll-to-selected</li>
          <li>Invert random task and work mode button position (Android, GUI)</li>
        </ul>
        <p>Testing:</p>
        <ul>
          <li>(tui) Add test_tui_creating_task_and_alias_simultaneously</li>
          <li>Adapt sync_create_conflicts to MOVE create+delete fallback</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>Bump up chache and local store version (required with 4adb37573ee3094a9bf1b772689d3e410105a6e9 )</li>
          <li>Remove parent_map from search</li>
          <li>Update rust toolchain to 1.95.0</li>
          <li>Fix CI indentation</li>
          <li>Update license to GPL-3.0-or-later and specify it in all source files ( https://codeberg.org/trougnouf/cfait/issues/47 )</li>
          <li>Change CI permissions for flatpak build</li>
          <li>Rename gui to cfait-gui ( https://codeberg.org/trougnouf/cfait/issues/45 )</li>
          <li>Fix CI flatpak build</li>
          <li>Fix CI flatpak build</li>
          <li>Fix CI flatpak build</li>
          <li>Lint</li>
          <li>Remove PULL.md from repository</li>
          <li>Fix CI rolling release upload</li>
          <li>Fix CI per-commit upload</li>
          <li>Ensure recurrence engine handles TZID parameter</li>
          <li>Make storage more robust to manual local store changes</li>
          <li>(android) Fix missing strings and icon compilation error</li>
          <li>Lint</li>
          <li>Fix failing test</li>
          <li>Fix Android compilation issue, move hardcoded strings to en.json</li>
          <li>Remove duplicate strings</li>
          <li>Remove unused translated strings (previously removed duplicates)</li>
          <li>Fix failed test</li>
          <li>Update rust-i18n and iced_aw crates</li>
          <li>Lint</li>
        </ul>
      </description>
    </release>
    <release version="0.5.8" date="2026-04-11">
      <description>
        <p>Bug Fixes:</p>
        <ul>
          <li>(gui) Right click on a task no longer jumps to the top of the task list</li>
        </ul>
      </description>
    </release>
    <release version="0.5.7" date="2026-04-09">
      <description>
        <p>See CHANGELOG.md for details.</p>
      </description>
    </release>
    <release version="0.5.6" date="2026-03-22">
      <description>
        <p>Features:</p>
        <ul>
          <li>(android) Font size scaling ( https://codeberg.org/trougnouf/cfait/issues/27 and https://codeberg.org/trougnouf/cfait/issues/35 )</li>
          <li>(android) Add permanent timer/notification for ongoing tasks</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>(android) Fix Android crash when deleting a session</li>
          <li>(android) Fix Manage collections settings misplacement</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>(android) Move font size setting below manage collections</li>
        </ul>
      </description>
    </release>
    <release version="0.5.5" date="2026-03-17">
      <description>
        <p>Bug Fixes:</p>
        <ul>
          <li>Handle local v4-&gt;v5 migration and test version handling ( https://github.com/trougnouf/cfait/issues/15 )</li>
        </ul>
      </description>
    </release>
    <release version="0.5.4" date="2026-03-14">
      <description>
        <p>Features:</p>
        <ul>
          <li>Expose % done in the parser and UI and stop relying on % done for paused tasks ( https://github.com/trougnouf/cfait/issues/14 )</li>
          <li>Remember the task list position when going back from editing a task</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>Fix flatpak compilation issue (AWS_LC_SYS_NO_JITTER_ENTROPY=1)</li>
          <li>(alarm) Fix absolute time alarms (s.t. they are based on due date rather than now) and alarm recurrences ( https://github.com/trougnouf/cfait/issues/14 )</li>
          <li>Ensure % completion does not spam the task list with 0% nor reset time spent</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Translated using Weblate (German)</li>
          <li>Translated using Weblate (Spanish)</li>
          <li>Translated using Weblate (Italian)</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>Fix Android compilation issues, bump local collection and cache version, update documentation</li>
          <li>(Android) Re-run uniffi-bindgen</li>
          <li>Fix unused variables warnings when generating Android bindings</li>
          <li>Fix Android compilation error</li>
        </ul>
      </description>
    </release>
    <release version="0.5.3" date="2026-03-14">
      <description>
        <p>Features:</p>
        <ul>
          <li>Remove export dialog from the Trash and Recovery collections</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>(MacOS) Fix MacOS compilation issue reported by Martin Stut</li>
          <li>(android) Show Trash calendar when it is not empty ( https://github.com/trougnouf/cfait/issues/14 )</li>
          <li>(Android) Compilation issue / missing import</li>
          <li>(pkg) Fix Arch PKGBUILD compilation issue (AWS_LC_SYS_NO_JITTER_ENTROPY=1)</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Update F-Droid and flathub screenshots</li>
          <li>Fix Android doc to track the other clients'</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>Fix rolling release message</li>
          <li>Update Rust toolchain to 1.94.0</li>
        </ul>
      </description>
    </release>
    <release version="0.5.2" date="2026-03-12">
      <description>
        <p>Features:</p>
        <ul>
          <li>Support i18n translations and add French</li>
          <li>(android) Prune stale notifications (from done/canceled/snoozed/modified tasks)</li>
          <li>Replace d with Delete key in TUI and GUI</li>
          <li>(gui) Add network status to refresh icon (feature-parity with Android client)</li>
          <li>(gui) Zoom in and out with ctrl++ ctrl+- (or ctrl+scroll), reset with ctrl+0 ( https://codeberg.org/trougnouf/cfait/issues/9 )</li>
          <li>(alarm) Trim done/canceled notifications and refresh before firing them (GUI and TUI, feature parity with Android)</li>
          <li>(sort) Put ongoing tasks in the ongoing bin even if they are blocked or have not started</li>
          <li>(cli) Implement cli (non-interactive) add, list, search, toggle, start, pause, and delete commands</li>
          <li>Yank copies task smart title and description, TUI description is selectable in edit screen</li>
          <li>Time tracking management (list, add and delete sessions) in the UIs. Fix sessions synchronization and GUI unsynced state</li>
          <li>Time tracking management (list, add and delete sessions) in the UIs. Fix sessions synchronization and GUI unsynced state</li>
          <li>Create a new line (not blocking title/menus/status) for Android search, prepend completed calendar events with 🗹, opening a notification focuses on it, fix edit task/description string mismatch, fix Android compilation error</li>
          <li>(all) show sessions with valid syntax, (android) use the same icons as in the GUI, ability to manually create sessions when none exist, reduce search input height</li>
          <li>(parser) Parse days of the week and parse past time as the next day</li>
          <li>(Android) Use task-bound hash for notifications s.t. newer alarms overwrite older ones</li>
          <li>Clickable collection name (header) toggles show all collections (Android and GUI, https://codeberg.org/trougnouf/cfait/issues/24 )</li>
          <li>Add a lock toggle for yanked tasks and create sub-tasks (GUI and Android clients, https://github.com/trougnouf/cfait/issues/13 )</li>
          <li>(android) Swipe to switch collection ( https://codeberg.org/trougnouf/cfait/issues/3 )</li>
          <li>(android) Improve swipe collections navigation</li>
          <li>(android) Improve swipe collections navigation</li>
          <li>(android) Improve swipe collections navigation (3)</li>
          <li>(android) Improve swipe collections navigation (4)</li>
          <li>(android) Improve swipe collections navigation (5)</li>
          <li>(android) Improve swipe collections navigation (6: jump to "Custom" list when selecting multiple collections and speed-up swiping/switching collection tab)</li>
          <li>(android) Improve swipe collections navigation (7: eliminate visual glitch in swiping animation)</li>
          <li>(android) Improve swipe collections navigation (10)</li>
          <li>(android) Improve and debug swipe collections navigation (11)</li>
          <li>(android) Improve swipe collections navigation (12: fix auto-hide toggle and unresponsive custom tab, fix post-swipe vertical scroll delay)</li>
          <li>(android) Improve swipe collections navigation (13: switch ordering, fix unresponsive area)</li>
          <li>(android) Change search icon color when search is active in the background and auto-focus on search bar when it pops out</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>Fix Android build</li>
          <li>(gui) Fix loss of input focus after a refresh</li>
          <li>(help) Fix some mismatching strings</li>
          <li>(strings) Fix pluralization</li>
          <li>(android) Fix language selection overlap and application</li>
          <li>(local) Process local tasks directly without going through the journal, fixes https://codeberg.org/trougnouf/cfait/issues/32</li>
          <li>(android) Support BCP-47 locales</li>
          <li>(locale) Fix mismatched strings</li>
          <li>Fix some timezone edge cases</li>
          <li>(ui) Ensure that local Trash and Recovery collections are shown on the bottom and only when not empty</li>
          <li>Fix github issue templates</li>
          <li>(android) Restore search field s.t. bottom of text is not cut-off</li>
          <li>(gui) Fix an issue where another collection than the current active one(s) may be temporarily shown during synchronization</li>
          <li>Fix calendar events' newline character</li>
          <li>(Android) Fix error handling on addSession</li>
          <li>(sorting) Prevent ghost alarms left by other clients from pinning future tasks to the top of the list</li>
          <li>(android) Export local tasks dialog was shown when switching from Local to All/Custom</li>
          <li>(android) Improve swipe collections navigation (14: restore interleaved sorting)</li>
          <li>(android) Improve swipe collections navigation (16: fix half-swipes and panic back swipes after random)</li>
          <li>(android) Improve swipe collections navigation (17: ensure checkboxes are still easily togglable, restore sorting (local last), unrelated/style: restore search icon color during search)</li>
          <li>(android) Improve swipe collections navigation (17: create and jump to custom tab by selecting new write/viewable collection while focused on a different collection)</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (French)</li>
          <li>Added translation using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (English)</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (French)</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Translated using Weblate (Chinese (Simplified Han script))</li>
          <li>Added translation using Weblate (French)</li>
          <li>Translated using Weblate (French)</li>
        </ul>
        <p>Refactor:</p>
        <ul>
          <li>Fix sync issue w/ rapidly changing states and consolidate sync logic across clients</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Document boolean search</li>
          <li>Update Android screenshot to v0.5.1</li>
          <li>Fix CLI help menu</li>
          <li>Remove unused strings and add missing translations</li>
          <li>Fix CLI help alignment</li>
          <li>Replace title case with sentence case</li>
          <li>Update translations</li>
          <li>Pluralize translations</li>
          <li>Simplify translations</li>
          <li>Improve fr translation</li>
          <li>Add link to translation page in settings, fix Android compilation and add missing strings</li>
          <li>Add link to translation page in settings, fix Android compilation and add missing strings</li>
          <li>Add https://translate.codeberg.org/projects/cfait/ to README.md</li>
          <li>Remove unused strings</li>
          <li>Remove syntax strings which should not be translated from locales</li>
          <li>Add de, es, it translations and complete fr</li>
          <li>Localize short_description.txt (de, es, it)</li>
          <li>Update GUI and Android screenshots to v0.5.2</li>
        </ul>
        <p>Performance:</p>
        <ul>
          <li>(android) Improve swipe collections navigation (15: improve switching performance)</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>(android) Show collections list in the bottom by default, reduce spacing between collections, restore collection+++ behavior for Custom and replace All header</li>
          <li>(android) Add settings+help combined icon (superposition of GNOME icons with dimmer red)</li>
        </ul>
        <p>Testing:</p>
        <ul>
          <li>Fix cargo check without --all-features (reported by Geoffrey Frogeye)</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>Cleanup duplicate strings</li>
          <li>Fix tests</li>
          <li>Fix Android compilation issues</li>
          <li>Update test</li>
          <li>(android) Reduce example task s.t. it fits in one line</li>
        </ul>
      </description>
    </release>
    <release version="0.5.1" date="2026-02-25">
      <description>
        <p>Features:</p>
        <ul>
          <li>Add --root flag (TUI, GUI)</li>
          <li>(client) Implement automatic CalDAV root discovery and URL correction</li>
          <li>(gui) Keep focus in input bar after entering a task</li>
          <li>Add done/cancel actions to alarm (suggested by busterkeaton) and implement auto-refresh</li>
          <li>(ui) Add done/completed tasks expansion arrow (and advanced settings to control # of tasks shown)</li>
          <li>Android rolling release (build a new APK on every commit)</li>
          <li>Pre-fill sub-tasks tags and location with that of their parent</li>
          <li>Implement time tracking (between start and done) and `spent:` syntax (suggested by savion)</li>
          <li>Implement recursive subtask reset ( https://github.com/trougnouf/cfait/discussions/5#discussioncomment-15734983 ) and unify task completion logic</li>
          <li>Add boolean search with |or, -not and parentheses (and implied and) ( https://github.com/trougnouf/cfait/issues/4 )</li>
          <li>Show blocking task (in addition to blocked-by), link both ways</li>
          <li>Highlight search and sidebar filters red when they result in an empty task list</li>
          <li>(android) Replace {snooze (preset), snooze..., done} with {snooze..., start, done} and show time spent after start</li>
          <li>Add work session recording w/ matching calendar events, show completed datetime in the task list and expose COMPLETED date tracking with done: property in the smart syntax</li>
          <li>Use distinct completed/canceled icons and full datetime for done: tasks (syntax and UI)</li>
          <li>Add Trash calendar (unrelated: fix calendar event creation datetime to better match completion time)</li>
          <li>(gui) Keyboard shortcuts parity with TUI</li>
          <li>(store) One-step increase/decrease from default priority</li>
          <li>(android) Second BackHandler to exit search UI, clear yanked task, clear search text, and clear tag/location filters before exiting the app</li>
          <li>Expose blocks:link_to_other_task in GUI and Android task list</li>
          <li>Reduce tags&amp;locations list and counts based on search terms</li>
          <li>Handle multi-task start/pause/stop and unify alarm snooze/dismiss; add Task.handle_* helpers and mobile boxed mutator; improve time/session tracking, ICS duration &amp; recurrence handling, and settings UI typing/layout</li>
          <li>Reduce duplicate alarms</li>
          <li>Make sub-tasks of blocked tasks implicitly blocked and sort entire group to a lower bin</li>
          <li>Improve calendar events creation length: all-day same-day -&gt; single all-day event, all-day different days -&gt; start and due event, specific time (&lt;24h) -&gt; span length of event, specific time (&gt;24h) -&gt; two separate 1h events</li>
          <li>Further calendar events improvements (and fix toggle-all button)</li>
          <li>(calendar) Improve calendar events handling: merge 2 consecutive 1-day tasks into 2, avoid copying RRULE of completed recurrent tasks</li>
          <li>Centralize help and document keyboard shortcuts in GUI</li>
          <li>Ensure sessions information is kept across clients, more calendar integration improvements&amp;fixes&amp;tests</li>
          <li>Add background synchronization (Android) and synchronization daemon (desktop) ( https://codeberg.org/trougnouf/cfait/issues/30 )</li>
          <li>Add AND/OR tag selection in Android, (all clients) default to AND and fix OR tags and locations selection s.t. others are not filtered out</li>
          <li>Ensure multiple clients/instances can share the same local collection concurrently</li>
          <li>Parse "@daily 09:00" format (shorter than "@daily @today 09:00")</li>
          <li>(gui) First esc does not clear the search</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>(model) Fix missing and flickering tags introduced in refactor</li>
          <li>(tui) Suppress alarm in completed/canceled tasks</li>
          <li>(recurrence) Centralize task recycling logic in model and fix various recurrence (incl. cancellation, until, smart-syntax) bugs</li>
          <li>(recurrence) Use local date for all-day search floor to prevent skipping occurrences ( https://github.com/trougnouf/cfait/discussions/5#discussioncomment-15652213 )</li>
          <li>(android) Explicitly follow redirects (fix some Android connection issues, reported by yknip)</li>
          <li>(android) Fix Android 13 timezone issue reported by busterkeaton</li>
          <li>(gui) Retain scroll position when yanking a task</li>
          <li>(sync) Handle fatal 400/403/415 errors and duplicate CREATEs in journal sync, unblocking stuck queues</li>
          <li>(sync) Reconstruct missing HREF in Update actions to prevent PUT / 403 errors</li>
          <li>(ci) Fix Android rolling release</li>
          <li>(android) Resolve infinite loading in TaskDetailScreen by using direct task lookup</li>
          <li>(android) Restore custom redirect logic but more secure, https://codeberg.org/trougnouf/cfait/issues/28</li>
          <li>(gui) Ensure tasks from all visible calendars are shown in the task list</li>
          <li>(windows) Force server-side decorations on Windows 10 (fixes cursor shifting issue reported by busterkeaton) and add --force-csd launch option</li>
          <li>(gui) Hide tasks from disabled calendars (reported by busterkeaton)</li>
          <li>(android) Color past due-dates red for all-day tasks</li>
          <li>(sorting) Fix priority inheritence in paused sub-tasks</li>
          <li>(android) Fix android client initialization</li>
          <li>(android) Restore settings panel scroll</li>
          <li>(pkg) Fix Arch cfait-git PKGBUILD's pkgver</li>
          <li>Fix deletion from recovery calendar and hide recovery and trash local calendars when empty</li>
          <li>(sort) Propagate sort value from sub-tasks to parents</li>
          <li>Show timer in task list when there is no provided time estimation (GUI/TUI)</li>
        </ul>
        <p>Other:</p>
        <ul>
          <li>Implement UID-based upsert for imports and auto-repair duplicates on load ( https://github.com/trougnouf/cfait/issues/8 )</li>
          <li>(android) Handle coroutine cancellation gracefully</li>
          <li>Replace calendar with collection wording in CLI</li>
        </ul>
        <p>Refactor:</p>
        <ul>
          <li>Centralize view logic (per-client shadowing logic -&gt; Task::resolve_display_properties)</li>
          <li>Optimize TaskStore perf (O(1) lookups) and centralize visibility logic</li>
          <li>Decompose Task god struct</li>
          <li>Modularize sync logic</li>
          <li>Transition from global AppPaths to AppContext</li>
          <li>Transition from global AppPaths to AppContext (everywhere)</li>
          <li>Switch from custom redirect.rs to tower_http::follow_redirect</li>
          <li>Centralize task logic into a new shared controller</li>
          <li>Refactor client sync logic, consolidate CLI help</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Self-document config file</li>
          <li>Switch from title case to sentence case and replace the term "calendar" with "collection"</li>
        </ul>
        <p>Performance:</p>
        <ul>
          <li>Optimize event deletion speed</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>Make overdue date(time) red in task list (suggested by Kursti)</li>
          <li>Syntax highlighting search queries and +cal/-cal ( https://codeberg.org/trougnouf/cfait/issues/24 )</li>
          <li>(android) Contrasting tag colors ( https://codeberg.org/trougnouf/cfait/issues/27 )</li>
          <li>(GUI, TUI) Dim completed &amp; canceled tasks, add strikethrough_completed advanced config (suggested by busterkeaton)</li>
          <li>(windows) Embed application icon (reported by busterkeaton)</li>
        </ul>
        <p>Testing:</p>
        <ul>
          <li>Android rolling release is built only on successful tets</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>(release) Update flathub screenshots</li>
          <li>(release) Bump version up due to accidental previously yanked v0.5.0</li>
        </ul>
      </description>
    </release>
    <release version="0.4.9" date="2026-01-28">
      <description>
        <p>Features:</p>
        <ul>
          <li
                    >(store) Group tags (and sort them) in a case-insensitive way in the tags list (requested by Christian Meixner)</li>
          <li
                    >Add a (weighted) random task selector ( https://codeberg.org/trougnouf/cfait/issues/17 )</li>
          <li>(randomizer) Only pick from is:ready tasks</li>
          <li
                    >(sorting) Sort done/canceled tasks by most recently done/canceled first</li>
          <li
                    >(core) Send user agent to CalDAV server (suggested by Geoffrey Frogeye)</li>
          <li>(android) Add export all data debug option</li>
          <li>(core) Detect and reject non-VTODO collections</li>
          <li
                    >(core) Move tasks rejected by the CalDAV server to a local recovery calendar</li>
          <li
                    >(android) Remember tags and locations when coming back from a task's details</li>
          <li
                    >(recurrence) Switch from respawning to recycling + regeneration (compatibility with other clients, https://github.com/trougnouf/cfait/discussions/5 )</li>
          <li>Make yanked task clippy/sticky (GUI, TUI)</li>
          <li
                    >(gui) Escape exits the input field then clears the yanked task then the search filter then the tags/locations ( https://codeberg.org/trougnouf/cfait/issues/9 )</li>
          <li
                    >Condense start-due datetime in task list when a task has the same date but different times</li>
          <li>Link done recurrence snapshots to their parent</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li
                    >(rfc5545) Clamp priority to 9 ( https://codeberg.org/trougnouf/cfait/issues/22 )</li>
          <li
                    >(android) Show local timezone (not UTC) in tasks list ( https://codeberg.org/trougnouf/cfait/issues/23 )</li>
          <li
                    >(android) Add imePadding s.t. keyboard does not hide bottom of settings screen ( https://codeberg.org/trougnouf/cfait/issues/23 )</li>
          <li
                    >(recurrence) Preserve both start and due date(time) in recurrence</li>
          <li
                    >(migration) Ensure that tasks are present on the server before deleting them from the local store</li>
          <li
                    >(core) Propagate newly created href to journal and guard empty DELETE</li>
          <li
                    >(android) Ensure task migration message does not repeatedly come up</li>
          <li
                    >(gui) Fix auto-scroll (focus to current task) in filtered view</li>
          <li>Fix increase/decrease priority action</li>
          <li
                    >(recurrence) Remove COMPLETED timestamp on recurring task recycling ( https://github.com/trougnouf/cfait/discussions/5 )</li>
          <li
                    >(tui) Ensure tags are not cropped; use visual width instead of char count ( https://codeberg.org/trougnouf/cfait/issues/26 )</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Add disroot as a CalDAV provider</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li
                    >(android) Tighter task list layout ( proposed by busterkeaton )</li>
          <li>(android) Fix spacing of loading/spinning icon</li>
        </ul>
      </description>
    </release>
    <release version="0.4.8" date="2026-01-21">
      <description>
        <p>Features:</p>
        <ul>
          <li
                    >(tasks) Implement time estimation ranges (e.g. ~10m-3h) with compatible search logic</li>
          <li
                    >(gui) Initial work on keyboard shortcuts ( https://codeberg.org/trougnouf/cfait/issues/9 )</li>
          <li>(gui) Towards keyboard shortcuts</li>
          <li>(gui) Expandable description field with scroll bar</li>
          <li>(android) Parse new alias definitions in task input bar</li>
          <li
                    >(gui) Double click to edit a task ( https://codeberg.org/trougnouf/cfait/issues/9 )</li>
          <li
                    >(tui) Improved task editing experience with enter for newline, basic markdown highlighting, and markdown viewer in the task details view (with plain-text auto-detection to maintain basic newlines) ( https://codeberg.org/trougnouf/cfait/issues/14 )</li>
          <li
                    >(tui) Support horizontal scrolling in the description editor and multi-byte characters ( https://codeberg.org/trougnouf/cfait/issues/14 )</li>
          <li
                    >(config) Differentiate between corrupted and missing config files ( https://codeberg.org/trougnouf/cfait/issues/13 )</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li
                    >(android) Maintain keyboard after adding task and jump to task instantly instead of with animation</li>
          <li
                    >(recurrence) Preserve task UID on cancellation to prevent duplication</li>
          <li
                    >(tui) Restore onboarding ( https://codeberg.org/trougnouf/cfait/issues/13 )</li>
          <li
                    >(gui) Load iced_aw fonts to render correct icons in color picker (reported by beh bah)</li>
          <li
                    >(android) Disable keyboard autocorrect for login fields and enable url / password mode ( https://codeberg.org/trougnouf/cfait/issues/15 )</li>
          <li
                    >(android) Fix cursor position in new task field and adjust size of task description field when keyboard is out</li>
          <li
                    >(tests) Properly isolate all write tests in a temporary directory (reported by Geoffrey Frogeye)</li>
          <li
                    >(model) Fix stuck recurring tasks by normalizing AllDay/EXDATE calculations to UTC</li>
          <li>(gui) Auto-scroll to task (linked or up/down)</li>
        </ul>
        <p>Performance:</p>
        <ul>
          <li
                    >Pre-calculate and cache is_blocked status and parent attributes (fixes O(N^2) rendering lag)</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li
                    >Use consistant style for start - due date(time) (hourglass_empty - hourglass_full), avoid identical start/due date(time) repetitions</li>
          <li
                    >(gui) Restore calendar icon for due date(time) when it's the only date(time) shown</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li
                    >(android) Bump min SDK to 28 (Android 9) due to uniffi v0.31 update</li>
          <li>Move Cargo.lock update to every release and disable check</li>
        </ul>
      </description>
    </release>
    <release version="0.4.7" date="2026-01-13">
      <description>
        <p>Features:</p>
        <ul>
          <li>Show start date (if not yet started) in tasks list</li>
          <li
                    >Add ^@ syntax (sets both start and due date(time)). sorting: if parent is canceled/paused/done, use that for the whole group</li>
          <li
                    >Implement multi-select filtering and focus for tags &amp; locations, make the clear icon always visible, improve UI and make it consistent between GUI and Android</li>
          <li
                    >feat: implement multi-select filtering and focus for tags &amp; locations and make the clear icon always visible on Android (feature parity with GUI)</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li
                    >Ignore Release KeyEvents (fixes doubled characters on Windows reported by Christian Meixner</li>
          <li
                    >(adapter) Use X-ESTIMATED-DURATION for all-day tasks to fix RFC 5545 / iCalendar standard compliance</li>
          <li
                    >(android) Hide keyboard after adding task s.t. it is visible when we jump to it ( https://codeberg.org/trougnouf/cfait/issues/7 ), ensure that the jump-to-top icon hiden after 3-seconds and after getting pressed</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>Confirm MacOS compatibility and add CONTRIBUTING.md file</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>(gui) Improve tags list UI</li>
          <li>(gui) Remove empty space between title bar and input bar</li>
        </ul>
      </description>
    </release>
    <release version="0.4.6" date="2026-01-11">
      <description>
        <p>Features:</p>
        <ul>
          <li>(gui) Navigate back to tasks list after moving a task</li>
          <li
                    >(sorting) Sort task and its sub-task(s) according to the first sort_rank of the whole group</li>
          <li>(sorting) Propagate more tie-breaker fields from sub-tasks</li>
          <li>(gui) Ensure resize handles are available in every panel</li>
          <li>(parser) Parse time in recurrences</li>
          <li
                    >(calendar) Move completed tasks to the time they were done (and add undated done tasks)</li>
        </ul>
        <p>Bug Fixes:</p>
        <ul>
          <li>Moving a task no longer leaves the old calendar event</li>
          <li
                    >(windows) Avoid spawning a console window with the GUI ( https://codeberg.org/trougnouf/cfait/issues/8 )</li>
          <li
                    >Fix respawn logic and timezone handling for recurring tasks (reported by Antoine Bargel)</li>
          <li>(android) Correct cursor position in high DPI screens</li>
          <li
                    >Fix legacy data migration and floating time parsing for all-day tasks</li>
          <li
                    >(recurrence) Fix respawn logic and timezone handling for recurring tasks (for realz this time)</li>
        </ul>
        <p>Refactor:</p>
        <ul>
          <li
                    >(gui) Reduce theme repetition, rm fragile manual count and position-dependent code</li>
        </ul>
        <p>Documentation:</p>
        <ul>
          <li>(readme) Update F-Droid link to com.trougnouf.cfait</li>
        </ul>
        <p>Styling:</p>
        <ul>
          <li>(gui) Add a bunch of themes</li>
          <li>(gui) Improve themes</li>
          <li>(gui) Add Random theme and make it the default</li>
          <li>(gui) Switch to fastrand randomness generator</li>
          <li>(gui) Add two rounded corners</li>
          <li
                    >(gui) Allow server-side decorations with --force-ssd flag ( https://codeberg.org/trougnouf/cfait/issues/11 )</li>
          <li
                    >Show calendar's name in its own color, add ++... with each calendar's color (GUI, Android, https://codeberg.org/trougnouf/cfait/issues/4 proposed by devinside)</li>
          <li
                    >(android) Add theme switch w/ light, dark, dynamic light, dynamic dark, default to dynamic auto-detect ( https://codeberg.org/trougnouf/cfait/issues/6 proposed by devinside )</li>
          <li
                    >(gui) Only show calendar+++ when not in calendar list view. chore: update screenshots</li>
        </ul>
        <p>Miscellaneous Tasks:</p>
        <ul>
          <li>(flatpak) Add changelog to future releases</li>
          <li>(flathub) Add release notes, categories, keywords, controls</li>
          <li>Update rust licenses</li>
        </ul>
      </description>
    </release>
    <release version="0.4.5" date="2026-01-06">
      <description>
        <p>Improvements to recurring tasks and Android navigation</p>
        <ul>
          <li>Allow canceling single occurrence of recurring task</li>
          <li
                    >Allow grace period before pushing tasks with a future date in the future/bottom bin</li>
          <li>Make window draggable in the settings and help panels</li>
          <li
                    >Improve Android related-tasks navigation with jump back up shortcut button</li>
          <li>Show related-task icon in the tasks list</li>
          <li>Allow default sorting priority greater than 9</li>
        </ul>
      </description>
    </release>
    <release version="0.4.3" date="2026-01-05">
      <description>
        <p>Import and migration improvements</p>
        <ul>
          <li>Add import ics local store function</li>
          <li>Allow opening ics files from outside the app</li>
          <li>Allow changing default priority for sorting</li>
          <li>Local store backward compatibility improvements</li>
        </ul>
      </description>
    </release>
    <release version="0.4.2" date="2026-01-03">
      <description>
        <p>Bug fixes and Flatpak improvements</p>
        <ul>
          <li>Restore RFC5545 duration compliance</li>
          <li>Set GUI as default command for Flatpak</li>
        </ul>
      </description>
    </release>
    <release version="0.4.1" date="2026-01-03">
      <description>
        <p>Major feature update with improved task management</p>
        <ul>
          <li>Implement custom snooze with configurable durations</li>
          <li>Include sub-tasks in search results when parent matches</li>
          <li>Support multiple local collections</li>
          <li>Support manual #blocked tag</li>
          <li>Click on a linked task to jump to it (GUI, TUI, Android)</li>
          <li>Parse "until" and "except" in recurrence rules</li>
          <li>Allow moving tasks between calendars</li>
        </ul>
      </description>
    </release>
    <release version="0.4.0" date="2025-12-30">
      <description>
        <p>Performance improvements and new features</p>
        <ul>
          <li>Various performance optimizations</li>
          <li>Styling improvements across all platforms</li>
          <li>Bug fixes for improved stability</li>
        </ul>
      </description>
    </release>
    <release version="0.3.14" date="2025-12-29">
      <description>
        <p>Location features and performance improvements</p>
        <ul>
          <li>Sub-locations support (e.g. @@home:office)</li>
          <li>Location-based aliases (e.g. @@aldi:=#groceries)</li>
          <li>Add generic related-to relationships</li>
          <li>Eliminate disk I/O on every action for better performance</li>
          <li>Allow editing long titles with horizontal scrolling in TUI</li>
        </ul>
      </description>
    </release>
    <release version="0.3.13" date="2025-12-28">
      <description>
        <p>Reminders and notifications system</p>
        <ul>
          <li>Add reminders and alarm system with snoozing</li>
          <li>Implement TUI, GUI, and Android notifications</li>
          <li>Configurable auto-reminders</li>
          <li>Parse time units in reminder settings (rem:TIME, rem:in TIME)</li>
          <li>Add "Create subtask" action on Android</li>
        </ul>
      </description>
    </release>
    <release version="0.3.12" date="2025-12-24">
      <description>
        <p>Urgency rules and parser improvements</p>
        <ul>
          <li>Prioritize urgent tasks with configurable urgency rules</li>
          <li>Handle escape character in parser</li>
          <li>Unify syntax highlighting with core Rust parser via UniFFI</li>
        </ul>
      </description>
    </release>
    <release version="0.3.11" date="2025-12-24">
      <description>
        <p>Parser refactoring</p>
        <ul>
          <li
                    >Improve smart input engine for robust date and recurrence parsing</li>
          <li>Fix bug where short dates were parsed as start dates</li>
          <li>Improve test coverage</li>
        </ul>
      </description>
    </release>
    <release version="0.3.10" date="2025-12-24">
      <description>
        <p>Bug fixes and documentation</p>
        <ul>
          <li>Correct recurrence parsing and fix highlighting</li>
          <li>Add comprehensive README compliance tests</li>
          <li>Add Matrix chatroom to README</li>
        </ul>
      </description>
    </release>
    <release version="0.3.9" date="2025-12-23">
      <description>
        <p>Android improvements and location features</p>
        <ul>
          <li>Improve multi-word highlighting on Android</li>
          <li>Add pull down to refresh</li>
          <li>Add clickable URL/Geo icons</li>
          <li>Add cache versioning to invalidate stale caches on upgrade</li>
          <li>Count only active tasks in header</li>
        </ul>
      </description>
    </release>
    <release version="0.3.8" date="2025-12-23">
      <description>
        <p>Locations, URLs, and aliases</p>
        <ul>
          <li>Add locations and URLs support</li>
          <li>Recursive aliases with cycle detection</li>
          <li>Quoted string support</li>
          <li>Filter views by location</li>
          <li>Compact journal on sync for better performance</li>
        </ul>
      </description>
    </release>
    <release version="0.3.7" date="2025-12-21">
      <description>
        <p>Syntax highlighting and sync improvements</p>
        <ul>
          <li
                    >Refine smart input syntax highlighting with different colors per type</li>
          <li>Add optional "in" date keyword</li>
          <li>Correctly journal offline task moves to prevent duplication</li>
          <li
                    >Centralize journal application logic and improve sort consistency</li>
        </ul>
      </description>
    </release>
    <release version="0.3.6" date="2025-12-21">
      <description>
        <p>Authentication improvements</p>
        <ul>
          <li>Add Digest authentication</li>
          <li>Fix Android SSL support</li>
          <li>Published on F-Droid</li>
        </ul>
      </description>
    </release>
    <release version="0.3.5" date="2025-12-20">
      <description>
        <p>Real-time input decoration</p>
        <ul>
          <li
                    >Decorate special statements and tags in real time in the input bar</li>
          <li>Android: Press once to search</li>
          <li>Add suggested CalDAV providers to README</li>
        </ul>
      </description>
    </release>
    <release version="0.3.4" date="2025-12-19">
      <description>
        <p>Offline handling and settings improvements</p>
        <ul>
          <li>Improve offline remote calendar handling</li>
          <li>Show current state of connection</li>
          <li>Refactor settings for instant save</li>
          <li
                    >Resolve journal deadlock by handling 412 conflict on task creation</li>
        </ul>
      </description>
    </release>
    <release version="0.3.3" date="2025-12-19">
      <description>
        <p>Optimistic UI updates and workflow improvements</p>
        <ul>
          <li>Implement pause/stop task states</li>
          <li
                    >Implement optimistic UI updates for instant task creation and modification</li>
          <li>Show task duration</li>
          <li>Make RustyDark the default theme</li>
          <li>Resolve infinite sync loop</li>
        </ul>
      </description>
    </release>
    <release version="0.3.2" date="2025-12-18">
      <description>
        <p>Build fixes and F-Droid preparation</p>
        <ul>
          <li>Fix Android build configuration</li>
          <li>Work on reproducible builds for F-Droid</li>
          <li>Auto-generate changelogs</li>
        </ul>
      </description>
    </release>
    <release version="0.3.1" date="2025-12-17">
      <description>
        <p>Android crash fixes</p>
        <ul>
          <li>Prevent crash on "Show all calendars" toggle on first run</li>
          <li
                    >Prevent sync conflicts by writing post-sync ETag/sequence back to store</li>
        </ul>
      </description>
    </release>
    <release version="0.3.0" date="2025-12-17">
      <description>
        <p>Major release: Native Android client and hierarchical features</p>
        <ul>
          <li
                    >Implement native Android client using Jetpack Compose and UniFFI</li>
          <li>Hierarchical tag filtering and sidebar aggregation</li>
          <li>Tag inheritance for child tasks</li>
          <li>Display CalDAV calendar colors in all UIs</li>
          <li>Implement priority gradient</li>
          <li
                    >Add keyboard shortcuts for GUI ("/" to search, "a" for smart input)</li>
          <li>Implement theme switcher with custom 'Rusty Dark' option</li>
        </ul>
      </description>
    </release>
    <release version="0.2.9" date="2025-12-08">
      <description>
        <p>GUI improvements and startup optimization</p>
        <ul>
          <li>Preserve recurring task exceptions written by other clients</li>
          <li>Click on tag jumps to it in GUI</li>
          <li>Help on hover in GUI</li>
          <li>Optimize VTODO parsing to speed up startup from empty cache</li>
          <li
                    >Always align tags to the right and share a line with the title</li>
        </ul>
      </description>
    </release>
    <release version="0.2.8" date="2025-12-08">
      <description>
        <p>Smart tag navigation and safe conflict resolution</p>
        <ul>
          <li>Implement smart tag navigation and search result jumping</li>
          <li
                    >Implement safe 3-way merge for 412 conflicts to reduce duplicates</li>
          <li>Safe unmapped property handling</li>
          <li>Implement optimistic cache loading for instant startup</li>
          <li>Use default color for white background terminal compatibility</li>
        </ul>
      </description>
    </release>
    <release version="0.2.7" date="2025-12-06">
      <description>
        <p>Start dates and GUI help screen</p>
        <ul>
          <li>Implement Start Date (DTSTART) with smart input parsing</li>
          <li>Display active task count next to each tag in sidebars</li>
          <li>Add help screen to GUI with icons</li>
          <li>Implement custom draggable and resizable window decorations</li>
          <li>Upgrade to iced 0.14-dev for native window resizing</li>
        </ul>
      </description>
    </release>
    <release version="0.2.5" date="2025-12-04">
      <description>
        <p>Help screen and code refactoring</p>
        <ul>
          <li>Streamline child task creation from parent in GUI and TUI</li>
          <li>Add toggleable, dynamic, and comprehensive help screen in TUI</li>
          <li>Implement auto-jump to new tasks in TUI and GUI</li>
          <li
                    >Split code into granular submodules for better maintainability</li>
        </ul>
      </description>
    </release>
    <release version="0.2.4" date="2025-12-03">
      <description>
        <p>File locking and multiline descriptions</p>
        <ul>
          <li>Implement robust file locking to prevent data corruption</li>
          <li>Enable multiline task descriptions in GUI and TUI (Alt+Enter)</li>
          <li>Move main mirror from GitHub to Codeberg</li>
          <li>Add Codeberg Actions for testing and release builds</li>
        </ul>
      </description>
    </release>
    <release version="0.2.3" date="2025-12-01">
      <description>
        <p>Layered calendars and conflict resolution</p>
        <ul>
          <li>Implement layered calendars with disabled state</li>
          <li>Implement safe conflict resolution with copy on 412 error</li>
          <li>Implement CTag caching and optimize fetch operations</li>
          <li
                    >Implement bounded concurrency and delta sync for task fetching</li>
          <li>Treat no priority as implied normal priority (5) for sorting</li>
        </ul>
      </description>
    </release>
    <release version="0.2.2" date="2025-11-29">
      <description>
        <p>Sync improvements</p>
        <ul>
          <li
                    >Handle 412 Precondition Failed by refreshing ETag and retrying</li>
          <li>Align tags with titles in GUI</li>
        </ul>
      </description>
    </release>
    <release version="0.2.1" date="2025-11-29">
      <description>
        <p>Local-only calendar and offline support</p>
        <ul>
          <li>Implement secure TLS with insecure toggle option</li>
          <li>Add setting to hide specific calendars from view</li>
          <li>Implement moving tasks between calendars in GUI and TUI</li>
          <li
                    >Introduce a local-only calendar with migration option to CalDAV</li>
          <li>Implement offline task queue and UI indicators</li>
          <li>Embed Symbols Nerd Font and iconify UI</li>
        </ul>
      </description>
    </release>
    <release version="0.2.0" date="2025-11-27">
      <description>
        <p>GTD workflow implementation</p>
        <ul>
          <li>Initial implementation of ongoing and canceled tasks</li>
          <li>Custom checkmark icons (V, &gt;, X)</li>
          <li>Implement GTD workflow and advanced search parser</li>
          <li>Add refresh key in TUI and remove dependency buttons in GUI</li>
        </ul>
      </description>
    </release>
    <release version="0.1.9" date="2025-11-26">
      <description>
        <p>Sorting and tag improvements</p>
        <ul>
          <li
                    >Set cutoff date so timed tasks are not always on top (default: 6 months)</li>
          <li>Add scroll wheel in GUI settings</li>
          <li>Change hide_completed_in_tags to hide_fully_completed_tags</li>
          <li>Fix tags saved with comma for better client compatibility</li>
        </ul>
      </description>
    </release>
    <release version="0.1.7" date="2025-11-25">
      <description>
        <p>Dependencies and aliases</p>
        <ul>
          <li>Support RFC 9253 (DEPENDS-ON) in both TUI and GUI</li>
          <li>Support aliases (configurable in settings)</li>
          <li>Add subtitle to GUI window</li>
          <li>Manually allow multiple RELATED-TO fields</li>
          <li>Add unit tests</li>
        </ul>
      </description>
    </release>
    <release version="0.1.6" date="2025-11-24">
      <description>
        <p>Categories and tags view</p>
        <ul>
          <li>Add icon to application</li>
          <li>Add support for #categories in GUI and TUI</li>
          <li>Add Tags (categories) view pulling from all calendars</li>
          <li>Add settings to hide completed tasks</li>
          <li>Browse by category/tags in TUI</li>
        </ul>
      </description>
    </release>
    <release version="0.1.5" date="2025-11-22">
      <description>
        <p>Packaging and optimization</p>
        <ul>
          <li>Rename fairouille to cfait</li>
          <li>Optimize binary size</li>
          <li>Add onboarding prompt</li>
          <li>Automate Arch Linux PKGBUILD</li>
          <li>Add .deb release</li>
        </ul>
      </description>
    </release>
    <release version="0.1.4" date="2025-11-22">
      <description>
        <p>Packaging improvements</p>
        <ul>
          <li>Add license file</li>
          <li>Add Arch Linux PKGBUILD</li>
          <li>Project renamed from Rustache to ferouille</li>
        </ul>
      </description>
    </release>
    <release version="0.1.3" date="2025-11-22">
      <description>
        <p>Recurrence and caching</p>
        <ul>
          <li>Add recurrence support with recurrence symbol</li>
          <li>Expand relative dates</li>
          <li>Add caching for fast inter-calendar switching</li>
          <li>Add unit tests to model</li>
        </ul>
      </description>
    </release>
    <release version="0.1.2" date="2025-11-21">
      <description>
        <p>Description editing and task management</p>
        <ul>
          <li>Allow viewing and editing task descriptions in GUI and TUI</li>
          <li>Add priority, subtask, edit, and delete buttons in GUI</li>
          <li>Show task descriptions in GUI</li>
        </ul>
      </description>
    </release>
    <release version="0.1.1" date="2025-11-21">
      <description>
        <p>Initial release</p>
        <ul>
          <li>Working TUI with create, add, complete, and delete tasks</li>
          <li>Multiple calendars support from the same server</li>
          <li>Basic GUI with multi-calendar support</li>
          <li>Sub-tasks support in both TUI and GUI</li>
          <li>Search function and date display in GUI</li>
          <li>Scrolling support in TUI</li>
        </ul>
      </description>
    </release>
  </releases>
</component>
