feat(settings): add Screen Privacy toggle - #2693
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
ed5afc2 to
e18fcd8
Compare
|
@claude, check the fixes |
|
Claude finished @wired-pasteque's task in 4m 34s —— View job Review: fixes check out ✅
The "stuck protection" bug fix is correctThe old code in
The toggle plumbing is also sound: One thing to flag before mergeDev installs already on schema v15 won't get the new column. On Minor notes (non-blocking)
What I verifiedMigration consistency (v14 JSON/generated schema no longer carry the Tor columns; v15 carries Tor + screen-capture; both migration tests exercise the released-v14 and dev-device-with-tor-columns paths), the seed row default, all |
e18fcd8 to
87cdfe6
Compare
context.select is only valid inside build; calling it in didChangeDependencies threw 'Tried to use context.select outside of the build method' when opening the show/verify mnemonic screens. Read the fingerprint with context.read instead — build still watches the bloc, so state changes continue to drive reloads.
develop moved the Tor columns from the released v14 into the 14->15 step, but an earlier unreleased develop build had briefly added them in 13->14. A dev device upgraded by that build already has the columns, so the unguarded 14->15 adds threw 'duplicate column' on the next launch. Wrap the tor adds in _addColumnIfNotExists so the migration is idempotent, and correct the schema-14 doc comments (schema 14 shipped in v6.13.0).
Screenshot/recording blocking on sensitive screens (recovery phrase, seed views) is now user-controllable from App settings, defaulting on. - ScreenCaptureProtection: process-wide, reference-counted controller for the app-wide FLAG_SECURE flag, gated on the user preference. Fixes the leak where a single screen leaving via non-pop navigation left the whole app un-screenshottable; AllSeedViewScreen becomes a StatefulWidget with proper teardown. - Persisted as settings.screen_capture_protection_enabled (v14->v15), default true so existing installs keep protection until opting out. - Toggle sits after Logs in App settings; disabling shows a snackbar. - Localised in all supported languages.
The onion (embedded Tor) plugin depends on IPtProxy, a static xcframework it force-loads itself. use_frameworks! (dynamic) is required so the flutter_rust_bridge plugins expose loadable frameworks, but that made pod install abort on the static transitive dependency, and the link failed on IPtProxy's Go resolver symbols. - pre_install: skip the false-positive static-transitive-dependency check. - post_install: link libresolv into onion/IPtProxy for res_9_ninit/ nclose/nsearch.
eb061c4 to
626e41f
Compare
Adds a user-controllable
Screen Privacytoggle (in app settings) that turns OS-level screenshot/recording blocking on sensitive screens (recovery phrase, seed views) on or off. Defaults on, so existing installs keep protection until they opt out.Also, fixed a bug where leaving a protected screen could leave screenshots blocked across the entire app.
Screen_Recording_20260819_170352.mp4