a42fdfad0041ef31344f370ff0a5d4ad1c9e28b6
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
a42fdfad00 |
UI redesign: multi-tool mode, workbench bar animation, PDFium rendering fixes
- Add multi-tool mode support across FileSidebar, FilesModalContext, PageEditorContext, WorkbenchBar, and ToolWorkflowContext — adding files stays in pageEditor view and auto-selects files; left panel hides/shows on workbench switch - Animate WorkbenchBar in/out via CSS grid-template-rows trick when files are added/removed; suppress initial transition with rAF flag - Fix PDFium pixel format (RGBA not BGRA) and rotation logic (effective dims already post-rotation; counter-rotate when applyRotation=false) - Fix PageEditor flash of "No PDF files loaded" by checking file context directly - Redesign AddFileCard: solid border, rounded corners, shadow hover, focus-visible ring - Show AddFileCard in FileEditor empty state instead of text stack - Add date grouping helpers (today/yesterday/thisWeek/thisMonth/older) to FileSidebar - Redesign FilePdfIcon: solid filled with folded corner, red colour - Simplify NonPdfBanner: remove file-type badge, keep only convert-to-PDF button - Fix thumbnail precedence in useToolOperation (prefer metadata.thumbnailUrl) - Fix fileActions stub dispatch to trigger selector re-render after ADD_FILES - Switch Annotate to useAllFiles and Automate/AutomationRun to useViewScopedFiles |
||
|
|
2843418fb7 | frontend validatoin | ||
|
|
7dc164453b |
UIUX/UI redesign (#6107)
# PR: feature/UIRedesign → UIRedesignStaging ## Overview Major layout restructure: the old right-rail icon column and top file-tab strip are replaced by a new horizontal `WorkbenchBar` and a new persistent `FileSidebar` on the left. Alongside those headline changes, a range of bugs are fixed around viewer state, file management, and thumbnail caching. --- ## Changes ### 1. Page layout restructured **Before:** `QuickAccessBar` above content, `ToolPanel` on the left, `RightRail` vertical icon column on the right. **After:** `FileSidebar` on the left, `WorkbenchBar` across the top, `ToolPanel` on the right. The right rail is gone. --- ### 2. `FileSidebar` — new persistent left sidebar **Why:** The only way to see saved files was opening the file manager modal. The sidebar gives quick access to everything in IndexedDB without a modal. **Before:** No persistent sidebar. Files managed exclusively via the modal. **After:** - Collapsible strip on the left (collapses to a narrow icon strip, expands to a file list). - Shows all saved files, sorted by last modified. Files not yet persisted to IndexedDB also appear. - Click a file to toggle it on/off the workbench. If the file is open in the viewer with unsaved changes, the save prompt fires first. - Search bar filters by filename. - Add files from computer or Google Drive directly from the sidebar. - Thumbnail appears on hover, loaded lazily and cached for future visits. - The currently-viewed file is pinned at the top of the list with a green highlight. - List updates automatically when files are added or deleted anywhere in the app. --- ### 3. `WorkbenchBar` replaces `TopControls` + `RightRail` **Why:** `TopControls` only showed when files existed and only displayed file tabs. The right rail was a separate vertical column. Neither gave a coherent home for view switching, tool actions, and file operations. **Before:** File tabs in a strip at the top; download/close/view buttons in a separate vertical column on the right. **After:** - Always visible bar across the top. - Left: Viewer / Active Files view switcher (hidden when no files are open). - Centre: Tool-specific action buttons (the same buttons that previously lived in the right rail), plus zoom controls when in viewer mode. - Right: Print (viewer only), Close (closes the current file in viewer mode, closes all files in file editor mode), Download, Save As. - Adapts to narrow widths by wrapping into two rows. --- ### 4. Viewer — active file never loses track after tool operations **Why:** After running a tool on a file, the viewer would sometimes jump to showing a different file. **Before:** The "active file index" and "active file ID" were tracked as two separate pieces of state that could desync when files were reordered after a tool ran. **After:** The index is always derived from the ID, so they can never disagree. The viewer stays on the correct file after any operation. ### 5. Auto-navigate after file upload **Before:** After uploading files via the modal, the user was left on whatever view was active — no automatic navigation. **After:** Single file uploaded → navigates to viewer. Multiple files uploaded → navigates to Active Files. --- ### 6. Run button shows loading progress while files are still loading **Why:** Opening a tool immediately after uploading many files could silently skip files that hadn't finished loading yet. **Before:** Run button was enabled immediately; files still being loaded from storage were silently skipped. **After:** While files are loading, the run button is replaced with a disabled progress indicator. For multiple pending files it shows "2 / 5 files loading…". Once all files are ready, the button becomes active. --- ### 7. Bulk delete in file manager **Why:** Deleting many files at once was slow and caused visible flicker as each file was removed one by one. **Before:** Each selected file went through the full single-delete flow sequentially. **After:** Local files are deleted in a single batch operation — one UI update, one IndexedDB transaction. Server-connected files still go through the sequential flow since each may need a confirmation prompt. --- ### 8. Deselecting a dirty file in the modal no longer removes it from the workbench **Before:** Deselecting a file in the file manager and clicking "Open" would remove it from the workbench even if it had unsaved changes. **After:** Files with unsaved changes are skipped when removing deselected files. --- ### 9. File manager — "Close all files" button **Before:** With nothing selected in the file manager, the "Open File" button was disabled. **After:** When nothing is selected but files are open, the button changes to "Close all files" and becomes enabled. --- ### 10. File picker — search and hover thumbnails **Before:** No way to filter the file list in the picker dropdown. No visual preview. **After:** Search input filters files by name. Hovering a row shows a thumbnail preview. --- ### 11. Pan and ruler modes are now mutually exclusive **Before:** Enabling the pan tool while the ruler was active left the ruler in a broken state, and vice versa. **After:** Activating either tool automatically deactivates the other. --- ### 12. Tool icons switched to outline style All tool icons in the picker are now the outline variant instead of the filled/solid variant, for a lighter, more consistent look. --- ### 13. Settings — language and theme options added to General settings Language and theme (light/dark) controls are now available in Settings → General. --- ## Test Script --- ### Sidebar and file management 1. **Sidebar toggle:** Confirm the left sidebar strip is visible on load. Click expand — confirm the file list appears. Click collapse — confirm it shrinks back to the strip. 2. **Upload and see files:** Upload 3 PDFs. Confirm all three appear in the sidebar list without needing to open any modal. 3. **Sidebar search:** Type part of a filename in the sidebar search box. Confirm the list filters. Clear it — confirm all files return. 4. **Toggle files on workbench from sidebar:** Click a file in the sidebar that isn't on the workbench — confirm it opens. Click it again — confirm it closes. 5. **Save prompt via sidebar:** Open a file in the viewer and make a change (e.g. annotate). Click that file in the sidebar to close it — confirm the unsaved-changes save prompt appears. 6. **Thumbnail on hover:** Hover a file row in the sidebar — confirm a thumbnail preview appears. 7. **Currently viewed file pinned:** With multiple files open, confirm the one you're viewing is highlighted at the top of the sidebar list. 8. **Sidebar reflects deletions:** Delete a file via the file manager modal. Confirm the sidebar updates automatically without a page reload. --- ### Workbench bar 9. **No files state:** With no files open, confirm the workbench bar is visible but no view tabs are shown. 10. **View tabs appear:** Upload a file — confirm "Viewer" and "Active Files" tabs appear. Switch between them. 11. **Close button behaviour:** In Active Files with multiple files, click Close — confirm all files close. Open a single file in viewer mode, click Close — confirm only that file closes. 12. **Download:** Open a file in the viewer, click Download — confirm the file saves. 13. **Zoom controls in viewer:** Confirm zoom in/out and a slider appear in the bar's centre when in viewer mode. Drag the slider — confirm the PDF zooms live. Switch to Active Files — confirm the controls disappear. --- ### Tool panel 14. **Collapse/expand:** Collapse the tool panel. Confirm a narrow strip remains (not blank space). Click the expand icon — panel opens. Collapse again, click the search icon — confirm the panel opens with the search field already focused. 15. **Back button in tool:** Open a tool (e.g. Compress). Confirm the search bar icon changes to a back arrow. Click it — confirm you return to the tool list. 16. **Viewer tool mini bar:** Open a PDF in the viewer. Confirm a mini toolbar appears at the top of the panel with viewer-specific buttons (annotate, redact, form fill, etc.). Switch to Active Files — confirm it disappears. --- ### Running tools with files loading 17. **Loading indicator on run button:** Upload 5+ PDFs and immediately open a tool (e.g. Compress or Merge). If files are still loading, confirm the run button shows a loading progress indicator and is disabled. Wait until loading finishes — confirm the button becomes active. --- ### Viewer correctness 18. **Active file stays put after tool run:** Open 3 PDFs. Navigate to file #2 in the viewer. Run a tool (e.g. rotate) on file #2. Confirm the viewer stays on file #2 after the operation completes. 19. **Pan / ruler mutual exclusion:** Open a PDF. Enable pan. Enable the ruler — confirm pan turns off. Re-enable pan — confirm the ruler turns off. --- ### File manager 20. **Bulk delete:** Open the file manager, select 3+ local files, click Delete Selected. Confirm all disappear in one go with no flicker, and the sidebar updates. 21. **Dirty file not removed on deselect:** Open a PDF, make a change. Open the file manager, deselect that file, click Open. Confirm the file is still on the workbench. 22. **Close all from modal:** Have files open. Open the file manager, deselect everything — confirm the button changes to "Close all files". Click it — confirm all files close. --- ### File picker (inside tools) 23. **Search in picker:** Open a tool with a file picker (e.g. Merge, Compare). Open the picker dropdown. Type a partial name — confirm the list filters. Hover a row — confirm a thumbnail appears. --- ### Other flows 24. **Auto-navigate after upload:** Upload a single PDF via the modal — confirm you land in the viewer. Upload multiple at once — confirm you land in Active Files. 25. **Landscape PDF aspect ratio:** Upload a landscape PDF. In Active Files view, confirm its thumbnail card is wider than tall. 26. **Compare tool clear label:** Open the Compare tool. Click to clear the selection. Confirm the confirm button reads "Clear Selected". 27. **Settings — language and theme:** Open Settings → General. Confirm Language and Theme controls exist. Toggle theme — confirm it switches. 28. **Tool icons:** Open the tool picker and confirm all tool icons use the outline/unfilled style. <img width="2056" height="1077" alt="Screenshot 2026-04-14 at 5 08 36 PM" src="https://github.com/user-attachments/assets/b68243cb-70f6-4aac-b4e8-76ca6c617be2" /> <img width="2056" height="1080" alt="Screenshot 2026-04-14 at 5 08 51 PM" src="https://github.com/user-attachments/assets/b3c1525b-6f30-4abc-b85a-ce2368e376c7" /> <img width="2056" height="1081" alt="Screenshot 2026-04-14 at 5 09 10 PM" src="https://github.com/user-attachments/assets/894bb5a4-dd4b-49ae-a7da-2ee343c6c656" /> <img width="2056" height="1080" alt="Screenshot 2026-04-14 at 5 09 31 PM" src="https://github.com/user-attachments/assets/9d4dd1e4-026d-4736-891d-0ae6647318d4" /> |