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>
30 lines
1.5 KiB
Markdown
30 lines
1.5 KiB
Markdown
---
|
|
id: url-state/can-the-query-strings-come-out-of-the-flow
|
|
title: "Can the query strings come out of the flow?"
|
|
theme: url-state
|
|
status: open
|
|
created: 2026-08-20
|
|
date_source: assumed
|
|
order: 4
|
|
---
|
|
|
|
**Can the query strings come out of the flow?** One of the three questions the Workspace/Panel deep
|
|
read set out to answer rather than assume (`workspaces-panels/a-deep-read-of-the-whole-framework-to`),
|
|
pulled out to sit beside the file browser's version of the same problem — which is the only place the
|
|
question has actually been worked through end to end.
|
|
|
|
What makes it a real question rather than a tidy-up: a query string is doing several different jobs at
|
|
once across the app. In `/files` it names the open overlay (`?view=<name>`), which is addressable state
|
|
and belongs in the URL. `src/workspaces/components/NavLink.tsx` appends a **global** query string to
|
|
every link it renders — a different job again, and one most callers never think about. And
|
|
`docs/navigation-audit.md` prescribes `?selected=<id>` for a master list with a live preview, because
|
|
the detail route is the full page.
|
|
|
|
So "come out of the flow" is not one change. Deciding which of those uses are load-bearing addressable
|
|
state and which are ambient plumbing being carried around is the work, and the answer probably differs
|
|
per case.
|
|
|
|
Related, and the reason this theme exists: `url-state/the-acts-that-clear-the-overlay-have-no-owner`
|
|
is the same shape one layer down — the params are named in one place, but every site still decides for
|
|
itself whether to honour them.
|