From 7e6f134141d3df911e5112e58309f8d32fe84bb8 Mon Sep 17 00:00:00 2001 From: Glenn Gore Date: Mon, 7 Sep 2026 15:17:35 +0200 Subject: [PATCH] refactor(persona): the copy outside the pane speaks the vocabulary too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #280 brought the identity pane to `design-docs/persona-vocabulary.md` and left the persona copy elsewhere for when it was next touched. This is that copy: the join flow's identity choice, its reuse warning, the invitation list, and the communities panel's empty state. The reuse warning is the one that matters. It is the last thing a person reads before linking themselves across two communities, and it now carries the sentence the table asks every surface to share verbatim — "the same person to anyone who sees both" — rather than a paraphrase of it. The point of a fixed phrase is that meeting it twice teaches it; a paraphrase in one surface spends the recognition and gives nothing back. ## What was deliberately left alone `profile` in setup, backup and `--profile`. That is the **config profile** — a local installation profile that predates the persona family, has its own meaning to operators, and appears in flags they type. It is exactly the collision the vocabulary doc cites when it declines to use "profile" for a face, and renaming it here would create the confusion the table exists to prevent. Signed-off-by: Glenn Gore --- CHANGELOG.md | 13 ++++++++++++ .../src/ui/pages/join_flow/identity_choice.rs | 20 +++++++++---------- .../ui/pages/join_flow/invitation_choice.rs | 2 +- .../main/components/communities_panel.rs | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4502f08d..418008fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +### Changed + +- **The join flow and communities panel speak the persona vocabulary too.** The + pane was brought over in #280; this is the copy outside it — + *"Who should this community know you as?"*, *"Already known to:"*, and the + reuse warning in the sentence the table asks every surface to share: + *"the same person to anyone who sees both."* + + `profile` elsewhere in the TUI is left alone on purpose: setup, backup and + `--profile` mean the **config profile**, a different thing that predates the + persona family and has its own meaning to operators. + + ### Changed - **The identity pane speaks the words a person would use.** Following diff --git a/openvtc/src/ui/pages/join_flow/identity_choice.rs b/openvtc/src/ui/pages/join_flow/identity_choice.rs index 32ec3c65..c0fca1c2 100644 --- a/openvtc/src/ui/pages/join_flow/identity_choice.rs +++ b/openvtc/src/ui/pages/join_flow/identity_choice.rs @@ -87,7 +87,7 @@ impl IdentityChoice { Block::bordered() .fg(COLOR_BORDER) .padding(Padding::proportional(1)) - .title(" Choose an identity for this community "), + .title(" Who should this community know you as? "), middle, ); let inner = middle.inner(Margin::new(3, 2)); @@ -98,14 +98,14 @@ impl IdentityChoice { let label = opt.map(|o| o.label.as_str()).unwrap_or("this persona"); let mut lines = vec![ Line::styled( - "Reuse an existing identity?", + "Use a persona this community can already be linked to?", Style::new().fg(COLOR_ORANGE).bold(), ), Line::default(), Line::styled( format!( - "Presenting \"{label}\" to this community links you across every \ - community that uses it." + "Being known here as \"{label}\" makes you the same person to \ + anyone who sees both this community and the others using it." ), Style::new().fg(COLOR_TEXT_DEFAULT), ), @@ -113,13 +113,13 @@ impl IdentityChoice { if let Some(opt) = opt { if opt.linked_communities.is_empty() { lines.push(Line::styled( - "It is not yet presented to any other community.", + "No other community knows you by it yet.", Style::new().fg(COLOR_DARK_GRAY), )); } else { lines.push(Line::default()); lines.push(Line::styled( - "Already presented to:", + "Already known to:", Style::new().fg(COLOR_DARK_GRAY), )); for c in &opt.linked_communities { @@ -148,7 +148,7 @@ impl IdentityChoice { // Otherwise the body is the selectable list: each persona, then "mint new". let mut lines = vec![ Line::styled( - "Select the identity to present to this community:", + "Choose the persona this community will know you as:", Style::new().fg(COLOR_BORDER).bold(), ), Line::default(), @@ -174,7 +174,7 @@ impl IdentityChoice { format!(" {}", opt.did) } else { format!( - " {} · used by {} communit{}", + " {} · known to {} communit{}", opt.did, opt.linked_communities.len(), if opt.linked_communities.len() == 1 { @@ -195,11 +195,11 @@ impl IdentityChoice { Style::new().fg(COLOR_SOFT_PURPLE) }; lines.push(Line::from(Span::styled( - format!("{marker}✦ Create a new identity for this community"), + format!("{marker}✦ Be someone new to this community"), style, ))); lines.push(Line::styled( - " A fresh did:webvh, unlinked from your other communities", + " A fresh did:webvh — nothing links it to your other communities", Style::new().fg(COLOR_DARK_GRAY), )); lines.push(Line::default()); diff --git a/openvtc/src/ui/pages/join_flow/invitation_choice.rs b/openvtc/src/ui/pages/join_flow/invitation_choice.rs index 031f85b7..b5fc5297 100644 --- a/openvtc/src/ui/pages/join_flow/invitation_choice.rs +++ b/openvtc/src/ui/pages/join_flow/invitation_choice.rs @@ -144,7 +144,7 @@ impl InvitationChoice { { lines.push(Line::styled( format!( - " Issued to {} — presented via a linkage proof", + " Issued to {} — shown with a proof that links the two", shorten_did(subject, 40) ), Style::new().fg(COLOR_ORANGE), diff --git a/openvtc/src/ui/pages/main/components/communities_panel.rs b/openvtc/src/ui/pages/main/components/communities_panel.rs index 59762b4a..12f1f04e 100644 --- a/openvtc/src/ui/pages/main/components/communities_panel.rs +++ b/openvtc/src/ui/pages/main/components/communities_panel.rs @@ -388,7 +388,7 @@ fn render_empty(mut lines: Vec>) -> Vec> { .fg(COLOR_TEXT_DEFAULT), ); lines.push( - Line::from("Find a Verifiable Trust Community and present an identity to join it.") + Line::from("Find a Verifiable Trust Community and choose who it will know you as.") .fg(COLOR_TEXT_DEFAULT), ); lines.push(Line::from(""));