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