chart/docs
Chris Amow 7590d53b13 Put diagnostic capture retrieval behind the same auth as everything else
Uploading a capture required a token; retrieving one did not. That was a
deliberate capability-URL design with a test asserting it, and the reasoning
held: it lets whoever is debugging fetch a capture without the chart password.

Changed because of what a capture contains. getDisplayMedia returns a picture of
someone's screen, and preferCurrentTab is a preference rather than a constraint,
so a mis-click shares a different window. An unguessable id stops guessing but
not leakage: capability URLs escape through proxy logs, browser history and
pasted links.

Retrieval now uses the dependency the rest of the API uses, which already
accepts the session cookie — so a logged-in browser needs nothing extra, which
was the condition for making this change at all. An agent on the server reads
the capture directory directly; one working over HTTP sends the API token.

Both handlers moved from meta.py to routes.py. meta.py is the deliberately open
router — health, version, login, logout — and a screenshot endpoint did not
belong there. The existing test now asserts 401 without credentials, and a new
one covers the browser path: log in, then retrieve with only the cookie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 17:24:04 -05:00
..
archived Stop the plan's opening from describing a greenfield app 2026-08-11 16:26:36 -05:00
async_refactor.md Split the plan from the log of what actually happened 2026-08-11 16:29:47 -05:00
feature_undo.md better default names 2026-08-11 14:36:58 -05:00
implementation.md Put diagnostic capture retrieval behind the same auth as everything else 2026-08-11 17:24:04 -05:00
mobile_enhance.md Unify chart geometry and deepen 30m history 2026-08-11 04:08:02 -05:00
multi_user.md Track multi-user as a direction, not a project 2026-08-11 16:21:25 -05:00
NEXT_STEPS.md Split the plan from the log of what actually happened 2026-08-11 16:29:47 -05:00
plan.md Treat the plan and the log as maintenance, not as a build 2026-08-11 16:32:43 -05:00