diff --git a/README.md b/README.md index 03dc8e6..65a3144 100644 --- a/README.md +++ b/README.md @@ -460,7 +460,7 @@ All custom code lives in `src/app/` on the `lotus` branch of `code.lotusguild.or | Feature | Files | Notes | |---------|-------|-------| -| **Element Call embed** | `src/app/plugins/call/`, `src/app/hooks/useCallEmbed.ts`, `src/app/components/CallEmbedProvider.tsx` | EC 0.19.3 (`@element-hq/element-call-embedded`), dist copied to `public/element-call/` by vite | +| **Element Call embed** | `src/app/plugins/call/`, `src/app/hooks/useCallEmbed.ts`, `src/app/components/CallEmbedProvider.tsx` | EC 0.19.4 (`@element-hq/element-call-embedded`), dist copied to `public/element-call/` by vite | | **DM calls** | `src/app/features/room/Room.tsx`, `src/app/features/room/RoomViewHeader.tsx` | Phone button in DM room header; `useCallStart(true)` passes `intent: StartedByUser`; Room.tsx switches to CallView layout when DM has active call | | **Picture-in-picture call** | `src/app/components/CallEmbedProvider.tsx` | When navigating away from the call room, the embed shrinks to a 280×158px PiP in the bottom-right. Click navigates back. Implemented via `useEffect` imperatively overriding styles on `callEmbedRef.current` — cannot use a wrapper div because `useCallEmbedPlacementSync` writes `top/left/width/height` directly onto that element | | **Screenshare fullscreen** | `src/app/features/call/CallControls.tsx`, `src/app/features/call/Controls.tsx` | When screensharing, a fullscreen button appears in call controls. Calls `callEmbedRef.current?.requestFullscreen()` on the Cinny call container. EC naturally spotlights the screenshare — the old 600ms grid-revert code was removed (it caused fullscreen to show avatars instead of the screen) | @@ -744,7 +744,7 @@ All commands use the `!` prefix. Run `!help` in any room for the full list. | Webhook bridge | matrix-hookshot | 7.3.2 | | Reverse proxy | Nginx Proxy Manager | — | | Web client | Lotus Cinny (fork of `cinnyapp/cinny` main) | custom | -| Element Call embed | `@element-hq/element-call-embedded` | 0.19.3 | +| Element Call embed | `@element-hq/element-call-embedded` | 0.19.4 | | GIF picker | Giphy JS/React SDK (`@giphy/react-components`) | — | | Auto-deploy | adnanh/webhook | 2.8.0 | | Bot language | Python 3 | 3.x | diff --git a/landing/index.html b/landing/index.html index 705515a..88389a9 100644 --- a/landing/index.html +++ b/landing/index.html @@ -555,7 +555,7 @@

Our Lotus Guild fork of Cinny adds: voice message recording & playback with 0.75×/1×/1.5×/2× speed control (MSC3245, E2EE), device verification fix (cross-client SAS emoji + inline cards), per-member device session panel with per-device verify buttons, full Discord-style presence tracking (online on startup, idle/away after 10 min inactivity, unavailable when tab hidden, offline on close — with a “Hide Online Status” privacy toggle), presence status indicators (online/busy/away dots) in member lists, incoming call ring + Answer/Decline (DMs & group chats), GIF picker (Giphy), emoji & sticker picker (custom packs, stickers send as m.sticker events), pinned messages panel (pin icon in room header, pin/unpin from message menu), who-reacted viewer (hover any reaction for a name tooltip; right-click for a full avatar list), draggable+resizable picture-in-picture call window, poll creation & voting (single or multiple choice, 2–10 options), message forwarding, image/video captions, location sharing (map view + send), deleted message placeholders, per-message read receipt avatars (click for full list with timestamps), private read receipts toggle (Settings → Privacy), screenshare fullscreen button, screenshare audio mute (mute a screenshare’s audio without leaving the call), PTT (Push-to-Talk with configurable hold key), push-to-deafen (M key, configurable in Settings → Calls), custom status messages with emoji picker + auto-clear timer (30 min – 7 days) shown below usernames, encrypted room search via local cache scan with per-room “Load more” history buttons, a dedicated Privacy settings section (hide typing, hide online status), sidebar room filter (search rooms by name in Home and DMs tabs), favorite rooms (star any room, syncs across devices via m.favourite tag), media gallery drawer (browse all images/videos/files shared in a room), invite link + QR code (in both invite modal and room settings), knock-to-join support (Request to Join button + admin Approve/Deny panel), code syntax highlighting in Lotus Terminal mode (keywords, strings, numbers, comments, functions), night light / blue light filter (warm orange overlay with adjustable intensity in Settings → Appearance), message length counter in the composer, and the Lotus Terminal design theme (with TDS-styled orange typing indicator dots). - Also added in June 2026: message scheduling (MSC4140, datetime picker, cancel tray), saved messages / bookmarks (right-click any message, sidebar panel, syncs across devices), room history export (txt/json/html, date range, E2EE-aware), room activity & mod log (joins, kicks, bans, power level changes), server ACL editor (allow/deny lists, wildcard validation, power-level gated), room stats panel (top members, top reactions, media breakdown, 24h activity heatmap), opt-in image compression (Canvas API at 0.82 quality, shows before/after sizes), 13 domain-specific URL preview cards (YouTube, Vimeo, Twitch, Reddit, X/Twitter, Spotify, Steam, IMDb, Wikipedia, GitHub, Discord, npm, Stack Overflow), inline GIF preview (Giphy & Tenor share links auto-embed as animated GIFs via the homeserver proxy), policy list viewer (admin panel for m.policy.rule.* ban list rooms — complements Draupnir), collapsible long messages (auto-collapse > 20 lines with “Read more” toggle, threshold configurable), message send animation (0.15 s fade+scale on own messages, respects prefers-reduced-motion), right-click room context menu improvements (Mute with duration submenu 15 min–indefinite, Copy Room Link, Mark as Read, Leave Room, Room Settings), quick emoji reactions directly on message hover (3 most-recent emoji in the hover bar, single click to react), in-app notification toasts (TDS-styled slide-in card from bottom-right when the window is focused, 4 s auto-dismiss, click to navigate), presence avatar border ring (2px green/yellow/red ring on user avatars in the timeline, members list, @mention autocomplete, and notifications), room emoji prefix support (leading emoji renders at 1.15× in the sidebar; emoji picker button on all room name inputs), glassmorphism sidebar toggle (Settings → Appearance, off by default; frosted blur effect lets chat backgrounds show through the sidebar — fixed in June 2026 to mirror the background onto document.body so the blur has content to work through), and 5 CSS-only animated chat backgrounds: Digital Rain (two-layer vertical stripe scroll with parallax), Star Drift (three-layer radial-gradient dots drifting diagonally), Grid Pulse (neon grid lines expanding/contracting), Aurora Flow (sweeping radial gradient ellipses on a 200% canvas), and Fireflies (three layers of glowing dots drifting). All respect prefers-reduced-motion and include a "Pause Background Animations" toggle in Settings → Appearance. Also added: AFK auto-mute for voice calls (mic silenced after a configurable idle timeout of 1–30 min detected via Web Audio AnalyserNode; in-app toast confirms the action; toggle + duration selector in Settings → Calls), knock-to-join admin badge (a live warning badge on the Members button in the room header counts pending knock requests in real time, visible only to users with sufficient invite permissions), voice channel user limit (admins set a max-participant cap per room via the io.lotus.voice_limit state event; enforced server-side for every Matrix client by a guard that fronts the LiveKit JWT issuer and refuses tokens once a room is full, with a “Channel Full (N/N)” message and disabled Join button in Lotus Chat, while members already in the call can always rejoin), and custom call join/leave sound effects (a local cue plays when someone enters or leaves a call you’re in — tracked via MatrixRTC membership changes, synthesized in-browser with the Web Audio API so no assets are bundled; choose Chime, Soft, Retro, or off in Settings → Calls). Also shipped in June 2026: 11 seasonal & holiday theme overlays (Halloween, Christmas, New Year, Autumn, Valentine’s Day, St. Patrick’s Day, Earth Day, Lunar New Year, April Fools’, Deep Space, and Retro Arcade — auto-selected by date with a manual override in Settings → Appearance; CSS-only particle systems, fully animated, all respect prefers-reduced-motion), improved chat background animations (phosphor-flicker brightness layer on Digital Rain, seamless per-tile star looping, per-layer independent aurora positions for a true fluid sweep, organic firefly bioluminescence via independent brightness+opacity pulses), user-to-user private notes (freeform text note on any user’s profile, visible only to you, auto-saves after 800 ms, syncs across devices via io.lotus.user_notes account data), presence status revert fix (status message now re-read from storage on every activity event so changing your custom status in Profile Settings is never silently overwritten), and voice ringing fix for public space channels (joining a persistent voice room no longer triggers the incoming-call ring; the m.space.parent state key lookup was corrected to use getStateEvents instead of the single-key variant that always returned undefined), and avatar decorations (99 curated APNG overlay frames — Gaming, Cyber, Space, Fantasy, Elements, Japanese, Nature, Spooky, Cozy — that animate around your avatar in the message timeline, members list, and @mention autocomplete; decoration is stored in your public Matrix profile via MSC4133 so other Lotus Chat users see it on your avatar in real time; select from Settings → Account → Avatar Decoration; includes a Lotus Flower decoration). + Also added in June 2026: message scheduling (MSC4140, datetime picker, cancel tray), saved messages / bookmarks (right-click any message, sidebar panel, syncs across devices), room history export (txt/json/html, date range, E2EE-aware), room activity & mod log (joins, kicks, bans, power level changes), server ACL editor (allow/deny lists, wildcard validation, power-level gated), room stats panel (top members, top reactions, media breakdown, 24h activity heatmap), opt-in image compression (Canvas API at 0.82 quality, shows before/after sizes), 13 domain-specific URL preview cards (YouTube, Vimeo, Twitch, Reddit, X/Twitter, Spotify, Steam, IMDb, Wikipedia, GitHub, Discord, npm, Stack Overflow), inline GIF preview (Giphy & Tenor share links auto-embed as animated GIFs via the homeserver proxy), policy list viewer (admin panel for m.policy.rule.* ban list rooms — complements Draupnir), collapsible long messages (auto-collapse > 20 lines with “Read more” toggle, threshold configurable), message send animation (0.15 s fade+scale on own messages, respects prefers-reduced-motion), right-click room context menu improvements (Mute with duration submenu 15 min–indefinite, Copy Room Link, Mark as Read, Leave Room, Room Settings), quick emoji reactions directly on message hover (3 most-recent emoji in the hover bar, single click to react), in-app notification toasts (TDS-styled slide-in card from bottom-right when the window is focused, 4 s auto-dismiss, click to navigate), presence avatar border ring (2px green/yellow/red ring on user avatars in the timeline, members list, @mention autocomplete, and notifications), room emoji prefix support (leading emoji renders at 1.15× in the sidebar; emoji picker button on all room name inputs), glassmorphism sidebar toggle (Settings → Appearance, off by default; frosted blur effect lets chat backgrounds show through the sidebar — fixed in June 2026 to mirror the background onto document.body so the blur has content to work through), and 5 CSS-only animated chat backgrounds: Digital Rain (two-layer vertical stripe scroll with parallax), Star Drift (three-layer radial-gradient dots drifting diagonally), Grid Pulse (neon grid lines expanding/contracting), Aurora Flow (sweeping radial gradient ellipses on a 200% canvas), and Fireflies (three layers of glowing dots drifting). All respect prefers-reduced-motion and include a "Pause Background Animations" toggle in Settings → Appearance. Also added: AFK auto-mute for voice calls (mic silenced after a configurable idle timeout of 1–30 min detected via Web Audio AnalyserNode; in-app toast confirms the action; toggle + duration selector in Settings → Calls), knock-to-join admin badge (a live warning badge on the Members button in the room header counts pending knock requests in real time, visible only to users with sufficient invite permissions), voice channel user limit (admins set a max-participant cap per room via the io.lotus.voice_limit state event; enforced server-side for every Matrix client by a guard that fronts the LiveKit JWT issuer and refuses tokens once a room is full, with a “Channel Full (N/N)” message and disabled Join button in Lotus Chat, while members already in the call can always rejoin), and custom call join/leave sound effects (a local cue plays when someone enters or leaves a call you’re in — tracked via MatrixRTC membership changes, synthesized in-browser with the Web Audio API so no assets are bundled; choose Chime, Soft, Retro, or off in Settings → Calls). Also shipped in June 2026: 11 seasonal & holiday theme overlays (Halloween, Christmas, New Year, Autumn, Valentine’s Day, St. Patrick’s Day, Earth Day, Lunar New Year, April Fools’, Deep Space, and Retro Arcade — auto-selected by date with a manual override in Settings → Appearance; CSS-only particle systems, fully animated, all respect prefers-reduced-motion), improved chat background animations (phosphor-flicker brightness layer on Digital Rain, seamless per-tile star looping, per-layer independent aurora positions for a true fluid sweep, organic firefly bioluminescence via independent brightness+opacity pulses), user-to-user private notes (freeform text note on any user’s profile, visible only to you, auto-saves after 800 ms, syncs across devices via io.lotus.user_notes account data), presence status revert fix (status message now re-read from storage on every activity event so changing your custom status in Profile Settings is never silently overwritten), and voice ringing fix for public space channels (joining a persistent voice room no longer triggers the incoming-call ring; the m.space.parent state key lookup was corrected to use getStateEvents instead of the single-key variant that always returned undefined), and avatar decorations (99 curated APNG overlay frames — Gaming, Cyber, Space, Fantasy, Elements, Japanese, Nature, Spooky, Cozy — that animate around your avatar in the message timeline, members list, and @mention autocomplete; decoration is stored in your public Matrix profile via MSC4133 so other Lotus Chat users see it on your avatar in real time; select from Settings → Account → Avatar Decoration; includes a Lotus Flower decoration), and a 3-tier call noise-suppression control (Settings → General → Calls — Off, Browser-native, or on-device ML) where the ML tier runs RNNoise entirely in your browser to strip keyboard clatter, fans, and background chatter from your mic before it reaches the call; unlike Krisp-style cloud filters it needs no LiveKit Cloud subscription and works on our self-hosted SFU. Prefer the unmodified upstream? cinny.in works with our homeserver — set it to matrix.lotusguild.org.

@@ -802,6 +802,16 @@ XDG portals & native + + Noise suppressionfilter background noise from mic + 3 tiers: off / browser-native /
on-device ML (RNNoise),
works on self-hosted SFU
+ ~browser-native
via Element Call
+ ~browser-native + + + ~browser-native;
ML only on LiveKit Cloud
+ + Push-to-Talkhold key to transmit configurable hold key,
PTT badge in call bar;
M = push-to-deafen