This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new e444cbf4f8f7 chore: docs - a page for the source editor of
camel-jbang, with annotated screenshots (#27196)
e444cbf4f8f7 is described below
commit e444cbf4f8f7fcf59f8e82140917d9e7f7ed82ba
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Oct 1 14:10:10 2026 +0200
chore: docs - a page for the source editor of camel-jbang, with annotated
screenshots (#27196)
A page for the source editor of the camel-jbang TUI: its top features, a
section per feature with an annotated screenshot, and its keys.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
---
.../jbang/camel-tui-source-ai-edit-confirm.png | Bin 0 -> 408684 bytes
.../images/jbang/camel-tui-source-bean-jump.png | Bin 0 -> 322109 bytes
.../jbang/camel-tui-source-change-markers.png | Bin 0 -> 350653 bytes
.../images/jbang/camel-tui-source-completion.png | Bin 0 -> 372049 bytes
.../ROOT/images/jbang/camel-tui-source-diff.png | Bin 0 -> 257372 bytes
.../images/jbang/camel-tui-source-fix-with-ai.png | Bin 0 -> 436980 bytes
.../jbang/camel-tui-source-format-cycling.png | Bin 0 -> 291060 bytes
.../images/jbang/camel-tui-source-go-to-node.png | Bin 0 -> 370251 bytes
.../jbang/camel-tui-source-live-run-data.png | Bin 0 -> 376521 bytes
.../jbang/camel-tui-source-placeholder-doc.png | Bin 0 -> 317413 bytes
.../jbang/camel-tui-source-problems-on-open.png | Bin 0 -> 294140 bytes
.../images/jbang/camel-tui-source-problems.png | Bin 0 -> 398194 bytes
.../images/jbang/camel-tui-source-quick-doc.png | Bin 0 -> 393864 bytes
.../images/jbang/camel-tui-source-quick-fix.png | Bin 0 -> 397887 bytes
.../images/jbang/camel-tui-source-save-blocked.png | Bin 0 -> 352208 bytes
.../ROOT/images/jbang/camel-tui-source-usages.png | Bin 0 -> 319756 bytes
docs/user-manual/modules/ROOT/nav.adoc | 1 +
.../ROOT/pages/camel-jbang-tui-source-editor.adoc | 238 +++++++++++++++++++++
.../modules/ROOT/pages/camel-jbang-tui.adoc | 152 +------------
19 files changed, 247 insertions(+), 144 deletions(-)
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-ai-edit-confirm.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-ai-edit-confirm.png
new file mode 100644
index 000000000000..711c837f2e39
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-ai-edit-confirm.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-bean-jump.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-bean-jump.png
new file mode 100644
index 000000000000..9ae08aeb0fa0
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-bean-jump.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-change-markers.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-change-markers.png
new file mode 100644
index 000000000000..cc231fdb5f27
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-change-markers.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-completion.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-completion.png
new file mode 100644
index 000000000000..aeff6941fe44
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-completion.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-diff.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-diff.png
new file mode 100644
index 000000000000..fe9d3b94b736
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-diff.png differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-fix-with-ai.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-fix-with-ai.png
new file mode 100644
index 000000000000..228daef19d50
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-fix-with-ai.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-format-cycling.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-format-cycling.png
new file mode 100644
index 000000000000..9535047f4fa4
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-format-cycling.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-go-to-node.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-go-to-node.png
new file mode 100644
index 000000000000..95e129bbfeb1
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-go-to-node.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-live-run-data.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-live-run-data.png
new file mode 100644
index 000000000000..ba5a8bf48c6e
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-live-run-data.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-placeholder-doc.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-placeholder-doc.png
new file mode 100644
index 000000000000..d07295f2e464
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-placeholder-doc.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-problems-on-open.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-problems-on-open.png
new file mode 100644
index 000000000000..26ec87147ce4
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-problems-on-open.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-problems.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-problems.png
new file mode 100644
index 000000000000..f8aa2a9a2233
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-problems.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-quick-doc.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-quick-doc.png
new file mode 100644
index 000000000000..6f21f1d4466e
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-quick-doc.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-quick-fix.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-quick-fix.png
new file mode 100644
index 000000000000..9e08d4a70600
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-quick-fix.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-save-blocked.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-save-blocked.png
new file mode 100644
index 000000000000..4b538410d785
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-save-blocked.png
differ
diff --git
a/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-usages.png
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-usages.png
new file mode 100644
index 000000000000..95996be26bd1
Binary files /dev/null and
b/docs/user-manual/modules/ROOT/images/jbang/camel-tui-source-usages.png differ
diff --git a/docs/user-manual/modules/ROOT/nav.adoc
b/docs/user-manual/modules/ROOT/nav.adoc
index 616903789582..3e2575e23f54 100644
--- a/docs/user-manual/modules/ROOT/nav.adoc
+++ b/docs/user-manual/modules/ROOT/nav.adoc
@@ -11,6 +11,7 @@
*** xref:camel-jbang-kubernetes.adoc[Camel Kubernetes Plugin]
*** xref:camel-jbang-test.adoc[Camel Testing Plugin]
*** xref:camel-jbang-tui.adoc[Camel TUI]
+**** xref:camel-jbang-tui-source-editor.adoc[Camel TUI Source Editor]
*** xref:camel-jbang-mcp.adoc[Camel MCP Server]
*** xref:camel-jbang-container.adoc[Camel CLI container]
** xref:camel-maven-plugin.adoc[Camel Maven Plugin]
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-source-editor.adoc
b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-source-editor.adoc
new file mode 100644
index 000000000000..e3e6f56e4014
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui-source-editor.adoc
@@ -0,0 +1,238 @@
+= Camel TUI Source Editor
+
+The Source tab (*2*) of the xref:camel-jbang-tui.adoc[Camel TUI] is where you
read and write your routes. It knows
+Camel: it checks your routes as you type, completes endpoint options from the
Camel catalog, explains the line the
+cursor is on, and shows what each line of a running integration is doing. It
works the same for YAML, Java and XML
+routes.
+
+== Top Features
+
+* <<_live_run_data,*Live run data*>> -- the exchanges and failures of each
line of the running integration, next to
+ the code.
+* <<_problems_as_you_type,*Problems as you type*>> -- endpoint options, Simple
expressions and more are checked as soon
+ as a file opens and while you type, in YAML, Java and XML routes; a YAML or
XML file with problems is not saved.
+* <<_quick_fixes,*Quick fixes*>> -- *Shift+F9* applies the fix a problem
names, such as an option typo.
+* <<_fix_with_ai,*Fix with AI*>> -- *Shift+F8* asks the AI to fix the problem
of a line; you confirm every change.
+* <<_completion,*Completion*>> -- *Tab* completes components, endpoint options
and their values.
+* <<_quick_documentation,*Quick documentation*>> -- the documentation of the
line the cursor is on, at the bottom, with
+ the values of its property placeholders and where its bean is declared.
+* <<_navigation,*Navigation*>> -- jump between routes and to beans, see where
an endpoint is used with *u*, find any node
+ with *Ctrl+G*, see where the cursor is in the route.
+* <<_changes_and_diff,*Changes and diff*>> -- changed lines are marked, and
*F7* shows the unsaved changes as a diff.
+* <<_yaml_java_and_xml,*YAML, Java and XML*>> -- *Space* shows a route in any
of the three DSLs.
+
+== Browsing and Editing
+
+The left panel lists the files of the integration's project, and the right
panel shows the selected file with syntax
+highlighting. *Tab* switches between the two panels, and you can drag the
border between them with the mouse.
+
+Press *Enter* to view a file, or *F4* to edit it. The editor is a plain-text
editor with helpers for Camel routes:
+undo and redo, moving and duplicating YAML blocks, smart *Home*, and word
navigation. In YAML routes, *Ctrl+R* opens a
+refactoring menu for the current line. *Ctrl+S* saves and keeps editing, *F5*
saves and closes, and *Esc* cancels
+(and asks before it discards unsaved changes). A running integration in dev
mode reloads the saved file.
+
+== Live Run Data
+
+While the integration runs, a column after the line numbers shows what the
processors on each line do: the exchanges
+they handled, and how many failed (`✗`, in red). The mean time is shown too,
when it is 1 ms or more. The numbers
+follow the running integration, so the source reads as a heat map of the
route: where the messages go, and where they
+fail.
+
+image::jbang/camel-tui-source-live-run-data.png[Live run data in a column
after the line numbers]
+
+In the example the timer fired 227 times; the `filter` let 137 of those
through to `log:big`, and 27 orders failed at
+`throwException`. You see this without leaving the code, and without adding a
single log statement.
+
+The column keeps its width, so the code does not move as the numbers grow. It
works for YAML, Java and XML routes, as
+`camel run` records the source line of every processor.
+
+== Problems as You Type
+
+The editor checks your routes while you type: endpoint URIs and their options
against the Camel catalog, Simple
+expressions, the YAML DSL schema, and a `to` whose URI holds `+${...}+` and
should be a `toD`. Java routes are read
+without compiling them, so endpoints built with the endpoint DSL or from a
constant are checked too.
+
+The problems are marked as soon as a file opens, before you change anything: a
red `✗` on the line, and the count in
+the title. The panel at the bottom says the problem of the selected line, and
*F9* goes to the next one.
+
+image::jbang/camel-tui-source-problems-on-open.png[The problem of a YAML route
marked when the file opens]
+
+In the editor, a line with a problem has a red line number, the title shows
how many errors there are, and the Error
+panel at the bottom says what is wrong with the line the cursor is on. They
are checked again as you type, and *F9*
+jumps to the next problem.
+
+image::jbang/camel-tui-source-problems.png[A misspelled seda option marked
while typing]
+
+=== Saving
+
+When you save, the file is checked first. A YAML or XML file with problems is
not saved, and the problems are shown in
+a popup:
+
+image::jbang/camel-tui-source-save-blocked.png[A YAML file with a problem is
not saved]
+
+A Java file is saved anyway and its problems are reported: it is the
application's code, and a check cannot know
+everything a Java route computes at runtime.
+
+The checks can be turned off in the Settings (*F2* > Settings).
+
+== Quick Fixes
+
+Many problems say how to fix them: an option typo (`siz` instead of `size`),
an enum value a letter off, a `to` that
+should be a `toD`, `+${key}+` where the property placeholder `+{{key}}+` is
meant, or a Simple function the error names
+the right one of (`+${bdy}+` for `+${body}+`). For these, the Error panel
shows the fix, and *Shift+F9* applies it to the
+line:
+
+image::jbang/camel-tui-source-quick-fix.png[Shift+F9 fixed the option typo]
+
+The same fixes are part of the result of the `camel_validate_source` MCP tool,
so an AI agent can apply them too.
+
+== Fix with AI
+
+When a problem has no quick fix, *Shift+F8* asks the AI. The file is saved as
it is, and the AI panel opens with the
+question already written: the file, the line, the problem, and how to fix it.
Press *Enter* to send it, or change it
+first.
+
+image::jbang/camel-tui-source-fix-with-ai.png[Shift+F8 writes the question for
the AI]
+
+The AI changes the file with the same tools an AI agent uses over MCP, and
every change waits for you: the dialog shows
+what the AI wants to change, *d* shows the diff, *Enter* applies it and *Esc*
rejects it.
+
+image::jbang/camel-tui-source-ai-edit-confirm.png[The change of the AI waits
for your confirmation]
+
+A file the AI writes is checked like one you save, and a write that brings new
problems is refused, so the AI gets the
+problems back and can try again. The view shows the file as the AI wrote it as
soon as you apply the change. With `/write live` in the AI panel, you can also
watch the AI type its change in the
+editor; see xref:camel-jbang-tui.adoc#_watching_the_ai_edit_live_mode[Watching
the AI edit].
+
+The AI panel works with a hosted provider or with a local model through
Ollama; see
+xref:camel-jbang-tui.adoc#_choosing_an_ai_provider[Choosing an AI provider].
+
+== Completion
+
+In edit mode, *Tab* completes what the cursor is on. Type to filter the list
(an exact or prefix match comes first),
+use *Up*/*Down* to choose, and *Enter* to accept. The details panel shows the
documentation of the choice: its type,
+default value and description.
+
+image::jbang/camel-tui-source-completion.png[Tab completes the options of an
endpoint]
+
+What can be completed:
+
+* *Java and XML routes* -- in the endpoint URI of `from`, `to`, `toD`,
`wireTap`, `enrich`, `pollEnrich` and `poll` (the
+ string given to them in Java, their `uri` attribute in XML): the component
name before the `:`, the endpoint options
+ after `?` or `&` (consumer or producer options, depending on where the
endpoint is, and without the ones already
+ given), and the value of an option after `=`.
+* *YAML routes* -- EIP names, component names (only the components that can
consume on a `from`, and produce on a
+ `to`), endpoint options in a `parameters:` block (the required ones first),
EIP options, and option values.
+* *`application.properties`* -- Camel options (`+camel.main.*+`,
`+camel.component.*+`, ...) and Spring Boot properties
+ (`+server.*+`, `+spring.*+`, ...), with their values and `+{{placeholder}}+`
suggestions. This works even when the
+ project is not running.
+
+== Quick Documentation
+
+The panel at the bottom shows the documentation of the line the cursor is on,
from the Camel catalog: the component
+and the options of an endpoint, the EIP of a step, or the language of an
expression.
+
+image::jbang/camel-tui-source-quick-doc.png[The documentation of the timer
component and its period option]
+
+This makes an unfamiliar route easy to read without leaving the terminal.
+
+What the project knows about the line comes first. A property placeholder
shows its value, from the `.properties` files
+of the project, or the default that is used when it is not set:
+
+image::jbang/camel-tui-source-placeholder-doc.png[The value of a property
placeholder in the quick documentation]
+
+A line that refers to a bean (`bean:name`, `.bean(MyBean.class)`, `ref: name`,
`#class:com.foo.MyBean`...) says where the
+project declares it (`@BindToRegistry`, `@Named`, `@Component`, `@Bean`, or
the beans of a YAML or XML file), and shows a
+`↵ name` jump link: *Enter* goes to the declaration.
+
+image::jbang/camel-tui-source-bean-jump.png[Where the bean of a line is
declared, with a jump link to it]
+
+== Navigation
+
+* *Jump links* -- a line that sends to another route, such as
`to("seda:shipping")`, shows `↵ shipping`. Press *Enter*
+ on the line to go to that route, also when it is in another file or another
DSL. A `from` shows which route calls
+ it.
+* *Go to route* -- *g* lists all the routes of the project; type to filter,
and *Enter* opens the route.
+* *Bean jumps* -- a line that refers to a bean shows `↵ name`, and *Enter*
goes to where the project declares it.
+* *Usages* -- *u* on a line with an endpoint lists where it is used: the
routes that consume from it and the steps that
+ send to it, across the project and its DSLs. *Enter* goes there.
+* *Go to node* -- *Ctrl+G* shows the routes of the YAML, Java and XML files
and their processors as a tree (the `when`
+ and `otherwise` of a choice included). Type to filter by route ID, EIP or
label, or type a line number, and *Enter*
+ jumps there.
+* *Search* -- */* searches the source, *n*/*N* go to the next and previous
match, and *h* highlights a text.
+
+image::jbang/camel-tui-source-usages.png[The usages of a seda endpoint: its
consumer and the steps sending to it]
+
+image::jbang/camel-tui-source-go-to-node.png[Ctrl+G filters the route tree]
+
+In a YAML route, the title shows where the cursor is in the route, such as
`route > from > choice > when > setHeader`:
+
+image::jbang/camel-tui-source-change-markers.png[The path of the cursor in the
route, and the changed lines]
+
+== Changes and Diff
+
+The line numbers of the lines you changed since the file was opened are green
(see the picture above), so you see at a
+glance what you changed. *F7* shows all the unsaved changes as a diff, with
the line numbers of the file. *F7* or *Esc*
+returns to the editor.
+
+image::jbang/camel-tui-source-diff.png[F7 shows the unsaved changes]
+
+== YAML, Java and XML
+
+When you open the source of a route from the Diagram or Route tab (*c*),
*Space* shows that route in YAML, Java or
+XML. The title shows the three formats, and the one marked with `*` is the
file the route is written in.
+
+image::jbang/camel-tui-source-format-cycling.png[A Java route shown in YAML]
+
+This is handy to see how a route reads in another DSL, or to copy it into a
file of another DSL. Press *p* for plain
+mode, which hides the line numbers and borders for easy copying.
+
+== Keyboard Shortcuts
+
+=== Viewing
+
+[cols="2,5",options="header"]
+|===
+| Key | Action
+
+| *Up/Down* | Navigate files (left panel) or scroll source (right panel)
+| *Enter* | Open file or directory; on a jump link, go to the linked route or
bean
+| *Backspace* | Go to parent directory
+| *Tab* | Toggle focus between file list and source viewer
+| *F12* | File actions (new file, new folder, rename, duplicate, delete, copy
path)
+| *Space* | Cycle format (YAML/Java/XML), when the source of a route is shown
+| */* | Search in source
+| *h* | Highlight text
+| *n* / *N* | Next / previous search match
+| *w* | Toggle word wrap
+| *p* | Toggle plain mode (borderless)
+| *g* | Go to route
+| *Ctrl+G* | Go to node or line
+| *u* | Usages of the endpoint of the line
+| *F9* | Next problem
+| *Esc* / *c* | Close source viewer
+| *F4* | Enter edit mode
+|===
+
+=== Editing
+
+[cols="2,5",options="header"]
+|===
+| Key | Action
+
+| *Tab* | Completion
+| *Ctrl+Z* | Undo
+| *Ctrl+Y* | Redo
+| *Alt+Up/Down* | Move YAML block up/down
+| *Ctrl+D* | Duplicate block
+| *Ctrl+K* | Delete current line
+| *Ctrl+Left/Right* | Word navigation
+| *Home* | Smart home (content indent / column 0)
+| *Ctrl+R* | Refactoring menu (YAML)
+| *F9* | Next problem
+| *Shift+F9* | Apply the quick fix of the problem on the line
+| *Shift+F8* | Ask the AI to fix the problem on the line
+| *F7* | Diff view (unsaved changes)
+| *Ctrl+S* | Save and continue editing
+| *F5* | Save and close
+| *Esc* | Cancel (asks before it discards unsaved changes)
+|===
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 8dca367565c1..ed242f440dc7 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-tui.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-tui.adoc
@@ -135,7 +135,7 @@ to any tab, or use *Tab* / *Shift+Tab* to cycle.
| Key | Tab | What It Shows
| 1 | Overview | All running integrations and infrastructure services. Start
here.
-| 2 | Source | File explorer for your project code with syntax highlighting
and inline Camel documentation.
+| 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 | Activity | Live exchange activity with elapsed times, endpoint sends,
and failure tracking.
| 5 | Diagram | Visual route topology with drill-down into individual routes.
@@ -169,112 +169,14 @@ questions about the running integrations.
== Source Code Browser
-The Source tab (Tab 2) gives you a file explorer into your project code. The
left panel shows
-a navigable file tree of the integration's source directory. Select any file
to view it in the
-right panel with full syntax highlighting.
+The Source tab (Tab 2) is a file explorer and editor for your project code
that knows Camel. It checks your YAML,
+Java and XML routes as you type, completes endpoint options from the Camel
catalog, explains the line the cursor is on,
+fixes problems for you (or asks the AI to), and shows the exchanges and
failures of each line of the running
+integration next to the code.
-For Camel source files (YAML, XML, Java routes, and `application.properties`),
press *i* to toggle
-inline documentation. The TUI uses the Camel catalog to look up every
component, EIP, language,
-and data format used in your route and shows their documentation right next to
the source code.
-For properties files, it resolves `+camel.component.*+` and `+camel.main.*+`
keys to their catalog
-descriptions. This makes it easy to understand unfamiliar routes without
leaving the terminal.
+image::jbang/camel-tui-source-live-run-data.png[Live run data in the source
editor]
-Additional features:
-
-* *Format cycling* -- press *Space* to convert Camel routes between YAML,
Java, and XML DSL formats
-* *Search* -- press */* to search within the source code, *n*/*N* to jump
between matches
-* *Highlight* -- press *h* to highlight text occurrences
-* *Go to node* -- press *Ctrl+G* to open a fuzzy-search popup showing the
route tree structure,
- matching the diagram panel format (`route[id]`, `├─to[uri]`, etc.). Select a
node to jump to its
- source line.
-* *Resizable panels* -- drag the split border with the mouse to resize the
file list and viewer
-
-=== Live Run Data
-
-While the integration runs, a column after the line numbers shows what the
processors on each line do: the exchanges
-they handled (`79`), how many failed (`✗10`, in red), and their mean time when
it is 1 ms or more. The column keeps its
-width, so the code does not move as the numbers grow. The source reads as a
heat map of the route: where the messages
-go, and where they fail.
-
-[source,text]
-----
- 7 | 1014 ✗98 │ from("timer:tick?period=500")
- 8 | │ .routeId("live")
- 9 | 1014 │ .setBody(simple("${random(10)}"))
- 10 | 1014 │ .filter(simple("${body} > 3"))
- 11 | 605 │ .to("log:big?level=OFF")
-----
-
-=== Source Editor
-
-Press *F4* to enter edit mode for YAML, Java and XML routes,
`application.properties`, and other local files.
-The editor provides a plain-text editing experience with features designed for
working with
-Camel routes:
-
-* *Undo / Redo* -- *Ctrl+Z* to undo, *Ctrl+Y* to redo
-* *Block operations* -- *Alt+Up/Down* to move YAML list blocks up/down,
*Ctrl+D* to duplicate
- a block
-* *Delete line* -- *Ctrl+K* to delete the current line
-* *Word navigation* -- *Ctrl+Left/Right* to jump by word
-* *Smart Home* -- *Home* key alternates between content indent and column 0
-* *Tab completion* -- press *Tab* for context-aware completion:
-** In `application.properties`: Camel configuration options (`+camel.main.*+`,
`+camel.component.*+`, etc.)
- and Spring Boot auto-configuration properties (`+server.*+`, `+spring.*+`,
`+management.*+`, etc.)
- resolved from starter JARs in the local Maven repository — works even for
stopped projects
-** In YAML DSL routes: EIP names, component URIs, option keys and values
-** In Java and XML DSL routes: in the endpoint URI of `from`, `to`, `toD`,
`wireTap`, `enrich`, `pollEnrich`
- and `poll` (the string given to them in Java, their `uri` attribute in
XML), the component name, the
- endpoint options and their values
-
-A quick documentation panel at the bottom shows the documentation of the line
the cursor is on: for YAML, Java
-and XML routes the component and options of an endpoint, the EIP of a step and
the language of its expression.
-Java routes are read by the Java DSL parser without compiling them, so
constants and the endpoint DSL are resolved.
-What the project knows about the line comes first: the values of its property
placeholders (`{{orders.period}} = 500
-(application.properties)`, or the default that is used when it is not set),
and where the bean it refers to is declared.
-
-A line that refers to a bean (`bean:name`, `.bean(MyBean.class)`, `ref: name`,
`#class:com.foo.MyBean`...) shows a
-`↵ name` jump link when the project declares the bean (`@BindToRegistry`,
`@Named`, `@Component`, `@Bean`, or the beans
-of a YAML or XML file); *Enter* goes to its declaration, as it goes to the
route a `to` sends to. Press *u* on a line
-with an endpoint to see its usages: the routes that consume from it and the
steps that send to it, across the project.
-
-The editor shows *gutter change markers* -- a green background on line numbers
that have been
-modified or added since the file was opened. This gives an at-a-glance view of
what you've changed.
-
-Press *F7* to open a *diff view* showing all unsaved changes in a unified diff
format with
-red/green background coloring (like `git diff`). Line numbers correspond to
the actual source
-file positions. Press *Esc* or *F7* to return to editing.
-
-Press *F5* to save and close, or *Shift+F5* to save and continue editing.
-
-=== Validate on Save
-
-When saving, the editor validates the content before writing to disk. If
validation fails, the
-file is not saved and errors are displayed in a popup. This catches mistakes
early:
-
-* *YAML schema validation* -- checks the YAML DSL structure against the Camel
schema
-* *Endpoint URI validation* -- validates component URIs, option names, and
values against the
- Camel catalog
-* *Simple expression validation* -- validates Simple language expressions for
syntax errors,
- detecting the correct context (predicate vs expression) from the parent EIP
-
-Java and XML routes get the same Camel checks, on the Camel model the routes
are read into: the endpoint URIs
-(also those built with the endpoint DSL, or from a constant), Simple
expressions, and a `to` whose URI holds
-`+${...}+` and should be a `toD`. Their problems are marked on their lines
while you type (*F9* jumps to the next).
-The problems of a file are marked as soon as it opens, in the view too: a red
`✗` on the line, the count in the title,
-and the problem of the selected line in the panel at the bottom.
-An XML file with problems is not saved, as a YAML file; a Java file is saved
and its problems are said, as it is
-the application's code, and a check that cannot know something (a value
computed at runtime) must not stop you.
-
-When the problem on the line of the cursor says its fix (an option that is a
typo of another, an enum value a letter
-off, a `to` that should be a `toD`, a Simple expression `+${key}+` where the
property placeholder `+{{key}}+` is meant),
-the Error panel shows it and *Shift+F9* applies it; *Ctrl+Z* takes it back.
*Shift+F8* asks the AI to fix the problem on the
-line instead: the file is saved as it is, and the AI panel opens with the
question in its input (the file, the line,
-the problem and its text), for you to send with *Enter* or change first.
`camel_validate_source` gives the same fixes to
-an agent, as `fixes` with the text to find and its replacement.
-
-A Simple function the error names the right one of, such as `+${bdy}+` for
`+${body}+`, has a quick fix too.
-
-Validation can be toggled off in the Settings (F2 > Settings).
+See xref:camel-jbang-tui-source-editor.adoc[Camel TUI Source Editor] for all
its features and keys.
== Activity
@@ -814,45 +716,7 @@ line breaks are sent as *Enter*, so a multi-line paste
runs line by line as in a
=== Source Tab
-[cols="2,5",options="header"]
-|===
-| Key | Action
-
-| *Up/Down* | Navigate files (left panel) or scroll source (right panel)
-| *Enter* | Open file or directory
-| *Backspace* | Go to parent directory
-| *Tab* | Toggle focus between file list and source viewer
-| *Space* | Cycle format (YAML/Java/XML) for Camel routes
-| *i* | Toggle inline Camel documentation
-| */* | Search in source
-| *h* | Highlight text
-| *n* / *N* | Next / previous search match
-| *w* | Toggle word wrap
-| *p* | Toggle plain mode (borderless)
-| *Ctrl+G* | Go to node (fuzzy search popup)
-| *Esc* / *c* | Close source viewer
-| *F4* | Enter edit mode
-|===
-
-==== Edit Mode
-
-[cols="2,5",options="header"]
-|===
-| Key | Action
-
-| *Ctrl+Z* | Undo
-| *Ctrl+Y* | Redo
-| *Alt+Up/Down* | Move YAML block up/down
-| *Ctrl+D* | Duplicate block
-| *Ctrl+K* | Delete current line
-| *Ctrl+Left/Right* | Word navigation
-| *Home* | Smart home (content indent / column 0)
-| *Tab* | Context-aware completion
-| *F7* | Diff view (unsaved changes)
-| *F5* | Save and close
-| *Shift+F5* | Save and continue editing
-| *Esc* | Cancel (discard prompt if unsaved changes)
-|===
+See the xref:camel-jbang-tui-source-editor.adoc#_keyboard_shortcuts[keyboard
shortcuts] of the Source Editor.
=== Diagram Tab