diff --git a/.gitignore b/.gitignore index 502fc372577..ccc8b0c7487 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,6 @@ package-lock.json # Translations *.mo *.pot + +# Dummy macOS files +.DS_Store diff --git a/package.json b/package.json index 08b860c6285..0c0f7455808 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "scripts": { "build": "vite build --debug", + "build-clean": "vite build --debug --emptyOutDir", "dev": "vite build --watch" }, "dependencies": { diff --git a/src_assets/common/assets/web/PlatformLayout.vue b/src_assets/common/assets/web/PlatformLayout.vue new file mode 100644 index 00000000000..31064fec620 --- /dev/null +++ b/src_assets/common/assets/web/PlatformLayout.vue @@ -0,0 +1,27 @@ + + + + + + diff --git a/src_assets/common/assets/web/apps.html b/src_assets/common/assets/web/apps.html index 3abde6c5d57..0fd0651aa13 100644 --- a/src_assets/common/assets/web/apps.html +++ b/src_assets/common/assets/web/apps.html @@ -356,7 +356,7 @@

{{ $t('apps.env_vars_about') }}

diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html index babb1ad4c46..146c18b5303 100644 --- a/src_assets/common/assets/web/config.html +++ b/src_assets/common/assets/web/config.html @@ -36,1022 +36,56 @@

{{ $t('config.configuration') }}

-
- -
- - -
{{ $t('config.locale_desc') }}
-
- - -
- - -
{{ $t('config.sunshine_name_desc') }}
-
- - -
- - -
{{ $t('config.log_level_desc') }}
-
- - -
- - -
- {{ $t('config.channels_desc_1') }}
- {{ $t('_common.note') }} {{ $t('config.channels_desc_2') }} -
-
- - -
- -
{{ $t('config.global_prep_cmd_desc') }}
- - - - - - - - - - - - - - - - - -
{{ $t('config.do_cmd') }} {{ $t('config.undo_cmd') }} - {{ $t('config.run_as') }} -
- - - - -
- - -
-
- - -
- -
-
+ + -
- -
- - -
{{ $t('config.controller_desc') }}
-
- - -
- - -
{{ $t('config.gamepad_desc') }}
-
-
-
-

- -

-
-
-
- - -
{{ $t('config.ds4_back_as_touchpad_click_desc') }}
-
-
-
-
-
-
-
-

- -

-
-
-
- - -
{{ $t('config.motion_as_ds4_desc') }}
-
-
- - -
{{ $t('config.touchpad_as_ds4_desc') }}
-
-
-
-
-
- - -
- - -
{{ $t('config.back_button_timeout_desc') }}
-
- - -
-
- - -
{{ $t('config.keyboard_desc') }}
-
- - -
- - -
{{ $t('config.key_repeat_delay_desc') }}
-
- - -
- - -
{{ $t('config.key_repeat_frequency_desc') }}
-
- - -
- - -
{{ $t('config.always_send_scancodes_desc') }}
-
- - -
- - -
{{ $t('config.key_rightalt_to_key_win_desc') }}
-
- - -
-
- - -
{{ $t('config.mouse_desc') }}
-
- - -
- - -
{{ $t('config.high_resolution_scrolling_desc') }}
-
- - -
- - -
{{ $t('config.native_pen_touch_desc') }}
-
- -
+ + -
- -
- - -
- {{ $t('config.audio_sink_desc_win') }}
-
tools\audio-info.exe
-
-
-
- - -
- {{ $t('config.audio_sink_desc_linux') }}
-
pacmd list-sinks | grep "name:"
-
pactl info | grep Source
-
-
-
- - -
- {{ $t('config.audio_sink_desc_macos') }}
-
- Soundflower
- BlackHole. -
-
- - -
- - -
{{ $t('config.virtual_sink_desc') }}
-
- - -
- - -
{{ $t('config.install_steam_audio_drivers_desc') }}
-
- - -
- - -
- {{ $t('config.adapter_name_desc_win') }}
-
tools\dxgi-info.exe
-
-
-
- - -
- {{ $t('config.adapter_name_desc_linux_1') }}
-
ls /dev/dri/renderD*  # {{ $t('config.adapter_name_desc_linux_2') }}
-
-              vainfo --display drm --device /dev/dri/renderD129 | \
-                grep -E "((VAProfileH264High|VAProfileHEVCMain|VAProfileHEVCMain10).*VAEntrypointEncSlice)|Driver version"
-            
- {{ $t('config.adapter_name_desc_linux_3') }}
- VAProfileH264High : VAEntrypointEncSlice -
-
- - -
- - -
- {{ $t('config.output_name_desc_win') }}
-
tools\dxgi-info.exe
-
-
-
- - -
- {{ $t('config.output_name_desc_unix') }}
-
-
-              Info: Detecting displays
-              Info: Detected display: DVI-D-0 (id: 0) connected: false
-              Info: Detected display: HDMI-0 (id: 1) connected: true
-              Info: Detected display: DP-0 (id: 2) connected: true
-              Info: Detected display: DP-1 (id: 3) connected: false
-              Info: Detected display: DVI-D-1 (id: 4) connected: false
-            
-
-              Info: Detecting displays
-              Info: Detected display: Monitor-0 (id: 3) connected: true
-              Info: Detected display: Monitor-1 (id: 2) connected: true
-            
-
-
- - -
- -
- -
-
- {{r}} - × -
-
-
- - -
-
- - -
- -
-
- {{f}} - × -
-
-
- - -
-
- -
{{ $t('config.res_fps_desc') }}
-
- -
+ + -
- -
- - -
{{ $t('config.upnp_desc') }}
-
- - -
- - -
{{ $t('config.address_family_desc') }}
-
- - -
- - -
{{ $t('config.port_desc') }}
- -
- {{ $t('config.port_alert_1') }} -
- -
- {{ $t('config.port_alert_2') }} -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{ $t('config.port_protocol') }}{{ $t('config.port_port') }}{{ $t('config.port_note') }}
{{ $t('config.port_tcp') }}{{+effectivePort - 5}}
{{ $t('config.port_tcp') }}{{+effectivePort}} - -
{{ $t('config.port_tcp') }}{{+effectivePort + 1}}{{ $t('config.port_web_ui') }}
{{ $t('config.port_tcp') }}{{+effectivePort + 21}}
{{ $t('config.port_udp') }}{{+effectivePort + 9}} - {{+effectivePort + 11}}
- -
- {{ $t('config.port_warning') }} -
-
- - -
- - -
{{ $t('config.origin_web_ui_allowed_desc') }}
-
- - -
- - -
{{ $t('config.external_ip_desc') }}
-
- - -
- - -
{{ $t('config.lan_encryption_mode_desc') }}
-
- - -
- - -
{{ $t('config.wan_encryption_mode_desc') }}
-
- - -
- - -
{{ $t('config.ping_timeout_desc') }}
-
- -
+ + -
- -
- - -
{{ $t('config.file_apps_desc') }}
-
- - -
- - -
{{ $t('config.credentials_file_desc') }}
-
- - -
- - -
{{ $t('config.log_path_desc') }}
-
- - -
- - -
{{ $t('config.pkey_desc') }}
-
- - -
- - -
{{ $t('config.cert_desc') }}
-
- - -
- - -
{{ $t('config.file_state_desc') }}
-
- -
+ + -
- -
- - -
{{ $t('config.fec_percentage_desc') }}
-
- - -
- - -
{{ $t('config.qp_desc') }}
-
- - -
- - -
{{ $t('config.min_threads_desc') }}
-
- - -
- - -
{{ $t('config.hevc_mode_desc') }}
-
- - -
- - -
{{ $t('config.av1_mode_desc') }}
-
- - -
- - -
{{ $t('config.capture_desc') }}
-
- - -
- - -
{{ $t('config.encoder_desc') }}
-
- -
- - -
- -
- - -
{{ $t('config.nvenc_preset_desc') }}
-
- - -
- - -
{{ $t('config.nvenc_twopass_desc') }}
-
- - -
- - -
{{ $t('config.nvenc_spatial_aq_desc') }}
-
- - -
- - -
- {{ $t('config.nvenc_vbv_increase_desc') }}
-
- VBV/HRD -
-
- - -
-
-

- -

-
-
- -
- - -
- {{ $t('config.nvenc_realtime_hags_desc') }}
-
- HAGS -
-
- - -
- - -
{{ $t('config.nvenc_latency_over_power_desc') }}
-
- - -
- - -
{{ $t('config.nvenc_opengl_vulkan_on_dxgi_desc') }}
-
- - -
- - -
{{ $t('config.nvenc_h264_cavlc_desc') }}
-
-
-
-
-
-
- - -
- -
- - -
- - -
- - -
- - -
- - -
{{ $t('config.qsv_slow_hevc_desc') }}
-
- -
- - -
- -
- - -
{{ $t('config.amd_usage_desc') }}
-
- - -
-
-

- -

-
-
- -
- - -
{{ $t('config.amd_rc_desc') }}
-
- - -
- - -
{{ $t('config.amd_enforce_hrd_desc') }}
-
-
-
-
-
- - -
-
-

- -

-
-
- -
- - -
{{ $t('config.amd_quality_desc') }}
-
- - -
- - -
{{ $t('config.amd_preanalysis_desc') }}
-
- - -
- - -
{{ $t('config.amd_vbaq_desc') }}
-
- - -
- - -
{{ $t('config.amd_coder_desc') }}
-
-
-
-
-
-
- - -
- -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
{{ $t('config.sw_preset_desc') }}
-
- -
- - -
{{ $t('config.sw_tune_desc') }}
-
-
- + + + + + @@ -1065,17 +99,34 @@

- + + diff --git a/src_assets/common/assets/web/configs/tabs/Advanced.vue b/src_assets/common/assets/web/configs/tabs/Advanced.vue new file mode 100644 index 00000000000..9704c91b2e4 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/Advanced.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/AudioVideo.vue b/src_assets/common/assets/web/configs/tabs/AudioVideo.vue new file mode 100644 index 00000000000..851e1e03a7e --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/AudioVideo.vue @@ -0,0 +1,89 @@ + + + diff --git a/src_assets/common/assets/web/configs/tabs/ContainerEncoders.vue b/src_assets/common/assets/web/configs/tabs/ContainerEncoders.vue new file mode 100644 index 00000000000..084c3001f57 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/ContainerEncoders.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/Files.vue b/src_assets/common/assets/web/configs/tabs/Files.vue new file mode 100644 index 00000000000..87b8f9500e7 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/Files.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/General.vue b/src_assets/common/assets/web/configs/tabs/General.vue new file mode 100644 index 00000000000..cc473c803e2 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/General.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/Inputs.vue b/src_assets/common/assets/web/configs/tabs/Inputs.vue new file mode 100644 index 00000000000..a5dd014870b --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/Inputs.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/Network.vue b/src_assets/common/assets/web/configs/tabs/Network.vue new file mode 100644 index 00000000000..b32074a599c --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/Network.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/audiovideo/AdapterNameSelector.vue b/src_assets/common/assets/web/configs/tabs/audiovideo/AdapterNameSelector.vue new file mode 100644 index 00000000000..8fa94ce8b05 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/audiovideo/AdapterNameSelector.vue @@ -0,0 +1,39 @@ + + + diff --git a/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue b/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue new file mode 100644 index 00000000000..4c0cd419d2d --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue @@ -0,0 +1,45 @@ + + + diff --git a/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayModesSettings.vue b/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayModesSettings.vue new file mode 100644 index 00000000000..74bd5d9f87b --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayModesSettings.vue @@ -0,0 +1,67 @@ + + + diff --git a/src_assets/common/assets/web/configs/tabs/audiovideo/LegacyDisplayOutputSelector.vue b/src_assets/common/assets/web/configs/tabs/audiovideo/LegacyDisplayOutputSelector.vue new file mode 100644 index 00000000000..c0042717af5 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/audiovideo/LegacyDisplayOutputSelector.vue @@ -0,0 +1,46 @@ + + + diff --git a/src_assets/common/assets/web/configs/tabs/audiovideo/NewDisplayOutputSelector.vue b/src_assets/common/assets/web/configs/tabs/audiovideo/NewDisplayOutputSelector.vue new file mode 100644 index 00000000000..d9d79bdccd7 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/audiovideo/NewDisplayOutputSelector.vue @@ -0,0 +1,38 @@ + + + diff --git a/src_assets/common/assets/web/configs/tabs/encoders/AmdAmfEncoder.vue b/src_assets/common/assets/web/configs/tabs/encoders/AmdAmfEncoder.vue new file mode 100644 index 00000000000..209df9a76fd --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/encoders/AmdAmfEncoder.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/encoders/IntelQuickSyncEncoder.vue b/src_assets/common/assets/web/configs/tabs/encoders/IntelQuickSyncEncoder.vue new file mode 100644 index 00000000000..6b88b8b79bc --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/encoders/IntelQuickSyncEncoder.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/encoders/NvidiaNvencEncoder.vue b/src_assets/common/assets/web/configs/tabs/encoders/NvidiaNvencEncoder.vue new file mode 100644 index 00000000000..aa6ad003ac2 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/encoders/NvidiaNvencEncoder.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/encoders/SoftwareEncoder.vue b/src_assets/common/assets/web/configs/tabs/encoders/SoftwareEncoder.vue new file mode 100644 index 00000000000..d9e7c5dba54 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/encoders/SoftwareEncoder.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src_assets/common/assets/web/configs/tabs/encoders/VideotoolboxEncoder.vue b/src_assets/common/assets/web/configs/tabs/encoders/VideotoolboxEncoder.vue new file mode 100644 index 00000000000..41e29d46a78 --- /dev/null +++ b/src_assets/common/assets/web/configs/tabs/encoders/VideotoolboxEncoder.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src_assets/common/assets/web/index.html b/src_assets/common/assets/web/index.html index 16dff05b921..1f191e54af3 100644 --- a/src_assets/common/assets/web/index.html +++ b/src_assets/common/assets/web/index.html @@ -73,7 +73,7 @@

{{githubVersion.name}}

diff --git a/src_assets/common/assets/web/init.js b/src_assets/common/assets/web/init.js new file mode 100644 index 00000000000..3f30a0f034e --- /dev/null +++ b/src_assets/common/assets/web/init.js @@ -0,0 +1,13 @@ +import i18n from './locale' + +export function initApp(app, config) { + //Wait for locale initialization, then render + i18n().then(i18n => { + app.use(i18n); + app.provide('i18n', i18n.global) + app.mount('#app'); + if (config) { + config(app) + } + }); +} diff --git a/src_assets/common/assets/web/password.html b/src_assets/common/assets/web/password.html index 9044b272df9..9a47cc565c8 100644 --- a/src_assets/common/assets/web/password.html +++ b/src_assets/common/assets/web/password.html @@ -67,7 +67,7 @@

{{ $t('password.new_creds') }}

diff --git a/src_assets/common/assets/web/pin.html b/src_assets/common/assets/web/pin.html index 056bd6e20db..359c5e527ba 100644 --- a/src_assets/common/assets/web/pin.html +++ b/src_assets/common/assets/web/pin.html @@ -26,6 +26,7 @@

{{ $t('pin.pin_pairing') }}

import { createApp } from 'vue' import i18n from './locale.js' import Navbar from './Navbar.vue' + import {initApp} from "./init"; let app = createApp({ components: { @@ -33,11 +34,7 @@

{{ $t('pin.pin_pairing') }}

} }); - //Wait for locale initialization, then render - i18n().then(i18n => { - app.use(i18n); - app.mount('#app'); - + initApp(app, (app => { // this must be after mounting the app document.querySelector("#form").addEventListener("submit", (e) => { e.preventDefault(); @@ -59,5 +56,5 @@

{{ $t('pin.pin_pairing') }}

} }); }); - }); + })); diff --git a/src_assets/common/assets/web/platform-i18n.js b/src_assets/common/assets/web/platform-i18n.js new file mode 100644 index 00000000000..1da14372054 --- /dev/null +++ b/src_assets/common/assets/web/platform-i18n.js @@ -0,0 +1,80 @@ +import {inject} from 'vue' + +class PlatformMessageI18n { + /** + * @param {string} platform + */ + constructor(platform) { + this.platform = platform + } + + /** + * @param {string} key + * @param {string} platform identifier + * @return {string} key with platform identifier + */ + getPlatformKey(key, platform) { + return key + '_' + platform + } + + /** + * @param {string} key + * @param {string?} defaultMsg + * @return {string} translated message or defaultMsg if provided + */ + getMessageUsingPlatform(key, defaultMsg) { + const realKey = this.getPlatformKey(key, this.platform) + const i18n = inject('i18n') + let message = i18n.t(realKey) + + if (message !== realKey) { + // We got a message back, return early + return message + } + + // If on Windows, we don't fallback to unix, so return early + if (this.platform === 'windows') { + return defaultMsg ? defaultMsg : message + } + + // there's no message for key, check for unix version + const unixKey = this.getPlatformKey(key, 'unix') + message = i18n.t(unixKey) + + if (message === unixKey && defaultMsg) { + // there's no message for unix key, return defaultMsg + return defaultMsg + } + return message + } +} + +/** + * @param {string?} platform + * @return {PlatformMessageI18n} instance + */ +export function usePlatformI18n(platform) { + if (!platform) { + platform = inject('platform').value + } + + if (!platform) { + throw 'platform argument missing' + } + + return inject( + 'platformMessage', + () => new PlatformMessageI18n(platform), + true + ) +} + +/** + * @param {string} key + * @param {string?} defaultMsg + * @return {string} translated message or defaultMsg if provided + */ +export function $tp(key, defaultMsg) { + const pm = usePlatformI18n() + return pm.getMessageUsingPlatform(key, defaultMsg) +} diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index 4f41fb42a5d..f0e875e1a37 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -82,8 +82,8 @@ "adapter_name_desc_linux_1": "Manually specify a GPU to use for capture.", "adapter_name_desc_linux_2": "to find all devices capable of VAAPI", "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Sunshine, it needs to have at the very minimum:", - "adapter_name_desc_win": "Manually specify a GPU to use for capture. If unset, the GPU is chosen automatically. We strongly recommend leaving this field blank to use automatic GPU selection! Note: This GPU must have a display connected and powered on. The appropriate values can be found using the following command:", - "adapter_name_placeholder_win": "Radeon RX 580 Series", + "adapter_name_desc_windows": "Manually specify a GPU to use for capture. If unset, the GPU is chosen automatically. We strongly recommend leaving this field blank to use automatic GPU selection! Note: This GPU must have a display connected and powered on. The appropriate values can be found using the following command:", + "adapter_name_placeholder_windows": "Radeon RX 580 Series", "add": "Add", "address_family": "Address Family", "address_family_both": "IPv4+IPv6", @@ -123,9 +123,9 @@ "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Sunshine can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", - "audio_sink_desc_win": "Manually specify a specific audio device to capture. If unset, the device is chosen automatically. We strongly recommend leaving this field blank to use automatic device selection! If you have multiple audio devices with identical names, you can get the Device ID using the following command:", + "audio_sink_desc_windows": "Manually specify a specific audio device to capture. If unset, the device is chosen automatically. We strongly recommend leaving this field blank to use automatic device selection! If you have multiple audio devices with identical names, you can get the Device ID using the following command:", "audio_sink_placeholder_macos": "BlackHole 2ch", - "audio_sink_placeholder_win": "Speakers (High Definition Audio Device)", + "audio_sink_placeholder_windows": "Speakers (High Definition Audio Device)", "av1_mode": "AV1 Support", "av1_mode_0": "Sunshine will advertise support for AV1 based on encoder capabilities (recommended)", "av1_mode_1": "Sunshine will not advertise support for AV1", @@ -185,7 +185,7 @@ "key_repeat_delay_desc": "Control how fast keys will repeat themselves. The initial delay in milliseconds before repeating keys.", "key_repeat_frequency": "Key Repeat Frequency", "key_repeat_frequency_desc": "How often keys repeat every second. This configurable option supports decimals.", - "key_rightalt_to_key_win": "Map Right Alt key to Windows key", + "key_rightalt_to_key_windows": "Map Right Alt key to Windows key", "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Sunshine think the Right Alt key is the Windows key", "keyboard": "Enable Keyboard Input", "keyboard_desc": "Allows guests to control the host system with the keyboard", @@ -244,9 +244,9 @@ "origin_web_ui_allowed_pc": "Only localhost may access Web UI", "origin_web_ui_allowed_wan": "Anyone may access Web UI", "output_name_desc_unix": "During Sunshine startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis.", - "output_name_desc_win": "Manually specify a display to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. The appropriate values can be found using the following command:", + "output_name_desc_windows": "Manually specify a display to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. The appropriate values can be found using the following command:", "output_name_unix": "Display number", - "output_name_win": "Output Name", + "output_name_windows": "Output Name", "ping_timeout": "Ping Timeout", "ping_timeout_desc": "How long to wait in milliseconds for data from moonlight before shutting down the stream", "pkey": "Private Key", diff --git a/src_assets/common/assets/web/troubleshooting.html b/src_assets/common/assets/web/troubleshooting.html index 8fce7e4ba92..00497741368 100644 --- a/src_assets/common/assets/web/troubleshooting.html +++ b/src_assets/common/assets/web/troubleshooting.html @@ -114,7 +114,7 @@

{{ $t('troubleshooting.logs') }}

diff --git a/src_assets/common/assets/web/welcome.html b/src_assets/common/assets/web/welcome.html index c2946c745d2..cf1e74ba8e6 100644 --- a/src_assets/common/assets/web/welcome.html +++ b/src_assets/common/assets/web/welcome.html @@ -53,8 +53,8 @@