diff --git a/application/org.openjdk.jmc.feature.flightrecorder/feature.xml b/application/org.openjdk.jmc.feature.flightrecorder/feature.xml
index f5d1b8eacb..1be101e2e0 100644
--- a/application/org.openjdk.jmc.feature.flightrecorder/feature.xml
+++ b/application/org.openjdk.jmc.feature.flightrecorder/feature.xml
@@ -191,4 +191,23 @@
install-size="0"
version="0.0.0"
unpack="false"/>
+
+
+
+
diff --git a/application/org.openjdk.jmc.flightrecorder.cjfr/META-INF/MANIFEST.MF b/application/org.openjdk.jmc.flightrecorder.cjfr/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..39c5843336
--- /dev/null
+++ b/application/org.openjdk.jmc.flightrecorder.cjfr/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-RequiredExecutionEnvironment: JavaSE-21
+Bundle-Name: Condensed Flight Recording Plug-in
+Bundle-SymbolicName: org.openjdk.jmc.flightrecorder.cjfr;singleton:=true
+Bundle-Version: 10.0.0.qualifier
+Bundle-Vendor: SAP SE
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.openjdk.jmc.flightrecorder.ui,
+ me.bechberger.condensed.data.jmc,
+ org.openjdk.jmc.flightrecorder.writer
+Import-Package: org.openjdk.jmc.ui,
+ me.bechberger.condensed,
+ me.bechberger.jfr
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.openjdk.jmc.flightrecorder.cjfr
diff --git a/application/org.openjdk.jmc.flightrecorder.cjfr/build.properties b/application/org.openjdk.jmc.flightrecorder.cjfr/build.properties
new file mode 100644
index 0000000000..bf4f815c59
--- /dev/null
+++ b/application/org.openjdk.jmc.flightrecorder.cjfr/build.properties
@@ -0,0 +1,5 @@
+source.. = src/main/java/
+output.. = target/classes/
+bin.includes = META-INF/,\
+ plugin.xml,\
+ .
diff --git a/application/org.openjdk.jmc.flightrecorder.cjfr/plugin.xml b/application/org.openjdk.jmc.flightrecorder.cjfr/plugin.xml
new file mode 100644
index 0000000000..7bdddf542d
--- /dev/null
+++ b/application/org.openjdk.jmc.flightrecorder.cjfr/plugin.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
diff --git a/application/org.openjdk.jmc.flightrecorder.cjfr/pom.xml b/application/org.openjdk.jmc.flightrecorder.cjfr/pom.xml
new file mode 100644
index 0000000000..6d50a72337
--- /dev/null
+++ b/application/org.openjdk.jmc.flightrecorder.cjfr/pom.xml
@@ -0,0 +1,22 @@
+
+
+
+ 4.0.0
+
+ org.openjdk.jmc
+ missioncontrol.application
+ ${revision}${changelist}
+
+ org.openjdk.jmc.flightrecorder.cjfr
+ eclipse-plugin
+
+ ${project.basedir}/../../configuration
+
+
diff --git a/application/org.openjdk.jmc.flightrecorder.cjfr/src/main/java/org/openjdk/jmc/flightrecorder/cjfr/CjfrEditor.java b/application/org.openjdk.jmc.flightrecorder.cjfr/src/main/java/org/openjdk/jmc/flightrecorder/cjfr/CjfrEditor.java
new file mode 100644
index 0000000000..1e53785794
--- /dev/null
+++ b/application/org.openjdk.jmc.flightrecorder.cjfr/src/main/java/org/openjdk/jmc/flightrecorder/cjfr/CjfrEditor.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2026, SAP SE and/or its affiliates. All rights reserved.
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * The contents of this file are subject to the terms of either the Universal Permissive License
+ * v 1.0 as shown at https://oss.oracle.com/licenses/upl
+ */
+package org.openjdk.jmc.flightrecorder.cjfr;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.eclipse.swt.widgets.Composite;
+import org.openjdk.jmc.flightrecorder.ui.JfrEditor;
+import org.openjdk.jmc.ui.MCPathEditorInput;
+
+import me.bechberger.condensed.CondensedInputStream;
+import me.bechberger.jfr.BasicJFRReader;
+import me.bechberger.jfr.WritingJFRReader;
+
+/**
+ * Eclipse editor for .cjfr (condensed JFR) files. Inflates the recording to a temporary .jfr file
+ * and delegates to the standard JFR loading machinery.
+ */
+public class CjfrEditor extends JfrEditor {
+
+ public static final String EDITOR_ID = "org.openjdk.jmc.flightrecorder.cjfr.CjfrEditor"; //$NON-NLS-1$
+
+ @Override
+ public void createPartControl(Composite parent) {
+ File cjfrFile = MCPathEditorInput.getFile(getEditorInput());
+ try {
+ File tempJfr = File.createTempFile("cjfr-inflate-", ".jfr"); //$NON-NLS-1$ //$NON-NLS-2$
+ tempJfr.deleteOnExit();
+ try (CondensedInputStream cin = new CondensedInputStream(
+ new BufferedInputStream(new FileInputStream(cjfrFile)));
+ FileOutputStream fos = new FileOutputStream(tempJfr)) {
+ WritingJFRReader.toJFRStream(new BasicJFRReader(cin), fos);
+ }
+ setInput(new MCPathEditorInput(tempJfr, false));
+ } catch (IOException e) {
+ // Fall through: let RecordingLoader fail gracefully on the original file
+ }
+ super.createPartControl(parent);
+ }
+}
diff --git a/application/pom.xml b/application/pom.xml
index 72b8317e36..43ce002cc8 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -90,6 +90,7 @@
org.openjdk.jmc.flightrecorder.pde
org.openjdk.jmc.flightrecorder.rules.extensionprovider
org.openjdk.jmc.flightrecorder.ui
+ org.openjdk.jmc.flightrecorder.cjfr
org.openjdk.jmc.greychart
org.openjdk.jmc.greychart.ui
org.openjdk.jmc.ide.jdt
@@ -140,6 +141,11 @@
flightrecorder
${revision}${changelist}
+
+ org.openjdk.jmc
+ flightrecorder.writer
+ ${revision}${changelist}
+
org.openjdk.jmc
flightrecorder.configuration
diff --git a/releng/platform-definitions/platform-definition-2026-06/platform-definition-2026-06.target b/releng/platform-definitions/platform-definition-2026-06/platform-definition-2026-06.target
index af39e98f25..8269af41d6 100644
--- a/releng/platform-definitions/platform-definition-2026-06/platform-definition-2026-06.target
+++ b/releng/platform-definitions/platform-definition-2026-06/platform-definition-2026-06.target
@@ -62,6 +62,7 @@
+
diff --git a/releng/third-party/pom.xml b/releng/third-party/pom.xml
index 873a91edd1..7ccb4afc0a 100644
--- a/releng/third-party/pom.xml
+++ b/releng/third-party/pom.xml
@@ -51,6 +51,7 @@
11.0.15
3.3.0
+ 0.1.3
2.0.5
2.0.3
2.1.4
@@ -215,6 +216,21 @@
org.pushingpixels.radiance.animation.api.*
+
+
+ me.bechberger:condensed-data:jar:jmc:${condensed-data.version}
+ false
+ false
+ true
+
+ me.bechberger.condensed.data
+ Condensed Data
+ me.bechberger.*
+ *;resolution:=optional
+
+