Files
platform/todo/url-state/_index.md
T
pastilhasandClaude Fable 5 44f6c6d6ac todo: group the url and query-string items into one theme
files-app becomes url-state: the file browser is where the work happened, but where
selection lives and who clears a query string are framework questions. The panel
framework's version of the same question moves in beside them, extracted from the
deep-read item, which keeps it as one of its three questions.

Item ids changed with the theme. Done now deliberately — no board reads them yet, and
this is the last cheap moment to move one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:40:39 +00:00

25 lines
1.4 KiB
Markdown

---
theme: url-state
heading: "URL state — routing, query strings and selection"
kind: theme
---
**Grouped 2026-08-21.** This was `files-app`, and the file browser is still where most of it is —
but the question underneath is not the file browser's. Where selection lives, what a query string is
allowed to mean, and who is responsible for clearing one are framework questions that happen to have
been answered first in `/files`. The panel framework's own version of the same question is here too,
rather than filed under the framework's deep read where nobody comparing the two would find it.
`docs/navigation-audit.md` is the authority for all of it.
**The URL model is done (2026-08-15).** The folder is the pathname —
`/files/archive/Tests/platform/docs` — and `?view=` is a NAME within it, not a second copy of the path.
Deep links and refresh work, which they never had. Landed across `559560de`, `98ba604a`, `7e31564c`,
`0dc88b51`, `7359af2f`, with `files-route.ts` + 23 tests as the one owner of encoding and of which params
belong to the overlay.
Four bugs came out of that work and are fixed: closing a pane sent you home; `?view=` was stripped on
every page load by a mount effect that had made deep links impossible since 2026-02-23; navigating kept a
pane belonging to the folder you left; and the breadcrumb opted out of that last rule because it is a
`<Link>` and never called the function enforcing it.