Rewrite #30

Merged
S4NKALP merged 506 commits from dev into macos 2026-07-18 16:11:08 +00:00
506 Commits
Author SHA1 Message Date
sankalp fe3ccd913b refactor(brightness): replace 500ms poll with GLib.FileMonitor
- Use Gio.FileMonitor on sysfs brightness file
- Event-driven via inotify instead of periodic polling
- _on_brightness_file_changed callback for file modifications
2026-07-18 21:48:11 +05:45
sankalp 8f6a040bb7 refactor(dock): replace 300ms occlusion poll with Hyprland events
- Subscribe to openwindow, closewindow, movewindow, workspace, fullscreen
- 50ms debounce to batch rapid successive events
- Event-driven check instead of continuous polling
- Proper cleanup with _disconnect_occlusion_signals()
2026-07-18 21:43:36 +05:45
sankalp 44f1103259 refactor(per_app_volume): remove redundant 2s polling
- stream-added/stream-removed signals already handle app list updates
- Removed _auto_refresh(), _on_map/_on_unmap timer management
- Removed _last_app_names tracking (unused without polling)
2026-07-18 21:43:29 +05:45
sankalp 2a9964a8e5 refactor(mpris): replace Fabricator with direct GLib.timeout_add
- Remove Fabricator dependency from position/status polling
- Position polling: _pos_source_id + _on_pos_poll() (2s interval)
- Status polling: _status_source_id + _on_status_poll() (5s interval)
- Simplified cleanup with direct source_remove calls
2026-07-18 21:43:22 +05:45
sankalp 6286343272 feat(gamemode): add opacity and rounding overrides for fullscreen
- active_opacity=1.0, inactive_opacity=1.0
- active_rounding=0
2026-07-18 21:43:16 +05:45
sankalp 8ee6003241 style: replace solid accent hover/active with glass effect
- glass-hover: alpha(@foreground,0.08) → alpha(white,0.10)
- glass-active: alpha(@foreground,0.14) → alpha(white,0.50)
- panel, settings, dropdown, tray, notification hover → glass-hover
- battery, wifi, bluetooth connected icons → glass-active
- wifi-icon-box base dimmed to glass-hover for contrast
2026-07-18 21:23:28 +05:45
sankalp 2ba5cc9ccc style(src/styles/window): replace @glass-overlay-dark with #000000 in lock.css and panel.css 2026-07-18 19:39:45 +05:45
sankalp f0643a5b03 docs(faqs): add screencapture keybinds and fix plugin paths 2026-07-18 19:29:48 +05:45
sankalp a403b5a649 docs(plugins): add icon_data field and fix duplicate heading
- Add icon_data field to SearchResult documentation
- Remove duplicate 'How It Works' heading
- Fix plugin directory path references
2026-07-18 19:29:45 +05:45
sankalp 5afada35a4 docs(arch): add missing components and services
- Add notification, osd, wallpaper components
- Add 12 missing services to the services table
- Fix plugin directory path
2026-07-18 19:29:40 +05:45
sankalp c0870dacef docs(config): add missing config.toml keys and mods.toml options 2026-07-18 19:29:34 +05:45
sankalp d06768cb85 docs(install): update package list and fix config reference 2026-07-18 19:29:28 +05:45
sankalp 5544367c2c docs(readme): update package list and fix config reference
- Sync package list with install.sh PACKAGES
- Fix modus.conf reference to modus.lua
2026-07-18 19:29:23 +05:45
sankalp 0b2f5be80e docs(styling): fix CSS paths to match actual directory structure 2026-07-18 19:29:17 +05:45
sankalp f4bfb52ba6 fix(install): fix matugen output path and remove unused variable
- Fix matugen output_path from src/shared/styles/ to src/styles/
- Remove unused BULLET variable (shellcheck SC2034)
2026-07-18 19:29:10 +05:45
sankalp 2482078a3f style: simplify section comments to plain # style in notch.py and keyboard_layout.py 2026-07-18 19:06:32 +05:45
sankalp 0fd5d3ea28 style(install): simplify section comments to plain # style 2026-07-18 19:03:23 +05:45
sankalp 591017f6e5 fix(install): fix spinner exit check, remove dead code, fix launch logic
- spinner now checks exit code and shows cross on failure
- Removed unused print_packages function
- Fixed launch: backgrounded uwsm always returned 0, else branch was
  dead code. Now runs in background and checks with pgrep.
2026-07-18 18:51:24 +05:45
sankalp 713f73f45c fix(install): remove install mode selection, keep simple
Removed Full/Minimal/Custom mode picker. Script now always installs
all packages. Kept -n dry-run and -y auto-yes flags.
2026-07-18 15:16:31 +05:45
sankalp ab9b9df4e1 feat(install): rewrite install.sh with interactive mode selection
- 3 install modes: Full, Minimal, Custom (pick categories)
- Dry-run flag (-n) to preview packages without installing
- Progress bar with percentage during package install
- Better visual hierarchy with section headers and dividers
- Package categories: Core, Shell, Hyprland, UI, Hardware, Network, Audio, Build
- Failed package summary at end
- Cleaner banner and completion output
2026-07-18 15:12:21 +05:45
sankalp 6d9057cd06 fix(install): remove wayland from required packages 2026-07-18 14:52:41 +05:45
sankalp c15d023f7d fix(install): use libqalculate instead of qalculate-gtk 2026-07-18 14:51:52 +05:45
sankalp c3179a8065 fix(install): remove flatpak from required packages 2026-07-18 14:50:35 +05:45
sankalp 716054fd58 fix(install): add missing runtime and build dependencies
Added 13 packages required by the codebase:
- networkmanager, network-manager-applet: network management + GI bindings
- blueman: bluetooth manager GUI
- qalculate-gtk: spotlight calculator engine
- wtype: Wayland keyboard paste simulation
- pipewire, libpulse: audio playback and volume control
- pciutils: GPU detection in About dialog
- gtk-layer-shell: Wayland layer-shell for popup windows
- librsvg: SVG rendering for dock icons
- flatpak: flatpak app registration for global menu
- wayland: wayland-client/wayland-scanner for app-capture build
- gobject-introspection: GIR compilation for app-capture typelib
2026-07-18 14:42:14 +05:45
sankalp 82a5ff91af fix(app-capture): make gobject-introspection optional in meson build
CI Arch container doesn't have g-i installed. The GIR/typelib is only
needed for Python bindings — shared library builds fine without it.
Both gir dependency and g-ir-compiler are now required: false.
2026-07-18 14:28:04 +05:45
sankalp 2a04a17ad7 fix(install): resolve shellcheck warnings in install.sh
- Quote  in kill -0 (SC2086)
- Use %b/%s printf format instead of variable interpolation (SC2059)
- Quote pkg-config command substitution (SC2046)
2026-07-18 14:22:42 +05:45
sankalp 732dd9c0ee fix: formating 2026-07-18 14:21:24 +05:45
sankalp 71c9d30c2c fix(osd): log exception when removing hide timer source
except Exception: pass was hiding stale ID errors.
2026-07-18 14:14:16 +05:45
sankalp 4d90a1ab52 fix(spotlight): log exception when removing stale GLib source IDs
except Exception: pass was hiding errors during pipeline cancellation.
2026-07-18 14:14:09 +05:45
sankalp 1d3cecc255 fix(dialogs): log exception in wifi password connection timeout handler
except Exception: pass was hiding UI state errors during timeout
handling.
2026-07-18 14:13:56 +05:45
sankalp 50e15db2de fix(controlcenter): move inline GLib/os imports to top-level
GLib was imported inline 4 times in seek-bar handlers that fire on
every user seek. os was imported inline in a fallback path. All moved
to top-level.
2026-07-18 14:13:48 +05:45
sankalp 2d982cf286 fix(shared): add tick_widget=self to AnimatedScrollable height_animator
Without tick_widget the Animator falls back to GLib.timeout_add which
fires even when the widget is hidden, wasting CPU on invisible scroll
windows (WiFi/BT connection lists).
2026-07-18 14:13:44 +05:45
sankalp c00236fc69 fix(dock): remove pointless del svg_w, add warning on trash SVG failure
The del was a no-op (GC handles scope exit). The bare except Exception
hid real rendering errors — now logs at warning level.
2026-07-18 14:13:36 +05:45
sankalp 6a75ea84d9 fix(controlcenter): remove duplicate device-ready signal connection
Handler was connected twice — once in __init__ and again in
_initialize_resources. Every device-ready event fired on_network_ready
twice. Removed the __init__ connection (the lazy one is correct).
2026-07-18 14:13:27 +05:45
sankalp ee904cce04 fix(notification): null _spring_timer_id after first remove in on_resolved
on_resolved removed the GLib source but didn't null the ID, causing
double-remove crash when destroy() later tried to clean up the same
stale source.
2026-07-18 14:13:17 +05:45
sankalp 6cd1a2c71a fix(utils): quote kill_process args, replace subprocess which with shutil
- shlex.quote() in kill_process prevents shell injection
- find_binary now uses shutil.which() instead of spawning 'which'
- Add shell_split() helper for environment.py
- Remove inline import re from escape_markup_text
2026-07-18 14:13:11 +05:45
sankalp ef685ab34a fix(globalmenu): remove shell=True from gcc compilation command
Use list form with shlex.split() for pkg-config flags instead of
shell=True string interpolation. Eliminates command injection vector.
2026-07-18 14:13:03 +05:45
sankalp 80c7af79db fix(network): add missing get_connectivity() call and widen NM import guard
- get_connectivity was compared as method object (always True), wired
  icon always showed no-route when activated
- NM import now catches GLib.Error and ImportError, not just ValueError
- Sets NM = None on failure instead of leaving undefined
2026-07-18 14:12:56 +05:45
sankalp 476ed7e4fb fix(workspace): replace broken _config_handlers import with off_config_change
Same silent ImportError leak as panel/main.py — callbacks were never
unregistered on widget destroy.
2026-07-18 14:12:44 +05:45
sankalp 6ef48af963 fix(panel): replace broken _config_handlers import with off_config_change
Panel destroy was importing nonexistent _config_handlers from config,
causing silent ImportError and leaked reload callbacks.
2026-07-18 14:12:37 +05:45
sankalp c47009addd fix(config): add unregister_reload_callback and harden singleton init
- Move _initialized flag to end of __init__ so partial construction
  leaves the singleton retryable
- Add unregister_reload_callback() method and off_config_change() helper
- Enables proper cleanup of reload listeners on widget destroy
2026-07-18 14:12:26 +05:45
sankalp 5e542eed4f style: replace raw colors.css refs with glass tokens from constant.css
Replace @foreground, @primary, @error, @outline, @shadow, @secondary
and their var() equivalents with semantic glass-* tokens across 22 files.
Colors without glass equivalents (@on-primary, @cyan, etc.) left as-is.
2026-07-17 22:28:10 +05:45
sankalp aeccbe3089 fix(osd): show OSD at 100% via fabric-cli exec from keybinds
- Add osd_show_audio/osd_show_brightness methods on OSDWindow
- Register as standalone functions in __main__ for fabric-cli exec
- Keybinds now chain fabric-cli exec after wpctl/brightnessctl
- Emit brightness signal on threshold bypass for small changes
2026-07-17 12:24:34 +05:45
sankalp 4f36ada1c5 fix(controlcenter): flush stale-cache races in toggle UI
- Drop rfkill from bluetooth toggle (redundant with D-Bus Powered,
  was causing stale cache on next read)
- Force toggle switch and icon to target state immediately after
  setting, don't wait for D-Bus callback
- Fix nightlight icon race: flip local is_active instead of
  re-querying async kill state
- Guard wifi on_network_ready against ethernet-first device loop
  (emits device-ready per device; wifi_device None on first)
- Share single NetworkClient between main panel and wifi popup
  (eliminates async-init race of two independent instances)
- Strip connected: prefix from wlan label initial display
- Add _pending_toggle pattern to wifi notify handler to
  suppress stale-cache revert; same for bluetooth switch lock
2026-07-17 11:23:42 +05:45
sankalp 14c00c4504 refactor(window/switcher): make item box height adapt automatically 2026-07-16 17:54:34 +05:45
sankalp 5708a475dd chore: remove commitlint configuration 2026-07-16 17:47:37 +05:45
sankalp de0f5f1d07 chore: remove dependency audit workflow 2026-07-16 17:45:19 +05:45
sankalp 0ef2a036dd chore(.github/workflows): add system dependencies for pycairo
Add libcairo2-dev and pkg-config to the dependency-audit.yml workflow so that pycairo can be installed correctly on CI runners. This prevents the build error when installing Python packages that require the Cairo library.
2026-07-16 17:43:12 +05:45
sankalp 700b29a465 fix(/.github/workflows): correct inputs parameter for dependency audit action 2026-07-16 17:41:02 +05:45
sankalp 619db0e512 refactor(config/hypr): change keybinding for locking screen from Ctrl+L to Super+L 2026-07-16 17:39:33 +05:45
sankalp a383c484b6 chore: add commitlint.config.js 2026-07-16 17:39:14 +05:45
sankalp d1866cc699 chore(.github/workflows): add CI workflows for commit lint, dependency audit, and install script testing 2026-07-16 17:38:53 +05:45
sankalp 6e9cb8efc8 refactor(src/window/spotlight/plugins): improve emoji annotation download using curl for better error handling 2026-07-16 17:27:52 +05:45
sankalp e3b8ae0c45 refactor(services): simplify GoogleLens upload implementation using curl 2026-07-16 17:10:50 +05:45
sankalp 41cb9afa07 fix(src/window/notification): stop polling when revealer is closing/destroyed
The callback may execute after _on_notification_finished has fired, causing errors.
2026-07-16 12:13:19 +05:45
sankalp 83af1829c4 refactor(src/window/dock/canvas): reorganize client lookup and tooltip generation to prevent stale references 2026-07-16 12:13:01 +05:45
sankalp e840917621 fix(src/window/controlcenter): add guard for destroyed state and adjust return value 2026-07-16 12:12:43 +05:45
sankalp 843c33786f fix(src/services): handle race condition in artwork generation and daemon cleanup 2026-07-16 12:12:15 +05:45
sankalp 19046cd1ee feat(optional): add libmediaart to PACKAGES 2026-07-16 12:11:57 +05:45
sankalp 1c119535d5 chore(config/hypr): correct uv command to run python script 2026-07-16 12:04:22 +05:45
sankalp a47abda55a fix: resolve wifi crashes, shell injections, race conditions, and add debug mode
- Remove transient NEED_AUTH/DISCONNECTED error paths from wifi connect
- Guard double-callback in connect_wifi_bssid/connect_wifi_with_password
- Shell-quote user paths in wallpaper, screenshot, screenrecorder services
- Fix OSD hide-timer use-after-free and applet_window stale source ID
- Fix brightness poll timer leak on read failure
- Fix spotlight search stale idle source removal
- Lock dbusmenu _cache mutation under _registry_lock
- Fix entry.revision written outside _registry_lock scope
- Add fabric-cli exec wrapper for lock screen (lock_screen.lock())
- Replace hyprlock with lock screen in power menu and dropdown
- Add debug mode toggle in settings (controls log verbosity)
- Add diagnostic logging to globalmenu click chain
2026-07-16 11:47:53 +05:45
sankalp 4378959131 fix(controlcenter): refresh player state on resume
When control center hides, PlayerBox.suspend() blocks all signal
handlers. On resume(), clearing the flag wasn't enough — stale
state lingered until next fabricator poll (up to 5s). Now resume()
immediately syncs play/pause icon, metadata, and artwork.
2026-07-15 21:22:51 +05:45
sankalp 42ede60800 refactor: drop unused SettingsRow definitions from SettingsWindow
Removed three SettingsRow widgets that were no longer needed, cleaning up the UI configuration.
2026-07-15 19:37:22 +05:45
sankalp 6442161f40 refactor(src/window/globalmenu): simplify caching logic and remove dynamic menu method selection 2026-07-15 19:37:02 +05:45
sankalp 11603990ee refactor(src/utils): remove unused global_menu_method and global_menu_cache_enabled from constants.py 2026-07-15 19:36:44 +05:45
sankalp 016d18090d refactor(src/window/spotlight/plugins): increase timeout interval to 50ms for clipboard and emoji paste actions 2026-07-15 11:30:46 +05:45
sankalp e6c471a9f8 fix(src/window/spotlight): add error handling around action invocation
Prevent crashes when result.action() raises exceptions and log warnings.
2026-07-15 11:30:23 +05:45
sankalp 211a428cca feat(src/utils): replace clipboard implementation with wl-copy and enhance copy_image support 2026-07-15 11:30:01 +05:45
sankalp 2c9a050bbb fix(spotlight): run immediate search on Enter when debounced results empty
on_entry_changed uses @debounce(300). When user presses Enter before
debounce fires, _current_results is empty so nothing activates.

Now on_entry_accept triggers an immediate search_single when active
plugin has no results, and activates the first result on callback.
2026-07-15 10:52:44 +05:45
sankalp 4503130be3 fix(spotlight): activate first result before on_submit in entry accept
_on_entry_accept checked _active_plugin_entry before _current_results.
Keyword plugins (emoji, clipboard) are always active when prefix typed,
so on_submit (no-op base) swallowed Enter before result.action() fired.

Now results are checked first. on_submit only as fallback when no results.
2026-07-15 10:49:43 +05:45
sankalp 9eb62d7ea3 feat(config): wire up wallpapers_dir, osd, window_switcher, global_menu settings
- wallpapers_dir: read from config, fallback ~/Pictures/Wallpapers
- osd: skip show_audio_osd/show_brightness_osd when disabled
- window_switcher: skip show_switcher when disabled
- global_menu_cache_enabled: bypass GTK class cache when false
- global_menu_method: control discovery strategies (auto/hyprland/dbus)

All keys added to constants.py defaults, settings UI, and config.toml
2026-07-15 10:31:28 +05:45
sankalp e63a2c04a5 refactor: extract reusable utils, remove screencapture facade
- Add ManagedTimer to replace repeated source_remove/timeout_add boilerplate
- Add EvdevLockService base class for numlock/capslock (cut 154→28 lines)
- Add BaseNotchIndicator for 5 near-identical indicator classes (cut 404→171 lines)
- Add load_pixbuf_thumbnail and resolve_monitor to utils
- Delete screencapture.py facade; callers use Screenshot/ScreenRecorder directly
2026-07-15 10:01:40 +05:45
sankalp ebe1238b3d feat(src/window/spotlight/plugins): implement is_active detection and notification handling for caffeine plugin
Add CaptureNotifier import and send notifications when caffeine is enabled or disabled. Introduce is_active() static method to check inhibition status via PID file and process cmdline. Replace previous _read_pid() usage with is_active(). Enhance _humanize to properly format "0s" and hour-only durations. Update activation logic to use the new method and trigger appropriate notifications.
2026-07-15 09:04:00 +05:45
sankalp cdccb9e726 feat(src/window/controlcenter): implement caffeine inhibitor toggling
Add support for managing systemd‑inhibit processes via a PID file; introduce _caffeine_is_active helper; modify _check_initial_states and toggle_caffeine to start/stop inhibition and update UI icons and labels.
2026-07-15 09:03:39 +05:45
sankalp cda8f55109 feat!: rename inhibit_changed to inhibit-changed and add enable_timed method 2026-07-15 09:03:08 +05:45
sankalp ddacdea3eb refactor(src/window/controlcenter): replace svg_file imports with Image and simplify battery icon handling 2026-07-14 23:26:21 +05:45
sankalp f2517ee9f3 feat(src/window/notification): add action buttons creation and improve UI alignment 2026-07-14 23:11:19 +05:45
sankalp e4e1d3a291 style(src/styles/notification): adjust mac- CSS for notification UI 2026-07-14 23:11:02 +05:45
sankalp e7c49d7dda refactor(src/window/notification): simplify hover handling and close‑button styling for notifications 2026-07-14 22:46:18 +05:45
sankalp 5dd3abb3b4 style(src/styles/notification): refine notification button styling and hover behavior 2026-07-14 22:45:55 +05:45
sankalp 4df8b93e6c fix(src/window/panel/components/globalmenu): correct active window detection to exclude Modus 2026-07-14 22:00:10 +05:45
sankalp 5668c5153e feat(src/utils): rename default app name from Finder to Modus
build(release): bump version to 2.0.0
2026-07-14 21:59:52 +05:45
sankalp 3d355482c6 refactor(src/services): replace default active app name from "Finder" to "Modus"
Modified default active app name in ModusService initialization and update logic to "Modus" to align with the project's branding and avoid confusion with macOS Finder.
2026-07-14 21:59:34 +05:45
sankalp 04ac938dd2 refactor(src/window/dock): replace manual drawing of shadows, borders, and backgrounds with Gtk.render_background and Gtk.render_frame 2026-07-14 21:58:35 +05:45
sankalp 3ace1a1bd2 style(src/styles/window): add .dock-background styling 2026-07-14 21:58:16 +05:45
sankalp 59e9c8498e style(src/styles/window): migrate to glass color variables 2026-07-14 21:43:39 +05:45
sankalp 9f192cdc56 refactor(styles/widgets): update CSS color variables to use glass theming 2026-07-14 21:43:22 +05:45
sankalp ef7b200c74 style(src/styles/notification): switch notification background colors to glass tokens 2026-07-14 21:43:04 +05:45
sankalp 21e8a3e7da chore(src/styles): migrate to glass surface color tokens
Remove legacy color definition blocks and replace with new glass-surface, glass-panel, and interactive state tokens. Update all component styles to reference new variables.
2026-07-14 21:42:46 +05:45
sankalp 50640d33aa refactor(config/hypr): remove noise setting and enable ignore_opacity 2026-07-14 21:42:28 +05:45
sankalp 6a5287d039 feat(config): enhance hypridle lock command and modus visual settings 2026-07-14 18:46:18 +05:45
sankalp 6f2d0bf444 chore: refactor imports and adopt new utils utilities 2026-07-14 18:45:52 +05:45
sankalp b2114f52b1 refactor: migrate globalmenu implementation to src/window/globalmenu and adjust documentation paths 2026-07-14 18:45:35 +05:45
sankalp a782d30f15 refactor: reorganize globalmenu into src/window 2026-07-14 18:45:14 +05:45
sankalp 22b239f33c chore: update labeler.yml to correct glob pattern for globalmenu files 2026-07-14 18:44:57 +05:45
sankalp 0496100788 feat(spotlight): add Caffeine plugin to inhibit idle/sleep
Uses systemd-inhibit with a pinned sleep process and PID file so
the inhibition survives Spotlight dismiss. Supports on/off and
duration presets (5m/15m/30m/1h) plus free-form parsing.
2026-07-14 13:47:58 +05:45
sankalp 2d22df94ca refactor: drive UI from service signals, drop redundant polling
- bluetooth.py / wifi.py: remove 5s periodic refresh timers; rely on
  service `changed`/`device-added`/`device-removed`/`notify` signals
- expanded_player.py: remove 500ms metadata poll; rely on
  `meta-change`/`artwork-change` signals
- player.py (notch): connect previously dangling `artwork-change` handler
- popup_win.py: silence harmless "nothing connected" warning on destroy()

No behaviour change; eliminates dead timers and log spam.
2026-07-14 13:46:21 +05:45
sankalp 9ff5ebc95c refactor(spotlight): replace raw socket IPC with Fabric Service over DBus
SpotlightWindow now exposed via SpotlightService (fabric Service) on the
session bus (dev.modus.Spotlight /Toggle). On-demand process forwards to
the running instance over DBus instead of a unix socket; still quits on
dismiss. Behaviour unchanged.
2026-07-14 13:02:26 +05:45
sankalp f72542a231 refactor: log swallowed exceptions across src/
Replace silent swallow-excepts (pass/return/continue) with
logger.warning recording the caught error, preserving behaviour.
2026-07-14 13:02:21 +05:45
sankalp c0a4b1b792 refactor(src/window/dock): improve desktop file search matching logic
Check exact desktop file name first and enhance matching algorithm to prioritize exact matches, compute relevance scores, and return the best match.
2026-07-14 02:36:20 +05:45
sankalp 1b2f06a251 feat(src/utils): add EvdevLEDMonitor helper to monitor EV_LED state changes without polling 2026-07-14 02:36:02 +05:45
sankalp 1dcce186a7 refactor(src/shared): simplify active_ids set comprehension 2026-07-14 02:35:44 +05:45
sankalp e734c4bbf4 refactor: improve brightness polling and caching via pathlib 2026-07-14 02:35:25 +05:45
sankalp 112f4b1039 refactor(services): convert weather + gamemode to Fabric services
Weather: move networking, caching and scheduling out of the Weather widget
into a WeatherService singleton. Reuse one httpx.Client for the app lifetime,
drop the 4-worker pool and the multi-entry dict caches (single-value fields),
query Nominatim only on location change, remove debounce and the /tmp-style
polling. Widget now observes the `updated` signal and never hits the network.

GameMode: turn the standalone CLI script into a GameModeService (Service
singleton) exposing an `enabled` Property and `changed` signal. Drive Hyprland
via `hyprctl eval hl.config(...)` instead of the deprecated `hyprctl keyword`
batch (rejected under the Lua config in Hyprland 0.55+), read state via
`hl.get_config`, and keep `hyprctl reload` for disable. Fix game-mode state
parsing so unrecognized `hl.get_config` output no longer falsely reports
active. BatteryWidget's GameModeButton now subscribes to the service.

Remove now-unused LOCATION_CACHE_TIMEOUT.
2026-07-14 00:37:52 +05:45
sankalp f3f17bb5fc refactor(services): split screen capture into screenshot + recorder services
Split the monolithic ScreenCapture service into focused Screenshot and
ScreenRecorder services behind a pluggable capture backend.

- Add shared/capture.py: CaptureBackend abstraction + HyprlandCaptureBackend
  (hyprshot/grim/slurp/wf-recorder) and reusable CaptureNotifier
- Add services/screenshot.py and services/screenrecorder.py with Fabric
  properties/signals; recording state kept in memory (no /tmp files)
- Keep services/screencapture.py as a backwards-compatible facade so
  existing widgets and signals keep working
- Resolve monitors via Hyprland IPC helpers in services/modus.py instead of
  spawning `hyprctl monitors -j` per capture
- Implement real window recording (slurp window boxes) and split the
  record-window / record-region UI mappings
- Register screenshot_service / screen_recorder_service singletons
- Remove dead src/utils/inhibit.py duplicate; minor modus.lua quoting fix
2026-07-13 23:52:32 +05:45
sankalp 54ff85ffc9 fix(services/spotlight): improve MPRIS artwork handling and scope keyword searches to single plugin
- mpris: native MediaArt cache lookup, dedupe play/pause emission, safe
  cleanup, artwork polling for already-playing browser players, drop
  os.system seek fallback
- spotlight: scope plugin keyword and detect() matches to a single plugin
  via search_single instead of global search; register clipboard keywords
  (clip/clipboard)
2026-07-13 22:20:19 +05:45
sankalp 1fc7edd483 feat(install): symlink hypridle.conf to ~/.config/hypr
Create symlink during installation so hypridle uses Modus config
2026-07-12 20:27:15 +05:45
sankalp 4a84710634 ci: change Dependabot schedule from weekly to monthly 2026-07-12 20:25:54 +05:45
sankalp 74e9ab183f chore: update dependencies and gitignore
- Update ruff to 0.15.2 in requirements.txt
- Add pre-commit to requirements.txt
- Update uv.lock with new dependencies
- Add config/plugins/ to gitignore, remove src/window/launcher
2026-07-12 20:19:09 +05:45
sankalp d6efc12ef1 style(switcher): fix trailing whitespace in app-capture C code
Clean up whitespace in app-capture.c and hyprland-toplevel-mapping XML
2026-07-12 20:19:05 +05:45
sankalp b421e39052 refactor(window): cleanup controlcenter and notification imports
Remove unused imports in controlcenter and notification modules
2026-07-12 20:18:10 +05:45
sankalp 66632f0989 refactor(core): rename APP_NAME to 'modus', cleanup shared widgets
- Change APP_NAME from 'modus1' to 'modus' in shared/data.py
- Remove unused flat_scale widget
- Add missing imports in animator and customrevealer
- Delete src/utils/uinput.py (unused)
- Remove unused import in utils/functions.py
2026-07-12 20:18:05 +05:45
sankalp 94ed52f4b5 docs: update architecture, configuration, and FAQs
- Expand architecture overview with plugin system details
- Update configuration guide with new spotlight settings
- Improve FAQs with troubleshooting tips
- Remove docs/README.md (content merged into main README)
2026-07-12 20:17:56 +05:45
sankalp a2171b7013 config: update keybinds and remove launcher.toml
- Rename fabric-cli exec to use 'modus' instead of 'modus1'
- Add spotlight keybinds (Super+D, Super+E, Super+V, Super+W)
- Change reload bind to Alt+Shift+R
- Delete config/launcher.toml (replaced by spotlight plugins)
2026-07-12 20:17:52 +05:45
sankalp f065ce5d7c style: remove launcher CSS and cleanup style imports
- Delete launcher styles (general, index, network, results, search)
- Remove unused imports from controlpanel and notification CSS
- Minor tweaks to window and settings styles
2026-07-12 20:17:44 +05:45
sankalp aefbaa4996 style(icons): fix trailing newline in SVG files
Ensure all icon SVGs end with newline for consistency
2026-07-12 20:17:37 +05:45
sankalp 3a81ab1212 feat(spotlight): add plugin system with core engine and examples
- Plugin API (plugin.py, context.py, result.py)
- Core engine (search.py, manager.py, registry.py, loader.py)
- Built-in plugins: app, calculator, clipboard, emoji, power_menu, query, wallpapers
- Spotlight docs and example plugins
- Spotlight CSS styling
2026-07-12 20:17:34 +05:45
sankalp 795e259e16 fix(panel): wire search button to toggle spotlight
- Add on_clicked handler to search button in panel
- Add set_spotlight_toggle() method on Panel
- Connect spotlight.toggle in main.py after both are created
2026-07-12 20:16:23 +05:45
sankalp b5c92a9a77 docs: rearrange README sections and remove roadmap
New flow: hero -> quick start -> manual install -> docs -> config -> mods -> plugins -> team
Rename 'Links' to 'Documentation' for clarity
2026-07-12 20:16:14 +05:45
sankalp e72b35ffa7 chore: update project metadata in pyproject.toml
- Description, license (GPL-3.0-or-later), authors, keywords
- Add classifiers, project URLs (homepage, docs, issues, Discord)
- Restructure dependencies before project.urls to fix TOML parsing
2026-07-12 20:16:00 +05:45
sankalp 00b505ca66 ci: add Dependabot config for pip and GitHub Actions
Weekly dependency updates for Python packages and Actions versions
2026-07-12 20:15:45 +05:45
sankalp e64ef88f3e docs: add issue templates, PR template, and labeler config
- Bug report: version, component, repro steps, logs, environment
- Feature request: component, description, alternatives
- Question: with links to docs/Discord
- PR template: summary, type, testing checklist, screenshots
- Labeler: auto-label PRs (python, config, c-backend, styling, ci, docs, assets, install)
2026-07-12 20:15:33 +05:45
sankalp d4eab2cb34 chore: add pre-commit config with ruff and standard hooks
- ruff lint + format (v0.15.2)
- trailing whitespace, EOF fixer, YAML/TOML validation
2026-07-12 20:15:19 +05:45
sankalp c445b2e2a4 ci: add CodeQL, pre-commit, and labeler workflows
- CodeQL: Python security analysis on push/PR + weekly schedule
- Pre-commit: ruff lint/format checks on push/PR
- Labeler: auto-label PRs based on changed files
2026-07-12 20:15:10 +05:45
sankalp d0e1f7090a chore(install): add --yes flag, use subshell, clean up git output
- Add -y/--yes flag to skip interactive prompts
- Replace cd/cd- with subshell in app-capture build
- Replace fragile grep -v pipe with stderr redirect for git output
- Total steps still matches progress calls
2026-07-12 19:28:55 +05:45
sankalp ae90b85f75 fix(install): hardcoded path, step count, launch flow
- Replace /home/sankalp/ with $INSTALL_DIR in MODUS_MODULE_LINE
- Fix TOTAL_STEPS 11→12 to match actual progress calls
- Move 'Launching Modus' to end (stop + start in one block)
- Remove orphaned 'Starting Modus' step from under Matugen
2026-07-12 19:26:29 +05:45
sankalp 3142d70279 refactor(dock): extract DockItem into items.py, remove TYPE_CHECKING
DockItem, DockModel, DockHitTest moved to items.py.
layout.py and animator.py now import directly — no circular deps.
2026-07-12 19:25:06 +05:45
sankalp 980734f465 fix(dock): quote TYPE_CHECKING annotations for runtime safety
DockItem and DockCanvas are only imported under TYPE_CHECKING.
String-annotate their usage so they aren't evaluated at runtime.
2026-07-12 19:21:58 +05:45
sankalp 07d35d8fdf fix(dock): restore TYPE_CHECKING guards to break circular imports
animator.py and layout.py both circular-import from canvas.py.
Restore the TYPE_CHECKING blocks and suppress TC004 globally.
2026-07-12 19:20:24 +05:45
sankalp f4281e6aca fix(install): compile global menu shim from src/globalmenu/ instead of non-existent native/ 2026-07-12 19:12:33 +05:45
sankalp 01aac24f7e refactor(bluetooth): resolve device icons from GTK icon theme
_check_icon_to_type now queries Gtk.IconTheme for the icon name
(with -symbolic suffix) before falling back to a hardcoded mapping.
_get_icon_for_device simplified since type property now returns
GTK icon names directly.
2026-07-12 19:07:41 +05:45
sankalp 15e64df428 refactor: consolidate debounce into utils/debounce.py
Move method-specific debounce from functions.py to debounce.py,
keeping both debounce (method) and sync_debounce (general) together.
2026-07-12 19:04:33 +05:45
sankalp 30c02f207d chore: remove unused conversion.py (CurrencyCache, Units) 2026-07-12 19:02:07 +05:45
sankalp c5961c7832 chore: add project copyright header to LICENSE 2026-07-12 19:00:27 +05:45
sankalp c9f3f27e18 refactor: remove occlusion.py wrapper, import check_occlusion from services.modus directly 2026-07-12 18:59:18 +05:45
sankalp 7934267924 docs: link contribution guide in README 2026-07-12 18:40:03 +05:45
sankalp d0ca929b76 docs: add contribution guide 2026-07-12 18:39:52 +05:45
sankalp 096231bc44 style: enforce consistent codestyle via ruff config and auto-fixes
- Configure ruff: isort, pyupgrade, bugbear, flake8 rules
- Auto-fix import sorting, redundant parens, exception chaining
- Remove from __future__ import annotations (Python 3.13+)
- Convert debug print() to logger calls
- Fix typo applicaiton → application in icon_resolver
- Remove bare returns in animator setters
- Move TYPE_CHECKING imports to runtime where used at runtime
2026-07-12 18:38:13 +05:45
sankalp afd826d0c0 refactor(services): enhance TodoService with callbacks, UUID IDs, and UTF‑8 file handling 2026-07-12 09:33:41 +05:45
sankalp 51283125ef chore: add ALT+TAB keybinding
Change config/hypr/modus.lua to bind ALT+TAB to switcher.show_switcher() and remove the stale comment.
2026-07-12 09:33:25 +05:45
sankalp c0ac114610 feat(src/assets): add pomodoro sound assets
Add new alert and tick sounds for pomodoro timer, update project metadata in pyproject.toml and requirements.txt to include new dependencies.
2026-07-12 09:33:05 +05:45
sankalp 4637799e11 feat(src/window/pomodoro): implement Pomodoro timer widget and integrate it into the panel
Add Pomodoro component with UI controls and state management,
modify Panel to instantiate and cache Pomodoro and TodoList widgets,
hook datetime button to toggle Pomodoro and handle right‑click on todo list,
extend destroy logic to cleanly close Pomodoro and Todo instances.
2026-07-12 09:32:47 +05:45
sankalp b78710002a docs(readme): mark Pomodoro Timer Widget as completed 2026-07-12 09:32:26 +05:45
sankalp 8a4508159e feat(src/window): add lockscreen implementation 2026-07-12 05:27:32 +05:45
sankalp cec3ca56b0 refactor(src): remove lockscreen implementation
The lockscreen module in src/lock.py has been removed to clean up unused code and simplify the project structure. This change does not affect current functionality but prepares the codebase for future enhancements.
2026-07-12 05:27:15 +05:45
sankalp 0cd7a7c3f4 docs: add comprehensive documentation for installation, architecture, and styling 2026-07-12 05:26:57 +05:45
sankalp 11ad484fb6 feat(root): update lock dependency to window.lock and document README properly 2026-07-12 05:26:40 +05:45
sankalp 5af4a80d1d refactor: hide window instead of showing when recording starts 2026-07-12 05:02:26 +05:45
sankalp b3b684720a feat(readme,install): update documentation and add required build dependencies 2026-07-12 05:02:08 +05:45
sankalp e05aff39bf refactor: reformat environment variable assignment to use explicit multi‑line tuple syntax 2026-07-12 04:47:10 +05:45
sankalp 0ffd620533 feat(src/window/switcher): add live preview toggle and refactor capture loop with invoke_repeater 2026-07-12 04:46:51 +05:45
sankalp 06c0fb7cb7 feat(src/window/switcher/app-capture): expose target size and damage-waiting options in capture_by_handle 2026-07-12 04:46:21 +05:45
sankalp 11821816f7 feat(src/utils): add switcher_live_preview_delay_ms setting 2026-07-12 04:46:02 +05:45
sankalp 373d582701 feat(src/window/switcher): add live preview capture and restructure switcher UI 2026-07-12 03:54:18 +05:45
sankalp ce21c075da feat(src/window/switcher/app-capture): add app-capture implementation 2026-07-12 03:53:58 +05:45
sankalp 3ed0707b14 feat(src/utils): add switcher live preview option 2026-07-12 03:53:36 +05:45
sankalp 724c9db7b5 feat(src): configure GI_TYPELIB_PATH for app-capture 2026-07-12 03:53:19 +05:45
sankalp be86976882 feat(build): add progress steps and environment configuration for App Capture module 2026-07-12 03:53:02 +05:45
sankalp ccfd1aecc1 feat(cache): implement icon theme aware caching for notification icons and cleanup on theme change 2026-07-12 02:44:56 +05:45
sankalp 4b039c1ff3 chore(src/utils): remove deprecated DBus menu client and dev‑members.json, add uinput module for mouse click simulation
Drop unused dbusmenu.py and related files, update pyproject.toml and requirements.txt to reflect new dependencies, and add pure‑Python uinput click helper.
2026-07-12 02:44:35 +05:45
sankalp 40b8962232 feat(notifications): increase app icon size to 64x64 and refactor service retrieval 2026-07-12 02:44:15 +05:45
sankalp aee72d98fa refactor(config): simplify color picker commands 2026-07-12 02:43:57 +05:45
sankalp 23672db2db feat(pyproject): add src/globalmenu to wheel packages 2026-07-12 02:43:38 +05:45
sankalp e837f54680 feat(src/window/notification): switch notification icon size to 64x64
Update notification asset handling to use 64x64 icons for consistency and better thumbnail quality.
2026-07-11 22:22:10 +05:45
sankalp 863fb5e0ae refactor(config/hypr): simplify animation curves and definitions 2026-07-11 22:21:52 +05:45
sankalp 6a5f85a10d refactor(services): migrate run_command to Gio.Subprocess in KeyboardLayout and Modus 2026-07-10 10:31:09 +05:45
sankalp 2f1ae9e72e feat(config/hypr): increase blur size and add new blur options 2026-07-10 10:30:49 +05:45
sankalp 3f9f75d77e refactor(src/window/screencapture): replace direct _do_screenshot with service call 2026-07-09 23:17:17 +05:45
sankalp 9024cbc9ba feat: replace blocking subprocess calls with Gio.Subprocess async handling 2026-07-09 23:16:58 +05:45
sankalp 4fa183e272 style(config/hypr): adjust screencapture.toggle argument quoting 2026-07-09 23:16:41 +05:45
sankalp f0aed5a410 style(src/styles): rename application switcher identifiers to app-switcher
Rename CSS IDs from #application-switcher-* to #app-switcher-* for consistency.
Update padding, margin, and hover states to match new design.
Add new classes for hovered and selected states with appropriate styling.
2026-07-09 22:33:54 +05:45
sankalp 0fbccca46e refactor: add stop_animation method to SlideRevealer and integrate with destroy 2026-07-09 22:33:33 +05:45
sankalp 1dd99cf79d refactor(src/window): remove unused ApplicationSwitcher component 2026-07-09 22:33:14 +05:45
sankalp 84976320f0 feat: add about_to_show and refresh_menu_sync methods to GlobalMenuService and refactor close_window implementation 2026-07-09 22:32:54 +05:45
sankalp aeacb397b2 feat(config/hypr): add new animations 2026-07-09 22:32:32 +05:45
sankalp 0d83f2a129 refactor: remove unused signal parameters from event handlers 2026-07-09 18:57:19 +05:45
sankalp be6e42061b style: update panel background colors to #000000 2026-07-09 18:56:58 +05:45
sankalp 3dbad6bdea refactor(src/utils): drop unused AppName methods and simplify DBusMenuClient
Removed get_app_exec, get_desktop_file, on_focus, get_revision; renamed parameter format_ to _format_; cleaned up imports and dead code.
2026-07-09 18:56:28 +05:45
sankalp de9ab766c4 refactor!(shared): remove unused constants and deprecated methods 2026-07-09 18:56:05 +05:45
sankalp 1403c5adc0 refactor(src/services): remove unused properties and methods across service classes 2026-07-09 18:55:36 +05:45
sankalp f9bef457ca refactor(src/utils): remove unused imports and functions 2026-07-09 15:45:39 +05:45
sankalp bb3a92416f refactor(src/services): switch state storage from JSON to TOML for gamemode 2026-07-09 15:45:20 +05:45
sankalp bd878c88eb feat(src/window/screencapture): hide window before screenshot 2026-07-09 15:32:46 +05:45
sankalp 01dc64498f feat(src/services): refactor KeyboardLayout to use TOML state persistence and improve layout switching
Switch layouts are now stored in TOML, added proper error handling and a static method to trigger switching, replaced JSON handling, updated imports and fixed related services.
2026-07-09 15:32:29 +05:45
sankalp 6152314c9c feat: add keyboard layout switching capability
Expose KeyboardLayout.switch_keyboard_layout as a public method and integrate it into the main application to enable dynamic keyboard layout changes at runtime.
2026-07-09 15:32:10 +05:45
sankalp c122cfd32f feat(config/hypr): add new screen capture and layout switcher bindings
- Replace commented-out launcher shortcuts with active screen capture and keyboard layout switcher.
- Update keybinding logic to use new method signatures.
2026-07-09 15:31:53 +05:45
sankalp 4d7766071f style(src/styles/window): darken panel and notch background colors 2026-07-08 16:12:07 +05:45
sankalp 822a0eadcc feat(src/window/panel): connect fullscreen state change handler
Add handler for fullscreen changes to automatically toggle panel visibility, improving user experience.
2026-07-08 13:22:09 +05:45
sankalp 4dcfaed69e feat(services): add fullscreenChanged signal and property handling
Add @Signal fullscreen_changed(), expose a read‑write fullscreen Property that triggers the signal on change, set its default to False, connect Hyprland’s fullscreen event to update the property, and store it on the service instance.
2026-07-08 13:21:42 +05:45
sankalp d1e1e68da5 refactor: remove unused UI components and add quit functionality 2026-07-08 13:02:22 +05:45
sankalp 5ba2278de2 fix(config): adjust modus directory path and clarify env var handling to avoid Gdk-CRITICAL 2026-07-08 12:25:40 +05:45
sankalp 79f4ee4d4a style(src/styles): replace background-color with @bg-a50 2026-07-08 12:25:20 +05:45
sankalp 5b8d6a62aa refactor! : drop subprocess usage and centralize brightness service initialization 2026-07-08 12:25:02 +05:45
sankalp 06be28535a refactor: clean up service implementations and remove dead code 2026-07-08 12:24:39 +05:45
sankalp 9a1f512a28 feat: enhance progress tracking and environment configuration
Update TOTAL_STEPS to reflect new steps and add progress indicators for configuring global environment and .pam_environment.
2026-07-08 12:24:22 +05:45
sankalp e662b825ec feat(src/assets/icons): add screen capture icons 2026-07-07 14:02:42 +05:45
sankalp f7662f7f5b feat(src/window/screencapture): implement screen capture window with toolbar, tools, and options menu
Added a new window class that integrates with the capture service, provides a toolbar of tool buttons for region, screen, window, and recording modes, includes an options button to toggle settings, and implements save directory selection, delay, cursor, thumbnail, and microphone controls. The implementation follows the existing widget architecture and updates related modules to expose the new functionality.
2026-07-07 14:02:24 +05:45
sankalp 89d7cdfac3 refactor(src/styles/window): improve CSS file formatting and add screencapture.css 2026-07-07 14:02:04 +05:45
sankalp 22528b312a feat(config): add project metadata and dependencies to pyproject.toml and requirements.txt 2026-07-07 14:01:46 +05:45
sankalp b375762c37 feat(src): add ScreenCaptureWindow for screenshot functionality 2026-07-07 14:01:29 +05:45
sankalp adf525fc2f style(src/styles/window): add energy-mode icon styles and update game-mode color to use @on-primary 2026-07-06 21:14:22 +05:45
sankalp 6f441f2e6e feat(src/assets/icons/screenshot): add monitor, region, and window SVG icons for screenshot 2026-07-06 21:14:05 +05:45
sankalp a4b38e3b14 fix(src/window/panel/notch): cancel transient indicator so scroll can navigate 2026-07-06 20:52:34 +05:45
sankalp eaaf9645a2 feat(src/window/panel/notch/indicators): add MicrophoneIndicator class and integrate into Notch
Add MicrophoneIndicator to monitor microphone presence and mute state, updating UI via show/hide callbacks.
2026-07-06 20:35:21 +05:45
sankalp 59a80e47ea refactor(src/window/osd/components): remove MicrophoneOSDContainer implementation 2026-07-06 20:35:01 +05:45
sankalp 9c19b7446a refactor: remove microphone osd container 2026-07-06 20:34:44 +05:45
sankalp 4390e7cca0 style(src/styles/window): add #notch-mic to #notch-charging padding rule 2026-07-06 20:34:26 +05:45
sankalp df0e581773 feat(src/assets/icons/notch): add mic-on and mic-off SVG icons 2026-07-06 20:34:09 +05:45
sankalp a30ddc3fb6 refactor(src/window/osd/components): remove deprecated OSD capslock and keyboard layout components 2026-07-06 20:22:51 +05:45
sankalp 1d672eebac refactor(config): comment out icon and options in Mods.terminal 2026-07-06 20:22:35 +05:45
sankalp 65fdcc6189 refactor(src/services): streamline recording stop and screenshot handling, remove dead code
Simplify stop_recording by removing redundant process kills and file handling
Add guard to prevent reinitialization
Replace exec_shell_command_async with Gio.Subprocess and track pending screenshot
Refactor screenshot method to eliminate multi‑display special case
Clean up conversion logic and remove unused imports
2026-07-06 20:11:17 +05:45
sankalp 330d0f0805 feat(config): simplify screen capture description and update dependencies 2026-07-06 20:10:58 +05:45
sankalp 24250db1f9 refactor(config/hypr): switch to new modus path and comment out animation configs 2026-07-06 20:10:40 +05:45
sankalp a74be0ceb2 chore(src/window/launcher/plugins): remove built-in plugins 2026-07-06 19:50:06 +05:45
sankalp 9c74b0f606 refactor(launcher): remove launcher module files 2026-07-06 19:49:49 +05:45
sankalp 023d0be7c8 refactor(src): comment out LazyLauncher implementation and usage 2026-07-06 19:49:30 +05:45
sankalp 8a231540e5 feat: add launcher entry and update project metadata 2026-07-06 19:49:11 +05:45
sankalp fced1a0723 feat(src/window/panel): replace hardcoded config path with dynamic toml_file lookup 2026-07-06 17:39:23 +05:45
sankalp 43197521a8 refactor(src/window): replace get_relative_path with toml_file for config path resolution
The imports now use toml_file to load dock.toml and launcher.toml directly, removing the get_relative_path utility and simplifying path handling. This reduces indirect dependencies and clarifies configuration loading.
2026-07-06 17:39:06 +05:45
sankalp 965f93e418 refactor(src/utils): adjust base path constants and add toml_file helper 2026-07-06 17:38:47 +05:45
sankalp 7fdb3be0b3 refactor(config): replace get_relative_path with toml_file 2026-07-06 17:38:29 +05:45
sankalp 9ad25163f0 refactor(src/services): replace get_relative_path with toml_file for loading config 2026-07-06 17:38:09 +05:45
sankalp 6b7348ea20 refactor(src/window/notification): adjust notification markup handling and UI width constraints
- Escape markup text for summary and body to prevent injection
- Simplify Label creation for body with conditional null check
- Increase max_chars_width for summary and body lines
- Remove wrap and wrap_mode settings
2026-07-06 17:34:30 +05:45
sankalp c2f9ab4070 feat(src/window): add animation constants, layout tweaks and DockItem dataclass; refactor hover and occlusion handling
- introduced LERP_FACTOR, IDLE_THRESHOLD, ANIM_FPS and related layout constants
- added DockItem dataclass with render geometry and scale state
- refactored on_hover_enter/leave to schedule delayed hide with ticket comparison
- updated setup_occlusion_monitoring with typed check_dock_occlusion returning bool
- cleaned up destroy to remove canvas and timer IDs
2026-07-06 17:34:12 +05:45
sankalp 86e24de864 style(src/styles/window/dock.css): simplify and modernize dock window styling 2026-07-06 17:33:50 +05:45
sankalp 1ed6db4ae2 feat(src/assets/icons/notch): redesign charging.svg for dark theme compatibility
Update SVG to use ColorScheme-Text style and include version attribute for better theming support
2026-07-06 17:33:33 +05:45
sankalp d087c47aea feat(src/assets/icons/misc): add trash-empty.svg icon 2026-07-06 17:33:09 +05:45
sankalp 967503d0b7 fix(src/window/panel/notch): fix typo in charging.svg filename 2026-07-06 00:34:26 +05:45
sankalp 56ecc64531 style(src/styles/controlpanel): adjust background-color to @bg-a50 2026-07-06 00:34:09 +05:45
sankalp f1988e2d4f refactor(notch): rename charging.svg to charing.svg and update fill colors in SVG icons 2026-07-06 00:33:51 +05:45
sankalp 132622ac60 refactor(src/assets/icons/mic): simplify microphone SVG implementation
The SVG was streamlined by removing redundant CSS styles and simplifying path data, reducing file size and improving maintainability.
2026-07-06 00:33:33 +05:45
sankalp 2c645080ec style(src/styles/window): remove background property from battery widget 2026-07-05 23:20:58 +05:45
sankalp 2bb478425f chore(src/styles/controlpanel): bump version and update dependencies 2026-07-05 23:20:40 +05:45
sankalp 56f1a338b7 refactor(src/window/panel/notch): move icons to notch/ path and adjust sizes
Update icon paths to use notch/ prefix and increase size of charging indicator to 24px.
2026-07-05 23:11:38 +05:45
sankalp d27d1fcaaa feat(src/assets/icons/notch): add new icons for caps-lock, keyboard-layout, media-record, num-lock 2026-07-05 23:11:18 +05:45
sankalp 9edc524e3d chore: remove unused icon assets 2026-07-05 23:11:01 +05:45
sankalp ec65d8ead4 feat(src/window/panel/panel): add NumLockIndicator and ChargingIndicator, improve battery service initialization 2026-07-05 23:05:49 +05:45
sankalp c64d41b3e1 feat(src/assets/icons): add new notification icons and remove unused caps-lock-off.svg 2026-07-05 23:05:30 +05:45
sankalp a902f3d12a style(src/styles/window): update notch transient indicator comment and add numlock/charging selectors 2026-07-05 23:05:10 +05:45
sankalp 8bf198f745 feat(battery): replace Battery() with Battery.get_initial() for proper initialization 2026-07-05 23:04:52 +05:45
sankalp 754cde0278 feat(src/services): add NumLock service and refactor Battery documentation
Add new NumLock service to monitor NumLock LED state changes.
Refactor Battery service documentation and property cache handling.
Update imports to include NumLock.
2026-07-05 23:04:34 +05:45
sankalp f0c67c0483 fix(src/window/panel/notch): ensure monitoring started on indicator access 2026-07-05 22:27:20 +05:45
sankalp 43d8306454 feat(src/window/panel/notch): add CapsLockIndicator and KeyboardLayoutIndicator
Add transient indicator pages for caps lock and keyboard layout, update stack children and handling to show/hide after timeout.
2026-07-05 22:25:32 +05:45
sankalp 0618437c3f refactor(src/window/osd/components): drop unused CapsLock and KeyboardLayout imports 2026-07-05 22:25:15 +05:45
sankalp c19b993b2a refactor: remove CapsLockOSDContainer and KeyboardLayoutOSDContainer, and related show methods 2026-07-05 22:24:58 +05:45
sankalp 9fc6f95157 style(src/styles/window): add notch transient indicators CSS 2026-07-05 22:24:40 +05:45
sankalp 99654a7c07 refactor(indicators): switch Bluetooth import to services.bluetooth 2026-07-05 22:07:57 +05:45
sankalp 2d0cc2d270 feat(src/window/controlcenter): add right‑click context menu for Bluetooth device slot with pair/trust/remove actions
- Implement _on_button_press to show Gtk.Menu on right‑click.
- Provide Pair, Trust/Untrust, and Remove commands.
- Connect notify::connected-devices signal to refresh device list.
- Ensure graceful cleanup when device is removed.
2026-07-05 22:07:40 +05:45
sankalp 7057c750fb feat(src/services): add trust management for Bluetooth devices 2026-07-05 22:07:19 +05:45
sankalp 0ab1b97e90 feat(src/assets/icons/misc): add bluetooth-paired.svg icon 2026-07-05 22:07:00 +05:45
sankalp 4dd9361be8 refactor(src/window/notification/notification_center): scale notification icons to 35x35 for consistency and adjust widget sizing 2026-07-05 21:56:39 +05:45
sankalp 59376608dd feat(src/window/panel/notch): reduce visualizer bar count and integrate artwork image
Reduce bar count from 10 to 8 and adjust height limits, add CustomImage widget for artwork, update visibility handling to show/hide fallback and artwork
2026-07-05 21:14:56 +05:45
sankalp 3713d314aa style(src/styles/window): adjust margin-left from 8px to 6px 2026-07-05 21:14:38 +05:45
sankalp 86b02989e4 refactor(src/window/panel/notch): improve visualizer implementation and add static tunables
Replace random-based bar generation with deterministic sine animation, rename internal state and constants, split visualizer logic into explicit methods, update drawing to use style colors, consolidate signal and timer handling, and streamline idle/reset behavior.
2026-07-05 20:56:52 +05:45
sankalp 5240abd23d refactor(src/shared/widgets): replace @cache with @lru_cache(maxsize=512) for progress-related functions 2026-07-05 20:56:31 +05:45
sankalp a402cf436b refactor(src/services): centralize position polling guard methods
Add guard flag `_pos_polling` and wrapper methods `_start_pos_fabricator` and `_stop_pos_fabricator` to prevent multiple fabricator starts.
Update all calls to use the new wrappers for consistent lifecycle management.
2026-07-05 20:56:13 +05:45
sankalp 829693af00 refactor(src/window/panel/notch): simplify recording logic and add idle widget handling 2026-07-05 00:06:07 +05:45
sankalp 4d1f2ce7d1 feat(icons): reduce color-picker icon size to 24x24 and simplify SVG
Reduced dimensions from 32x32 to 24x24 and updated path to streamline rendering.
2026-07-05 00:05:49 +05:45
sankalp 1016b66e93 style(src/styles): add lockscreen and panel notch CSS 2026-07-05 00:05:29 +05:45
sankalp 089cc2c6cd feat: increase polling intervals for MPRIS status and position fabricators
- Change status fabricator interval from 250ms to 5000ms
- Change position fabricator interval from 1000ms to 2000ms
- Update poll_from and on_changed callbacks to match the new intervals
2026-07-05 00:05:09 +05:45
sankalp 36c691ff3f feat(src): implement lock notch UI with SVG corners 2026-07-05 00:04:51 +05:45
sankalp d8b9903b45 feat: add notch panel implementation 2026-07-04 22:27:52 +05:45
sankalp 1dc4a286c4 refactor: replace RecordingIndicator with Notch in panel UI 2026-07-04 22:27:35 +05:45
sankalp 5ba8f0e4d5 refactor(src/window/panel/components): remove recording_indicator module 2026-07-04 22:27:18 +05:45
sankalp 1c28f15f97 style(src/styles/window): add panel notch CSS for notch UI elements 2026-07-04 22:27:00 +05:45
sankalp 83716af207 feat(src/assets/icons/notch): add notch icons 2026-07-04 22:26:42 +05:45
sankalp 8d6e117136 build: add tomlkit dependency to requirements.txt 2026-07-04 21:25:13 +05:45
sankalp 8cb2d08175 feat(src/assets/icons/misc): replace imac.svg with updated gradient definitions
Update project version to 1.0.0 and refresh dependency list.
2026-07-04 21:23:54 +05:45
sankalp f55db03235 refactor(panel): remove redundant hide_dropdowns and changed_dropdown implementations
These methods were relocated to central handling via _get_all_buttons and manage_button_style_classes, simplifying the class.
2026-07-04 21:23:06 +05:45
sankalp ea815e33ca style(src/styles): add background-color and border to #outer-no-player-box-c
Add semi-transparent background and outline styling to the outer player box
2026-07-04 21:22:47 +05:45
sankalp 3e8dde6f35 refactor: adjust layer and event handling in dismissal UI 2026-07-04 21:22:28 +05:45
sankalp 572cd0c089 feat(icons): update SVG icons and bump version to 0.2.0 2026-07-04 21:22:10 +05:45
sankalp 3de654218c feat(config): add terminal options and update dependencies
Add Mods.terminal configuration for terminal icons and actions, bump version in pyproject.toml, and update dependencies including fabric from a specific commit.
2026-07-04 21:21:50 +05:45
sankalp bff5cf7962 style(src/window/todo): adjust comment to reflect widget package
JIRA-1337
2026-07-04 07:27:44 +05:45
sankalp 107efd595c refactor(src/window/controlcenter): remove battery monitoring module 2026-07-04 07:27:20 +05:45
sankalp a2cda4c3e6 chore(src/utils): drop unused dbus_helper and monitors modules and cleanup utils code 2026-07-04 07:27:02 +05:45
sankalp 01c193bd8e refactor(src/services): simplify TodoService and remove unused ConfigService stop function
Remove redundant import duplication, replace uuid with os.urandom, rename completion_rate to active, update property decorator, and clean up callback handling. Also removed unused stop_config_service function.
2026-07-04 07:26:44 +05:45
sankalp 274ffbfaed refactor(src/styles/window): remove unused CSS rules 2026-07-04 07:07:55 +05:45
sankalp bcb63eafe0 style(src/styles/widgets): remove unused CSS rules 2026-07-04 07:07:37 +05:45
sankalp c63f19a5d2 refactor(src/styles/notification): remove unused notification CSS 2026-07-04 07:06:48 +05:45
sankalp d46e4ca32b style(src/styles/launcher): remove unused launcher search and network password entry CSS 2026-07-04 07:06:30 +05:45
sankalp 14205de816 refactor(src/styles/controlpanel): streamline UI styles for compact macOS layout and remove legacy Apple seek bar 2026-07-04 07:06:13 +05:45
sankalp 4357339559 feat: add configuration documentation and update TODO checklist
Add detailed configuration documentation in README, describing TOML files, their purpose, and usage. Update the TODO checklist to reflect completed items and remove outdated entries.
2026-07-04 06:55:17 +05:45
sankalp 2cf846d022 refactor(src/window/launcher/plugins/wallpaper.py): remove unused hex color imports and helper functions 2026-07-04 06:48:40 +05:45
sankalp 21969c6c05 feat(src/assets/icons): simplify color-picker.svg implementation 2026-07-04 06:48:23 +05:45
sankalp 76f4650409 refactor(src/window/panel/components): drop google_lens_indicator and simplify command handling
Refactor ModPopup to use shell -c for commands, adjust icon size default, and improve button click handling. Remove unused GoogleLensIndicator component and related import/usage.
2026-07-04 06:47:59 +05:45
sankalp 23bbabf21d feat(src/utils): introduce GoogleLens CLI tool and update constants accordingly 2026-07-04 06:47:39 +05:45
sankalp ac061940bc feat(config): add Mods.color-picker and Mods.google-lens configurations 2026-07-04 06:47:19 +05:45
sankalp 89eb8db97b feat(config): switch configuration parsing to TOML and add google_lens support 2026-07-04 06:29:38 +05:45
sankalp bca67e255d feat(src/assets): add new SVG icons for Google Lens, Color Picker, and Terminal
Add SVG assets for Google Lens, Color Picker, and Terminal icons to enhance UI.
2026-07-04 06:29:20 +05:45
sankalp 0d11b68add feat(src/window): switch configuration from JSON to TOML and refactor pinned apps handling 2026-07-04 06:29:01 +05:45
sankalp e5a02015b3 build: add tomlkit to dependencies 2026-07-04 06:28:44 +05:45
sankalp 35dcbe4a82 feat(config): migrate launcher configuration to TOML
Migrate launcher configuration from JSON to TOML format, add new `launcher.toml` and `mods.toml` files, remove `launcher.json`, and update project metadata in `pyproject.toml` to version 0.2.0.
2026-07-04 06:28:27 +05:45
sankalp 66fa02d2da feat(gitignore): update gitignore 2026-07-04 06:21:02 +05:45
sankalp 532f01295d refactor(src/styles): remove colors.css 2026-07-04 05:30:41 +05:45
sankalp 895b44f3d5 refactor(src): relocate colors.css to src/styles
Moved stylesheet from src/shared/styles/colors.css to src/styles/colors.css
to simplify path and improve organization.
2026-07-04 05:30:23 +05:45
sankalp 69d54cbb62 refactor(src/utils): restructure import handling for AppName 2026-07-04 05:30:03 +05:45
sankalp 9b9528d84e refactor(src/styles/window): adjust CSS variable usage and improve window styling 2026-07-04 05:29:46 +05:45
sankalp 64368e1216 style(src/styles/widgets): adjust color variables and simplify widget styling 2026-07-04 05:29:28 +05:45
sankalp 789eb62e33 fix: remove redundant 'shared/' prefix from stylesheet path 2026-07-04 05:29:10 +05:45
sankalp 83e49096d0 chore(config/matugen): rename macos.css to modus.css 2026-07-04 05:01:12 +05:45
sankalp 09a01a7f41 fix(src/window/panel): handle missing label gracefully when updating dropdown 2026-07-04 05:00:54 +05:45
sankalp 901731711f refactor(src/window/controlcenter): refactor UI layout and battery icon handling in BluetoothDeviceSlot 2026-07-04 05:00:36 +05:45
sankalp c1e24f7cb4 refactor(styles): simplify color variables and update CSS constants
Add new color palette file and refactor constant definitions to use variable tokens.
2026-07-04 05:00:18 +05:45
sankalp 9c90de0dc8 feat(src): add recursive CSS file monitoring and streamline stylesheet setting
Monitor CSS files and their subdirectories for changes by walking the styles directory and connecting change events to each monitor. Simplify the `set_css` function by removing the unnecessary empty line and directly passing the path to `set_stylesheet_from_file`. This enhances file change detection and reduces redundant code.
2026-07-04 04:59:59 +05:45
sankalp 6c8eca2afe fix(src/window/settings): use set_title() instead of assigning to .title attribute
The title attribute assignment does not affect the window title; using set_title ensures the title is displayed correctly.
2026-07-04 01:30:09 +05:45
sankalp c796dc7bc5 refactor(config/hypr): streamline layer rules for blurs and animations 2026-07-04 01:28:08 +05:45
sankalp f68c076d98 chore(src/shared): update dialog titles and import ordering 2026-07-04 01:25:24 +05:45
sankalp 21f21c6d83 refactor(src/window/settings): reorder imports and set window title 2026-07-04 01:25:04 +05:45
sankalp 6d5d8cce88 feat(src/window/panel): rename panel title and update imports
Change title of create_control_window to "modus-controlcenter" and adjust Panel title to "mdous-bar". Update import ordering and remove redundant imports for clarity.
2026-07-04 01:24:41 +05:45
sankalp 15bf16d9d8 refactor(window): rename titles to prefixed modus- names 2026-07-04 01:24:23 +05:45
sankalp f8ef5c8da4 style: clean up stray comment markers in dock.css 2026-07-04 01:24:05 +05:45
sankalp ae17c172ce refactor(window/controlcenter): replace icon labels with Overlay widgets and reorganize imports 2026-07-04 00:34:07 +05:45
sankalp d1ca18da70 style(src/styles): adjust CSS for control center and widget icons 2026-07-04 00:33:50 +05:45
sankalp ae29326401 refactor(src/shared/widgets/flat_scale): simplify flat_scale drawing and add draw_value flag 2026-07-04 00:33:31 +05:45
sankalp 1594f9ff57 style(src/assets/icons/volume): switch color definitions to currentColor for theme compatibility 2026-07-04 00:33:14 +05:45
sankalp a89b142493 style(icons/brightness): replace hard‑coded fill with currentColor 2026-07-04 00:32:56 +05:45
sankalp 4cdb048a6c refactor(src/window/settings): replace SettingsSwitch with SmoothSwitch and simplify toggle handling 2026-07-03 23:16:02 +05:45
sankalp f381766929 feat(src/window/controlcenter): improve playback state handling and UI for multiple players
Add _on_map handler and connect "map" signal to update playing state.
Refactor button handling to use change-value signal and dynamic child management.
Update playback status notification to avoid duplicates and use current_status variable.
2026-07-03 22:59:45 +05:45
sankalp ce0746eeb2 refactor: simplify DBus menu service discovery and introspection handling 2026-07-03 22:59:26 +05:45
sankalp 8d40ac1a7f refactor(src/services): simplify menu cache implementation and remove unused imports
- Remove time import and unused typing items
- Streamline cache eviction and hit logic
- Replace sentinel handling with simpler checks
- Fix activation environment command arguments
- Improve logging messages and cache hit reporting
2026-07-03 21:31:41 +05:45
sankalp 6171577ecc refactor(controlcenter): remove animation effects and adjust visibility logic 2026-07-03 20:53:18 +05:45
sankalp 7dad927f21 feat(src/shared/window): add animate parameter to control scroll animation 2026-07-03 20:52:56 +05:45
sankalp 374d49148d refactor(src/window): use hyprctl dispatch to focus windows
Improve resilience of window focus by delegating to hyprctl.
2026-06-25 13:26:07 +05:45
sankalp cd1ac21273 refactor(src/services): improve property caching and simplify DBus property handling
Add internal property cache to reduce DBus round‑trips and streamline signal handling.
It also adjusts proxy flags and error handling for better robustness.
2026-06-25 13:15:00 +05:45
sankalp 65d1e43dc9 feat(src/services): bump version to 0.2.0 and update pinned dependencies
Update pinned dependencies and bump version to reflect the new stable release.
2026-06-25 12:30:22 +05:45
sankalp 2d6fd6c84b refactor(controlcenter): simplify refresh handling and add cancellation hooks
The changes replace timeout‑based refreshes with animation‑aware callbacks, improving responsiveness and preventing stale pending operations.
2026-06-24 12:53:30 +05:45
sankalp 3a05e123e7 refactor(src/shared): adjust default bezier curve for smoother scrolling
Use more balanced control points to improve animation responsiveness and visual flow
2026-06-24 12:53:11 +05:45
sankalp 287ae5f44c refactor(src/utils): refine desktop file name lookup and fallback handling
Use resolved name when present, else fall back to title; return None when no desktop file found
2026-06-24 12:52:54 +05:45
sankalp 0594759fed feat(services): streamline DBus menu caching and notification handling
- Consolidate logger disabling, cache empty menus with TTL, and move name resolution to a dedicated resolver to reduce duplication and improve performance
2026-06-24 12:52:36 +05:45
sankalp 8ec0ae267d chore(root): add ruff per-file ignore and fabric source in uv
Prevent lint errors in src/main.py and lock Fabric to a specific commit.
2026-06-24 12:52:17 +05:45
sankalp bbb250c6aa refactor(src/styles): reformat constant definitions
Adjust @define statements to proper syntax and remove outdated comment markers, improving readability and consistency.
2026-06-24 08:38:34 +05:45
sankalp 14580b4d68 refactor(service): enhance menu cache handling and emission sequence checks
Use lock to protect cache access, capture sequence for race‑safe idle emission, and check seq against extraction_seq to prevent stale menu updates.
2026-06-24 08:38:17 +05:45
sankalp bf47875b84 refactor(src/utils): remove GTK menu fallback and add invalidate on ActionMenuClient
Drop unused GTK menu parsing to simplify maintenance and add invalidate hook to clear cached items when menu state changes.
2026-06-23 14:31:12 +05:45
sankalp ab7ac85b80 refactor(src/services): use mutable list[int] for shared node counter in bounded DFS
Avoid resetting the counter per recursion level by using a mutable list; adds clarifying comments about the shared state.
2026-06-23 14:30:49 +05:45
sankalp bc07920f1a refactor(src/window/panel/components): adjust top-level menu filtering to respect visibility
Ensure only visible top-level items are considered
Prevent hidden items from appearing in the menu hierarchy
2026-06-23 14:29:06 +05:45
sankalp 2afbe05229 feat(src/utils): add ActionMenuClient and depth limits for menu parsing
Add flat GTK Action handling and guard DBus menu depth to prevent recursion and overflow.
2026-06-23 14:28:47 +05:45
sankalp b4d011d158 feat(src/services): deduplicate in-flight menu extractions
Prevents duplicate background extraction threads for the same WM class PID, avoiding race conditions and unnecessary work.
2026-06-23 14:28:29 +05:45
sankalp d4d087604b refactor(config): remove GTK_MODULES env var causing Gdk-CRITICAL assertion failures
Remove global env setting that interferes with Modus's GTK windows.
2026-06-23 14:11:43 +05:45
sankalp 6707e1e830 feat(src/window): migrate device monitoring to map/unmap events
Ensure monitoring starts only when the widget is shown and stops on hide, preventing timer leaks and unnecessary refreshes
2026-06-23 14:11:25 +05:45
sankalp 01fed4c52f feat(src/utils): centralize SESSION bus and shrink DBusMenuItem with __slots__
Prevent duplicate bus connections and cut per-instance memory usage.
2026-06-23 14:11:07 +05:45
sankalp d89b392a0e refactor(src): lazy‑load Launcher and refine GlobalMenuService cache invalidation
Prevents premature instance creation and stale empty‑menu cache entries
2026-06-23 14:10:49 +05:45
sankalp 3d8b1b895e feat(root): add libdbusmenu-gtk3 and libdbusmenu-qt5 to PACKAGES
Add DBus menu libraries required for proper GTK and Qt integration in the application
2026-06-23 14:10:31 +05:45
sankalp 99d35afa36 feat(src/services): capture target pid early and propagate it through extraction pipeline
Add captured PID to logs, DBus client discovery, and fallback path selection to improve consistency and avoid race conditions; use PID inheritance checks for accurate client matching.
2026-06-22 18:57:41 +05:45
sankalp 5663499f32 feat(src/utils): implement universal DBus + GTK Global Menu Client
Add support for multiple DBus backends and GTK GMenuModel fallback, improve thread safety and caching.
2026-06-22 18:38:24 +05:45
sankalp 09d84598cb feat(src/services): add LRU menu cache and thread‑safe extraction sequencing
Prevent stale UI updates and reduce DBus load by caching menus with automatic eviction when limit exceeded
2026-06-22 18:38:07 +05:45
sankalp ef0b9f0b68 feat(deps): lock fabric to specific commit and add required dependencies
Align with latest stable API and ensure reproducible builds
2026-06-22 17:46:34 +05:45
sankalp e8f3e4dd8b feat(src/utils): expose Gio, GLib, logger from fabric.utils
Use unified imports from fabric.utils instead of gi.repository to simplify imports and align with project convention
2026-06-22 17:46:16 +05:45
sankalp 96bb00c199 refactor(src/services): refactor DBus menu discovery and pre-warm PID cache
Pre-warm DBus PID cache using a ThreadPoolExecutor to instantly resolve service PIDs, centralize registry locking, and improve robustness and performance.
2026-06-22 17:45:56 +05:45
sankalp 14f360eb3a feat(root): add appmenu-gtk-module
Add appmenu-gtk-module to PACKAGES to enable proper desktop menu integration.
2026-06-22 17:45:36 +05:45
sankalp 2a15d71c33 feat(globalmenu): got a prototype of working globalmenu for some apps 2026-06-22 15:58:10 +05:45
sankalp dd9cd58106 refactor(src/window/panel/components): simplify visibility toggle in _on_title_button_clicked
Use Toggle for clearer intent
2026-06-17 05:32:42 +05:45
sankalp 754d69a86f feat(src/utils): add required dependenciesfor Wayland support
Add essential libraries for Wayland and system integration.
2026-06-17 05:32:25 +05:45
sankalp c34ade9423 fix(src/shared/window): suppress harmless disconnect errors in logger
Reduce noise by only logging disconnect errors that aren't "nothing connected"
2026-06-17 05:32:07 +05:45
sankalp f4d0f46e35 feat(src/shared/dialogs): set wmclass for about dialog
Ensure the About dialog specifies a proper WM_CLASS for correct window identification
2026-06-17 05:31:50 +05:45
sankalp b1b9dcc061 fix(src/window/osd/components): improve error handling by logging exceptions
To aid debugging and visibility of errors in OSD components.
2026-06-17 05:21:53 +05:45
sankalp 9cbde2c58f refactor(src/window):improve error handling with logging 2026-06-17 05:21:36 +05:45
sankalp 420688e9a7 feat(src/utils): replace printwith logger.error for consistent error logging
Use logger.error across utils to centralize error handling and allow configurable logging levels.
2026-06-17 05:21:19 +05:45
sankalp 1aed6ea816 refactor(src/shared): replace print statements with logger.error
Use centralized logging instead of stdout prints to improve observability and consistency
2026-06-17 05:21:02 +05:45
sankalp 48231b3bc2 feat(src/services): improve error handlingwith detailed logging
Replace silent exception swallowing with explicit logging via logger.error to aid debugging and observability
2026-06-17 05:20:44 +05:45
sankalp 260d215b6b refactor(src/window/controlcenter): simplify bluetooth status handling and UI updates
Cleanup duplicated UI updates and improve signal handling logic for better stability.
2026-06-17 05:15:03 +05:45
sankalp 13c3036a62 feat(src/shared/window): add snap_to_size method for instant resizing without animation
Allows resizing to a specific height instantly without animation
2026-06-17 05:14:46 +05:45
sankalp 6c478710dc refactor(src/window/panel/components): remove redundant hide_control_center call in on_network_direct_changed
Remove redundant hide_control_center(self.wifi_window) which had no effect after UI redesign; simplifies logic and avoids unnecessary side effects.
2026-06-17 04:53:01 +05:45
sankalp a382f73795 feat(src/window/controlcenter): enhance bluetooth handle with fallback and enum
Introduce BTState enum, use rfkill fallback for enable/disable, and preserve network slots to avoid UI jitter.
2026-06-17 04:52:44 +05:45
sankalp 929e525589 feat(src/shared/window): addanimated scrollable window and close_applet cleanup
Introduce Animator‑driven height transitions for smoother scrolling and ensure proper cleanup when the applet window closes.
2026-06-17 04:52:26 +05:45
sankalp bceebd646c feat(src/shared/widgets):add bezier_curve property and trigger animation on active 2026-06-17 04:52:09 +05:45
sankalp 32080ab17f feat(src/services): add bluetooth device proxy and wifi connection logic
Implemented robust BluetoothDevice proxy handling and enhanced Wi‑Fi reconnection with async callbacks and error handling.
2026-06-17 04:51:51 +05:45
sankalp 7a5d90829a refactor(src/window/controlcenter): centralize fallback artwork path and streamline UI updates
Replaced get_relative_path with PLAYER_FALLBACK_ART and simplified image handling via apply_player_art.
2026-06-17 03:33:45 +05:45
sankalp bd78ed9aab feat(src/styles): add dark theme styling and widget CSS
Add CSS for about, battery, calendar, and system info widgets, including layout adjustments, color theming, and interactive component styling.
2026-06-17 03:20:46 +05:45
sankalp 9231460c6b chore(src/shared/styles): delete legacytheme and widget CSS 2026-06-17 03:20:29 +05:45
sankalp a539d02821 refactor(src): adjustpath references from shared/styles to styles
Simplify style file paths by removing redundant "shared" prefix, aligning with updated directory layout.
2026-06-17 03:20:11 +05:45
sankalp 1def82aeb9 refactor(src/window/controlcenter): simplify MPRIS handling and add aggressive cache cleanupRemoved unused imports, merged player manager, and immediately clean cache to prevent leaks 2026-06-17 03:18:24 +05:45
sankalp fa2c157663 fix(src/shared/window): fix window visibility check and margin duplication
Fixes logic error causing popup window to be created when invisible and prevents redundant margin updates.
2026-06-17 03:18:06 +05:45
sankalp bffedbe3ae feat(src/shared/styles): narrowmin-width to match standard player width
Reduced min-width to align with design specifications and maintain consistent UI across platforms.
2026-06-17 03:17:49 +05:45
sankalp e4d139d541 refactor(src/services): rename MprisPlayer to PlayerService and streamline MPRIS integration
Remove legacy PlayerManager implementation and simplify signal handling for DBus players
2026-06-17 03:17:31 +05:45
sankalp 66af39f247 refactor(src/window/controlcenter): migrate WiFi handling to use │
│ network_service abstraction                                                  │
│                                                                              │
│ Updated logic to delegate network operations through NetworkService, renamed │
│ signal listeners, and simplified connectivity checks focusing on service     │
│ availability rather than session object emission.
2026-06-17 02:01:35 +05:45
sankalp 1ab30f6915 refactor(src/window/controlcenter): migrate WiFi handling to use network_service abstraction
Updated logic to delegate network operations through NetworkService, renamed signal listeners, and simplified connectivity checks focusing on service availability rather than session object emission.
2026-06-17 02:00:44 +05:45
sankalp dc150aee81 refactor(src/services): drop unused NetworkClient and simplify network handling
Prevent unused NetworkClient import and remove extensive network code that was blocking release; streamline to only Wifi service and needed helpers.
2026-06-17 02:00:26 +05:45
sankalp 9907acbce2 refactor(src/services): simplify battery.py imports and drop unused gi dependencies
Remove unused gi imports, streamline dependencies, and align with the updated module structure.
2026-06-17 01:49:16 +05:45
sankalp 87884eef09 feat(src/shared): add flat scale widget and smooth-switch styling
Implement animated flat scale widget with CSS styling and smooth-switch UI enhancements
2026-06-17 01:46:19 +05:45
sankalp 687c5d6bcf refactor(src/window/osd): replace Brightness.get_initial() with Brightness() to drop encapsulationRemove Brightness.get_initial() call and instantiate Brightness directly, simplifying the API and making the service easier to test and extend. 2026-06-17 01:46:02 +05:45
sankalp f78534dce0 refactor(src/window): migrate control center windows to AppletWindow and simplify UI
Replace Window base with AppletWindow for consistency, switch to FlatScale, and streamline mouse capture handling.
2026-06-17 01:45:43 +05:45
sankalp b8d3e74afd feat(src/services): rename BatteryService to Battery and add availability properties
Rename service to Battery, expose availability, charging, discharging properties and simplify interface for clarity
2026-06-17 01:45:24 +05:45
sankalp 400b8db954 feat(root): add ddcutil to install script
Add support for monitor DDC/CI control via ddcutil.
2026-06-17 01:45:06 +05:45
sankalp 850c41cddb Merge branch 'dev' of github.com:S4NKALP/Modus into dev 2026-06-17 01:26:57 +05:45
sankalp 0e41e5bb93 Customize modus.lua 2026-06-17 01:26:53 +05:45
sankalp 2a81a27ace feat(src/window/panel/components): improve Hyprland command dispatch syntax and workspace navigation
Use quoted commands and explicit method calls to avoid shell parsing issues.
2026-06-16 22:24:56 +05:45
sankalp d887e22f0b refactor(src/window/launcher/plugins): migrate subprocess calls to exec_shell_command_asyncUse unified async execution and updated hyprctl dispatch syntax 2026-06-16 22:24:36 +05:45
sankalp 7371b4fcb8 refactor(src/window): replace subprocess.Popen with exec_shell_command_async in dock.py
Use async-friendly API and drop shell=True to enhance safety and performance.
2026-06-16 22:24:19 +05:45
sankalp 0c266e9150 refactor(src/shared/styles): replace var(--radius-*) with apply(radius-*) throughout shared styles
Use apply() to align with the updated CSS variable system and ensure consistent radius theming
2026-06-16 22:24:02 +05:45
sankalp e6a4c48b2f feat(root): add hyprland integration and update dependenciesUpdate Fabric dependency to latest commit, pin versions in requirements.txt, enable Windows Subsystem for Linux support and add monkeypatch for hyprland dispatcher to ensure correct Lua calls 2026-06-16 22:23:44 +05:45
sankalp d45487ff13 Merge branch 'macos' into dev 2026-05-24 22:10:16 +05:45
sankalp 5502f85dd1 refactor(src/shared/styles): replace hardcoded CSS values with design token variables
Introduce consistent design tokens for radii and colors, replacing alpha() and hardcoded values with theme variables for easier theming and maintenance.

- New Features:   - Add CSS variable usage for radii (var(--radius-*)) and color tokens (@border-subtle, @text-main, @accent)
- Enhancements:
  - Replace hardcoded border, radius, and color definitions with variable references
  - Align styling with the project's theme system
- Bug Fixes:
  - No bug fixes included
2026-05-14 15:31:01 +05:45
sankalp 60c63308db feat(root): add Modugen template configuration to install script
This change adds automatic configuration of Matugen templates for Modus themes, ensuring a consistent look‑and‑feel across Hyprland and terminal setups. It introduces checks to prevent duplicate entries and provides user feedback via progress and success messages.

- New Features:
  - Added Modus template blocks for Matugen (modus and hyprland)
  - Integrated progress and success messaging for template installation
- Enhancements:
  - Updated Hyprland Lua path to an absolute location
  - Added validation for existing Matugen config file
- Bug Fixes:
  - None
2026-05-14 15:20:46 +05:45
sankalp 6a23002738 migrate to lua for hyprland>=0.55 2026-05-14 15:20:46 +05:45
sankalp 510e4dce42 Merge branch 'macos' into dev 2026-05-06 19:01:39 +05:45
sankalp d99f1e87c2 update 2026-05-06 18:55:31 +05:45
sankalp 63f0b046ca feat(src/window):restructure dock UI and application switcher using config‑driven layout 2026-05-03 22:06:48 +05:45
sankalp be308191c5 feat(src/window/panel): add persistent battery, network and bluetooth indicators with visibility handling and improve dropdown and config-driven layout logic
The refactor introduces persistent indicator widgets and updates how visibility and layout are managed based on configuration changes.

New Features
- Added BatteryIndicator, NetworkIndicator and BluetoothIndicator as persistent panel children.
- Implemented visibility toggling for each indicator according to configuration and battery presence.
- Added debug prints when an indicator’s visibility changes or a battery is not detected.

Enhancements
- Updated dropdown actions to use `get_about_window()` and `get_settings_window()` for About and System Settings entries.
- Switched layout rebuilding to use `get_config_all()` and now only rebuilds when specific keys actually change.
- Removed manual recreation of indicators; visibility is controlled via `show()`/`set_visible()`.
- Consolidated changed‑key detection and added logging of rebuild reasons.
- Streamlined config key checks to use `config_data.get(..., True)`.

Bug Fixes
- Fixed BatteryIndicator to hide and log when no battery is detected.
- Corrected use of `config_data.get()` with appropriate fallback values.
- Updated layout updates to use `show()` and trigger a resize queue instead of `show_all()`.
2026-05-03 22:06:42 +05:45
sankalp 704c8b229c feat(src/shared): introduce settings window and refine visibility configurationAdd a dedicated settings window with full CSS styling and improve UI consistency
- New Settings window implementation with styling and layout
- Updated visibility configuration to use direct configuration keys
- Simplified layer‑shell positioning logic and improved reliability

Enhancements- Refactored MouseCapture geometry calculations for cleaner code
- Integrated size‑allocate handler to maintain input region sync
- Added global About window singleton and improved toggle behavior

Bug Fixes
- Fixed potential index errors in MouseCapture coordinate calculations- Resolved missing imports and path issues for icon assets
2026-05-03 22:06:35 +05:45
sankalp ebd50e585c refactor(src/utils): remove unused default settings
Remove several default configuration entries that are no longer required, cleaning up dead code and reducing configuration surface.

- Cleanup: drop unused constants
- Maintenance: simplify DEFAULT dict
2026-05-03 22:06:28 +05:45
sankalp 244a913d96 feat(src/services): add config persistence, reload handling and notification pruning on config change
Add ability to persist current configuration to disk and trigger reloads, expose set() and save() methods, monitor the config directory for changes, and adjust notification history based on config modifications.

- New Features
  - Implement `save()` method to write config to file and trigger reload
  - Add `set()` method for in‑memory config updates
  - Extend file monitoring to include parent directory
  - Rename `get_all_config` to `get_config_all`
- Enhancements
  - Refine reload logic to correctly capture previous state via `_last_notified_config`
  - Trigger reloads on additional file‑monitor events (CREATED, DELETED)
  - Prune cached notifications according to config changes (`notification_ignored_apps`, `notification_limited_apps_history`)
- Bug Fixes
  - Resolve race condition where reload‑pending flag could be left set
  - Ensure callbacks are notified on every reload request
  - Fix stale comparison of config values in `has_changed`
2026-05-03 22:06:23 +05:45
sankalp 791400f437 chore(src/services): remove auth service module- Removed legacy authentication service code.
- Cleaned up unused imports and configuration.
2026-05-03 20:20:05 +05:45
sankalp 27c8bb5151 chore(root): remove unused dependencies
Removed pyotp, pyzbar, and thefuzz from pyproject.toml and requirements.txt to simplify dependencies.

- Enhancements
  - Cleaned up redundant dependencies.
- Bug Fixes
  - None.
2026-05-03 20:20:01 +05:45
sankalp 2c6a75970a refactor(src/utils): replace urllib with httpx and add currency symbol mapping
Why: Modernize HTTP client usage and expose currency symbols for conversion.

New Features
- Added `CURRENCY_SYMBOLS` mapping from symbols to currency codes.
- Switched all external requests to `httpx` with custom headers and redirects.

Enhancements
- Increased timeout to 10 seconds and enabled `follow_redirects=True`.
- Centralized error handling with explicit status‑code checks.

Bug Fixes
- Added proper exception handling for JSON parsing to avoid silent failures.
- Improved error messages for non‑200 responses.
2026-05-03 20:16:58 +05:45
sankalp 730b7b1446 feat(src/window/controlcenter): migrate artwork caching to use httpx
- New Feature: Replace urllib.request with httpx for fetching artwork URLs, providing timeout and redirect support.
- Enhancement: Added proper HTTP status code handling and early exit on download cancellation.
- Bug Fix: Gracefully handle non‑200 responses and prevent resource leaks during network operations.
2026-05-03 20:16:52 +05:45
sankalp 746acee1d2 feat(root): add httpx dependency
Add httpx>=0.28.1 as a new HTTP client dependency.

New Features- Added httpx>=0.28.1 to pyproject.toml and requirements.txt.

Enhancements
- Updated uv.lock to include httpx package metadata.

Bug Fixes
- None.
2026-05-03 20:16:49 +05:45
sankalp ca45348827 refactor(src/window/desktop): replace urllib with httpx in http_get_json
- Replace urllib.request with httpx.get to simplify HTTP handling and improve error resilience
- Update docstring to reflect httpx usage- Remove unused json and urllib.request imports
- Streamline header and timeout configuration
2026-05-03 20:16:44 +05:45
sankalp 3e5552b7f3 fix(src/window/launcher/plugins): refine calculator unit conversion parsing
The updated regex now matches non‑numeric unit prefixes, and units are normalized before conversion, improving accuracy and preventing mismatches.

- Bug Fixes: Fixed incorrect unit detection that caused failed conversions.
- Enhancements: Added unit cleaning (`converter.clean_type`) to standardize input.
- New Features: None.
2026-05-03 20:16:38 +05:45
sankalp d51f30f058 feat(src/window/launcher): trigger search on new text instead of clearing results
- Show applications when query is empty
- Schedule search via GLib timeout
- Improves UI responsiveness and correctness
2026-04-25 08:48:01 +05:45
sankalp f92c42d224 remove bloatware plugins 2026-04-25 08:30:03 +05:45
sankalp 6577c19dcb related to memory leak 2026-04-23 16:09:52 +05:45
sankalp 7eb21daf2f hope it fix memory leak 2026-04-22 21:18:39 +05:45
sankalp 19575b5138 memory fixed :( 2026-04-22 21:17:26 +05:45
sankalp a656eda0ec memory fixed :( 2026-04-22 21:17:09 +05:45
sankalp 30a8ab5510 refactor(src/shared/styles): drop unused color definitionsRemoved the colors.css file that defined unused theme variables, reducing bundle size and eliminating stale style references.
- New Features: —
- Enhancements: removed unused color definitions
- Bug Fixes: —
2026-04-10 18:41:57 +05:45
sankalp 202cc9c6af feat(src):generate colors.css automatically and monitor style changes 2026-04-10 18:40:26 +05:45
sankalp 6449da8c27 feat(root): bump version to 0.2.0 and update dependencies
- 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
2026-04-10 18:40:22 +05:45
sankalp ffb9bc081d fix(root): Remove.py extension from lock command in README
- Corrected lock command reference from `uv run lock.py` to `uv run lock` to match the intended executable, fixing documentation error.
2026-04-10 17:17:03 +05:45
sankalp 89524a9787 chore(root): update .gitignore and regenerate uv.lockUpdated .gitignore to reflect new config locations and removed outdated ignore patterns.
- 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.
2026-04-10 17:14:07 +05:45
sankalp af216b5367 chore(config): Remove legacy configuration files
- New Features: None
- Enhancements: None
- Bug Fixes: None
2026-04-10 17:13:55 +05:45
sankalp dadf548bdb feat(root): add run_app and run_lock helper functions
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.
2026-04-10 17:11:32 +05:45
sankalp 4f4636d469 chore(modules): remove controlcenter battery module 2026-04-10 17:11:32 +05:45
sankalp 77d042f542 feat(config):reorganize config files and enhance launcher 2026-04-10 17:11:32 +05:45
sankalp 9f8decba3f chore(assets): remove deprecated icon assets
Enhancements
- Deleted legacy Bluetooth icons (bluetooth-clear.svg, bluetooth-off.svg, bluetooth-off-clear.svg)
- Removed Wi‑Fi connecting icon (wifi-connecting.svg)
- Deleted default.png and modus.png placeholders
- Cleaned up unused screenshots and wallpaper images

New Features
- None

Bug Fixes
- None
2026-04-10 17:11:32 +05:45
sankalp e4813f35a0 feat(root): implement dynamic todo list refresh and UI enhancements
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.
2026-04-10 17:11:32 +05:45
sankalp 235f53b6a2 chore(scripts): remove deprecated helperscripts
- 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
2026-04-10 17:11:32 +05:45
sankalp cd869c2ff1 chore(styles): use bg for dock background 2026-04-10 17:11:32 +05:45
sankalp 5fa0016ad1 Revert "chore(styles): adopt bg color for dock background"
This reverts commit de3d5728a62f02c4fe1fbb5c759a28cb7a156003.
2026-04-10 17:11:32 +05:45
sankalp 770cea69a9 chore(styles): adopt bg color for dock background
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
2026-04-10 17:11:31 +05:45
sankalp f86476d550 refactor(modules): reorganize importsand add WaylandWindow alias
Enhancements- Reorder imports for readability
- Expose WaylandWindow alias via explicit import
- Remove unused imports and consolidate utilities
2026-04-10 01:18:31 +05:45
sankalp fcd3258a2c refactor(utils): simplify unknown handling in format_window
- 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
2026-04-10 01:18:20 +05:45
sankalp 74f16f4d15 refactor(scratch): drop unused MPRIS test- No new features
- No enhancements- No bug fixes
2026-04-10 01:13:35 +05:45
sankalp ad6d35fe46 feat(modules/panel/components): adjust dropdown capture layer and pointer widget assignments
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.
2026-04-10 01:13:29 +05:45
sankalp 38de0c66ed feat(widgets): enhance mouse capture handling and dropdown escape keybinding
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.
2026-04-10 01:13:23 +05:45
sankalp cb2e6053f2 feat(styles): add active pseudo‑class styles for panel and related buttons
Enhancements
- Added `:active` variants for panel-button, battery-button, network-button, bt-button, tray-button, and global-menu, mirroring existing hover styling.
- Ensures consistent visual feedback when these components are active.
2026-04-10 01:13:07 +05:45
sankalp 150ec6662c bugfix(modules/panel): ensure pointing widget assignment for interactive elements 2026-04-10 01:12:58 +05:45
sankalp 8337971e1e feat(widgets): replace custom animationmanager with new Animator-based implementation
Replace legacy animation manager with a unified Animator utility, improving performance and simplifying animation control.

- New Features  - Integrated Animator with custom easing functions (ease_out_quint, ease_in_cubic) for consistent 120 FPS animations.
  - SlideRevealer now uses Animator.play/stop API, exposing simplified control.
- Enhancements
  - Simplified animation lifecycle: start/stop handled via Animator instead of manual timer.
  - Pixel‑accurate positioning using int(round(...)) for smoother motion.
  - Reduced memory usage by removing unused timer and container tracking.
- Bug Fixes  - Fixed stale timer references and redraw queue clearing race conditions.
  - Corrected handling of zero‑size dimensions to properly finalize animations.
  - Removed redundant AnimationManager import and idle_add boilerplate.
2026-04-10 00:14:21 +05:45
sankalp 27c5ee2e36 refactor(modules/notification): consolidate Gtk importMove the Gtk import from gi.repository into the top‑level imports to simplify code and avoid duplicated imports.
Details
- New Features: - Enhancements:
- Bug Fixes:
2026-04-10 00:10:50 +05:45
sankalp adb87456c7 refactor(modules): Clean up imports and centralize utilities- Enhancements:
- Remove redundant gi.repository imports
  - Move common utilities (GLib, GObject, logger, os) into fabric.utils
  - Centralize GLib usage and reduce namespace pollution
2026-04-10 00:10:40 +05:45
sankalp 9847bdf884 refactor(utils): consolidate imports to fabric.utils
Removes unused `json` import and refactors imports to pull `GLib`, `Gtk`, `logger`, and `os` from `fabric.utils`, reducing module proliferation.

Details:
- Enhancements: Simplified import structure, removing redundant dependencies.
- Bug Fixes: None.
2026-04-10 00:10:33 +05:45
sankalp 76c409fce1 fix(services): clean up importsand simplify Seeked handling
- New Features:
- Enhancements: Added module‑level logger import.
- Bug Fixes: Simplified Seeked handling and corrected metadata type annotation.
2026-04-10 00:10:24 +05:45
sankalp eb12354d00 refactor(widgets): migrateGTK imports to fabric.utils
Migrate GTK-related imports from gi.repository to fabric.utils and remove outdated require_version calls.

- Remove redundant gi.require_version declarations
- Replace gi.repository imports with fabric.utils equivalents
- Align import ordering for consistency
2026-04-10 00:10:02 +05:45
sankalp e7a7d2c47e fix(services): Properly define and emit Seeked signal with correct GObject typing
- 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
2026-04-09 23:30:43 +05:45
sankalp cdc82c4c7f feat(modules): improve application searchmatching logic
- 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
2026-04-09 23:30:39 +05:45
sankalp 4346c54fa0 feat(utils): enhanceicon resolution with robust desktop entry parsing and error handlingNew Features
- 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.
2026-04-09 23:30:34 +05:45
sankalp af5e7b2d79 feat(scratch): Add test for MPRIS signal emission handling
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
2026-04-09 23:30:25 +05:45
sankalp b6ecc72af8 feat(modules): improve dock auto-hide logic and refactor pinned app handling
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.
2026-04-09 22:41:12 +05:45
sankalp 70a0c2c9e0 fix(root):remove glace-git from install script 2026-04-09 21:38:06 +05:45
sankalp 6b56db0882 feat(styles): add dock CSS with interactive states and transitions
- 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
2026-04-09 19:33:02 +05:45
sankalp 5e005b1a4e feat(root): AddDock module integration
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.
2026-04-09 19:32:56 +05:45
sankalp 345ef643e1 refactor(utils): replace requests with urllib and improve error handling
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
2026-04-09 19:20:55 +05:45
sankalp 40ddabe7fc refactor(modules/desktop): simplify Deskwidgets to manage windows instead of being a window
- 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.
2026-04-09 19:20:49 +05:45
sankalp 5b2afe7c9a feat(root): add deskwidget layout options and clean up dependencies
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.
2026-04-09 19:20:41 +05:45
sankalp e1ebc0acce style(styles): refineswitcher button and workspace selection styling
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
2026-04-09 18:54:38 +05:45
sankalp e7af41805f refactor(modules):simplify UI and drop Glance integration 2026-04-09 18:54:29 +05:45
sankalp c214d2fade style(styles): modernize weather widget CSS and add condition gradient themes
- 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
2026-04-09 18:47:32 +05:45
sankalp f3386ab7a0 feat(modules/desktop): Refactor weather widget layout with header/footer and dynamic gradient styling
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
2026-04-09 18:47:17 +05:45
sankalp a3edf9c323 fix(utils):ensure current_active_wm_class is set when updating active app 2026-04-09 18:34:05 +05:45
sankalp 92c4f20d79 feat(modules/panel/components): add wmclass parameter to AboutApp creation
- 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.
2026-04-09 18:34:00 +05:45
sankalp 0c4a375ff6 feat(widgets): enhance desktopfile discovery and icon loading
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
2026-04-09 18:33:50 +05:45
sankalp 8f6042634f feat(services): add current_active_wm_class tracking and signal, fix default active app name
- New Features
  - Added `current_active_wm_class_changed` signal and `current_active_wm_class` read‑write property.
  - Implemented setter that emits the signal when the value changes.
  - Initialized `_current_active_wm_class` and integrated it into active window updates.
- Enhancements
  - Extended active window handling to include window class information.
- Bug Fixes
  - Corrected default active application name from "Hyprland" to "Finder".
2026-04-09 18:33:40 +05:45
sankalp d47537e627 feat(modules/panel/components): addhot-reload support and config‑based visibility filtering to system tray
New Features
- Enable dynamic hiding of tray items using the `systray_ignore` configuration.

Enhancements
- Track tray item instances for hot‑reload and refresh visibility on config changes.
- Improve logging, tooltip handling, and icon lookup for better debugging.

Bug Fixes
- None
2026-04-09 18:29:01 +05:45
sankalp dc7d45d86a feat(root): add systray_ignore and improve notification configuration formatting
New Features
- Add structured `notification_limited_apps_history` entries.
- Introduce `systray_ignore` to filter background applications.

Enhancements
- Refactor `notification_ignored_apps` array layout for clearer presentation.
- Adjust comma and field ordering in the configuration file.

Bug Fixes- None.
2026-04-09 18:28:53 +05:45
sankalp 63862a08da feat(modules/panel): hide tray items when empty and sync visibility on config changes
This update ensures the panel's tray is hidden when there are no visible items and updatesits visibility automatically when the configuration changes or when notifications are added
or removed.

New Features:
- Add `_update_tray_visibility` method that hides the tray when empty and updates UI
  accordingly.
- Connect `tray` "add" and "remove" signals to trigger visibility updates.
- Adjust chevron button visibility, icon, and left margin based on tray state.

Enhancements:
- Invoke visibility update on panel initialization, DND changes, and configuration changes.
- Reset visual elements (chevron icon, margin) when the tray becomes hidden.
- Preserve layout spacing improvements when tray is hidden.

Bug Fixes:
- Prevent stale tray visibility state after configuration updates.
2026-04-09 18:28:43 +05:45
sankalp 70ba69b116 enhancements(modules/controlcenter): Safely access device.connection and device.paired attributes using getattr with default False 2026-04-09 18:28:35 +05:45
sankalp a85513d6a6 revert: use previous icon for now 2026-04-09 18:17:09 +05:45
sankalp 56ad44842e feat(root): migrate to uv‑managed environment
- Updated README to use `uv run lock.py` for lock‑screen binding
- Replaced pip install with `uv sync` and migrated to an uv‑managed Python virtual environment- Marked Installation Script and migration as completed in the TODO checklist
2026-04-02 23:25:42 +05:45
sankalp 7f588bbf47 feat(assets): streamline battery andvolume icons
- Enhancements: Use viewBox, drop inline CSS, and simplify path data
- Enhancements: Ensure consistent white fill and improve scaling behavior
- Bug Fixes: Remove theme‑specific color class references that could cause rendering issues
2026-04-02 23:13:47 +05:45
sankalp 118387aa69 feat(config):Update power mode icons and adjust startup commands 2026-04-02 23:13:47 +05:45
sankalp c22ea5dfda refactor(modules): simplify SVG asset handling across modules
Enhancements:
- Add optimized night‑variant detection for weather icons using a predefined list
- Replace `Svg` usage with direct `svg_file` calls throughout the todo widget, removing redundant relative‑path logic
- Update dock and battery modules to load assets via direct paths, eliminating unnecessary `get_relative_path` calls- Introduce `WEATHER_CACHE_TIMEOUT` constant and tidy up unused imports (`WEATHER_EMOJI_MAP` removed)
- Minor formatting and structural clean‑ups that improve code readability

Bug Fixes:
- Remove dead import of `WEATHER_EMOJI_MAP` and unused constant `WEATHER_EMOJI_MAP`
- Correct syntax of `condition_em` initialization to avoid potential rendering issues

New Features:
- None.
2026-04-02 23:13:47 +05:45
sankalp 017c127a44 chore(root): migrate touv and simplify dependencies
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.
2026-04-02 23:13:47 +05:45
sankalp f123de9a52 refactor(utils):simplify Wi‑Fi icon path resolution 2026-04-02 23:13:47 +05:45
sankalp f7355765f7 Merge branch 'macos' into dev 2026-04-02 21:10:14 +05:45
sankalp 5656609348 feat(modules/desktop): addweather SVG icon mapping and improve condition label handling
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.
2026-03-23 23:40:31 +05:45
sankalp c35550d209 feat(assets/icons/weather): add clear, clear-night, and windy weather icons
New Features
- Added `weather-clear.svg`
- Added `weather-clear-night.svg`
- Added `weather-windy.svg`
2026-03-23 23:40:23 +05:45
sankalp 7a21d34680 feat(assets): add caps-lock and keyboard layout icons
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.
2026-03-23 23:34:15 +05:45
sankalp 88e53ac9b7 refactor(config): Defer import ofstart_config_service to reduce startup overhead
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
2026-03-23 23:34:11 +05:45
sankalp 231645d8f9 refactor(styles): rename selectors and add min-width to container
- 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
2026-03-23 23:34:07 +05:45
sankalp ef4065bc1f refactor(modules): improve exception handling and simplify service usage
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
2026-03-23 23:34:03 +05:45
sankalp 34cfb2f49e feat(root): add keyboard layouts, OSDWindow, and update services & utilities
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
2026-03-23 23:33:53 +05:45
sankalp 129906cb9c feat(root): add application switcher 2026-02-28 19:45:43 +05:45
sankalp b1e8cb4a7a feat(styles): add launcher.css 2026-02-28 19:42:37 +05:45
sankalp 67d37bc9f5 update 2026-02-28 19:40:01 +05:45
sankalp 6762b8395d refactor(styles): Add constant.css import and clean up corner styling
- New Features: (none)
- Enhancements: Added constant.css import and removed launcher.css import
- Bug Fixes: Deleted unused #corner and #corner-container CSS rules
2026-02-26 06:58:08 +05:45
sankalp 49666ef8ef chore(utils): clean up extra blank lines in app_name_resolver.py
Remove superfluous whitespace to improve code readability.
2026-02-26 06:54:55 +05:45
sankalp 5bef139db9 feat(root): add OSD module and clean up CSS imports
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.
2026-02-26 06:54:48 +05:45
sankalp 2c1ec69023 feat(styles): restructure UI styles and add main composition
New Features
- Added styles/main.css aggregating imports and global defaults
- Renamed battery.css → battery-widget.css for widget-specific styling

Enhancements
- Added smooth transitions and hover effects in panel.css
- Improved OSD styling with rounded corners, translucent background, and better spacing
- Updated button margins, paddings, and border‑radius for consistency

Bug Fixes
- Fixed missing border‑radius and spacing in panel buttons
- Corrected workspace button active/urgent styling
2026-02-26 06:54:41 +05:45
sankalp 830305c0f3 refactor(widgets): clean up animation timer and easing functions
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
2026-02-26 06:54:35 +05:45
sankalp cf7666a8a5 refactor(modules): clean up dock update logic and fix TOTP action closure
- 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
2026-02-26 06:54:29 +05:45
sankalp 934b62ebff feat(utils): add debounce helper utilities
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.
2026-02-26 06:42:00 +05:45
sankalp deb9b1082f feat(modules/desktop): Add weather gradient/emoji mappings and system monitoring widgets
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
2026-02-26 06:41:58 +05:45
sankalp e104359659 feat(root): Enable Deskwidgets widget
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
2026-02-26 06:41:50 +05:45
sankalp 303aeb4815 refactor(config/hypr): tidy up keybinds and layerrules
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.
2026-02-26 06:35:15 +05:45
sankalp 557f3148f6 feat(root): enable ModusNoti and clean up startup configuration
New Features
- Added ModusNoti instance to application initialization.

Enhancements
- Removed outdated corner visibility configuration and unnecessary comments.
- Streamlined import statements for clarity.

Bug Fixes
- No bug fixes included.
2026-02-26 06:35:05 +05:45
sankalp 55f36c59ca refactor(modules): remove unused about module
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
2026-02-26 06:34:58 +05:45
sankalp 04fba01361 feat(assets): add new applet and wifi icons
- New Features
  - Add Bluetooth and Wi‑Fi icon sets for applet UI.
- Enhancements
  - Introduce scalable SVG assets with color scheme support.
- Bug Fixes
  - None
2026-02-26 06:24:50 +05:45
sankalp e97311e2b0 feat(modules): restructure battery UI and add dynamic layout rebuilding
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.
2026-02-26 06:24:44 +05:45
sankalp 15be2f3de6 refactor(services): move Gio, GLib, logger import to fabric.utils
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
2026-02-26 06:24:32 +05:45
sankalp 1ed576f222 feat(utils): add dbus helper and extend utility functions
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
2026-02-26 06:24:22 +05:45
sankalp a8b7330ec7 feat(root): add configuration and UI style updates
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.
2026-02-26 06:24:09 +05:45
sankalp 0b6450feb7 refactor(config):rename APP_NAME to APP_NAME1 2026-02-26 05:55:25 +05:45
sankalp f6505d9a01 feat(utils): add set_process_name utility and adjust imports
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.
2026-02-26 05:55:17 +05:45
sankalp 20b1eb71b2 feat(root): add pyproject.toml and reorganize imports & dependencies
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.
2026-02-26 05:55:07 +05:45
sankalp bc139feda7 refactor(services): drop auth service and tidy network/todo
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
2026-02-26 05:54:58 +05:45
sankalp ffa9188cd1 refactor(modules/notification): streamline imports and simplify cache utilities
- 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.
2026-02-26 05:54:51 +05:45