Files
platform/todo/url-state/rows-are-still-not-links.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

1.1 KiB

id, title, theme, status, created, date_source, order
id title theme status created date_source order
url-state/rows-are-still-not-links Rows are still not links url-state open 2026-08-20 assumed 1

Rows are still not links. This is the half that did not get done, and it is the original finding. Both list and grid render <div onDoubleClick> (FileItem.tsx:701,748), and search results render <div onClick> (FileViewContainer.tsx:187) — the "opaque click" that docs/navigation-audit.md names. No cmd-click into a new tab, no middle-click, not link-focusable, and the target lives in a closure rather than the DOM.

It is now much easier than it was: folderHref(path) gives a folder's URL and hrefForPath gives a full To with the overlay already stripped, so a row becomes <Link to={hrefForPath(childPath)}> and a file row becomes a link that sets ?view=<name>. The breadcrumb has done exactly this since before today and is the model.

Watch for: a row is also a click target for SELECTION (single click selects, double opens, shift/cmd extend). An anchor changes what those gestures mean by default, so the selection handlers have to keep working and preventDefault where they win.