Skip to content

Commit 6c73185

Browse files
committed
Merge branch 'main' into pr/6247
2 parents 1450840 + 8d380d0 commit 6c73185

File tree

6 files changed

+107
-8
lines changed

6 files changed

+107
-8
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: "Discord Social SDK Release 1.4"
3+
date: "2025-06-26"
4+
topics:
5+
- "Discord Social SDK"
6+
---
7+
8+
A new release of the Discord Social SDK is now available, with the following updates:
9+
10+
### Lobby Chat History
11+
12+
- Added [`Client::GetLobbyMessagesWithLimit`] to retrieve lobby message histories based on a provided lobby ID, with a
13+
maximum of 200 messages and up to 72 hours.
14+
- Only messages from lobbies the user is currently a member of can be retrieved.
15+
- DM history will be coming soon too!
16+
17+
### Unified Friends List
18+
19+
- Added [`Client::GetRelationshipsByGroup`] which both logically groups a user’s relationships for the purpose of
20+
rendering a friends list and sorts users based on
21+
our [Unified Friends List design guidelines](/docs/discord-social-sdk/design-guidelines/unified-friends-list).
22+
Before, it was necessary to call [`Client::GetRelationships`] and manually partition each relationship into the
23+
appropriate friend group, as well as write your own sorting operations.
24+
- Added [`Client::SetRelationshipGroupsUpdatedCallback`] which fires whenever a user change occurs which could invalidate
25+
a previously sorted friends list retrieved from [`Client::GetRelationshipsByGroup`]. Call
26+
[`Client::GetRelationshipsByGroup`] again to maintain an up-to-date friends list.
27+
- Added `IsSpamRequest` to [`RelationshipHandle`], returns `true` if Discord believes the request to be spam.
28+
29+
### Audio Changes
30+
31+
- A new experimental audio mode has been added for mobile devices which uses standard media audio streams instead of
32+
voice-specific processing. On iOS this causes the voice engine to use the Remote I/O Audio Unit instead of Voice
33+
Processing I/O and likewise on Android, media stream types are used instead of voice communication types. This mode
34+
may be enabled by creating a Client with a [`ClientCreateOptions`] parameter whose `experimentalAudioSystem`
35+
property is
36+
set to `AudioSystem::Game`. In this case, you should also set [`Client::SetEngineManagedAudioSession`] to true. **We do
37+
not recommend using this for production** - however, if you are interested in trying it out, we are looking for
38+
feedback!
39+
- Added [`Client::SetAecDump`] to enable recording of audio diagnostic information.
40+
41+
### Auth
42+
43+
- Publisher Auth
44+
- Publisher Auth is a new feature which makes authorization easier for publishers with multiple games. This is an
45+
early release of this feature and only available to a limited number of partners for now.
46+
- Added [`Client::ExchangeChildToken`] to facilitate child token exchange for public clients. Confidential clients
47+
will require a server to server implementation, but this method may be useful for development.
48+
- Invites from sibling applications will be visible to the SDK. They can be identified by the `applicationId` field
49+
on the [`ActivityInvite`] payload.
50+
- Messages sent from other sibling applications will be visible to the SDK. They can be identified by the
51+
`ApplicationId` method on the [`MessageHandle`].
52+
- Added [`Client::RevokeToken`] and [`Client::UnmergeIntoProvisionalAccount`] to allow games leveraging Public Clients to
53+
perform token revocation or unmerge operations directly from clients.
54+
55+
### Android
56+
57+
- The SDK is now compatible with 16KB page size.
58+
59+
### Misc
60+
61+
- Improved activity serialization, avoiding including null/empty keys in the JSON payload.
62+
63+
<!-- Autogenerated Reference Links -->
64+
[`ActivityInvite`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ActivityInvite.html#af980f140c1459e1cd8f6ef3f3c07547c
65+
[`Client::ExchangeChildToken`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a59f5d9d14f79eb318bf4d57f4e87a5c1
66+
[`Client::GetLobbyMessagesWithLimit`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a0586192e85caf548b8b321f1cb21301f
67+
[`Client::GetRelationships`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ad481849835cd570f0e03adafcf90125d
68+
[`Client::GetRelationshipsByGroup`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a9f7898d3f3d1ec92b06c662df70746d5
69+
[`Client::RevokeToken`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a30ccea6366efaf0b884efcdcc28a6f2d
70+
[`Client::SetAecDump`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a3a05b2cafaa546d915a5249c63f4059f
71+
[`Client::SetEngineManagedAudioSession`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ade08897214152b9acfa79c263e77e366
72+
[`Client::SetRelationshipGroupsUpdatedCallback`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#af12441ef091298f968075b7190851098
73+
[`Client::UnmergeIntoProvisionalAccount`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a2da21ae8a3015e0e5e42c1a7226b256f
74+
[`ClientCreateOptions`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#ae655ad66ba64f443496c158307cc77b4
75+
[`MessageHandle`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1MessageHandle.html#ae25595b43bc74b0c4c92c5165d16382f
76+
[`RelationshipHandle`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1RelationshipHandle.html#a7da36b15ad0b7d38ba658a622e9ded77

docs/discord-social-sdk/design-guidelines/unified-friends-list.mdx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,23 @@ By following this guide, you will learn how to:
1717

1818
These design guidelines are intended to help you create a seamless and intuitive friends list that leverages Discord's social features to their fullest potential. Let's get started!
1919

20+
---
21+
## Figma File - The Social SDK: Friend List Starter Pack
22+
23+
We’ve created a Figma resource with a templated design-system of building out your game's friends list. Change
24+
various components to match your game’s visual-language, and see it update in realtime. We’ve also tossed in a
25+
few common use-cases, as well as an example of one of our partnered games, SUPERVIVE.
26+
27+
We'd love your feedback! Join [Discord Developers Server](https://discord.gg/discord-developers) and create a post in
28+
the `#social-sdk-dev-help` channel if you would like to see more resources like this, or if you have suggestions
29+
for improvement.
30+
31+
[![starter pack](images/social-sdk/design-guidelines/starter_pack.webp)](https://www.figma.com/community/file/1512487996808869592/the-social-sdk-friend-list-starter-pack)
32+
33+
[See Figma Resource↗](https://www.figma.com/community/file/1512487996808869592/the-social-sdk-friend-list-starter-pack)
34+
35+
---
36+
2037
## Sectioning
2138

2239
Sections are ordered by descending availability to help users find friends they can play with.
@@ -27,7 +44,7 @@ The **Online — Elsewhere** section shows friends who are online but not in the
2744

2845
![Sectioning Friends List](images/social-sdk/design-guidelines/UFL-02.png)
2946

30-
## Discord = Communication
47+
## Discord = Communication
3148

3249
Show the Discord badge next to a player's name when they are **online elsewhere** and have **connected their Discord** account. Provisional accounts will not have a badge.
3350

@@ -83,12 +100,14 @@ Avoid friend-lists organized by company. This hierarchy dilutes the value-prop o
83100

84101
---
85102

86-
## Resources
103+
## Resources
87104

88105
- [Development Guide: Creating a Unified Friends List](/docs/discord-social-sdk/development-guides/creating-a-unified-friends-list)
106+
- [Figma File - The Social SDK: Friend List Starter Pack ↗](https://www.figma.com/community/file/1512487996808869592/the-social-sdk-friend-list-starter-pack)
89107

90108
## Change Log
91109

92-
| Date | Changes |
93-
|----------------|-----------------|
94-
| March 17, 2025 | initial release |
110+
| Date | Changes |
111+
|----------------|------------------------------|
112+
| June 25, 2025 | Added Figma UFL starter pack |
113+
| March 17, 2025 | initial release |

docs/resources/invite.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Represents a code that when used, adds a user to a guild or group DM channel.
2424
| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/<code>` endpoint when `with_counts` is `true` |
2525
| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/<code>` endpoint when `with_expiration` is `true` |
2626
| stage_instance? | [invite stage instance](/docs/resources/invite#invite-stage-instance-object) object | stage instance data if there is a [public Stage instance](/docs/resources/stage-instance) in the Stage channel this invite is for (deprecated) |
27-
| guild-scheduled-event? | [guild scheduled event](/docs/resources/guild-scheduled-event#guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id |
27+
| guild_scheduled_event? | [guild scheduled event](/docs/resources/guild-scheduled-event#guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id |
2828
| flags? | integer | [guild invite flags](#DOCS_RESOURCES_INVITE/invite-object-guild-invite-flags) for guild invites |
2929

3030
###### Invite Types
8.75 KB
Loading

tools/checkLinks.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ for (const [name, raw] of docFiles) {
180180
if (!match.groups) continue;
181181
const [page, anchor] = match.groups?.link.split("#") ?? [];
182182
if (!validLinks.has(page)) {
183+
// Automatically ignore links with "image/" as the prefix, since the link checker is not designed to validate images.
184+
if (page.startsWith("images/")) continue;
185+
183186
ownResults.push({
184187
title: `Base url ${chalk.blueBright(page)} does not exist`,
185188
startLine: lineNum + 1,

tools/doxygen/social-sdk-mappings.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@
197197
"discordpp::Client::GetOutputVolume": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a7a6696f8d4a101f45bfd41e55d221333",
198198
"discordpp::Client::GetSelfDeafAll": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ac1e26e0b769557da89a7f1d7c09f1487",
199199
"discordpp::Client::GetSelfMuteAll": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#adf4c02ceb03ab34f2c1c621bfc407cda",
200+
"discordpp::Client::SetAecDump": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a3a05b2cafaa546d915a5249c63f4059f",
200201
"discordpp::Client::SetAutomaticGainControl": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a818ae7f46b5bd3873dcd51dd3d9fa64d",
201202
"discordpp::Client::SetDeviceChangeCallback": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a31f683bd8df9f6fdcc384e4678301ef0",
202203
"discordpp::Client::SetEchoCancellation": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a1def244b7ecd388902ba5256ce506ca3",
@@ -342,8 +343,8 @@
342343
"discordpp::ClientCreateOptions::SetWebBase": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#aef30d2e0aaae55cf363ce22606b6b857",
343344
"discordpp::ClientCreateOptions::ApiBase": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#ab75bc5cb2fba2679be638eaa77d33b53",
344345
"discordpp::ClientCreateOptions::SetApiBase": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#ab8ea2ea26aafb92ebd54b443ae839595",
345-
"discordpp::ClientCreateOptions::AudioSystem": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#a2965c481492c574a5e21a367e088763f",
346-
"discordpp::ClientCreateOptions::SetAudioSystem": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#a893772a868a6df65203d842aa80dc5d3",
346+
"discordpp::ClientCreateOptions::ExperimentalAudioSystem": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#a4a5859333e09347aef91f9bbda4ca08b",
347+
"discordpp::ClientCreateOptions::SetExperimentalAudioSystem": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#adfd12e55eff0ae99f54b336f8d256770",
347348
"discordpp::ClientResult::ClientResult": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientResult.html#a685015ca8d29a50d47fd1ed5d469ac2e",
348349
"discordpp::ClientResult::operator=": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientResult.html#ab04a08a811079846f4c963d733e806de",
349350
"discordpp::ClientResult::operator bool": "https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientResult.html#ad719dc037d1c61b9b33499f85af9e884",

0 commit comments

Comments
 (0)