diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-10-27 07:39:19 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-10-27 07:39:19 +0000 |
| commit | ec633d0daf17ab5806c563b7a95d6721b7b73c7b (patch) | |
| tree | e747efc4dcbcbc4abf83effab893ceb8510ccc55 /docs | |
| parent | ef20a5421c322ef8053f5c2766d851873bc472f3 (diff) | |
Write down a refused token instead of only remembering it
401 and 403 are permanent by decision -- a refused token cannot fix
itself -- and the notice saying so was held in memory. So it vanished
with the process and only came back once the next refresh had gone and
been refused all over again, which for 61 feeds is hours of the app
quietly downloading from publishers with nothing on screen to say why.
It now lives in the preferences file and is there at launch.
Saving different credentials clears it at once rather than waiting for
a request to prove it, because that is the one act that answers the
complaint. Saving the same ones again proves nothing and leaves the
notice standing.
Behind a small interface so SkipServer does not have to know whether
it is writing to a preferences file or to nothing: every test wants it
in memory, without a Context to hang a DataStore off.
The stored one takes the reading and the writing as two narrow seams
rather than a Preferences. Passing Preferences dragged a Context in
and made it the one piece of the server client that could only be
exercised on a device -- the coverage gate caught that, which is what
it is for. What it actually decides, when *not* to write, is now plain
Kotlin with five tests on it: clearing runs after every successful
reply, so two hundred successes in a sweep must write nothing.
Verified on a device: a refusal written by one Preferences instance is
read back by another, and four cases around saving credentials behave
as described.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/superpowers/plans/2026-10-20-corrections-and-signature-library.md | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/docs/superpowers/plans/2026-10-20-corrections-and-signature-library.md b/docs/superpowers/plans/2026-10-20-corrections-and-signature-library.md index 146581c..331e883 100644 --- a/docs/superpowers/plans/2026-10-20-corrections-and-signature-library.md +++ b/docs/superpowers/plans/2026-10-20-corrections-and-signature-library.md @@ -388,8 +388,10 @@ everything measured, though not directly caught in a probe. - **Compose has no automated coverage** — no Robolectric. Everything visual is verified by eye on the emulator only. -- **The rejected-token notice is in-memory**, so after a process restart it reappears on the next - refresh rather than at launch. +- **The rejected-token notice is written down — fixed 2026-10-27.** It lives in the preferences + file now, so it is on the Settings screen at launch rather than after the next refresh has gone + and been refused all over again. Saving *different* credentials clears it at once; saving the + same ones again proves nothing and leaves it standing. - **Library and Settings redesign (step 4 of the UI plan) — done 2026-10-25.** The library is one list: Up Next as a heading and a row, shows as a dot, a title and a waiting count. Settings is three groups ordered by how often they are touched, with the build hash last under About. |
