32 Commits

Author SHA1 Message Date
jared 52e9be1f8d docs: bump Element Call to 0.19.4; add noise suppression to landing
Lint / Shell (shellcheck) (push) Successful in 8s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 4s
Lint / Python deps (pip-audit) (push) Successful in 33s
Lint / Secret scan (gitleaks) (push) Successful in 6s
- README: correct embedded Element Call version 0.19.3 -> 0.19.4 in the
  Custom Features and Tech Stack tables
- landing/index.html: add a "Noise suppression" row to the Voice & Video
  comparison table (Lotus = 3 tiers incl. on-device RNNoise ML) and note
  the feature in the June 2026 narrative

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 20:30:07 -04:00
jared 442ad9b6ed docs: add avatar decorations to Lotus Chat feature description
Lint / Shell (shellcheck) (push) Successful in 10s
Lint / JS (eslint) (push) Successful in 12s
Lint / Python (ruff) (push) Successful in 24s
Lint / Python deps (pip-audit) (push) Successful in 1m25s
Lint / Secret scan (gitleaks) (push) Successful in 4s
99 curated APNG overlay frames stored in user Matrix profile (MSC4133),
visible to other Lotus Chat users in real time across timeline, members
list, and @mention autocomplete. Includes the Lotus Flower decoration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 12:03:00 -04:00
jared 68a6acfa24 feat: hard cross-client voice channel limits via voice-limit-guard
Lint / Shell (shellcheck) (push) Successful in 7s
Lint / JS (eslint) (push) Successful in 5s
Lint / Python (ruff) (push) Successful in 4s
Lint / Python deps (pip-audit) (push) Successful in 1m1s
Lint / Secret scan (gitleaks) (push) Successful in 4s
Add a fail-open Python sidecar (livekit/voice-limit-guard.py) that fronts
lk-jwt-service to enforce per-room voice participant caps for ALL Matrix
clients, not just Lotus Chat:
- lk-jwt-service moved to :8071 (systemd drop-in), guard owns :8070 so NPM's
  existing /sfu/get + /get_token proxy targets are unchanged
- guard reads io.lotus.voice_limit.max_users (Synapse admin API, cached),
  forwards to lk-jwt-service, and on an issued token decodes the LiveKit alias
  + requester, counts distinct Matrix users via LiveKit ListParticipants, and
  returns 403 when the room is full (rejoins/extra devices allowed)
- any error fails open (returns upstream response) so calls never break
- systemd/voice-limit-guard.service; README documents ports, setup, revert

Also update landing page: voice limit is now server-enforced for all clients.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 23:45:41 -04:00
jared 295a072dc9 docs: add voice channel user limit + call join/leave sounds to landing page
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 22:20:46 -04:00
jared b392798e3f docs: add AFK auto-mute and knock admin badge to landing page
- Feature description paragraph: added AFK auto-mute (1–30 min voice idle
  timeout) and knock-to-join admin badge (live count on Members button)
- Comparison table: new AFK auto-mute row in Voice & Video section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 21:38:20 -04:00
jared 130a7334a3 docs: add animated backgrounds + glassmorphism fix to landing page
Lint / Shell (shellcheck) (push) Successful in 23s
Lint / JS (eslint) (push) Successful in 12s
Lint / Python (ruff) (push) Successful in 7s
Lint / Python deps (pip-audit) (push) Successful in 37s
Lint / Secret scan (gitleaks) (push) Successful in 6s
New table row for 5 animated CSS wallpapers (rain, stars, grid pulse,
aurora, fireflies). Feature blurb updated to mention the animated
backgrounds and the glassmorphism body-background fix.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 13:12:45 -04:00
jared 68e922d386 docs: quick reactions 5 → 3 in feature table and blurb
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 32s
Lint / Secret scan (gitleaks) (push) Successful in 5s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 00:33:55 -04:00
jared 86ad28933a docs: add glassmorphism, presence ring, emoji prefix to feature list
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 4s
Lint / Python deps (pip-audit) (push) Successful in 49s
Lint / Secret scan (gitleaks) (push) Successful in 5s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 22:02:33 -04:00
jared 85eab8f54c docs: add quick emoji reactions, in-app toasts rows; extend June 2026 feature list
Lint / Shell (shellcheck) (push) Successful in 8s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 36s
Lint / Secret scan (gitleaks) (push) Successful in 6s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 21:32:48 -04:00
jared f65e56d06d docs: update landing page with GIF preview, policy lists, collapsible messages, send animation, context menu
Lint / Shell (shellcheck) (push) Successful in 10s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 7s
Lint / Python deps (pip-audit) (push) Successful in 33s
Lint / Secret scan (gitleaks) (push) Successful in 5s
Adds inline GIF preview and collapsible long messages rows to the
feature comparison table; extends the June 2026 feature list with all
five newly completed items (P3-5, P3-9, P5-19, P5-23, P5-26).
Includes pre-staged README additions for presence tracking, encrypted
search, privacy settings, draft persistence, and PiP persistence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:57:18 -04:00
jared 60c215c63d feat: add export history, scheduling, bookmarks rows; update feature list
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 6s
Lint / Python deps (pip-audit) (push) Successful in 34s
Lint / Secret scan (gitleaks) (push) Successful in 4s
New table rows (UX & Extras section):
- Export room history: Lotus ✓ (txt/json/html, date range, E2EE), Element ✓
- Message scheduling: Lotus ✓ (MSC4140), Element ~, others ✗
- Message bookmarks: Lotus ✓, Element ✓, others ✗

also-available paragraph: prepended June 2026 feature groups — message
scheduling, saved messages, history export, activity/mod log, server ACL
editor, room stats, opt-in compression, 13 domain-specific URL preview
cards (YouTube, TikTok, Twitch, Reddit, X/Twitter, Spotify, Steam, IMDb,
Vimeo, GitHub, Discord, npm, Stack Overflow)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:40:31 -04:00
jared cfb8b78e7c feat: add custom sounds, quiet hours, room sort to comparison table 2026-06-03 20:32:46 -04:00
jared 12a6e7410d docs: update landing page for P1 features — polls create, voice speed, new rows
- Polls: "display & vote" → "create, vote & display; single or multiple choice"
- Voice messages: add 0.75×/1×/1.5×/2× speed note
- 4 new UX & Extras table rows: Media Gallery, Sidebar filter, Favorite rooms, Invite link+QR
- also-available paragraph expanded with all P1 additions
- Comparison date updated to "June 2026 (updated)"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 10:45:04 -04:00
jared 5539f1f1fd docs: update landing page for June 2026 features
- Update comparison table date to June 2026
- Add push-to-deafen (M key), night light filter, message length
  counter, and TDS orange typing dots to also-available paragraph
- PTT row notes M = push-to-deafen
- Add Night Light row to UX & Extras comparison table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 18:47:40 -04:00
jared fee26621bc docs: add who-reacted row and expand also-available feature list
Lint / Shell (shellcheck) (push) Successful in 18s
Lint / JS (eslint) (push) Successful in 18s
Lint / Python (ruff) (push) Successful in 12s
Lint / Python deps (pip-audit) (push) Successful in 49s
Lint / Secret scan (gitleaks) (push) Successful in 15s
- New comparison table row: "Who reacted" with hover tooltip + avatar modal
- also-available paragraph now mentions emoji/sticker picker, pinned messages
  panel, and who-reacted viewer explicitly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 23:07:47 -04:00
jared 1580e11dc5 docs: upgrade encrypted search row for Lotus Chat and add notes
Lint / Shell (shellcheck) (push) Successful in 8s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 35s
Lint / Secret scan (gitleaks) (push) Successful in 5s
- Lotus Chat: ~ → ✓ (local cache scan + load-more buttons is a working
  encrypted search feature, not a partial)
- Cinny upstream: added note clarifying it's server-only, no E2EE
- Commet: already ✓, added note that it auto-fetches + decrypts history
  (confirmed via PR #348 and v0.3.0 release notes)
- FluffyChat: added 'cache scan only' note
- Nheko: added 'local DB scan' note

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 22:31:54 -04:00
jared f0a51b8a86 docs: correct presence tracking data based on per-client research
Lint / Shell (shellcheck) (push) Successful in 10s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 4s
Lint / Python deps (pip-audit) (push) Successful in 36s
Lint / Secret scan (gitleaks) (push) Successful in 5s
- Cinny upstream: ✗ → ~ (manual AFK only, auto-detection PR unmerged)
- Commet: basic → partial (inactivity monitor shipped Oct 2025, PR #475)
- Element Web/Desktop: 'no idle detection' → partial; 3-min idle timer
  shipped Nov 2023 (matrix-react-sdk PR #11824), but no tab detection,
  no offline-on-close, no user hide toggle
- FluffyChat, Element X, Nheko: basic confirmed, no change

Sources: matrix-react-sdk PR #11824, Commet PR #475, Cinny issue #2395

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 21:45:08 -04:00
jared b30d3138e4 docs: update landing page for May 2026 feature additions
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 31s
Lint / Secret scan (gitleaks) (push) Successful in 8s
- Feature paragraph: add full presence tracking details, encrypted
  search with load-more buttons, auto-clear status, privacy section
- Custom status row: mention auto-clear timer and 64-char limit
- Encrypted search row: clarify per-room load-more + oldest date
- New row: Online presence tracking (idle/away auto-detection) —
  shows Lotus Chat leads all web Matrix clients on this

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 20:58:44 -04:00
jared 85ca1ca8a1 docs: document screenshare/PTT/status features in README + landing page
Lint / Shell (shellcheck) (push) Successful in 13s
Lint / JS (eslint) (push) Successful in 7s
Lint / Python (ruff) (push) Successful in 6s
Lint / Python deps (pip-audit) (push) Successful in 58s
Lint / Secret scan (gitleaks) (push) Successful in 4s
README.md:
- Replaced the stale 'Auto-revert spotlight on screenshare' entry
  (that 600ms revert-to-grid code was removed — it caused fullscreen
  to show avatars instead of the screenshare)
- Added accurate entries for all four features added this cycle:
  Screenshare fullscreen, PiP screenshare focus, Screenshare audio
  mute, Custom status message

landing/index.html:
- Updated Lotus Fork feature description paragraph to mention
  screenshare fullscreen, screenshare audio mute, PTT, and custom
  status messages
- Added PTT row to Voice & Video comparison table
- Updated Screenshare row for Lotus Chat to note fullscreen + audio mute
- Added 'Custom status message' row to UX & Extras section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 12:40:02 -04:00
jared 30bb0e5748 docs: add presence badges and device sessions to landing page and README
Document the new member list presence indicators and per-member device
sessions panel with per-device SAS verification in both the landing
page feature list and the README custom features table.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 20:18:37 -04:00
jared c4eb7974e4 feat(landing): update feature matrix for voice messages and verification fix
Lint / Shell (shellcheck) (push) Successful in 8s
Lint / JS (eslint) (push) Successful in 5s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 34s
Lint / Secret scan (gitleaks) (push) Successful in 5s
- Lotus Chat voice messages: ~ playback only → ✓ record & play, MSC3245, E2EE
- Lotus Chat device verification: ~ → ✓ SAS emoji, cross-client inline cards
- Update feature description to list voice recording and verification fix

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 12:19:10 -04:00
jared 35c54672af feat: add per-message read receipts row and update Lotus Chat feature list
Lint / Shell (shellcheck) (push) Successful in 10s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 4s
Lint / Python deps (pip-audit) (push) Successful in 36s
Lint / Secret scan (gitleaks) (push) Failing after 5m18s
Add per-message read receipts comparison row (8-col, including new official
Cinny column from dc8f588). Update Lotus Chat feature description to include
per-message read receipt avatars and chat wallpaper in calls.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 00:27:56 -04:00
root dc8f588cb6 feat: add Lotus Chat column and official Cinny comparison to landing page
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 33s
Lint / Secret scan (gitleaks) (push) Successful in 5s
Add chat.lotusguild.org as the featured Cinny fork column and cinny.in
as a second comparison column. Adds official Cinny card in Other
Clients section and updates table colspan to 8.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 14:01:23 -04:00
jared 39764ff478 feat: update comparison table for new Lotus Chat features
Lint / Shell (shellcheck) (push) Successful in 13s
Lint / JS (eslint) (push) Successful in 9s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 44s
Lint / Secret scan (gitleaks) (push) Successful in 6s
Reflect four features just added to the Lotus Chat fork:
- Polls: ~ → ✓ (display + vote, sends m.poll.response)
- Image captions: ✗ → ✓ (caption field on upload, sets body)
- Location sharing: ✗ → ~ (OSM map embed view + static share button)
- Message forwarding: ✗ → ✓ (forward to any room via room picker)
Also: correct Element X image captions to ✓ (v26.04.2 scrollable captions)
Update Lotus client card to reflect all added features.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 13:27:18 -04:00
jared 90892a57b0 feat: comprehensive client comparison update (May 2026)
Lint / Shell (shellcheck) (push) Successful in 12s
Lint / JS (eslint) (push) Successful in 11s
Lint / Python (ruff) (push) Successful in 8s
Lint / Python deps (pip-audit) (push) Successful in 45s
Lint / Secret scan (gitleaks) (push) Successful in 4s
Research-backed updates for all six clients based on latest releases:
- Commet v0.4.2: polls, screenshare (browsers/Android), macOS Beta, web builds, Vodozemac web binding; updated column header and client card
- Element X v26.04/v26.05: space create/manage shipped, DM voice calls, media captions, live location, multi-account confirmed; updated client card
- FluffyChat v2.3.0+: threads ✓, polls ✓, multi-account ✓
- Nheko v0.12.1: screenshare ✓ (X11/Wayland/Windows), widgets ~ (view only)
- New rows: Voice messages, Pinned messages, Location sharing, Message forwarding
- Updated security note re Commet Vodozemac Dart web binding

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 01:10:24 -04:00
jared f3a7bcd00b feat: update client comparison table (May 2026)
Lint / Shell (shellcheck) (push) Successful in 15s
Lint / JS (eslint) (push) Successful in 8s
Lint / Python (ruff) (push) Successful in 6s
Lint / Python deps (pip-audit) (push) Successful in 1m4s
Lint / Secret scan (gitleaks) (push) Successful in 6s
- Cinny voice/video/calls: ✓ now covers rooms, DMs, group calls,
  screenshare via Element Call embed
- Cinny screenshare: ✓ (via EC iframe)
- Cinny GIF picker: ✓ Giphy with Terminal TDS theme
- Cinny polls: ~ display-only (read-only m.poll.start renderer)
- Cinny deleted messages: ✓ now shows placeholder instead of hiding
- New row: incoming call notification (ring + Answer/Decline for DMs)
- Updated featured client description with custom feature list
- README Lotus Cinny section updated with latest custom features

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 00:49:04 -04:00
jared 7f7ddd3e3c Switch Lotus Cinny from nightly dev to stable-release fork workflow
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 7s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 55s
Lint / Secret scan (gitleaks) (push) Successful in 5s
- Replace nightly build script with daily upstream release checker
  (cinny/upstream-check.sh) — posts to Matrix as LotusBot when a new
  cinnyapp/cinny stable release is published
- Add cinny/lotus-build.sh — merges latest release tag into the lotus
  branch, builds, deploys; triggered via !cinny-update webhook
- Fork lives at code.lotusguild.org/LotusGuild/cinny (lotus branch, v4.11.1)
- deploy/hooks-lxc106.json — adds cinny-build webhook endpoint (port 9000)
- Update landing page: "dev branch / nightly" → "Lotus fork / stable releases"
- Set LotusBot avatar on @hookshot_tinker-tickets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 16:57:35 -04:00
jared c1e21004be landing: full mobile responsiveness pass
- Sticky first table column (feature names stay visible while scrolling horizontally)
  with opaque background to properly cover scrolled content
- body: align-items flex-start on mobile to prevent vertical clipping
- ≤540px breakpoint: reduced logo, h1, padding, table font/cell sizes,
  homeserver code word-break, client card tags stack vertically
- ≤380px breakpoint: further compression for very small phones
- Swipe hint ("← swipe to compare →") shown on touch devices above table,
  auto-hides after first scroll via JS
- Privacy strip stacks vertically on small screens
- Footer/legal tighter spacing on mobile

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 23:06:00 -04:00
jared 2b284d3da7 landing: fix Commet E2EE voice, add deleted message visibility row
- Commet voice/group calls: mark partial — no E2EE encrypted voice rooms yet
- Add "Deleted message visibility" row: Cinny hides deleted messages entirely;
  Element X, FluffyChat, Commet, Element, Nheko all show a redaction placeholder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 23:02:08 -04:00
jared 2f1754e7bb landing: add full feature comparison table + dev branch notes
- Add 6-client comparison table (Cinny dev, Element X, FluffyChat, Commet, Element, Nheko)
  covering platform, security, calling, core features, UX/extras — ✓/~/✗ with context notes
- Note chat.lotusguild.org is the dev/beta branch of Cinny; add link to stable cinny.in
- Add "Dev Branch" purple tag to featured Cinny card
- Expand container to 900px to accommodate table; table scrolls on mobile
- Add encryption architecture note (Vodozemac Rust SDK vs matrix-js-sdk) in table footer
- Add table legend

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:57:55 -04:00
jared 907d600999 landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
jared 0e275d725e refactor: replace old bot code with Matrix infra configs and scripts
- Remove obsolete Python bot (Wordle, commands, callbacks, welcome)
- Add hookshot/ — all 11 webhook transformation functions + deploy.sh
- Add cinny/ — config.json and dev-update.sh (nightly dev branch build)
- Add landing/ — matrix.lotusguild.org landing page HTML
- Add systemd/ — livekit-server, draupnir, cinny cron unit files
- Add draupnir/ — production config (access token redacted)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 10:36:51 -04:00