Skip to content

Commit 0e8abc9

Browse files
author
lijiahao
committed
1.5.0
1 parent a81ef93 commit 0e8abc9

20 files changed

+129
-24
lines changed

app/background.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15983,7 +15983,7 @@ module.exports = path.URL;
1598315983
/***/ ((module) => {
1598415984

1598515985
"use strict";
15986-
module.exports = /*#__PURE__*/JSON.parse('{"private":true,"name":"xstreaming","description":"xstreaming","version":"1.4.0","author":"Geocld <lijiahao5372@gmail.com>","main":"app/background.js","scripts":{"dev":"DEBUG=xstreaming:authenticationV2 nextron","build":"nextron build","lint":"eslint . --ext .ts && eslint renderer/ --ext .tsx","lint:fix":"eslint . --ext .ts --fix && eslint renderer/ --ext .tsx --fix","postinstall":"electron-builder install-app-deps","publish":"electron-builder -p onTag","flatpak-build":"nextron build --no-pack && electron-builder --dir"},"dependencies":{"@nextui-org/react":"^2.4.6","axios":"^1.7.7","compare-versions":"^6.1.0","debounce":"^2.1.1","debug":"^4.3.4","electron-serve":"^1.3.0","electron-store":"^8.0.1","express":"^4.18.3","express-http-proxy":"^2.0.0","express-ws":"^5.0.2","framer-motion":"^11.5.4","github-url-to-object":"^4.0.6","i18next":"23.14.0","ip-address":"^9.0.5","jose":"^5.1.0","moment":"^2.30.1","next-i18next":"^15.3.1","next-themes":"^0.3.0","react-i18next":"^15.0.1","react-query":"^3.39.3","semver":"^7.6.3","uplot":"^1.6.30","uuid-1345":"^1.0.2","xbox-webapi":"^1.4.1","xstreaming-player":"0.2.6","xvfb-maybe":"^0.2.1"},"devDependencies":{"@babel/core":"^7.24.4","@fortawesome/fontawesome-free":"^6.5.1","@next/eslint-plugin-next":"^14.2.2","@types/node":"^20.12.7","@types/react":"^18.2.47","@typescript-eslint/eslint-plugin":"^8.6.0","@typescript-eslint/parser":"^8.6.0","autoprefixer":"^10.4.20","babel-loader":"^9.1.3","electron":"33","electron-builder":"^24.13.3","eslint":"^8.57.0","eslint-plugin-react-hooks":"^4.6.2","eslint-plugin-react-refresh":"^0.4.12","next":"^13.5.6","nextron":"^8.13.0","node-loader":"^2.0.0","postcss":"^8.4.45","react":"^18.1.0","react-dom":"^18.1.0","sass":"^1.78.0","tailwindcss":"^3.4.10","typescript":"^5.3.3"},"packageManager":"yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"}');
15986+
module.exports = /*#__PURE__*/JSON.parse('{"private":true,"name":"xstreaming","description":"xstreaming","version":"1.4.0","author":"Geocld <lijiahao5372@gmail.com>","main":"app/background.js","scripts":{"dev":"DEBUG=xstreaming:authenticationV2 nextron","build":"nextron build","lint":"eslint . --ext .ts && eslint renderer/ --ext .tsx","lint:fix":"eslint . --ext .ts --fix && eslint renderer/ --ext .tsx --fix","postinstall":"electron-builder install-app-deps","publish":"electron-builder -p onTag","flatpak-build":"nextron build --no-pack && electron-builder --dir"},"dependencies":{"@nextui-org/react":"^2.4.6","axios":"^1.7.7","compare-versions":"^6.1.0","debounce":"^2.1.1","debug":"^4.3.4","electron-serve":"^1.3.0","electron-store":"^8.0.1","express":"^4.18.3","express-http-proxy":"^2.0.0","express-ws":"^5.0.2","framer-motion":"^11.5.4","github-url-to-object":"^4.0.6","i18next":"23.14.0","ip-address":"^9.0.5","jose":"^5.1.0","moment":"^2.30.1","next-i18next":"^15.3.1","next-themes":"^0.3.0","react-i18next":"^15.0.1","react-query":"^3.39.3","semver":"^7.6.3","uplot":"^1.6.30","uuid-1345":"^1.0.2","xbox-webapi":"^1.4.1","xstreaming-player":"0.2.7","xvfb-maybe":"^0.2.1"},"devDependencies":{"@babel/core":"^7.24.4","@fortawesome/fontawesome-free":"^6.5.1","@next/eslint-plugin-next":"^14.2.2","@types/node":"^20.12.7","@types/react":"^18.2.47","@typescript-eslint/eslint-plugin":"^8.6.0","@typescript-eslint/parser":"^8.6.0","autoprefixer":"^10.4.20","babel-loader":"^9.1.3","electron":"33","electron-builder":"^24.13.3","eslint":"^8.57.0","eslint-plugin-react-hooks":"^4.6.2","eslint-plugin-react-refresh":"^0.4.12","next":"^13.5.6","nextron":"^8.13.0","node-loader":"^2.0.0","postcss":"^8.4.45","react":"^18.1.0","react-dom":"^18.1.0","sass":"^1.78.0","tailwindcss":"^3.4.10","typescript":"^5.3.3"},"packageManager":"yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"}');
1598715987

1598815988
/***/ })
1598915989

app/preload.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flatpak/io.github.Geocld.XStreamingDesktop.metainfo.xml

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,40 @@
77
<developer_name>Geocld</developer_name>
88
<summary>XStreaming is an open-source client for xCloud and Xbox home streaming</summary>
99
<metadata_license>CC0-1.0</metadata_license>
10-
<url type="homepage">https://github.com/Geocld/XStreaming-desktop</url>
11-
<url type="help">https://github.com/Geocld/XStreaming-desktop/issues</url>
12-
<url type="bugtracker">https://github.com/Geocld/XStreaming-desktop/issues</url>
10+
<url type="homepage">https://github.com/Geocld/XStreamingDesktop</url>
11+
<url type="help">https://github.com/Geocld/XStreamingDesktop/issues</url>
12+
<url type="bugtracker">https://github.com/Geocld/XStreamingDesktop/issues</url>
1313
<description>
1414
<p>Xbox streaming client, you can play Xbox games anywhere.</p>
1515
</description>
1616
<screenshots>
1717
<screenshot type="default">
18-
<image type="source">https://raw.githubusercontent.com/Geocld/XStreaming-desktop/main/images/console.jpg</image>
18+
<image type="source">https://raw.githubusercontent.com/Geocld/XStreamingDesktop/main/images/console.jpg</image>
1919
</screenshot>
2020
<screenshot>
21-
<image type="source">https://raw.githubusercontent.com/Geocld/XStreaming-desktop/main/images/xcloud.jpg</image>
21+
<image type="source">https://raw.githubusercontent.com/Geocld/XStreamingDesktop/main/images/xcloud.jpg</image>
2222
</screenshot>
2323
<screenshot>
24-
<image type="source">https://raw.githubusercontent.com/Geocld/XStreaming-desktop/main/images/xcloud2.jpg</image>
24+
<image type="source">https://raw.githubusercontent.com/Geocld/XStreamingDesktop/main/images/xcloud2.jpg</image>
2525
</screenshot>
2626
<screenshot>
27-
<image type="source">https://raw.githubusercontent.com/Geocld/XStreaming-desktop/main/images/settings.jpg</image>
27+
<image type="source">https://raw.githubusercontent.com/Geocld/XStreamingDesktop/main/images/settings.jpg</image>
2828
</screenshot>
2929
</screenshots>
3030
<releases>
31+
<release version="1.5.0" date="2025-03-24">
32+
<description>
33+
<ul>
34+
<li>Fixed:</li>
35+
<li>Stream black screen in some case.</li>
36+
</ul>
37+
<ul>
38+
<li>Features:</li>
39+
<li>New logo</li>
40+
<li>Stick maping in keyboard supported.</li>
41+
</ul>
42+
</description>
43+
</release>
3144
<release version="1.4.1" date="2025-03-04">
3245
<description>
3346
<ul>
-45.2 KB
Loading

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"private": true,
33
"name": "xstreaming",
44
"description": "xstreaming",
5-
"version": "1.4.0",
5+
"version": "1.5.0",
66
"author": "Geocld <lijiahao5372@gmail.com>",
77
"main": "app/background.js",
88
"scripts": {
@@ -39,7 +39,7 @@
3939
"uplot": "^1.6.30",
4040
"uuid-1345": "^1.0.2",
4141
"xbox-webapi": "^1.4.1",
42-
"xstreaming-player": "0.2.6",
42+
"xstreaming-player": "0.2.7",
4343
"xvfb-maybe": "^0.2.1"
4444
},
4545
"devDependencies": {

renderer/common/settings.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,19 @@ const getSettingsMetas = (t) => {
7373
{value: false, label: t('Disable')},
7474
],
7575
},
76+
{
77+
name: 'fontSize',
78+
type: 'radio',
79+
title: t('Font Size'),
80+
needRestart: true,
81+
description: t('Set the app font size'),
82+
data: [
83+
{value: '14', label: t('Small')},
84+
{value: '16', label: t('Normal')},
85+
{value: '18', label: t('Big')},
86+
{value: '20', label: t('Super Big')},
87+
],
88+
},
7689
],
7790
streaming: [
7891
{

renderer/components/KeyboardMap.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ function KeyboardMap() {
3232
"RightTrigger",
3333
"LeftThumb",
3434
"RightThumb",
35+
"LeftThumbXAxisPlus",
36+
"LeftThumbXAxisMinus",
37+
"LeftThumbYAxisPlus",
38+
"LeftThumbYAxisMinus",
39+
"RightThumbXAxisPlus",
40+
"RightThumbXAxisMinus",
41+
"RightThumbYAxisPlus",
42+
"RightThumbYAxisMinus"
3543
];
3644
const { theme } = useTheme();
3745
const { settings, setSettings } = useSettings();
@@ -121,6 +129,30 @@ function KeyboardMap() {
121129
case "RightThumb":
122130
fullBtnText = "Right Thumbstick";
123131
break;
132+
case "LeftThumbXAxisPlus":
133+
fullBtnText = "Left Stick +x";
134+
break;
135+
case "LeftThumbXAxisMinus":
136+
fullBtnText = "Left Stick -x";
137+
break;
138+
case "LeftThumbYAxisPlus":
139+
fullBtnText = "Left Stick +y";
140+
break;
141+
case "LeftThumbYAxisMinus":
142+
fullBtnText = "Left Stick -y";
143+
break;
144+
case "RightThumbXAxisPlus":
145+
fullBtnText = "Right Stick +x";
146+
break;
147+
case "RightThumbXAxisMinus":
148+
fullBtnText = "Right Stick -x";
149+
break;
150+
case "RightThumbYAxisPlus":
151+
fullBtnText = "Right Stick +y";
152+
break;
153+
case "RightThumbYAxisMinus":
154+
fullBtnText = "Right Stick -y";
155+
break;
124156
default:
125157
fullBtnText = btn;
126158
break;

renderer/components/SettingItem.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ const SettingItem = (props) => {
2626
if (item.name === 'theme') {
2727
const localTheme = localStorage.getItem('theme') || 'xbox-dark'
2828
setDefaultValue(localTheme)
29+
} else if (item.name === 'fontSize') {
30+
const localTheme = localStorage.getItem('fontSize') || '18'
31+
setDefaultValue(localTheme)
2932
} else {
3033
setDefaultValue(settings[item.name])
3134
}
@@ -66,6 +69,9 @@ const SettingItem = (props) => {
6669
} else if (key === 'theme') {
6770
localStorage.setItem('theme', value)
6871
props.onRestartWarn && props.onRestartWarn()
72+
} else if (key === 'fontSize') {
73+
localStorage.setItem('fontSize', value)
74+
document.documentElement.style.fontSize = value + 'px';
6975
} else {
7076
setSettings({
7177
...settings,

renderer/pages/[locale]/home.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ function Home() {
6565
if (localTheme === 'xbox-light') {
6666
setTheme(localTheme)
6767
}
68+
69+
const localFontSize = localStorage.getItem('fontSize');
70+
if (localFontSize !== '16') {
71+
document.documentElement.style.fontSize = localFontSize + 'px';
72+
}
73+
6874
setLoading(true);
6975
setLoadingText(t("Loading..."));
7076

@@ -279,7 +285,7 @@ function Home() {
279285
<AuthModal show={showLoginModal} onConfirm={handleLogin} />
280286

281287
<Layout>
282-
<div className="gap-4 grid grid-cols-2 sm:grid-cols-3 md:grid-cols-3 lg:grid-cols-4">
288+
<div className="gap-4 grid grid-cols-3">
283289
{consoles.map((console) => {
284290
let consoleName: string
285291
switch (console.consoleType) {

renderer/pages/[locale]/stream.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,11 @@ function Stream() {
240240
});
241241
}, 30 * 1000);
242242
}
243+
244+
// Refresh video player
245+
if (settings.display_options) {
246+
refreshPlayer(settings.display_options)
247+
}
243248
}, 500);
244249
} else if (event.state === "closed") {
245250
console.log(":: We are disconnected!");
@@ -360,6 +365,7 @@ function Stream() {
360365
return () => {
361366
if (xPlayer !== undefined) {
362367
xPlayer.close();
368+
setxPlayer(null);
363369
}
364370

365371
if (keepaliveInterval.current) {

renderer/pages/[locale]/test.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ function GamepadTester() {
200200
console.log("gamepads:", gamepads);
201201
for (let i = 0; i < gamepads.length; i++) {
202202
const gp = gamepads[i];
203-
if (gp) {
203+
if (gp && gp.vibrationActuator) {
204204
gp.vibrationActuator.playEffect("dual-rumble", {
205205
startDelay: 0,
206206
duration: 1000,
@@ -218,10 +218,9 @@ function GamepadTester() {
218218
color="secondary"
219219
onClick={() => {
220220
const gamepads = navigator.getGamepads();
221-
console.log("gamepads:", gamepads);
222221
for (let i = 0; i < gamepads.length; i++) {
223222
const gp = gamepads[i];
224-
if (gp) {
223+
if (gp && gp.vibrationActuator) {
225224
// @ts-ignore
226225
if (gp.vibrationActuator.effects && gp.vibrationActuator.effects.includes('trigger-rumble')) {
227226
gp.vibrationActuator.playEffect('trigger-rumble', {

renderer/public/locales/en/settings.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,11 @@
101101
"Select gamepad": "Select gamepad",
102102
"Select specified controller": "Select specified controller",
103103
"Exit": "Exit",
104-
"Clear cache": "Clear cache"
104+
"Clear cache": "Clear cache",
105+
"Font Size": "Font Size",
106+
"Set the app font size": "Set the app font size",
107+
"Small": "Small",
108+
"Normal": "Normal",
109+
"Big": "Big",
110+
"Super Big": "Super Big"
105111
}

renderer/public/locales/jp/settings.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,11 @@
8787
"Select gamepad": "Select gamepad",
8888
"Select specified controller": "Select specified controller",
8989
"Exit": "Exit",
90-
"Clear cache": "Clear cache"
90+
"Clear cache": "Clear cache",
91+
"Font Size": "Font Size",
92+
"Set the app font size": "Set the app font size",
93+
"Small": "Small",
94+
"Normal": "Normal",
95+
"Big": "Big",
96+
"Super Big": "Super Big"
9197
}

renderer/public/locales/pt/settings.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,11 @@
9999
"australiaeast": "Leste da Austrália",
100100
"Select gamepad": "Selecionar controle",
101101
"Select specified controller": "Selecionar controle especificado",
102-
"Clear cache": "Clear cache"
102+
"Clear cache": "Clear cache",
103+
"Font Size": "Font Size",
104+
"Set the app font size": "Set the app font size",
105+
"Small": "Small",
106+
"Normal": "Normal",
107+
"Big": "Big",
108+
"Super Big": "Super Big"
103109
}

renderer/public/locales/zh/settings.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,11 @@
8686
"Select gamepad": "指定手柄",
8787
"Select specified controller": "选择指定手柄",
8888
"Exit": "退出",
89-
"Clear cache": "清空缓存"
89+
"Clear cache": "清空缓存",
90+
"Font Size": "字体大小",
91+
"Set the app font size": "设置应用字体大小",
92+
"Small": "",
93+
"Normal": "正常",
94+
"Big": "",
95+
"Super Big": "超大"
9096
}

renderer/public/locales/zht/settings.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,11 @@
8686
"Select gamepad": "指定手柄",
8787
"Select specified controller": "选择指定手柄",
8888
"Exit": "退出",
89-
"Clear cache": "清空缓存"
89+
"Clear cache": "清空缓存",
90+
"Font Size": "字体大小",
91+
"Set the app font size": "设置应用字体大小",
92+
"Small": "",
93+
"Normal": "正常",
94+
"Big": "",
95+
"Super Big": "超大"
9096
}

resources/XStreaming.png

-162 KB
Loading

resources/icon.icns

-4.42 KB
Binary file not shown.

resources/icon.ico

-15.9 KB
Binary file not shown.

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7894,10 +7894,10 @@ xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1:
78947894
resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz"
78957895
integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==
78967896

7897-
xstreaming-player@0.2.6:
7898-
version "0.2.6"
7899-
resolved "https://registry.npmjs.org/xstreaming-player/-/xstreaming-player-0.2.6.tgz"
7900-
integrity sha512-WcfuO9d+5WyVtIiE3ECCcoRN/RdMUdkYkQWLToPWF4k3y8UUtyf4siCV3+kHZI1H4/gbJLaIkSjlJfbLs3v3/w==
7897+
xstreaming-player@0.2.7:
7898+
version "0.2.7"
7899+
resolved "https://registry.yarnpkg.com/xstreaming-player/-/xstreaming-player-0.2.7.tgz#ec27459558aed83e590c1ff9ec499089e6f2c62e"
7900+
integrity sha512-rijYJ6uEvTzqj8RKXO4rNsy86yD/+4+fKxcjj51i87MbR4ETHasb9H/16GWiM7OWe69ZNKUs7Scmjldw/E996g==
79017901

79027902
xvfb-maybe@^0.2.1:
79037903
version "0.2.1"

0 commit comments

Comments
 (0)