Files
Sibilla 76bc667adf feat: v0.2.0 — API REST, TTS support, documentazione completa e UI mobile-first
✨ Nuove funzionalità:
- Nuovo endpoint API REST /api/v1/query (GET+POST) per consumo programmatico
- Campo speakable_text ottimizzato per sintesi vocale (Alexa, Google Home)
- Funzione strip_markdown() per conversione Markdown → plain text TTS
- Supporto CORS per accesso cross-origin
- UI responsive mobile-first con micro-interazioni e stati
- Nuovo pulsante 'Nuova ricerca' e metadata bar

📚 Documentazione completa:
- docs/ARCHITECTURE.md — architettura di sistema, stack, componenti
- docs/FLOW.md — diagrammi Mermaid della pipeline e flussi
- docs/API.md — documentazione endpoint REST con esempi curl
- docs/WIKI.md — FAQ, glossario, roadmap
- docs/DEPLOYMENT.md — guida deployment (Gunicorn, Nginx, Docker, systemd)
- docs/CONTRIBUTING.md — guida alla contribuzione

🔧 Migliorie tecniche:
- Pipeline di ricerca condivisa in _run_search_pipeline()
- Gestione errori Gemini migliorata con _clean_error()
- Sanitizzazione HTML con allowlist per prevenzione XSS
- .env.example completo con commenti

🧪 Test: 109/109 passati
2026-07-18 10:05:46 +00:00

53 lines
2.0 KiB
HTML

<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="theme-color" content="#0f0f14">
<meta name="description" content="Sibilla — L'oracolo AI che cerca nel web e risponde alle tue domande">
<title>Sibilla — L'Oracolo AI</title>
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<div class="container">
<header>
<h1><img src="/static/favicon.svg" alt="Sibilla logo" class="logo"> Sibilla</h1>
<p class="subtitle">L'oracolo AI che cerca nel web e risponde alle tue domande</p>
</header>
<main>
<form id="search-form" class="search-box">
<textarea
id="query"
name="query"
placeholder="Chiedi qualsiasi cosa a Sibilla..."
rows="3"
autofocus
></textarea>
<button type="submit" id="submit-btn">
<span>🔮 Interroga l'Oracolo</span>
</button>
</form>
<div id="response-area" class="response-area" style="display: none;">
<div id="loading" class="loading" style="display: none;">
<span class="spinner"></span>
<p>Sibilla sta consultando le fonti...</p>
</div>
<button id="new-search-btn" class="new-search-btn">↩ Nuova ricerca</button>
<div id="meta-bar" class="meta-bar" style="display: none;"></div>
<div id="answer" class="answer"></div>
<div id="sources" class="sources"></div>
</div>
</main>
<footer>
<p>Sibilla v0.2.0 — Self-hosted AI Search</p>
</footer>
</div>
<script src="/static/app.js"></script>
</body>
</html>