- Add a default subcommand that executes rules based on configuration.
- Load rules and configuration to determine execution behavior.
- Implement dry run functionality to prevent unintended actions.
- change ConfigRoot to use RootBase enum for different root types (Crate, Home, Root, None)
- add full_path method to resolve the full path based on RootBase and path
- update tests to use full_path to string conversion for assertions
- introduce ConfigBuilder struct for constructing ClientConfig instances
- add methods to ConfigBuilder for setting various configuration parameters
- implement a build method to create the ClientConfig instance
- add a default implementation for ConfigBuilder
- enhance ClientConfig with persist_path for token persistence
- update ClientConfig::new_from_configuration to use config_root.full_path()
- add ClientConfig::persist_path() to report the full path to the file to persist tokens
- introduce regex-based parsing for config root strings
- support 'h', 'r', and 'c' prefixes for home, root, and crate paths
- add tests for parsing different config root types
- introduce ConfigRoot enum to represent different configuration file locations
- implement Display trait for ConfigRoot to provide string representation
- add parse method to determine ConfigRoot type based on prefix (h, r, c)
- adds `ClientConfig` struct for managing Gmail client settings
- supports loading credentials from environment variables or a JSON file
- provides methods to access the application secret and configuration root
- load configuration from a file
- use config crate for config loading
- allow overriding config with environment variables
- set default credential path
- fix error handling for config loading
- remove delete_messages and trash_messages functions from GmailClient struct
- these functions were commented out and not used in the current implementation
- Refactor log_message_subjects to log_messages for clarity
- Simplify date and subject retrieval in log_messages
- Use MessageSummary's list_date_and_subject for logging
- Elide subject in MessageSummary for consistent display
- 【Refactor】: Move `set_parameters` function from `Message` trait implementation for `DeleteCli` to `MessageCli` to avoid duplication.
- 【Feature】: Add `Delete` action to `MessageAction` enum to allow direct deletion of messages.
- 【Cleanup】: Remove `delete_cli.rs` and `message_trait.rs` as their functionalities are now integrated into `message_cli.rs`.
- 【Refactor】: Moved trash functionality into the message subcommand for better organization.
- 【Refactor】: Removed the separate `trash_cli` module.
- 【Feature】: Added a `Trash` action to the `MessageAction` enum.
- 【Refactor】: Modified `MessageCli::run` to handle the new `Trash` action.
- improve subcommand organization for better user experience
- implement display_order attribute for logical ordering of subcommands
- introduce next_help_heading for grouping subcommands under meaningful titles
- extract parameter setting logic into a separate function `set_parameters`
- consolidate label adding, query setting, and max results setting into `set_parameters`
- rename `run` to `get_messages` for clarity
- add methods for retrieving labels, query, and max_results
- refactor `execute_action` to use `batch_trash` and `batch_delete`
- remove individual message trashing/deletion in favor of batch processing
- streamline action execution based on `self.execute` flag
- implements RuleProcessor trait for GmailClient
- adds functionality to find rules, prepare and execute actions on messages
- supports batch delete and trash operations