- New Features
- Incremented project version to 0.2.0
- Enhancements
- Fixed image reference to use src/assets/modus.png
- Pinned pywayland to exact version 0.4.18
- Added explicit version constraints for new dependencies
- Bug Fixes
- None
- New Features: Added tracking of config/ files and removed stale asset ignores.
- Enhancements: Regenerated uv.lock with updated dependency versions, including cffi and click.
- Bug Fixes: Eliminated ignore rules that could unintentionally exclude new project files.
Introduce helper functions to invoke the primary application and lock entry points, enhancing modularity and testability.
New Features
- run_app(): launches the main application.
- run_lock(): launches the lock module.
Enhancements
- Refactor start.py to isolate command execution logic.
This change adds a mechanism to refresh the todo list dynamically when the underlying service updates, improving UI responsiveness and user experience. It also updates documentation and removes deprecated files.
- New Features:
- Added `_refresh_todos` method to rebuild the todo list when `get_todo_service().todos` changes.
- Introduced `TodoListCapture` class for mouse capture handling of the todo list window.
- Enhancements:
- Updated README with corrected image paths, installation tips, and manual installation commands.
- Introduced `start.py` to launch the application or lock mode.
- Removed deprecated `config.json` and `debug_memory.py`.
- Bug Fixes:
- Fixed lock screen screenshot path in README.
- delete gamemode.sh, hyprpicker.sh, and screen-capture.sh as they are no longer used
- cleanup of dead code simplifies project structure and reduces maintenance overhead
Replace transparent background with theme variable and tidy up CSS.
- New Features
- Enhancements
- Use `@bg` instead of `alpha(#fff, 0.07)`
- Remove unused comment blocks
- Bug Fixes
- Clean up duplicated CSS comments and whitespace
- Removed redundant checks for "unknown" in title and wmclass
- Streamlined cleanup to treat "unknown" as empty strings
- Always call format_app_name with update=True to sync service state
- Improves readability and reduces edge‑case bugs
Changed the default layer used by `create_dropdown_with_capture` from `"bottom"` to `"top"` and updated the call site accordingly. Added safety checks to set `_pointing_widget` on indicator windows when they exist, preventing potential errors when the windows are not created.
- Enhancements:
- Updated default `layer` parameter in `create_dropdown_with_capture` to `"top"`.
- Bug Fixes:
- Ensured `BluetoothIndicator`, `NetworkIndicator`, and `BatteryIndicator` properly assign `_pointing_widget` to their respective buttons when the associated windows are present.
Why: Refactor mouse capture logic to use robust input‑region handling, add support for multi‑click events, and align layer usage with the passed layer parameter; update dropdown to use an Escape keybinding instead of a button‑press hide.
New Features:
- Support button‑press, double‑click, and triple‑click events.
- Introduce `_get_child_window_bounds` helper and window‑local coordinate detection for accurate click placement.
- Add cursor‑feedback styling updates on the trigger widget.
Enhancements:
- Make overlay layer configurable via the passed `layer` argument.
- Replace direct `button-press-event` connection with an Escape keybinding in the dropdown.
- Update imports to use `Gdk` and new utilities (`HyprlandWithMonitors`, `modus_service`).
Bug Fixes:
- Resolve race condition that could hide child windows on external clicks.
- Ensure immediate hide when clicking outside the child window to avoid timing issues.
- Correct click‑inside detection logic and properly consume events.
- Removed outdated TODO comment and placeholder signal definition that caused type conversion errors
- Added Signal with explicit GObject.TYPE_INT64 argument type and correct parameter extraction using .get_int64()
- Ensured reliable emission of seeked signal to upstream DBus handler
- New Features
- Expand search terms to handle reverse DNS and decorated names, increasing match coverage
- Introduce priority‑based matching (exact window_class, name, executable) before falling back to fuzzier containment
- Early exit when no search terms are available
- Enhancements
- Refactor search term collection and normalization for better readability and performance
- Add handling for common wrapper executables to prevent false positives
- Implement fuzzy containment matching for partial name matches
- Bug Fixes
- Fix return logic when search terms are empty to avoid unintended None returns
- Correct order of priority checks to prioritize exact matches over fuzzy matches
- Refactor `_get_icon_from_desktop_file` to ignore file errors and fallback to the default icon.
- Replace regex‑based lookup in `_get_desktop_file` with normalized search IDs and explicit filename matching.
- Add support for matching `StartupWMClass`/`Name` fields within desktop files.
Enhancements
- Improve icon theme lookup in `_compositor_find_icon` with suffix handling and direct matches.
- Add defensive checks for empty `app_id` and exception handling throughout.
Bug Fixes
- Handle exceptions when reading desktop files and log errors gracefully.
This test validates that MprisPlayer correctly emits the `seeked` signal with both small and large value ranges, using a mocked DBus helper to avoid runtime DBus dependencies.
- New Features:
- Add `scratch/test_mpris_fix.py` to test signal emission edge cases.
- Enhancements:
- None
- Bug Fixes:
- None
New Features
- Introduce a random ticket mechanism to prevent rapid hide/show cycles.
- Add `_get_dock_config` helper to centralize position‑specific configuration.
- Refactor `_create_pinned_button` and `_populate_pinned_apps` for clarity and reuse.
Enhancements- Replace manual child removal with `clear_children` utility.
- Extract `_get_app_icon` to simplify icon resolution.
- Streamline imports and use explicit imports.
Bug Fixes
- Resolve hover race condition using ticket comparison.
- Ensure occlusion checks respect `DOCK_ALWAYS_OCCLUDED` correctly.
- New Feature: Introduce dock styling with background, padding, and rounded corners- Enhancement: Add smooth transition animations for show/hide states
- Enhancement: Implement interactive hover and activate effects on dock items
This change introduces the Dock component to the application, enhancing UI consistency and providing system‑level dock management capabilities.
- **New Features**: Instantiated `Dock` and integrated it into the launcher widget list.
- **Enhancements**: Early initialization of Dock for smoother startup and better configuration flow.
- **Bug Fixes**: None.
Replace external `requests` calls with `urllib` to eliminate third‑party dependency, add robust timeout handling, and improve error reporting. This also standardises URL fetching across the module and updates the process name configuration.
Enhancements:
- Added default request timeout fallback and ensured proper cleanup of response objects
- Enriched exception messages for better debugging
Bug Fixes:
- Fixed potential timeout‑related crashes in `CurrencyCache` and `Conversion`
- Corrected process name setting via `set_process_name` in the entry point
- Refactored Deskwidgets to no longer inherit from Window, now managing windows via attributes.
- Removed unnecessary initialization parameters and size settings.
- Updated class comment to reflect the new responsibilities.
Add UI positioning windows and streamline dependency list to improve maintainability.
- New Features:
- Added deskwidget.top_left and deskwidget.bottom_left to main.py.
- Enhancements:
- Updated pyproject.toml and requirements.txt: removed unused packages and pinned pywayland==0.4.18.
- refreshed uv.lock metadata.
The updates improve visual consistency by increasing padding, adjusting border radii, adding transition effects, and introducing new selection and workspace label styling for clearer UI feedback.
New Features- Added .switcher-selection-label and .switcher-workspace-label selectors with appropriate styling- Introduced .switcher-icon-box with border radius and padding
Enhancements
- Increased #switcher-button padding and border radius
- Adjusted #window-button active background and radius- Added transition effect to #switcher-buttonBug Fixes
- None
- New Features
- Added gradient background classes for various weather conditions
- Enhancements
- Updated transition timing and border radius for smoother animations
- Improved typography spacing and color contrast
- Bug Fixes
- Fixed missing newline at end of file
- Corrected background rendering for gradient classes
The update reorganizes the weather widget UI, adds a header for city and icon, a body for values, adjusts alignment and sizing, and applies a gradient class to the parent container.
- New Features: Structured header/footer layout for weather information
- Enhancements: Realigned text order, increased max_chars_width, resized icon, improved spacing- Bug Fixes: None
- New Feature: Added support for passing `wmclass` to `AboutApp`.
- Enhancements: Safely fetch `current_active_wm_class` using `getattr` with a default empty string.
- Bug Fixes: Prevent potential error when `current_active_wm_class` attribute is absent.
New Features
- Introduced StartupWMClass matching and content‑based fallback for .desktop files
- Added ordered search terms with exact, prefix, and contains strategies- Implemented multi‑step icon retrieval: resolver, direct path, emoji fallback
Enhancements
- Replaced list‑based match attempts with priority‑ordered search flow
- Streamlined parsing of desktop entries by section and key handling- Improved error resilience by using continue on exceptionsBug Fixes
- Fixed potential missing icon assignment when pixbuf lookup fails
- Corrected comment fallback logic to use GenericName when Comment is empty