* fix(keybinds): record numpad keys as KP_* keysyms
The shortcut recorder passed only the Qt key code to xkbKeyFromQtKey and
dropped Qt.KeypadModifier. Since Qt reuses the same Qt::Key_* values for the
numpad and the main row / nav cluster, numpad presses collapsed onto their
twins: numpad-7 became "7" (NumLock on) or "Home" (NumLock off) instead of
"KP_7"/"KP_Home", numpad-+ became "Equal", numpad-* became "8", numpad Enter
became "Return". numpad-5 with NumLock off (Qt.Key_Clear) was missing from the
map entirely, so the capture was silently dropped.
niri and the other providers bind against the xkb KP_* keysym names, so these
tokens never matched the physical key.
Pass the keypad flag through to xkbKeyFromQtKey and map keypad presses to the
KP_* keysyms: KP_0..KP_9 for the NumLock-on digit codes, the navigation names
(KP_Home, KP_End, KP_Up, ...) for the NumLock-off codes, plus the operators
and KP_Enter. Main-row keys are unaffected because they never carry the keypad
modifier.
* fix(keybinds): ignore lock keys while capturing a shortcut
NumLock/CapsLock/ScrollLock are toggles, not useful bind targets. Pressing
NumLock to switch the numpad between its digit and navigation keysyms
(KP_7 vs KP_Home) was captured as the bind itself (e.g. "Super+Num_Lock").
Skip them in the recorder like the other pure modifier keys already are.
- Add a full popout Notepad experience w/new layout settings
- New ability to choose the left or right side of the screen
- Add more safegaurds to preserve user data throughout
- New banner to show file reload/conflict handling
- New extensionless file support
- Polish settings with gap controls, compact buttons, and shortcuts help
* feat: unify media controls dropdown interactions, hover behavior and cycle controls
- Implement hover-to-show and hover-to-hide for all media control dropdowns.
- Make clicking the Output Devices and Media Players buttons cycle through items when expanded.
- Always display the 'speaker' icon for Output Devices to maintain visual consistency.
- Bind dropdown player properties dynamically to fix list stale rendering states.
* fix(DankDash): use trackArtist property for artist label in MediaPlayerTab
* fix(DankDash): simplify active player label for consistency with output devices
* feat(DankDash): display volume levels for audio output devices in dropdown
* fix(DankDash): display Unknown Artist when artist is empty in player list
* feat(DankDash): add keyboard shortcuts for seeking, track cycling and playback control in Media popout
* feat(DankDash): change Up/Down arrow keys to adjust volume in Media popout
* feat(DankDash): auto-open volume dropdown overlay when using Up/Down shortcuts
* feat(DankDash): add Key M shortcut to toggle mute in Media popout
* fix(mpris): clamp minimum seek position to 0.1s to prevent browser player reset
* fix(mpris): cache stable length to prevent browser transient reset issues
* fix(mpris): persist activePlayerStableLength in MprisController singleton
* fix(mpris): resolve browser player album art with raw metadata and YouTube url fallbacks
* fix(mpris): resolve browser player album art with local caching and 16:9 youtube fallbacks
* style(mpris): trim trailing whitespace in TrackArtService
* fix(mpris): address code review feedback on remote caching, stale artwork, and hover state
* fix: secure curl commands and prevent premature dropdown overlays closing on button re-hover
- Introduce multi-account greeter login with per-user theme previews
- Add `dms greeter sync --profile` for secondary users with or without sudo
- Add Manage greeter group membership from Settings UI → Users Tab
Pulses the WiFi and Bluetooth status icons while a connection is in
progress (lock screen, DankBar control center button, control center
compound pill). The pulse is implemented as a reusable Widgets/DankBlink
component, and the wifi-connecting condition is centralized as
NetworkService.isWifiConnecting.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- New Spotlight toggle to show/hide chips, off by default
- Updated blur effects on all launcher inputs and footers
- Fixed previous queries resurfacing
- Upated Spotlight keyboard navigation
- Added functionality to show and shortcut to keybinds from the Launcher tab
- Replaced fullscreen hide/reveal toggles with Show Over Fullscreen layer toggles
- Added Launcher opt to Show Over Fullscreen setting
- Kept fullscreen stacking compositor-owned via top/overlay layer choices
- Fixed Hyrland Special Workspaces
- Updated DMS Advanced Configuration docs
- Note: We do not convert your existing conf configs to lua. This update only reflects DMS defaults state
- Updated README.md to reflect changes
- Updated Keyboard shortcut support
- Introduces Standalone & Connected Modes
- Updated Animations & Motion effects for both modes
- Numerous QOL tweaks and updates throughout the system
- Highly inspired to the OG Caelestia Shell / @Soramanew
fzf.js relied on stable Array.sort to preserve score ordering, which is
not guaranteed in QML's JS engine. Results appeared in arbitrary order
with low-relevance matches above exact matches. The sort comparator now
explicitly sorts by score descending, with a length-based tiebreaker so
shorter matches rank first when scores are tied.
Also fixed Object.assign mutating the shared defaultOpts object, which
could cause options to leak between Finder instances.
DankDropdown's onOpened handler now reinitializes the search when previous
search text exists, fixing the empty results shown on reopen.
Added resetSearch() for consumers to clear search state externally.