feat: new steam features (WIP)#520
Open
maxjivi05 wants to merge 17 commits into
Open
Conversation
…oin game Steam Friends: - Right swipe-out drawer (Compose M3) mirroring the left drawer, with self status header, avatars, and In-Game/Online/Offline grouping. - Live friend presence: logon sends protocol_version, ChangeStatus with persona_set_by_user/need_persona_response, and subscribes via Chat.RequestFriendPersonaStates so Steam pushes stateful persona updates. - Wire-type-aware CMsgClientPersonaState parser (field 25 arrives as a fixed64 in stateful pushes); has_persona_state/has_game guards keep metadata-only responses from clobbering live state, game name, and app id. - In-game friends show a compact card with a text-height game-art capsule and the resolved game title beside it (title from the local app DB, then the public store API, since Steam omits game_name for Steam apps). - The redundant self-status section was removed from the left filter drawer. Steam Messages: - FriendMessages protobufs (SendMessage, GetRecentMessages, IncomingMessage) plus JNI for send, history, and a drainable incoming queue fed by the FriendMessagesClient.IncomingMessage notification. - Compose M3 chat screen with history, real-time incoming, optimistic send dedup, and avatars. - Image attachments: system photo picker -> Steam chat UGC upload (beginfileupload/PUT/commitfileupload with a minted web access token, file_type=MIME) delivered to the friend. Renders [img], [img src=...], and bare images.steamusercontent.com/ugc image URLs. Steam Achievements: - Trophy button on the game launch screen between Settings and Create Shortcut, opening a Compose M3 achievements screen with icons, names, descriptions, X/Y progress, and unlock dates. - Overlay the user's real unlock state from CMsgClientGetUserStatsResponse achievement blocks onto the schema-derived definitions. Join Game: - Join button on joinable in-game friends launches their game (when owned and installed) with the connect string appended to the Steam launch args (ColdClient ExeCommandLine and the Goldberg arg path). Launch options: - Steam-style %command% launch options: KEY=VALUE tokens before %command% become environment variables for the game process; arguments after %command% are passed to the game. Added a "Steam (%command%)" preset. Localization: - All new user-facing strings extracted to resources and translated across all 15 supported locales (da, de, es, fr, hi, it, ko, pl, pt-BR, ro, ru, uk, zh-CN, zh-TW, plus English).
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c93bf0ad4b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…oin game Steam Friends: - Right swipe-out drawer (Compose M3) mirroring the left drawer, with self status header, avatars, and In-Game/Online/Offline grouping. - Live friend presence: logon sends protocol_version, ChangeStatus with persona_set_by_user/need_persona_response, and subscribes via Chat.RequestFriendPersonaStates so Steam pushes stateful persona updates. - Wire-type-aware CMsgClientPersonaState parser (field 25 arrives as a fixed64 in stateful pushes); has_persona_state/has_game guards keep metadata-only responses from clobbering live state, game name, and app id. - In-game friends show a compact card with a text-height game-art capsule and the resolved game title beside it (title from the local app DB, then the public store API, since Steam omits game_name for Steam apps). - The redundant self-status section was removed from the left filter drawer. Steam Messages: - FriendMessages protobufs (SendMessage, GetRecentMessages, IncomingMessage) plus JNI for send, history, and a drainable incoming queue fed by the FriendMessagesClient.IncomingMessage notification. - Compose M3 chat screen with history, real-time incoming, optimistic send dedup, and avatars. - Image attachments: system photo picker -> Steam chat UGC upload (beginfileupload/PUT/commitfileupload with a minted web access token, file_type=MIME) delivered to the friend. Renders [img], [img src=...], and bare images.steamusercontent.com/ugc image URLs. Steam Achievements: - Trophy button on the game launch screen between Settings and Create Shortcut, opening a Compose M3 achievements screen with icons, names, descriptions, X/Y progress, and unlock dates. - Overlay the user's real unlock state from CMsgClientGetUserStatsResponse achievement blocks onto the schema-derived definitions. Join Game: - Join button on joinable in-game friends launches their game (when owned and installed) with the connect string appended to the Steam launch args (ColdClient ExeCommandLine and the Goldberg arg path). Launch options: - Steam-style %command% launch options: KEY=VALUE tokens before %command% become environment variables for the game process; arguments after %command% are passed to the game. Added a "Steam (%command%)" preset. Localization: - All new user-facing strings extracted to resources and translated across all 15 supported locales (da, de, es, fr, hi, it, ko, pl, pt-BR, ro, ru, uk, zh-CN, zh-TW, plus English).
Settings gear in the friends drawer self-status row opens a Chat Settings dialog: Chat Notifications, Chat Heads, Auto-Hide, and Enable Chat in Game. - Global incoming-message pipeline in SteamService: a single poller drains messages and re-publishes via a SharedFlow plus per-friend unread counts, consumed by the chat screen, system notifications, and the chat-head overlay. - System notifications (high-importance channel) for incoming friend messages. - Messenger-style chat heads: a draggable system-overlay bubble that snaps to any screen edge, fades when idle (Auto-Hide), shows an unread badge, and un-hides on a new message; tapping pops a panel beside the head with the full friends list (game-art badges) and a conversation view (text + image send via a transparent picker proxy). Works over games when Enable Chat in Game is on. - In-game gating via GameSessionState; orientation-aware re-snapping.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.