diff --git a/core/downloader.py b/core/downloader.py index 9e85751..053f3d9 100644 --- a/core/downloader.py +++ b/core/downloader.py @@ -233,15 +233,6 @@ def build_download_headers( return request_headers -def _is_civitai_api_download_url(url: str) -> bool: - parsed = urlparse(str(url or "")) - host = parsed.hostname - return ( - host_matches_domain(host, "civitai.com", "civitai.red") - and parsed.path.startswith("/api/download/") - ) - - def _resolve_download_url_for_aria2( url: str, headers: Optional[Dict[str, str]] = None, diff --git a/web/resolver/model_resolver.js b/web/resolver/model_resolver.js index ea4fe56..f53fdfb 100644 --- a/web/resolver/model_resolver.js +++ b/web/resolver/model_resolver.js @@ -1059,6 +1059,13 @@ export class ModelResolver { // Run auto-resolve for 100% matches - returns the updated workflow const updatedWorkflow = await this.dialog.autoResolve100Percent(); + return updatedWorkflow; + } + + /** + * Check if auto-open preference is enabled + */ + isAutoOpenEnabled() { return localStorage.getItem('ModelResolver.autoOpenOnMissing') !== 'false'; } diff --git a/web/resolver/search/download_target_methods.js b/web/resolver/search/download_target_methods.js index 35d05a2..cd8c3d1 100644 --- a/web/resolver/search/download_target_methods.js +++ b/web/resolver/search/download_target_methods.js @@ -1187,27 +1187,6 @@ export const downloadTargetMethods = { return definition ? (localStorage.getItem(definition.storageKey) || '') : ''; }, - formatBaseModelMappingsForInput(mappings = {}) { - return Object.entries(mappings || {}) - .map(([key, value]) => `${key}=${value}`) - .join('\n'); - }, - - parseBaseModelMappingsInput(value = '') { - const mappings = {}; - String(value || '').split(/\r?\n/).forEach(line => { - const trimmed = line.trim(); - if (!trimmed || trimmed.startsWith('#')) return; - const separator = trimmed.includes('=>') ? '=>' : '='; - const index = trimmed.indexOf(separator); - if (index <= 0) return; - const key = trimmed.slice(0, index).trim(); - const mapped = trimmed.slice(index + separator.length).trim(); - if (key && mapped) mappings[key] = mapped; - }); - return mappings; - }, - sanitizeDownloadPathSegment(value = '', fallback = '') { let text = String(value || '').trim() || fallback; text = text @@ -2165,10 +2144,6 @@ export const downloadTargetMethods = { window.addEventListener('blur', clearPointerActive, true); }, - isDropdownListPointerActive(listEl) { - return listEl?.dataset?.mlPointerActive === 'true'; - }, - isPointerEventInsideElementBounds(event, element, tolerance = 0) { if (!event || !element || typeof event.clientX !== 'number' || typeof event.clientY !== 'number') { return false; diff --git a/web/resolver/shell/workflow_state_methods.js b/web/resolver/shell/workflow_state_methods.js index 9441cc6..825acf2 100644 --- a/web/resolver/shell/workflow_state_methods.js +++ b/web/resolver/shell/workflow_state_methods.js @@ -317,17 +317,10 @@ export const workflowStateMethods = { } }, - rememberActiveWorkflow(workflow = null) { - const currentWorkflow = workflow || this.getCurrentWorkflow(); - this.activeWorkflowRouteKey = this.getActiveWorkflowRouteKey(); - this.activeWorkflowSignature = this.getWorkflowSignature(currentWorkflow); - }, - getWorkflowScopedQueueKey(route = this.activeWorkflowRouteKey, signature = this.activeWorkflowSignature) { if (route && signature) return `${route}\n${signature}`; return route || signature || null; }, - clonePendingResolutions(list = this.pendingResolutions) { try { return JSON.parse(JSON.stringify(Array.isArray(list) ? list : [])); diff --git a/web/resolver/utils/render_format_methods.js b/web/resolver/utils/render_format_methods.js index 1e4d758..a0697bc 100644 --- a/web/resolver/utils/render_format_methods.js +++ b/web/resolver/utils/render_format_methods.js @@ -22,21 +22,6 @@ export const renderFormatMethods = { return ` data-model="${this.escapeHtml(data)}" oncontextmenu="window.MLOpenContextMenu(event, this)"${tooltipAttr}`; }, - getContextMenuProps(context = null, tooltip = '') { - const data = this.encodeContextMenuModel(context); - if (!data) return {}; - const props = { - "data-model": data, - oncontextmenu: (event) => { - window.MLOpenContextMenu?.(event, event.currentTarget); - } - }; - if (tooltip) { - props["data-tooltip"] = tooltip; - } - return props; - }, - setContextMenuElement(element, context = null, tooltip = '') { if (!element) return; const data = this.encodeContextMenuModel(context); diff --git a/web/resolver/views/missing_browser_methods.js b/web/resolver/views/missing_browser_methods.js index b029064..8de8238 100644 --- a/web/resolver/views/missing_browser_methods.js +++ b/web/resolver/views/missing_browser_methods.js @@ -480,15 +480,6 @@ export const missingBrowserMethods = { }; }, - getVisibleMissingModels(missingModels = []) { - const resolvedFilteredModels = this.showResolvedModels - ? missingModels - : missingModels.filter(missing => !this.isMissingModelResolved(missing)); - - if (this.showAutoDownloadModels) return resolvedFilteredModels; - return resolvedFilteredModels.filter(missing => !this.isAutoDownloadModel(missing)); - }, - isAutoDownloadModel(missing = {}) { return Boolean(missing?.auto_download_capable || missing?.auto_download_candidate); }, diff --git a/web/resolver/views/model_info_methods.js b/web/resolver/views/model_info_methods.js index d08b3f7..750f005 100644 --- a/web/resolver/views/model_info_methods.js +++ b/web/resolver/views/model_info_methods.js @@ -1062,45 +1062,6 @@ export const modelInfoMethods = { window.open(sourceLink.url, '_blank', 'noopener,noreferrer'); }, - /** - * Open model in CivitAI - */ - async openInCivitAI(model) { - if (!model) return; - - const directUrl = this.getKnownCivitaiModelUrl(model); - if (directUrl) { - window.open(directUrl, '_blank'); - return; - } - - const name = model.name || this.getFilenameFromPath(model.original_path) || ''; - if (!name) return; - - try { - // Search CivitAI for this model using hash (pass resolved_path for hash lookup) - const data = await this.fetchJson('/model_resolver/civitai-search', { - method: 'POST', - body: JSON.stringify({ - filename: name, - category: model.category, - resolved_path: model.resolved_path || '' - }) - }, 'Search CivitAI'); - - if (data && data.url) { - window.open(data.url, '_blank'); - } else { - throw new Error('No URL in search result'); - } - } catch (e) { - // Fall back to direct search - const searchName = this.stripModelExtension(name); - const searchUrl = `https://civitai.com/search?q=${encodeURIComponent(searchName)}`; - window.open(searchUrl, '_blank'); - } - }, - getKnownCivitaiModelUrl(model = {}) { const candidates = [ model.model_url,