- Add comprehensive Operation enum for file/directory operations
- Implement path resolution with h:, c:, r: prefix support
- Create default config and rules file templates
- Add interactive prompts for credential file setup
- Support dry-run mode with detailed operation preview
- Include progress bar for operation execution
- Implement secure file permissions (0600 for credentials, 0700 for tokens)
- Add timestamped backup functionality for existing files
- Support force overwrite and interactive conflict resolution
- Remove unnecessary borrowing where values can be used directly
- Use variables directly in format strings for better readability
- Apply consistent code formatting per rustfmt standards
- All clippy warnings resolved with -D warnings flag
- Code now follows Rust idioms and best practices
- Add token CLI subcommand with export/import operations
- Enable OAuth2 token persistence across clean environments
- Support for containers, CI/CD, and ephemeral compute workflows
- Compress tokens with gzip and encode as base64 for env vars
- Automatic token restoration from CULL_GMAIL_TOKEN_CACHE
- Secure file permissions (600) on restored tokens
- Add comprehensive error handling for token operations
- Update dependencies: base64, flate2, serde_json
This feature enables cull-gmail to run in ephemeral environments
like Docker containers and CI/CD pipelines without re-authentication
by exporting tokens once and restoring them via environment variables.
- Apply cargo fmt to ensure consistent code formatting across CLI modules
- Fix trailing whitespace in documentation comments
- Optimize comment formatting and indentation
- All clippy checks pass with no warnings
- Documentation generates cleanly with strict nightly flags
- All tests continue to pass after formatting changes
- Add extensive module-level documentation explaining rule-based message management
- Document complete rule configuration and execution workflow
- Include comprehensive TOML configuration examples with retention periods
- Add detailed safety features and error handling documentation
- Document subcommand architecture and delegation patterns
- Include practical usage examples for configuration and execution
- Add comprehensive method documentation with operation flows and side effects
- Document automatic configuration fallback and validation systems
- Add extensive module-level documentation for labels_cli with usage examples
- Document complete messages_cli module with Gmail query syntax guide
- Add comprehensive struct and method documentation with safety considerations
- Include detailed parameter explanations and error handling guidance
- Document action types with safety levels and reversibility information
- Add practical usage patterns and safety recommendations
- Include extensive examples of Gmail query syntax and filtering options
- Apply cargo fmt to ensure consistent code formatting
- Fix line wrapping for long assertions and method chains
- Optimize whitespace and indentation
- All clippy checks pass with no warnings
- Documentation generates without warnings on nightly with -Dwarnings
- Add 20 unit tests covering all public API functionality
- Test builder pattern with direct OAuth2 parameters and credential files
- Test configuration loading from Config objects with error conditions
- Test path resolution schemes (home, root, current directory)
- Test configuration priority (direct params vs credential file)
- Test error conditions with proper panic expectations
- Test edge cases: Unicode strings, multiple redirect URIs, optional fields
- Cover accessor methods and method chaining functionality
- Include temporary file testing for credential file loading
- Add detailed module-level documentation with security considerations
- Document all public structs, methods, and their usage patterns
- Include practical examples for builder pattern and configuration loading
- Fix typo in default auth_uri (https;:// -> https://)
- Add security notes for sensitive credential handling
- Document path resolution schemes and configuration directory structure
- Delete src/credential.rs - module was unused in actual codebase
- Remove credential module references from lib.rs exports
- Update documentation to use standard OAuth2 terminology
- Fix CLI docs to reference correct credential_file config
- Application uses ConsoleApplicationSecret directly instead
The custom Credential struct duplicated functionality already
provided by yup_oauth2::ConsoleApplicationSecret. All credential
loading is handled by ClientConfig::new_from_configuration() which
uses the standard OAuth2 types.
- Add 16 unit tests covering serialization/deserialization
- Test JSON parsing with valid, minimal, and invalid inputs
- Verify conversion to yup_oauth2::ApplicationSecret
- Test edge cases: empty fields, Unicode, large data sets
- Add security-focused tests for credential handling
- All tests pass with 100% coverage of public API
- Change add_rule parameter from Option<&String> to Option<&str> for better ergonomics
- Use iterator methods (flat_map, any) instead of manual loops and collections
- Collapse nested if conditions using let-else patterns
- Use format string interpolation instead of separate arguments
- Avoid unnecessary String allocations in label comparisons
- Update CLI code to use as_deref() for Option<String> to Option<&str> conversion
- Update all documentation examples and tests to match new API
- All functionality preserved; API is more idiomatic and efficient
- Replace Option::unwrap() with pattern matching in add_rule label check
- Handle home directory resolution failures with proper Error types
- Add directory creation in save() to ensure parent directories exist
- Replace chrono unwraps with ? operator for date calculations
- Use unwrap_or with sensible defaults for parsing edge cases
- Keep unwrap in test code where immediate failure is desired
- All existing functionality preserved; no API changes
- Add comprehensive test coverage for all Rules public methods
- Test both success and error paths with proper assertions
- Add PartialEq derive to EolAction to enable comparisons in tests
- Include edge cases like duplicate labels and nonexistent IDs
- Mark file system integration tests as ignore to avoid interference