From f4b7c9dcf8fcdc2a754abc404e4905631106e5b6 Mon Sep 17 00:00:00 2001 From: Gregory Salaun Date: Sat, 8 Aug 2026 17:36:31 +0200 Subject: [PATCH] fix(settings): restore the settings-database buttons and unstack the backup options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Settings -> Database panel had lost every action on the settings database except "Open folder", which launches Windows Explorer — where a .db cannot be selected at all, so double-clicking it only asks which program should open it. The handlers were still there, just no longer rendered; New / Open existing / Save a copy / Rename / Reset are back, along with the restart banner (the DB pointer is only read at startup). The backup block put the rotation field and three checkboxes on one flex row inside max-w-xl. That fitted until "keep every backup" arrived with its two-line hint, after which every label wrapped into an unreadable sliver. The options are stacked now, and keep-all sits under the option it depends on. --- frontend/src/components/SettingsModal.tsx | 56 +++++++++++++++-------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/SettingsModal.tsx b/frontend/src/components/SettingsModal.tsx index fd9c36e..1307e38 100644 --- a/frontend/src/components/SettingsModal.tsx +++ b/frontend/src/components/SettingsModal.tsx @@ -4311,7 +4311,7 @@ export function SettingsModal({ onClose, onSaved, initialSection, onMainPaneChan title={t('sec.backup')} hint={mysqlCfg.enabled ? t('bk.hintMysql') : t('bk.hint')} /> -
+
-
-
- - { - const n = Number(e.target.value); - if (Number.isFinite(n) && n > 0) setBackupCfg((b) => ({ ...b, rotation: Math.floor(n) })); - }} - /> -
+
+ + { + const n = Number(e.target.value); + if (Number.isFinite(n) && n > 0) setBackupCfg((b) => ({ ...b, rotation: Math.floor(n) })); + }} + /> +
+ + {/* Stacked, not one flex row: these labels are full sentences and the + "keep every backup" hint is two lines — side by side they wrapped + into unreadable slivers. It also puts keep-all under the option it + depends on rather than beside it. */} +
{!!(backupCfg as any).every_exit && ( -

{t('db.appDbHint')}

+ + + + + {dbSettings.is_custom && }
+ {/* The DB pointer is only read at startup, so offer the restart inline. */} + {dbMsg && ( +
+
{t('db.savedRestart')} {dbMsg}
+ + {t('db.restartHint')} +
+ )}
{/* Logbook (QSOs) — this profile: default SQLite file, a dedicated file, or MySQL. */}