Skip to content

feat: new steam features (WIP)#520

Open
maxjivi05 wants to merge 17 commits into
WinNative-Emu:mainfrom
maxjivi05:steam-features
Open

feat: new steam features (WIP)#520
maxjivi05 wants to merge 17 commits into
WinNative-Emu:mainfrom
maxjivi05:steam-features

Conversation

@maxjivi05

Copy link
Copy Markdown
Contributor

No description provided.

maxjivi05 added 3 commits June 5, 2026 22:12
…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).

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread app/src/main/feature/stores/steam/service/SteamService.kt Outdated
Comment thread app/src/main/cpp/wn-steam-client/rust/src/pb/cfriendmessages.rs Outdated
…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).
maxjivi05 added 7 commits June 5, 2026 23:06
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant