- 【Refactor】Move label subcommands (add, list, remove) into separate modules for better organization
- 【Refactor】Rename `LabelCli` to `ListLabelCli`, `AddCli` to `AddLabelCli`, and `RemoveCli` to `RemoveLabelCli`
- 【Refactor】Rename `LabelCommands` to `List`, `Add`, and `Remove`
- 【Refactor】Rename `remove-rule` alias to `rm-rule` and `remove-label` alias to `rm-label`
- 【Feat】Add `ListLabelCli`, `AddLabelCli`, and `RemoveLabelCli` to handle label-related operations
- 【Feat】Update `ConfigCli` to use the new label subcommands and modules
- 【Remove】Remove the `label_cli.rs` file as its functionality is now distributed
- rename `add`, `rm`, and `action` subcommands to `add-rule`, `remove-rule`, and `set-action-on-rule` respectively to improve clarity
- update corresponding modules and structs to reflect the renaming, enhancing code readability and maintainability
- support trash and delete actions for the same label
- add `run_rules_for_action` function to filter rules by action
- update `get_rules_by_label` to `get_rules_by_label_for_action`
- update `find_label` to return a vector of rule ids
- update `remove_rule_by_label` to remove all rules with the label
- introduce `process_in_chunks` for batch operations to respect API limits
- refactor `batch_trash` to use `process_in_chunks` for efficient trashing
- add documentation for `process_in_chunks` explaining chunking and API limits
- introduce `call_batch_delete` to permanently delete messages in chunks
- introduce `call_batch_trash` to move messages to trash in chunks
- refactor `batch_delete` and `batch_trash` to use chunking for large lists
- add constants for `INBOX_LABEL` for clarity
- update documentation to reflect the new chunking approach and api requirements
- Fix the EOL date calculation by using checked_sub_signed to prevent panics
- Add debug logging to track message age, delta, and deadline calculations
- Corrected test case to account for new calculation and added logger to test
- correct a grammatical error in a comment
- add logging for debugging date calculations
- add a new test case for 1032 days to ensure correct calculation
- rename initialise_message_list to initialise_lists for clarity
- update all references to the function with the new name
- the function now initialises both message and label lists
- add initialise_message_list fn to RuleProcessor trait and impl
- ensure rule is only processed on in-scope messages
- call initialise_message_list before processing any labels
- allow `log_messages` to take `pre` and `post` parameters
- this will allow calling functions to format the log output
- add documentation for parameters