refactor(trust): ego-centric trust replaces the global Duniter membership

The global membership rule (curated bootstrap referents + sigQty/stepMax
parameters) solved sybil-proof identity for a UBI — a problem this app
doesn't have — and its screen leaked graph jargon (npub roots, parameter
steppers). Trust is now computed from the user's own position only:
you vouch / vouched by people you know (distance <=2) / vouched by N.

- TrustCubit: drop networkMember tier, referents and params; keep the
  circle rule and the 365-day vouch expiry (renewable, self-pruning).
- Delete TrustReferents, WotSettings, TrustNetworkScreen and the bundled
  referents asset; unwire injector/bootstrap/app/chat.
- New 'Your people' screen (/your-people, from the profile): who you
  vouch for (revocable) and who vouches for you, names via ProfileCache.
- i18n: wot.* removed, yourPeople.* added (en/es/pt/ast); trust.member
  removed. Kind 30777 events on relays stay fully compatible — only the
  interpretation changes.
This commit is contained in:
vjrj 2026-07-11 13:03:20 +02:00
parent 4af90876f4
commit dc7b2eee27
25 changed files with 595 additions and 863 deletions

View file

@ -76,7 +76,7 @@ class TranslationsAst extends Translations with BaseTranslations<AppLocale, Tran
@override late final _Translations$chatList$ast chatList = _Translations$chatList$ast._(_root);
@override late final _Translations$chat$ast chat = _Translations$chat$ast._(_root);
@override late final _Translations$trust$ast trust = _Translations$trust$ast._(_root);
@override late final _Translations$wot$ast wot = _Translations$wot$ast._(_root);
@override late final _Translations$yourPeople$ast yourPeople = _Translations$yourPeople$ast._(_root);
@override late final _Translations$notifications$ast notifications = _Translations$notifications$ast._(_root);
@override late final _Translations$plantare$ast plantare = _Translations$plantare$ast._(_root);
@override late final _Translations$sale$ast sale = _Translations$sale$ast._(_root);
@ -786,35 +786,24 @@ class _Translations$trust$ast extends Translations$trust$en {
@override String get vouch => 'Conozo a esta persona';
@override String get vouched => 'Avales a esta persona';
@override String get circle => 'Nel to círculu';
@override String get member => 'Miembru de confianza de la rede';
}
// Path: wot
class _Translations$wot$ast extends Translations$wot$en {
_Translations$wot$ast._(TranslationsAst root) : this._root = root, super.internal(root);
// Path: yourPeople
class _Translations$yourPeople$ast extends Translations$yourPeople$en {
_Translations$yourPeople$ast._(TranslationsAst root) : this._root = root, super.internal(root);
final TranslationsAst _root; // ignore: unused_field
// Translations
@override String get title => 'Rede de confianza';
@override String get open => 'Rede de confianza';
@override String get help => 'Cómo se decide quién ye miembru de confianza: la xente aválase ente sí, y la confianza estiéndese dende un conxuntu de raíces fundadores.';
@override String get roots => 'Raíces de confianza';
@override String get rootsHelp => 'Les identidaes fundadores qu\'anclen la rede. Amiesta a quien te fíes (apega\'l so códigu d\'identidá); la pertenencia mídese p\'afuera dende elles.';
@override String get noRoots => 'Entá nun hai raíces de confianza — nun se pue calcular la pertenencia hasta semar la rede.';
@override String get addRoot => 'Amestar una raíz de confianza';
@override String get rootHint => 'Apega un códigu d\'identidá (npub…)';
@override String get add => 'Amestar';
@override String get rootAdded => 'Raíz de confianza amestada';
@override String get rootInvalid => 'Esi nun ye un códigu d\'identidá válidu';
@override String get remove => 'Quitar';
@override String get params => 'Parámetros avanzaos';
@override String get paramsHelp => 'Regles Duniter. Aflóxales pa una rede nueva; apriétales según crez.';
@override String get sigQty => 'Avales pa ser miembru';
@override String get stepMax => 'Distancia máxima a una raíz';
@override String get validityDays => 'Validez del aval (díes)';
@override String get reset => 'Reafitar a valores Duniter';
@override String get saved => 'Guardáu';
@override String get title => 'La to xente';
@override String get help => 'Persones que conoces y avales, y persones que t\'avalen.';
@override String get youVouchFor => 'Tu avales a';
@override String get vouchesForYou => 'Aválente';
@override String get youVouchForEmpty => 'Entá nun avales a naide. Cuando conozas a daquién, abri la vuestra conversación y calca "Conozo a esta persona".';
@override String get vouchesForYouEmpty => 'Naide t\'avala entá';
@override String get revoke => 'Dexar d\'avalar';
@override String get revokeConfirm => '¿Dexar d\'avalar a esta persona?';
@override String get offline => 'Ensin conexón — vuelvi tentalo cuando teas en llinia';
}
// Path: notifications
@ -1629,26 +1618,15 @@ extension on TranslationsAst {
'trust.vouch' => 'Conozo a esta persona',
'trust.vouched' => 'Avales a esta persona',
'trust.circle' => 'Nel to círculu',
'trust.member' => 'Miembru de confianza de la rede',
'wot.title' => 'Rede de confianza',
'wot.open' => 'Rede de confianza',
'wot.help' => 'Cómo se decide quién ye miembru de confianza: la xente aválase ente sí, y la confianza estiéndese dende un conxuntu de raíces fundadores.',
'wot.roots' => 'Raíces de confianza',
'wot.rootsHelp' => 'Les identidaes fundadores qu\'anclen la rede. Amiesta a quien te fíes (apega\'l so códigu d\'identidá); la pertenencia mídese p\'afuera dende elles.',
'wot.noRoots' => 'Entá nun hai raíces de confianza — nun se pue calcular la pertenencia hasta semar la rede.',
'wot.addRoot' => 'Amestar una raíz de confianza',
'wot.rootHint' => 'Apega un códigu d\'identidá (npub…)',
'wot.add' => 'Amestar',
'wot.rootAdded' => 'Raíz de confianza amestada',
'wot.rootInvalid' => 'Esi nun ye un códigu d\'identidá válidu',
'wot.remove' => 'Quitar',
'wot.params' => 'Parámetros avanzaos',
'wot.paramsHelp' => 'Regles Duniter. Aflóxales pa una rede nueva; apriétales según crez.',
'wot.sigQty' => 'Avales pa ser miembru',
'wot.stepMax' => 'Distancia máxima a una raíz',
'wot.validityDays' => 'Validez del aval (díes)',
'wot.reset' => 'Reafitar a valores Duniter',
'wot.saved' => 'Guardáu',
'yourPeople.title' => 'La to xente',
'yourPeople.help' => 'Persones que conoces y avales, y persones que t\'avalen.',
'yourPeople.youVouchFor' => 'Tu avales a',
'yourPeople.vouchesForYou' => 'Aválente',
'yourPeople.youVouchForEmpty' => 'Entá nun avales a naide. Cuando conozas a daquién, abri la vuestra conversación y calca "Conozo a esta persona".',
'yourPeople.vouchesForYouEmpty' => 'Naide t\'avala entá',
'yourPeople.revoke' => 'Dexar d\'avalar',
'yourPeople.revokeConfirm' => '¿Dexar d\'avalar a esta persona?',
'yourPeople.offline' => 'Ensin conexón — vuelvi tentalo cuando teas en llinia',
'notifications.newMessageFrom' => ({required Object name}) => 'Mensaxe nuevu de ${name}',
'plantare.title' => 'Plantares',
'plantare.help' => 'Un Plantare ye\'l compromisu de reproducir una semilla y devolver una parte — asina una variedá sigue viaxando de mano en mano. Nun ye una venta.',