New Features
- Added uv as the primary package manager and introduced new system packages awww, apple-fonts, swappy, and wl-clipboard.
- Removed many redundant Python packages from the install script.
Enhancements
- Replaced Pillow-based QR code detection with GdkPixbuf, eliminating the python-pillow dependency.
- Fixed a typo in the import (`ConfigServic` → `ConfigService`) and corrected service imports.
- Updated the application launch to use `uwsm app -- uv run main.py` for uv-managed execution.
Bug Fixes
- Resolved import typo that prevented proper ConfigService initialization.
- Adjusted QR-code decoding logic to correctly handle image pixel channels, improving robustness.
Why: replaced emoji-based weather icons with a dynamic SVG mapping, introduced WEATHER_ICON_MAP, updated format_weather_data and Weather class to use icon names and svg_file, removed unused constants and clarified day/night variant handling.
- New Features
- Added WEATHER_ICON_MAP linking weather codes to SVG identifiers and supporting night variants.
- Updated format_weather_data to return icon_name and use svg_file for dynamic icon resolution.
- Modified Weather widget to set condition label via dynamic SVG files instead of emoji.
- Enhancements
- Implemented day/night icon variant logic using optimistic naming based on known variants.
- Removed unused constant imports and simplified label update logic.
- Improved error handling with explicit fallbacks for missing weather fields.
- Bug Fixes
- Fixed potential missing icon fallback by using .get with default values.
- Corrected label assignment order to match new data structure.
Add missing icons for caps lock and keyboard layout to enhance settings UI.
New Features
- Add caps-lock-off.svg, caps-lock.svg, and keyboard-layout.svg.
The import is now performed lazily within load_config to avoid early import errors and unnecessary loading during module initialization.
- Enhancement: Lazy loading of configuration service
- Bug Fix: Prevent ImportError when services.config is unavailable during startup
- rename `#osd` selectors to `#osd-container` for better encapsulation
- add `min-width: 180px` to the container definition
- update muted styling rules to use `#osd-container.muted` instead of element‑specific classes
- replace deprecated `#brighntess-icons.muted` with `#osd-image.muted`
- clean up stray braces and whitespace in the stylesheet
Enhancements
- Replace bare `except:` with `except Exception:` in multiple modules- Cast step calculation to `int` for consistent type
- Simplify `get_battery_icon_file` to return a string directly
- Use `get_todo_service()` instead of module-level `todo_service` throughout todo widget
- Remove unused `"zen": "zen-browser"` mapping entry
Bug Fixes
- Prevent bare exception swallowing by catching `Exception` explicitly
- Ensure proper cleanup of timer IDs and other resources
- Delete unused modules/osdd components
New Features
- None
Introduce a new OSDWindow implementation, expose keyboard layout configuration, and modernize dependency handling and helper utilities.
- **New Features**
- Added `keyboard_layouts` list (`us`, `np`) to `config.json`
- Created `OSDWindow` class and updated `main.py` to use it
- Introduced new service modules (`battery`, `brightness`, `capslock`, `network`, `mpris`, `todo`, `modus`) and expanded `services/__init__.py`
- Added `CommandResult` and `run_command` helper in `utils/functions.py`
- **Enhancements**
- Upgraded numerous dependencies to newer versions and switched `fabric` to a git source
- Replaced bare `except:` with `except Exception:` in `WiFiPasswordDialog`
- Improved type hints (`NamedTuple`, `TypeVar`) and refactored JSON file helpers
- Added property notifications for battery percentage, state, and presence
- **Bug Fixes**
- Fixed incorrect return type annotation in `read_json_file`
- Corrected tick‑handler logic to avoid double registration
- Properly notify listeners on battery property changes
- Ensured proper exception handling and cleanup in utility functions
New Features
- Introduced OSD functionality integrated into the application.
Enhancements
- Removed unused stylesheet imports from main.css and corrected the stylesheet path to `styles/main.css`.
- Adjusted the lambda in the network service for consistent method invocation.
Bug Fixes
- Ensured `on_access_point_activated` is properly called when the active access point changes.
Remove dead code and redundant blank lines, simplify timer interval selection, and ensure proper realization handling. This improves readability and prevents potential runtime issues.
New Features
-
Enhancements
- Refined timer interval calculation for clarity
- Consolidated easing function stubs for consistency
Bug Fixes
- Fixed missing realize handler connection in SlideRevealer
- Eliminated stray blank line that could affect indentation
- Refactor dock update loop to use explicit parentheses and improve readability
- Fix closure capture in OTP plugin action to correctly pass current code
- Remove redundant lambda wrapper in player label binding
- Update logger messages with full exception context
- Adjust imports and naming for consistency across modules
- Minor code style updates and whitespace cleanup
New Features
- Introduce `debounce` async decorator to delay coroutine execution until a specified delay elapses.
- Add `sync_debounce` wrapper that uses GLib timeout for synchronous functions, supporting immediate execution and repeat counts.
New Features
- Introduce WEATHER_GRADIENT_MAP and WEATHER_EMOJI_MAP for condition‑to‑emoji mapping.
- Add SYSTEM_UPDATE_INTERVAL, WEATHER_UPDATE_INTERVAL, CALENDAR_UPDATE_INTERVAL constants and extend cache timeouts.
- Implement CpuInfo and RamInfo widgets with real‑time CPU percentage, temperature, and RAM usage display.
Enhancements
- Extend LOCATION_CACHE_TIMEOUT to 7 days.
- Integrate progress bar updates for CPU and memory usage.
- Organize desktop widget manager with separate top‑left and bottom‑right windows.
Bug Fixes
- None
The Deskwidgets module is now imported, instantiated, and integrated into the main application, expanding desktop widget capabilities.
New Features
- Added Deskwidgets import and instantiation.
- Integrated Deskwidgets into the Application instance.
Enhancements
- Removed stale comments and activated the component.
Bug Fixes
- None
Commented out deprecated keybinds and removed an unused layerrule to clean up configuration and avoid accidental triggers.
New Features
-
Enhancements
- Streamlined layerrules and removed unused definitions.
Bug Fixes
- Avoided accidental execution of stale keybinds.
The about.py module was deprecated and replaced by newer implementations; its removal cleans up dead code.
New Features
- No new feature introduced
Enhancements
- No functional enhancements
Bug Fixes
- No bug fixes
- New Features
- Add Bluetooth and Wi‑Fi icon sets for applet UI.
- Enhancements
- Introduce scalable SVG assets with color scheme support.
- Bug Fixes
- None
New Features
- Introduce `get_battery_icon_file` to generate battery icons based on percentage and charging state.
- Add fallback Bluetooth control using `rfkill` when Fabric Bluetooth fails.
Enhancements
- Refactor layout management with `_rebuild_layout_from_config` and dynamic indicator instantiation.
- Replace large `EnergyModeButton` class with lightweight utility functions.
- Simplify notification icon updates using `dynamic_file`.
Bug Fixes
- No explicit bug fixes; changes focus on feature additions and refactoring.
Migrate import statements to align with updated fabric utilities.
- New Features
- Enhancements
- Consolidate imports from gi.repository into fabric.utils for cleaner dependency management.
- Bug Fixes
The changes introduce a new GioDBusHelper class for D-Bus interactions and expand utils/functions.py with utilities for timeout parsing, cursor hover handling, animated scale widgets, and SVG loading, improving functionality and maintainability.
- New Features
- Add GioDBusHelper for method calls and signal subscription.
- Enhancements
- Add parse_timeout_string and replace placeholder set_process_name implementation.
- Implement AnimatedScale widget and related utilities.
- Provide svg_file helper with dynamic style updates.
- Bug Fixes
- None
Introduce a new config.json, modernize CSS for dock, battery, and about windows, and clean up obsolete styling.
New Features
- Add `config.json` with wallpaper directory, dock position, and UI flags.
- Create `styles/constant.css` for shared color definitions.
- Rename and style `styles/battery.css` with new visual rules.
- Update hover background in `styles/about.css`.
Enhancements
- Remove deprecated dock CSS to simplify the stylesheet.
- Streamline layer window setup and input handling.
Bug Fixes
- Resolve hover styling conflict in about.css.
- Ensure consistent theming across new style files.
New Features
- Added `set_process_name` function to set the process name via `prctl`.
Enhancements
- Replaced `loguru` logger import with `fabric.utils.logger` and removed the unused dependency.
- Added explicit imports of `ctypes`, `html`, and `json` for clarity and future use.
Bug Fixes
- No bug fixes included in this change.
Add explicit pyproject.toml with project metadata, dependency groups, and uv lock configuration.
- New Features
- Introduce pyproject.toml defining package name, version, description, and runtime dependencies.
- Declare dependencies in a structured list and development groups.
- Enhancements
- Consolidate and clean up imports in lock.py and main.py.
- Replace hard‑coded logger disable entries with targeted fabric module names.
- Streamline Application initialization by removing unused components.
- Bug Fixes
- Resolve missing imports that caused NameError.
- Correct import ordering for static analysis compliance.
- Align dependency versions with uv.lock for reproducibility.
Remove unused auth module and associated screenshot/OQR code logic.
Clean up network import statements and unused dependencies.
Minor cleanup in todo service to eliminate trailing whitespace.
New Features
- None
Enhancements
- Refactored network module imports.
- Streamlined todo service by removing dead code.
Bug Fixes
- None
- Enhancements: Refactored import section to remove unused modules, added explicit parentheses in hash generation for clarity, and updated debug logging messages for cache cleanup.
- Bug Fixes: Ensured consistent encoding of hash inputs and improved error handling in image dimension hashing.
- Style: Applied consistent formatting and spacing throughout the notification module.