From 6438284090f3e552843679c1ea62b5538be5dff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Ro=C3=9Fner?= Date: Wed, 11 Dec 2024 11:56:59 +0100 Subject: [PATCH] fix(helmfile): Add `opendesk-static-files` to `opendesk-services` to serve favicons --- REUSE.toml | 2 +- cspell.json | 132 +++++++++--------- docs/migrations.md | 5 + .../apps/element/helmfile-child.yaml.gotmpl | 6 - .../apps/element/values-element.yaml.gotmpl | 1 + helmfile/apps/jitsi/values-jitsi.yaml.gotmpl | 1 + helmfile/apps/nubus/values-nubus.yaml.gotmpl | 8 +- .../values-opendesk-customization.yaml.gotmpl | 8 +- .../helmfile-child.yaml.gotmpl | 25 +++- ...=> values-opendesk-dashboards.yaml.gotmpl} | 0 .../values-opendesk-static-files.yaml.gotmpl | 107 ++++++++++++++ helmfile/apps/openproject/values.yaml.gotmpl | 2 +- helmfile/apps/xwiki/values.yaml.gotmpl | 5 +- .../environments/default/charts.yaml.gotmpl | 28 ++-- .../default/customization.yaml.gotmpl | 8 +- .../environments/default/debug.yaml.gotmpl | 4 +- .../environments/default/global.yaml.gotmpl | 1 + .../environments/default/images.yaml.gotmpl | 10 +- .../default/opendesk_main.yaml.gotmpl | 3 + .../environments/default/replicas.yaml.gotmpl | 4 + .../default/resources.yaml.gotmpl | 7 + .../environments/default/selinux.yaml.gotmpl | 1 + .../environments/default/theme.yaml.gotmpl | 88 +++++++----- helmfile/files/theme/_dev/red.ico | Bin 0 -> 70 bytes helmfile/files/theme/_dev/red.png | Bin 0 -> 72 bytes helmfile/files/theme/_dev/red.svg | 1 + helmfile/files/theme/chat/favicon.ico | Bin 0 -> 50222 bytes helmfile/files/theme/favicon.ico | Bin 67646 -> 0 bytes helmfile/files/theme/favicon144.png | Bin 2814 -> 0 bytes helmfile/files/theme/favicon16.png | Bin 513 -> 0 bytes helmfile/files/theme/files/favicon.ico | Bin 0 -> 50222 bytes helmfile/files/theme/files/favicon.png | Bin 0 -> 1256 bytes helmfile/files/theme/groupware/favicon.ico | Bin 0 -> 50222 bytes helmfile/files/theme/groupware/favicon.svg | 5 + helmfile/files/theme/knowledge/favicon.png | Bin 0 -> 1515 bytes helmfile/files/theme/knowledge/favicon.svg | 5 + .../portal-tiles/admin_announcement.svg | 0 .../portal-tiles/admin_context.svg | 0 .../portal-tiles/admin_functionalmailbox.svg | 0 .../{ => theme}/portal-tiles/admin_group.svg | 0 .../portal-tiles/admin_resource.svg | 0 .../{ => theme}/portal-tiles/admin_user.svg | 0 .../portal-tiles/anonymous_login.svg | 0 .../{ => theme}/portal-tiles/dummy_circle.svg | 0 .../portal-tiles/fileshare_activity.svg | 0 .../portal-tiles/fileshare_directdoc_odp.svg | 0 .../portal-tiles/fileshare_directdoc_ods.svg | 0 .../portal-tiles/fileshare_directdoc_odt.svg | 0 .../portal-tiles/fileshare_files.svg | 0 .../portal-tiles/groupware_calendar.svg | 0 .../portal-tiles/groupware_contacts.svg | 0 .../portal-tiles/groupware_mail.svg | 0 .../portal-tiles/groupware_tasks.svg | 0 .../portal-tiles/management_knowledge.svg | 0 .../portal-tiles/management_project.svg | 0 .../{ => theme}/portal-tiles/misc_notes.svg | 0 .../portal-tiles/realtime_collaboration.svg | 0 .../portal-tiles/realtime_videoconference.svg | 0 .../selfservice_changepassword.svg | 0 .../portal-tiles/selfservice_editprofile.svg | 0 .../selfservice_protectaccount.svg | 0 helmfile/files/theme/portal/favicon.ico | Bin 0 -> 50222 bytes .../logoBackground.svg} | 0 .../stylesheet.css} | 0 .../waitingSpinner.svg} | 0 helmfile/files/theme/portalWaitingSpinner.svg | 16 --- helmfile/files/theme/projects/favicon.svg | 6 + .../files/theme/videoconference/favicon.svg | 5 + 68 files changed, 339 insertions(+), 155 deletions(-) rename helmfile/apps/opendesk-services/{values-dashboards.yaml.gotmpl => values-opendesk-dashboards.yaml.gotmpl} (100%) create mode 100644 helmfile/apps/opendesk-services/values-opendesk-static-files.yaml.gotmpl create mode 100644 helmfile/files/theme/_dev/red.ico create mode 100644 helmfile/files/theme/_dev/red.png create mode 100644 helmfile/files/theme/_dev/red.svg create mode 100644 helmfile/files/theme/chat/favicon.ico delete mode 100644 helmfile/files/theme/favicon.ico delete mode 100644 helmfile/files/theme/favicon144.png delete mode 100644 helmfile/files/theme/favicon16.png create mode 100644 helmfile/files/theme/files/favicon.ico create mode 100644 helmfile/files/theme/files/favicon.png create mode 100644 helmfile/files/theme/groupware/favicon.ico create mode 100644 helmfile/files/theme/groupware/favicon.svg create mode 100644 helmfile/files/theme/knowledge/favicon.png create mode 100644 helmfile/files/theme/knowledge/favicon.svg rename helmfile/files/{ => theme}/portal-tiles/admin_announcement.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/admin_context.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/admin_functionalmailbox.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/admin_group.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/admin_resource.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/admin_user.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/anonymous_login.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/dummy_circle.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/fileshare_activity.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/fileshare_directdoc_odp.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/fileshare_directdoc_ods.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/fileshare_directdoc_odt.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/fileshare_files.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/groupware_calendar.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/groupware_contacts.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/groupware_mail.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/groupware_tasks.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/management_knowledge.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/management_project.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/misc_notes.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/realtime_collaboration.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/realtime_videoconference.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/selfservice_changepassword.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/selfservice_editprofile.svg (100%) rename helmfile/files/{ => theme}/portal-tiles/selfservice_protectaccount.svg (100%) create mode 100644 helmfile/files/theme/portal/favicon.ico rename helmfile/files/theme/{portalLogoBackground.svg => portal/logoBackground.svg} (100%) rename helmfile/files/theme/{portalStylesheet.css => portal/stylesheet.css} (100%) rename helmfile/files/theme/{favicon.svg => portal/waitingSpinner.svg} (100%) delete mode 100644 helmfile/files/theme/portalWaitingSpinner.svg create mode 100644 helmfile/files/theme/projects/favicon.svg create mode 100644 helmfile/files/theme/videoconference/favicon.svg diff --git a/REUSE.toml b/REUSE.toml index f23bdfa3..fb5cde4d 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -14,7 +14,7 @@ SPDX-FileCopyrightText = "2023 Bundesministerium des Innern und für Heimat, PG SPDX-License-Identifier = "CC0-1.0" [[annotations]] -path = "helmfile/files/theme/*" +path = "helmfile/files/theme/**" SPDX-FileCopyrightText = "2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH" SPDX-License-Identifier = "Apache-2.0" diff --git a/cspell.json b/cspell.json index 1cac37b5..8fc9cd98 100644 --- a/cspell.json +++ b/cspell.json @@ -4,79 +4,81 @@ "dictionaryDefinitions": [], "dictionaries": [], "words": [ - "openDesk", + "Addressbooks", "AppSuite", - "Collabora", - "Digitale", - "Jitsi", - "Nextcloud", - "Öffentlichen", - "OpenProject", - "Souveränität", - "Verwaltung", - "Zentrum", - "Keycloak", - "NATS", - "slapadd", - "slapcat", - "RDBMS", - "Velero", - "Univention", - "OIDC", - "kcadmin", - "DMARC", - "homeserver", - "Bundesministerium", - "Innern", - "Heimat", - "Projektgruppe", + "Arbeitsplatz", "Aufbau", - "Filepicker", - "Weboffice", - "Xchange", - "opencode", - "seccomp", - "psql", - "databasename", - "helmfile", - "gotmpl", - "containerd", - "letsencrypt", - "CNCF", - "kubespray", - "ICAP", + "bootstrap", + "Bundesministerium", "Ceph", + "clamav", + "CNCF", + "Collabora", + "commandline", + "configurability", + "containerd", "Coturn", - "Minio", - "Kyverno", - "Otterize", - "IBAC", - "pubkeys", - "Grundschutz", - "Kubescape", - "Gitflow", - "hadolint", + "cryptpad", + "databasename", + "Digitale", + "DMARC", "explorative", + "Filepicker", + "filestore", + "Gitflow", + "gotmpl", + "Grundschutz", + "hadolint", + "Heimat", + "helmfile", + "helmfiles", + "homeserver", + "IBAC", + "ICAP", + "IMAPS", + "Innern", + "Jitsi", + "kcadmin", + "Keycloak", + "Kubescape", + "kubespray", + "Kyverno", + "letsencrypt", + "localpart", + "Minio", + "NATS", + "Nextcloud", + "nindent", "Nordeck", "Nubus", - "Souveräne", - "Arbeitsplatz", - "commandline", - "helmfiles", - "SMTPS", - "IMAPS", - "xwiki", - "cryptpad", - "clamav", - "templating", - "localpart", - "Addressbooks", - "filestore", - "trashbin", - "bootstrap", - "configurability", + "Öffentlichen", + "OIDC", + "opencode", + "openDesk", + "OpenProject", + "Otterize", + "Projektgruppe", + "psql", + "pubkeys", + "RDBMS", + "seccomp", "selfsigned", - "truststore" + "slapadd", + "slapcat", + "SMTPS", + "Souveräne", + "Souveränität", + "templating", + "trashbin", + "truststore", + "Univention", + "Velero", + "Verwaltung", + "Videokonferenz", + "Weboffice", + "Xchange", + "xwiki", + "Zentrum" ], "ignoreWords": [], "import": [] diff --git a/docs/migrations.md b/docs/migrations.md index f016b298..2ce25ec9 100644 --- a/docs/migrations.md +++ b/docs/migrations.md @@ -11,6 +11,7 @@ SPDX-License-Identifier: Apache-2.0 * [Releases upgrade details](#releases-upgrade-details) * [From v1.0.0](#from-v100) * [Pre-upgrade: Manual checks/steps from v1.0.0](#pre-upgrade-manual-checkssteps-from-v100) + * [Helmfile Cleanup: Restructured `/helmfile/files/theme` folder](#helmfile-cleanup-restructured-helmfilefilestheme-folder) * [Helmfile Cleanup: Consistent use of `*.yaml.gotmpl`](#helmfile-cleanup-consistent-use-of-yamlgotmpl) * [Helmfile Cleanup: Prefixing certain app directories with `opendesk-`](#helmfile-cleanup-prefixing-certain-app-directories-with-opendesk-) * [Helmfile Cleanup: Helmfile Cleanup: Splitting external vs. openDesk services](#helmfile-cleanup-helmfile-cleanup-splitting-external-vs-opendesk-services) @@ -76,6 +77,10 @@ Explanation of the table's columns: ### Pre-upgrade: Manual checks/steps from v1.0.0 +#### Helmfile Cleanup: Restructured `/helmfile/files/theme` folder + +If you make use of the [theme folder](../helmfile/files/theme/) or the [`theme.yaml.gotmpl`](../helmfile/environments/default/theme.yaml.gotmpl), e.g. to applying your own imagery, please ensure you adhere to the new structure of the folder and the yaml-file. + #### Helmfile Cleanup: Consistent use of `*.yaml.gotmpl` In v1.0.0 the files in [`/helmfile/environments/default`](../helmfile/environments/default/) had mixed extensions, diff --git a/helmfile/apps/element/helmfile-child.yaml.gotmpl b/helmfile/apps/element/helmfile-child.yaml.gotmpl index 96c31790..7f564e2f 100644 --- a/helmfile/apps/element/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/element/helmfile-child.yaml.gotmpl @@ -112,15 +112,9 @@ repositories: url: "{{ .Values.global.helmRegistry | default .Values.charts.synapsePipe.registry }}/{{ .Values.charts.synapsePipe.repository }}" releases: - # During upgrade 1.0.0 -> 1.1.0 the chart 'opendesk-element' has been moved to 'opendesk-element-web' - name: "opendesk-element" chart: "element-repo/{{ .Values.charts.element.name }}" version: "{{ .Values.charts.element.version }}" - installed: false - - - name: "opendesk-element-web" - chart: "element-repo/{{ .Values.charts.elementWeb.name }}" - version: "{{ .Values.charts.elementWeb.version }}" values: - "values-element.yaml.gotmpl" {{ range .Values.customization.release.opendeskElement }} diff --git a/helmfile/apps/element/values-element.yaml.gotmpl b/helmfile/apps/element/values-element.yaml.gotmpl index 4092933e..47645263 100644 --- a/helmfile/apps/element/values-element.yaml.gotmpl +++ b/helmfile/apps/element/values-element.yaml.gotmpl @@ -149,6 +149,7 @@ resources: {{ .Values.resources.element | toYaml | nindent 2 }} theme: + title: "Chat - {{ .Values.theme.texts.productName }}" {{ .Values.theme | toYaml | nindent 2 }} ... diff --git a/helmfile/apps/jitsi/values-jitsi.yaml.gotmpl b/helmfile/apps/jitsi/values-jitsi.yaml.gotmpl index 32bd5562..06dc812a 100644 --- a/helmfile/apps/jitsi/values-jitsi.yaml.gotmpl +++ b/helmfile/apps/jitsi/values-jitsi.yaml.gotmpl @@ -63,6 +63,7 @@ settings: keycloakClientId: "opendesk-jitsi" theme: + title: "Videokonferenz - {{ .Values.theme.texts.productName }}" {{ .Values.theme | toYaml | nindent 2 }} jitsi: diff --git a/helmfile/apps/nubus/values-nubus.yaml.gotmpl b/helmfile/apps/nubus/values-nubus.yaml.gotmpl index 4ec97c8d..8273c73e 100644 --- a/helmfile/apps/nubus/values-nubus.yaml.gotmpl +++ b/helmfile/apps/nubus/values-nubus.yaml.gotmpl @@ -423,7 +423,7 @@ nubusStackDataUms: umcMemcachedHostname: {{ .Values.cache.umsSelfservice.host | quote }} umcMemcachedUsername: "" externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain }} - umcHtmlTitle: "openDesk Portal" + umcHtmlTitle: "Portal - {{ .Values.theme.texts.productName }}" smtpHost: {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} smtpPort: 25 smtpUser: "" @@ -443,8 +443,8 @@ nubusStackDataUms: portalGroupwareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openxchange .Values.global.domain }} portalFileshareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.nextcloud .Values.global.domain }} portalNotesLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain }} - portalTitleDE: "openDesk Portal" - portalTitleEN: "openDesk Portal" + portalTitleDE: "Portal - {{ .Values.theme.texts.productName }}" + portalTitleEN: "Portal - {{ .Values.theme.texts.productName }}" oxDefaultContext: "1" componentEnabled: notes: {{ .Values.notes.enabled }} @@ -526,7 +526,7 @@ nubusUmcServer: nubusUmcGateway: umcGateway: - umcHtmlTitle: "openDesk Portal" + umcHtmlTitle: "Portal - {{ .Values.theme.texts.productName }}" ingress: certManager: enabled: false diff --git a/helmfile/apps/nubus/values-opendesk-customization.yaml.gotmpl b/helmfile/apps/nubus/values-opendesk-customization.yaml.gotmpl index 79ecbfa4..daf941ae 100644 --- a/helmfile/apps/nubus/values-opendesk-customization.yaml.gotmpl +++ b/helmfile/apps/nubus/values-opendesk-customization.yaml.gotmpl @@ -516,12 +516,12 @@ nubusPortalFrontend: {{ .Values.resources.umsPortalFrontend | toYaml | nindent 4 }} portalFrontend: branding: - css: {{ .Values.theme.styles.portalCss | toJson }} + css: {{ .Values.theme.styles.portal.main | toJson }} # Requires .ico, .svg does not work. - favicon: {{ .Values.theme.imagery.faviconIcoB64 | toJson }} + favicon: {{ .Values.theme.imagery.portal.faviconIco | toJson }} # The actual `logo` is set in customizing image, the logo down here is for for waiting spinner. - logo: {{ .Values.theme.imagery.portalWaitingSpinnerSvgB64 | toJson }} - backgroundImage: {{ .Values.theme.imagery.portalLogoBackgroundSvgB64 | toJson }} + logo: {{ .Values.theme.imagery.portal.waitingSpinnerSvg | toJson }} + backgroundImage: {{ .Values.theme.imagery.portal.logoBackgroundSvg | toJson }} nubusStackDataUms: containerSecurityContext: diff --git a/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl b/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl index f4421ec6..a7f622a1 100644 --- a/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl @@ -44,7 +44,7 @@ repositories: # openDesk Grafana Dashboards # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dashboards - - name: "dashboards-repo" + - name: "opendesk-dashboards-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.opendeskDashboards.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} @@ -52,6 +52,16 @@ repositories: oci: true url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskDashboards.registry }}/{{ .Values.charts.opendeskDashboards.repository }}" + # openDesk Static Files + # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-static-files + - name: "opendesk-static-files-repo" + keyring: "../../files/gpg-pubkeys/opencode.gpg" + verify: {{ .Values.charts.opendeskStaticFiles.verify }} + username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} + password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} + oci: true + url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskStaticFiles.registry }}/{{ .Values.charts.opendeskStaticFiles.repository }}" + releases: - name: "opendesk-otterize" chart: "otterize-repo/{{ .Values.charts.otterize.name }}" @@ -97,14 +107,23 @@ releases: timeout: 900 - name: "opendesk-dashboards" - chart: "dashboards-repo/{{ .Values.charts.opendeskDashboards.name }}" + chart: "opendesk-dashboards-repo/{{ .Values.charts.opendeskDashboards.name }}" version: "{{ .Values.charts.opendeskDashboards.version }}" values: - - "values-dashboards.yaml.gotmpl" + - "values-opendesk-dashboards.yaml.gotmpl" - {{ .Values.customization.release.opendeskDashboards | default "additionalValues: false" }} installed: {{ .Values.monitoring.grafana.dashboards.enabled }} timeout: 900 + - name: "opendesk-static-files" + chart: "opendesk-static-files-repo/{{ .Values.charts.opendeskStaticFiles.name }}" + version: "{{ .Values.charts.opendeskStaticFiles.version }}" + values: + - "values-opendesk-static-files.yaml.gotmpl" + - {{ .Values.customization.release.opendeskStaticFiles | default "additionalValues: false" }} + installed: {{ .Values.staticFiles.enabled }} + timeout: 900 + commonLabels: deployStage: "030-opendesk-services" component: "opendesk-services" diff --git a/helmfile/apps/opendesk-services/values-dashboards.yaml.gotmpl b/helmfile/apps/opendesk-services/values-opendesk-dashboards.yaml.gotmpl similarity index 100% rename from helmfile/apps/opendesk-services/values-dashboards.yaml.gotmpl rename to helmfile/apps/opendesk-services/values-opendesk-dashboards.yaml.gotmpl diff --git a/helmfile/apps/opendesk-services/values-opendesk-static-files.yaml.gotmpl b/helmfile/apps/opendesk-services/values-opendesk-static-files.yaml.gotmpl new file mode 100644 index 00000000..a7f1d764 --- /dev/null +++ b/helmfile/apps/opendesk-services/values-opendesk-static-files.yaml.gotmpl @@ -0,0 +1,107 @@ +{{/* +SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +SPDX-License-Identifier: Apache-2.0 +*/}} +--- +global: + domain: {{ .Values.global.domain | quote }} + hosts: + {{ .Values.global.hosts | toYaml | nindent 4 }} + imagePullSecrets: + {{ .Values.global.imagePullSecrets | toYaml | nindent 4 }} + +cleanup: + deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }} + deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }} + +containerSecurityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - "ALL" + enabled: true + runAsUser: 101 + runAsGroup: 101 + seccompProfile: + type: "RuntimeDefault" + readOnlyRootFilesystem: true + runAsNonRoot: true + seLinuxOptions: + {{ .Values.seLinuxOptions.opendeskStaticFiles | toYaml | nindent 4 }} + +ingress: + ingressClassName: {{ .Values.ingress.ingressClassName | quote }} + host: "{{ .Values.global.hosts.static }}.{{ .Values.global.domain }}" + tls: + secretName: {{ .Values.ingress.tls.secretName | quote }} + +image: + registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.opendeskStaticFiles.registry | quote }} + repository: {{ .Values.images.opendeskStaticFiles.repository | quote }} + tag: {{ .Values.images.opendeskStaticFiles.tag | quote }} + imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }} + + +podSecurityContext: + enabled: true + fsGroup: 101 + fsGroupChangePolicy: "Always" + +replicaCount: {{ .Values.replicas.opendeskStaticFiles }} + +resources: + {{ .Values.resources.opendeskStaticFiles | toYaml | nindent 2 }} + +service: + type: "ClusterIP" + +theme: + imagery: + assets: + element: + subdomain: {{ .Values.global.hosts.element }} + paths: + - path: "/vector-icons/favicon.........ico" + data: {{ .Values.theme.imagery.chat.faviconIco }} + jitsi: + subdomain: {{ .Values.global.hosts.jitsi }} + paths: + - path: "/images/favicon.svg" + data: {{ .Values.theme.imagery.videoconference.faviconSvg }} + keycloak: + subdomain: {{ .Values.global.hosts.keycloak }} + paths: + - path: "/resources/...../login/UCS/img/favicon.ico" + data: {{ .Values.theme.imagery.portal.faviconIco }} + nextcloud: + subdomain: {{ .Values.global.hosts.nextcloud }} + paths: + - path: "/core/img/favicon-touch.png" + data: {{ .Values.theme.imagery.files.faviconPng }} + - path: "/core/img/favicon.ico" + data: {{ .Values.theme.imagery.files.faviconIco }} + openproject: + subdomain: {{ .Values.global.hosts.openproject }} + paths: + - path: "/custom_style/........../favicon/favicon.svg" + data: {{ .Values.theme.imagery.projects.faviconSvg }} + openxchange: + subdomain: {{ .Values.global.hosts.openxchange }} + paths: + - path: "/appsuite/favicon.ico" + data: {{ .Values.theme.imagery.groupware.faviconIco }} + - path: "/appsuite/favicon.svg" + data: {{ .Values.theme.imagery.groupware.faviconSvg }} + portal: + subdomain: {{ .Values.global.hosts.nubus }} + paths: + - path: "/favicon.ico" + data: {{ .Values.theme.imagery.portal.faviconIco }} + xwiki: + subdomain: {{ .Values.global.hosts.xwiki }} + paths: + - path: "/resources/icons/xwiki/favicon.svg" + data: {{ .Values.theme.imagery.knowledge.faviconSvg }} + - path: "/resources/icons/xwiki/favicon16.png" + data: {{ .Values.theme.imagery.knowledge.faviconPng }} +... diff --git a/helmfile/apps/openproject/values.yaml.gotmpl b/helmfile/apps/openproject/values.yaml.gotmpl index 4dc9edad..665a7047 100644 --- a/helmfile/apps/openproject/values.yaml.gotmpl +++ b/helmfile/apps/openproject/values.yaml.gotmpl @@ -40,7 +40,7 @@ dbInit: environment: # For more details and more options see # https://www.openproject.org/docs/installation-and-operations/configuration/environment/ - OPENPROJECT_APP__TITLE: "Projects | {{ .Values.theme.texts.productName }}" + OPENPROJECT_APP__TITLE: "Projekte - {{ .Values.theme.texts.productName }}" OPENPROJECT_LOG__LEVEL: {{ if .Values.debug.enabled }}"debug"{{ else }}"info"{{ end }} OPENPROJECT_LOGIN__REQUIRED: "true" OPENPROJECT_USER__DEFAULT__TIMEZONE: "Europe/Berlin" diff --git a/helmfile/apps/xwiki/values.yaml.gotmpl b/helmfile/apps/xwiki/values.yaml.gotmpl index 22e186da..f1bd004d 100644 --- a/helmfile/apps/xwiki/values.yaml.gotmpl +++ b/helmfile/apps/xwiki/values.yaml.gotmpl @@ -141,9 +141,6 @@ postgresql: properties: "attachment:xwiki:FlamingoThemes.Iceberg@logo.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.logoHeaderSvgB64 }}" - "attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.faviconSvgB64 }}" - "attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon16.png": "data:image/png;base64,{{ .Values.theme.imagery.favicon16PngB64 }}" - "attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon144.png": "data:image/png;base64,{{ .Values.theme.imagery.favicon144PngB64 }}" "property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure": 1 "property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server": "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}" "property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port": 443 @@ -193,7 +190,7 @@ properties: ## LDAP filter to only synchronize some groups "property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter": "(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))" - "property:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title": "{{ .Values.theme.texts.productName }} Wissen - $!tdoc.displayTitle" + "property:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title": "Wissen - $!tdoc.displayTitle - {{ .Values.theme.texts.productName }}" cluster: replicas: {{ .Values.replicas.xwiki }} diff --git a/helmfile/environments/default/charts.yaml.gotmpl b/helmfile/environments/default/charts.yaml.gotmpl index f91db86c..7c432c95 100644 --- a/helmfile/environments/default/charts.yaml.gotmpl +++ b/helmfile/environments/default/charts.yaml.gotmpl @@ -21,7 +21,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-certificates" name: "opendesk-certificates" - version: "3.1.0" + version: "3.1.1" verify: true clamav: # providerCategory: "Platform" @@ -104,7 +104,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-element" - version: "5.0.1" + version: "6.0.0" verify: true elementWeb: # providerCategory: "Platform" @@ -114,7 +114,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-element-web" - version: "5.0.1" + version: "6.0.0" verify: true elementWellKnown: # providerCategory: "Platform" @@ -124,7 +124,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-well-known" - version: "5.0.1" + version: "6.0.0" verify: true home: # providerCategory: "Platform" @@ -156,7 +156,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-jitsi" name: "opendesk-jitsi" - version: "2.1.1" + version: "3.0.1" verify: true mariadb: # providerCategory: "Platform" @@ -216,7 +216,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-matrix-user-verification-service" - version: "5.0.1" + version: "6.0.1" verify: true memcached: # providerCategory: "Community" @@ -340,6 +340,16 @@ charts: name: "opendesk-keycloak-bootstrap" version: "2.2.0" verify: true + opendeskStaticFiles: + # providerCategory: "Platform" + # providerResponsible: "openDesk" + # upstreamRegistry: "https://registry.opencode.de" + # upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-static-files/opendesk-static-files" + registry: "registry.opencode.de" + repository: "bmi/opendesk/components/platform-development/charts/opendesk-static-files" + name: "opendesk-static-files" + version: "3.0.1" + verify: true openproject: # providerCategory: "Supplier" # providerResponsible: "openProject" @@ -444,7 +454,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-synapse" - version: "5.0.1" + version: "6.0.1" verify: true synapseAdmin: # Component is required for openDesk Enterprise only. @@ -468,7 +478,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-synapse-create-account" - version: "5.0.1" + version: "6.0.0" verify: true synapseGroupsync: # Component is required for openDesk Enterprise only. @@ -492,7 +502,7 @@ charts: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" name: "opendesk-synapse-web" - version: "5.0.1" + version: "6.0.0" verify: true xwiki: # providerCategory: "Supplier" diff --git a/helmfile/environments/default/customization.yaml.gotmpl b/helmfile/environments/default/customization.yaml.gotmpl index 772fa3f5..2eb3cd86 100644 --- a/helmfile/environments/default/customization.yaml.gotmpl +++ b/helmfile/environments/default/customization.yaml.gotmpl @@ -50,12 +50,16 @@ customization: openproject: {} # openproject-bootstrap opendeskOpenprojectBootstrap: {} - # services + # xwiki + xwiki: {} + # openDesk services opendeskOtterize: {} opendeskHome: {} opendeskCertificates: {} opendeskAlerts: {} opendeskDashboards: {} + opendeskStaticFiles: {} + # external services redis: {} memcached: {} postgresql: {} @@ -65,8 +69,6 @@ customization: clamav: {} clamavSimple: {} minio: {} - # xwiki - xwiki: {} # openDesk Enterprise Components cassandra: {} diff --git a/helmfile/environments/default/debug.yaml.gotmpl b/helmfile/environments/default/debug.yaml.gotmpl index b53563bb..41dd6e57 100644 --- a/helmfile/environments/default/debug.yaml.gotmpl +++ b/helmfile/environments/default/debug.yaml.gotmpl @@ -7,9 +7,9 @@ debug: deletePodsOnSuccess: true # When deletePodsOnSuccess is enabled, the pod will be deleted after configured seconds. deletePodsOnSuccessTimeout: 60 - # Keep persistence on deletion of this release. + # Keep persistence on deletion of a release. keepPVCOnDelete: false - # Keep additional resources, like certificates on deletion of this release. + # Keep additional resources, like certificates on deletion of a release. keepRessourceOnDelete: true # should activate debug output in all components and even allow e.g. successfully executed jobs # to stay available. This is going to be implemented on a case by case basis when we actually diff --git a/helmfile/environments/default/global.yaml.gotmpl b/helmfile/environments/default/global.yaml.gotmpl index bc8cac76..a616017e 100644 --- a/helmfile/environments/default/global.yaml.gotmpl +++ b/helmfile/environments/default/global.yaml.gotmpl @@ -48,6 +48,7 @@ global: nubus: "portal" openproject: "projects" openxchange: "webmail" + static: "static" synapse: "matrix" synapseFederation: "matrix-federation" whiteboard: "whiteboard" diff --git a/helmfile/environments/default/images.yaml.gotmpl b/helmfile/environments/default/images.yaml.gotmpl index 7402255d..f147b468 100644 --- a/helmfile/environments/default/images.yaml.gotmpl +++ b/helmfile/environments/default/images.yaml.gotmpl @@ -628,6 +628,14 @@ images: registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap" tag: "1.2.1@sha256:f5ce0be27580c6347c5e700c4fa271a811d45d8a0e4b40ffe8a4d0e3d47e670f" + opendeskStaticFiles: + # providerCategory: "Community" + # providerResponsible: "Element" + # upstreamRegistry: "https://registry-1.docker.io" + # upstreamRepository: "library/nginx" + registry: "registry-1.docker.io" + repository: "library/nginx" + tag: "1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" openproject: # providerCategory: "Supplier" # providerResponsible: "OpenProject" @@ -859,7 +867,7 @@ images: # upstreamRepository: "library/nginx" registry: "registry-1.docker.io" repository: "library/nginx" - tag: "1.27.0-bookworm@sha256:1445eb9c6dc5e9619346c836ef6fbd6a95092e4663f27dcfce116f051cdbd232" + tag: "1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" xwiki: # providerCategory: "Supplier" # providerResponsible: "XWiki" diff --git a/helmfile/environments/default/opendesk_main.yaml.gotmpl b/helmfile/environments/default/opendesk_main.yaml.gotmpl index 7b8db222..f803af51 100644 --- a/helmfile/environments/default/opendesk_main.yaml.gotmpl +++ b/helmfile/environments/default/opendesk_main.yaml.gotmpl @@ -70,6 +70,9 @@ postgresql: redis: enabled: true namespace: ~ +staticFiles: + enabled: true + namespace: ~ xwiki: enabled: true namespace: ~ diff --git a/helmfile/environments/default/replicas.yaml.gotmpl b/helmfile/environments/default/replicas.yaml.gotmpl index 998d7f78..74136ad8 100644 --- a/helmfile/environments/default/replicas.yaml.gotmpl +++ b/helmfile/environments/default/replicas.yaml.gotmpl @@ -155,6 +155,10 @@ replicas: # -- scalable: true nextcloudExporter: 1 + # -- component: openDesk Static Files + # -- scalable: true + opendeskStaticFiles: 1 + # -- component: Project management (OpenProject) # -- scalable: true openprojectWeb: 1 diff --git a/helmfile/environments/default/resources.yaml.gotmpl b/helmfile/environments/default/resources.yaml.gotmpl index d08b60fc..219a1e41 100644 --- a/helmfile/environments/default/resources.yaml.gotmpl +++ b/helmfile/environments/default/resources.yaml.gotmpl @@ -134,6 +134,13 @@ resources: requests: cpu: 0.1 memory: "256Mi" + opendeskStaticFiles: + limits: + cpu: 99 + memory: "64Mi" + requests: + cpu: 0.01 + memory: "16Mi" umsKeycloak: limits: cpu: 99 diff --git a/helmfile/environments/default/selinux.yaml.gotmpl b/helmfile/environments/default/selinux.yaml.gotmpl index 4b5ae0e5..10d50867 100644 --- a/helmfile/environments/default/selinux.yaml.gotmpl +++ b/helmfile/environments/default/selinux.yaml.gotmpl @@ -41,6 +41,7 @@ seLinuxOptions: notesFrontend: ~ notesYProvider: ~ opendeskKeycloakBootstrap: ~ + opendeskStaticFiles: ~ openproject: ~ openprojectBootstrap: ~ openprojectDbInit: ~ diff --git a/helmfile/environments/default/theme.yaml.gotmpl b/helmfile/environments/default/theme.yaml.gotmpl index 6a64a0f0..f51cb2c4 100644 --- a/helmfile/environments/default/theme.yaml.gotmpl +++ b/helmfile/environments/default/theme.yaml.gotmpl @@ -39,48 +39,64 @@ theme: ## Define imagery # imagery: - # Xwiki - faviconSvgB64: {{ readFile "./../../files/theme/favicon.svg" | b64enc | quote }} - faviconIcoB64: {{ readFile "./../../files/theme/favicon.ico" | b64enc | quote }} - favicon16PngB64: {{ readFile "./../../files/theme/favicon16.png" | b64enc | quote }} - favicon144PngB64: {{ readFile "./../../files/theme/favicon144.png" | b64enc | quote }} logoHeaderSvgB64: {{ readFile "./../../files/theme/logoHeader.svg" | b64enc | quote }} - - # Jitsi logoHeaderInvertedSvgB64: {{ readFile "./../../files/theme/logoHeaderInverted.svg" | b64enc | quote }} - # Portal - portalLogoBackgroundSvgB64: {{ readFile "./../../files/theme/empty.svg" | b64enc | quote }} - portalWaitingSpinnerSvgB64: {{ readFile "./../../files/theme/portalWaitingSpinner.svg" | b64enc | quote }} + chat: + faviconIco: {{ readFile "./../../files/theme/chat/favicon.ico" | b64enc | quote }} + + files: + faviconIco: {{ readFile "./../../files/theme/files/favicon.ico" | b64enc | quote }} + faviconPng: {{ readFile "./../../files/theme/files/favicon.png" | b64enc | quote }} + + groupware: + faviconIco: {{ readFile "./../../files/theme/groupware/favicon.ico" | b64enc | quote }} + faviconSvg: {{ readFile "./../../files/theme/groupware/favicon.svg" | b64enc | quote }} + + knowledge: + faviconSvg: {{ readFile "./../../files/theme/knowledge/favicon.svg" | b64enc | quote }} + faviconPng: {{ readFile "./../../files/theme/knowledge/favicon.png" | b64enc | quote }} + + portal: + faviconIco: {{ readFile "./../../files/theme/portal/favicon.ico" | b64enc | quote }} + waitingSpinnerSvg: {{ readFile "./../../files/theme/portal/waitingSpinner.svg" | b64enc }} + logoBackgroundSvg: {{ readFile "./../../files/theme/empty.svg" | b64enc | quote }} portalTiles: - adminAnnouncement: {{ readFile "./../../files/portal-tiles/admin_announcement.svg" | b64enc | quote }} - adminContext: {{ readFile "./../../files/portal-tiles/admin_context.svg" | b64enc | quote }} - adminFunctionalmailbox: {{ readFile "./../../files/portal-tiles/admin_functionalmailbox.svg" | b64enc | quote }} - adminGroup: {{ readFile "./../../files/portal-tiles/admin_group.svg" | b64enc | quote }} - adminResource: {{ readFile "./../../files/portal-tiles/admin_resource.svg" | b64enc | quote }} - adminUser: {{ readFile "./../../files/portal-tiles/admin_user.svg" | b64enc | quote }} - anonymousLogin: {{ readFile "./../../files/portal-tiles/anonymous_login.svg" | b64enc | quote }} - dummyCircle: {{ readFile "./../../files/portal-tiles/dummy_circle.svg" | b64enc | quote }} - fileshareActivity: {{ readFile "./../../files/portal-tiles/fileshare_activity.svg" | b64enc | quote }} - fileshareDirectdocOdp: {{ readFile "./../../files/portal-tiles/fileshare_directdoc_odp.svg" | b64enc | quote }} - fileshareDirectdocOds: {{ readFile "./../../files/portal-tiles/fileshare_directdoc_ods.svg" | b64enc | quote }} - fileshareDirectdocOdt: {{ readFile "./../../files/portal-tiles/fileshare_directdoc_odt.svg" | b64enc | quote }} - fileshareFiles: {{ readFile "./../../files/portal-tiles/fileshare_files.svg" | b64enc | quote }} - groupwareCalendar: {{ readFile "./../../files/portal-tiles/groupware_calendar.svg" | b64enc | quote }} - groupwareContacts: {{ readFile "./../../files/portal-tiles/groupware_contacts.svg" | b64enc | quote }} - groupwareMail: {{ readFile "./../../files/portal-tiles/groupware_mail.svg" | b64enc | quote }} - groupwareTasks: {{ readFile "./../../files/portal-tiles/groupware_tasks.svg" | b64enc | quote }} - managementKnowledge: {{ readFile "./../../files/portal-tiles/management_knowledge.svg" | b64enc | quote }} - managementProject: {{ readFile "./../../files/portal-tiles/management_project.svg" | b64enc | quote }} - notes: {{ readFile "./../../files/portal-tiles/misc_notes.svg" | b64enc | quote }} - realtimeCollaboration: {{ readFile "./../../files/portal-tiles/realtime_collaboration.svg" | b64enc | quote }} - realtimeVideoconference: {{ readFile "./../../files/portal-tiles/realtime_videoconference.svg" | b64enc | quote }} - selfserviceChangepassword: {{ readFile "./../../files/portal-tiles/selfservice_changepassword.svg" | b64enc | quote }} - selfserviceEditprofile: {{ readFile "./../../files/portal-tiles/selfservice_editprofile.svg" | b64enc | quote }} - selfserviceProtectaccount: {{ readFile "./../../files/portal-tiles/selfservice_protectaccount.svg" | b64enc | quote }} + adminAnnouncement: {{ readFile "./../../files/theme/portal-tiles/admin_announcement.svg" | b64enc | quote }} + adminContext: {{ readFile "./../../files/theme/portal-tiles/admin_context.svg" | b64enc | quote }} + adminFunctionalmailbox: {{ readFile "./../../files/theme/portal-tiles/admin_functionalmailbox.svg" | b64enc | quote }} + adminGroup: {{ readFile "./../../files/theme/portal-tiles/admin_group.svg" | b64enc | quote }} + adminResource: {{ readFile "./../../files/theme/portal-tiles/admin_resource.svg" | b64enc | quote }} + adminUser: {{ readFile "./../../files/theme/portal-tiles/admin_user.svg" | b64enc | quote }} + anonymousLogin: {{ readFile "./../../files/theme/portal-tiles/anonymous_login.svg" | b64enc | quote }} + dummyCircle: {{ readFile "./../../files/theme/portal-tiles/dummy_circle.svg" | b64enc | quote }} + fileshareActivity: {{ readFile "./../../files/theme/portal-tiles/fileshare_activity.svg" | b64enc | quote }} + fileshareDirectdocOdp: {{ readFile "./../../files/theme/portal-tiles/fileshare_directdoc_odp.svg" | b64enc | quote }} + fileshareDirectdocOds: {{ readFile "./../../files/theme/portal-tiles/fileshare_directdoc_ods.svg" | b64enc | quote }} + fileshareDirectdocOdt: {{ readFile "./../../files/theme/portal-tiles/fileshare_directdoc_odt.svg" | b64enc | quote }} + fileshareFiles: {{ readFile "./../../files/theme/portal-tiles/fileshare_files.svg" | b64enc | quote }} + groupwareCalendar: {{ readFile "./../../files/theme/portal-tiles/groupware_calendar.svg" | b64enc | quote }} + groupwareContacts: {{ readFile "./../../files/theme/portal-tiles/groupware_contacts.svg" | b64enc | quote }} + groupwareMail: {{ readFile "./../../files/theme/portal-tiles/groupware_mail.svg" | b64enc | quote }} + groupwareTasks: {{ readFile "./../../files/theme/portal-tiles/groupware_tasks.svg" | b64enc | quote }} + managementKnowledge: {{ readFile "./../../files/theme/portal-tiles/management_knowledge.svg" | b64enc | quote }} + managementProject: {{ readFile "./../../files/theme/portal-tiles/management_project.svg" | b64enc | quote }} + notes: {{ readFile "./../../files/theme/portal-tiles/misc_notes.svg" | b64enc | quote }} + realtimeCollaboration: {{ readFile "./../../files/theme/portal-tiles/realtime_collaboration.svg" | b64enc | quote }} + realtimeVideoconference: {{ readFile "./../../files/theme/portal-tiles/realtime_videoconference.svg" | b64enc | quote }} + selfserviceChangepassword: {{ readFile "./../../files/theme/portal-tiles/selfservice_changepassword.svg" | b64enc | quote }} + selfserviceEditprofile: {{ readFile "./../../files/theme/portal-tiles/selfservice_editprofile.svg" | b64enc | quote }} + selfserviceProtectaccount: {{ readFile "./../../files/theme/portal-tiles/selfservice_protectaccount.svg" | b64enc | quote }} + + projects: + faviconSvg: {{ readFile "./../../files/theme/projects/favicon.svg" | b64enc | quote }} + + videoconference: + faviconSvg: {{ readFile "./../../files/theme/videoconference/favicon.svg" | b64enc | quote }} ## Where required define complete Stylesheets # styles: - portalCss: {{ readFile "./../../files/theme/portalStylesheet.css" | b64enc }} + portal: + main: {{ readFile "./../../files/theme/portal/stylesheet.css" | b64enc }} ... diff --git a/helmfile/files/theme/_dev/red.ico b/helmfile/files/theme/_dev/red.ico new file mode 100644 index 0000000000000000000000000000000000000000..29ade1712b973cab58735e345900e7e549e3ca57 GIT binary patch literal 70 pcmZQzU<5%%1|TWHV8Fn@AO^%5KnxUOU;@(;KoUFHvhgQa0st|L0|o#9 literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/_dev/red.png b/helmfile/files/theme/_dev/red.png new file mode 100644 index 0000000000000000000000000000000000000000..fc2253085ef973ed00924be1a21f5b6d354e0b1c GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ry{GKk3Asn)dEDXQ@GyL4Rg_V^l UK535Pcc2u5r>mdKI;Vst0Nv3LNB{r; literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/_dev/red.svg b/helmfile/files/theme/_dev/red.svg new file mode 100644 index 00000000..61182609 --- /dev/null +++ b/helmfile/files/theme/_dev/red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/helmfile/files/theme/chat/favicon.ico b/helmfile/files/theme/chat/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..61e710229aaf619f58c5c0198302b9bb3f86fb37 GIT binary patch literal 50222 zcmeI3Ka3ki6viha5)FkblmdZE3JUj7q@;8OHHa=KoIpwy>6|VIi5QTOkcjSRC^*5n z34#LUB(4I9L_mQA(wTHXfeR4my!P;(b9*!U&%5iLoqdD9iQaiUN;L&oE7oj>Y~Tb& zi4%&`CmWMZ$xz%Vz*@4V{Sx_WpC+F@vVAg?b`@ZLz1o0s29Td2*{t1k;oVYzwI1f6 zsN6*3F~=-HJs*xMgF5R-`Sr*qp7TVwtOCrS^14ZV!7Qs`S1pq&^Ny0k+SnDL;<#(q zOd2*U9*Q#^D=^HPca&3)Y}RpZ2w$uKv&rmr)Q0u3STiYS66+-;)t8bO@+eiHAFr3x zb6naR9i%95KIbT*sg$IUN2vl+o^RA^P}&n6q$$A6M$(c(KBWrmP>)GzFLaQm05iKU zEh*$vssNakN`wwj017|>C;$bZ02ByYf%)t2hkXHCm_0K)ee%UEyz+1_Ic5fK;V`tB zfm;~d(#*h3KDRt(;3k_}5i@X;%WWMqaFfZcj2XDe<5q4E_uGuYT zf9ca_UKY=eKmQK3#N1r7lRoD{o@;!s+1y;Si*9@*a?Z`)2>P9BEx!0hpVD(% z{4CJvE9J2`I0|)XOyr%%%{4m?xcKs09o;(U#F*9c$CJc$hh8b-)&{%KwUU(oI&NSm ziBvL|GHzg()JsaO3OBHmLd)b)l^fU@%_JPv;RbdRh&{}qF1K@b-~FtYKRsy2{{Baf zKteOwgqx2si`$>;pJQErCm%X;pV~KxwU``-F16GAn`r5CEVw1H`_#TkEN}z2qyk~qn#=*8V=>>7 z_m@xYo5TV)a7!u>X06E_@HrOqEqQ1!;wrMSKOX&BtT{yv%b zme&@fhp#!)B+e4wrDpEb=-LOO*

$AX_!?XYKPVW0CBl-Ee>Fl&`kiR%Rz{-bL?y zrm;R&|3=j^MlUD;1)u;FfC5ke3P6Dh3jA5254y-w;2x#( z|M*d|EM42qWxR;?4asn_imR8M|R~_wdk? z0>eCJaT~?lYbh?=Zmz)jvq;P-@0Hx|Z5{$69V>8{$Ec`{V&8QfAMWZaa7aUP_p~Bz z+)iU|)enUcjuhBi$ENHY<-pG>c+PYLqkBh|it8g&f0XN{sve>G(yCve`oC6PUC-8M_W9?On%eazlsdBOk7es4`}{?v%IbD^ z976#p00p3cQD9^am8!6w9@+hK*5|2xp4Rj9dY|4OBD??f?0%BoZ!-Il6>zm*Sq^zW F`wt{av3>vm literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/favicon.ico b/helmfile/files/theme/favicon.ico deleted file mode 100644 index 667f924465b0be93987ff608358631bd1188fbb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 zcmeI5O?KNh5P<2IMY?lWU7A{E=^H3FNOn@PiEdD@?es}Euxqui%lHQN4Xhg^H;8T! zEo)h?>6=mq&-G$0xf4TuIr1EK-ZKr0Poi+@Jji|ez8^Xt3q`Sl8xzro)u#4q$=t@@z* zakf4G`?QsEBHcJ!eEAibhs@g5KDA9OudvUN;;hvz(A&)TNsvD7%Ke#gn}_p17eloJ z6X%1C?a%ORYQLMI<%P%3%eSCE=y#ZTov7WjT7fgr!l1huk^Y+cAD`_mmN$W7b!xWp zdp`Q+8GmL@$_%U!<~ZaOY-r2)g2(OvjJLr&=Y&0PJ z*`Vm9A;P~GwX>;I__IOLOGAWzFKTB~sqklmqL+pU|6bJ2rc&Y021PFo5&pfXolT{} zpACv$8Y29AQ9GMTg+Ch34zbF2s826A) z*W1x_)``Pgl?ea-`RBQ=4?7V4eE8>fu!V6#S9wABGvr_7hUrZ$8h{_$iw@8bKAPHtgLeh=Rt#km{p zo1I+Kh}WD7|Ef>d)kz)w?JN5@`Y;9?xa`yxYK{Yj;QxK`&us&b&oTCNW(PIq1%-c3 ziT*FIEnNyxKQ}V!5@2Jjtgq#1K}SJ|GX#o zep84APIe&tbFI1m<#7Dx(proMyNkcxXW)!-)TrJG&`<8zxRd>{A8={-}f`i6F2k>~@iv36}kSLMw8UmKGC0)N+g zfV=9iOFdNcU}#q^^>TvG^{2-9a6cAlzX}`YH`b}6KgwgGLjS-5$C{L50+q{PZinjlzUa#nclC@x%0AWM z*tD!UF6!?2i4YIa7W{o-To3zvi4W=T@a)N^dgrtqc@D6AhLlN%b-6tAgA?bM+Cq68 z7z^v4`Voom=QaT`^!}$lcIZpN)y;5@GiTZ4ufzcNYk_d=(nQDHw~-id*aq-;pToQs zg)Nai8z-VX63dwHCHsLqOg&ewj+=wa_h7@Z#{IG_nE3$u=Vpf%6CxY$mzmqkDi07o zD>XRZhx5C!=6sudE_X6796}5jAp0j9pt)8u82=wI`@#k~cz*&*dl2@y2_))$Iw8br zUu}f3-q7-W0sDo8p^OL6)?ZM;;D1(g#E~8s;JjY!b2~l^7~>-7>Xv2BZW#a3=Oy0P zvktu90evQDJHT_Ek)6k@N3mUL^qEfIwb;-EZd=eTUnAzpH@g`D|rG&nUKu$t@*i}vKu$~Lvy~;U56H0Xad~@Nh6YsDqYU3MRIF?PeEFaZWh&)u89G&2 z5Bsjl3rk*E^4gL&mb|m%%$9f6`atpJ{-M}ZMtzmHKP036O?ef3fS)a=X1$8W$UB$k zu&~HwSQuxSvKO^pufWg?Kf?!PaJ6+=hGqQB)%ulMeoj`a)t0)5CF_`(K}Yn*mX+CP z%T@(2V!#I!qd&U48Mah?j9es@R24@c`ZG52!pL(YuZ(QOyuqe=6*aJgslI4{sZOg7 d){pb;O@)Psu4bG-|E7A7KCM?9l*Go1{{tpKr%M0; diff --git a/helmfile/files/theme/favicon144.png b/helmfile/files/theme/favicon144.png deleted file mode 100644 index 0825116f46dc8db3c79caa1427a4c5d308f34578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2814 zcmZ`*X*AT07yiv)%%CjEzH3OKDMrdRma)@Vqm0JBFENZUVJu;gp%O*%hA|{XldVWX z5#p6hF|uYC$(HT!{q#TQJ?H)K+~=Ho&$*wTd!L7bu{JrvCB_8+z!5W3BilpH`Ug+A zUt6Ps9TyGmhxh7i_U`I-D&(ur5MuqBwWwM?y>RbjzU#y)@x!&?6AV*wk`OGbPYxt- z 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 bWO4v9*x*a*$9`@;%&veL+S;hf0GIGTV6YZW diff --git a/helmfile/files/theme/favicon16.png b/helmfile/files/theme/favicon16.png deleted file mode 100644 index 6bf08436683bb4e58f227531a1b2a93f0fe7c411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmV+c0{;DpP)NDDOT5w^bw?BH$tn+KzHJz3O+%j zJDZ}2^Z|rew?$N9iYuiQg+v+e92efCHo1vl|JCr%Ip6u`FrupbkGyu5Z&R0Pr{*Oh zeX3YQ_Ii?u&E+DtRwJzvOb*&9RpxU&CtL2F&qa_^igE* ze?6vBt63>~n?MNw=bjQxVQH>95c=LOZ~}>Mu}k?YcQZt!p1|Qv0KIoKGWo&6AQz3kK@KaO z{+G3%oY%Zqz{*ij019`cy9E%fMk~mCp0x+Dsl-jc%LPqP4Dht6oy@a#KMpXF(Amu&>=HoV1zAOXIMd{Q&}oCY_LF92GmX+=+Lkr7Su`< zkXTwFkQk5}y1_yR5U9=N_+RKXCb{dyjh*;Tn^ORwASQEx( zhk&pYrsW*`#+MPZ1Y3r&xg{X_m5c>S8Gtxd*q+;T8C@eFtg9(f415aXSz{W|5r3=? zEYzVR@+-j_BhHi4^%D>c23|MeOU?Qjj_XWgkh(*1TpP!wQ1-mXu9+BC%^u1tVu`?iV>UBiuKc%NBB`=3i7}5{0_9}Agl9e1n-0DZII1}$ z)bu4O=8;RFDfI@gO0Fjzd?O&5)qG2e`Q#FqgGVFRiw?dK5Y4uION#mA5};>#WdtD_aOH& z2~F;E|N49}wMzSr;a+6T2)PBPS)!w87jWHm*2d&s13R{A%fXi1{*^o7tdG6lJM4EM zHrWFT`wY^nQAS^$i$iO2Pr>WgMNo9 zINeZV(Q0__1N1Hf@?Kx`4)1Xn+}gX}dvA?>5+DH*AOR8}0TLhq5+H#L0@3RaaqGd# z$SivLA|n%?HX#r-Hsgbv4@YM5Jz*Q3z$kTV%|97FVMgc>7^QBkHG5yWQR&87v!|Iv z8kKIWwc_ccjoGzX7^z!oMA|0S+*kaas}1L13Kr(kpk z1m+O)nuE9u>6So6p4cB7t(En;a3h zZZS4PxgoHuYj&tx2~%;ObHm$4RMDo?tJ|S=RT~p9h7$tSG|iH8m~qL;tPDB~fum=U zM5nYPCRiF~5{|V>U@c9ftaF%o-RkTNb`k<>7?irFW$7m8G3N0}CgT_@1eT7|ChrXIhbBpdiBf*k_PD&64YgBfk+AVbl*09JVFIHeMGKowAM+6SfH3fw9>ku!AtN zACez&Vmq2Jc} zQ|SNE`f8!Szo%cns#H_&Ur=g8@1O1O*YxYBmCEbu?)*#wBtQZr&?QjoepG6J^>jn` nPg$Rv`gN@5z3YAN{?O9>7y9>;-u{nVq+0Xt0UtUhS literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/files/favicon.png b/helmfile/files/theme/files/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3a6cda81602ea17912cd3765ef1af7a852e3fd GIT binary patch literal 1256 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 literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/groupware/favicon.svg b/helmfile/files/theme/groupware/favicon.svg new file mode 100644 index 00000000..822a7bd3 --- /dev/null +++ b/helmfile/files/theme/groupware/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/helmfile/files/theme/knowledge/favicon.png b/helmfile/files/theme/knowledge/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f1509678d71cb5b5a5adcc828d35a686a754d32e GIT binary patch literal 1515 zcmVZ=v3k>WUL-bMP!{7deqPRqMg3;^NZy zgTyeLcCsolA_9w*57ZKO6Xl+w(|)w)IZ}CNrt*%sJi0UC%B(iWA(RQvsY45g|N*$+V;jog7r6Zz@i?i((919%QtV=R(8jcmB zadnb$nr&G)7AQ)_9nQqF{8>0w=uu}{Du>}%TT{2i5I9Tsd^WxTSl(2F&#M)0G3TyR- zq?;lyz`*GMCtsK2Dcd4V4!}1a0+;7Ev2-cK`orc<|L8LTUKW9)6NltB%wbAg8p5hE zHkrZL)FD{Hj5sZcU!O1SYQNG#Gw}28JIrLC32~R_OZe`>CR%}&?4$3TEY6j%m}`x+ z==E}?=*TXQx@*;HX|GImDR$RNJZN0w8(~b};lx^JIJHSUn|AK)pmO7&G z9~+bzcj28!VByOTH=|()8+78dMDACYzZvvg7)vIVI4zOa7fWDc=~9U<>!`&2e3dKP z64v7x8z!j4EzR>~TY_dC6Ex!1ZiJNCmY`Xu({3!#h+DbBn{5dzS9so7G~(*7rE$P? zjx^$K8xY5IjuhgwZCfWCa5^X_HT&lxa5CGPA*hBoU)C%D>RsFek3NH~sdg`v}ZoPF&xy^u_f(@12u@d0mph&mMDeE#df3 zdKdcm5KLlH+zTQujjYpbd+9Zs{WG(@%CqB{=)yP46P*FheUibGoiK@6aoX1Dg>Ob) zB<<5o^gFC#eg*u&Jz)9AQp59?+7THYw=GRMFk2UN{!-=reiQg-W9Ofw8TPbHB){^e z%^qYm4&FpzJ7=V9UX#Nx90pcJ+KZKU)><8S3qCMsATKde?SZP|w7rWhd)aIs zS{_H@zQ-==uE)s_P0HZ|lzTKzYfw>B@wKl>L%Tzz&CAMRM&dm<`-xV#nOa%4ojq;q z-6rsiL>5jOB$FSxMua6ay&qd74x`-j97I{7h7aEBQ;b79e!85dJ;pqm;6IM&wRNS@ RVX6QC002ovPDHLkV1myF(_jDq literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/knowledge/favicon.svg b/helmfile/files/theme/knowledge/favicon.svg new file mode 100644 index 00000000..ff6494ed --- /dev/null +++ b/helmfile/files/theme/knowledge/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/helmfile/files/portal-tiles/admin_announcement.svg b/helmfile/files/theme/portal-tiles/admin_announcement.svg similarity index 100% rename from helmfile/files/portal-tiles/admin_announcement.svg rename to helmfile/files/theme/portal-tiles/admin_announcement.svg diff --git a/helmfile/files/portal-tiles/admin_context.svg b/helmfile/files/theme/portal-tiles/admin_context.svg similarity index 100% rename from helmfile/files/portal-tiles/admin_context.svg rename to helmfile/files/theme/portal-tiles/admin_context.svg diff --git a/helmfile/files/portal-tiles/admin_functionalmailbox.svg b/helmfile/files/theme/portal-tiles/admin_functionalmailbox.svg similarity index 100% rename from helmfile/files/portal-tiles/admin_functionalmailbox.svg rename to helmfile/files/theme/portal-tiles/admin_functionalmailbox.svg diff --git a/helmfile/files/portal-tiles/admin_group.svg b/helmfile/files/theme/portal-tiles/admin_group.svg similarity index 100% rename from helmfile/files/portal-tiles/admin_group.svg rename to helmfile/files/theme/portal-tiles/admin_group.svg diff --git a/helmfile/files/portal-tiles/admin_resource.svg b/helmfile/files/theme/portal-tiles/admin_resource.svg similarity index 100% rename from helmfile/files/portal-tiles/admin_resource.svg rename to helmfile/files/theme/portal-tiles/admin_resource.svg diff --git a/helmfile/files/portal-tiles/admin_user.svg b/helmfile/files/theme/portal-tiles/admin_user.svg similarity index 100% rename from helmfile/files/portal-tiles/admin_user.svg rename to helmfile/files/theme/portal-tiles/admin_user.svg diff --git a/helmfile/files/portal-tiles/anonymous_login.svg b/helmfile/files/theme/portal-tiles/anonymous_login.svg similarity index 100% rename from helmfile/files/portal-tiles/anonymous_login.svg rename to helmfile/files/theme/portal-tiles/anonymous_login.svg diff --git a/helmfile/files/portal-tiles/dummy_circle.svg b/helmfile/files/theme/portal-tiles/dummy_circle.svg similarity index 100% rename from helmfile/files/portal-tiles/dummy_circle.svg rename to helmfile/files/theme/portal-tiles/dummy_circle.svg diff --git a/helmfile/files/portal-tiles/fileshare_activity.svg b/helmfile/files/theme/portal-tiles/fileshare_activity.svg similarity index 100% rename from helmfile/files/portal-tiles/fileshare_activity.svg rename to helmfile/files/theme/portal-tiles/fileshare_activity.svg diff --git a/helmfile/files/portal-tiles/fileshare_directdoc_odp.svg b/helmfile/files/theme/portal-tiles/fileshare_directdoc_odp.svg similarity index 100% rename from helmfile/files/portal-tiles/fileshare_directdoc_odp.svg rename to helmfile/files/theme/portal-tiles/fileshare_directdoc_odp.svg diff --git a/helmfile/files/portal-tiles/fileshare_directdoc_ods.svg b/helmfile/files/theme/portal-tiles/fileshare_directdoc_ods.svg similarity index 100% rename from helmfile/files/portal-tiles/fileshare_directdoc_ods.svg rename to helmfile/files/theme/portal-tiles/fileshare_directdoc_ods.svg diff --git a/helmfile/files/portal-tiles/fileshare_directdoc_odt.svg b/helmfile/files/theme/portal-tiles/fileshare_directdoc_odt.svg similarity index 100% rename from helmfile/files/portal-tiles/fileshare_directdoc_odt.svg rename to helmfile/files/theme/portal-tiles/fileshare_directdoc_odt.svg diff --git a/helmfile/files/portal-tiles/fileshare_files.svg b/helmfile/files/theme/portal-tiles/fileshare_files.svg similarity index 100% rename from helmfile/files/portal-tiles/fileshare_files.svg rename to helmfile/files/theme/portal-tiles/fileshare_files.svg diff --git a/helmfile/files/portal-tiles/groupware_calendar.svg b/helmfile/files/theme/portal-tiles/groupware_calendar.svg similarity index 100% rename from helmfile/files/portal-tiles/groupware_calendar.svg rename to helmfile/files/theme/portal-tiles/groupware_calendar.svg diff --git a/helmfile/files/portal-tiles/groupware_contacts.svg b/helmfile/files/theme/portal-tiles/groupware_contacts.svg similarity index 100% rename from helmfile/files/portal-tiles/groupware_contacts.svg rename to helmfile/files/theme/portal-tiles/groupware_contacts.svg diff --git a/helmfile/files/portal-tiles/groupware_mail.svg b/helmfile/files/theme/portal-tiles/groupware_mail.svg similarity index 100% rename from helmfile/files/portal-tiles/groupware_mail.svg rename to helmfile/files/theme/portal-tiles/groupware_mail.svg diff --git a/helmfile/files/portal-tiles/groupware_tasks.svg b/helmfile/files/theme/portal-tiles/groupware_tasks.svg similarity index 100% rename from helmfile/files/portal-tiles/groupware_tasks.svg rename to helmfile/files/theme/portal-tiles/groupware_tasks.svg diff --git a/helmfile/files/portal-tiles/management_knowledge.svg b/helmfile/files/theme/portal-tiles/management_knowledge.svg similarity index 100% rename from helmfile/files/portal-tiles/management_knowledge.svg rename to helmfile/files/theme/portal-tiles/management_knowledge.svg diff --git a/helmfile/files/portal-tiles/management_project.svg b/helmfile/files/theme/portal-tiles/management_project.svg similarity index 100% rename from helmfile/files/portal-tiles/management_project.svg rename to helmfile/files/theme/portal-tiles/management_project.svg diff --git a/helmfile/files/portal-tiles/misc_notes.svg b/helmfile/files/theme/portal-tiles/misc_notes.svg similarity index 100% rename from helmfile/files/portal-tiles/misc_notes.svg rename to helmfile/files/theme/portal-tiles/misc_notes.svg diff --git a/helmfile/files/portal-tiles/realtime_collaboration.svg b/helmfile/files/theme/portal-tiles/realtime_collaboration.svg similarity index 100% rename from helmfile/files/portal-tiles/realtime_collaboration.svg rename to helmfile/files/theme/portal-tiles/realtime_collaboration.svg diff --git a/helmfile/files/portal-tiles/realtime_videoconference.svg b/helmfile/files/theme/portal-tiles/realtime_videoconference.svg similarity index 100% rename from helmfile/files/portal-tiles/realtime_videoconference.svg rename to helmfile/files/theme/portal-tiles/realtime_videoconference.svg diff --git a/helmfile/files/portal-tiles/selfservice_changepassword.svg b/helmfile/files/theme/portal-tiles/selfservice_changepassword.svg similarity index 100% rename from helmfile/files/portal-tiles/selfservice_changepassword.svg rename to helmfile/files/theme/portal-tiles/selfservice_changepassword.svg diff --git a/helmfile/files/portal-tiles/selfservice_editprofile.svg b/helmfile/files/theme/portal-tiles/selfservice_editprofile.svg similarity index 100% rename from helmfile/files/portal-tiles/selfservice_editprofile.svg rename to helmfile/files/theme/portal-tiles/selfservice_editprofile.svg diff --git a/helmfile/files/portal-tiles/selfservice_protectaccount.svg b/helmfile/files/theme/portal-tiles/selfservice_protectaccount.svg similarity index 100% rename from helmfile/files/portal-tiles/selfservice_protectaccount.svg rename to helmfile/files/theme/portal-tiles/selfservice_protectaccount.svg diff --git a/helmfile/files/theme/portal/favicon.ico b/helmfile/files/theme/portal/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..041f0d610ad24892158e5ce0175ca1c43979a4da GIT binary patch literal 50222 zcmeI5KZqnn6vq2dFfo`&3`8e1xL{*7Fw|@!FIF^@b5T%(gPjXS@z%uPPCd%-RWt+uXp;UovE3cuKxFG>Xp>>bX9ft+wWKJRrOz^ z=nVcle?G#$-RS;nQFLDvMGqsRDEa}JdKQatcr@YPOEN zRtXHtPH>zq@+R^CSyMF%P)lmswa8z%8vE=ZZzF4}R{`?t6b5A20Q>17AJuEF?medf zweA^EEM0`{)yHyzHvDsQX;9;au&;x>*RY*>xLF0rVClGtw#sZ)!?sHHmhn3nr?Igu zLi3NiFlJ)2-uz9qrey_sCclGC9ps~yZPUZgSAcA0#yXT~e4MYDl$!s=OBmIaVwl=t zRiK;2OSIgyw$=tx6u9GaFlZpfD7C|?z<~aSR%_Ol+CZ8DWY(8vl-greU>z;?tgWgCpR{M!3z zpGp4yw{C6y+&^?lc?n=;>@Vm?^g~TK1>j@Dw?1s$w~V}|`VsqRG+z2W8=vyY6m7Dz6&3rzlGD^q`KpS6vVsb0A$xAqnA(*lz}*~--4 z+GlNJWU5zgtIO@=sf)?+gXfyfPrRJ)xXkG@7w>$WjJ`c=U*sArF!__MY#D!Rh1`1(N&3bwOL8zWP_cii$kA9+5BKk)xqFcTMBnb+LL3>go6j-fV2rutRj zmW{o`H+R|zbR~~!;$kaXC2r)G`rgrBC6#P;a~mU5{i<Pj9`MQdUi><6KZYSq(J^0d2xqR`x6z?S}X+h{>lGmHFmx8AJ99mvOGn{*>8Pbm{W`o3Grcjf>Aoy!OTK z5iIg8Q=QM;IL|2Ra}v+N`7Htyn?+?lbK|*mQEqH6F%^Bs+iPxkHfUA2(dS}ZXISK8 z`8wq$$NP$W4@0@h;YLfA{cezQlf^A%hwp&cVy1GF$1Syp-=O^H#@z8vxe4W#nFW5M zufIS2jwruRGtSF=H<#x;MdxizT$kWAtD<&EJrBq*Rk>7dRjS$CzLZ;YT32}_soaKm zx2kZQ#C?QNl2mRkc5$0fl8Zik*Ral%-h*>^We+{y4Qv0yz5N7A5%C+3V*Jv zYQ3DeQKOpP33a^>K+g2jP?GC;QXTJBlwo%KsN84q>gY@9vp5c8NgBs0dM}1HxcYq- zPn)23y_F3i`s$;xMPd{;qQGE7}a~$p?)8BRJa{MxyN!Yejd~)^G3bzYs9+~ei zX{>a7_RZBls@yI_U(5KF9bc;CP-I_qpG#)?NL_mAbC^TY?$DFdHNgtUsUm*Hw$k5O zY_dO{JoiTFxm{8HUD|UlrD>u-8ZWDQFRdnDRAv)i`ClnJj2$k1Q1>>ZDU zd5Y9`6KBid>9S}jk3b(r+HJhRjyivnvA656cv7-!MIx9USOV}jut zEB&Fjc}gwi*7e8i;4STD+_;1qo53q0Ux4jAvoW_0%+_&EE<3X6OmiEv>&Z1cc*}Yw zW?323*$Q4Ec>>&-i)5TkOJyet+^&hyyfRpRRh0E%8ncT(+c>7p0A@`DI9rY-Eda9qqd&0BJx$Q#Iq$eOBA z;1Ijvc+{PzdzIxp4)P1gyU16OZy{^4D?pv7*#`2OE0bh6*^3+VwAwCcC^@!)w@qT)I80Onwm>o~1$D5h)D0jegyvps6 - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/projects/favicon.svg b/helmfile/files/theme/projects/favicon.svg new file mode 100644 index 00000000..2c72b7f4 --- /dev/null +++ b/helmfile/files/theme/projects/favicon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/helmfile/files/theme/videoconference/favicon.svg b/helmfile/files/theme/videoconference/favicon.svg new file mode 100644 index 00000000..9078559d --- /dev/null +++ b/helmfile/files/theme/videoconference/favicon.svg @@ -0,0 +1,5 @@ + + + + +