fix: client perms, @everyone/@channel, docs, unit tests

- usePermissions ORs current user roles + @everyone only (not all server roles)
- cache myRolesByServer; load on active server; refresh after self role edit
- gate/notify @everyone and @channel; plain @username push; special mention UI
- refresh FEATURE_PARITY (DMs exist; drop stale critical gaps)
- README production deploy notes dumpster.service
- unit tests for permission bits and broadcast mention tokens
This commit is contained in:
2026-07-15 20:56:53 -04:00
parent a277c78e2c
commit 3c7b8278ce
13 changed files with 470 additions and 176 deletions
+52 -79
View File
@@ -2,7 +2,7 @@
## vs Discord, Guilded (historical), TeamSpeak 6, Fluxer
Compiled 2026-06-30. Updated through Phase 7 completion.
Compiled 2026-06-30. **Status refreshed 2026-07-15** (not a full re-audit of every row).
---
@@ -21,22 +21,23 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Feature | dumpsterChat | Discord | Guilded | TeamSpeak 6 | Fluxer |
|---------|:------------:|:-------:|:-------:|:-----------:|:------:|
|| Text channels | ✅ | ✅ | ✅ | ✅ | ✅ |
|| Direct messages | ✅ | ✅ | ✅ | ❌ | ✅ |
|| Markdown support | ✅ | ✅ full | ✅ full | ❌ basic | ✅ full |
|| Reactions | ✅ | ✅ | ✅ | ❌ | ✅ |
|| Replies | ✅ | ✅ | ✅ | ❌ | ✅ |
|| Threads | ✅ | ✅ | ✅ | ❌ | 🔄 |
|| Forum channels | ✅ | ✅ | ✅ | ❌ | 🔄 |
|| Pinned messages | ✅ | ✅ | ✅ | ✅ | ✅ |
|| Message search | ✅ | ✅ full | ✅ | ❌ | ✅ Meilisearch |
|| Edit / delete messages | ✅ | ✅ | ✅ | ❌ | ✅ |
|| Rich embeds / link unfurling | ✅ | ✅ | ✅ | ❌ | ✅ |
|| File uploads | ⚠️ MinIO | ✅ | ✅ | ✅ | ✅ S3-backed |
|| GIF picker (Giphy) | ✅ | ✅ | ✅ | ❌ | ✅ |
|| Typing indicators | ✅ | ✅ | ✅ | ❌ | ✅ |
|| Message history (pagination) | ✅ | ✅ | ✅ | ✅ | ✅ |
|| Read receipts | ✅ | ✅ | ✅ | ❌ | 🔄 |
| Text channels | ✅ | ✅ | ✅ | ✅ | ✅ |
| Direct messages | ✅ | ✅ | ✅ | ❌ | ✅ |
| Markdown support | ✅ | ✅ full | ✅ full | ❌ basic | ✅ full |
| Reactions | ✅ | ✅ | ✅ | ❌ | ✅ |
| Replies | ✅ | ✅ | ✅ | ❌ | ✅ |
| Threads | ✅ | ✅ | ✅ | ❌ | 🔄 |
| Forum channels | ✅ | ✅ | ✅ | ❌ | 🔄 |
| Pinned messages | ✅ | ✅ | ✅ | ✅ | ✅ |
| Message search | ✅ | ✅ full | ✅ | ❌ | ✅ Meilisearch |
| Edit / delete messages | ✅ | ✅ | ✅ | ❌ | ✅ |
| Rich embeds / link unfurling | ✅ | ✅ | ✅ | ❌ | ✅ |
| File uploads | ⚠️ MinIO | ✅ | ✅ | ✅ | ✅ S3-backed |
| GIF picker (Giphy) | ✅ | ✅ | ✅ | ❌ | ✅ |
| Typing indicators | ✅ | ✅ | ✅ | ❌ | ✅ |
| Message history (pagination) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Read receipts | ✅ | ✅ | ✅ | ❌ | 🔄 |
| @everyone / @channel | ✅ (perm gated) | ✅ | ✅ | ❌ | ✅ |
---
@@ -68,7 +69,7 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Badges | ❌ | ✅ | ✅ | ✅ | ✅ |
| Usernames + discriminators | ✅ | ⚠️ handles | ❌ | ✅ UID | ✅ #0000 |
| Friend requests | ❌ | ✅ | ✅ | ❌ | ✅ |
|| Block list | ✅ | ✅ | ✅ | ❌ | ❌ |
| Block list | ✅ | ✅ | ✅ | ❌ | ❌ |
| Activity / game status | ❌ | ✅ | ✅ | ❌ | ❌ |
---
@@ -80,11 +81,12 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Roles | ✅ | ✅ | ✅ | ✅ | ✅ |
| Hierarchical roles | ⚠️ basic | ✅ | ✅ | ✅ | ✅ |
| Permission bitflags | ✅ | ✅ | ✅ | ✅ granular | ✅ |
|| Per-channel permission overrides | ✅ | ✅ | ✅ | ✅ | ✅ |
| Per-channel permission overrides | ✅ | ✅ | ✅ | ✅ | ✅ |
| @everyone default role | ✅ | ✅ | ✅ | ✅ | ✅ |
| Role colors | ⚠️ DB ready | ✅ | ✅ | ❌ | ✅ |
| Role icons | ❌ | ✅ Nitro | ❌ | ❌ | ❌ |
| Administrator bypass | ✅ | ✅ | ✅ | ✅ | ✅ |
| Client-side permission gates | ✅ (user roles + @everyone) | ✅ | ✅ | ✅ | ✅ |
### dumpsterChat Permissions (current)
@@ -123,7 +125,7 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Server invites | ✅ | ✅ | ✅ | ✅ | ✅ |
| Vanity URLs | ❌ | ✅ Nitro | ❌ | ❌ | ❌ |
| Webhooks | ✅ | ✅ | ✅ | ❌ | ✅ |
| Bots / API | ⚠️ slash cmds | ✅ huge | ✅ Flow Bots | ❌ plugins | 🔄 |
| Bots / API | ⚠️ store + runner | ✅ huge | ✅ Flow Bots | ❌ plugins | 🔄 |
| Server templates | ❌ | ✅ | ❌ | ❌ | ❌ |
| Server discovery | ❌ | ✅ | ✅ | ✅ | 🔄 |
| Server analytics | ❌ | ✅ | ✅ | ❌ | ❌ |
@@ -139,10 +141,10 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Desktop notifications | ⚠️ possible via SW | ✅ | ✅ | ✅ | ✅ |
| Web push notifications | ✅ | ✅ | ✅ | ✅ | ✅ |
| @mention push | ✅ | ✅ | ✅ | ❌ | ✅ |
| Channel-wide push | ✅ | ✅ | ✅ | ❌ | ✅ |
| Channel-wide push (@everyone/@channel) | ✅ | ✅ | ✅ | ❌ | ✅ |
| Email notifications | ❌ | ✅ | ✅ | ❌ | 🔄 |
| Mobile apps | ❌ | ✅ iOS/Android | ✅ | ✅ | 🔄 Flutter alpha |
| Per-channel notification settings | | ✅ | ✅ | ✅ | ✅ |
| Mobile apps | ❌ (PWA is target) | ✅ iOS/Android | ✅ | ✅ | 🔄 Flutter alpha |
| Per-channel notification settings | ⚠️ partial | ✅ | ✅ | ✅ | ✅ |
| Do Not Disturb schedule | ❌ | ✅ | ❌ | ❌ | ❌ |
---
@@ -156,6 +158,7 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Slash commands | ✅ | ✅ | ✅ | ❌ | 🔄 |
| Command options / JSON schema | ✅ | ✅ | ✅ | ❌ | 🔄 |
| Bot mentions | ✅ | ✅ | ❌ | ❌ | 🔄 |
| Built-in bot runner (anonConfess, leaderboard, steamfree) | ✅ | ❌ | ⚠️ | ❌ | ❌ |
| Third-party integrations (Twitch, YouTube, GitHub) | ❌ | ✅ | ✅ | ❌ | 🔄 |
| Webhook-driven bots | ✅ | ✅ | ✅ | ❌ | ✅ |
@@ -168,40 +171,11 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
- Terminal/Gruvbox aesthetic
- WebAuthn / passkey auth
- LiveKit voice integration
- Built-in webhook execution for simple integrations
- Built-in bot store + managed runner
- PWA-first mobile (no native app planned)
### Discord
- Massive network effect (200M+ MAU)
- Nitro subscription perks (animated avatars, HD streaming, larger uploads)
- Activities / embedded apps in voice channels
- Server boosting tiers
- Stage channels
- Activities marketplace
### Guilded (historical)
- Built-in calendar with RSVP
- Scheduling + availability system
- Docs / forms
- Lists (task management)
- Tournaments
- Server Subs monetization
- Server Groups (sub-servers)
### TeamSpeak 6
- Self-hosted by design, free up to 32 slots
- Granular Power/Needed Power permission system
- Low resource client
- Plugin ecosystem
- Virtual servers
- Whisper / poke / channel commander
### Fluxer
- Fully open-source AGPL-3, Docker Compose deploy
- No paywalls / license keys
- Planned federation
- Multi-backend switching
- Erlang/OTP gateway for scale
- 34 locales
### Discord / Guilded / TeamSpeak / Fluxer
See historical notes in git history if needed. Not the product roadmap.
---
@@ -210,38 +184,37 @@ Compiled 2026-06-30. Updated through Phase 7 completion.
| Feature | dumpsterChat | Discord | Guilded | TeamSpeak 6 | Fluxer |
|---------|:------------:|:-------:|:-------:|:-----------:|:------:|
| Self-hostable | ✅ | ❌ | ❌ | ✅ | ✅ |
| Open source | | ❌ | ❌ | ❌ | ✅ AGPL-3 |
| Open source | ⚠️ private self-host | ❌ | ❌ | ❌ | ✅ AGPL-3 |
| PWA support | ✅ | ✅ | ✅ | ✅ | ✅ |
| REST API | ✅ | ✅ | ✅ | ❌ | ✅ |
| WebSocket gateway | ✅ | ✅ | ✅ | ✅ | ✅ |
| Swagger docs | ✅ localhost | ✅ | ✅ | ❌ | ✅ |
| Swagger docs | ✅ /docs | ✅ | ✅ | ❌ | ✅ |
| Docker Compose | ✅ | ❌ | ❌ | ❌ | ✅ |
---
## Priority Recommendations
## Priority Recommendations (updated)
### Critical gaps (would block most Discord/Guilded users)
**Do not treat this table as a todo list.** For a ~12 person friend server, parity rows are optional.
1. **Direct Messages** — no way to message users outside servers
2. **Mobile app** — major adoption blocker
3. **Voice push-to-talk** — important for voice-heavy communities
4. **Email notifications** — needed for async engagement
5. **Read receipts / unread state** — channel-level read tracking
### Actual next polish (product)
1. Mobile PWA pain (input, notifs, safe areas)
2. Role color UI / hierarchy polish
3. Voice PTT / screen share only if voice is used
4. Small slash toys (`/roll`, `/choose`) if wanted
### High-value next features
### Real tech debt
1. More tests on hot paths (permissions DB checker, bot auth)
2. Keep client permission cache in sync after role edits (partially done)
3. Deploy docs must name the real unit: `dumpster.service`
1. **Screen share** — LiveKit supports it; mostly frontend work
2. **Custom emoji / reactions beyond unicode** — core Discord behavior
3. **Server groups (sub-servers)** — channel organization
4. **Do Not Disturb schedule** — notification control
5. **Third-party integrations** — Twitch, YouTube, GitHub
6. **Stage channels** — presentation-style voice
### Explicitly not critical
- Friend requests (DMs already exist among members)
- Native mobile apps
- Discord bot ecosystem compatibility
- Server discovery / monetization / federation
- AutoMod / Flow Bots
### Nice-to-have differentiators
1. **No-code Flow Bots** (Guilded-style automations)
2. **Server discovery / directory**
3. **Activities / embedded games**
4. **Federation** (Fluxer-style)
5. **Server analytics**
### Stale claims removed
- ~~"Direct Messages missing"~~ — DMs exist
- ~~"Mobile app is the only path"~~ — PWA is the target client