João Salavisa
33a378a8dc
fix(web): expand folder optimistically on first click in Files panel ( #984 )
...
* fix(web): expand folder optimistically on first click in Files panel
The first click on a folder in the Files panel previously deferred the
expanded-state update until after loadNodeChildren resolved, so the
chevron and children only appeared once the WebSocket round-trip
finished. Users perceived the click as a no-op and had to click again.
Flip the expanded set synchronously, then load children in the
background. Extracts the toggle logic into a testable helper and locks
in the regression with unit tests.
Closes #983
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* docs(web): collapse toggleFolderExpand docstring to a single line
Per the CLAUDE.md "no multi-line comment blocks" rule flagged by review.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix(web): dedupe in-flight loadNodeChildren and collapse comment to one line
- Add `activeLoadsRef` + `isLoading(path)` to `useLoadingTimers`, and guard
`loadNodeChildren` against duplicate fetches for the same path. Rapid
double-clicks on a freshly collapsed folder no longer issue two
identical WebSocket round-trips (Greptile P2).
- Collapse the `toggleFolderExpand` comment to a single line per
CLAUDE.md (Claude review).
- Add `file-browser-load-children.test.ts` covering the dedupe contract,
the post-finish re-fetch path, and the children-already-loaded
short-circuit.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
---------
Co-authored-by: Kandev Agent <agent@kandev.dev >
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-21 14:01:31 +01:00
..
2026-05-05 13:55:46 +01:00
2026-05-21 09:24:34 +01:00
2026-05-10 17:30:24 +01:00
2026-05-21 01:31:42 +01:00
2026-03-07 14:53:21 +00:00
2026-05-05 22:06:24 +01:00
2026-05-18 22:04:31 +01:00
2026-03-10 17:30:04 +00:00
2026-05-01 13:27:25 +01:00
2026-02-24 20:33:45 +00:00
2026-05-14 10:27:38 +01:00
2026-04-18 10:32:24 +01:00
2026-05-19 15:53:48 +01:00
2026-05-19 15:53:48 +01:00
2026-05-02 20:26:42 +01:00
2026-05-02 20:26:42 +01:00
2026-05-05 22:09:02 +01:00
2026-05-02 20:26:42 +01:00
2026-05-14 10:27:38 +01:00
2026-05-19 15:53:48 +01:00
2026-05-04 17:28:04 +01:00
2026-05-04 17:28:04 +01:00
2026-05-19 15:53:48 +01:00
2026-05-05 22:09:02 +01:00
2026-05-14 10:27:38 +01:00
2026-05-05 13:55:46 +01:00
2026-02-21 22:14:56 +00:00
2026-02-23 00:16:37 +00:00
2026-02-19 22:18:01 +00:00
2026-05-14 10:27:38 +01:00
2026-05-02 20:26:42 +01:00
2026-05-02 20:26:42 +01:00
2026-05-13 23:46:36 +01:00
2026-05-18 23:08:14 +01:00
2026-05-04 18:53:33 +01:00
2026-05-19 09:19:05 +01:00
2026-04-28 22:23:14 +01:00
2026-05-01 22:32:28 +01:00
2026-05-14 23:57:05 +01:00
2026-05-19 09:19:05 +01:00
2026-05-19 23:41:02 +01:00
2026-05-07 18:43:07 +01:00
2026-05-13 18:39:01 +01:00
2026-05-19 23:41:02 +01:00
2026-05-16 20:07:57 +01:00
2026-05-02 15:19:02 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-03-13 10:44:32 +00:00
2026-02-24 23:01:41 +00:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-02-19 22:18:01 +00:00
2026-05-21 14:01:31 +01:00
2026-05-21 14:01:31 +01:00
2026-04-09 12:49:47 +01:00
2026-05-17 21:26:13 +01:00
2026-02-19 22:18:01 +00:00
2026-05-21 14:01:31 +01:00
2026-04-25 21:42:59 +01:00
2026-05-21 14:01:31 +01:00
2026-04-11 17:43:21 +01:00
2026-03-24 23:38:02 +00:00
2026-03-24 23:38:02 +00:00
2026-02-19 22:18:01 +00:00
2026-02-19 22:18:01 +00:00
2026-04-02 00:08:35 +01:00
2026-05-17 21:26:13 +01:00
2026-05-17 21:26:13 +01:00
2026-05-19 09:18:22 +01:00
2026-03-29 15:33:40 +01:00
2026-02-19 22:18:01 +00:00
2026-03-12 23:22:26 +00:00
2026-03-24 23:38:02 +00:00
2026-04-24 21:31:46 +01:00
2026-04-24 21:31:46 +01:00
2026-05-14 21:26:09 +01:00
2026-05-17 20:16:15 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-04-20 13:44:24 +01:00
2026-05-01 22:32:28 +01:00
2026-05-01 21:02:41 +01:00
2026-05-14 21:26:09 +01:00
2026-03-13 10:44:32 +00:00
2026-05-05 13:55:46 +01:00
2026-05-05 13:55:46 +01:00
2026-03-08 11:03:30 +00:00
2026-05-06 20:25:34 +01:00
2026-05-05 13:55:46 +01:00
2026-05-05 13:55:46 +01:00
2026-05-18 23:08:14 +01:00
2026-05-02 22:25:40 +01:00
2026-05-02 22:25:40 +01:00
2026-05-02 22:25:40 +01:00
2026-05-17 20:16:15 +01:00
2026-05-02 22:25:40 +01:00
2026-05-02 22:25:40 +01:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-04-25 18:40:31 +01:00
2026-05-18 22:04:31 +01:00
2026-05-01 11:00:33 +01:00
2026-05-17 20:16:15 +01:00
2026-05-16 20:07:57 +01:00
2026-05-06 20:25:34 +01:00
2026-02-19 22:18:01 +00:00
2026-05-01 11:00:33 +01:00
2026-05-14 21:26:09 +01:00
2026-02-19 22:18:01 +00:00
2026-04-20 13:44:24 +01:00
2026-05-05 13:55:46 +01:00
2026-04-17 23:20:10 +01:00
2026-02-19 22:18:01 +00:00
2026-03-07 14:53:21 +00:00
2026-04-02 00:08:35 +01:00
2026-05-16 14:04:09 +01:00
2026-05-16 14:04:09 +01:00
2026-05-21 09:24:34 +01:00
2026-04-08 07:55:24 +01:00
2026-04-17 23:20:10 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-14 10:27:38 +01:00
2026-05-14 10:27:38 +01:00
2026-05-13 18:04:37 +01:00
2026-05-14 21:26:09 +01:00
2026-05-18 23:08:14 +01:00
2026-05-05 14:13:43 +01:00
2026-05-02 20:26:42 +01:00
2026-05-17 20:16:15 +01:00
2026-04-27 10:22:58 +01:00
2026-04-27 10:22:58 +01:00
2026-04-27 10:22:58 +01:00
2026-04-27 10:22:58 +01:00
2026-04-27 10:22:58 +01:00
2026-04-27 10:22:58 +01:00
2026-02-25 02:10:16 +00:00
2026-05-14 21:26:09 +01:00
2026-05-02 15:19:02 +01:00
2026-05-19 21:44:15 +01:00
2026-05-19 21:44:15 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-19 17:55:25 +01:00
2026-05-21 01:31:42 +01:00
2026-02-19 22:18:01 +00:00
2026-05-06 19:05:19 +01:00
2026-05-21 01:31:42 +01:00
2026-04-20 13:44:24 +01:00
2026-05-21 01:31:42 +01:00
2026-05-14 21:26:09 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-05-16 20:07:57 +01:00
2026-03-29 22:27:37 +01:00
2026-05-01 13:27:25 +01:00
2026-04-24 17:14:03 +01:00
2026-05-04 00:53:21 +01:00
2026-05-04 00:53:21 +01:00
2026-05-16 20:07:57 +01:00
2026-05-14 21:26:09 +01:00
2026-05-14 21:26:09 +01:00
2026-04-27 10:22:58 +01:00
2026-05-02 20:26:42 +01:00
2026-05-16 20:07:57 +01:00
2026-05-05 13:55:46 +01:00
2026-04-24 17:14:03 +01:00
2026-03-08 11:03:30 +00:00
2026-02-24 23:01:41 +00:00
2026-04-16 10:14:45 +01:00
2026-02-19 22:18:01 +00:00
2026-02-19 22:18:01 +00:00
2026-05-14 21:26:09 +01:00