[package]
edition = "2024"
name = "cfait"
version = "0.5.6"
build = "build.rs"
exclude = [
".github/*",
".forgejo/*",
".gitignore",
"packaging/*",
"about.hbs",
"about.toml",
"cliff.toml",
"RUST_DEPENDENCIES.html",
"android/*",
"fastlane/*",
"com.trougnouf.Cfait.yml",
"scripts/*",
"cargo-sources.yml",
"LICENSES/*",
"secrets/*",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "cfait"
description = "Powerful, fast and elegant task / TODO manager. (GUI & TUI, CalDAV & local)"
homepage = "https://codeberg.org/trougnouf/cfait"
readme = "README.md"
keywords = [
"caldav",
"todo",
"productivity",
"tui",
"gui",
]
categories = [
"command-line-utilities",
"gui",
"network-programming",
"database",
]
license = "GPL-3.0"
repository = "https://codeberg.org/trougnouf/cfait"
[package.metadata.deb]
maintainer = "Benoit Brummer (Trougnouf) <trougnouf@disroot.org>"
copyright = "2025, Benoit Brummer (Trougnouf)"
license-file = [
"LICENSE",
"4",
]
extended-description = """
Cfait is a powerful yet simple tasks / TODO CalDAV client. (TUI and GUI)
"""
depends = "$auto"
section = "utils"
priority = "optional"
assets = [
[
"target/release/cfait",
"usr/bin/",
"755",
],
[
"target/release/gui",
"usr/bin/cfait-gui",
"755",
],
[
"assets/cfait.desktop",
"usr/share/applications/",
"644",
],
[
"assets/cfait.svg",
"usr/share/icons/hicolor/scalable/apps/cfait.svg",
"644",
],
]
[package.metadata.release]
pre-release-hook = [
"python3",
"scripts/prepare_release.py",
]
[[package.metadata.release.pre-release-replacements]]
file = "packaging/arch/PKGBUILD"
search = 'pkgver=[0-9\.]+'
replace = "pkgver={{version}}"
[package.metadata.android]
version_code = 506
[features]
default = ["tui"]
gui = [
"dep:iced",
"dep:iced_aw",
"dep:rfd",
]
mobile = [
"dep:uniffi",
"dep:uniffi_bindgen",
]
test_hooks = []
tui = [
"dep:ratatui",
"dep:crossterm",
"dep:rpassword",
"dep:tui-markdown",
]
[lib]
name = "cfait"
crate-type = [
"lib",
"cdylib",
]
path = "src/lib.rs"
[[bin]]
name = "cfait"
path = "src/bin/tui.rs"
required-features = ["tui"]
[[bin]]
name = "gui"
path = "src/bin/gui.rs"
required-features = ["gui"]
[[bin]]
name = "inspect_bindgen"
path = "tools/inspect_bindgen.rs"
required-features = ["mobile"]
[[bin]]
name = "uniffi-bindgen"
path = "src/bin/uniffi-bindgen.rs"
required-features = ["mobile"]
[[test]]
name = "alarm_logic"
path = "tests/alarm_logic.rs"
[[test]]
name = "alarm_recurrence_fix"
path = "tests/alarm_recurrence_fix.rs"
[[test]]
name = "alarm_tests"
path = "tests/alarm_tests.rs"
[[test]]
name = "calendar_events_tests"
path = "tests/calendar_events_tests.rs"
[[test]]
name = "client_core"
path = "tests/client_core.rs"
[[test]]
name = "digest_auth"
path = "tests/digest_auth.rs"
[[test]]
name = "discover_calendar"
path = "tests/discover_calendar.rs"
[[test]]
name = "duration_range"
path = "tests/duration_range.rs"
[[test]]
name = "escape_tests"
path = "tests/escape_tests.rs"
[[test]]
name = "export_and_roundtrip_tests"
path = "tests/export_and_roundtrip_tests.rs"
[[test]]
name = "ghost_tasks"
path = "tests/ghost_tasks.rs"
[[test]]
name = "import_tests"
path = "tests/import_tests.rs"
[[test]]
name = "integration_move_flow"
path = "tests/integration_move_flow.rs"
[[test]]
name = "journal_propagation"
path = "tests/journal_propagation.rs"
[[test]]
name = "local_concurrency"
path = "tests/local_concurrency.rs"
[[test]]
name = "local_data_loss"
path = "tests/local_data_loss.rs"
[[test]]
name = "local_duplication_bug"
path = "tests/local_duplication_bug.rs"
[[test]]
name = "local_safety"
path = "tests/local_safety.rs"
[[test]]
name = "locking"
path = "tests/locking.rs"
[[test]]
name = "logic_recurrence"
path = "tests/logic_recurrence.rs"
[[test]]
name = "logic_sorting"
path = "tests/logic_sorting.rs"
[[test]]
name = "parser_regressions"
path = "tests/parser_regressions.rs"
[[test]]
name = "parser_stress"
path = "tests/parser_stress.rs"
[[test]]
name = "rank_propagation"
path = "tests/rank_propagation.rs"
[[test]]
name = "readme_compliance"
path = "tests/readme_compliance.rs"
[[test]]
name = "recurrence_bug_repro"
path = "tests/recurrence_bug_repro.rs"
[[test]]
name = "recurrence_duration_fix"
path = "tests/recurrence_duration_fix.rs"
[[test]]
name = "recurrence_extensions"
path = "tests/recurrence_extensions.rs"
[[test]]
name = "relations_repro"
path = "tests/relations_repro.rs"
[[test]]
name = "rfc5545_duration_compliance"
path = "tests/rfc5545_duration_compliance.rs"
[[test]]
name = "search_hierarchy"
path = "tests/search_hierarchy.rs"
[[test]]
name = "search_operators"
path = "tests/search_operators.rs"
[[test]]
name = "search_tests"
path = "tests/search_tests.rs"
[[test]]
name = "session_roundtrip"
path = "tests/session_roundtrip.rs"
[[test]]
name = "session_tests"
path = "tests/session_tests.rs"
[[test]]
name = "smart_input_extensions"
path = "tests/smart_input_extensions.rs"
[[test]]
name = "smart_input_tests"
path = "tests/smart_input_tests.rs"
[[test]]
name = "store_behavior"
path = "tests/store_behavior.rs"
[[test]]
name = "store_move_task"
path = "tests/store_move_task.rs"
[[test]]
name = "sync_create_conflicts"
path = "tests/sync_create_conflicts.rs"
[[test]]
name = "sync_edge_cases"
path = "tests/sync_edge_cases.rs"
[[test]]
name = "sync_integration"
path = "tests/sync_integration.rs"
[[test]]
name = "sync_safety"
path = "tests/sync_safety.rs"
[[test]]
name = "test_blocked_sorting"
path = "tests/test_blocked_sorting.rs"
[[test]]
name = "test_blocking_index"
path = "tests/test_blocking_index.rs"
[[test]]
name = "test_new_filters"
path = "tests/test_new_filters.rs"
[[test]]
name = "test_start_grace_period"
path = "tests/test_start_grace_period.rs"
[[test]]
name = "tui_network_toggle"
path = "tests/tui_network_toggle.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.base64]
version = "0.22"
[dependencies.camino]
version = "1.0"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.crossterm]
version = "0.29"
optional = true
[dependencies.digest_auth]
version = "0.3"
[dependencies.directories]
version = "6.0"
[dependencies.fastrand]
version = "2.3"
[dependencies.fs2]
version = "0.4"
[dependencies.futures]
version = "0.3"
[dependencies.http]
version = "1.4"
[dependencies.hyper-rustls]
version = "0.27"
features = ["native-tokio"]
[dependencies.hyper-util]
version = "0.1"
features = [
"client",
"client-legacy",
"http1",
"tokio",
]
[dependencies.icalendar]
version = "0.17"
[dependencies.iced]
version = "0.14.0"
features = [
"tokio",
"svg",
"advanced",
"image",
]
optional = true
[dependencies.iced_aw]
version = "0.13"
features = ["color_picker"]
optional = true
[dependencies.isolang]
version = "2.4.0"
features = [
"local_names",
"english_names",
]
[dependencies.libdav]
version = "0.10"
[dependencies.notify-rust]
version = "4"
[dependencies.once_cell]
version = "1.18"
[dependencies.ratatui]
version = "0.30"
optional = true
[dependencies.rfd]
version = "0.17"
optional = true
[dependencies.roxmltree]
version = "0.21"
[dependencies.rpassword]
version = "7.4"
optional = true
[dependencies.rrule]
version = "0.14"
[dependencies.rust-i18n]
version = "3"
[dependencies.rustls]
version = "0.23"
features = [
"std",
"tls12",
]
default-features = false
[dependencies.rustls-native-certs]
version = "0.8"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.strum]
version = "0.28"
features = ["derive"]
[dependencies.sys-locale]
version = "0.3"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.toml]
version = "1.0"
[dependencies.tower]
version = "0.5"
features = ["util"]
[dependencies.tower-http]
version = "0.6"
features = ["auth"]
[dependencies.tower-layer]
version = "0.3"
[dependencies.tower-service]
version = "0.3"
[dependencies.tui-markdown]
version = "0.3"
optional = true
[dependencies.unicode-width]
version = "0.2"
[dependencies.uniffi]
version = "0.31"
features = [
"tokio",
"build",
"cli",
]
optional = true
[dependencies.uniffi_bindgen]
version = "0.31"
optional = true
[dependencies.uniffi_meta]
version = "0.31"
[dependencies.uuid]
version = "1.19"
features = ["v4"]
[dev-dependencies.mockito]
version = "1.7"
[dev-dependencies.serial_test]
version = "3.0"
[dev-dependencies.tokio]
version = "1"
features = ["full"]
[dev-dependencies.uniffi_meta]
version = "0.31"
[dev-dependencies.uuid]
version = "1.19"
features = ["v4"]
[build-dependencies.winresource]
version = "0.1"
[target.'cfg(target_os = "android")'.dependencies.android_logger]
version = "0.15"
[target.'cfg(target_os = "android")'.dependencies.log]
version = "0.4"
[target.'cfg(target_os = "android")'.dependencies.webpki-roots]
version = "1.0"
[target.'cfg(target_os = "android")'.dependencies.zip]
version = "8.1"
[target.'cfg(target_os = "windows")'.dependencies.os_info]
version = "3"
[profile.release]
lto = true
codegen-units = 1
strip = true