Commit Graph
103 Commits
Author SHA1 Message Date
Dariusz L 5dec88fd15 Improve tab styling and accessibility in linker UI
- Redesign tabs with new visual styling (active/hover states, separators)
- Add ARIA attributes for tab accessibility (aria-selected, aria-disabled, aria-current)
- Update header styling in linker-shell.css
- Refactor tab switching logic to use centralized state management
2026-05-28 06:05:21 +02:00
Dariusz L 1048b0ace4 Replace window button text with SVG icons and refine styles
- Replace unicode text ('⛶', '×') with SVG icons for fullscreen/close buttons
- Add new SVG icons (windowMaximize, windowRestore, x) to icon_utils.js
- Update CSS selectors to scope window button styles under #model-linker-modal
- Remove border/box-shadow from buttons, add hover states
- Increase button size to 46x40px with full height
- Add aria-label attributes for accessibility
- Adjust dialog controls layout with stretch alignment
2026-05-28 04:47:50 +02:00
Dariusz L acac519724 Restructure dialog layout and refine tab styling
- Move tab elements before dialog controls in DOM order
- Update tab styling: smaller min-height, rounded corners, subtle backgrounds
- Add ml-dialog-brand and ml-dialog-controls flex classes
- Adjust active tab border and background opacity
2026-05-28 04:37:04 +02:00
Dariusz L dc7c0a1b71 Replace inline style display toggles with CSS class-based visibility
- Add new utility classes: ml-is-hidden, ml-is-visible, ml-is-inline-flex
- Add ml-is-muted and ml-is-error for text color states
- Add ml-is-success-action for success button styling
- Add ml-icon-img for icon vertical alignment
- Replace style.display = 'block/none' with classList toggles in linker.js
- Update getIconHtml to use ml-icon-img class instead of inline styles
2026-05-28 04:32:18 +02:00
Dariusz L a18eeb9e74 Update lora archive icon to loraManager and remove redundant status section
- Changed icon mapping for lora-archive, lora_manager_archive, and lora-manager-archive from 'archive' to 'loraManager'
- Added new loraManager SVG icon in icon_utils.js
- Removed redundant 'Not needed' status display before search controls in download section
2026-05-27 17:40:43 +02:00
Dariusz L 732b45a211 Improve missing model display and node location in linker UI
- Add getMissingNodeDisplay() helper to centralize node label formatting
- Make missing list rows keyboard-accessible (Enter/Space selection)
- Add clickable locate buttons for missing nodes to center in graph
- Style focus states for accessibility (outline, box-shadow)
- Add refreshCw icon to icon_utils.js for combo refresh buttons
- Refactor row HTML structure for better semantics
2026-05-27 17:04:32 +02:00
Dariusz L 34d4139ec6 Implement viewport clamping for modal dialog and add resize handling 2026-05-27 16:46:56 +02:00
Dariusz L e3cc23cc48 Add missing sources summary refresh to LinkerManagerDialog 2026-05-27 16:23:43 +02:00
Dariusz L 246fc376f3 Migrate tooltips from title attributes to data-tooltip with custom JS implementation 2026-05-27 16:03:44 +02:00
Dariusz L a63c75ac63 Improve missing source status styling and logic for exact/partial/found matches 2026-05-27 02:27:45 +02:00
Dariusz L c3fbe897d0 UI/UX improvements: refine model linker dialog styling with updated fonts, spacing, colors, and interactive elements 2026-05-27 00:42:14 +02:00
Dariusz L 2336fb6ef0 UI: Add local alternatives toggle and improve link button styling
- Add CSS for .ml-local-alternatives-toggle component with hover/focus states
- Update missing browser button styles to use compact link button
- Adjust disabled footer button opacity for better visibility
- Replace alternatives div with toggle button in linker.js
- Enhance MLToggleHidden to support aria-expanded and dynamic label/state updates
2026-05-27 00:24:37 +02:00
Dariusz L 74bc1e03f7 UI improvements: refine missing browser styling, dialog appearance, and minor text fix 2026-05-27 00:10:39 +02:00
Dariusz L 4c410de6b3 Dynamic column width calculation for missing models list in Linker Manager dialog 2026-05-26 23:57:21 +02:00
Dariusz L 18b72316be feat: add missing models browser UI and logic
- Implement CSS styles for missing models browser interface (.ml-missing-browser and related classes)
- Add JavaScript methods for handling missing models:
  * getMissingModelKey, getMissingFilename, getBestLocalMatch
  * getMissingModelSummaryStats, getMissingSourceStatus
  * renderMissingSourcesSummary, hasRenderableSearchState
- Replace missing models rendering logic with new implementation
- Support for exact/partial match statistics and source status indicators
2026-05-26 23:53:32 +02:00
Dariusz L f3a4730a4e Adjust dialog sizing to full viewport and add box-sizing 2026-05-26 22:51:57 +02:00
Dariusz L 2604be5126 Add compact search progress display and improve search status rendering 2026-05-26 18:27:47 +02:00
Dariusz L 20d4d3187b ui: improve search result action buttons styling and behavior
- Remove transform transitions and animations from action buttons
- Restyle buttons with consistent sizing, colors, and hover states
- Convert anchor tags to buttons with proper type attributes
- Add click handlers for opening links in new tabs with security attributes
- Clear subfolder list when repopulating options
2026-05-26 18:15:11 +02:00
Dariusz L d974dce5d1 ui: replace select elements with custom dropdowns for better styling
- Replace HTML <select> elements with custom div-based dropdown components
- Add CSS variable --ml-download-control-height for consistent control sizing
- Update search source and category selectors to use custom styled dropdowns
- Improve responsive layout with grid template columns and media queries
- Add keyboard and mouse event handling for custom dropdowns
- Ensure consistent styling across all form controls
2026-05-26 17:55:33 +02:00
Dariusz L 5637c6faa1 feat(linker): add online re-check and search controls for exact local matches 2026-05-26 17:30:24 +02:00
Dariusz L 997186720c feat: enhance search results table with dynamic column widths and source icons 2026-05-26 17:18:40 +02:00
Dariusz L 497818d1ee Render and normalize model version names in Linker UI
Add helper methods to normalize and split model and version names, render versioned model names in search results, cards, loading states and CivitAI links, include version metadata on rows, and add CSS styling for model version text. Improves display clarity when models include version names and avoids duplicated filenames.
2026-05-26 17:02:36 +02:00
Dariusz L ec4d6fe8f9 Refactor download/search UI and URN handling
- Replace renderDownloadSourceSection with renderKnownDownloadPanel and wireDownloadSearchPanel to centralize download/search UI wiring
- Improve URN filename resolution and search flags
- Remove obsolete .ml-download-actions CSS rules
- Minor __init__.py fix: check filename before enabling lora_manager_archive search
2026-05-26 16:52:38 +02:00
Dariusz L 5bcfd12ff5 Include known download source in search results, dedupe rows, and add download wiring
Add getDownloadSourceTableRow to render known/download-source rows
Include known download source in search results and prevent duplicates
Add wireSearchDownloadButtons to attach download handlers
Allow custom search button text and render download target controls
Minor UI/formatting fixes and URN refresh alignment
2026-05-26 16:27:06 +02:00
Dariusz L ffd7d548f2 web(linker): add estimated search progress timers and UI
Add estimated progress timers and helpers to show smoother search progress across sources. Track per-run timers, compute eased percentages, update progress state on completion/error, and adjust CSS for running state and transitions.
2026-05-26 16:19:44 +02:00
Dariusz L bab7cd266f Refactor search results to table layout with helper methods and new styles; add download and externalLink SVG icons. 2026-05-26 16:13:55 +02:00
Dariusz L bebf5b6e59 web: refine Model Linker UI — improve context menu, tooltips, info dialog, and styles
Improve UX for model relinking: add context menu actions (Show Info, Open on CivitAI, Open containing folder), sanitize CivitAI descriptions, persist info dialog size, and adjust CSS spacing and visibility.
2026-05-26 15:52:05 +02:00
Dariusz L 7d8c8895f1 docs(linker): clarify 32 UI tooltips, labels, and button titles for better usability
Improve text on buttons, info-panel rows, settings tooltips, and menu
labels to more accurately describe what each element does rather than
stating the obvious. No functional changes.
2026-05-20 03:21:04 +02:00
Dariusz L 72d084ab64 refactor: rename utils to lowercase_kebab-case and fix import paths; add Missing Models popup integration to linker
- Rename web/utils/{css-loader→css_loader,ErrorHandler→error_handler,IconUtils→icon_utils,ResourceManager→resource_manager} and web/log_system/{LoggerUtils→log_funcs} to lowercase_kebab-case naming convention
- Update all cross-import paths in the recreated utils and linker.js accordingly
- Add removeResolvedFromPopup / markEntryAsResolved to visually mark resolved entries in the ComfyUI Missing Models popup
- Add updateNodesDirectly to update graph node widgets in-place without triggering a full workflow reload
- Add checkAndOpenForMissingModels with isAutoOpenEnabled/setAutoOpenEnabled to auto-open the linker dialog when a workflow with missing models is loaded
- Add helper methods getMissingSearchKey, getSearchState, mergeSearchResults for per-entry search state caching and merging
2026-05-19 07:55:28 +02:00
Dariusz L 9721fdbd0a refactor(web): extract renderSearchControls method and expose search UI alongside download source
Move the inline search-control HTML block into a dedicated renderSearchControls()
method on LinkerManagerDialog so the search bar can be reused from multiple code paths.

Previously, the search controls were only rendered when no download source was known.
Now they are also shown when a download URL exists, giving users the ability to run a
search alongside the resolved download source.

Also normalises line endings on one affected line.
2026-05-17 05:31:06 +02:00
Dariusz L ffb97fb957 docs: clarify HuggingFace token requirements in settings tooltip
Update the HuggingFace Token tooltip to provide precise guidance on
creating a fine-grained token with only Read access to public gated
repos, explicitly noting that Write, Inference, Webhooks, Billing,
Jobs, and org permissions are not needed.
2026-05-17 05:08:29 +02:00
Dariusz L 94abcdc05f feat: add latent_upscale_models category support and improve workflow model resolution
- core/downloader.py: add latent_upscale_model(s) download directory mappings
- core/workflow_analyzer.py:
  - add node type hints for VAELoaderKJ, LatentUpscaleModelLoader, DualCLIPLoader
  - introduce MODEL_WIDGET_NAME_TO_CATEGORY and get_widget_category_hint() to
    infer model categories from widget/input metadata (best-effort fallback)
  - extend NESTED_MODEL_KEYS with clip_name / clip_name1 / clip_name2
  - apply widget category hint inside get_node_model_info() for both plain
    filenames and URN-style references, matching resolution and error paths
- web/linker.js:
  - add getCategoryDisplayName() and getCategoryTokenName() helpers (including
    latent_upscale_model entries) replacing duplicated inline maps
  - use helpers for download target category chips, model-group tokens, and
    summary/compact clipboard strings
2026-05-17 04:21:59 +02:00
Dariusz L e5fa58f262 UI modernization: centralize SVG icons and adopt CSS variables
- Create web/utils/IconUtils.js with centralized SVG icon definitions
- Replace inline SVGs in linker.js with getSvgIcon() calls
- Refactor CSS to use CSS custom properties throughout
- Add renderProgressWithAction() helper for consistent progress UI
- Add renderOnlineSearchResultCard() helper for search results
- Add MLToggleHidden() utility for show/hide toggle
- Replace hardcoded spacing, fonts, colors with CSS variables
- Standardize markup with reusable CSS classes
2026-05-11 05:09:24 +02:00
Dariusz L ac4ba4df42 refactor(css): extract inline styles to dedicated CSS files
Remove ~8000 lines of inline JavaScript styles from linker.js and organize
them into two focused stylesheets:
- linker-shell.css: modal shell, backdrop, window controls, layout structure
- linker-main.css: main content area (cards, buttons, forms, dialogs, tabs)

Simplify and clean up css-variables.css variable definitions.
Update css-loader.js to load both new stylesheet files.

Significantly improves code maintainability and separation of concerns.
2026-05-11 04:52:58 +02:00
Dariusz L 60b300f43e Add node title tracking and display for workflow models
- Add 'node_title' field to model info dictionaries in get_node_model_info
- Display custom node titles in missing models dialog when available
- Show 'NodeLabel #id · CustomTitle' format for better model identification
2026-05-10 17:28:33 +02:00
Dariusz L b118c03be1 refactor(linker): improve _locateNode zoom/pan calculation
- Split scale into startScale and targetScale for clarity
- Introduce padding constants (140px horizontal, 96px vertical)
- Calculate fitScale based on viewport and node dimensions with padding
- Constrain target scale between 0.15 and 1 minimum/max bounds
- Extract getCenteredOffset helper for offset calculations
- Simplify animation interpolation using consistent offset objects
2026-05-10 06:42:19 +02:00
Dariusz L 25760bb7d8 feat(ui): add animated canvas panning when locating nodes
Replace instant canvas jumps with smooth animated transitions using
ease-in-out-cubic easing. The animateCanvasToNode method calculates the
target offset based on node position and canvas dimensions, then smoothly
interpolates the canvas offset over 380ms. Includes proper cleanup of
pending animation frames and fallback handling for older ComfyUI versions.
2026-05-10 06:35:52 +02:00
Dariusz L 9783a1641d refactor(ui): remove backdrop click-to-close, replace locate icon with SVG
- Remove backdrop click event listener that closed the dialog
- Change backdrop background from rgba(0,0,0,0.5) to transparent
- Hide backdrop entirely in show() method (display: none)
- Replace text-based locate icon (⌖) with SVG icon via getLocateIconHtml()
- Add CSS styling for .ml-node-chip-icon and its SVG element
2026-05-10 06:31:00 +02:00
Dariusz L ba6ee57245 fix: improve download target UI layout and styling
- Restructure DOM order: label + select (folder) first, then label + input (subfolder)
- Add grid-template-rows for proper vertical alignment
- Remove min-height constraint on labels for better responsiveness
- Set explicit height (40px) and margin on select/input fields
- Add appearance:none reset to select for consistent cross-browser styling
- Wrap subfolder input in flex container for alignment
- Add mobile-breakpoint rule to reset label min-height
2026-05-10 06:22:30 +02:00
Dariusz L cd7808ee58 style: update UI color scheme to green accent and improve dropdown styling
- Replace blue accent color (rgba(78,161,255)) with green (rgba(114,211,138))
- Update select/input backgrounds to use CSS variables (--ml-border, --ml-panel-bg-strong)
- Add gradient backgrounds and border-radius improvements to dropdown lists
- Increase option padding and add smooth transitions
- Fix select option styling to respect theme variables
- Add enableWheelScrollChaining() to prevent scroll propagation in dropdowns
- Apply wheel scroll chaining to download target and combo autocomplete lists
2026-05-10 06:04:28 +02:00
Dariusz L a54dcf2cc2 web: refine LinkerManagerDialog layout with min-width fixes and responsive breakpoints
- Add min-width: 0 to flex/grid containers to prevent overflow
- Remove bottom padding from options wrapper
- Reduce label widths from 220px to 150px for tighter layout
- Add input min-width: 0 and set input column to minmax(0, 380px)
- Align toggle control to right edge using margin-left: auto
- Adjust number row grid-template-columns to minmax(72px, 118px)
- Introduce responsive breakpoints at 900px and 760px
- Optimize small-screen layouts with reduced gaps and single-column stacking
2026-05-10 05:54:01 +02:00
Dariusz L b30cfdf7b9 feat(UI): add tab persistence and global tooltip system
- Persist active tab selection across dialog sessions via localStorage
- Replace CSS pseudo-element tooltips with centralized global tooltip element
- Add showTooltip/hideTooltip/bindTooltips methods with smart positioning
- Tooltip adapts to viewport edges with max-width constrained to available space
- Cleanup tooltip on dialog close to prevent memory leaks
2026-05-10 05:46:20 +02:00
Dariusz L 132bb10ecb fix(options UI): align dialog elements to top in LinkerManagerDialog
Add align-content: start and align-items: start CSS properties to
.options-content, .options-header, .options-section, .options-stack,
.options-panel, and .options-body to ensure all child elements are
top-aligned instead of being centered or stretched by default grid
layout behavior.
2026-05-10 05:37:06 +02:00
Dariusz L c9a4f8e444 refactor(options): reorganize options UI layout with fixed actions and section visibility
- Move save button and status to fixed bottom actions section in sidebar
- Enable independent scrolling for main content area with custom scrollbar styling
- Implement section visibility toggling (is-hidden) instead of scroll-based navigation
- Restructure grid layout to use flexbox in sidebar for better control
- Add proper height constraints (100%, min-height: 0) to enable scrolling within flex/grid children
- Update mobile breakpoint to adjust sidebar height and border styling
2026-05-10 05:32:30 +02:00
Dariusz L e89cf2d6e6 refactor: reorganize options dialog with sidebar navigation and toggle switches
Replace single-column card layout with two-pane shell (sidebar + main) for
better visual separation between provider sections. Introduce tabbed navigation
between CivitAI and HuggingFace settings.

Replace checkbox rows with modern toggle switches for all boolean search-method
options. Each toggle includes an inline tooltip for immediate context.

Add unsaved-changes status indicator (dirty/saved states) to improve UX.
Remove the separate 'How to get CivitAI session token' expandable help panel;
tooltip now contains concise instructions inline.

Update form layout to use grid-based input rows with consistent spacing and
improved mobile responsiveness via media queries. Adjust colors, borders,
and spacing throughout for a cleaner, more compact appearance.
2026-05-10 05:24:00 +02:00
Dariusz L 9f44f6e59f feat: add configurable CivitAI search method toggles with UI tooltips
- Add civitai_use_trpc_search and civitai_use_html_fallback config options
- Update search_civitai_for_file to conditionally use tRPC and HTML methods
- Include method flags in cache key to respect search method preferences
- Add checkboxes in options UI to control each CivitAI search method
- Add tooltip badges to all API key labels explaining their purpose
- Persist new settings to localStorage and pass through search pipeline
2026-05-10 04:45:47 +02:00
Dariusz L b8515e1441 feat: add configurable HuggingFace search methods with Brave and Comfy-Org fallbacks
- Add new UI toggles for HF search methods: API search, Comfy-Org fallback, Brave fallback
- Integrate Brave Search API as a fallback for finding models on HuggingFace
- Add Comfy-Org author fallback search for authoritative sources
- Refactor HuggingFace search logic into modular helper functions
- Improve filename cleaning to handle fp4 and mixed precision formats
- Add brave_search_api_key, hf_use_api_search, hf_use_comfy_org_fallback, hf_use_brave_fallback settings
2026-05-10 04:27:33 +02:00
Dariusz L 2b94501e20 Improve download target UI layout in LinkerManagerDialog
- Add grid-based layout for download target folder and type selectors
- Apply responsive design with media query for screens ≤720px
- Align labels consistently using flexbox for better visual alignment
2026-05-10 02:33:17 +02:00
Dariusz L f8b5c70f40 feat: show huggingface link 2026-04-26 04:00:45 +02:00
Dariusz L 88b490bfb3 Refine options layout and action buttons
Group the `Options` tab into separate CivitAI and HuggingFace sections for a cleaner vertical layout. Also rename the save action to `Save` and apply the shared footer button styling for visual consistency.
2026-04-26 03:51:07 +02:00