diff --git a/TODO.md b/TODO.md index 28fe1fd0..b2636c67 100644 --- a/TODO.md +++ b/TODO.md @@ -283,6 +283,39 @@ error boundaries** anywhere in the repo; and `dashboards.id` is a **global** pri in place via double-click → the viewer's pane. Either `/code-editor` earns its keep as a genuinely different tool (tree, tabs, multi-file) or that menu item should go. +## 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. + + **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. + + **Verified state, so the next pass does not have to re-derive it:** + + - **Rows are not links.** Both list and grid render a `
` with `onDoubleClick` + (`FileItem.tsx:701,748`) — the "opaque click" the audit names. No cmd-click into a new tab, no + middle-click, not link-focusable, and the target is in a closure rather than the DOM. + - **Search results are the same** — `
handleSearchResultClick(entry)}>` + (`FileViewContainer.tsx:185`), and that handler both navigates the folder AND opens the viewer. + - **The breadcrumb already got it right** and is the model to copy: it renders a real `` when + given `searchForPath`, and falls back to a `