summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-10-27 07:39:19 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-10-27 07:39:19 +0000
commitec633d0daf17ab5806c563b7a95d6721b7b73c7b (patch)
treee747efc4dcbcbc4abf83effab893ceb8510ccc55 /docs
parentef20a5421c322ef8053f5c2766d851873bc472f3 (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.md6
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.