Vault panic/quick-hide and decoy settings flip without confirmation or toast #191

Open
opened 2026-09-21 13:03:04 +00:00 by Mark · 0 comments
Owner

Symptom

In Settings -> Vault:

  • Toggling Quick-Hide (Panic Gesture) ON or OFF takes effect immediately, with no confirm prompt.
  • Changing Decoy Screen dropdown (Home Page / Blank Screen / Calculator App) takes effect immediately.
  • Changing Shake Sensitivity dropdown (High / Medium / Low / Very Low) takes effect immediately.

In contrast, the adjacent Reset Vault Data button correctly gates behind a ConfirmDialog (src/pages/Settings.tsx:2195) before destructive action.

Why this matters

The panic gesture is a safety feature. If the user accidentally toggles Quick-Hide OFF while configuring something else, they have silently disarmed the panic gesture with no undo. The same applies to the decoy type -- if a quick tap changes the decoy from "Blank Screen" (plausible deniability) to "Calculator App" or "Home Page", the panic response no longer protects the user as expected, and they may not notice until they need it.

Repro

  1. Settings -> Vault -> Quick-Hide (Panic Gesture) -> toggle ON.
  2. Toggle OFF immediately. No confirmation, no toast.
  3. Change Decoy Screen dropdown from "Blank Screen" to "Home Page". No confirmation, no toast.
  4. Change Shake Sensitivity from "Medium" to "Very Low". No confirmation, no toast.

All three changes are persisted silently to Capacitor Preferences (vaultPanicEnabled, vaultPanicDecoyType, vaultPanicShakeThreshold) -- verified via storage shim during the 2026-09-20 privacy vault shakedown.

Severity

Cosmetic / UX. Not data-loss, not functional. But misaligned with the safety intent of the feature.

Suggested fix

Either:

  • Add a "Settings change saved" toast for each toggle (mirrors how enrollVault, changeVaultPin, and resetVaultData already toast), or
  • Gate Quick-Hide OFF behind a confirmation ("Disarm panic gesture?") similar to Reset Vault Data.
## Symptom In `Settings -> Vault`: - Toggling **Quick-Hide (Panic Gesture)** ON or OFF takes effect immediately, with no confirm prompt. - Changing **Decoy Screen** dropdown (Home Page / Blank Screen / Calculator App) takes effect immediately. - Changing **Shake Sensitivity** dropdown (High / Medium / Low / Very Low) takes effect immediately. In contrast, the adjacent **Reset Vault Data** button correctly gates behind a `ConfirmDialog` (`src/pages/Settings.tsx:2195`) before destructive action. ## Why this matters The panic gesture is a safety feature. If the user accidentally toggles Quick-Hide OFF while configuring something else, they have silently disarmed the panic gesture with no undo. The same applies to the decoy type -- if a quick tap changes the decoy from "Blank Screen" (plausible deniability) to "Calculator App" or "Home Page", the panic response no longer protects the user as expected, and they may not notice until they need it. ## Repro 1. `Settings -> Vault -> Quick-Hide (Panic Gesture)` -> toggle ON. 2. Toggle OFF immediately. No confirmation, no toast. 3. Change Decoy Screen dropdown from "Blank Screen" to "Home Page". No confirmation, no toast. 4. Change Shake Sensitivity from "Medium" to "Very Low". No confirmation, no toast. All three changes are persisted silently to Capacitor Preferences (`vaultPanicEnabled`, `vaultPanicDecoyType`, `vaultPanicShakeThreshold`) -- verified via storage shim during the 2026-09-20 privacy vault shakedown. ## Severity Cosmetic / UX. Not data-loss, not functional. But misaligned with the safety intent of the feature. ## Suggested fix Either: - Add a "Settings change saved" toast for each toggle (mirrors how `enrollVault`, `changeVaultPin`, and `resetVaultData` already toast), or - Gate Quick-Hide OFF behind a confirmation (`"Disarm panic gesture?"`) similar to Reset Vault Data.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/kimi_agent_kin_app_sync#191
No description provided.