-
-
Notifications
You must be signed in to change notification settings - Fork 117
plan #565
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jsnanigans
wants to merge
32
commits into
CyberTimon:main
Choose a base branch
from
jsnanigans:ui-rewrite
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
plan #565
Conversation
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
- Add ImageWaveform module with canvas-based RGB/Luma/channel rendering - Update WaveformData type for separate channel arrays - Add mock waveform generation to PreviewBloc - Create MetadataBloc for EXIF parsing and GPS extraction - Create MetadataPanel with GPS map and collapsible sections - Create ExportBloc for export settings and progress state - Create ExportPanel with format, resize, metadata, color space options - Update PanelSwitcher to route Metadata and Export tabs - Register new modules in registry Progress: 71% complete (62/87 tasks)
- CropBloc: aspect ratio presets, rotation, flip, straighten - CropPanel: aspect ratio grid, rotation slider, transform tools - MasksBloc: mask containers, sub-masks (brush/gradient/radial/luminosity/color/AI) - MasksPanel: mask creation, editing view, per-mask adjustments - PresetsBloc: folder/preset tree, import/export, preview URLs - PresetsPanel: folder tree, preset thumbnails, inline forms - AIBloc: AI patches, ComfyUI status, generative fill state - AIPanel: connection status, tool grid, brush settings, prompt input - Updated registry and PanelSwitcher to enable all panel tabs Phase 4 now 75% complete (12/16 tasks), overall ~80% complete
Add ModalBloc for modal visibility registry with typed data and confirm() API. Add Modal primitive with ConfirmModal and InputModal variants. Add RatingControl, ColorLabelPicker, and TagEditor metadata widgets. Update progress to 85% complete (74/87 tasks).
- KeyboardService: centralized shortcuts with modifiers and categories - ContextMenuService + ContextMenu: nested submenus, portal rendering - ClipboardService: copy/paste adjustments by category - FullscreenViewer: fullscreen image viewing with auto-hide UI - ErrorMessage: error/warning/info variants with retry/dismiss - CommunityBloc + CommunityView: preset browsing with search/filter - KeyboardShortcutsModal, AboutModal, ExportProgressModal Progress: ~95% complete (83/87 tasks)
- Add @tanstack/react-virtual for list virtualization - Virtualize GalleryGrid with dynamic column count and row-based rendering - Virtualize Filmstrip with horizontal scrolling - Virtualize CommunityView grid and list modes - Configure useFlushSync: false for React 19 compatibility - Add LRU cache utility with eviction callbacks for blob URL cleanup - Update ThumbnailBloc to use LRU cache (500 item limit) - Update PreviewBloc with blob URL revocation on clear/change - Add unit tests for SelectionBloc, HistoryBloc, AdjustmentsBloc, LRUCache Phase 5 progress: 11/13 complete (~98%)
- Implement BottomBar component with star rating, copy/paste adjustments, and view-specific controls - Add LibraryExportPanel with format selection, resize options, and metadata controls - Create Switch primitive component for boolean settings - Update layout configs with proper pixel-based sizing from legacy values - Refine WelcomeScreen with splash images and settings panel - Update primitives (Button, Dropdown, Input, Modal, Slider, CollapsibleSection) for consistency
…hortcuts - Add ModalRenderer to centrally render all modals from ModalBloc state - Integrate TitleBar with macOS traffic light support - Wire up ContextMenuProvider for global right-click menus - Initialize KeyboardService with useGlobalShortcuts hook (Cmd+1/2/3, Cmd+/) - Create barrel exports for blocs, hooks, utils, and services - Fix Button (add secondary variant), Input (add icon props), Dropdown (generic types) - Complete feature parity with 48/48 components implemented
- Replace custom Button with React Aria Button for accessibility - Use tailwind-variants for variant management - Add pressed state via data-[pressed]: selectors - Add focus ring via focusRing utility - Maintain backward compatibility: onClick, disabled, title props still work - Add react-aria-components and tailwind-variants dependencies
- Modal: use React Aria Dialog/ModalOverlay with animations - Switch: use React Aria Switch with tailwind-variants - Input: use React Aria Input with focusRing utility - CollapsibleSection: use React Aria Disclosure with MutationObserver for height animation All components preserve existing APIs for backward compatibility.
- Create Tooltip primitive using React Aria (200ms delay, animations) - Update Switch to use Tooltip instead of native title attribute - Refactor ContextMenu UI with React Aria Menu components - Full keyboard navigation (arrows, Home/End, typeahead) - Auto-focus first item, proper ARIA roles - Keep ContextMenuService BLoC for state management - Document decision to keep Slider as custom implementation - Phase 3 complete, Phase 4 in progress
- Add tailwind-merge dependency (required by tailwind-variants for build) - ColorWheel evaluation: keep custom (already SVG implementation) - Build validated: 584.97 kB (179.27 kB gzip) - Bundle increase ~70 kB gzip for accessibility benefits - All phases complete (98%), ready for manual testing
- Remove @uiw/react-color-wheel and @uiw/color-convert (only used in legacy) - Add aria-label and aria-valuetext to Slider for screen reader support - Screen readers now announce 'Exposure: 1.5' instead of just '1.5'
Document all dependencies with usage analysis: - 17 active dependencies to keep - 14 unused/legacy dependencies that can be removed - Includes removal instructions and alternatives considered
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.
No description provided.