This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-26700-about
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b4db80685bfca46fc36ce990c79e42943c0f735e
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Nov 7 18:15:49 2026 +0100

    CAMEL-26700: About docs, with a screenshot, and camel get about on the 
diagnostics page; the last 5m line keeps since it started only when it fits
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../modules/ROOT/images/jbang/camel-tui-about.png  | Bin 0 -> 416363 bytes
 .../ROOT/pages/camel-jbang-diagnostics.adoc        |  16 ++++++++++++++
 .../ROOT/pages/camel-jbang-tui-observe.adoc        |  23 +++++++++++++++++++++
 .../modules/ROOT/pages/camel-jbang-tui.adoc        |   2 +-
 .../dsl/jbang/core/commands/tui/AboutView.java     |  12 +++++++----
 5 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-about.png 
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-about.png
new file mode 100644
index 000000000000..a82bde4ac371
Binary files /dev/null and 
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-about.png differ
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang-diagnostics.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-jbang-diagnostics.adoc
index a8c5d7dbf83d..b2d730f79c62 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-diagnostics.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-diagnostics.adoc
@@ -42,6 +42,22 @@ and `--show` picks the sections (`body`, `headers`, 
`properties`, `variables`, `
 NOTE: The error registry is enabled by the `dev` profile, which `camel run` 
uses by default.
 For another profile, or for a Spring Boot or Quarkus application, set 
`camel.errorRegistry.enabled=true`.
 
+=== About
+
+`camel get about` says what an integration does and what has happened, without 
an AI: its purpose (the comment at the
+top of its main source file, else the descriptions of its routes), what comes 
in, its routes (a route called with
+`direct` or `seda` under the route that calls it), what goes out, the 
exchanges of each route and the sends to each
+endpoint since it started, and the last minutes from its timeline.
+
+[source,bash]
+----
+camel get about
+camel get about myApp --json
+----
+
+It is the About view of the TUI as text. The `camel_project_overview` MCP tool 
has the same purpose, and the running
+part when the project runs.
+
 === Timeline
 
 `camel get timeline` shows what each route did in the last minute: how many 
exchanges completed, were recovered by a
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-observe.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-observe.adoc
index 6c52c757ead2..74d535fe0f63 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-observe.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-observe.adoc
@@ -8,6 +8,7 @@ See xref:camel-jbang-tui.adoc[Camel TUI] for getting started 
and the other pages
 
 == Key Features
 
+* <<_about,*About*>> -- what an integration does and what has happened, at a 
glance and without an AI
 * <<_timeline,*Timeline*>> -- per second what went wrong and what it did to 
each route, and the exchanges of a second
 * <<_message_insight,*Message insight*>> -- step through the history of an 
exchange, as a list, a waterfall or on the diagram
 * <<_troubleshooting_errors,*Errors*>> -- failures with the stack trace, the 
message and the path that led there
@@ -15,6 +16,28 @@ See xref:camel-jbang-tui.adoc[Camel TUI] for getting started 
and the other pages
 * <<_http_probe,*HTTP probe*>> -- call the HTTP endpoints of the integration 
from the TUI
 * <<_highlighted_features,*Deep dives*>> -- CVE audit, Kafka, SQL, memory 
leaks, JFR profiling and the catalog
 
+== About
+
+The Overview tab (key *1*) has two views, switched with *v*: *About* an 
integration, shown when one runs, and
+*Integrations*, the table of all of them. About tells what an integration you 
have not seen before does, and what has
+happened to it, with no AI:
+
+image::jbang/camel-tui-about.png[About the chaos demo: its purpose, what comes 
in, its routes and what goes out, the last 5 minutes after an outage of the 
stock service, and a line per route of what happened]
+
+* The header has the Camel version, runtime, files, routes and uptime, and the 
purpose: the comment at the top of the
+main source file (a YAML `#` comment, a Javadoc or `//` comment in Java, an 
XML comment), else the descriptions of the
+routes.
+* *In*, *Routes* and *Out* say what starts it, its routes (a route called with 
`direct` sits under its caller with `↳`,
+one handed off with `seda` with `⇢`) and what it talks to, with the exchanges 
since it started and a sparkline of the
+last 5 minutes. *Up* and *Down* select a line, and *Enter* opens a route 
drilled down on the Diagram, or an endpoint with
+its details on the Endpoint tab.
+* *Last 5m* has the exchanges and how they ended, with the cause that happened 
most, and *What happened* a line per route
+over the last 5 minutes, coloured as on the Timeline, with when the worst 
happened. *+* and *-* zoom between 5, 2 and 1
+minutes (zooming in centres on the last trouble, so you see what the other 
routes did then), and *Left* and *Right*
+move a zoomed window. *4* opens the Timeline for each second.
+
+`camel get about` shows the same from the command line (see 
xref:camel-jbang-diagnostics.adoc#_about[Diagnostics]).
+
 == Timeline
 
 The Timeline tab (key *4*) shows the last minute of the selected integration 
on one time axis, one column per second:
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang-tui.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui.adoc
index 7fe5c98dae93..53ad4f174ee3 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-tui.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui.adoc
@@ -65,7 +65,7 @@ to any tab, or *Shift+F2* to go to a tab by name.
 |===
 | Key | Tab | What It Shows
 
-| 1 | Overview | All running integrations and infrastructure services. Start 
here.
+| 1 | Overview | About an integration, what it does and what has happened, or 
all running integrations and infrastructure services. Start here.
 | 2 | Source | File explorer and editor for your project code, with Camel 
checks, completion and documentation.
 | 3 | Log | Real-time application logs with search and filtering.
 | 4 | Timeline | Per second, the errors and what each route did, and the 
failed, handled and slowest exchanges of a second.
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AboutView.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AboutView.java
index 05850be553ee..bab09aa36d9d 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AboutView.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AboutView.java
@@ -787,10 +787,14 @@ final class AboutView {
             }
         }
         if (total > done) {
-            spans.add(Span.styled("  ·  since it started: " + total + (total 
== 1 ? " exchange" : " exchanges")
-                                  + (totalHandled > 0 ? ", " + totalHandled + 
" handled" : "")
-                                  + (totalFailed > 0 ? ", " + totalFailed + " 
failed" : ""),
-                    Theme.muted()));
+            String since = "  ·  since it started: " + total + (total == 1 ? " 
exchange" : " exchanges")
+                           + (totalHandled > 0 ? ", " + totalHandled + " 
handled" : "")
+                           + (totalFailed > 0 ? ", " + totalFailed + " failed" 
: "");
+            // only when it fits: the line is about the last minutes first
+            int used = spans.stream().mapToInt(sp -> 
sp.content().length()).sum();
+            if (used + since.length() < width - 1) {
+                spans.add(Span.styled(since, Theme.muted()));
+            }
         }
         return Line.from(spans);
     }

Reply via email to