diff --git a/README.md b/README.md index 3dadf3a..fbaeec4 100644 --- a/README.md +++ b/README.md @@ -112,13 +112,23 @@ substandard shows a badge when the site you're visiting has a standard.site publ link card from the page's own Open Graph tags, which is why the text is a title and a URL rather than a record embed — see `src/lib/share.ts`. - How long a read keeps depends on whose data it is (`src/lib/cache.ts`). - Your own repo — subscriptions, follows, blocks, labeler subscriptions — - keeps for an hour and is dropped the moment this extension writes to it, - so subscribing never leaves the popup insisting you have not. Anything - about somebody else's publication, profile or labels keeps for a day, - since nothing you do changes it. Both live in session storage, which the - browser clears when it closes: nothing about which publications you + Your own repo, where this extension also writes — subscriptions, blocks, + labeler subscriptions — keeps for an hour and is dropped the moment it + writes, so subscribing never leaves the popup insisting you have not. + Anything about somebody else's publication, profile or labels keeps for a + day, since nothing you do changes it. Both live in session storage, which + the browser clears when it closes: nothing about which publications you visited is written to disk. +- Your follow list is the exception, and keeps for a day on disk. Nothing + here creates or deletes a follow, so a stale set cannot hide something you + did; and reading it is one request per hundred follows against your own + PDS, which is five hundred requests for an account following fifty + thousand people. That is not a walk to repeat every time the browser + restarts. It is the one value allowed on disk because of what it is not: a + follow list is your own public social graph, and unlike the rest it records + nothing about where you have been. The walk runs in the background worker, + starting when you sign in, so no popup ever waits on it — the subscriber + count draws first and the faces appear when it lands. - The refresh icon next to the Open button re-fetches everything, since records can change remotely. Refresh bypasses every cache in the path, including the well-known probes — a publisher correcting their site sees diff --git a/TODO.md b/TODO.md index 1b42f72..9277374 100644 --- a/TODO.md +++ b/TODO.md @@ -237,17 +237,25 @@ intersecting two lists, and both are capped: says so in its tooltip. - The follow set comes from `listRecords`, which stops at 2000 records. An account following more than that silently loses the tail, and unlike the - scan cap nothing reports it beyond the count `src/popup/cards/follows.ts` - logs. + scan cap nothing reports it beyond the count `src/background.ts` logs. The first cap binds on a publication and has not bound on any measured so far (the largest had 53 subscribers). The second binds on the *reader*, and now costs more than a face: the owner card's "Following" line reads the same set, so a reader with more than 2000 follows can be told they do not follow an -account they followed early. Both are worth revisiting together, and the fix -for the second is probably to ask Constellation — or the reader's own repo, by -rkey — about the one account in question rather than to hold the whole follow -set in the popup. +account they followed early. + +Raising the second is cheaper than it was. The walk runs in the background +worker and is cached for a day on disk (`graph` in `src/lib/cache.ts`), so its +cost is once-a-day and off every render path; 2000 is a number inherited from +when the popup did this inline, and the question is now how many requests a +reader's own PDS should take once a day (a 50,000-follow account is 500) rather +than how long a popup may hang. + +The alternative is to stop holding the whole set and ask about the one account +in question — Constellation, or the reader's own repo by rkey. That answers the +owner card directly; the subscriber row would need the reverse question, which +of a publication's subscribers the reader follows. ## Let the user manage their labelers