Enhanced UI with advanced features and improved upload system - #33
Open
NasroelLah wants to merge 22 commits into
Open
Enhanced UI with advanced features and improved upload system#33NasroelLah wants to merge 22 commits into
NasroelLah wants to merge 22 commits into
Conversation
## New Features - ✨ Dual view modes: Grid and List view with toggle - 🔍 Advanced fuzzy search with exact match option - 📊 Flexible sorting: by name, size, or date modified - 🎯 Floating upload progress with real-time tracking - 🖱️ Enhanced drag & drop with visual feedback - 🚫 Upload cancellation and queue management - 📱 Responsive toolbar design ## UI/UX Improvements - 🎨 Modern toolbar with intuitive controls - 📋 Detailed list view with file metadata - 🔄 Auto-show floating progress for new uploads - 🎭 Improved visual feedback for drag operations - 📊 Real-time search statistics display - 🧹 Auto-cleanup completed uploads ## Technical Enhancements - 🧠 Smart fuzzy search algorithms - 🗂️ Robust XML parsing with fallbacks - 🔧 Comprehensive upload manager system - 📝 Enhanced logging and debugging - ⚡ Optimized performance and error handling - 🏗️ Modular component architecture ## Bug Fixes - 🐛 Fixed floating progress visibility issues - 🔧 Resolved upload state management - 📡 Improved XHR error handling - 🧹 Memory leak prevention in uploads Closes multiple UI/UX improvement requests and enhances overall user experience.
- Cache PROPFIND listings in-memory (30s TTL) + invalidate on writes - propfind.ts: Cache-Control max-age=5, ETag, If-None-Match 304 - get.ts: thumbnail immutable 1yr, general files private max-age=60 - Dedupe getAuthHeaders into src/utils/auth.ts; Unicode-safe btoa - Fix filteredFiles sort() mutating `files` in place - xhrFetch: clean up abort listener - Remove debug console spam, localhost Test Upload button, dead code Co-Authored-By: Claude <noreply@anthropic.com>
- Grid: card list with explicit Copy-link + Download actions per file - List: keyboard-navigable rows (Enter opens/downloads, Space selects), per-row copy/download buttons, no accidental new-tab on click - Shared FileThumb with onError fallback to MIME icon - Replace window.prompt/confirm with MUI dialogs (rename, folder, delete) - Dedupe copy logic into copyText()/shareUrl(); snackbar feedback - Skip loading spinner when listing served from cache Co-Authored-By: Claude <noreply@anthropic.com>
- hmacSHA256/arrayBufferToHex accept BufferSource; string secrets encoded - Query uses raw url.search (workers-types lacks iterable URLSearchParams) - Header scan via forEach instead of Headers.keys() Co-Authored-By: Claude <noreply@anthropic.com>
Uninstall runtime and dev deps with zero consumers: - web-vitals (reportWebVitals long gone from index) - @testing-library/* (no test suite exists) - @types/node (no Node APIs in src) Delete src/ProgressDialog.tsx (imported nowhere). Kept: @mui/*, @emotion/*, p-limit — all actively used. Co-Authored-By: Claude <noreply@anthropic.com>
…fault view Uploaded files never appeared until manual refresh because neither the upload drawer nor drag-drop fired the listing refresh after the queue drained. Add an onDrained callback to processUploadQueue and fire it from both entry points to invalidate + refetch immediately on completion. Grid: thumbnail media box now 1:1 (aspect-ratio) instead of fixed 96px height. Default view switched from grid to list. Co-Authored-By: Claude <noreply@anthropic.com>
Revert grid to the original compact layout: small thumbnail left, name+size right, one row per item. Drop copy/download IconButtons from grid mode — they live on the right-click context menu (multi-select). onCopyLink/onDownload kept optional in FileGrid signature for Main compat. Co-Authored-By: Claude <noreply@anthropic.com>
react-scripts 5.0.1 pulls a chain of deprecated transitive deps (rollup-plugin-terser, workbox-*, abab, q, glob@7) that surfaced as npm warnings on every Cloudflare Pages deploy. CRA 5 also does not support React 19. Replace the bundler with Vite 7 and bump React to 19.2. - package.json: drop react-scripts + overrides; react/react-dom ^19.2; add vite, @vitejs/plugin-react, @types/node; build = tsc --noEmit && vite build - index.html: move public/ → root, strip %PUBLIC_URL%, fix apple-touch-icon (logo192 → logo144), module entry /src/index.jsx - src/index.js → src/index.jsx (JSX entry) - tsconfig: jsx react-jsx, module ESNext, moduleResolution bundler, noEmit, isolatedModules - vite.config.ts: react plugin, @/proxy note - .gitignore: /build → /dist - utils/s3.ts: dead (imported nowhere), removed - commit package-lock.json (Pages builds with npm; bun.lock stays for local dev) Output dir is now dist/ (was build) — set in Cloudflare Pages dashboard, along with Node >= 20.19 for Vite 7. Co-Authored-By: Claude <noreply@anthropic.com>
manualChunks splits MUI + emotion out of the app bundle. App chunk 224 kB, mui 281 kB, emotion 36 kB (gzipped ~70/85/14 kB). No chunk exceeds the size warning, so page load no longer blocks on one big main bundle. Note: react is bundled into the mui chunk (peer dep, deduped by rollup). Co-Authored-By: Claude <noreply@anthropic.com>
MUI 9 is the current major (latest 9.3.1); v5 is two years old. Peer
deps stay compatible with React 19 + emotion v11, so only source changes
are prop migrations:
- Grid container/item + xs= — deleted API since v6; replaced with the
new Grid2-style API (container / size={{ xs, sm, md, lg, xl }}) in
FileGrid + UploadDrawer (Grid is exported from @mui/material in v9,
Grid2 subpath no longer exists)
- primaryTypographyProps → slotProps.primary
- Typography fontWeight prop → sx.fontWeight
- TextField InputProps → slotProps.input
- Drawer PaperProps → slotProps.paper
Keep manualChunks split (mui/emotion/index all < 340 kB).
Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New Features
UI/UX Improvements
Technical Enhancements
Bug Fixes
Closes multiple UI/UX improvement requests and enhances overall user experience.