# Changelog

## [1.0.8] - 2026-06-12

### 🐛 Bug Fixes

- *(tui)* Calculate input cursor position using visual unicode width for CJK support ( https://github.com/trougnouf/cfait/issues/39 )
- *(gui)* Update ACTIVE_FOCUS state when focusing text inputs (avoids toggling tasks while editing)

### ⚙️ Miscellaneous Tasks

- Fix TUI dependencies (lock time version)
## [1.0.7] - 2026-06-11

### 🚀 Features

- Sort overdue tasks by priority over due date (fixed)

### 🐛 Bug Fixes

- *(gui)* Pin swash to v0.2.7 to prevent rendering bugs with iced
## [1.0.6] - 2026-06-10

### 🚀 Features

- *(sort)* Sort overdue tasks by priority over due date
- *(cli)* Expand CLI with edit command, collection listing/writing, and json outputs
- *(sorting)* Add sort presets and default to Urgent > Started > Due Soon, add +pin
- *(cli)* Add --no-wait/-w flags with background process auto-detection
- *(ui)* Auto-expand sidebar tags and locations when selected (tui, gui, https://github.com/trougnouf/cfait/issues/38 )
- *(ui)* Auto-expand sidebar tags when selected (tui, gui)
- Implement nested tag grouping and key=value rendering
- Expose tasks creation date
- *(ui)* Implement GUI sidebar focus navigation and refine TUI tree indicators ( https://github.com/trougnouf/cfait/issues/38 , winter8)

### 🐛 Bug Fixes

- Treat DAV:all aggregate privilege as writable in calendar discovery
- *(tui)* Avoid redundant journal actions and syncs on no-op collapse and priority change (reported by starkgoose)
- Resolve DTSTAMP fallback for modified dates, deduplicate identical timestamps, and bump storage versions

### 📚 Documentation

- Reduce new README content

### ⚙️ Miscellaneous Tasks

- *(gui)* Try to intercept 1,2,3 keys first
## [1.0.5] - 2026-06-03

### 🚀 Features

- *(tui)* Add a way to delete relations (delete key in the links list (L)) and to lock yank (shift+y), add missing help items (reported by wunter8)
- *(tui)* Add context menu (enter)
- Add ExtractSubtasks action
- *(gui)* Right click context menu materializes at cursor height
- *(gui)* Right click context menu materializes exactly where the cursor is positioned
- *(tui)* Adapt TUI color contrasts dynamically to match the configured light/dark app theme ( https://codeberg.org/trougnouf/cfait/issues/77 )

### 🐛 Bug Fixes

- Fix RFC 5545 compliance by aligning RRULE UNTIL and EXDATE value types with DTSTART
- *(tui)* Hide relationship menu when empty and add parent task support

### 💼 Other

- Automatically publish AUR bin package on release

### 🎨 Styling

- Vary and randomize ExtractSubtasks action icon

### ⚙️ Miscellaneous Tasks

- Unify Arch packages in packaging/arch
- Add logging for notification errors ( https://codeberg.org/trougnouf/cfait/issues/80 )
## [1.0.4] - 2026-05-30

### 🚀 Features

- *(gui)* Alias editing

### 🐛 Bug Fixes

- Propagate tag aliases and config updates on startup and refresh across all clients
- Reorder controller logic to push settings changes upstream before journal sync
- Fix initial settings and aliases sync by honoring remote payload when uninitialized

### ⚙️ Miscellaneous Tasks

- Improve CHANGELOG.md auto-generation
## [1.0.3] - 2026-05-30

### 🚀 Features

- "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
- Complete and shift schedule: test and Android feature parity
- *(gui)* Add missing keyboard navigation when moving tasks
- *(settings)* Allow password hide/show
- *(gui)* Make context menu (right click / more actions) scrollable
- *(sorting)* Sort standard tasks by priority (toggle with p)
- *(gui)* Persist ui_scale between sessions
- *(gui)* Improve selection behavior after task completion
- Highlight relative recurrence and hide redundant shift action
- *(tui)* Support external editors (EDITOR/VISUAL env variable or description_editor setting, https://github.com/trougnouf/cfait/issues/36 )
- *(android)* Expose sorting and priority settings in UI
- Implement collapsible tag/location trees in TUI/GUI with alias hiding and persistent state ( https://github.com/trougnouf/cfait/issues/37 )
- *(android)* Implement collapsible tag/location trees in Android UI ( https://github.com/trougnouf/cfait/issues/37 )
- Implement settings and alias synchronization over CalDAV ( https://codeberg.org/trougnouf/cfait/issues/21 )

### 🐛 Bug Fixes

- *(store)* Stop_task resets time tracking instead of accumulating
- *(sync)* Deduplicate cross-collection uids and add android parent navigation
- *(ci)* Build Android APKs originating from PRs with dummy signing key ( https://codeberg.org/trougnouf/cfait/pulls/68 )
- *(ci)* Move dummy keystore fallback logic from release.yml to test_roll.yml
- *(auth)* Ensure android returns config with credentials
- *(gui)* Remove "All actions pinned" from right click menu
- *(gui)* Move sort-by-priority to settings, change shortcut to Ctrl+P
- *(android)* Move sort_standard_by_priority to end of Preferences section
- *(android)* Add missing sortStandardByPriority param to saveConfig call
- *(gui)* Keep selection reasonable when task marked complete
- *(gui)* Show priority tag even without other metadata
- Prevent offline description data loss and add terminal-safe save shortcuts
- Prevent offline description data loss and add terminal-safe save shortcuts

### 💼 Other

- Add cfait-bin AUR package to docs
- Remove tui feature
- Unify for also toggle task case

### 🚜 Refactor

- *(model)* Introduce CompareOptions struct for compare_with_cutoff
- *(gui)* Centralized actions visibility logic
- Disallow(clippy::too_many_arguments)

### 📚 Documentation

- *(readme)* Update sort toggle shortcut P → Ctrl+P, remove toolbar reference

### ⚡ Performance

- *(gui)* Defer tooltips, remove CursorMoved, use dynamic context menu placement
- *(gui)* Defer tooltips, remove CursorMoved, use dynamic context menu placement (part 2)

### 🎨 Styling

- Use the same tree icons for tags and locations as in the tasks list

### ⚙️ Miscellaneous Tasks

- Update Rust toolchain to 1.96.0
- Fix Android compilation error
## [1.0.2] - 2026-05-22

### 🚀 Features

- Add target path to recovered tasks' description ( https://github.com/trougnouf/cfait/issues/25 )
- Optimize companion event sync using CalDAV REPORT queries and task UID metadata
- Log level advanced setting ( https://github.com/trougnouf/cfait/issues/31 )
- Add ability to create remote CalDAV collections ( https://codeberg.org/trougnouf/cfait/issues/62 )
- Remember and synchronize task trees collapsed status
- *(android)* Merge calendar visibility toggles into collection editors ( https://codeberg.org/trougnouf/cfait/issues/62 )
- *(android)* Log Kotlin-related crashes to cache/android_crash.txt ( https://codeberg.org/trougnouf/cfait/issues/63 )
- *(i18n)* Add complete Czech translation
- Set sub-tasks' implicit start datetime based on parent's (for e.g. is:ready filtering and random task selection)
- Add ## and @@@ syntax to add tags and locations that remain in the title
- *(gui)* Remember cursor position after deleting a task

### 🐛 Bug Fixes

- Fix cyclic parent_uid loops and prevent recursive UI event flood
- Refine CalDAV path overlap detection to ignore root-only slashes and support disjoint paths ( https://github.com/trougnouf/cfait/issues/25 )
- *(sync)* Use status codes for robust error handling and allow recovery export ( https://github.com/trougnouf/cfait/issues/31 )
- *(i18n)* Fix mismatching substitution
- *(android)* Preserve stored password only for unchanged username
- *(tui)* Store password to keyring during onboarding
- *(gui,mobile)* Implement optimistic updates for remote calendar actions to prevent UI jitter ( https://codeberg.org/trougnouf/cfait/issues/62 )
- *(mobile)* Prevent DST gap panics in implicit alarm evaluators
- *(i18n)* Improve Czech translation terminology and add missing keys
- *(i18n)* Improve Czech translation wording for sorting/priority terms
- Hide collapsed sub-tasks which were picked up by the fallback routine for orphaned tasks (reported by @Shadowminx )
- *(android)* Fix language switch on older (<13) Android versions ( https://github.com/trougnouf/cfait/issues/32 )

### 📚 Documentation

- Update French translations
- *(i18n)* Localize hardcoded strings, prune unused keys, and unify TUI/CLI help
- *(i18n)* Allow migration_complete_moved to be singular/pluralized (per gallegonovato)
- *(i18n)* Allow migration_complete_moved to be singular/pluralized (update existing translations)
- *(i18n)* Support singular/plural forms for calendars and sessions (reported by gallegonovato)
- *(i18n)* Add zero plural form and use tasks_count i18n key (suggested by @gallegonovato)
- *(i18n)* Remove unused color strings
- *(i18n)* French translations
- *(i18n)* Remove unnecessary formatting marks from translatable strings
- *(i18n)* Fix pluralization usage and remove duplicate help_search_filter_by_duration string
- *(i18n)* Replace hardcoded text with i18n strings, fix tasks_count usage
- *(i18n)* Replace hardcoded text with i18n strings
- *(i18n)* Remove unused strings

### 🎨 Styling

- Make the Collapse tree button/icon a random shade of green
- Make Windows icons transparent ( https://codeberg.org/trougnouf/cfait/issues/60 )
- *(android)* Use one line per collection in the settings
- *(gui)* Improve collapsed tree icon visibility
- *(android)* Reduce space between collections in the settings

### 🧪 Testing

- Build binaries on PR
- Improve test coverage

### ⚙️ Miscellaneous Tasks

- Switch locales to 4-spaces
- Fix Android compilation error
## [1.0.1] - 2026-05-14

### 🚀 Features

- *(parser)* Support start-due time range (e.g. ^@2026-05-06 12:20-16:20)
- *(linux)* Warn users using the volatile keyutils keystore ( https://github.com/trougnouf/cfait/issues/29 )
- *(gui)* Unsynced icon tooltip shows unsynced items
- Optimize companion event sync using CalDAV REPORT queries and task UID metadata

### 🐛 Bug Fixes

- Decouple keyring access and ensure Linux Secret Service unlocking to fix password loss ( https://github.com/trougnouf/cfait/issues/29 )
- *(gui)* Restore broken GUI task list items and navigation
- *(linux)* Handle locked keyrings and prevent redundant config save ( https://github.com/trougnouf/cfait/issues/29 )
- *(flatpak-gui)* Resolve flatpak hang and prevent mid-session password loss
- *(gui)* Silence calloop log noise by replacing blocking sleep with tokio sleep
- Decouple disk persistence from network sync to resolve timeouts and 412 ETag conflicts ( https://github.com/trougnouf/cfait/issues/25 )
- *(gui)* Use in-memory state for UI refreshes to fix config race condition
- *(tui)* Restore and localize About/Support help screen
- *(android)* Fix Android filter flash by using local UI state after task dispatch

### 💼 Other

- Fix stale unsynced state by triggering journal sync after local actions

### 🚜 Refactor

- Centralize clients logic via AppIntent
- *(tui)* Preserve optimistic updates by using granular sync events in network actor
- Revert unified UI code (keep AppIntent, SessienState)

### 📚 Documentation

- Update cfait-gui bin name

### ⚡ Performance

- *(ui)* Optimize UI responsiveness by precomputing transient visual attributes in the filtering pipeline
- *(client)* Optimize companion event sync with concurrency and early returns

### 🎨 Styling

- *(gui)* Restore tight layout
- *(gui)* Align tags/datetime/etc to the right
- *(android)* Improve android UI
- *(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 )
- *(android)* Improve UI

### ⚙️ Miscellaneous Tasks

- *(ci)* Prevent test_roll.yml jobs on new releases
- Fix Android version parser and bump version up to v1.0.0
- *(pkg)* Add org.freedesktop.secrets dependency (Arch, *.deb, README, https://github.com/trougnouf/cfait/issues/29 )
- Update libdav dependency (v0.10.4 is out, https://codeberg.org/trougnouf/cfait/issues/57 )
- Mute zbus spam from log and show INFO messages in the terminal
- *(gui)* Add permanent keyring subtitle in the loading screen, mute zbus log messages and unmute others
- Re-log some iced info messages
- Bump cache/storage versions, fix config save race condition, and remove unsafe unwraps
- Update libdav to v0.10.5 (breaking change) and other rust dependencies
## [0.5.9] - 2026-05-05

### 🚀 Features

- *(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
- Handle more ISO 8601 date formats (YYYYMMDD and YYYY-MM) as well as YYYY alone ( https://codeberg.org/trougnouf/cfait/issues/38 )
- *(parser)* Allow decimal degrees with cardinal directions geo-coordinates format (e.g. "geo:50.13120° N, 4.50010° E", default format in OsmAnd~)
- *(android)* Add "geo:here" syntax to map current geo-coordinates
- Support sub(sub*) tasks creation and descriptions in initial task creation dialog using markdown syntax ( https://github.com/trougnouf/cfait/issues/22 )
- *(android)* Support sub(sub*) tasks creation and descriptions in initial task creation dialog usin markdown syntax ( https://github.com/trougnouf/cfait/issues/22 )
- Log to file (CLI, GUI, and TUI) and to stderr (CLI and TUI) ( https://codeberg.org/trougnouf/cfait/issues/48 )
- *(android)* Log to file which is part of the exportable debug data ( https://codeberg.org/trougnouf/cfait/issues/48 )
- Build Flatpak and Windows executables in rolling release
- *(android)* Add delete task tree, duplicate and promote actions (TUI/GUI parity)
- *(android)* Add haptic feedback
- Open locations (GPX) action which opens all sub-tasks locations on a map (Android, GUI, TUI)
- Improve create task with details and sub-tasks (Ctrl+e) experience (GUI, TUI)
- *(gui)* Add Open URL action to the customizable actions and version the settings
- *(gui)* Clickable jump to parent task
- Add a collapse/expand button for task trees
- Add work mode / is:ready "w" keyboard shortcut and button (feature requested by Geoffrey Frogeye, ﻿T[]M_S∆W, Martin Stut)
- Use OS-native keyring instead of plaintext password ( https://github.com/trougnouf/cfait/issues/9 , https://codeberg.org/trougnouf/cfait/issues/33 )
- Implement 'z' tree fold shortcut in GUI and update help documentation
- Implement robust history (custom) tagging and display completion info for related tasks
- *(gui)* Add missing keyboard shortcuts (TUI parity)
- *(gui)* Add keyboard shortcuts and document them on hover, use tab to switch from search/add to task list
- Filter read-only collections and handle 405 errors via task recovery ( https://github.com/trougnouf/cfait/issues/11 )
- Catch unrecoverable errors with error codes only ( https://github.com/trougnouf/cfait/issues/11 )

### 🐛 Bug Fixes

- 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 )
- Fix recurence issues
- Count sub-tags only once ( https://codeberg.org/trougnouf/cfait/issues/41 )
- *(android)* Detect global locale if system is set to an untranslated regional variation (e.g. fr_FR -> fr, https://codeberg.org/trougnouf/cfait/issues/42 )
- *(android)* Use strict CalDAV Content-Type and fix coroutine cancellation handling
- *(Android)* Log sync errors, show journaled tasks in tasks list
- *(sync)* Route 404/409 errors to local recovery and prevent infinite sync loops ( https://codeberg.org/trougnouf/cfait/issues/43 )
- *(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)
- *(android)* Fix geo:here feature (request permission)
- *(sync)* Enforce RFC 5545 compliance and resolve migration duplication ( https://codeberg.org/trougnouf/cfait/issues/43 )
- *(model)* Restore RFC 5545 duration compliance rules for ICS serialization
- *(ui)* Use (UID, Collection) identity to resolve disappearing tags and recovery tasks ( https://codeberg.org/trougnouf/cfait/issues/43 )
- Fix search result context and restore cross-collection parent-child linking
- *(gui)* Restore theme selection lost in 31fc410fedb80bf994fbd37c3d7d143afdb1bfbb ( https://github.com/trougnouf/cfait/issues/23 )
- 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
- Connection timeouts and sync race conditions via transactional journal processing ( https://github.com/trougnouf/cfait/issues/25 )
- *(gui)* Fix flickering help icon
- *(tui)* Preserve create flow and add remote-only mode
- *(tui)* Create with alias
- *(gui)* Fix flickering help icon
- *(gui)* Prevent timeout from unseating the active application
- Ensure fs sync on atomic writes and DRY on datetime and duration utilities
- Decouple UI mutations from background sync via transactional diffing and fix tree soft-delete ( https://github.com/trougnouf/cfait/issues/25 )
- *(gui)* Clear remote metadata on remote-to-local moves and optimize worker batching
- *(gui)* Stabilize widget tree reconciliation
- Case-insensitive RELATED-TO parsing and auto-heal mislinked sub-tasks
- *(android)* Fix GPX file export
- Fallback to create+delete if move failed ( https://codeberg.org/trougnouf/cfait/issues/54 )
- Resolve CalDAV connection timeouts and task state reversion race conditions ( https://github.com/trougnouf/cfait/issues/25 )
- *(keyring)* Initialize ndk-context via JNI to resolve Android startup crash
- *(android)* Properly initialize NDK context via global JNI reference
- *(gui)* Remote task creation was mapped to update action ( https://github.com/trougnouf/cfait/issues/27 )
- Prevent recurring history snapshots from being misparsed as sub-tasks
- Properly randomize "Support development" icon
- Merge description tags from smart input with editor content instead of overwriting it
- *(windows)* Correct path to cfait.ico ( https://github.com/trougnouf/cfait/discussions/28 , https://github.com/trougnouf/cfait/issues/24 )
- Detect and reject cyclic parent/sub-tasks dependencies ( https://codeberg.org/trougnouf/cfait/issues/56 )
- Improve CalDAV compatibility, URL encoding, and sync reliability ( https://github.com/trougnouf/cfait/issues/25 )
- Robust CalDAV path reconstruction for proxies and safe character encoding
- *(flatpak)* Add keyring support
- Debounce toggling, add startup timeouts, strict error matching ( https://github.com/trougnouf/cfait/issues/25 )
- *(flatpak)* Fix flatpak keyring using oo7

### 🚜 Refactor

- Remove redundant Tokio runtime in GUI to fix UI thread blocking
- Remove VirtualState from Task model and decouple UI rendering lists
- Better error handling with anyhow
- Better error handling with anyhow (up to GUI boundary)
- *(gui)* Migrate GUI to debounced background actor to eliminate store cloning, prevent network spam, and ensure safe tree restoration

### 📚 Documentation

- Explicitly mention the dependencies, set rfd to use xdg-portal s.t. gtk3 is not required ( https://codeberg.org/trougnouf/cfait/issues/44 )
- *(pkg)* Add vulkan to requirements
- Clarify dependencies and use PKGBUILD as ground-truth ( https://codeberg.org/trougnouf/cfait/issues/44 and https://codeberg.org/trougnouf/cfait/issues/46 )
- Clarify dependencies ( https://codeberg.org/trougnouf/cfait/issues/44 and https://codeberg.org/trougnouf/cfait/issues/46 )
- Rename Advanced settings to More settings ( https://codeberg.org/trougnouf/cfait/issues/52 )
- Begin refactoring the built-in help
- Refactor built-in help
- Improve built-in help
- Make hardcoded strings translatable
- Update French translations
- *(i18n)* Fix missing and hardcoded strings
- *(android)* Remove keyboard shortcuts from Android built-in help

### ⚡ Performance

- MULTIGET parallel chunking optimization ( https://codeberg.org/trougnouf/cfait/issues/49 )
- Prevent stack overflow in the alias validation
- *(gui)* Debounce the search bar, make config saving asynchronous, incremental store indexing
- *(gui)* Keyed columns
- *(gui)* Fix performance and D-Bus spam by using cached config values

### 🎨 Styling

- Change editor expansion icon (Android, GUI)
- *(android)* Make the help button more obvious
- *(gui)* More accurate GUI scroll-to-selected
- *(gui)* More accurate GUI scroll-to-selected
- Invert random task and work mode button position (Android, GUI)

### 🧪 Testing

- *(tui)* Add test_tui_creating_task_and_alias_simultaneously
- Adapt sync_create_conflicts to MOVE create+delete fallback

### ⚙️ Miscellaneous Tasks

- Bump up chache and local store version (required with 4adb37573ee3094a9bf1b772689d3e410105a6e9 )
- Remove parent_map from search
- Update rust toolchain to 1.95.0
- Fix CI indentation
- Update license to GPL-3.0-or-later and specify it in all source files ( https://codeberg.org/trougnouf/cfait/issues/47 )
- Change CI permissions for flatpak build
- Rename gui to cfait-gui ( https://codeberg.org/trougnouf/cfait/issues/45 )
- Fix CI flatpak build
- Fix CI flatpak build
- Fix CI flatpak build
- Remove PULL.md from repository
- Fix CI rolling release upload
- Fix CI per-commit upload
- Ensure recurrence engine handles TZID parameter
- Make storage more robust to manual local store changes
- *(android)* Fix missing strings and icon compilation error
- Fix failing test
- Fix Android compilation issue, move hardcoded strings to en.json
- Remove duplicate strings
- Remove unused translated strings (previously removed duplicates)
- Fix failed test
- Update rust-i18n and iced_aw crates
## [0.5.8] - 2026-04-10

### 🐛 Bug Fixes

- *(gui)* Right click on a task no longer jumps to the top of the task list
## [rolling] - 2026-04-08

### 🚀 Features

- Implement task tree duplication, visual priority indicators, and explicit relationship UI (GUI, TUI, https://codeberg.org/trougnouf/cfait/issues/36 )
- Delete tree (GUI, TUI, https://codeberg.org/trougnouf/cfait/issues/36 )
- Make relations tooltip explicit (GUI, https://codeberg.org/trougnouf/cfait/issues/36 )
- *(gui)* Add right click and customizable more actions menu ( https://codeberg.org/trougnouf/cfait/issues/9 )
- *(gui)* Create dedicated move action (moved from task edit dialog), fix synchronization issue

### 🐛 Bug Fixes

- *(android)* Fix endless/stuck sync loop
- Disable reminders for the Trash collection ( https://github.com/trougnouf/cfait/issues/18 )
- Resolve default calendar to href instead of name for server compatibility
- Report CLI sync errors and prevent queue poisoning from invalid URIs ( https://github.com/trougnouf/cfait/issues/20 )
- Increase CLI timeout to 10 seconds and make the warning less doomy
- *(calendar)* Fix sessions calendar integration in dateless events, perf improvements in calendar integration
- *(gui)* Fix ctrl+... keyboard shortcuts
- Fix drifting recursion time when crossing DST boundary ( https://github.com/trougnouf/cfait/issues/19 )
- *(android)* Switch to custom view when deselecting one or more collection(s) ( https://github.com/trougnouf/cfait/issues/21 )
- *(android)* Prevent initial UI state from overwriting custom visibility settings on startup (reported by  CycyX)
- *(gui)* Improve custom actions
- *(android)* Correctly restore previous tab on startup (reported by CycyX )
- *(android)* Remember write collection even shortly after startup
## [0.5.6] - 2026-03-22

### 🚀 Features

- *(android)* Font size scaling ( https://codeberg.org/trougnouf/cfait/issues/27 and https://codeberg.org/trougnouf/cfait/issues/35 )
- *(android)* Add permanent timer/notification for ongoing tasks

### 🐛 Bug Fixes

- *(android)* Fix Android crash when deleting a session
- *(android)* Fix Manage collections settings misplacement

### ⚙️ Miscellaneous Tasks

- *(android)* Move font size setting below manage collections
## [0.5.5] - 2026-03-17

### 🐛 Bug Fixes

- Handle local v4->v5 migration and test version handling ( https://github.com/trougnouf/cfait/issues/15 )
## [0.5.4] - 2026-03-14

### 🚀 Features

- Expose % done in the parser and UI and stop relying on % done for paused tasks ( https://github.com/trougnouf/cfait/issues/14 )
- Remember the task list position when going back from editing a task

### 🐛 Bug Fixes

- Fix flatpak compilation issue (AWS_LC_SYS_NO_JITTER_ENTROPY=1)
- *(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 )
- Ensure % completion does not spam the task list with 0% nor reset time spent

### ⚙️ Miscellaneous Tasks

- Fix Android compilation issues, bump local collection and cache version, update documentation
- *(Android)* Re-run uniffi-bindgen
- Fix unused variables warnings when generating Android bindings
- Fix Android compilation error
## [0.5.3] - 2026-03-14

### 🚀 Features

- Remove export dialog from the Trash and Recovery collections

### 🐛 Bug Fixes

- *(MacOS)* Fix MacOS compilation issue reported by Martin Stut
- *(android)* Show Trash calendar when it is not empty ( https://github.com/trougnouf/cfait/issues/14 )
- *(Android)* Compilation issue / missing import
- *(pkg)* Fix Arch PKGBUILD compilation issue (AWS_LC_SYS_NO_JITTER_ENTROPY=1)

### 📚 Documentation

- Update F-Droid and flathub screenshots
- Fix Android doc to track the other clients'

### ⚙️ Miscellaneous Tasks

- Fix rolling release message
- Update Rust toolchain to 1.94.0
## [0.5.2] - 2026-03-12

### 🚀 Features

- Support i18n translations and add French
- *(android)* Prune stale notifications (from done/canceled/snoozed/modified tasks)
- Replace d with Delete key in TUI and GUI
- *(gui)* Add network status to refresh icon (feature-parity with Android client)
- *(gui)* Zoom in and out with ctrl++ ctrl+- (or ctrl+scroll), reset with ctrl+0 ( https://codeberg.org/trougnouf/cfait/issues/9 )
- *(alarm)* Trim done/canceled notifications and refresh before firing them (GUI and TUI, feature parity with Android)
- *(sort)* Put ongoing tasks in the ongoing bin even if they are blocked or have not started
- *(cli)* Implement cli (non-interactive) add, list, search, toggle, start, pause, and delete commands
- Yank copies task smart title and description, TUI description is selectable in edit screen
- Time tracking management (list, add and delete sessions) in the UIs. Fix sessions synchronization and GUI unsynced state
- Time tracking management (list, add and delete sessions) in the UIs. Fix sessions synchronization and GUI unsynced state
- 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
- (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
- *(parser)* Parse days of the week and parse past time as the next day
- *(Android)* Use task-bound hash for notifications s.t. newer alarms overwrite older ones
- Clickable collection name (header) toggles show all collections (Android and GUI, https://codeberg.org/trougnouf/cfait/issues/24 )
- Add a lock toggle for yanked tasks and create sub-tasks (GUI and Android clients, https://github.com/trougnouf/cfait/issues/13 )
- *(android)* Swipe to switch collection ( https://codeberg.org/trougnouf/cfait/issues/3 )
- *(android)* Improve swipe collections navigation
- *(android)* Improve swipe collections navigation
- *(android)* Improve swipe collections navigation (3)
- *(android)* Improve swipe collections navigation (4)
- *(android)* Improve swipe collections navigation (5)
- *(android)* Improve swipe collections navigation (6: jump to "Custom" list when selecting multiple collections and speed-up swiping/switching collection tab)
- *(android)* Improve swipe collections navigation (7: eliminate visual glitch in swiping animation)
- *(android)* Improve swipe collections navigation (10)
- *(android)* Improve and debug swipe collections navigation (11)
- *(android)* Improve swipe collections navigation (12: fix auto-hide toggle and unresponsive custom tab, fix post-swipe vertical scroll delay)
- *(android)* Improve swipe collections navigation (13: switch ordering, fix unresponsive area)
- *(android)* Change search icon color when search is active in the background and auto-focus on search bar when it pops out

### 🐛 Bug Fixes

- Fix Android build
- *(gui)* Fix loss of input focus after a refresh
- *(help)* Fix some mismatching strings
- *(strings)* Fix pluralization
- *(android)* Fix language selection overlap and application
- *(local)* Process local tasks directly without going through the journal, fixes https://codeberg.org/trougnouf/cfait/issues/32
- *(android)* Support BCP-47 locales
- *(locale)* Fix mismatched strings
- Fix some timezone edge cases
- *(ui)* Ensure that local Trash and Recovery collections are shown on the bottom and only when not empty
- Fix github issue templates
- *(android)* Restore search field s.t. bottom of text is not cut-off
- *(gui)* Fix an issue where another collection than the current active one(s) may be temporarily shown during synchronization
- Fix calendar events' newline character
- *(Android)* Fix error handling on addSession
- *(sorting)* Prevent ghost alarms left by other clients from pinning future tasks to the top of the list
- *(android)* Export local tasks dialog was shown when switching from Local to All/Custom
- *(android)* Improve swipe collections navigation (14: restore interleaved sorting)
- *(android)* Improve swipe collections navigation (16: fix half-swipes and panic back swipes after random)
- *(android)* Improve swipe collections navigation (17: ensure checkboxes are still easily togglable, restore sorting (local last), unrelated/style: restore search icon color during search)
- *(android)* Improve swipe collections navigation (17: create and jump to custom tab by selecting new write/viewable collection while focused on a different collection)
- *(Windows)* Fix Windows compilation (notifications are fire-and-forget, not interactive)

### 🚜 Refactor

- Fix sync issue w/ rapidly changing states and consolidate sync logic across clients

### 📚 Documentation

- Document boolean search
- Update Android screenshot to v0.5.1
- Fix CLI help menu
- Remove unused strings and add missing translations
- Fix CLI help alignment
- Replace title case with sentence case
- Update translations
- Pluralize translations
- Simplify translations
- Improve fr translation
- Add link to translation page in settings, fix Android compilation and add missing strings
- Add link to translation page in settings, fix Android compilation and add missing strings
- Add https://translate.codeberg.org/projects/cfait/ to README.md
- Remove unused strings
- Remove syntax strings which should not be translated from locales
- Add de, es, it translations and complete fr
- Localize short_description.txt (de, es, it)
- Update GUI and Android screenshots to v0.5.2

### ⚡ Performance

- *(android)* Improve swipe collections navigation (15: improve switching performance)

### 🎨 Styling

- *(android)* Show collections list in the bottom by default, reduce spacing between collections, restore collection+++ behavior for Custom and replace All header
- *(android)* Add settings+help combined icon (superposition of GNOME icons with dimmer red)

### 🧪 Testing

- Fix cargo check without --all-features (reported by Geoffrey Frogeye)

### ⚙️ Miscellaneous Tasks

- Fix tests
- Fix Android compilation issues
- Update test
- *(android)* Reduce example task s.t. it fits in one line
## [0.5.1] - 2026-02-25

### 🚀 Features

- Add --root flag (TUI, GUI)
- *(client)* Implement automatic CalDAV root discovery and URL correction
- *(gui)* Keep focus in input bar after entering a task
- Add done/cancel actions to alarm (suggested by busterkeaton) and implement auto-refresh
- *(ui)* Add done/completed tasks expansion arrow (and advanced settings to control # of tasks shown)
- Android rolling release (build a new APK on every commit)
- Pre-fill sub-tasks tags and location with that of their parent
- Implement time tracking (between start and done) and `spent:` syntax (suggested by savion)
- Implement recursive subtask reset ( https://github.com/trougnouf/cfait/discussions/5#discussioncomment-15734983 ) and unify task completion logic
- Add boolean search with |or, -not and parentheses (and implied and) ( https://github.com/trougnouf/cfait/issues/4 )
- Show blocking task (in addition to blocked-by), link both ways
- Highlight search and sidebar filters red when they result in an empty task list
- *(android)* Replace {snooze (preset), snooze..., done} with {snooze..., start, done} and show time spent after start
- 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
- Use distinct completed/canceled icons and full datetime for done: tasks (syntax and UI)
- Add Trash calendar (unrelated: fix calendar event creation datetime to better match completion time)
- *(gui)* Keyboard shortcuts parity with TUI
- *(store)* One-step increase/decrease from default priority
- *(android)* Second BackHandler to exit search UI, clear yanked task, clear search text, and clear tag/location filters before exiting the app
- Expose blocks:link_to_other_task in GUI and Android task list
- Reduce tags&locations list and counts based on search terms
- 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 & recurrence handling, and settings UI typing/layout
- Reduce duplicate alarms
- Make sub-tasks of blocked tasks implicitly blocked and sort entire group to a lower bin
- Improve calendar events creation length: all-day same-day -> single all-day event, all-day different days -> start and due event, specific time (<24h) -> span length of event, specific time (>24h) -> two separate 1h events
- Further calendar events improvements (and fix toggle-all button)
- *(calendar)* Improve calendar events handling: merge 2 consecutive 1-day tasks into 2, avoid copying RRULE of completed recurrent tasks
- Centralize help and document keyboard shortcuts in GUI
- Ensure sessions information is kept across clients, more calendar integration improvements&fixes&tests
- Add background synchronization (Android) and synchronization daemon (desktop) ( https://codeberg.org/trougnouf/cfait/issues/30 )
- 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
- Ensure multiple clients/instances can share the same local collection concurrently
- Parse "@daily 09:00" format (shorter than "@daily @today 09:00")
- *(gui)* First esc does not clear the search

### 🐛 Bug Fixes

- *(model)* Fix missing and flickering tags introduced in refactor
- *(tui)* Suppress alarm in completed/canceled tasks
- *(recurrence)* Centralize task recycling logic in model and fix various recurrence (incl. cancellation, until, smart-syntax) bugs
- *(recurrence)* Use local date for all-day search floor to prevent skipping occurrences ( https://github.com/trougnouf/cfait/discussions/5#discussioncomment-15652213 )
- *(android)* Explicitly follow redirects (fix some Android connection issues, reported by yknip)
- *(android)* Fix Android 13 timezone issue reported by busterkeaton
- *(gui)* Retain scroll position when yanking a task
- *(sync)* Handle fatal 400/403/415 errors and duplicate CREATEs in journal sync, unblocking stuck queues
- *(sync)* Reconstruct missing HREF in Update actions to prevent PUT / 403 errors
- *(ci)* Fix Android rolling release
- *(android)* Resolve infinite loading in TaskDetailScreen by using direct task lookup
- *(android)* Restore custom redirect logic but more secure, https://codeberg.org/trougnouf/cfait/issues/28
- *(gui)* Ensure tasks from all visible calendars are shown in the task list
- *(windows)* Force server-side decorations on Windows 10 (fixes cursor shifting issue reported by busterkeaton) and add --force-csd launch option
- *(gui)* Hide tasks from disabled calendars (reported by busterkeaton)
- *(android)* Color past due-dates red for all-day tasks
- *(sorting)* Fix priority inheritence in paused sub-tasks
- *(android)* Fix android client initialization
- *(android)* Restore settings panel scroll
- *(pkg)* Fix Arch cfait-git PKGBUILD's pkgver
- Fix deletion from recovery calendar and hide recovery and trash local calendars when empty
- *(sort)* Propagate sort value from sub-tasks to parents
- Show timer in task list when there is no provided time estimation (GUI/TUI)

### 💼 Other

- Implement UID-based upsert for imports and auto-repair duplicates on load ( https://github.com/trougnouf/cfait/issues/8 )
- *(android)* Handle coroutine cancellation gracefully
- Replace calendar with collection wording in CLI

### 🚜 Refactor

- Centralize view logic (per-client shadowing logic -> Task::resolve_display_properties)
- Optimize TaskStore perf (O(1) lookups) and centralize visibility logic
- Decompose Task god struct
- Modularize sync logic
- Transition from global AppPaths to AppContext
- Transition from global AppPaths to AppContext (everywhere)
- Switch from custom redirect.rs to tower_http::follow_redirect
- Centralize task logic into a new shared controller
- Refactor client sync logic, consolidate CLI help

### 📚 Documentation

- Self-document config file
- Switch from title case to sentence case and replace the term "calendar" with "collection"

### ⚡ Performance

- Optimize event deletion speed

### 🎨 Styling

- Make overdue date(time) red in task list (suggested by Kursti)
- Syntax highlighting search queries and +cal/-cal ( https://codeberg.org/trougnouf/cfait/issues/24 )
- *(android)* Contrasting tag colors ( https://codeberg.org/trougnouf/cfait/issues/27 )
- *(GUI, TUI)* Dim completed & canceled tasks, add strikethrough_completed advanced config (suggested by busterkeaton)
- *(windows)* Embed application icon (reported by busterkeaton)

### 🧪 Testing

- Android rolling release is built only on successful tets
## [0.4.9] - 2026-01-28

### 🚀 Features

- *(store)* Group tags (and sort them) in a case-insensitive way in the tags list (requested by Christian Meixner)
- Add a (weighted) random task selector ( https://codeberg.org/trougnouf/cfait/issues/17 )
- *(randomizer)* Only pick from is:ready tasks
- *(sorting)* Sort done/canceled tasks by most recently done/canceled first
- *(core)* Send user agent to CalDAV server (suggested by Geoffrey Frogeye)
- *(android)* Add export all data debug option
- *(core)* Detect and reject non-VTODO collections
- *(core)* Move tasks rejected by the CalDAV server to a local recovery calendar
- *(android)* Remember tags and locations when coming back from a task's details
- *(recurrence)* Switch from respawning to recycling + regeneration (compatibility with other clients, https://github.com/trougnouf/cfait/discussions/5 )
- Make yanked task clippy/sticky (GUI, TUI)
- *(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 )
- Condense start-due datetime in task list when a task has the same date but different times
- Link done recurrence snapshots to their parent

### 🐛 Bug Fixes

- *(rfc5545)* Clamp priority to 9 ( https://codeberg.org/trougnouf/cfait/issues/22 )
- *(android)* Show local timezone (not UTC) in tasks list ( https://codeberg.org/trougnouf/cfait/issues/23 )
- *(android)* Add imePadding s.t. keyboard does not hide bottom of settings screen ( https://codeberg.org/trougnouf/cfait/issues/23 )
- *(recurrence)* Preserve both start and due date(time) in recurrence
- *(migration)* Ensure that tasks are present on the server before deleting them from the local store
- *(core)* Propagate newly created href to journal and guard empty DELETE
- *(android)* Ensure task migration message does not repeatedly come up
- *(gui)* Fix auto-scroll (focus to current task) in filtered view
- Fix increase/decrease priority action
- *(recurrence)* Remove COMPLETED timestamp on recurring task recycling ( https://github.com/trougnouf/cfait/discussions/5 )
- *(tui)* Ensure tags are not cropped; use visual width instead of char count ( https://codeberg.org/trougnouf/cfait/issues/26 )

### 📚 Documentation

- Add disroot as a CalDAV provider

### 🎨 Styling

- *(android)* Tighter task list layout ( proposed by busterkeaton )
- *(android)* Fix spacing of loading/spinning icon
## [0.4.8] - 2026-01-20

### 🚀 Features

- *(tasks)* Implement time estimation ranges (e.g. ~10m-3h) with compatible search logic
- *(gui)* Initial work on keyboard shortcuts ( https://codeberg.org/trougnouf/cfait/issues/9 )
- *(gui)* Towards keyboard shortcuts
- *(gui)* Expandable description field with scroll bar
- *(android)* Parse new alias definitions in task input bar
- *(gui)* Double click to edit a task ( https://codeberg.org/trougnouf/cfait/issues/9 )
- *(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 )
- *(tui)* Support horizontal scrolling in the description editor and multi-byte characters ( https://codeberg.org/trougnouf/cfait/issues/14 )
- *(config)* Differentiate between corrupted and missing config files ( https://codeberg.org/trougnouf/cfait/issues/13 )

### 🐛 Bug Fixes

- *(android)* Maintain keyboard after adding task and jump to task instantly instead of with animation
- *(recurrence)* Preserve task UID on cancellation to prevent duplication
- *(tui)* Restore onboarding ( https://codeberg.org/trougnouf/cfait/issues/13 )
- *(gui)* Load iced_aw fonts to render correct icons in color picker (reported by beh bah)
- *(android)* Disable keyboard autocorrect for login fields and enable url / password mode ( https://codeberg.org/trougnouf/cfait/issues/15 )
- *(android)* Fix cursor position in new task field and adjust size of task description field when keyboard is out
- *(tests)* Properly isolate all write tests in a temporary directory (reported by Geoffrey Frogeye)
- *(model)* Fix stuck recurring tasks by normalizing AllDay/EXDATE calculations to UTC
- *(gui)* Auto-scroll to task (linked or up/down)

### ⚡ Performance

- Pre-calculate and cache is_blocked status and parent attributes (fixes O(N^2) rendering lag)

### 🎨 Styling

- Use consistant style for start - due date(time) (hourglass_empty - hourglass_full), avoid identical start/due date(time) repetitions
- *(gui)* Restore calendar icon for due date(time) when it's the only date(time) shown

### ⚙️ Miscellaneous Tasks

- *(android)* Bump min SDK to 28 (Android 9) due to uniffi v0.31 update
- Move Cargo.lock update to every release and disable check
## [0.4.7] - 2026-01-13

### 🚀 Features

- Show start date (if not yet started) in tasks list
- Add ^@ syntax (sets both start and due date(time)). sorting: if parent is canceled/paused/done, use that for the whole group
- Implement multi-select filtering and focus for tags & locations, make the clear icon always visible, improve UI and make it consistent between GUI and Android
-  feat: implement multi-select filtering and focus for tags & locations and make the clear icon always visible on Android (feature parity with GUI)

### 🐛 Bug Fixes

- Ignore Release KeyEvents (fixes doubled characters on Windows reported by Christian Meixner
- *(adapter)* Use X-ESTIMATED-DURATION for all-day tasks to fix RFC 5545 / iCalendar standard compliance
- *(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

### 📚 Documentation

- Confirm MacOS compatibility and add CONTRIBUTING.md file

### 🎨 Styling

- *(gui)* Improve tags list UI
- *(gui)* Remove empty space between title bar and input bar
## [0.4.6] - 2026-01-11

### 🚀 Features

- *(gui)* Navigate back to tasks list after moving a task
- *(sorting)* Sort task and its sub-task(s) according to the first sort_rank of the whole group
- *(sorting)* Propagate more tie-breaker fields from sub-tasks
- *(gui)* Ensure resize handles are available in every panel
- *(parser)* Parse time in recurrences
- *(calendar)* Move completed tasks to the time they were done (and add undated done tasks)

### 🐛 Bug Fixes

- Moving a task no longer leaves the old calendar event
- *(windows)* Avoid spawning a console window with the GUI ( https://codeberg.org/trougnouf/cfait/issues/8 )
- Fix respawn logic and timezone handling for recurring tasks (reported by Antoine Bargel)
- *(android)* Correct cursor position in high DPI screens
- Fix legacy data migration and floating time parsing for all-day tasks
- *(recurrence)* Fix respawn logic and timezone handling for recurring tasks (for realz this time)

### 🚜 Refactor

- *(gui)* Reduce theme repetition, rm fragile manual count and position-dependent code

### 📚 Documentation

- *(readme)* Update F-Droid link to com.trougnouf.cfait

### 🎨 Styling

- *(gui)* Add a bunch of themes
- *(gui)* Improve themes
- *(gui)* Add Random theme and make it the default
- *(gui)* Switch to fastrand randomness generator
- *(gui)* Add two rounded corners
- *(gui)* Allow server-side decorations with --force-ssd flag ( https://codeberg.org/trougnouf/cfait/issues/11 )
- 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)
- *(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 )
- *(gui)* Only show calendar+++ when not in calendar list view. chore: update screenshots

### ⚙️ Miscellaneous Tasks

- *(flatpak)* Add changelog to future releases
- *(flathub)* Add release notes, categories, keywords, controls
- Update rust licenses
## [0.4.5] - 2026-01-06

### 🚀 Features

- Allow canceling single occurrence of recurring task
- Allow grace period before pushing tasks with a future date in the future/bottom bin
- *(gui)* Make window draggable in the settings and help panels
- Improve Android related-tasks navigation
- Show related-task icon in the tasks list (Android, GUI)
- *(android)* Add jump back up shortcut button
- Allow default sorting priority > 9

### 🐛 Bug Fixes

- Test concurrency issue
- *(android)* Rm dead scroll zone in Settings > Manage calendars

### 📚 Documentation

- *(installation)* Mention MacOS binaries provided by Martin Stut and Flatpak Linux binaries
- *(readme)* Add Android build instructions

### 🎨 Styling

- *(gui)* Merge local calendars and data management settings

### ⚙️ Miscellaneous Tasks

- *(android)* Rename com.cfait to com.trougnouf.cfait
- *(flathub)* Attempt auto-release
- Fix prepare_release.py
- Fix flathub-release CI script
## [0.4.3] - 2026-01-05

### 🚀 Features

- Add import ics local store function and warn Android users about upcoming name change
- Allow opening ics files from outside the app. Show Android migration warning max. once a day.
- Allow changing default priority for sorting ( https://github.com/trougnouf/cfait/discussions/3 )

### 🐛 Bug Fixes

- *(android)* Local store backward compatibility: add missing #[serde(default)] to Task fields

### 📚 Documentation

- *(comments)* Add a short descriptive header to each source file
- *(comments)* Comment on possible required cache / local store version bumps (and bump cache version)

### ⚙️ Miscellaneous Tasks

- *(flathub)* Update org.codeberg.trougnouf.cfait.yml per request and automate prepare_release
- *(flathub)* Rename to com.trougnouf.Cfait
- *(flatpak)* Try to auto-update
- *(flathub)* Update cargo-sources.yml
- *(flathub)* Fix linting issues
- Prep for v0.4.3 release (last before com.cfait to com.trougnouf.cfait migration on Android)
## [0.4.2] - 2026-01-03

### 🐛 Bug Fixes

- *(parser)* Restore RFC5545 duration compliance (use custom tag for DUE+DURATION)

### 💼 Other

- Add filesystem permission for app data directory

### ⚙️ Miscellaneous Tasks

- Update Flatpak manifest for v0.4.1 release
- Set GUI as default command for Flatpak
## [0.4.1] - 2026-01-03

### 🚀 Features

- *(tui)* Implement custom snooze (and change default snooze durations from 15m,1h to 1h,1d)
- Include sub-tasks in search results when parent matches
- *(sorting)* Sort started tasks like standard tasks (due date then priority), replace is:ongoing with is:started
- *(android)* Allow pressing enter to edit a task's title
- *(local)* Support multiple local collections
- Support manual #blocked tag, move blocked tasks away from bins 1,2,3
- *(ui)* Click on a linked task to jump to it (GUI, TUI (L), Android)
- *(gui)* Decouple exit button from scrollable area in settings and help
- *(android)* Make url and geo icons more accessible (new action in tasks list and task details)
- *(parser)* Parse "until" (date(time)) and "except" (date(time), month, year, comma-separated) in recurrence. Fix timezone issue.

### 🐛 Bug Fixes

- *(android)* Show canceled tasks with the correct checkbox (previously appeared as done)
- *(priorities)* Per https://github.com/trougnouf/cfait/discussions/3
- Move tasks between calendars
- *(android)* Force visibility on write calendar
- *(android)* No longer showing disabled calendars when moving a task from the description screen
- *(sorting)* Treat paused tasks like unstarted tasks
- *(parser)* Fix some parser recurrence edge cases

### 🎨 Styling

- *(help)* Add hugicon in help header (GUI, Android)
- *(help)* Add more hugicons (GUI, Android)

### ⚙️ Miscellaneous Tasks

- Add 10" tablet screenshots, complete Cargo.toml exclude
- Prepare for release v0.4.1
## [0.4.0] - 2025-12-30

### 🚀 Features

- *(search)* Add work mode ("is:ready") suggested by Martin Stut, relative start time ("^<2d"), or not set (append !, e.g. "^<2d!")
- Calendar integration
- Export local store to ics

### 🐛 Bug Fixes

- *(Local)* Add migration path to avoid catastrophic data loss (reported by montherlant)

### ⚡ Performance

- *(calendars, migration)* Implement concurrent calendar sync with Android WorkManager support

### 🎨 Styling

- *(gui)* Show dependency tree even in search mode
- *(calendar)* Event description <- put task description before managed event warning
## [0.3.14] - 2025-12-29

### 🚀 Features

- Sub-locations (e.g. @@home:office, like sub-tags)
- Location-based aliases (e.g. @@aldi:=#groceries)
- Alias shadowing: not showing alias expansions in tasks list view
- Add generic related-to relationships
- *(tui)* Show yank and its actions in the main help bar

### 🐛 Bug Fixes

- Multiple relationships issue
- *(tui)* Restore priority color in tasks list (regression)
- *(tui)* Allow editing long titles with horizontal scrolling

### 📚 Documentation

- Fix reminder wording (not an alarm atm)
- Update screenshots to upcoming v0.3.14

### ⚡ Performance

- Eliminate disk I/O on every action, excessive cloning in hierarchy, and redundant sidebar recalculation

### 🎨 Styling

- Don't show sub-task's location in the tasks list when it is the same as its parent's
- *(tui)* Align tags to the right
- *(tui)* If a task title is too long, truncate it... and repeat it in the description
- *(tui)* Show title in the description only if it does not fit in the tasks list

### ⚙️ Miscellaneous Tasks

- Prepare for flathub release
## [0.3.13] - 2025-12-28

### 🚀 Features

- Add core logic for all-day/specific-time events, reminders, and alarm snoozing
- Add reminder UI elements
- Implement TUI and GUI notifications (rem:TIME), and fix(sync): robustly handle MOVE conflicts and no-op moves (otherwise journal could get stuck)
- Implement configurable auto-reminders and fix parsing for rem:, today, and tomorrow
- *(reminders)* Implement Android notifications, fix GUI snooze, enhance reminder parser (incl. rem:in TIME, relative to now)
- *(android)* Migrate alarms to WorkManager and add alarm index cache
- *(notifications)* GUI and TUI wait until 1st network sync attempt is done before firing notifications
- *(android notifications)* Add two snooze options
- *(android)* Add "Create subtask" action
- Parse time units in snooze settings presets
- *(parser)* Add rem:in ... and rem:next ...

### 🐛 Bug Fixes

- Invisible(->pushed back) tasks after cutoff date
- Local time shift
- *(android)* Working Android notifications, still need to fix Dismiss issue
- *(android)* Dismissing reminders is taken into account right away
- *(android)* Snooze

### 📚 Documentation

- Update documentation with due:datetime
- Update GUI screenshot to v0.3.13

### 🎨 Styling

- Do not show timestamp for all-day tasks
- Show appropriate time unit when editing a task
- Properly syntax-highlight rem:date time
- *(settings)* Move "Manage calendars" right below the connexion settings (Android & GUI)

### ⚙️ Miscellaneous Tasks

- Rm strip and debug from Arch packages
## [0.3.12] - 2025-12-24

### 🚀 Features

- *(sort)* Prioritize urgent tasks and make urgency rules configurable (priority and days to overdue).
- *(parser)* Handle escape character

### 🐛 Bug Fixes

- *(android)* Use i32 for token indices to match Kotlin/JVM Int type

### 🚜 Refactor

- *(android)* Unify syntax highlighting with core Rust parser via UniFFI.

### ⚙️ Miscellaneous Tasks

- Remove dead code
## [0.3.11] - 2025-12-24

### 🚜 Refactor

- *(parser)* Improve smart input engine for robust date, recurrence, and metadata parsing. (Fixes bug where short dates were parsed as start dates.)

### 🧪 Testing

- Improve test coverage
## [0.3.10] - 2025-12-24

### 🐛 Bug Fixes

- *(parser)* Correct recurrence parsing, fix highlighting, and add comprehensive README compliance tests

### 📚 Documentation

- Fix README syntax error & minor update
- Add Matrix chatroom to README
## [0.3.9] - 2025-12-23

### 🚀 Features

- *(android)* Improve (multi-words) highlighting, add pull down to refresh, add move in task menu, add description indicator in tasks list
- *(ui)* Add clickable URL/Geo icons and randomized location tab
- *(ui)* Count only active tasks (header)

### 🐛 Bug Fixes

- *(cache)* Add versioning to invalidate stale caches on upgrade
- *(geo)* Allow entering spaced geocoordinates (e.g. geo:53.046880, -121.105042)

### 🎨 Styling

- *(android)* Only show Move if there are multiple calendars
- Add some random icons to the mix, include Android
## [0.3.8] - 2025-12-23

### 🚀 Features

- *(core/ui)* Add locations, URLs, recursive aliases with cycle detection, quoted string support, safer alias syntax (:=), and filter views by location
- *(search)* Implement implicit location search and jump-to-location navigation

### 🐛 Bug Fixes

- *(journal)* Skip ghost pruning for local calendar to prevent data loss
- *(core)* Optimize sync, fix GUI inputs, and improve alias expansion
- *(core)* Resolve timezone and multi-word date parsing bugs

### ⚡ Performance

- Compact journal on sync

### 🎨 Styling

- Add location icons and color
## [0.3.7] - 2025-12-21

### 🚀 Features

- *(ui)* Refine smart input syntax highlighting (different color per type), add (optional) "in" date keyword, set default cutoff to 2 months

### 🐛 Bug Fixes

- *(sync)* Correctly journal offline task moves to prevent duplication
- *(android)* Preserve tag filter and sidebar state on back navigation using rememberSaveable

### 🚜 Refactor

- *(core)* Centralize journal application logic, improve sort consistency, and fix sync race conditions

### 📚 Documentation

- Mention Baikal in README since it has been explicitly tested
## [0.3.6] - 2025-12-21

### 🚀 Features

- *(client)* Add Digest authentication and fix Android SSL

### 📚 Documentation

- *(android)* Published on F-Droid
## [0.3.5] - 2025-12-20

### 🚀 Features

- *(ui)* Decorate @^special statements and #tags in real time in the input bar
- *(android)* Press once to search

### 🐛 Bug Fixes

- *(android)* Default sortMonths = 2 months
- *(android)* Decorate only valid special statements in the smart bar

### 📚 Documentation

- Add suggested CalDAV providers, TOC to the README
## [0.3.4] - 2025-12-19

### 🚀 Features

- *(android)* Improve offline remote calendar handling, show current state of connexion
- *(ux)* Refactor settings for instant save, adjust layout, and enhance Android options

### 🐛 Bug Fixes

- *(sync)* Resolve journal deadlock by handling 412 conflict on task creation

### ⚙️ Miscellaneous Tasks

- *(skip)* Fix overeager app store inclusion in README
## [0.3.3] - 2025-12-19

### 🚀 Features

- *(android)* Add loading state to task save (visual feedback) and handle coroutine cancellation
- *(workflow)* Implement pause/stop states
- *(android)* Implement optimistic UI updates for instant task creation and modification
- *(android)* If no calendars are setup (Local-only) then default sideview to Tags rather than Calendars
- *(android)* Show task duration

### 🐛 Bug Fixes

- Resolve infinite sync loop and implement optimistic save with auto-scroll to task in Android
- *(tui)* Fix double flipping logic

### 📚 Documentation

- Update README & TUI help w/ start/stop/pause shortcuts
- Update screenshots to upcoming v0.3.3

### 🎨 Styling

- *(gui)* Make RustyDark the default theme
- *(tui)* Dynamic details height

### ⚙️ Miscellaneous Tasks

- Prepare for release v0.3.3
- Disable signed commit
## [0.3.2] - 2025-12-18

### 🐛 Bug Fixes

- Don't include uniffi/mobile for TUI/GUI desktop builds
- *(android)* Replace target_os = "android" with feature = "mobile"

### 💼 Other

- *(android)* Rm i686-linux-android

### 📚 Documentation

- Update README

### ⚙️ Miscellaneous Tasks

- *(android)* Generate static Android version number for F-Droid release
- Auto-generate changelogs (fastlane and CHANGELOG.md), backfill previous ones
- Add Cargo.lock
## [0.3.1] - 2025-12-17

### 🐛 Bug Fixes

- *(android)* Prevent crash on "Show all calendars" toggle on first run by handling missing config file
- *(android)* Prevent sync conflicts by writing post-sync ETag/sequence back to store

### ⚙️ Miscellaneous Tasks

- Prepare for 0.3.1
## [0.3.0] - 2025-12-17

### 🚀 Features

- *(ux)* Unhide and activate default calendar on startup
- *(core)* Implement hierarchical tag filtering and sidebar aggregation
- *(gui)* Retroactively apply new aliases to existing tasks
- *(core)* Support inline alias definition (#a=#b,#c) with retroactive application in TUI and GUI
- *(core)* Implement tag inheritance for child tasks (GUI+TUI) and hide redundant tags in the GUI task list, fix GUI yank button
- *(gui)* Add promote button for child tasks
- *(workflow)* Auto-clear yanked state after linking (child/block) in GUI and TUI
- *(ui)* Implement priority gradient
- Fix alias expansion for sub-categories, hide expanded alias tags in list view
- *(ui)* Display CalDAV calendar colors in TUI and GUI
- *(android)* Implement native Android client using Jetpack Compose and UniFFI
- *(android)* Polish UI with NerdFonts, add calendar selection, and automate asset copying
- *(android)* Implement sidebar tabs (Calendars/Tags), advanced search, and task hierarchy
- *(android)* Optimize startup with optimistic caching, fix tag layout, add back navigation, and implement task action menu
- *(android)* Compact UI layout, custom state checkbox with (currently wrong) calendar colors, blocked-by details, and expanded action menu
- *(android)* Align UI styling with desktop (calendar colors, state backgrounds, priority text) and fix icon alignment
- *(android)* Streamline task creation and editing workflow
- *(android)* Add an arrow_right / isolate button next to each calendar
- *(gui)* Refine task row layout for title and tags
- *(android)* Auto-scroll to newly created task, tag jumping, migration tool, write calendar color
- *(android)* Add help screen (under settings)
- *(tui)* Add auto-jump on create, fix search focus, wrap long titles, reduce sidebar/list ratio
- *(gui)* Improve search UX, task row layout, and add auto-scroll
- *(gui)* Add keyboard shortcuts for focusing input fields ("/" to search, "a" for smart input)

### 🐛 Bug Fixes

- Allow starting newly created tasks
- *(store)* Ensure index update on recurring task creation and network sync
- *(core)* Prevent data loss by routing alias updates through journal instead of direct cache overwrite
- *(core)* Fail loudly on corrupted local storage instead of overwriting with empty state
- *(android)* Align play icon, implement disabled calendars in settings, and resolve kotlin deprecation warnings
- *(core)* Prevent data loss by correcting relation parsing and sync ETag propagation
- *(android)* Implement full sync on connect/refresh
- *(core)* Fix Android locking, sync consistency, and model logic
- *(client)* Prevent data loss by verifying journal queue head identity before removal
- *(mobile)* Resolve lifecycle, timezone, and data safety issues
- *(Android)* Fix build
- *(core)* Resolve persistent ghost tasks by forcing sync on empty ETags
- *(core)* Recycle recurring tasks on completion to prevent duplication
- *(ci)* Downgrade artifact actions to v3 for forgejo compatibility
- *(ci)* Grant builder user permissions for AUR generation
- *(android)* Correct kotlin dsl syntax for signing config
- *(android)* Add R8 rules for JNA/UniFFI
- *(ci)* Use absolute path for keystore to fix signing

### 💼 Other

- *(release)* Add signed Android build pipeline and prepare for v0.3.0
- *(refactor)* Centralize release logic in arch container and build in parallel

### 🚜 Refactor

- *(core)* Deduplicate task logic and centralize path resolution
- *(gui&core)* Restore edit functionality and optimize store lookups
- *(android)* Split UI into submodules and implement task relationships

### 📚 Documentation

- Add support options and improve help
- Improve TUI help
- Add Android screenshot

### 🎨 Styling

- Convert UI text and documentation from title case to normal case capitalization
- *(android)* Modify header with active calendar info, compact tag list layout, and add sidebar footer logo
- *(gui)* Highlight task on hover, display details on click
- *(android)* Reduce space between tasks, highlight current task, allow long press for more actions
- *(android)* Dark background icon
- *(gui)* Make recurrence_icon gray
- *(gui)* Implement theme switcher with custom 'Rusty Dark' option
- *(gui)* Rusty Dark: make selector yellow-amber instead of default blue
- FeatureGraphic v1
- FeatureGraphic v2

### 🧪 Testing

- *(model)* Add unit tests for ICS relation parsing and case-insensitivity
- *(sync)* Add sync safety and concurrency tests

### ⚙️ Miscellaneous Tasks

- *(android)* Update versions
- Update licenses
- Fastlane stuff for Android release
- *(android)* Update gradle to 9.2, build apk in next release
## [0.2.9] - 2025-12-08

### 🚀 Features

- *(sync)* Preserve recurring task exceptions written by other clients
- *(gui)* Click on tag jumps to it
- *(gui)* Help on hover

### 💼 Other

- *(forgejo)* Build once for different Linux releases

### ⚡ Performance

- *(sync)* Optimize VTODO parsing and exception preservation to speedup startup from empty cache

### 🎨 Styling

- *(gui)* Always align tags to the right and try to share a line with the title
- *(gui)* Switch calendar highlight from blue to amber
- *(gui)* (deterministically) randomize tag color
- *(gui)* Switch Calendars/Tags header from blue to amber
- *(gui)* Move logo/icon to the sidebar when space permits

### ⚙️ Miscellaneous Tasks

- Switch to iced 0.14.0 (dev->release)
## [0.2.8] - 2025-12-08

### 🚀 Features

- *(ui)* Implement smart tag navigation, search result jumping, and implicit tag matching
- *(sync)* Implement safe 3-way merge for 412 conflicts to reduce duplicate tasks
- *(core)* Safe unmapped property handling
- *(gui)* Implement optimistic cache loading for instant startup

### 🐛 Bug Fixes

- *(gui)* Reset child creation mode when unlinking/canceling the parent reference
- *(tui)* Use default color for default text for white bg terminals compatibility
- *(core)* Optimize unmapped property parsing and ensure backward compatibility

### 📚 Documentation

- *(readme)* Mentian Mint

### 🎨 Styling

- *(gui)* "select" active task

### ⚙️ Miscellaneous Tasks

- Update CHANGELOG
## [0.2.7] - 2025-12-06

### 🚀 Features

- *(ui)* Display active task count next to each tag in GUI and TUI sidebars
- *(core)* Implement Start Date (DTSTART) with smart input parsing, sorting, and recurrence compatibility
- *(tui)* Implement PageUp/PageDown scrolling for sidebar lists
- *(tui)* Re-use '*' keybinding to clear all selected tags in tags view
- *(gui)* Add 'Clear All Tags' button to sidebar
- *(GUI)* Add help screen, use icons for help and settings
- *(gui)* Implement custom draggable and resizable client-side decorations
- *(gui)* Make the entire window header draggable

### 🐛 Bug Fixes

- *(tui)* Enable cursor movement in task creation input field
- *(gui)* Swap delete/cancel icon positions and adjust icons padding to prevent cropping

### 🚜 Refactor

- *(gui)* Decompose monolithic update logic into domain-specific modules
- *(gui)* Upgrade to iced 0.14-dev for native window resizing support

### 📚 Documentation

- Add icon to README

### 🎨 Styling

- *(tui)* Improve highlight contrast and right-align tags for readability
- Update logo (nerd-fonts cat -> Font Awesome, CC-BY-SA-4.0, license in LICENSES/nerd-fonts)
- Cleanup new logo
- Fix cropped cat outline
- *(gui)* Use ghost buttons for task actions and highlight destructive operations
- *(gui)* Add padding right of scroll bar to separate it from resizing
- *(gui)* Reduce vertical spacing between header and task list
- *(gui)* Reduce spacing between input bar and 1st task

### ⚙️ Miscellaneous Tasks

- Fix Cargo.toml (too many keywords)
## [0.2.5] - 2025-12-04

### 🚀 Features

- *(workflow)* Streamline child task creation from parent in GUI and TUI
- *(tui)* Add toggleable, dynamic, and comprehensive help screen
- *(ui)* Implement auto-jump to new tasks (TUI & GUI) and better scrollable logic
- *(GUI)* Tab between fields in the settings window

### 🚜 Refactor

- Split model, client, and gui view into granular submodules
- Modularize TUI logic into network actor and event handlers
- *(core)* Decouple search matching logic from store to model domain

### 🎨 Styling

- *(GUI)* Allow main content area to expand with window width
## [0.2.4] - 2025-12-03

### 🚀 Features

- *(core)* Implement robust file locking with fs2, atomic journal processing, and isolated tests to prevent data corruption
- *(ui)* Enable multiline task descriptions in GUI and TUI (Alt+Enter), fix visual corruption in TUI, and propagate sync errors

### 💼 Other

- *(release)* Add cmake and nasm to fix windows cross-compilation and fix shell script syntax

### 📚 Documentation

- Move main mirror from github to codeberg
## [0.2.3] - 2025-12-01

### 🚀 Features

- *(core)* Implement layered calendars, disabled state, and robust tui visibility toggles

### 🐛 Bug Fixes

- *(gui)* Add close button to error banner and clear on success
- *(sync)* Implement safe conflict resolution (copy on 412), atomic file writes, and atomic move operations
- *(gui)* Preserve active calendar on refresh, always inject local calendar, and show duration metadata for untagged tasks
- *(model)* Treat no priority as implied normal priority (5) for sorting

### 🚜 Refactor

- *(sync)* Implement CTag caching, optimize fetch, and fix journal atomicity bugs

### ⚡ Performance

- *(net)* Constrain concurrent calendar fetches to 4 to prevent server overload
- *(core)* Implement bounded concurrency and delta sync for task fetching

### ⚙️ Miscellaneous Tasks

- Add licenses
## [0.2.2] - 2025-11-29

### 🐛 Bug Fixes

- *(sync)* Handle 412 Precondition Failed by refreshing ETag and retrying

### 🎨 Styling

- [GUI] align tags with titles

### ⚙️ Miscellaneous Tasks

- Update changelog
## [0.2.1] - 2025-11-29

### 🚀 Features

- *(security)* Implement secure TLS with insecure toggle and improve connection UX
- *(config)* Add setting to hide specific calendars from view
- *(core)* Implement moving tasks between calendars in GUI and TUI
- *(core)* Introduce a local-only calendar with an option to migrate tasks to a CalDAV server
- *(journaling)* Implement offline task queue and UI indicators
- *(gui)* Embed Symbols Nerd Font, iconify UI and compact task-row layout

### 📚 Documentation

- Replace #urgent with !<4 in Advanced search example
- Installation instructions (Arch, deb, Windows, generic-Linux, Rust crate)
- Update README

### 🎨 Styling

- *(gui)* Overhaul task row with a space-saving layout

### ⚙️ Miscellaneous Tasks

- Auto-add changelog to release notes
## [0.2.0] - 2025-11-27

### 💼 Other

- Initial implementation of ongoing & canceled tasks (Need custom checkboxes)
- Custom checkmark icons (V,>,X)
- Implement GTD workflow and advanced search parser
- Lint
- Lint
- More linting and update screenshots for next release

### 🎨 UI/UX Improvements

- [TUI] Show [E]dit description in help bar
- [TUI] Refresh on error and add refresh key
- [GUI] add remove dependency button(s) in the task description

### ⚙️ Miscellaneous Tasks

- Automate changelog with git-cliff
## [0.1.9] - 2025-11-26

### 💼 Other

- Update funding sources in FUNDING.yml
- Mention sorting
- Preparing for crate release
- Preparing for crate release
- Default to True
- Set cutoff date s.t. timed tasks are not always on top (default: 6-months). Add scroll wheel in GUI settings.
- Tags were saved with comma / not fully compatible w/ other clients
- Change hide_completed_in_tags setting to hide_fully_completed_tags (i.e. hide the tags, not the tasks within)

### 🎨 UI/UX Improvements

- [GUI] remove "<" and ">" buttons (replaced w/ Link functionality)
## [0.1.7] - 2025-11-25

### 💼 Other

- Rename GUI window
- Attempt Windows build (in next release)
- Groundwork to support RFC 9253 (DEPENDS-ON) in model
- Support RFC 9253 (DEPENDS-ON) in both TUI and GUI, and improve children dependency handling
- Add options=('!lto') to Arch PKGBUILD (fix issues when lto is enabled in makepkg.conf)
- Support aliases (set in the config file and/or in the GUI settings)
- Add subtitle
- Manually allow multiple RELATED-TO fields (not supported by icalendar library)

### 📚 Documentation

- Mention categories

### 🎨 UI/UX Improvements

- [TUI] add space after [ ]
- [TUI] support RFC 9253 (DEPENDS-ON)
- [GUI] set window name in Linux only (fix Windows build?)

### 🧪 Testing

- Add unit tests
## [0.1.6] - 2025-11-24

### 💼 Other

- Rm warning
- Add icon, replace milk w/ cat food
- [README] add screenshots
- [README] add screenshots
- [README] use raw Wikimedia Commons URL for screenshots; gitlab does not support redirects
- Add cfait-git Arch PKGBUILD
- Uncomment icon
- Fix missing icon in opened application
- Refactor GUI, add support for #categories
- Refactor TUI
- Fix hide completed tasks in tab view, fix GUI save settings
- Fix bug where completed tags remained selected but invisible / hiding all tasks. Add uncategorized tag
- Fix TUI build error on CI, update screenshots

### 🎨 UI/UX Improvements

- [GUI] add Tags (categories) view (pulling from all calendars), add settings to hide completed tasks
- [TUI] Browse by category/tags, restore cache
- [GUI] fix cutoff tags AND/OR text

### 🧪 Testing

- Add unit tests
## [0.1.5] - 2025-11-22

### 💼 Other

- Fix github release
- Optimize binary size
- Add onboarding prompt
- Rename fairouille->cfait, automate Arch Linux PKGBUILD
- Add .deb release

### 🎨 UI/UX Improvements

- [TUI] respond to --help
## [0.1.4] - 2025-11-22

### 💼 Other

- Add license file, bump version
- Add Arch Linux PKGBUILD
- Rustache -> ferouille
- Rustache -> ferouille
## [0.1.3] - 2025-11-22

### 💼 Other

- Add recurrence support, recurrence symbol, and expand relative dates
- Add caching (fast inter-calendar switching)

### 🧪 Testing

- Add unit tests to model.rs
## [0.1.2] - 2025-11-21

### 💼 Other

- Allow viewing + editing description in GUI + TUI
- Bump version up to 0.1.2

### 🎨 UI/UX Improvements

- [GUI] Add priority / subtask / edit / delete buttons
- [GUI] show tasks description
## [0.1.1] - 2025-11-21

### 💼 Other

- Initial commit (working TUI with create/add/complete/delete, sorted by date+priorities
- Add multiple calendars support (from the same server)
- Add README
- Rename to rustache
- Add edit support
- Support moving cursor
- Prep for GUI
- Basic GUI (single-calendar)
- Update README

### 🎨 UI/UX Improvements

- [TUI] add scrolling
- [GUI] multi-calendar support
- [GUI] sub-tasks support
- [TUI] sub-tasks support
- [GUI] search function
- [GUI] show date. Bump to version 0.1.1
