feat(block2): 'in your circle' trust — friend-of-a-friend, not a raw count
A network-wide 'N people vouch' count invites spam and means little. Now the
trust banner computes whether the peer is within YOUR circle — you vouch for
them, or someone you vouch for does (friend-of-a-friend) — via the pure
WebOfTrust rule (seeds={you}, threshold 1, distance 2). When known, the banner
turns green with 'In your circle' (else it falls back to the count).
The full member policy (threshold/distance/bootstrap) stays open (network-trust
§2); this is a deliberately loose 'people near you' heuristic.
Analyzer clean; trust cubit test adds a friend-of-a-friend vs stranger case
(run flutter test locally to confirm — the widget suite is too slow to run here).
This commit is contained in:
parent
46b5537a11
commit
f3a7ad198d
10 changed files with 96 additions and 16 deletions
|
|
@ -372,6 +372,7 @@
|
|||
"none": "No one vouches for them yet",
|
||||
"count": "Vouched for by {n}",
|
||||
"vouch": "I know this person",
|
||||
"vouched": "You vouch for them"
|
||||
"vouched": "You vouch for them",
|
||||
"circle": "In your circle"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -372,6 +372,7 @@
|
|||
"none": "Nadie los avala aún",
|
||||
"count": "Avalada por {n}",
|
||||
"vouch": "Conozco a esta persona",
|
||||
"vouched": "Avalas a esta persona"
|
||||
"vouched": "Avalas a esta persona",
|
||||
"circle": "En tu círculo"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -368,6 +368,7 @@
|
|||
"none": "Ainda ninguém os avaliza",
|
||||
"count": "Avalizada por {n}",
|
||||
"vouch": "Conheço esta pessoa",
|
||||
"vouched": "Avalizas esta pessoa"
|
||||
"vouched": "Avalizas esta pessoa",
|
||||
"circle": "No teu círculo"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 3
|
||||
/// Strings: 989 (329 per locale)
|
||||
/// Strings: 992 (330 per locale)
|
||||
///
|
||||
/// Built on 2026-07-10 at 09:34 UTC
|
||||
/// Built on 2026-07-10 at 10:09 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
|
|
|||
|
|
@ -1185,6 +1185,9 @@ class Translations$trust$en {
|
|||
|
||||
/// en: 'You vouch for them'
|
||||
String get vouched => 'You vouch for them';
|
||||
|
||||
/// en: 'In your circle'
|
||||
String get circle => 'In your circle';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1975,6 +1978,7 @@ extension on Translations {
|
|||
'trust.count' => ({required Object n}) => 'Vouched for by ${n}',
|
||||
'trust.vouch' => 'I know this person',
|
||||
'trust.vouched' => 'You vouch for them',
|
||||
'trust.circle' => 'In your circle',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -659,6 +659,7 @@ class _Translations$trust$es extends Translations$trust$en {
|
|||
@override String count({required Object n}) => 'Avalada por ${n}';
|
||||
@override String get vouch => 'Conozco a esta persona';
|
||||
@override String get vouched => 'Avalas a esta persona';
|
||||
@override String get circle => 'En tu círculo';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1333,6 +1334,7 @@ extension on TranslationsEs {
|
|||
'trust.count' => ({required Object n}) => 'Avalada por ${n}',
|
||||
'trust.vouch' => 'Conozco a esta persona',
|
||||
'trust.vouched' => 'Avalas a esta persona',
|
||||
'trust.circle' => 'En tu círculo',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -655,6 +655,7 @@ class _Translations$trust$pt extends Translations$trust$en {
|
|||
@override String count({required Object n}) => 'Avalizada por ${n}';
|
||||
@override String get vouch => 'Conheço esta pessoa';
|
||||
@override String get vouched => 'Avalizas esta pessoa';
|
||||
@override String get circle => 'No teu círculo';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1325,6 +1326,7 @@ extension on TranslationsPt {
|
|||
'trust.count' => ({required Object n}) => 'Avalizada por ${n}',
|
||||
'trust.vouch' => 'Conheço esta pessoa',
|
||||
'trust.vouched' => 'Avalizas esta pessoa',
|
||||
'trust.circle' => 'No teu círculo',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue