Release v4.5: import shortcuts on pre-4.4 upgrade + clearer shortcuts dialog

- Pre-v4.4 upgraders are offered a one-time dialog to copy their keyboard shortcuts
  from one of their profiles (still readable in the profile files) instead of being
  reset. Users who already went through v4.4's reset are deliberately NOT re-offered
  (gated on KeyboardShortcutsGlobalNoticeShown). New KeyboardShortcutImportDialog +
  AppConfig.KeyboardShortcutsImportOffered + MainFormHotkeyController.ReloadAndReRegisterAll.
- Keyboard shortcuts dialog: new "Clear this shortcut" button; Delete inside the
  capture box leaves a shortcut unassigned.
- Relabelled the three RemSound-app remote rows to "Send remote RemSound volume/..."
  to distinguish them from the Windows-global ones.
- Manual (readme.html + MANUAL.md), About changelog, RELEASE_NOTES updated; version 4.5.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-06-22 06:36:00 +01:00
co-authored by Claude Opus 4.8
parent 8a1bc0c813
commit 962f35ab80
10 changed files with 362 additions and 72 deletions
+9 -1
View File
@@ -170,9 +170,17 @@ public sealed class AppConfig
/// <summary>True once the one-time "your keyboard shortcuts are now shared across profiles" notice
/// has been shown (to an upgrader), or silently marked done on a fresh install that had nothing to
/// reset. Stops the notice re-appearing. v4.4.</summary>
/// reset. Stops the notice re-appearing. v4.4. (Superseded by the import offer below; kept so the
/// flag on an existing v4.4 config still deserialises.)</summary>
public bool KeyboardShortcutsGlobalNoticeShown { get; set; }
/// <summary>True once the one-time "bring your keyboard shortcuts across?" import offer has been
/// resolved (the user chose to import from a profile, or to start fresh). Deliberately SEPARATE from
/// <see cref="KeyboardShortcutsGlobalNoticeShown"/> so that users who already updated to v4.4 (and
/// were reset) are STILL offered the chance to import their old per-profile shortcuts — which remain
/// readable in their profile files.</summary>
public bool KeyboardShortcutsImportOffered { get; set; }
/// <summary>If non-null and a profile with this title exists, RemSound skips the
/// startup profile picker and loads this profile directly. Combine with
/// <see cref="StartMinimised"/> + the Windows auto-start registry entry