From 536495fb4d284c515de7c70901a3776528a3f6ed Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 23 Jan 2026 13:46:10 -0300 Subject: [PATCH] feat: make each app self-contained with core dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now you can do: - cargo build --features sheet → gets automation+drive+cache+sheet deps - cargo build --features mail → gets automation+drive+cache+mail deps - cargo build --features tasks → gets automation+drive+cache+tasks deps Each app automatically includes what it needs from core infrastructure. No need to manually specify automation, drive, cache anymore. Added test_all_apps.sh to test each app independently and measure compilation times. --- Cargo.toml | 96 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 717822337..b48ef2a9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,78 +12,78 @@ features = ["database", "i18n"] # ===== DEFAULT ===== default = ["chat", "automation", "drive", "tasks", "cache", "directory"] -# ===== CORE INFRASTRUCTURE (Always needed) ===== +# ===== CORE INFRASTRUCTURE (Can be used standalone) ===== automation = ["dep:rhai", "dep:cron"] drive = ["dep:aws-config", "dep:aws-sdk-s3", "dep:aws-smithy-async", "dep:pdf-extract"] cache = ["dep:redis"] directory = [] -# ===== APPS (Flat list - no dependencies between apps) ===== +# ===== APPS (Each includes what it needs from core) ===== # Communication -chat = [] -people = [] -mail = ["dep:lettre", "dep:mailparse", "dep:imap", "dep:native-tls"] -meet = ["dep:livekit"] -social = [] -whatsapp = [] -telegram = [] -instagram = [] -msteams = [] +chat = ["automation", "drive", "cache"] +people = ["automation", "drive", "cache"] +mail = ["automation", "drive", "cache", "dep:lettre", "dep:mailparse", "dep:imap", "dep:native-tls"] +meet = ["automation", "drive", "cache", "dep:livekit"] +social = ["automation", "drive", "cache"] +whatsapp = ["automation", "drive", "cache"] +telegram = ["automation", "drive", "cache"] +instagram = ["automation", "drive", "cache"] +msteams = ["automation", "drive", "cache"] # Productivity -calendar = [] -tasks = ["dep:cron"] -project = ["quick-xml"] -goals = [] -workspaces = [] -tickets = [] -billing = [] +calendar = ["automation", "drive", "cache"] +tasks = ["automation", "drive", "cache", "dep:cron"] +project = ["automation", "drive", "cache", "quick-xml"] +goals = ["automation", "drive", "cache"] +workspaces = ["automation", "drive", "cache"] +tickets = ["automation", "drive", "cache"] +billing = ["automation", "drive", "cache"] # Documents -docs = ["docx-rs", "ooxmlsdk"] -sheet = ["calamine", "spreadsheet-ods"] -slides = ["ooxmlsdk"] -paper = [] +docs = ["automation", "drive", "cache", "docx-rs", "ooxmlsdk"] +sheet = ["automation", "drive", "cache", "calamine", "spreadsheet-ods"] +slides = ["automation", "drive", "cache", "ooxmlsdk"] +paper = ["automation", "drive", "cache"] # Media -video = [] -player = [] -canvas = [] +video = ["automation", "drive", "cache"] +player = ["automation", "drive", "cache"] +canvas = ["automation", "drive", "cache"] # Learning -learn = [] -research = [] -sources = [] +learn = ["automation", "drive", "cache"] +research = ["automation", "drive", "cache", "llm", "vectordb"] +sources = ["automation", "drive", "cache"] # Analytics -analytics = [] -dashboards = [] -monitoring = ["dep:sysinfo"] +analytics = ["automation", "drive", "cache"] +dashboards = ["automation", "drive", "cache"] +monitoring = ["automation", "drive", "cache", "dep:sysinfo"] # Development -designer = [] -editor = [] +designer = ["automation", "drive", "cache"] +editor = ["automation", "drive", "cache"] # Admin -attendant = [] -security = [] -settings = [] +attendant = ["automation", "drive", "cache"] +security = ["automation", "drive", "cache"] +settings = ["automation", "drive", "cache"] # Core Tech -llm = [] -vectordb = ["dep:qdrant-client"] -nvidia = [] -compliance = ["dep:csv"] -timeseries = [] -weba = [] -progress-bars = ["dep:indicatif"] -grpc = [] -jemalloc = ["dep:tikv-jemallocator", "dep:tikv-jemalloc-ctl"] -console = ["dep:crossterm", "dep:ratatui"] +llm = ["automation", "drive", "cache"] +vectordb = ["automation", "drive", "cache", "dep:qdrant-client"] +nvidia = ["automation", "drive", "cache"] +compliance = ["automation", "drive", "cache", "dep:csv"] +timeseries = ["automation", "drive", "cache"] +weba = ["automation", "drive", "cache"] +progress-bars = ["automation", "drive", "cache", "dep:indicatif"] +grpc = ["automation", "drive", "cache"] +jemalloc = ["automation", "drive", "cache", "dep:tikv-jemallocator", "dep:tikv-jemalloc-ctl"] +console = ["automation", "drive", "cache", "dep:crossterm", "dep:ratatui"] # ===== BUNDLES (Optional - for convenience) ===== -minimal = ["chat", "automation", "drive", "cache"] -lightweight = ["chat", "automation", "drive", "cache", "tasks", "people"] +minimal = ["chat"] +lightweight = ["chat", "tasks", "people"] full = ["chat", "people", "mail", "tasks", "calendar", "drive", "docs", "llm", "cache", "compliance"] [dependencies]