From 4c5935b60d1d449afd3dd389c12528645be87fa0 Mon Sep 17 00:00:00 2001 From: Maschga <88616799+Maschga@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:15:59 +0100 Subject: [PATCH] UI: persist experimental flag (BC) (#27074) --- .storybook/preview.ts | 1 - assets/js/api.ts | 6 ++-- assets/js/app.ts | 2 -- assets/js/components/Auth/PasswordModal.vue | 5 +-- .../Config/DeviceModal/DeviceModalBase.vue | 4 ++- .../components/Config/ExperimentalModal.vue | 34 ++++++++++++------- assets/js/components/Config/GeneralConfig.vue | 7 ++-- assets/js/components/Config/YamlModal.vue | 5 +-- .../js/components/Energyflow/Energyflow.vue | 3 +- .../js/components/Forecast/ForecastModal.vue | 3 +- assets/js/components/Helper/ErrorMessage.vue | 19 +++++++++++ assets/js/components/Site/Site.vue | 1 + assets/js/components/TelemetrySettings.vue | 21 +++--------- assets/js/components/Top/Navigation.vue | 3 +- assets/js/featureflags.ts | 16 --------- assets/js/settings.ts | 4 --- assets/js/types/evcc.ts | 2 ++ assets/js/types/vue.d.ts | 4 --- assets/js/views/Config.vue | 9 +++-- assets/js/views/Issue.vue | 12 ++++--- cmd/root.go | 3 +- cmd/setup.go | 6 ++++ core/keys/global.go | 1 + i18n/bg.json | 1 - i18n/cs.json | 1 - i18n/da.json | 1 - i18n/de.json | 6 ++-- i18n/el.json | 1 - i18n/en.json | 6 ++-- i18n/es.json | 1 - i18n/fi.json | 1 - i18n/fr.json | 1 - i18n/hr.json | 1 - i18n/hu.json | 1 - i18n/it.json | 1 - i18n/lb.json | 1 - i18n/lt.json | 1 - i18n/nl.json | 1 - i18n/no.json | 1 - i18n/pl.json | 1 - i18n/pt.json | 1 - i18n/ro.json | 1 - i18n/ru.json | 1 - i18n/sl.json | 1 - i18n/sv.json | 1 - i18n/ta.json | 1 - i18n/tr.json | 1 - i18n/uk.json | 1 - i18n/zh-Hans.json | 1 - server/http.go | 3 +- server/http_config_site_other_handler.go | 13 +++++++ tests/config.spec.ts | 26 ++++++++++++++ 52 files changed, 137 insertions(+), 112 deletions(-) create mode 100644 assets/js/components/Helper/ErrorMessage.vue delete mode 100644 assets/js/featureflags.ts diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 1c51ac1cc..b38177500 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -34,7 +34,6 @@ export default { } satisfies Preview; setup((app) => { - app.config.globalProperties.$hiddenFeatures = () => true; app.use(setupI18n()); // Mock router-link for Storybook diff --git a/assets/js/api.ts b/assets/js/api.ts index 86fc9ddb4..0b0287725 100644 --- a/assets/js/api.ts +++ b/assets/js/api.ts @@ -40,9 +40,9 @@ const errorInterceptor = (error: any) => { message.push(`${error.response.data.error}.`); } if (error.config) { - const method = error.config.method.toUpperCase(); - const url = error.request.responseURL; - message.push(`${method} ${url}`); + const { baseURL, url, method } = error.config; + const fullUrl = error.request.responseURL || `${baseURL}${url}`; + message.push(`${method.toUpperCase()} ${fullUrl}`); } window.app.raise({ message }); return Promise.reject(error); diff --git a/assets/js/app.ts b/assets/js/app.ts index ae4b1466b..f2cc4c5a4 100644 --- a/assets/js/app.ts +++ b/assets/js/app.ts @@ -5,7 +5,6 @@ import { VueHeadMixin, createHead } from "@unhead/vue/client"; import App from "./views/App.vue"; import setupRouter from "./router.ts"; import setupI18n from "./i18n.ts"; -import featureflags from "./featureflags.ts"; import { watchThemeChanges } from "./theme.ts"; import { appDetection, sendToApp } from "./utils/native"; import type { Notification } from "./types/evcc"; @@ -74,7 +73,6 @@ const head = createHead(); app.use(i18n); app.use(setupRouter(i18n.global)); -app.use(featureflags); app.use(head); app.mixin(VueHeadMixin); window.app = app.mount("#app"); diff --git a/assets/js/components/Auth/PasswordModal.vue b/assets/js/components/Auth/PasswordModal.vue index 180a3c9e1..9a6f2b1b3 100644 --- a/assets/js/components/Auth/PasswordModal.vue +++ b/assets/js/components/Auth/PasswordModal.vue @@ -8,7 +8,7 @@ @open="open" @closed="closed" > -

{{ $t("passwordModal.error") }} "{{ error }}"

+

{{ $t("passwordModal.description") }}

import GenericModal from "../Helper/GenericModal.vue"; +import ErrorMessage from "../Helper/ErrorMessage.vue"; import FormRow from "../Helper/FormRow.vue"; import api from "@/api"; import { updateAuthStatus } from "./auth"; @@ -94,7 +95,7 @@ import { defineComponent } from "vue"; export default defineComponent({ name: "PasswordModal", - components: { FormRow, GenericModal }, + components: { FormRow, GenericModal, ErrorMessage }, props: { updateMode: Boolean, }, diff --git a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue index 27200f665..0101e114d 100644 --- a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue +++ b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue @@ -66,7 +66,7 @@ /> -

{{ auth.error }}

+
import { defineComponent, type PropType } from "vue"; import GenericModal, { type ModalFade } from "../../Helper/GenericModal.vue"; +import ErrorMessage from "../../Helper/ErrorMessage.vue"; import PropertyEntry from "../PropertyEntry.vue"; import PropertyCollapsible from "../PropertyCollapsible.vue"; import Modbus from "./Modbus.vue"; @@ -203,6 +204,7 @@ export default defineComponent({ name: "DeviceModalBase", components: { GenericModal, + ErrorMessage, PropertyEntry, PropertyCollapsible, Modbus, diff --git a/assets/js/components/Config/ExperimentalModal.vue b/assets/js/components/Config/ExperimentalModal.vue index 15e4f851e..5f53042f3 100644 --- a/assets/js/components/Config/ExperimentalModal.vue +++ b/assets/js/components/Config/ExperimentalModal.vue @@ -1,46 +1,56 @@ diff --git a/assets/js/components/Site/Site.vue b/assets/js/components/Site/Site.vue index 4ca7070ac..b74554243 100644 --- a/assets/js/components/Site/Site.vue +++ b/assets/js/components/Site/Site.vue @@ -163,6 +163,7 @@ export default defineComponent({ forecast: Object as PropType, circuits: Object as PropType>, telemetry: Boolean, + experimental: Boolean, evopt: { type: Object as PropType }, }, computed: { diff --git a/assets/js/components/TelemetrySettings.vue b/assets/js/components/TelemetrySettings.vue index ad21a9af3..edd63ccf6 100644 --- a/assets/js/components/TelemetrySettings.vue +++ b/assets/js/components/TelemetrySettings.vue @@ -1,5 +1,5 @@ -