Skip to content

stack/getpaid 2 57 backup redesign - #225

Draft
BullishNode wants to merge 3 commits into
stack/getpaid-2-56-getpaid-transaction-cardfrom
stack/getpaid-2-57-backup-redesign
Draft

stack/getpaid 2 57 backup redesign#225
BullishNode wants to merge 3 commits into
stack/getpaid-2-56-getpaid-transaction-cardfrom
stack/getpaid-2-57-backup-redesign

Conversation

@BullishNode

Copy link
Copy Markdown
Owner

Stack created with GitHub Stacks CLIGive Feedback 💬

Brings SatoshiPortal#2453 (13 commits) into the Get Paid
stack. The screen is a merge, not a copy: the fork already wraps a second
cubit and renders the inline "Bull backup" metadata card, so the upstream
skeleton is rebuilt around both.

The reminder engine is new to the fork. It answers one question — if this
phone vanished right now, could you get your money back? — and each posture
gets exactly one verb:

  - vault only, no physical: every 90 days, "add a physical backup"
  - physical done (± vault): every 365 days since the last test
  - a one-time popup the first time the device-key balance is observed at or
    above 10,000,000 sats
  - zero backup makes NO decision here; that state stays owned by the
    existing every-launch backup warning overlay

Each cadence is anchored on the clock of the thing being urged, so a fresh
vault write cannot silence a stale physical backup. Dismissing snoozes the
popup for a full cycle and never touches last_tested, so the screen keeps
telling the truth while the popup is quiet. There is deliberately no PIN or
vault-freshness reminder and no both-verified "review" nag: neither has an
action behind it.

The screen becomes status rows -> posture hero -> Start Backup button ->
menu rows, each section built by its own function so the fork's metadata
insertions land without disturbing the others. Start Backup is a button
rather than a settings row, and it is suppressed only in the zero-backup
state where the hero already offers it.

Recoverbull: the vault permission gate is gone (nothing else in the fork
consumed FetchPermission/AllowPermission), a custom key server URL now warns
before it is saved, and user-facing "Recoverbull" vocabulary is retired in
favour of "encrypted vault" — while keeping the recoverbull.com domain
strings and the four server-product strings.

Localization follows the fork rule: retired wording is deleted from every
locale and re-added EN-only so stale translations cannot resurface;
unchanged wording keeps its translations. 9 keys deleted, 4 reworded,
21 added.
Replaces the inline "Bull backup" card with the two designed insertion
points, so the Backup Settings screen stays one glanceable list of what could
bring the wallet back and every metadata action moves behind a menu row.

The status row says whether automatic backup is on, then adds at most one
muted line. What that line says is the point:

  - a write the server REJECTED reads "Attention needed", never "pending".
    A rejected write is not a write that is still coming, and the live build
    used to claim it was, forever.
  - a write that is merely queued is left alone: dirty with no attempt since
    the last success has not failed, so it keeps showing when the last write
    actually landed.
  - a backup from a newer app version and blocked recovery are the other two
    "Attention needed" cases: both need the user before progress resumes.
  - nothing is claimed before the first read resolves — an unread backup is
    neither on nor off.

The predicates live on WalletBackupSettingsState so the honest/dishonest
boundary is unit-testable rather than buried in a widget, and the last
backed-up time is derived only from an observed success.

The menu row opens a new Metadata backup options screen holding what the
inline card held — the toggle, Back up now, Delete backup and its
confirmation, the status line, and the recovery retry. The controls widget is
kept as that screen's body rather than rewritten: the logic MOVED, it did not
change. Pushed as its own subroute, so it resolves its own cubit instead of
borrowing the parent screen's. It is also the landing surface for the unified
backup contract work, so it stays self-contained.

5 EN-only arb keys added.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants