You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keybind-cheatsheet/CHANGELOG.md
+54-10Lines changed: 54 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,60 @@
1
1
# Changelog
2
2
3
+
## [3.4.0] - 2026-04-07
4
+
5
+
### Bug Fixes
6
+
7
+
**Settings unreachable from panel button**
8
+
- Fixed critical bug where clicking the settings button (top-right of the keybind panel) blocked all input in the settings window
9
+
- The panel now closes before opening settings, preventing the open panel from intercepting mouse events
10
+
- Reported by Discord users: editing width/height was impossible when settings were opened this way
11
+
12
+
**Settings not saved when opened from panel**
13
+
- Fixed settings changes being silently discarded when the settings window was opened via the panel button
14
+
-`saveSettings()` was declared on an inner `ColumnLayout` instead of the root `Item`, making it invisible to the Noctalia shell
15
+
- With the previous direct-mutation approach this went unnoticed; after switching to the edit-copy pattern saves now work correctly from all entry points
16
+
17
+
### Code Quality
18
+
19
+
**Settings: edit-copy pattern**
20
+
- Replaced direct `pluginSettings` mutation in `onTextChanged` handlers with proper edit-copy properties (`editWindowWidth`, `editWindowHeight`, `editAutoHeight`, `editColumnCount`, `editModKeyVariable`, `editHyprlandConfigPath`, `editNiriConfigPath`)
21
+
- Changes are committed to `pluginSettings` only when the user clicks Save, matching Noctalia plugin conventions
22
+
23
+
**i18n: corrected structure**
24
+
- Removed `"keybind-cheatsheet"` top-level wrapper from all 20 language JSON files
25
+
- Removed `"keybind-cheatsheet."` prefix from all 50 `tr()` calls across all QML files
26
+
- Structure now matches the Noctalia plugin i18n specification
27
+
28
+
**Removed dead code**
29
+
- Deleted unused `parseNiriConfig()` function (118 lines) superseded by `parseNiriFileContent()` in v3.1.0
30
+
31
+
**Shell injection hardening**
32
+
- Glob expansion in config path resolution now passes user-provided patterns as positional shell arguments (`$1`) instead of string-concatenating them into the shell command, preventing potential injection via crafted config path values
33
+
34
+
**resizeTimer: semantic popup detection**
35
+
- Replaced fragile `toString()` string matching (`"Popup_QMLTYPE"`, `"NPluginSettingsPopup"`) with a semantic check (`typeof obj.modal === "boolean"`) that works with any QML `Popup` subclass
36
+
37
+
**Named key badge colors**
38
+
- Extracted hardcoded hex colors in `getKeyColor()` into named `readonly property color` constants (`keyColorAlt`, `keyColorXF86`, `keyColorPrint`, `keyColorNumeric`, `keyColorMouse`)
0 commit comments