[
https://issues.apache.org/jira/browse/CAMEL-26864?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18142987#comment-18142987
]
Claus Ibsen commented on CAMEL-26864:
-------------------------------------
How to work on this issue, for whoever picks it up.
h3. Decide first (design choices, not bugs)
These need the maintainer's decision before they are changed; ask rather than
guess:
* *13, Endpoints arrows:* "→ in / ← out" may be intentional, as seen from the
route. Keep it, or match the Flow panel?
* *12, body type "null":* show "(no body)", or show the type after the step?
* *10, Log pause:* should every tab pause and resume with Space, with the ‖
PAUSED / ● live badge from the Timeline PR (apache/camel#29634)?
* *7, "Warump" typo:* it is in camel-core ({{InternalRouteStartupManager}}), so
it probably belongs in its own commit or issue.
h3. Suggested batches
# *Quick, mechanical fixes, one PR:* 4, 5, 6, 7, 11, 14, 16, 18, 19, 20. The
{{*RenderTest}} tests with {{TuiTestHelper.renderToString}}, and the unit tests
of {{TuiToolRegistry}}, can cover them; a running TUI is not needed.
# *Bugs that need investigation:* 1, 2, 3, 8, 9. Their root cause is not known
yet. Reproduce them on a TUI built from the branch, run in a headless tmux
session with the integration in the description, and drive it through its MCP
server (the URL is printed at startup) or with tmux send-keys and capture-pane.
Confirm each fix there, not only with render tests.
# *UX items, after the decisions above:* 10, 12, 13, 15, 17.
h3. Notes
* Item 9 (tui_send_keys) was seen while the AI panel was open. Check whether
keys from MCP should go to the tab or to the focused panel, and make the tool's
result say which.
* Item 4: the tui_get_* tools should never change the user's tab (see
callGetHistory with an exchangeId).
> camel-jbang - TUI: issues found walking the tabs of a running integration
> -------------------------------------------------------------------------
>
> Key: CAMEL-26864
> URL: https://issues.apache.org/jira/browse/CAMEL-26864
> Project: Camel
> Issue Type: Bug
> Components: camel-jbang
> Reporter: Claus Ibsen
> Priority: Minor
>
> Findings from walking every tab of the Camel TUI (4.24.0-SNAPSHOT, main at
> 89929a305815) on a running integration, driven from the TUI's own AI panel
> through the camel-tui MCP tools. Each item says the tab, what was seen, what
> was expected, and where the code is when known. The items are independent and
> can be fixed one by one.
> h3. Reproduce
> {{camel run hello.camel.yaml}} then {{camel tui}}:
> {code:yaml}
> - route:
> id: hello
> from:
> uri: timer:tick
> parameters:
> period: 2000
> steps:
> - setBody:
> simple: "Hello ${random(100)}"
> - choice:
> when:
> - simple: "${body} contains '7'"
> steps:
> - to: direct:seven
> otherwise:
> steps:
> - log: "${body}"
> - route:
> id: seven
> from:
> uri: direct:seven
> steps:
> - log: "Lucky ${body}"
> {code}
> h3. Bugs
> # *Diagram: drilling into a route shows the nodes of another route.*
> {{tui_navigate(tab=Diagram, route=hello, node=choice1)}} fails with "Node not
> found: choice1 in route hello". The state is then diagramMode=route,
> routeId=hello, but the EIP node list is [seven, log2] (route seven's nodes)
> and the selected node is from[direct:seven]. The Topology route list is
> ordered [seven, hello] and the routes are [hello, seven], so it looks like an
> index into a list in a different order. Expected: hello's nodes (setBody1,
> choice1, to1, log1).
> # *Diagram: the screen does not follow the drill-down.* After the call above
> (and after {{tui_navigate(tab=Diagram, route=hello)}}, which returns
> selectedRoute=hello), the screen still draws the Architecture view while
> tui_get_state says diagramMode=route. Expected: the screen shows the Topology
> / Route view the state says.
> # *Inspect: the screen shows an old exchange.* The Info panel and the History
> Topology diagram show exchange ...0051 from 13:16:12 ("Step: 1/6"), while the
> tab's table data (tui_get_table Inspect) is the latest exchange ...046E from
> 13:51:18 with 5 steps. Expected: the screen and the data show the same
> exchange.
> # *tui_get_history finds no data.* It returns "No history data available.
> Ensure the History tab has data." while the Inspect tab has data.
> {{TuiToolRegistry.callGetHistory}} looks up the tab "History", which is now
> called "Inspect". With an exchangeId it also calls
> {{facade.navigateToTab("History")}}, so a tui_get_* tool changes what the
> user sees, unlike the other tui_get_* tools.
> # *Startup: the total is wrong.* The title says "Total: 222ms", the longest
> single step ({{StartupTab}} line 369: {{max(duration)}}). The startup went
> from the first step at ...209063 to the end of "Start CamelContext" at
> ...209527, which is about 465ms, and "Start CamelContext" (182ms) runs after
> "Init CamelContext" (222ms). Expected: the time from the first step to the
> end of the last one.
> # *Startup: steps are under the wrong parent.* The rows are ordered by begin
> time, so the children of "seven Create Route" ("direct:seven Get Endpoint",
> "log2 Create Log Processor", parentId 19) are shown under "hello Init Route"
> (id 22), which began at the same millisecond. Expected: depth-first by
> parentId, so each child is under its own parent.
> # *camel-core typo.* {{InternalRouteStartupManager.java:320}} records the
> startup step "Warump Route". It should be "Warmup Route" (shown on the
> Startup tab).
> # *Endpoints: outgoing is 0 for a route that sends.* With the hello →
> direct://seven (out, 202 hits) row selected, the Flow panel shows "1131 in, 0
> out" and the msg/s chart shows "out:0", while the avg body chart shows "out:7
> B". Expected: the out count and rate include direct://seven ({{EndpointsTab}}
> around line 370, {{EndpointFlow.total}}).
> # *tui_send_keys has no effect while the AI panel is open.*
> {{tui_send_keys(["Enter"])}} on the Diagram tab returned sent=1, but nothing
> changed and tui_get_events did not record the key. The keys seem to go to the
> AI panel's input. Expected: keys from the MCP tool reach the active tab, or
> the tool says where they went.
> h3. Inconsistencies and UX
> # *Log: same paused-or-live problem as the Timeline.* The Log tab stayed
> paused at 13:17 while the time was 13:51. The only signs were "(paused, End
> follows)" in plain text in the title and "f follow off" in the footer. The
> Timeline pauses with Space and the Log with f/End. Expected: the same badge
> and border as the Timeline (see the PR that adds ‖ PAUSED / ● live there),
> and the same key on both tabs.
> # *Log: missing space in the title.* "Log level:INFO" should be "Log level:
> INFO".
> # *Source and Inspect: the body type "null".* On the Source tab the setBody
> line shows the body type as the word "null" (the timer exchange's body before
> setBody), and Inspect has bodyType "null" for the from and setBody steps.
> Expected: "(no body)", or say whether the type is before or after the step.
> # *Endpoints: the arrows are the wrong way round.* The DIR column shows "→
> in" and "← out" ({{EndpointsTab}} lines 247-248: in = KEY_RIGHT, out =
> KEY_LEFT), while the Flow panel draws in ───► [route] ───► out. Expected: the
> same direction in both.
> # *tui_get_table names the wrong tab.* tui_get_table(tab=Inspect) returns
> "tab":"History" ({{HistoryTab}} line 2473) and tui_get_table(tab="Memory
> Usage") returns "tab":"Memory" ({{MemoryTab}} line 503). Expected: the names
> tui_get_options lists.
> # *Inspect: two ids for the same step.* The trace says nodeId "from1" for the
> from of route hello, while tui_get_processor_detail says its id is "hello".
> The exchange property CamelMessageBodySize is 0 at every step, even when the
> body is "Hello 34". The Info panel shows the raw direction marker ("Step: 1/6
> *->") and an empty "Changed:" label.
> # *Routes and Overview: unlabelled time in TOTAL.* The TOTAL column shows
> "1128 (1s)" and "201 (13s)". The value in brackets, the time since the last
> exchange, has no header or legend.
> # *Consumers: no count for event-driven consumers.* The direct consumer of
> route seven has an empty POLLS column and no total (tui_get_table has no
> totalCounter for it), although it received 200+ messages. Expected: a
> received count for consumers that are not polled.
> # *Diagram (Architecture): double brackets.* The entry point label reads
> "timer:tick (period=2000) (internal)". Expected: something like "timer:tick
> (period=2000, internal)".
> # *Startup: a leading space for steps with no name.* " Init CamelContext"
> and " Scan HealthChecks" get an extra space where the name would be.
> # *Errors: empty state in the wrong place.* "No errors captured" is drawn in
> the middle of the row, under EXCEPTION/MESSAGE. Expected: aligned like the
> empty states of the other tabs.
> h3. Notes for whoever picks this up
> * Most items are in {{dsl/camel-jbang/camel-jbang-plugin-tui}}. Item 7 is in
> {{core/camel-base-engine}}.
> * The render tests ({{*RenderTest}}, {{TuiTestHelper.renderToString}}) are
> the quickest way to reproduce and cover the screen items. Items 1, 2, 4 and 9
> are in the MCP tool layer ({{TuiToolRegistry}} and the facade).
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)