diff --git a/TODO.md b/TODO.md index b2636c67..7d0ff3da 100644 --- a/TODO.md +++ b/TODO.md @@ -285,36 +285,42 @@ error boundaries** anywhere in the repo; and `dashboards.id` is a **global** pri ## Files app — routing -- [ ] **The files app needs a routing pass (noted 2026-08-15, after `31d8d725`).** Do this after the - file-browser test pass, alongside the code-editor work above. `docs/navigation-audit.md` is the - authority and names the anti-pattern; this is where it still lives. +**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. - **What prompted it.** Closing a viewer pane sent you back to home. `onCloseViewer` was - `setSearchParams({})` — a wholesale wipe that took `?path=` with it. Fixed, but the shape of the bug - is the point: four handlers touched the same query string and only one of them wiped it, because no - single thing owns that URL. +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 +`` and never called the function enforcing it. - **Verified state, so the next pass does not have to re-derive it:** +- [ ] **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 `