diff --git a/easytier-gui/src/components/ModeSwitcher.vue b/easytier-gui/src/components/ModeSwitcher.vue index 0bbf33a7..7ea04f7e 100644 --- a/easytier-gui/src/components/ModeSwitcher.vue +++ b/easytier-gui/src/components/ModeSwitcher.vue @@ -26,6 +26,14 @@ function normalizeRpcListenPort(port: unknown): number { onMounted(async () => { defaultConfigDir.value = await join(await appConfigDir(), 'config.d') defaultLogDir.value = await appLogDir() + + // the mode watch may have run before these defaults resolved (e.g. when the + // dialog is opened with service mode preselected), leaving the fields empty. + if (model.value.mode === 'service') { + const serviceModel = model.value as ServiceMode + serviceModel.config_dir = serviceModel.config_dir || defaultConfigDir.value + serviceModel.file_log_dir = serviceModel.file_log_dir || defaultLogDir.value + } }) const modeOptions = computed(() => [ diff --git a/easytier-gui/src/pages/index.vue b/easytier-gui/src/pages/index.vue index 947076e5..2ce5d455 100644 --- a/easytier-gui/src/pages/index.vue +++ b/easytier-gui/src/pages/index.vue @@ -36,8 +36,18 @@ const manualDisconnect = ref(false) const configServerDialogVisible = ref(false) const configServerConnected = ref(false) +const showAutostartHint = ref(false) + async function openModeDialog() { editingMode.value = JSON.parse(JSON.stringify(loadMode())) + showAutostartHint.value = false + modeDialogVisible.value = true +} + +async function openAutostartDialog() { + editingMode.value = JSON.parse(JSON.stringify(loadMode())) + editingMode.value.mode = 'service' + showAutostartHint.value = true modeDialogVisible.value = true } @@ -400,6 +410,12 @@ const setting_menu_items: Ref = ref([ command: openModeDialog, visible: () => type() !== 'android', }, + { + label: () => t('mode.autostart'), + icon: 'pi pi-clock', + command: openAutostartDialog, + visible: () => type() !== 'android', + }, { label: () => `${t('config-server.title')}${t('config-server.' + configServerConnectionStatus.value)}`, icon: 'pi pi-globe', @@ -497,6 +513,9 @@ const configServerConnectionStatus = computed(() => { + + {{ t('mode.autostart_hint') }} +