Files
gott/wwwroot/js/app.js
T
Meleki 8039b47dec Web-Suche (Agent-Toggle mit Versionswahl), Admin-only Backup, Haiku 4.5
- Agent: Web-Suche als Dropdown (Deaktiviert / 2025 / 2026) statt bool
- AnthropicService: web_search Tool dynamisch nach Version einfügen
- Stream: server_tool_use + web_search_tool_result Events verarbeiten
- Chat-Frontend: web_search_start/end Events mit Suchindikator
- Dashboard: Badge zeigt Web-Suche mit Jahresversion
- UserRecord: IsAdmin Feld, DB-Migration is_admin Spalte
- AuthMiddleware: IsAdmin aus DB laden und in Context setzen
- BackupEndpoint: Admin-Check (403 für Nicht-Admins)
- AuthEndpoint: isAdmin in Login/Me Response
- Frontend: Backup-Section nur für Admins sichtbar
- Haiku 4.5 als Model-Option (Agent-Dropdown + ChatEndpoint)
- TODO: Cronjobs, Haiku ergänzt
2026-03-02 14:05:59 +01:00

44 lines
1.0 KiB
JavaScript

// ── Global User State ──
var currentUser = null;
// ── App Init ──
document.addEventListener('DOMContentLoaded', async () => {
// Auth-Check: Eingeloggt?
var user = await apiMe();
if (!user) {
await navigateTo('login', {}, { replace: true });
return;
}
currentUser = user;
const { page, id } = parseHash();
var target = page === 'login' ? 'dashboard' : page;
await navigateTo(target, { id }, { replace: true });
});
// Browser Zurück/Vor-Button
window.addEventListener('popstate', async (e) => {
var page, id;
if (e.state && e.state.page) {
page = e.state.page;
id = e.state.params ? e.state.params.id : null;
} else {
const parsed = parseHash();
page = parsed.page;
id = parsed.id;
}
// Login-Seite immer erlauben, alles andere nur wenn eingeloggt
if (page !== 'login') {
var user = await apiMe();
if (!user) {
await navigateTo('login', {}, { replace: true });
return;
}
}
await navigateTo(page, { id }, { replace: true });
});