feat: reaction TDS styling, debounce read receipts, Escape to skip boot, type fixes
- lotus-terminal.css.ts: add reaction chip styles for dark + light TDS modes (cyan border/bg for unselected, orange accent for own/pressed reactions) - useRoomReadPositions: debounce receipt handler at 150ms (M-3) - lotus-boot.ts: Escape key skips boot animation (I-3) - RoomInput.tsx: replace (uploadRes as any) with typed assertion (M-7) - CallEmbedProvider: call mention detection, audio cleanup, display name (C-1, C-2, M-5) - EventReaders: timestamps in seen-by modal, filter self, TDS styling - ReadReceiptAvatars: StackedAvatar pill, TDS visual treatment - chatBackground: add waves/neon/aurora backgrounds - RoomView: auto-apply tactical bg when TDS active and bg is none - settings: extend ChatBackground union type
This commit is contained in:
@@ -29,6 +29,7 @@ export function resetBootSequence(): void {
|
||||
|
||||
export function runLotusBootSequence(force = false): void {
|
||||
if (!force && sessionStorage.getItem(STORAGE_KEY)) return;
|
||||
if (document.getElementById('lt-boot')) return;
|
||||
sessionStorage.setItem(STORAGE_KEY, '1');
|
||||
|
||||
const overlay = document.createElement('div');
|
||||
@@ -58,11 +59,25 @@ export function runLotusBootSequence(force = false): void {
|
||||
overlay.appendChild(pre);
|
||||
document.body.appendChild(overlay);
|
||||
|
||||
const dismiss = (): void => {
|
||||
clearInterval(interval);
|
||||
document.removeEventListener('keydown', onKey);
|
||||
overlay.style.transition = 'opacity 0.4s ease';
|
||||
overlay.style.opacity = '0';
|
||||
setTimeout(() => overlay.remove(), 400);
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent): void => {
|
||||
if (e.key === 'Escape') dismiss();
|
||||
};
|
||||
document.addEventListener('keydown', onKey);
|
||||
|
||||
let i = 0;
|
||||
let text = '';
|
||||
const interval = setInterval(() => {
|
||||
if (i >= BOOT_MESSAGES.length) {
|
||||
clearInterval(interval);
|
||||
document.removeEventListener('keydown', onKey);
|
||||
setTimeout(() => {
|
||||
overlay.style.transition = 'opacity 0.5s ease';
|
||||
overlay.style.opacity = '0';
|
||||
|
||||
Reference in New Issue
Block a user