From b505551e24aeb5fe58442618de29a9beb8d2f78f Mon Sep 17 00:00:00 2001 From: Gracjan Sadowicz Date: Thu, 2 Apr 2026 17:17:47 +0200 Subject: [PATCH] fix: resolve HTML minifier warnings in strict build - Strip declarations from 15 SVG icons and add defensive strip in Icon component's getSvg() to prevent future occurrences - Remove control characters (0x0B) from Kubernetes operator guide - Fix invalid

nesting in certificate-configuration by removing standalone wrappers (used without ) and separating inline from surrounding text --- .../certificate-configuration.mdx | 23 ++++++------------- .../the-ravendb-kubernetes-operator-way.mdx | 6 ++--- src/components/Common/Icon.tsx | 3 ++- static/icons/ai-etl.svg | 1 - static/icons/aws.svg | 1 - static/icons/backup-history.svg | 2 +- static/icons/community.svg | 1 - static/icons/data-archival.svg | 2 +- static/icons/dbgroup.svg | 1 - static/icons/docker.svg | 2 +- static/icons/embeddings.svg | 1 - static/icons/encryption.svg | 1 - static/icons/java.svg | 1 - static/icons/kafka-sink.svg | 1 - static/icons/powerbi.svg | 1 - static/icons/rabbitmq-sink.svg | 1 - static/icons/support.svg | 1 - static/icons/vector-search.svg | 1 - .../certificate-configuration.mdx | 23 ++++++------------- .../certificate-configuration.mdx | 23 ++++++------------- 20 files changed, 29 insertions(+), 67 deletions(-) diff --git a/docs/server/security/authentication/certificate-configuration.mdx b/docs/server/security/authentication/certificate-configuration.mdx index 40b67962d3..0f10089aa1 100644 --- a/docs/server/security/authentication/certificate-configuration.mdx +++ b/docs/server/security/authentication/certificate-configuration.mdx @@ -5,8 +5,6 @@ sidebar_position: 0 --- import Admonition from '@theme/Admonition'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; import LanguageSwitcher from "@site/src/components/LanguageSwitcher"; import LanguageContent from "@site/src/components/LanguageContent"; @@ -101,7 +99,6 @@ Read more about RavenDB configuration options [here](../../configuration/configu For example, this is a typical [settings.json](../../configuration/configuration-options.mdx#json) for a manual setup: - {`\{ "ServerUrl": "https://rvn-srv-1:8080", @@ -111,10 +108,9 @@ For example, this is a typical [settings.json](../../configuration/configuration "Path": "/home/secrets/server.pfx", "Password": "s3cr7t p@$$w0rd" \} -\} +\} `} - @@ -136,7 +132,6 @@ Let's look at an example - To use `Security.Certificate.Load.Exec` with a PowerShell script, the [settings.json](../../configuration/configuration-options.mdx#json) must be stored in each node's `Server` folder and will look something like this: - {`\{ "ServerUrl": "https://rvn-srv-1:8080", @@ -147,11 +142,9 @@ must be stored in each node's `Server` folder and will look something like this: \} `} - A sample powershell script called `give_me_cert.ps1` that matches the `settings.json` configuration: - {`try \{ @@ -168,7 +161,6 @@ catch \} `} - @@ -215,21 +207,17 @@ In all secure configurations, the `ServerUrl` must contain the same domain name 5. The PowerShell CLI window will be running the server terminal. The last line should read `ravendb>`. In the CLI, run the [generateClientCert](../../../server/administration/cli.mdx#generateclientcert) command to generate a client certificate. - - The following is a generic RavenDB CLI command. - + - The following is a generic RavenDB CLI command. {`ravendb> generateClientCert [optional password] `} - - In the following example the certificate will be named RavenDBClient, will be stored at C:\Users\administrator\Documents, will be valid for 60 months, and will have no password. If a password is required add it to the end of the command. - {`ravendb> generateClientCert RavenDBClient C:\\Users\\administrator\\Documents 60 `} - - A few seconds after running this command, a `.zip` file will download into the output folder that you defined. 6. Extract the contents of the .zip file generated into the folders where your nodes live. @@ -246,8 +234,11 @@ In all secure configurations, the `ServerUrl` must contain the same domain name 8. To set up as an OS service, run PowerShell as an administrator and navigate to the root `Server` folder where the `settings.json` is located. Copy and paste the following command `.\rvn.exe windows-service register --service-name RavenDB`. - It will set up the cluster as an OS service, which [will launch the server automatically](../../../start/installation/running-as-service.mdx) every time the machine starts, - but will fail to start if the Local Service account doesn't have access to all the required resources. + + + It will set up the cluster as an OS service, which [will launch the server automatically](../../../start/installation/running-as-service.mdx) every time the machine starts, + but will fail to start if the Local Service account doesn't have access to all the required resources. + - Open the "Services" manager for Windows. Make sure that the "RavenDB" service is there and that the Startup Type is "Automatic". 9. Now the service should run whenever the machine starts and the Studio should be accessible by the user with the client certificate. diff --git a/guides/the-ravendb-kubernetes-operator-way.mdx b/guides/the-ravendb-kubernetes-operator-way.mdx index b848e50a16..69bbb9158d 100644 --- a/guides/the-ravendb-kubernetes-operator-way.mdx +++ b/guides/the-ravendb-kubernetes-operator-way.mdx @@ -641,7 +641,7 @@ That decision lives directly in the `RavenDBCluster` spec under `externalAccessC For example, choosing an ingress controller looks like this: ```yaml showLineNumbers -spec: externalAccessConfiguration: type: ingress-controller +spec: externalAccessConfiguration: type: ingress-controller ``` At this stage, this is just a declaration of intent. The detailed configuration for each model is added incrementally later in this part. @@ -1990,7 +1990,7 @@ $ kubectl create secret generic ravendb-client-cert --from-file=client.pfx=/path You can check the secrets were properly created by: ```bash showLineNumbers -$ kubectl get secrets -n ravendb +$ kubectl get secrets -n ravendb NAME TYPE DATA AGE ravendb-certs-a Opaque 1 21s ravendb-certs-b Opaque 1 18s @@ -2165,7 +2165,7 @@ You can watch this process in real time: ```bash showLineNumbers $ kubectl logs job/ravendb-cluster-init -n ravendb ->> Starting RavenDB cluster bootstrapper... [11:55:08] === Starting Discoverability Checks === [11:55:08] Checking if kubectl is already installed... [11:55:08] Downloading and installing kubectl... [11:55:42] kubectl installed successfully. [11:55:42] Waiting for all RavenDB pods to be in 'Running' state... [11:55:42] Pod readiness check: attempt 1/30 [11:55:42] All RavenDB pods are running. [11:55:42] Checking HTTPS (Studio) reachability of RavenDB nodes... [11:55:42] [a] curl -k https://a.ravendb-operator-e2e.ravendb.run:443 [11:55:42] [a] Studio redirect detected - looks good [11:55:42] [b] curl -k https://b.ravendb-operator-e2e.ravendb.run:443 [11:55:42] [b] Studio redirect detected - looks good [11:55:42] [c] curl -k https://c.ravendb-operator-e2e.ravendb.run:443 [11:55:42] [c] Studio redirect detected - looks good [11:55:42] === Discoverability Checks Completed === [11:55:42] === Starting Cluster Initialization === [11:55:53] Registering Admin client certificate... [11:55:53] Registering client cert via rvn on first node... [11:55:53] Client cert registered on the first node. [11:55:54] [B] added as Member [11:55:58] [C] added as Member [11:56:01] Cluster topology: { "Leader": "A", "CurrentState": "Leader", "CurrentTerm": 1, "TopologyId": "76d152b9-f968-499d-af74-2307ca8c37ac", "Members": "A B C" } [11:56:01] === Cluster Initialization Complete === +>> Starting RavenDB cluster bootstrapper... [11:55:08] === Starting Discoverability Checks === [11:55:08] Checking if kubectl is already installed... [11:55:08] Downloading and installing kubectl... [11:55:42] kubectl installed successfully. [11:55:42] Waiting for all RavenDB pods to be in 'Running' state... [11:55:42] Pod readiness check: attempt 1/30 [11:55:42] All RavenDB pods are running. [11:55:42] Checking HTTPS (Studio) reachability of RavenDB nodes... [11:55:42] [a] curl -k https://a.ravendb-operator-e2e.ravendb.run:443 [11:55:42] [a] Studio redirect detected - looks good [11:55:42] [b] curl -k https://b.ravendb-operator-e2e.ravendb.run:443 [11:55:42] [b] Studio redirect detected - looks good [11:55:42] [c] curl -k https://c.ravendb-operator-e2e.ravendb.run:443 [11:55:42] [c] Studio redirect detected - looks good [11:55:42] === Discoverability Checks Completed === [11:55:42] === Starting Cluster Initialization === [11:55:53] Registering Admin client certificate... [11:55:53] Registering client cert via rvn on first node... [11:55:53] Client cert registered on the first node. [11:55:54] [B] added as Member [11:55:58] [C] added as Member [11:56:01] Cluster topology: { "Leader": "A", "CurrentState": "Leader", "CurrentTerm": 1, "TopologyId": "76d152b9-f968-499d-af74-2307ca8c37ac", "Members": "A B C" } [11:56:01] === Cluster Initialization Complete === ``` The logs are intentionally explicit. You’ll see DNS resolution, connectivity checks, and node additions logged step by step. When this job completes successfully, the cluster is fully formed \- no manual setup, no UI-driven registration, no follow-up actions required. diff --git a/src/components/Common/Icon.tsx b/src/components/Common/Icon.tsx index c33e506cea..d7f7f7fc2b 100644 --- a/src/components/Common/Icon.tsx +++ b/src/components/Common/Icon.tsx @@ -26,7 +26,8 @@ export function Icon({ icon, size = "sm", className }: IconProps) { function getSvg(base64String: string, sizeClass: string): string { const svgContent = atob(base64String.split("base64,")[1]); - const sanitizedSvg = svgContent.replace(/fill="[^"]*"/g, 'fill="currentColor"'); + const withoutXmlDecl = svgContent.replace(/<\?xml[^?]*\?>\s*/g, ""); + const sanitizedSvg = withoutXmlDecl.replace(/fill="[^"]*"/g, 'fill="currentColor"'); const svgWithClasses = sanitizedSvg.replace(/]*)>/, ``); return svgWithClasses; } diff --git a/static/icons/ai-etl.svg b/static/icons/ai-etl.svg index 368f28db09..db9a192bf8 100644 --- a/static/icons/ai-etl.svg +++ b/static/icons/ai-etl.svg @@ -1,4 +1,3 @@ - diff --git a/static/icons/aws.svg b/static/icons/aws.svg index b4d79a74d8..7bc8dfd476 100644 --- a/static/icons/aws.svg +++ b/static/icons/aws.svg @@ -1,4 +1,3 @@ - diff --git a/static/icons/backup-history.svg b/static/icons/backup-history.svg index c553d4cc77..684c7d2288 100644 --- a/static/icons/backup-history.svg +++ b/static/icons/backup-history.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/static/icons/community.svg b/static/icons/community.svg index a3b8fa3269..34446e399a 100644 --- a/static/icons/community.svg +++ b/static/icons/community.svg @@ -1,4 +1,3 @@ -