From 65aa6c93153b28554127627dde2883a0685eeaff Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 2 Oct 2026 09:17:48 -0700 Subject: Never write a follow list over one we failed to find A kind 3 is replaceable: publishing one built on a list we didn't find wipes the real one wherever it lands. 2026-10-02, an Amethyst user with 398 follows (kept on her own relays and an archive) signed in to coinos for the first time; the starter-follows seed asked only our relays, saw nothing, and published Adam + coinos over her list. - deepContactList: our relays, the profile indexes, the archives, the person's own NIP-65 write relays, and Primal's signed copy (verified). - Starter follows only for a key with no follow list AND no profile anywhere ('new' meant new to coinos, not new to nostr). - A follow, follow-many or mute made while we have never seen the list does the deep lookup first and builds on what it finds. - Settings > Nostr > Follow list: find older copies on history-keeping relays and restore one as a union with the current list (nobody is removed), for anyone already hit. - tools/follows-overwrite-test.js: fake relay network, only an archive holds the list; fails on the old code with the exact two-person event. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo --- src/locales/ko.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/locales/ko.json') diff --git a/src/locales/ko.json b/src/locales/ko.json index cf252d2..098bb7e 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -869,5 +869,13 @@ "profFollowersNone": "팔로워를 찾을 수 없습니다.", "profFollowersPartial": "팔로워 {total}명 중 {n}명을 표시합니다.", "showMore": "더 보기", - "arkZapNoPostZap": "이 게시물에 zap할 수 없습니다: 작성자에게 Lightning 주소도 Ark 주소도 없습니다." + "arkZapNoPostZap": "이 게시물에 zap할 수 없습니다: 작성자에게 Lightning 주소도 Ark 주소도 없습니다.", + "followHistTitle": "팔로우 목록", + "followHistDesc": "{n}명을 팔로우하고 있습니다. 다른 앱이 팔로우 목록을 덮어썼다면, 기록을 보관하는 릴레이에 예전 사본이 남아 있을 수 있습니다. 복원하면 그 사람들이 모두 다시 추가되며, 아무도 빠지지 않습니다.", + "followHistLook": "예전 사본 찾기", + "followHistPeople": "{n}명", + "followHistRestore": "{n}명 복원", + "followHistNone": "목록에 빠진 사람이 들어 있는 예전 사본이 없습니다.", + "followHistNothing": "그 사본의 모든 사람이 이미 목록에 있습니다.", + "followHistRestored": "팔로우 {n}명을 복원했습니다." } -- cgit v1.2.3