From d62534b3eb21eb13f5d5d8fb54439f17ddf68651 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 20 Jan 2026 22:20:17 +0100 Subject: [PATCH 1/6] fixed plantuml permissions Signed-off-by: Stephan Richter --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 63433f22..b81d2ace 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,8 +22,9 @@ RUN adduser -D umbrella COPY --from=java_build /Umbrella/backend/build/libs/backend.jar /home/umbrella/jar/ RUN chown -R umbrella /home/umbrella ADD https://github.com/plantuml/plantuml/releases/download/v1.2025.10/plantuml-1.2025.10.jar /home/umbrella/plantuml.jar -USER umbrella WORKDIR /home/umbrella +RUN chmod a+wx plantuml.jar +USER umbrella RUN mkdir .config && ln -s /host/config.json .config/Umbrella.json EXPOSE 80 CMD java -jar jar/backend.jar From 53fe79fbbd23b05d85b175e9eedd3ad648097777 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 20 Jan 2026 22:44:30 +0100 Subject: [PATCH 2/6] fixed image heights when scaling width Signed-off-by: Stephan Richter --- web/src/main/resources/web/css/bloodshed.css | 3 ++- web/src/main/resources/web/css/default.css | 3 ++- web/src/main/resources/web/css/winter.css | 15 ++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/web/src/main/resources/web/css/bloodshed.css b/web/src/main/resources/web/css/bloodshed.css index 497737b0..76238700 100644 --- a/web/src/main/resources/web/css/bloodshed.css +++ b/web/src/main/resources/web/css/bloodshed.css @@ -57,8 +57,9 @@ footer { margin: 5px; } -img { +img, svg { max-width: 100%; + height: auto !important; } nav { diff --git a/web/src/main/resources/web/css/default.css b/web/src/main/resources/web/css/default.css index 70939c19..54205984 100644 --- a/web/src/main/resources/web/css/default.css +++ b/web/src/main/resources/web/css/default.css @@ -57,8 +57,9 @@ footer { margin: 5px; } -img { +img, svg { max-width: 100%; + height: auto !important; } nav { diff --git a/web/src/main/resources/web/css/winter.css b/web/src/main/resources/web/css/winter.css index 6847d7e3..3c239254 100644 --- a/web/src/main/resources/web/css/winter.css +++ b/web/src/main/resources/web/css/winter.css @@ -57,17 +57,18 @@ footer { margin: 5px; } -img { +img, svg { max-width: 100%; + height: auto !important; } nav { - position: sticky; - z-index: 100; - top: 0; - padding: 5px; - margin: 0 0 10px 0; - border-bottom: 1px solid; + position: sticky; + z-index: 100; + top: 0; + padding: 5px; + margin: 0 0 10px 0; + border-bottom: 1px solid; } td, tr{ From 9394ca597c07ce9642f9f27c6a4d57b2f7de3557 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 20 Jan 2026 22:52:30 +0100 Subject: [PATCH 3/6] fixed another bug Signed-off-by: Stephan Richter --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b81d2ace..e5006505 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ COPY --from=java_build /Umbrella/backend/build/libs/backend.jar /home/umbrella/j RUN chown -R umbrella /home/umbrella ADD https://github.com/plantuml/plantuml/releases/download/v1.2025.10/plantuml-1.2025.10.jar /home/umbrella/plantuml.jar WORKDIR /home/umbrella -RUN chmod a+wx plantuml.jar +RUN chmod a+rx plantuml.jar USER umbrella RUN mkdir .config && ln -s /host/config.json .config/Umbrella.json EXPOSE 80 From 1059164b4a9d166a918b58f7104bc594a3b1baf7 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Thu, 22 Jan 2026 20:46:43 +0100 Subject: [PATCH 4/6] =?UTF-8?q?bugfix:=20markdown=20rendering=20glitched?= =?UTF-8?q?=20when=20several=20@startuml=E2=80=A6@enduml=20sections=20were?= =?UTF-8?q?=20present=20in=20one=20document?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stephan Richter --- core/src/main/java/de/srsoftware/umbrella/core/Util.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Util.java b/core/src/main/java/de/srsoftware/umbrella/core/Util.java index ee909fa1..d869a805 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Util.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Util.java @@ -35,7 +35,7 @@ import org.json.JSONObject; public class Util { public static final System.Logger LOG = System.getLogger("Util"); - private static final Pattern UML_PATTERN = Pattern.compile("@start(\\w+)(.*)@end(\\1)",Pattern.DOTALL); + private static final Pattern UML_PATTERN = Pattern.compile("@start(\\w+)(.*?)@end(\\1)",Pattern.DOTALL); private static File plantumlJar = null; private static final JParsedown MARKDOWN = new JParsedown(); public static final String SHA1 = "SHA-1"; @@ -79,7 +79,7 @@ public class Util { try { if (plantumlJar != null && plantumlJar.exists()) { var matcher = UML_PATTERN.matcher(source); - if (matcher.find()) { + while (matcher.find()) { var uml = matcher.group(0).trim(); var start = matcher.start(0); var end = matcher.end(0); @@ -96,6 +96,7 @@ public class Util { byte[] out = is.readAllBytes(); var svg = new String(out, UTF_8); source = source.substring(0, start) + svg + source.substring(end); + matcher = UML_PATTERN.matcher(source); } } } From 4cd1ea327752fad69c897e2114d182a6c910ded1 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Thu, 22 Jan 2026 23:46:20 +0100 Subject: [PATCH 5/6] now caching plantuml diagrams Signed-off-by: Stephan Richter --- .../main/java/de/srsoftware/umbrella/core/Util.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Util.java b/core/src/main/java/de/srsoftware/umbrella/core/Util.java index d869a805..39c1447a 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Util.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Util.java @@ -40,6 +40,7 @@ public class Util { private static final JParsedown MARKDOWN = new JParsedown(); public static final String SHA1 = "SHA-1"; private static final MessageDigest SHA1_DIGEST; + private static final Map umlCache = new HashMap<>(); static { try { @@ -84,6 +85,14 @@ public class Util { var start = matcher.start(0); var end = matcher.end(0); + var umlHash = uml.hashCode(); + var svg = umlCache.get(umlHash); + if (svg != null){ + source = source.substring(0, start) + svg + source.substring(end); + matcher = UML_PATTERN.matcher(source); + continue; + } + ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", plantumlJar.getAbsolutePath(), "-tsvg", "-pipe"); var ignored = processBuilder.redirectErrorStream(); var process = processBuilder.start(); @@ -94,7 +103,8 @@ public class Util { try (InputStream is = process.getInputStream()) { byte[] out = is.readAllBytes(); - var svg = new String(out, UTF_8); + svg = new String(out, UTF_8); + umlCache.put(umlHash,svg); source = source.substring(0, start) + svg + source.substring(end); matcher = UML_PATTERN.matcher(source); } From d08138c9e11e0b04203e2d9cc570879ad0eaef92 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 23 Jan 2026 22:36:56 +0100 Subject: [PATCH 6/6] adding debug messages Signed-off-by: Stephan Richter --- core/src/main/java/de/srsoftware/umbrella/core/Util.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Util.java b/core/src/main/java/de/srsoftware/umbrella/core/Util.java index 39c1447a..a6c03005 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Util.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Util.java @@ -86,13 +86,16 @@ public class Util { var end = matcher.end(0); var umlHash = uml.hashCode(); + LOG.log(DEBUG,"Hash of Plantuml code: {0}",umlHash); var svg = umlCache.get(umlHash); if (svg != null){ + LOG.log(DEBUG,"Serving Plantuml generated SVG from cache…"); source = source.substring(0, start) + svg + source.substring(end); matcher = UML_PATTERN.matcher(source); continue; } + LOG.log(DEBUG,"Cache miss. Generating SVG from plantuml code…"); ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", plantumlJar.getAbsolutePath(), "-tsvg", "-pipe"); var ignored = processBuilder.redirectErrorStream(); var process = processBuilder.start(); @@ -103,6 +106,7 @@ public class Util { try (InputStream is = process.getInputStream()) { byte[] out = is.readAllBytes(); + LOG.log(DEBUG,"Generated SVG. Pushing to cache…"); svg = new String(out, UTF_8); umlCache.put(umlHash,svg); source = source.substring(0, start) + svg + source.substring(end);