Add logicsrc teams tui, a browser for team vaults (#146)

Teams on the left, their vaults in the middle, and the selected vault's
detail on the right across three tabs: secret names, who can decrypt,
and the audit trail.

It never handles plaintext, and that is the point rather than a
limitation. The server only ever holds ciphertext and this keeps it that
way: no decryption key is fetched, none is unwrapped, and there is no
keybinding that would. The secrets tab says so on screen and points at
`logicsrc teams pull`, because otherwise the first thing anyone does is
hunt for a reveal key. A value that can appear on screen can appear in a
screen share, a scrollback buffer or a recording; names are what you
need to navigate, values are what you rarely need to look at.

Names, fingerprints and versions are enough to answer the questions you
actually open this for: does the vault exist, has the rotation landed,
and who can still read it.

Notes on the shape:

  - Vaults and detail load lazily, because each is a round trip. The
    three detail calls are settled independently, so a member without
    decryption access still sees the vault's shape and a missing audit
    endpoint does not blank the secrets list.
  - Changing team resets the vault selection. The old index means
    nothing in a different team's list, and keeping it silently selects
    an unrelated vault.
  - The secrets table shows a date rather than a timestamp. Three fixed
    columns plus a name that can run to thirty characters leaves no room,
    and a truncated clock looks like data while telling you nothing.
  - The audit table gives its widest floor to the action, not the actor:
    an email truncates to something recognisable, where "secrets…" could
    be put, get or delete.

The view is split from the loader so it renders headlessly without an
authenticated client or a terminal. 17 tests cover that, including one
asserting no ciphertext reaches the screen; 226 pass across the CLI.


Claude-Session: https://claude.ai/code/session_017Df2FNu5DhinMV2soRz3cy

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-09-08 08:07:17 -07:00 committed by GitHub
parent 7f9e493929
commit ca21348fcd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 688 additions and 0 deletions

View file

@ -29,6 +29,7 @@
"@logicsrc/plugin-ugig": "file:../../plugins/ugig",
"@logicsrc/tui": "file:../tui",
"@logicsrc/validators": "file:../validators",
"@profullstack/hqtui": "^0.3.0",
"commander": "^14.0.2"
},
"devDependencies": {