Skip to content

security(ui): harden how a device signs a payment it signed before - #952

Merged
danielgorgonha merged 12 commits into
stagingfrom
security/device-signing-record
Nov 13, 2026
Merged

danielgorgonha merged 12 commits into
stagingfrom
security/device-signing-record

Conversation

@danielgorgonha

Copy link
Copy Markdown
Member

What & why

A device is more careful with a payment it already signed: it asks before signing a payment again in more cases, recognises the same payment when it comes back under another proposal (and quotes when it signed it, from its own record), shows an earlier transaction only when it can confirm it signed it, and proposals are signed only from their signing panel. The sign-again confirm also wraps on narrow screens, keeps focus when it closes by itself, and names its copy button.

Why one piece (over the 300-line guide)

It is one rule: whether a device may contribute a share to a payment it already signed. That rule spans the device's record, the owner's consent, the confirm screen and the standalone /net page. Splitting it would ship a state in which one of those contradicts the rule, which is exactly what the reviews of this change caught twice while it was built. More than half of the lines are tests.

Verify-before-finishing checklist

  • cargo fmt --check + cargo clippy -- -D warnings: not applicable (no Rust change)
  • cargo test: not applicable
  • ui/: lint + vitest (264 files, 3061 tests) + tsc pass
  • No secret, key share, seed, or passphrase in code, logs, URLs, or query strings
  • Every fund-moving path keeps preview + explicit confirmation
  • Touches the device's signing path: security impact considered (security, code, test, design and accessibility reviews)
  • User-facing strings go through i18n (English keys + PT-BR locale)
  • Docs/comments in English; commits are type(scope): description
  • AI disclosure: written with Claude Code (the change, the tests, and the review runs); the commits carry Co-Authored-By: Claude <noreply@anthropic.com>, no session link

danielgorgonha and others added 12 commits November 13, 2026 09:00
Co-Authored-By: Claude <noreply@anthropic.com>
…posal

Co-Authored-By: Claude <noreply@anthropic.com>
…nfirm it signed it

Co-Authored-By: Claude <noreply@anthropic.com>
…ecord

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
… pinned

Co-Authored-By: Claude <noreply@anthropic.com>
…r signature lives

Co-Authored-By: Claude <noreply@anthropic.com>
… button

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
@vercel

vercel Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
konclave-demo Ready Ready Preview Nov 13, 2026 12:03pm UTC

Request Review

@danielgorgonha danielgorgonha self-assigned this Nov 13, 2026
@danielgorgonha danielgorgonha added the security Security / audit label Nov 13, 2026
@danielgorgonha
danielgorgonha merged commit 72e1e01 into staging Nov 13, 2026
10 checks passed

This branch was successfully deployed

1 active deployment
Preview — ef831cf4 Deployed Nov 13, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

security Security / audit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant