GitNexus/gitnexus-web/src
Ahmad Othman Ammar Adi 5d32e345bb
feat(web): drop a folder onto the analyzer to upload it (#3315)
* feat(web): drop a folder onto the analyzer to upload it

The Local Folder panel of RepoAnalyzer is now a drop target. A dropped
folder is walked with the File and Directory Entries API
(DataTransferItem.webkitGetAsEntry), directories on the shared exclusion
list are pruned before they are read, and the resulting File objects are
handed to the existing filterRepoFiles -> uploadFolder -> trackJob path
with webkitRelativePath set to <folder>/<rest>, so the server receives the
same manifest shape the webkitdirectory picker produces.

Compared with the picker, the walk never enumerates node_modules or .git,
stops at the server's 20000 file cap and 64 path segments, skips
unreadable entries instead of failing, and reports progress while it runs.
Loose files and several folders at once are refused with a message (the
server accepts one top-level folder). The walk runs under the request
controller, so a mode switch or unmount aborts it; Analyze and the picker
are blocked while it runs. The panel-wide target also stops the browser
from navigating to a file dropped a few pixels off the button.

New strings in en and zh-CN; browsers without webkitGetAsEntry keep the
picker button and get an explanation.

* Address PR review feedback (#3315)

Clear readingCount only when this drop still owns the request controller, and skip oversized files before they count toward the 20k drop cap.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Address PR review feedback (#3315)

Count oversized files the drop walk skips in the summary droppedCount, and correct the 250-file batch-read comment.

Co-authored-by: Cursor <cursoragent@cursor.com>

* chore(autofix): apply prettier + eslint fixes via /autofix command

---------

Co-authored-by: Gergő Magyar <gergomagyar@icloud.com>
Co-authored-by: Gergo Magyar <gergomagyar0@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-20 10:12:54 +01:00
..
components feat(web): drop a folder onto the analyzer to upload it (#3315) 2026-09-20 10:12:54 +01:00
config feat: notify users when a newer gitnexus version is available (#3175) 2026-09-04 18:50:03 +01:00
core fix(server,web): honor the grep tool contract — real regex, fileFilter, caseSensitive (#3109) 2026-08-31 20:43:28 +01:00
hooks fix(server,web): honor the grep tool contract — real regex, fileFilter, caseSensitive (#3109) 2026-08-31 20:43:28 +01:00
i18n feat(render): add one-click deploy to render support (#2804) 2026-08-06 00:19:44 +00:00
lib feat(web): drop a folder onto the analyzer to upload it (#3315) 2026-09-20 10:12:54 +01:00
locales feat(web): drop a folder onto the analyzer to upload it (#3315) 2026-09-20 10:12:54 +01:00
services feat(storage): add configurable index storage and content retention tiers (#3060) 2026-09-12 20:31:55 +00:00
vendor/leiden feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
App.tsx feat: notify users when a newer gitnexus version is available (#3175) 2026-09-04 18:50:03 +01:00
index.css feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
main.tsx feat(i18n): make web and CLI language-aware (#1748) 2026-05-23 06:14:24 +01:00
vite-env.d.ts fix(web): chat-only mode for large projects to prevent WebUI hang (#2178) (#2185) 2026-06-13 11:07:58 +01:00