diff --git a/scripts/hv-unified.user.js b/scripts/hv-unified.user.js index 2db6c5f..866f8e1 100644 --- a/scripts/hv-unified.user.js +++ b/scripts/hv-unified.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.36 +// @version 0.14.37 // @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse // @author GaboGG + Hermes // @match *://*.hentaiverse.org/* @@ -17,7 +17,7 @@ // CONFIG — default settings // ═══════════════════════════════════════════════════════════════════════ -const VERSION = '0.14.36'; +const VERSION = '0.14.37'; const CFG = { // — Battle automation @@ -3857,7 +3857,6 @@ function analyzeGear() { // ── UI ── function buildGearPanel() { - console.log('%c[HV] 📊 buildGearPanel called', 'color:#0f0'); // Remove old panel const old = document.getElementById('hv-gear-panel'); if (old) old.remove(); @@ -3884,7 +3883,6 @@ function buildGearPanel() { panel.appendChild(title); const { results } = analyzeGear(); - console.log(`%c[HV] 📊 Analysis: ${results.length} slots`, 'color:#0f0'); results.forEach(({ slot, current, cands }) => { const block = document.createElement('div'); @@ -3935,7 +3933,6 @@ function buildGearPanel() { }); document.body.appendChild(panel); - console.log(`%c[HV] 📊 Panel rendered (${document.getElementById('hv-gear-panel') ? 'in DOM' : 'MISSING from DOM'})`, 'color:#0f0'); } function enhanceGearAnalysis() { @@ -3954,6 +3951,7 @@ function enhanceGearAnalysis() { // Analyze button const analyzeBtn = document.createElement('button'); + analyzeBtn.type = 'button'; // CRITICAL: prevent form submit (inside armory form) analyzeBtn.textContent = '🔍 Analyze Gear'; analyzeBtn.style.cssText = css({ padding: '3px 8px', background: '#2a2a4a', color: '#fff', @@ -3961,12 +3959,11 @@ function enhanceGearAnalysis() { fontSize: '11px', fontFamily: 'monospace', }); analyzeBtn.onclick = () => { - console.log('%c[HV] 🔍 Analyze clicked', 'color:#0f0'); try { autoScrapeGear(); } catch (e) { console.error('[HV] scrape failed:', e); } setTimeout(() => { - try { buildGearPanel(); console.log('%c[HV] 📊 Panel built', 'color:#0f0'); } + try { buildGearPanel(); } catch (e) { console.error('[HV] gear panel failed:', e); } }, 300); }; @@ -3974,6 +3971,7 @@ function enhanceGearAnalysis() { // Rescan button (clears buy data then rescrapes) const rescanBtn = document.createElement('button'); + rescanBtn.type = 'button'; // CRITICAL: prevent form submit (inside armory form) rescanBtn.textContent = '🔄 Clear Buy + Rescan'; rescanBtn.style.cssText = css({ padding: '3px 8px', background: '#3a2a2a', color: '#fff', diff --git a/scripts/latest.user.js b/scripts/latest.user.js index 2db6c5f..866f8e1 100644 --- a/scripts/latest.user.js +++ b/scripts/latest.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.36 +// @version 0.14.37 // @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse // @author GaboGG + Hermes // @match *://*.hentaiverse.org/* @@ -17,7 +17,7 @@ // CONFIG — default settings // ═══════════════════════════════════════════════════════════════════════ -const VERSION = '0.14.36'; +const VERSION = '0.14.37'; const CFG = { // — Battle automation @@ -3857,7 +3857,6 @@ function analyzeGear() { // ── UI ── function buildGearPanel() { - console.log('%c[HV] 📊 buildGearPanel called', 'color:#0f0'); // Remove old panel const old = document.getElementById('hv-gear-panel'); if (old) old.remove(); @@ -3884,7 +3883,6 @@ function buildGearPanel() { panel.appendChild(title); const { results } = analyzeGear(); - console.log(`%c[HV] 📊 Analysis: ${results.length} slots`, 'color:#0f0'); results.forEach(({ slot, current, cands }) => { const block = document.createElement('div'); @@ -3935,7 +3933,6 @@ function buildGearPanel() { }); document.body.appendChild(panel); - console.log(`%c[HV] 📊 Panel rendered (${document.getElementById('hv-gear-panel') ? 'in DOM' : 'MISSING from DOM'})`, 'color:#0f0'); } function enhanceGearAnalysis() { @@ -3954,6 +3951,7 @@ function enhanceGearAnalysis() { // Analyze button const analyzeBtn = document.createElement('button'); + analyzeBtn.type = 'button'; // CRITICAL: prevent form submit (inside armory form) analyzeBtn.textContent = '🔍 Analyze Gear'; analyzeBtn.style.cssText = css({ padding: '3px 8px', background: '#2a2a4a', color: '#fff', @@ -3961,12 +3959,11 @@ function enhanceGearAnalysis() { fontSize: '11px', fontFamily: 'monospace', }); analyzeBtn.onclick = () => { - console.log('%c[HV] 🔍 Analyze clicked', 'color:#0f0'); try { autoScrapeGear(); } catch (e) { console.error('[HV] scrape failed:', e); } setTimeout(() => { - try { buildGearPanel(); console.log('%c[HV] 📊 Panel built', 'color:#0f0'); } + try { buildGearPanel(); } catch (e) { console.error('[HV] gear panel failed:', e); } }, 300); }; @@ -3974,6 +3971,7 @@ function enhanceGearAnalysis() { // Rescan button (clears buy data then rescrapes) const rescanBtn = document.createElement('button'); + rescanBtn.type = 'button'; // CRITICAL: prevent form submit (inside armory form) rescanBtn.textContent = '🔄 Clear Buy + Rescan'; rescanBtn.style.cssText = css({ padding: '3px 8px', background: '#3a2a2a', color: '#fff', diff --git a/src/config.js b/src/config.js index 4deaef3..d8cc74f 100644 --- a/src/config.js +++ b/src/config.js @@ -2,7 +2,7 @@ // CONFIG — default settings // ═══════════════════════════════════════════════════════════════════════ -const VERSION = '0.14.36'; +const VERSION = '0.14.37'; const CFG = { // — Battle automation diff --git a/src/gear-analysis.js b/src/gear-analysis.js index 7c1461d..94ca46b 100644 --- a/src/gear-analysis.js +++ b/src/gear-analysis.js @@ -149,7 +149,6 @@ function analyzeGear() { // ── UI ── function buildGearPanel() { - console.log('%c[HV] 📊 buildGearPanel called', 'color:#0f0'); // Remove old panel const old = document.getElementById('hv-gear-panel'); if (old) old.remove(); @@ -176,7 +175,6 @@ function buildGearPanel() { panel.appendChild(title); const { results } = analyzeGear(); - console.log(`%c[HV] 📊 Analysis: ${results.length} slots`, 'color:#0f0'); results.forEach(({ slot, current, cands }) => { const block = document.createElement('div'); @@ -227,7 +225,6 @@ function buildGearPanel() { }); document.body.appendChild(panel); - console.log(`%c[HV] 📊 Panel rendered (${document.getElementById('hv-gear-panel') ? 'in DOM' : 'MISSING from DOM'})`, 'color:#0f0'); } function enhanceGearAnalysis() { @@ -246,6 +243,7 @@ function enhanceGearAnalysis() { // Analyze button const analyzeBtn = document.createElement('button'); + analyzeBtn.type = 'button'; // CRITICAL: prevent form submit (inside armory form) analyzeBtn.textContent = '🔍 Analyze Gear'; analyzeBtn.style.cssText = css({ padding: '3px 8px', background: '#2a2a4a', color: '#fff', @@ -253,12 +251,11 @@ function enhanceGearAnalysis() { fontSize: '11px', fontFamily: 'monospace', }); analyzeBtn.onclick = () => { - console.log('%c[HV] 🔍 Analyze clicked', 'color:#0f0'); try { autoScrapeGear(); } catch (e) { console.error('[HV] scrape failed:', e); } setTimeout(() => { - try { buildGearPanel(); console.log('%c[HV] 📊 Panel built', 'color:#0f0'); } + try { buildGearPanel(); } catch (e) { console.error('[HV] gear panel failed:', e); } }, 300); }; @@ -266,6 +263,7 @@ function enhanceGearAnalysis() { // Rescan button (clears buy data then rescrapes) const rescanBtn = document.createElement('button'); + rescanBtn.type = 'button'; // CRITICAL: prevent form submit (inside armory form) rescanBtn.textContent = '🔄 Clear Buy + Rescan'; rescanBtn.style.cssText = css({ padding: '3px 8px', background: '#3a2a2a', color: '#fff', diff --git a/src/header.user.js b/src/header.user.js index 7c1dd38..306664b 100644 --- a/src/header.user.js +++ b/src/header.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.36 +// @version 0.14.37 // @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse // @author GaboGG + Hermes // @match *://*.hentaiverse.org/*