Skip to content

Unify OpenNOW GFN identity to desktop everywhere#348

Open
zortos293 wants to merge 1 commit intodevfrom
capy/unify-desktop-gfn-identity
Open

Unify OpenNOW GFN identity to desktop everywhere#348
zortos293 wants to merge 1 commit intodevfrom
capy/unify-desktop-gfn-identity

Conversation

@zortos293
Copy link
Copy Markdown
Collaborator

@zortos293 zortos293 commented Apr 22, 2026

This PR unifies all GeForce NOW client-facing requests to identify as the Windows desktop GFN client (native/NVIDIA-CLASSIC) instead of mixing browser/web personas and platform-specific identities.

New shared identity module (src/main/gfn/clientIdentity.ts)

  • Added canonical desktop GFN constants: GFN-PC, NATIVE, NVIDIA-CLASSIC, WINDOWS, desktop UA, origin/referer
  • Added buildDesktopGfnHeaders() helper for consistent request headers with optional token, origin, browser-type, and device details
  • Added buildDesktopCloudMatchIdentity() helper for session body identity fields

Refactored modules

  • auth.ts: getRegions() and getVpcId() now use desktop NATIVE/NVIDIA-CLASSIC headers instead of BROWSER/WEBRTC
  • subscription.ts: fetchSubscription() and fetchDynamicRegions() now use shared desktop headers
  • games.ts: GraphQL requests and VPC lookup now use shared desktop headers and GFN-PC constant
  • cloudmatch.ts: Request headers centralized through shared builder, removing process.platform OS drift; session-create and session-resume bodies use shared identity helpers
  • signaling.ts: WebSocket handshake now uses desktop GFN UA and origin constants

Switched GFN-facing paths to desktop/native identity

  • MES API (/v4/subscriptions) now presents as desktop NATIVE/NVIDIA-CLASSIC
  • Dynamic regions (/v2/serverInfo) in auth.ts now presents as desktop NATIVE/NVIDIA-CLASSIC
  • CloudMatch create, poll, and claim requests now use uniform Windows desktop headers with no platform branching
  • Signaling websocket now presents as desktop GFN client

Intentional exception

  • Kept CloudMatch GSStreamerType: "WebRTC" as transport metadata (documented in shared module) since it describes the negotiated stream, not the client persona

Open OPE-076 OPE-076

@zortos293 zortos293 added the capy Generated by capy.ai label Apr 22, 2026 — with Capy AI
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

capy Generated by capy.ai

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant