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>
This commit is contained in:
2026-08-21 16:40:39 +00:00
co-authored by Claude Fable 5
parent ef2c9c51f7
commit 44f6c6d6ac
7 changed files with 50 additions and 10 deletions
+24
View File
@@ -0,0 +1,24 @@
---
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.