feat(settings): SECURITY on one fill-width row + Advanced daemon actions shown by default

- SECURITY: the auto-lock + PIN controls now continue on the same row as the
  encrypt/change/lock/remove controls (full-node), so the whole security band
  fills the card width instead of leaving the right half blank. Lite (no encrypt
  row) still starts auto-lock/PIN on a fresh row at the left edge.
- Daemon Binary "Advanced" (Install bundled / Rescan / Delete blockchain / Repair
  wallet) now defaults to expanded (node_advanced_expanded = true) so the actions
  are visible without a click; the toggle can still collapse them.

Full-node + lite build clean; hygiene clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-02 01:43:46 -05:00
parent 5180f74a68
commit 2fc577fb18

View File

@@ -144,7 +144,7 @@ struct SettingsPageState {
std::set<std::string> debug_categories;
bool debug_cats_dirty = false;
bool debug_expanded = false;
bool node_advanced_expanded = false; // Node & Security: rare/destructive daemon actions
bool node_advanced_expanded = true; // Node & Security: rare/destructive daemon actions (shown by default)
bool effects_expanded = false;
bool tools_expanded = false;
bool confirm_clear_ztx = false;
@@ -1571,10 +1571,11 @@ void RenderSettingsPage(App* app) {
app->showDecryptDialog();
if (ImGui::IsItemHovered()) material::Tooltip("%s", TR("tt_remove_encrypt"));
}
ImGui::Dummy(ImVec2(0, Layout::spacingXs()));
}
// Auto-Lock timeout + PIN controls on one horizontal row.
// Auto-Lock timeout + PIN controls — continue on the same row as the encrypt
// controls (full-node) so the whole SECURITY band fills the width; on lite
// (no encrypt row) they start a fresh row at the section's left edge.
{
float comboW = S.drawElement("components.settings-page", "security-combo-width").sizeOr(120.0f);
@@ -1585,7 +1586,10 @@ void RenderSettingsPage(App* app) {
for (int i = 0; i < 6; i++) {
if (timeoutValues[i] == timeout) { selTimeout = i; break; }
}
ImGui::SetCursorScreenPos(ImVec2(secX, ImGui::GetCursorScreenPos().y));
if (includeRpcEncrypt)
ImGui::SameLine(0, Layout::spacingLg());
else
ImGui::SetCursorScreenPos(ImVec2(secX, ImGui::GetCursorScreenPos().y));
ImGui::AlignTextToFramePadding();
Type().textColored(TypeStyle::Caption, OnSurfaceMedium(), TR("settings_auto_lock"));
ImGui::SameLine(0, Layout::spacingXs());