Files
irc-bot/portal/templates/index.html
tocmo0nlord b154f63cfa Initial implementation of IRC LLM bot
Full implementation from spec: ZNC/IRC client with TLS, Ollama LLM backend,
per-user SQLite conversation memory, and Flask web admin portal with 7 pages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 22:08:53 -04:00

63 lines
2.2 KiB
HTML

{% extends "base.html" %}
{% block title %}Dashboard — IRC Bot Portal{% endblock %}
{% block content %}
<h1>Dashboard</h1>
<div class="cards">
<div class="card">
<div class="card-label">Bot Status</div>
<div class="card-value status-{{ 'online' if pid_exists else 'offline' }}">
{{ 'Running' if pid_exists else 'Stopped' }}
</div>
</div>
<div class="card">
<div class="card-label">Nick</div>
<div class="card-value">{{ cfg.get('bot_nick', 'avcbot') }}</div>
</div>
<div class="card">
<div class="card-label">Ollama Model</div>
<div class="card-value">{{ cfg.get('ollama_model', '—') }}</div>
</div>
<div class="card">
<div class="card-label">Channels</div>
<div class="card-value">{{ cfg.get('channels', [])|length }}</div>
</div>
<div class="card">
<div class="card-label">Memory</div>
<div class="card-value">{{ 'Enabled' if cfg.get('memory_enabled', True) else 'Disabled' }}</div>
</div>
<div class="card">
<div class="card-label">Reload Socket</div>
<div class="card-value status-{{ 'online' if sock_exists else 'offline' }}">
{{ 'Available' if sock_exists else 'Not available' }}
</div>
</div>
</div>
<div class="section">
<h2>Connection</h2>
<table class="info-table">
<tr><td>ZNC Host</td><td>{{ cfg.get('znc_host', 'ham.activeblue.net') }}</td></tr>
<tr><td>Ollama</td><td>{{ cfg.get('ollama_host', '—') }}:{{ cfg.get('ollama_port', '—') }}</td></tr>
<tr><td>Joined Channels</td><td>{{ cfg.get('channels', [])|join(', ') or '—' }}</td></tr>
<tr><td>Trigger on Nick</td><td>{{ 'Yes' if cfg.get('trigger_on_nick') else 'No' }}</td></tr>
<tr><td>Trigger Prefix</td><td>{{ cfg.get('trigger_prefix') or '—' }}</td></tr>
</table>
</div>
<div class="section">
<h2>Quick Actions</h2>
<div class="actions">
<form method="post" action="{{ url_for('action_reconnect') }}">
<button class="btn btn-secondary">Reconnect</button>
</form>
<form method="post" action="{{ url_for('action_reload') }}">
<button class="btn btn-secondary">Reload Config</button>
</form>
<form method="post" action="{{ url_for('action_clear_log') }}">
<button class="btn btn-danger">Clear Log</button>
</form>
</div>
</div>
{% endblock %}