SkillAgentSearch skills...

Cfait

Take control of your TODO list

Install / Use

/learn @trougnouf/Cfait
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Cfait -- Take control of your TODO list

<p align="center"> <strong>Cfait is a powerful, fast and elegant task manager. (CalDAV and local, GUI, TUI, and Android clients) </strong> </p> <p align="center"> <a href="https://codeberg.org/trougnouf/cfait/releases"><img src="https://codeberg.org/trougnouf/cfait/badges/release.svg" alt="Releases"></a> <a href="https://f-droid.org/packages/com.trougnouf.cfait/"><img src="https://img.shields.io/f-droid/v/com.trougnouf.cfait.svg" alt="F-Droid"></a> <a href="https://codeberg.org/trougnouf/cfait/actions"><img src="https://codeberg.org/trougnouf/cfait/badges/workflows/test.yml/badge.svg" alt="Test status"></a> <a href="https://codeberg.org/trougnouf/cfait/src/branch/main/LICENSE"><img src="https://img.shields.io/badge/license-GPLv3-gray.svg" alt="License"></a> <a href="https://liberapay.com/trougnouf/donate"><img src="https://img.shields.io/liberapay/patrons/trougnouf?label=donate" alt="Donate through Liberapay" /></a> </p>

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.

<strong>Table of contents</strong>

</details>

<a name="features"></a>

✨ features

  • Smart Input: Type your tasks naturally. Buy cookies @tomorrow @@bakery !1 is parsed instantly into a high-priority task due tomorrow at the bakery.
  • Hierarchical Tags & Locations: Organize deeply with tags like #dev:cfait or #cooking:cookies, and locations like @@home:office or @@store:aldi:downtown.
  • Dependencies: Block tasks until others are done. You can create parent/child tasks or loose dependencies <small>(RFC9253)</small> (or manually block with #blocked).
  • Recurrence: Powerful repetition rules for habits and recurrent tasks.
  • Inline Aliases: Define shortcuts on the fly; typing #gardening:=#fun,@@home or @@aldi:=#groceries,#shopping 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 (~2h), Cfait automatically calculates and visualizes your progress (e.g. [1h / ~2h]).
  • Cross-Platform: Runs on Linux, Android, Windows, and MacOS.

<a name="screenshots"></a>

📸 screenshots

| Desktop (GUI & TUI) | Mobile (Android) | | :---: | :---: | | Cfait GUI Screenshot<br>The Graphical Interface in v0.5.2 <small>(history)</small><br><br>Cfait TUI Screenshot<br>The Terminal Interface in v0.5.0 <small>(history)</small> | Cfait Android Screenshot<br>The Android client in v0.5.2 <small>(history and more)</small> |

<a name="installation"></a>

🚀 installation

Configuration

Self-documenting config file. See also: https://codeberg.org/trougnouf/cfait/wiki/Configuration

<a name="linux"></a>

🐧 Linux

  • Flatpak: Available on Flathub
  • Arch Linux (AUR): yay -S cfait (or cfait-git)
  • Debian/Ubuntu/Mint: Download the .deb file from the releases page. (Req. Ubuntu 24.04+ / Mint 22+ / Debian 13+)
  • Generic: Download the pre-compiled .tar.gz binary tarball from the releases page. (Req. glibc 2.39, e.g. Fedora 40+)

<a name="android"></a>

📱 Android

  • <a href="https://f-droid.org/packages/com.trougnouf.cfait/">F-Droid</a>
  • <a href="https://play.google.com/store/apps/details?id=com.trougnouf.cfait">Google Play</a>
  • APK: Download the latest universal APK from the releases page.

<a name="windows"></a>

🪟 Windows

  • Download the .zip archive from the releases page. Contains both cfait.exe (TUI) and cfait-gui.exe (GUI).

<a name="macos"></a>

🍎 MacOS

  • Download pre-compiled binaries provided by Martin Stut on https://static.stut.de/cfait-macos/

<a name="from-source-rust"></a>

⚙️ From Source (Rust)

Desktop (TUI/GUI)

Requires Rust (latest stable version recommended).

# Install TUI only
cargo install cfait

# Install GUI
cargo install cfait --features gui --bin cfait-gui

Replace cfait with . to build locally. Add --debug to build in debug mode. (Much faster compilation, much slower execution.)

Android

Requires Android NDK and cargo-ndk.

# Set up Android NDK environment variables
export ANDROID_NDK_HOME=/path/to/android-ndk
export ANDROID_NDK_ROOT=/path/to/android-ndk

# Build native libraries for Android architectures (these are the release libs that go into the APK)
cargo ndk -t aarch64-linux-android -t x86_64-linux-android \
  -o ./android/app/src/main/jniLibs build --release --lib --features mobile

# Build a host (local) library for UniFFI bindgen to read
# NOTE: The UniFFI metadata extractor can fail on release builds that are stripped or
# use aggressive LTO. To reliably generate Kotlin bindings, build the host library in
# debug mode and let uniffi-bindgen read `target/debug/libcfait.so`.
cargo build --lib --features mobile

# Generate Kotlin bindings using the host/debug library
# This does NOT change the Android release libs you built above (those are still packaged
# into the APK). The debug host library is used only locally so bindgen can extract metadata.
cargo run --features mobile --bin uniffi-bindgen generate \
  --library target/debug/libcfait.so \
  --language kotlin --out-dir ./android/app/src/main/java --config uniffi.toml

# Build APK using Gradle (packages the release native libraries built earlier)
cd android
./gradlew assembleRelease

The APK will be in android/app/build/outputs/apk/release/.

<a name="smart-input-syntax"></a>

⌨️ 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 | 1 is highest (critical), 9 is lowest. 5 is normal. | | Due Date | @ / due: | When the task must be finished. | | Start Date | ^ / start: | When you plan to start (hides from "active" views until then). | | Recurrence | @ / rec: | How often the task repeats. | | Duration | ~ / est: | Estimated time (~30m, ~1h, ~1h-2h). | | Tag | # | Categories. Use : for hierarchy (e.g. #gardening:tree_planting). | | Location | @@ / loc: | Where the task happens. Supports hierarchy like tags (e.g. @@home:office, @@store:aldi:downtown). | | Reminder | rem: | Set an notification. (e.g. rem:10m, rem:8am, rem:tomorrow 9:00). | | Calendar Event | +cal / -cal | Override calendar event creation (per-task). +cal forces event creation, -cal prevents it. |

You can also type url: (e.g. url:https://trougnouf.com), geo: (e.g. geo:53.046070, -121.105264), and desc: (e.g. desc:"a description" or desc:{une description})

Escaping: If you need to use special characters literally in your task summary (like #, @, !), prefix them with a backslash: \#not-a-tag \@not-a-date.

Date & Time Formats

You can use absolute ISO dates or natural language relative offsets.

  • Keywords: today, tomorrow
  • Offsets: 1d (days), 1w (weeks), 1mo (months), 1y (years).
    • @2d = Due in 2 days.
    • ^1w = Start in 1 week.
    • ^@tomorrow = Start and Due tomorrow.
    • The word "in" is optional: @2 weeks works the same as @in 2 weeks
  • Weekdays: @friday, @monday, etc. (or with "next": @next friday)
    • Both forms work identically - they always go to the next occurrence of that weekday
  • Next period: @next week, @next month, @next year
    • Goes to the next occurrence of that time period

Recurrence

Recurrence rules determine when the next task is crea

View on GitHub
GitHub Stars76
CategoryDevelopment
Updated1d ago
Forks0

Languages

Rust

Security Score

100/100

Audited on Apr 4, 2026

No findings