seo-intel 1.5.2 → 1.5.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/setup/wizard.html CHANGED
@@ -1344,7 +1344,7 @@ input::placeholder {
1344
1344
  <!-- Ollama Hosts -->
1345
1345
  <div id="ollamaHostsPanel" style="margin-bottom:16px; padding:12px 14px; background:var(--bg-card); border:1px solid var(--border-card); border-radius:var(--radius);">
1346
1346
  <div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:8px;">
1347
- <span style="font-size:0.72rem; font-weight:600; color:var(--text-muted); letter-spacing:0.04em; text-transform:uppercase;">Ollama Hosts</span>
1347
+ <span style="font-size:0.72rem; font-weight:600; color:var(--text-muted); letter-spacing:0.04em; text-transform:uppercase;">Extraction Hosts</span>
1348
1348
  <button class="btn btn-sm" onclick="addOllamaHost()" style="padding:3px 8px; font-size:0.6rem;"><i class="fa-solid fa-plus"></i> Add LAN Host</button>
1349
1349
  </div>
1350
1350
  <div id="ollamaHostList" style="display:flex; flex-direction:column; gap:6px;">
@@ -1359,14 +1359,14 @@ input::placeholder {
1359
1359
  <p id="pingResult" style="font-size:0.6rem; color:var(--text-muted); margin-top:4px;"></p>
1360
1360
  </div>
1361
1361
  <p style="font-size:0.58rem; color:var(--text-muted); margin-top:6px; line-height:1.4;">
1362
- Run Ollama on any machine in your network. SEO Intel auto-detects localhost and falls back through configured hosts.
1362
+ Ollama (port 11434) or LM Studio (port 1234) on any machine. SEO Intel auto-detects both and falls back through configured hosts.
1363
1363
  </p>
1364
1364
  </div>
1365
1365
 
1366
1366
  <div class="model-columns">
1367
1367
  <div class="model-section" id="extractionSection">
1368
1368
  <h3><i class="fa-solid fa-robot"></i> Extraction Tier</h3>
1369
- <p class="section-note">Local Ollama model for structured data extraction during crawl</p>
1369
+ <p class="section-note">Local model (Ollama or LM Studio) for structured data extraction during crawl</p>
1370
1370
  <div id="extractionModels">
1371
1371
  <!-- Populated by JS -->
1372
1372
  </div>
@@ -1399,7 +1399,7 @@ input::placeholder {
1399
1399
  </div>
1400
1400
  <div class="model-section" id="analysisSection">
1401
1401
  <h3><i class="fa-solid fa-brain"></i> Analysis Tier</h3>
1402
- <p class="section-note">Local Ollama model for competitive gap analysis (needs more VRAM than extraction)</p>
1402
+ <p class="section-note">Local or cloud model for competitive gap analysis (needs more VRAM than extraction)</p>
1403
1403
  <div id="analysisModels">
1404
1404
  <!-- Populated by JS -->
1405
1405
  </div>
@@ -2245,13 +2245,15 @@ input::placeholder {
2245
2245
  list.innerHTML = allHosts.map(h => {
2246
2246
  const hostname = h.mode === 'local' ? 'localhost' : new URL(h.host).hostname;
2247
2247
  const port = new URL(h.host).port || '11434';
2248
+ const isLmStudio = h.mode === 'lmstudio' || port === '1234';
2248
2249
  const dot = h.reachable ? 'color:var(--color-success)' : 'color:var(--color-danger); opacity:0.5';
2249
2250
  const status = h.reachable ? `${h.models.length} model(s)` : 'unreachable';
2251
+ const typeLabel = isLmStudio ? '<span style="font-size:0.5rem; padding:1px 4px; border-radius:3px; background:rgba(180,160,255,0.12); color:#b4a0ff; margin-left:4px;">LM Studio</span>' : '';
2250
2252
  const active = h.host === state.systemStatus.ollama.host;
2251
2253
  return `
2252
2254
  <div style="display:flex; align-items:center; gap:8px; padding:6px 8px; background:${active ? 'rgba(142,203,168,0.06)' : 'transparent'}; border:1px solid ${active ? 'rgba(142,203,168,0.15)' : 'var(--border-subtle)'}; border-radius:6px;">
2253
2255
  <i class="fa-solid fa-circle" style="font-size:0.45rem; ${dot}"></i>
2254
- <span style="font-family:var(--font-mono); font-size:0.68rem; color:var(--text-secondary);">${hostname}:${port}</span>
2256
+ <span style="font-family:var(--font-mono); font-size:0.68rem; color:var(--text-secondary);">${hostname}:${port}</span>${typeLabel}
2255
2257
  <span style="font-size:0.6rem; color:var(--text-muted); margin-left:auto;">${status}</span>
2256
2258
  ${active ? '<span style="font-size:0.55rem; padding:1px 6px; border-radius:3px; background:rgba(142,203,168,0.12); color:#8ecba8;">active</span>' : ''}
2257
2259
  ${!h.reachable && h.mode !== 'local' ? `<button class="btn btn-sm" style="padding:1px 5px; font-size:0.5rem;" onclick="removeOllamaHost('${h.host}')"><i class="fa-solid fa-xmark"></i></button>` : ''}
@@ -3368,7 +3370,7 @@ input::placeholder {
3368
3370
  ['Project', slug],
3369
3371
  ['Target Domain', document.getElementById('cfgTargetUrl').value || '-'],
3370
3372
  ['Extraction', state.selectedExtraction || 'none'],
3371
- ['Analysis', state.selectedAnalysis || 'none'],
3373
+ ['Analysis', (state.selectedAnalysis || 'none').replace(/^cloud:/, '')],
3372
3374
  ['Crawl Mode', state.crawlMode],
3373
3375
  ['Competitor Domains', getListValues('competitorList').length + ' configured'],
3374
3376
  ['Search Console', state.gscUploaded ? 'Connected' : 'Not configured'],