trougnouf / cfait
Take control of your TODO list
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing trougnouf/cfait in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler view.svg) Cfait is a powerful, fast and elegant task manager. (CalDAV and local, GUI, TUI, and Android clients) --- **Cfait** is a task manager / TODO list for people who want speed, efficiency, and ownership of their data. It connects to any standard **CalDAV** server (Radicale, Xandikos, Baikal, Nextcloud, iCloud, etc.) so your tasks aren't locked inside a proprietary walled garden. It's written in **Rust**, meaning it starts instantly and handles large lists without stuttering. You can use it comfortably from the command line (TUI), on your desktop (GUI), or on the go with the native Android app. It's built "offline-first," so you can keep working without an internet connection and Cfait will sync your changes the next time you go online. Table of contents • ✨ features • 📸 screenshots • 🚀 installation • 🐧 Linux • 📱 Android • 🪟 Windows • 🍎 MacOS • ⚙️ From source (Rust) • ⌨️ Smart input syntax • 🔍 Search & filtering • 📊 Task sorting • 📅 Calendar events for tasks • 💾 Export & backup • 🎮 Keybindings and TUI configuration • 🤗 Support • 🪩 Mirrors • 🛡️ Privacy policy • ⚖️ License • ☁️ CalDAV providers ✨ features • **Smart Input:** Type your tasks naturally. is parsed instantly into a high-priority task due tomorrow at the bakery. • **Hierarchical Tags & Locations:** Organize deeply with tags like or , and locations like or . • **Dependencies:** Block tasks until others are done. You can create parent/child tasks or loose dependencies (RFC9253) (or manually block with ). • **Recurrence:** Powerful repetition rules for habits and recurrent tasks. • **Inline Aliases:** Define shortcuts on the fly; typing or applies the alias immediately and saves it for future use (retroactive). • **Time Tracking & Progress:** Start and pause tasks to automatically track the time spent. By combining this with an estimated duration ( ), Cfait automatically calculates and visualizes your progress (e.g. ). • **Cross-Platform:** Runs on Linux, Android, Windows, and MacOS. 📸 screenshots | Desktop (GUI & TUI) | Mobile (Android) | | :---: | :---: | | .png) The Graphical Interface in v0.5.2 (history)) .png) The Terminal Interface in v0.5.0 (history)) | .png) The Android client in v0.5.2 (history and more)) | 🚀 installation Configuration Self-documenting config file. See also: https://codeberg.org/trougnouf/cfait/wiki/Configuration 🐧 Linux • **Flatpak:** Available on Flathub • **Arch Linux (AUR):** (or ) • **Debian/Ubuntu/Mint:** Download the file from the releases page. (Req. Ubuntu 24.04+ / Mint 22+ / Debian 13+) • **Generic:** Download the pre-compiled binary tarball from the releases page. (Req. , e.g. Fedora 40+) 📱 Android • ** F-Droid ** • ** Google Play ** • **APK:** Download the latest universal APK from the releases page. 🪟 Windows • Download the archive from the releases page. Contains both (TUI) and (GUI). 🍎 MacOS • Download pre-compiled binaries provided by Martin Stut on https://static.stut.de/cfait-macos/ ⚙️ From Source (Rust) Desktop (TUI/GUI) Requires Rust (latest stable version recommended). Replace with to build locally. Remove to build in debug mode. (Much faster compilation, much slower execution.) Android Requires Android NDK and cargo-ndk. The APK will be in . ⌨️ smart input syntax You don't need to click through menus to set the due/start date, length, priority, recurrence, tags, location,... Just type. The clients are self-documenting; the most up-to-date documentation should be provided in the built-in help. Basics | Property | Syntax | Description | | :--- | :--- | :--- | | **Priority** | | 1 is highest (critical), 9 is lowest. 5 is normal. | | **Due Date** | / | When the task must be finished. | | **Start Date** | / | When you plan to start (hides from "active" views until then). | | **Recurrence** | / | How often the task repeats. | | **Duration** | / | Estimated time ( , , ). | | **Tag** | | Categories. Use for hierarchy (e.g. ). | | **Location** | / | Where the task happens. Supports hierarchy like tags (e.g. , ). | | **Reminder** | | Set an notification. (e.g. , , ). | | **Calendar Event** | / | Override calendar event creation (per-task). forces event creation, prevents it. | You can also type url: (e.g. ), geo: (e.g. ), and desc: (e.g. or ) **Escaping:** If you need to use special characters literally in your task summary (like , , ), prefix them with a backslash: . Date & Time Formats You can use absolute ISO dates or natural language relative offsets. • **Keywords:** , • **Offsets:** (days), (weeks), (months), (years). • = Due in 2 days. • = Start in 1 week. • = Start and Due tomorrow. • The word "in" is optional: works the same as • **Weekdays:** , , etc. (or with "next": ) • Both forms work identically - they always go to the **next** occurrence of that weekday • **Next period:** , , • Goes to the next occurrence of that time period Recurrence Recurrence rules determine when the next task is created after you complete the current one. • **Presets:** , , , . • **Custom:** . • * • **Specific weekdays:** or • (every Monday) • (Mon/Wed/Fri) • (Tuesday and Thursday) • Supports short ( ), abbreviated ( ), or full names ( ) • **Auto-dates:** If you specify recurrence without any dates, both start and due dates are automatically set to the first occurrence. • → starts and is due today, repeats daily • → starts and is due next Monday, repeats weekly • For , , etc., the first occurrence is today • For , , etc., the first occurrence is the next matching day • **End Date:** - Sets an end date for the recurrence (RRULE UNTIL). The end date is **inclusive** (the task will occur on that date). • (repeats daily until December 31st) • (repeats every 2 weeks until June 30th) • **Exception Dates:** - Skips specific occurrences. • **Specific dates:** (skips January 20th) • **Comma-separated dates:** (skips multiple dates) • **Weekdays:** or or • **Months:** or (excludes entire months) • **Mixed:** (short and long forms work together) Duration Units Supporte…