mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
chore: remove soundboard feature entirely
Soundboard was never implemented — remove USE_SOUNDBOARD permission bit, rate limiter, protocol entry, admin mockup reference, TODOS entry, and all related test assertions.
This commit is contained in:
@@ -169,11 +169,6 @@ export function createVideoCameraLimiter(): RateLimiter {
|
||||
return createRateLimiter(2, 1_000);
|
||||
}
|
||||
|
||||
/** Soundboard: 1 per 3 seconds. */
|
||||
export function createSoundboardLimiter(): RateLimiter {
|
||||
return createRateLimiter(1, 3_000);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Bundled set of all protocol limiters
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -185,7 +180,6 @@ export interface RateLimiterSet {
|
||||
readonly reactions: RateLimiter;
|
||||
readonly voice: RateLimiter;
|
||||
readonly voiceVideo: RateLimiter;
|
||||
readonly soundboard: RateLimiter;
|
||||
}
|
||||
|
||||
export function createRateLimiterSet(): RateLimiterSet {
|
||||
@@ -196,6 +190,5 @@ export function createRateLimiterSet(): RateLimiterSet {
|
||||
reactions: createReactionLimiter(),
|
||||
voice: createVoiceLimiter(),
|
||||
voiceVideo: createVideoCameraLimiter(),
|
||||
soundboard: createSoundboardLimiter(),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -128,7 +128,6 @@ export enum Permission {
|
||||
READ_MESSAGES = 0x2,
|
||||
ATTACH_FILES = 0x20,
|
||||
ADD_REACTIONS = 0x40,
|
||||
USE_SOUNDBOARD = 0x100,
|
||||
CONNECT_VOICE = 0x200,
|
||||
SPEAK_VOICE = 0x400,
|
||||
USE_VIDEO = 0x800,
|
||||
@@ -421,8 +420,6 @@ export interface VoiceScreensharePayload {
|
||||
readonly enabled: boolean;
|
||||
}
|
||||
|
||||
// Soundboard feature deferred — see TODOS.md
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Discriminated Union: Server → Client Messages
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
@@ -7,7 +7,6 @@ import {
|
||||
createPresenceLimiter,
|
||||
createReactionLimiter,
|
||||
createVoiceLimiter,
|
||||
createSoundboardLimiter,
|
||||
createChatLimiter,
|
||||
createVideoCameraLimiter,
|
||||
} from "@lib/rate-limiter";
|
||||
@@ -256,15 +255,6 @@ describe("Pre-configured limiters", () => {
|
||||
expect(limiter.tryConsume()).toBe(true);
|
||||
expect(limiter.tryConsume()).toBe(false);
|
||||
});
|
||||
|
||||
it("createSoundboardLimiter: 1 per 3s", () => {
|
||||
const limiter = createSoundboardLimiter();
|
||||
expect(limiter.tryConsume()).toBe(true);
|
||||
expect(limiter.tryConsume()).toBe(false);
|
||||
|
||||
vi.advanceTimersByTime(3_001);
|
||||
expect(limiter.tryConsume()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -281,7 +271,6 @@ describe("createRateLimiterSet", () => {
|
||||
"reactions",
|
||||
"voice",
|
||||
"voiceVideo",
|
||||
"soundboard",
|
||||
] as const;
|
||||
|
||||
for (const key of expectedKeys) {
|
||||
|
||||
@@ -213,8 +213,6 @@ describe("ClientMessage types", () => {
|
||||
payload: { message_id: 1, emoji: "👍" },
|
||||
};
|
||||
expect(reactionAdd.type).toBe("reaction_add");
|
||||
|
||||
// soundboard_play type removed — see TODOS.md
|
||||
});
|
||||
|
||||
it("includes voice mute type", () => {
|
||||
@@ -232,7 +230,6 @@ describe("Permission bitfield", () => {
|
||||
expect(P.READ_MESSAGES).toBe(0x2);
|
||||
expect(P.ATTACH_FILES).toBe(0x20);
|
||||
expect(P.ADD_REACTIONS).toBe(0x40);
|
||||
expect(P.USE_SOUNDBOARD).toBe(0x100);
|
||||
expect(P.CONNECT_VOICE).toBe(0x200);
|
||||
expect(P.SPEAK_VOICE).toBe(0x400);
|
||||
expect(P.USE_VIDEO).toBe(0x800);
|
||||
|
||||
@@ -352,7 +352,6 @@ const PERMS = [
|
||||
{ name:'Read Messages', bit:0x2 },
|
||||
{ name:'Attach Files', bit:0x20 },
|
||||
{ name:'Add Reactions', bit:0x40 },
|
||||
{ name:'Use Soundboard', bit:0x100 },
|
||||
{ name:'Connect Voice', bit:0x200 },
|
||||
{ name:'Speak Voice', bit:0x400 },
|
||||
{ name:'Use Video', bit:0x800 },
|
||||
|
||||
@@ -10,7 +10,6 @@ const (
|
||||
ReadMessages = int64(0x0002) // bit 1
|
||||
AttachFiles = int64(0x0020) // bit 5
|
||||
AddReactions = int64(0x0040) // bit 6
|
||||
UseSoundboard = int64(0x0100) // bit 8
|
||||
ConnectVoice = int64(0x0200) // bit 9
|
||||
SpeakVoice = int64(0x0400) // bit 10
|
||||
UseVideo = int64(0x0800) // bit 11
|
||||
|
||||
@@ -19,7 +19,6 @@ func TestPermissionBitValues(t *testing.T) {
|
||||
{"ReadMessages", permissions.ReadMessages, 0x0002},
|
||||
{"AttachFiles", permissions.AttachFiles, 0x0020},
|
||||
{"AddReactions", permissions.AddReactions, 0x0040},
|
||||
{"UseSoundboard", permissions.UseSoundboard, 0x0100},
|
||||
{"ConnectVoice", permissions.ConnectVoice, 0x0200},
|
||||
{"SpeakVoice", permissions.SpeakVoice, 0x0400},
|
||||
{"UseVideo", permissions.UseVideo, 0x0800},
|
||||
@@ -116,7 +115,7 @@ func TestHasPerm_AllBitsSet(t *testing.T) {
|
||||
allPerms := int64(0x7FFFFFFF)
|
||||
perms := []int64{
|
||||
permissions.SendMessages, permissions.ReadMessages, permissions.AttachFiles,
|
||||
permissions.AddReactions, permissions.UseSoundboard, permissions.ConnectVoice,
|
||||
permissions.AddReactions, permissions.ConnectVoice,
|
||||
permissions.SpeakVoice, permissions.UseVideo, permissions.ShareScreen,
|
||||
permissions.ManageMessages, permissions.ManageChannels, permissions.KickMembers,
|
||||
permissions.BanMembers, permissions.MuteMembers, permissions.ManageRoles,
|
||||
@@ -370,7 +369,7 @@ func TestRoleHierarchy_MemberHasBasicPerms(t *testing.T) {
|
||||
func TestPermissionBits_AreDistinctPowersOfTwo(t *testing.T) {
|
||||
bits := []int64{
|
||||
permissions.SendMessages, permissions.ReadMessages, permissions.AttachFiles,
|
||||
permissions.AddReactions, permissions.UseSoundboard, permissions.ConnectVoice,
|
||||
permissions.AddReactions, permissions.ConnectVoice,
|
||||
permissions.SpeakVoice, permissions.UseVideo, permissions.ShareScreen,
|
||||
permissions.ManageMessages, permissions.ManageChannels, permissions.KickMembers,
|
||||
permissions.BanMembers, permissions.MuteMembers, permissions.ManageRoles,
|
||||
|
||||
@@ -57,16 +57,6 @@ Deferred work items from engineering reviews.
|
||||
|
||||
## Deferred (from 2026-04-01 eng review — Open Source Ready)
|
||||
|
||||
### Soundboard Feature
|
||||
|
||||
**What:** Full-stack soundboard: sound upload/storage, playback to voice channel, UI component.
|
||||
**Why:** Community feature for voice channels. Protocol type was pre-defined but nothing else existed.
|
||||
**Pros:** Fun social feature for voice users. LiveKit supports audio injection.
|
||||
**Cons:** Requires server-side audio mixing or LiveKit Ingress API. Significant scope (1-2 weeks human / 3-4h CC).
|
||||
**Context:** Dead `SoundboardPlayPayload` protocol type removed in this PR. Feature needs: upload endpoint, storage, DB schema for sounds, playback handler, broadcast to voice participants, UI picker component. Consider LiveKit Ingress API for server-side audio injection.
|
||||
**Depends on:** Voice infrastructure (done), LiveKit integration (done).
|
||||
**Added:** 2026-04-01 (eng review of Open Source Ready plan)
|
||||
|
||||
### DM Sidebar Incremental Reconciliation
|
||||
|
||||
**What:** Replace O(n) DOM rebuild of DM sidebar with incremental reconciliation (differ/patch per DM item).
|
||||
|
||||
@@ -804,7 +804,6 @@ All rate limits are enforced server-side using a token bucket rate limiter.
|
||||
| `voice_camera` | 2/sec | Requires USE_VIDEO |
|
||||
| `voice_screenshare` | 2/sec | Requires SHARE_SCREEN |
|
||||
| `voice_token_refresh` | 1/60sec | Must be in voice |
|
||||
| `soundboard_play` | N/A | Not yet implemented server-side |
|
||||
| `ping` | None | Heartbeat |
|
||||
|
||||
### Server -> Client (25+ types)
|
||||
|
||||
@@ -354,7 +354,6 @@ Permissions are stored as an integer bitfield (31 bits used) in `roles.permissio
|
||||
| 1 | `0x2` | `READ_MESSAGES` | View messages in text channels |
|
||||
| 5 | `0x20` | `ATTACH_FILES` | Upload file attachments |
|
||||
| 6 | `0x40` | `ADD_REACTIONS` | Add emoji reactions |
|
||||
| 8 | `0x100` | `USE_SOUNDBOARD` | Play sounds in voice channels |
|
||||
| 9 | `0x200` | `CONNECT_VOICE` | Join voice channels |
|
||||
| 10 | `0x400` | `SPEAK_VOICE` | Transmit audio in voice channels |
|
||||
| 11 | `0x800` | `USE_VIDEO` | Enable camera in voice channels |
|
||||
|
||||
Reference in New Issue
Block a user