Skip to content

Feature: Interactive Setup, Modular Refactoring, and Self-Update (v2.2.6)#4

Merged
Apoll011 merged 24 commits intomasterfrom
develop
Jan 30, 2026
Merged

Feature: Interactive Setup, Modular Refactoring, and Self-Update (v2.2.6)#4
Apoll011 merged 24 commits intomasterfrom
develop

Conversation

@Apoll011
Copy link
Copy Markdown
Owner

This PR introduces a significant overhaul of the initial user experience and internal configuration management. Key highlights include a new interactive CLI setup flow, a more robust resource resolution system for skills/languages, and a self-update mechanism.

Key Changes

Features

  • Interactive Setup: Added a step-by-step boot sequence for language selection, device profiles, and NLU settings.
  • Dialogue Capability: Introduced a none option (now the default) to allow users to explicitly disable dialogue features.
  • Self-Update: Integrated the self_update crate to allow the CLI to fetch updates directly from GitHub.
  • Resource Resolvers: Implemented dynamic ResourceResolver logic to fetch skills and languages from configurable remote sources (e.g., GitHub).

Refactoring & Architecture

  • Module Restructuring: Moved logic into dedicated src/cli, src/data, and src/setup modules for better maintainability.
  • Config Management: Centralized configuration via RuntimeContext and implemented config_dir helpers to handle debug and release paths consistently.
  • Dependency Cleanup: Cleaned up Cargo.toml, renamed the package to avicore, and optimized crate dependencies (added content_resolver, removed unused reqwest instances).

Bug Fixes & Improvements

  • Intent Logging: Added detailed error logging during engine dataset updates and training to improve NLU debugging.
  • Setup Logic: Fixed redundant prompts (e.g., Dashboard updates) and improved async handling during online setup.
  • Path Handling: Standardized on &Path over &PathBuf in function signatures for idiomatic Rust performance.

Comparison & Versioning

Current Version: 2.2.6

Breaking Changes: The CLI argument config no longer has a default value; setup now triggers automatically if no config directory is detected.

…ures and logs potential errors when setting the engine dataset, training, and reusing the intent engine, improving error visibility and debugging
…' option for dialogue capability, allowing users to explicitly disable all dialogue features. Updates configuration, `DialogueCapability` enum, and action handling. Changes the default dialogue capability to 'none'.
…teractive setup process for Avi, allowing users to configure language, device profile, network topology, and NLU settings during the initial boot sequence. Adds new UI components for prompts and selections
…Adds `config_dir` functions for debug/release builds and expands initial setup folders to include `lang` and `skills`.
…s `config_path` to `RuntimeContext` and removes the redundant `skill_path`. Implements a `config_dir()` helper function for consistent access to the configuration directory based on debug/release builds. Adds `dialoguer` dependency for future interactive setup. Updates skill manager and skill path resolution to use the new `config_dir()`. Adds initial setup logic to create default config files
…CLI argument to `Option<String>` and removes its default value, allowing it to be unset.Refactors `Setup` methods to accept a `PathBuf` for the config directory, making setup more explicit and allowing custom paths.Initializes the setup process only if the config directory does not exist, preventing unnecessary re-creation.Corrects indentation for `none` enum in `settings.config`.
…Adds `device_type` enum setting to configuration. Refactors `Setup` struct to be instantiated and manage its own config path, moving setup checks and operations to instance methods. Integrates API for NLU host check. Improves skill download progress
…type` and `gateway` CLI arguments for `start` command.Configures device type and CAN gateway status directly from `settings.config` instead of CLI.Adds `can_gateway` boolean setting to `settings.config`.
…t!` macro call for string literal and replaces `clone()` with `to_path_buf()` for `PathBuf`. Also simplifies `has_nlu` error checking
….tomlMoves the `Setup` struct and its related functions from `src/utils.rs` to a new `src/setup.rs` module.Updates `src/main.rs` to import `Setup` from the new module.Refactors `Cargo.toml` to:- Rename package from `AviCore` to `avicore` for consistency.- Remove redundant `[[bin]]` and `[profile.*]` sections.- Add `content_resolver` dependency.- Update `reqwest` and `tokio` dependencies.Updates log target matching in `src/log.rs` to use `avicore`.Adds config path info to runtime display
…ovider` and `SkillProvider` for robust content management, enabling fetching language files and downloading skills using a `ResourceResolver`. Integrates resource resolvers into `start_avi` and updates setup for online skill download. Also, adds `lang_resolvers` config
…oduces `src/content/getters.rs` to dynamically create `ResourceResolver` instances based on configuration settings. This allows for flexible definition of content sources (e.g., GitHub repositories) directly within `settings.config`.Updates `src/setup.rs` to utilize these resolvers for downloading languages and skills during online setup, making the setup process more configurable and robust.Refactors `src/start.rs` to remove hardcoded resource resolver creation, instead relying on the new `getters` module.Adjusts `lang_resolvers` path in `settings.config` for consistency with the new resolution logic
…Updates `online_setup` in `src/start.rs` to correctly `await` its asynchronous execution. Removes unused `reqwest`, `inquire`, and `termimad` dependencies from `Cargo.toml`. Includes a temporary debug print in `src/setup.rs`.
…tors `get_from_settings` to use `first()` for vector access.Simplifies `LanguageProvider` locale extraction with an `if let` chain.Removes unused `std::ptr::eq` and `ContentError` imports.Adds `#[allow(dead_code)]` to unused struct fields and implementations
…ptUpdates the dashboard download prompt from \"Avicia Dashboard\" to \"Avi Dashboard\". Removes the redundant \"Dashboard Already installed\" message and subsequent \"Check for updates?\" prompt, simplifying the setup flow to only prompt for download if the dashboard is not found
…related files to `src/cli` and data-related files to `src/data` for better organization. Updates imports and removes `.idea` files
…crate to allow the CLI to check for and apply updates from GitHub
@Apoll011
Copy link
Copy Markdown
Owner Author

lgtm :)

@Apoll011 Apoll011 merged commit dd2ac34 into master Jan 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant