Implement LotusGuild TDS v1.2 terminal mode
- Rewrite lotus-terminal.css.ts: TDS-exact dot-grid bg, scanlines, vignette, glitch keyframes, orange caret, cyan scrollbars, all --lt-* CSS vars - Fix lotusTerminalTheme in colors.css.ts: full TDS color palette (Orange primary, Cyan secondary, Green success, Amber warning, Red critical) - Add lotus-boot.ts: matrix boot sequence at 65ms intervals, green phosphor glow - Update ThemeManager.tsx: call runLotusBootSequence on terminal mode activate, UnAuthRouteThemeManager now supports lotusTerminal setting - Update index.html: add JetBrains Mono + VT323 from Google Fonts
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
const BOOT_MESSAGES = [
|
||||
'╔═══════════════════════════════════════════════════╗',
|
||||
'║ LOTUS CHAT — LOTUSGUILD PLATFORM ║',
|
||||
'║ SECURE MATRIX CLIENT — TERMINAL MODE ACTIVE ║',
|
||||
'╚════════════════════════════════════════════════════╝',
|
||||
'',
|
||||
'[ OK ] Kernel modules loaded',
|
||||
'[ OK ] Filesystem mounted read-write',
|
||||
'[ OK ] Network interfaces configured',
|
||||
'[ OK ] Matrix homeserver connection established',
|
||||
'[ OK ] End-to-end encryption initialized',
|
||||
'[ OK ] Authentication service started',
|
||||
'[ OK ] Security headers applied',
|
||||
'[ OK ] Room state synchronized',
|
||||
'[ OK ] Terminal interface rendered',
|
||||
'',
|
||||
'> ALL SYSTEMS NOMINAL — LOTUS CHAT',
|
||||
'',
|
||||
];
|
||||
|
||||
const STORAGE_KEY = 'lt_booted_lotus-chat';
|
||||
|
||||
export function resetBootSequence(): void {
|
||||
sessionStorage.removeItem(STORAGE_KEY);
|
||||
}
|
||||
|
||||
export function runLotusBootSequence(force = false): void {
|
||||
if (!force && sessionStorage.getItem(STORAGE_KEY)) return;
|
||||
sessionStorage.setItem(STORAGE_KEY, '1');
|
||||
|
||||
const overlay = document.createElement('div');
|
||||
overlay.id = 'lt-boot';
|
||||
overlay.style.cssText = [
|
||||
'position:fixed',
|
||||
'inset:0',
|
||||
'background:#000',
|
||||
'z-index:10100',
|
||||
'display:flex',
|
||||
'align-items:flex-start',
|
||||
'justify-content:flex-start',
|
||||
'padding:3rem',
|
||||
"font-family:'JetBrains Mono','Fira Code','Courier New',monospace",
|
||||
].join(';');
|
||||
|
||||
const pre = document.createElement('pre');
|
||||
pre.style.cssText = [
|
||||
'font-family:inherit',
|
||||
'font-size:0.78rem',
|
||||
'color:#00FF88',
|
||||
'text-shadow:0 0 6px #00FF88,0 0 16px rgba(0,255,136,0.45)',
|
||||
'line-height:1.7',
|
||||
'white-space:pre-wrap',
|
||||
'overflow:hidden',
|
||||
].join(';');
|
||||
overlay.appendChild(pre);
|
||||
document.body.appendChild(overlay);
|
||||
|
||||
let i = 0;
|
||||
let text = '';
|
||||
const interval = setInterval(() => {
|
||||
if (i >= BOOT_MESSAGES.length) {
|
||||
clearInterval(interval);
|
||||
setTimeout(() => {
|
||||
overlay.style.transition = 'opacity 0.5s ease';
|
||||
overlay.style.opacity = '0';
|
||||
setTimeout(() => overlay.remove(), 500);
|
||||
}, 500);
|
||||
return;
|
||||
}
|
||||
text += BOOT_MESSAGES[i] + '\n';
|
||||
pre.textContent = text;
|
||||
i++;
|
||||
}, 65);
|
||||
}
|
||||
Reference in New Issue
Block a user