Refactor internal CLI module layout to streamline imports and separate concerns.
- Enhancements
- Consolidated CLI modules into `lapctl::cli` and `lapctl::commands`.
- Updated imports in `main.rs` to use absolute paths.
- Removed redundant module declarations from `main.rs`.
- Made the three helper functions public to allow external usage
- Facilitates reuse of GPU configuration helpers
- No functional changes beyond visibility
Add `info!` logging when a NVIDIA GPU is discovered via `lspci`, enhancing debug visibility. Refactor the `lspci` and `xrandr` command constructions into multi‑line style for consistency and prepare a regex for future AMD GPU name detection.
- New Features: Log GPU detection with `info!` macro.
- Enhancements: Refactor command calls for readability; introduce regex preparation for AMD detection.
- Bug Fixes: None.
New Features
- Introduced `InstallRules` subcommand to install udev rules for rootless operation.
Enhancements
- Streamlined `LimitTdp` and `Limit` enum variants by removing unnecessary wrapper structs.
- Updated command dispatch in `main` to handle the new `InstallRules` variant.
Why: Ensure correct detection of EndeavourOS and provide clearer command building for initramfs.
- New Features: Added explicit multi‑condition detection with proper braces for EndeavourOS handling.
- Enhancements: Improved readability of systemd‑inhibit command construction.
- Bug Fixes: Resolved syntax issue that could cause command generation failure.
Restructure loops, add explicit error handling, improve multi‑line messages, and fix formatting issues.
- Enhancements
- Use explicit braces for error branches to prevent silent failures
- Wrap warning and informational messages in multi‑line `println!` with consistent spacing
- Refactor directory reads for Ideapad fallback to avoid nested `let` bindings
- Improve parsing and formatting of AMD TDP limit output with clear parentheses
- Provide clearer debug logging when writing to threshold files
- Bug Fixes
- Added missing braces around error handling to ensure proper execution flow
- Fixed variable binding scope for `ideapad_entries` to prevent shadowing
- Ensured consistent handling of missing `charge_control_end_threshold` across all entries
no changes.
New Features
- Add per‑CPU power limit commands using Intel RAPL (PL1/PL2) and AMD hwmon constraints
- Expose current TDP limits in status output, distinguishing RAPL, AMD hwmon, or hardware‑managed
- Gracefully handle absence of required sysfs entries
Enhancements
- Extend the power command set with a `LimitTdp` sub‑command
- Add debug logging for limit application attempts
Bug Fixes
- Ensure the command degrades gracefully when hardware does not support dynamic power caps
- New Features
- Implement fan_mode control for Ideapad laptops
- Implement thermal policy control for ASUS laptops via WMI
- Provide cooling command supporting performance, balanced, and quiet profiles
- Enhancements
- Display current cooling profile in `lapctl status` output
- Bug Fixes
- None
Adds a new Cooling command group with selectable fan profiles (Performance, Balanced, Quiet) and updates the CLI and logging accordingly.
- New Features
- Introduce Cooling subcommands for setting thermal management modes
- Implement runtime logic to apply selected fan profiles
- Enhancements
- Extend CLI enum `Commands` to include `Cooling` and dispatch handling
- Refine env_logger formatting to output only `[LEVEL] message`
- Integrate cooling execution into the main command dispatch flow
- Bug Fixes
- No bug fixes introduced in this change
The changes introduce a robust `BatteryCommands::Limit` implementation that validates user‑provided percentages, writes charge‑control thresholds, and gracefully handles Lenovo Ideapad firmware via the `conservation_mode` fallback. The `lapctl status` command is also updated to display battery‑specific details such as capacity, status, and charge limits, replacing the previous generic placeholder.
New Features
- Added `BatteryCommands::Limit` handling with range validation (1‑100) and support for multiple `/sys/class/power_supply` entries.
- Implemented Ideapad fallback using `conservation_mode` to provide custom charge limits or warnings when unsupported.
- Extended `lapctl status` to show charge limit and Conservation Mode for each battery.
Enhancements
- Added root‑privilege check (`assert_root`) and improved error/debug logging throughout the command.
- Restructured directory traversal logic for readability and added `debug!` traces on write failures.
- Re‑used status logic to present battery‑specific information instead of a generic placeholder.
Bug Fixes
- Resolved placeholder status output and proper handling of missing `charge_control_end_threshold` files.
- Ensured correct exit codes and clear error messages for invalid percentage inputs.
The `status` command now displays the current power profile by reading `/sys/firmware/acpi/platform_profile`, giving users insight into power usage.
New Features
- Output power profile status to the console.
Enhancements
- Enriches status command with additional hardware information.
Set CPU scaling governor, energy performance preference, and ACPI platform profile for performance, balanced, and battery‑save modes. Added root assertion and detailed logging.
- New Features: Added set_cpu_governor, set_energy_performance_preference, set_platform_profile; integrated into execute for each PowerCommands variant.
- Enhancements: Use of logging to report successes/failures; fallback to modern scheduler governor (schedutil); validation of CPU sysfs paths.
- Bug Fixes: Guard against missing sysfs entries; improved debugging messages.
Add clap‑based CLI with subcommands (gpu, battery, power, status), verbose flag, and detailed options such as rtd3, use_nvidia_current, etc.
- New Features
- New CLI entry point with complete subcommand hierarchy
- Verbose logging support
- Granular command options for GPU, Battery, Power, Status
- Enhancements
- Replace placeholder hello world with proper logging initialization
- Modularize command implementations into dedicated modules
New Features:
- Battery module with placeholder `info` function.
- GPU module with functions to detect NVIDIA mode, retrieve PCI bus IDs, identify Intel/AMD iGPU vendors, and extract AMD GPU names via xrandr.
Enhancements:
- Add logging for diagnostic messages and runtime checks.
- Include safety validation for external commands (lspci, xrandr) and configuration files.
Added full command implementations for battery limit/status, GPU management (cache operations, mode switching, NVIDIA handling), and a status reporter that prints GPU mode and battery details. Introduced module registration and placeholder power command.
New Features
- Battery command support (`limit`, `status`)
- GPU command suite (`cache-delete`, `cache-query`, `reset`, `reset-sddm`, `integrated`, `hybrid`, `nvidia`)
- Status command output showing GPU mode and battery information
- Power command placeholder scaffold
Enhancements
- Unified command registration via `mod.rs`
- Added root checks and file utilities for cache and config operations
- Integrated logging infrastructure
Bug Fixes: none
Add empty system.rs file in src/utils as a placeholder for future system utilities.
- New Features
- Add system module skeleton
- Enhancements
- Bug Fixes
- New Features
- battery.rs: new command to display battery charge and health
- gpu.rs: new command to query GPU utilization and temperature
- power.rs: new command to show power consumption and mode
- status.rs: new command to provide overall system status overview
Add main entry point and scaffold CLI module to start building the tool.
- New Features:
- Added `src/main.rs` with a hello‑world entry point.
- Added `src/cli.rs` as placeholder for future CLI command definitions.
- Enhancements:
- None
- Bug Fixes:
- None