Migration: consolidate Echo6 docs to cortex with full infrastructure cleanup sync
- Documents recent infrastructure cleanup (8 CTs destroyed, 35 DNS records removed, Headscale cleanup) - Adds 24 new runbooks covering Authentik, PeerTube, Meshtastic, RECON, Proxmox, Mailcow, Internet Archive, GPU routing - Adds project documentation for headscale, vaultwarden, peertube, matrix, mmud, advbbs, arr stack - Updates services.md, environment.md, caddy.md, authentik.md to match live infrastructure - Removes 4 deprecated runbook duplicates (canonical versions live in projects/) - Adds .gitignore for binary archives and editor temp files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
89834796ff
commit
e9231ac24a
93 changed files with 51223 additions and 254 deletions
49
assets/echo6-theme-toggle.js
Executable file
49
assets/echo6-theme-toggle.js
Executable file
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Echo6 Theme Toggle for Open WebUI
|
||||
* Adds a small button (bottom-right) that toggles the .echo6 class
|
||||
* on <html>, activating/deactivating the companion CSS theme.
|
||||
* Persists preference in localStorage.
|
||||
*/
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var STORAGE_KEY = 'echo6-theme-active';
|
||||
var html = document.documentElement;
|
||||
|
||||
// Restore saved state immediately (before paint if possible)
|
||||
var saved = localStorage.getItem(STORAGE_KEY);
|
||||
if (saved === 'true') {
|
||||
html.classList.add('echo6');
|
||||
}
|
||||
|
||||
function createToggle() {
|
||||
// Don't double-inject
|
||||
if (document.getElementById('echo6-toggle')) return;
|
||||
|
||||
var btn = document.createElement('button');
|
||||
btn.id = 'echo6-toggle';
|
||||
btn.textContent = 'E6';
|
||||
btn.title = 'Toggle Echo6 theme';
|
||||
btn.setAttribute('aria-label', 'Toggle Echo6 theme');
|
||||
|
||||
// Sync active state with current class
|
||||
if (html.classList.contains('echo6')) {
|
||||
btn.classList.add('active');
|
||||
}
|
||||
|
||||
btn.addEventListener('click', function () {
|
||||
var isActive = html.classList.toggle('echo6');
|
||||
btn.classList.toggle('active', isActive);
|
||||
localStorage.setItem(STORAGE_KEY, isActive ? 'true' : 'false');
|
||||
});
|
||||
|
||||
document.body.appendChild(btn);
|
||||
}
|
||||
|
||||
// Inject once DOM is ready
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', createToggle);
|
||||
} else {
|
||||
createToggle();
|
||||
}
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue