From ea5ad1f093f740e40d76ce4c412ee0d57aafd014 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Fri, 6 Mar 2026 13:41:24 -0500 Subject: [PATCH] Fix managed_account QR exclusion and bare except in action_bar - Remove 'qr' from managed_account context actions (accounts don't expose a QR-scannable key like seeds/nostr do) - Change bare 'except:' to 'except Exception:' on vault manager check - Add test_v3_action_bar_managed_account_excludes_qr in parity tests Co-Authored-By: Claude Sonnet 4.6 --- src/seedpass/tui_v3/widgets/action_bar.py | 3 +-- src/tests/test_tui_v3_parity.py | 27 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/seedpass/tui_v3/widgets/action_bar.py b/src/seedpass/tui_v3/widgets/action_bar.py index 00861189..22ad4c2c 100644 --- a/src/seedpass/tui_v3/widgets/action_bar.py +++ b/src/seedpass/tui_v3/widgets/action_bar.py @@ -34,7 +34,7 @@ class ActionBar(Static): len(getattr(app.services.get("vault")._manager, "profile_stack", [])) > 0 ) - except: + except Exception: pass exit_hint = ( @@ -113,7 +113,6 @@ class ActionBar(Static): ], "managed_account": [ "reveal", - "qr", "edit", "archive", "delete", diff --git a/src/tests/test_tui_v3_parity.py b/src/tests/test_tui_v3_parity.py index 85645bb2..d91378ab 100644 --- a/src/tests/test_tui_v3_parity.py +++ b/src/tests/test_tui_v3_parity.py @@ -336,3 +336,30 @@ async def test_v3_action_bar_only_shows_context_actions_for_selected_kind() -> N assert "Load" in rendered assert "Delete" in rendered assert "Export" not in rendered + + +@pytest.mark.anyio +async def test_v3_action_bar_managed_account_excludes_qr() -> None: + app = SeedPassTuiV3( + entry_service_factory=lambda: MockEntryService(), + vault_service_factory=lambda: MockVaultService(), + ) + # Inject a managed_account entry into the mock service + async with app.run_test() as pilot: + await pilot.pause() + app.services["entry"].entries[99] = { + "id": 99, + "label": "test-managed", + "kind": "managed_account", + "index": 0, + } + bar = app.screen.query_one("#action-bar") + + app.selected_entry_id = 99 + await pilot.pause() + rendered = Text.from_markup(bar.render()).plain.splitlines()[1] + assert "Context (managed_account):" in rendered + assert "Reveal" in rendered + assert "Load" in rendered + assert "Delete" in rendered + assert " QR" not in rendered