Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
4b66a39
add voice module, deps, wip models
llsc12 Feb 19, 2026
d49fcc1
more voice models
llsc12 Feb 19, 2026
f942d4d
clean up
llsc12 Feb 19, 2026
a820da1
added gateway actor, not ready yet tho
llsc12 Feb 20, 2026
4cf68cb
more work
llsc12 Feb 21, 2026
61a4263
Merge branch 'main' into voice
llsc12 Feb 21, 2026
8d412d3
test
llsc12 Feb 22, 2026
c9e96ae
fix builds
llsc12 Feb 22, 2026
15d959a
Squashed commit of the following:
llsc12 Feb 22, 2026
ef52d96
fix ios builds
llsc12 Feb 22, 2026
753c916
clean up, add dave work, tests
llsc12 Feb 23, 2026
5075107
max dave version
llsc12 Feb 23, 2026
1cf1c9a
more udp work
llsc12 Feb 23, 2026
2917dc6
add dave session handling
llsc12 Feb 23, 2026
8a767b5
i think my outbound code is wrong
llsc12 Feb 23, 2026
0e66982
wip app side voice stuff
llsc12 Feb 24, 2026
5645ece
dont forget to identify
llsc12 Feb 24, 2026
d4da406
connection doesnt always work
llsc12 Feb 24, 2026
368e7e4
voice gateway working
llsc12 Feb 24, 2026
d5aea9d
temporary leave button
llsc12 Feb 25, 2026
5be2f71
fix udp stuff, fix ip discovery
llsc12 Feb 25, 2026
bfe23ed
weird crash with libdave
llsc12 Feb 25, 2026
bf98f17
the crypto stuff is fixed
llsc12 Mar 3, 2026
9e6664f
Update VoiceGatewayManager.swift
llsc12 Mar 3, 2026
35a5599
forgot to encode opcode, works now
llsc12 Mar 3, 2026
6299376
fix a bunch of logical issues, fix sending audio packets, send silent…
llsc12 Mar 4, 2026
b8bcdf2
fix crypto
llsc12 Mar 5, 2026
dc7a63c
wip voice working
llsc12 Mar 5, 2026
8b20bbc
dont schedule buffers on main thread
llsc12 Mar 7, 2026
e3fade7
emit opus packets directly, emit fake speaking events
llsc12 Mar 7, 2026
56d79fa
voice states
llsc12 Mar 7, 2026
88aa05d
Update VoiceGatewayManager.swift
llsc12 Mar 7, 2026
6001c74
init decoder and player node per ssrc
llsc12 Mar 7, 2026
12ab4de
fix missing sendable payload
llsc12 Mar 7, 2026
3b6303f
add audio receive buffer
llsc12 Mar 7, 2026
e990997
fix encryption nonce, add additional data to chacha
llsc12 Mar 11, 2026
34f7ee4
paicordlib add dave ssrc codec info, better buffering impl, get rid o…
llsc12 Mar 11, 2026
c182f07
working bidirectional audio
llsc12 Mar 11, 2026
bde09a4
buffer per incoming stream
llsc12 Mar 11, 2026
5fe71f9
fix changing channels whilst in a channel
llsc12 Mar 11, 2026
7f7623f
Update VoiceConnectionStore.swift
llsc12 Mar 12, 2026
42ca30e
disconnect on another client connecting
llsc12 Mar 12, 2026
8b1e6ff
fix member row popout
llsc12 Mar 12, 2026
6f758a5
add voice states to guild
llsc12 Mar 12, 2026
7cdc426
expose guild and channel stores, voice channel members, call bar
llsc12 Mar 12, 2026
ddd4160
request member data
llsc12 Mar 12, 2026
d42b3d5
fix disconnection bug, fix weird voice channel spacing
llsc12 Mar 13, 2026
0525f9d
make call bar nicer
llsc12 Mar 14, 2026
65aaef7
change how navigation works
llsc12 Mar 16, 2026
90514e0
wip voice ui
llsc12 Mar 17, 2026
11f2c62
permissions
llsc12 Mar 17, 2026
a3d771a
fixes
llsc12 Mar 17, 2026
81e7b2c
fix dms button
llsc12 Mar 18, 2026
e7ccd8c
point links away from discordbm's issues
llsc12 Mar 18, 2026
ad0a4fb
discord can send no name for connected accounts
llsc12 Mar 18, 2026
de68d6c
Update VoiceGatewayManager.swift
llsc12 Mar 18, 2026
3c58754
ringing
llsc12 Mar 18, 2026
50a9be0
calls (dm vc) support, wip call ui
llsc12 Mar 18, 2026
ee443c1
fixes to channel order, dms ui wip
llsc12 Mar 23, 2026
805e65d
localisation fixes?
llsc12 Mar 29, 2026
b8b0519
Update .gitignore
llsc12 Mar 30, 2026
9b0d9b8
update superprops
llsc12 Apr 14, 2026
1a40cfc
watchos fixes
llsc12 May 7, 2026
c531018
Update Audit Log.swift
llsc12 May 7, 2026
7772303
Merge branch 'main' into voice
ssalggnikool May 9, 2026
f8371e3
64 bit int usage
llsc12 May 9, 2026
ebcc2a6
Update Channel.swift
llsc12 May 10, 2026
8b85e31
Update Snowflake.swift
llsc12 May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ Package.resolved
**/*.xcuserstate
/.gradle
/.idea
/PaicordKt/.idea
/PaicordLib/build
/build
local.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<key>DiscordMarkdownParser.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
<integer>4</integer>
</dict>
</dict>
</dict>
Expand Down
15 changes: 12 additions & 3 deletions DiscordMarkdownParser/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ let package = Package(
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "DiscordMarkdownParser",
targets: ["DiscordMarkdownParser"])
targets: ["DiscordMarkdownParser"]
)
],
dependencies: [
.package(path: "../PaicordLib")
Expand All @@ -24,9 +25,17 @@ let package = Package(
name: "DiscordMarkdownParser",
dependencies: [
"PaicordLib"
]),
],
swiftSettings: [
.interoperabilityMode(.Cxx)
]
),
.testTarget(
name: "DiscordMarkdownParserTests",
dependencies: ["DiscordMarkdownParser"]),
dependencies: ["DiscordMarkdownParser"],
swiftSettings: [
.interoperabilityMode(.Cxx)
]
),
]
)
327 changes: 327 additions & 0 deletions Feature Checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,327 @@
# Feature Checklist

Add features as needed, add features we haven't implemented yet so people can know what to work on!

## Core Architecture
- [x] REST API client
- [x] Gateway (WebSocket) connection
- [x] Gateway reconnect + resume
- [x] Rate limit handling
- [x] Event dispatcher system
- [x] Captcha handling
- [x] Super-properties
- [x] Error handling + retry logic
- [x] CDN asset fetching (avatars, attachments, emojis etc.)

---

# Authentication & Account

## Login / Auth
- [x] Login email-password
- [x] 2FA support
- [x] Token refresh
- [x] Multi-account support
- [x] Account switching

## Account Settings
- [ ] Change username
- [ ] Change avatar
- [ ] Change banner
- [ ] Change bio / profile fields
- [ ] Email / password change
- [ ] Language settings
- [ ] Theme settings
- [ ] Accessibility settings

## User Profiles
- [x] View profile
- [ ] Mutual servers
- [ ] Mutual friends
- [ ] Custom status
- [x] Activity / presence display
- [x] Profile badges

---

# Friends & Social

## Friends
- [ ] Send friend request
- [ ] Accept / reject friend request
- [ ] Cancel outgoing request
- [ ] Remove friend
- [ ] Friend list UI
- [x] Online / offline indicators

## Blocks
- [ ] Block user
- [ ] Unblock user
- [ ] Block list

## Relationships
- [ ] Incoming requests
- [ ] Outgoing requests

---

# Presence System

- [x] Online / Idle / DND / Invisible
- [ ] Custom status
- [ ] Activity presence
- [ ] Rich presence display
- [ ] Streaming status
- [ ] Game activity

---

# Messaging

## Direct Messages
- [x] Open DM
- [ ] Create DM channel
- [x] Group DMs
- [ ] Leave group DM
- [ ] Rename group DM
- [ ] Add / remove participants

## Sending Messages
- [x] Send text message
- [x] Edit message
- [x] Delete message
- [x] Reply to message
- [ ] Message forwarding
- [ ] Entity autocompletions (mentions, commands etc.)

## Message Content
- [x] Markdown formatting
- [x] Rich embeds
- [x] Mentions
- [x] Role mentions
- [x] Channel mentions
- [x] Custom emoji
- [x] Unicode emoji
- [x] Stickers
- [ ] Attach files
- [x] Image embeds
- [x] Link previews
- [ ] Spoiler tags
- [x] Code blocks

## Message Reactions

- [ ] Create reaction
- [x] Add reaction
- [x] Remove reaction
- [ ] Reaction picker
- [x] Reaction counts

## Message Interaction
- [ ] Buttons
- [ ] Select menus
- [ ] Slash command responses
- [ ] Modals
- [ ] Components V2

## Message Threads
- [ ] Create thread
- [ ] Join thread
- [ ] Leave thread
- [ ] Archive thread
- [ ] Thread list

## Message Management
- [ ] Pin message
- [ ] Unpin message
- [ ] Message search
- [ ] Jump to message
- [ ] Message history pagination

---

# Notifications

- [ ] Local notifications
- [ ] Notification badges
- [ ] Mention notifications
- [ ] Role mention notifications
- [ ] Thread notifications
- [ ] Per-channel notification settings
- [ ] Do Not Disturb
- [ ] iOS persistent background gateway connection

---

# Servers (Guilds)

## Guild Basics
- [ ] Create server
- [ ] Join server
- [ ] Leave server
- [ ] Delete server
- [ ] Server invite links

## Server Settings
- [x] Server name / icon
- [x] Server banner
- [ ] Server description
- [ ] Community settings
- [ ] Verification level
- [ ] Moderation settings

## Members
- [x] Member list
- [ ] Member search
- [x] Member roles display
- [ ] Member join / leave events
- [ ] Kick member
- [ ] Ban member
- [ ] Timeout member

## Roles
- [ ] Create role
- [ ] Edit role
- [ ] Delete role
- [ ] Assign role
- [ ] Role permissions

## Channels
- [ ] Create channel
- [ ] Edit channel
- [ ] Delete channel
- [ ] Channel categories
- [ ] Channel permissions

## Channel Types
- [ ] Text channels
- [ ] Voice channels
- [ ] Stage channels
- [ ] Forum channels
- [ ] Announcement channels

---

# Voice & Video

## Voice Connection
- [x] Join voice channel
- [x] Leave voice channel
- [x] Voice gateway connection
- [x] Voice transport encryption
- [x] Voice DAVE E2EE support

## Voice Controls
- [ ] Mute
- [ ] Deafen
- [ ] Push-to-talk
- [ ] Voice activity detection
- [ ] Input device selection
- [ ] Output device selection
- [ ] Volume control

## Voice Features
- [ ] Video calls
- [ ] Screen sharing
- [ ] Stream viewing
- [ ] Camera toggle
- [ ] Noise suppression

## Voice Moderation
- [ ] Server mute
- [ ] Server deafen
- [ ] Move user
- [ ] Disconnect user

---

# Media & Assets

- [x] Image attachments
- [x] Video attachments
- [x] File uploads
- [x] File downloads
- [x] Animated GIF support
- [x] CDN caching
- [x] Avatar rendering
- [x] Emoji rendering
- [x] Sticker rendering

---

# Emojis & Stickers

- [ ] Server emoji list
- [ ] Upload emoji
- [ ] Delete emoji
- [ ] Emoji/Sticker/GIF picker component

---

# Search & Discovery

- [ ] Message search
- [ ] Server search
- [ ] Channel search
- [ ] Member search
- [ ] Emoji search
- [ ] GIF search

---

# Moderation

- [ ] Audit log viewer
- [ ] Message delete logging
- [ ] Ban list
- [ ] Timeout system
- [ ] Slow mode
- [ ] Auto moderation

---

# Integrations

- [ ] Slash commands
- [ ] Application commands
- [ ] Webhooks
- [ ] External integrations

---

# Events

- [ ] Scheduled events
- [ ] Event creation
- [ ] Event reminders
- [ ] Event management

---

# UI / Client

## Layout
- [x] Server list
- [x] Channel list
- [x] Member list
- [x] Chat view
- [ ] Thread sidebar

## UI Features
- [x] Dark mode
- [x] Light mode
- [ ] Theme customization
- [ ] Compact mode
- [x] Font scaling
- [ ] Accessibility features

---

# Advanced Features

- [ ] Message drafts
- [x] Typing indicators
- [ ] Read receipts
- [ ] Read state sync
- [x] Message queue
- [ ] Custom themes
Loading
Loading