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:
parent
4af90876f4
commit
dc7b2eee27
25 changed files with 595 additions and 863 deletions
|
|
@ -77,7 +77,7 @@ class Translations with BaseTranslations<AppLocale, Translations> {
|
|||
late final Translations$chatList$en chatList = Translations$chatList$en.internal(_root);
|
||||
late final Translations$chat$en chat = Translations$chat$en.internal(_root);
|
||||
late final Translations$trust$en trust = Translations$trust$en.internal(_root);
|
||||
late final Translations$wot$en wot = Translations$wot$en.internal(_root);
|
||||
late final Translations$yourPeople$en yourPeople = Translations$yourPeople$en.internal(_root);
|
||||
late final Translations$notifications$en notifications = Translations$notifications$en.internal(_root);
|
||||
late final Translations$plantare$en plantare = Translations$plantare$en.internal(_root);
|
||||
late final Translations$sale$en sale = Translations$sale$en.internal(_root);
|
||||
|
|
@ -1467,75 +1467,42 @@ class Translations$trust$en {
|
|||
|
||||
/// en: 'In your circle'
|
||||
String get circle => 'In your circle';
|
||||
|
||||
/// en: 'Trusted member of the network'
|
||||
String get member => 'Trusted member of the network';
|
||||
}
|
||||
|
||||
// Path: wot
|
||||
class Translations$wot$en {
|
||||
Translations$wot$en.internal(this._root);
|
||||
// Path: yourPeople
|
||||
class Translations$yourPeople$en {
|
||||
Translations$yourPeople$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'Network of trust'
|
||||
String get title => 'Network of trust';
|
||||
/// en: 'Your people'
|
||||
String get title => 'Your people';
|
||||
|
||||
/// en: 'Network of trust'
|
||||
String get open => 'Network of trust';
|
||||
/// en: 'People you've met and vouch for, and people who vouch for you.'
|
||||
String get help => 'People you\'ve met and vouch for, and people who vouch for you.';
|
||||
|
||||
/// en: 'How trusted membership is decided: people vouch for each other, and trust spreads outward from a set of founding roots.'
|
||||
String get help => 'How trusted membership is decided: people vouch for each other, and trust spreads outward from a set of founding roots.';
|
||||
/// en: 'You vouch for'
|
||||
String get youVouchFor => 'You vouch for';
|
||||
|
||||
/// en: 'Trust roots'
|
||||
String get roots => 'Trust roots';
|
||||
/// en: 'They vouch for you'
|
||||
String get vouchesForYou => 'They vouch for you';
|
||||
|
||||
/// en: 'The founding identities the network is anchored to. Add people you trust (paste their identity code); membership is measured outward from them.'
|
||||
String get rootsHelp => 'The founding identities the network is anchored to. Add people you trust (paste their identity code); membership is measured outward from them.';
|
||||
/// en: 'You don't vouch for anyone yet. When you meet someone, open your chat with them and tap "I know this person".'
|
||||
String get youVouchForEmpty => 'You don\'t vouch for anyone yet. When you meet someone, open your chat with them and tap "I know this person".';
|
||||
|
||||
/// en: 'No trust roots yet — membership can't be worked out until the network is seeded.'
|
||||
String get noRoots => 'No trust roots yet — membership can\'t be worked out until the network is seeded.';
|
||||
/// en: 'No one vouches for you yet'
|
||||
String get vouchesForYouEmpty => 'No one vouches for you yet';
|
||||
|
||||
/// en: 'Add a trust root'
|
||||
String get addRoot => 'Add a trust root';
|
||||
/// en: 'Stop vouching'
|
||||
String get revoke => 'Stop vouching';
|
||||
|
||||
/// en: 'Paste an identity code (npub…)'
|
||||
String get rootHint => 'Paste an identity code (npub…)';
|
||||
/// en: 'Stop vouching for this person?'
|
||||
String get revokeConfirm => 'Stop vouching for this person?';
|
||||
|
||||
/// en: 'Add'
|
||||
String get add => 'Add';
|
||||
|
||||
/// en: 'Trust root added'
|
||||
String get rootAdded => 'Trust root added';
|
||||
|
||||
/// en: 'That's not a valid identity code'
|
||||
String get rootInvalid => 'That\'s not a valid identity code';
|
||||
|
||||
/// en: 'Remove'
|
||||
String get remove => 'Remove';
|
||||
|
||||
/// en: 'Advanced parameters'
|
||||
String get params => 'Advanced parameters';
|
||||
|
||||
/// en: 'Duniter rules. Loosen them for a young network; tighten as it grows.'
|
||||
String get paramsHelp => 'Duniter rules. Loosen them for a young network; tighten as it grows.';
|
||||
|
||||
/// en: 'Vouches to become a member'
|
||||
String get sigQty => 'Vouches to become a member';
|
||||
|
||||
/// en: 'Max distance from a root'
|
||||
String get stepMax => 'Max distance from a root';
|
||||
|
||||
/// en: 'Vouch validity (days)'
|
||||
String get validityDays => 'Vouch validity (days)';
|
||||
|
||||
/// en: 'Reset to Duniter defaults'
|
||||
String get reset => 'Reset to Duniter defaults';
|
||||
|
||||
/// en: 'Saved'
|
||||
String get saved => 'Saved';
|
||||
/// en: 'You're offline — try again when you're connected'
|
||||
String get offline => 'You\'re offline — try again when you\'re connected';
|
||||
}
|
||||
|
||||
// Path: notifications
|
||||
|
|
@ -2549,26 +2516,15 @@ extension on Translations {
|
|||
'trust.vouch' => 'I know this person',
|
||||
'trust.vouched' => 'You vouch for them',
|
||||
'trust.circle' => 'In your circle',
|
||||
'trust.member' => 'Trusted member of the network',
|
||||
'wot.title' => 'Network of trust',
|
||||
'wot.open' => 'Network of trust',
|
||||
'wot.help' => 'How trusted membership is decided: people vouch for each other, and trust spreads outward from a set of founding roots.',
|
||||
'wot.roots' => 'Trust roots',
|
||||
'wot.rootsHelp' => 'The founding identities the network is anchored to. Add people you trust (paste their identity code); membership is measured outward from them.',
|
||||
'wot.noRoots' => 'No trust roots yet — membership can\'t be worked out until the network is seeded.',
|
||||
'wot.addRoot' => 'Add a trust root',
|
||||
'wot.rootHint' => 'Paste an identity code (npub…)',
|
||||
'wot.add' => 'Add',
|
||||
'wot.rootAdded' => 'Trust root added',
|
||||
'wot.rootInvalid' => 'That\'s not a valid identity code',
|
||||
'wot.remove' => 'Remove',
|
||||
'wot.params' => 'Advanced parameters',
|
||||
'wot.paramsHelp' => 'Duniter rules. Loosen them for a young network; tighten as it grows.',
|
||||
'wot.sigQty' => 'Vouches to become a member',
|
||||
'wot.stepMax' => 'Max distance from a root',
|
||||
'wot.validityDays' => 'Vouch validity (days)',
|
||||
'wot.reset' => 'Reset to Duniter defaults',
|
||||
'wot.saved' => 'Saved',
|
||||
'yourPeople.title' => 'Your people',
|
||||
'yourPeople.help' => 'People you\'ve met and vouch for, and people who vouch for you.',
|
||||
'yourPeople.youVouchFor' => 'You vouch for',
|
||||
'yourPeople.vouchesForYou' => 'They vouch for you',
|
||||
'yourPeople.youVouchForEmpty' => 'You don\'t vouch for anyone yet. When you meet someone, open your chat with them and tap "I know this person".',
|
||||
'yourPeople.vouchesForYouEmpty' => 'No one vouches for you yet',
|
||||
'yourPeople.revoke' => 'Stop vouching',
|
||||
'yourPeople.revokeConfirm' => 'Stop vouching for this person?',
|
||||
'yourPeople.offline' => 'You\'re offline — try again when you\'re connected',
|
||||
'notifications.newMessageFrom' => ({required Object name}) => 'New message from ${name}',
|
||||
'plantare.title' => 'Plantares',
|
||||
'plantare.help' => 'A Plantare is a promise to reproduce a seed and return some — how a variety keeps travelling from hand to hand. It\'s not a sale.',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue