Adriano Machado created CAMEL-23838:
---------------------------------------
Summary: camel-jbang TUI: F1/? help broken - NoClassDefFoundError
from commonmark version conflict and ? not bound
Key: CAMEL-23838
URL: https://issues.apache.org/jira/browse/CAMEL-23838
Project: Camel
Issue Type: Bug
Reporter: Adriano Machado
Assignee: Adriano Machado
h2. Summary
In {{camel tui}} \(the camel\-jbang TUI plugin\), the context\-sensitive help
is broken in two ways:* Pressing {{?}} does nothing.
* Pressing {{F1}} throws {{java.lang.NoClassDefFoundError:
org/commonmark/renderer/markdown/MarkdownRenderer$MarkdownRendererExtension}}.
h2. Root cause
_F1 crash \(NoClassDefFoundError\):_ The {{camel\-launcher}} fat\-jar bundles
every ASF plugin on a single flat classpath. Maven dependency mediation
resolves a split commonmark:
* {{org.commonmark:commonmark}} \(core\) \-> 0.21.0, pulled in by
{{camel\-jbang\-plugin\-generate}} \-> {{openapi\-generator:7.23.0}} \(declared
first\).
* {{org.commonmark:commonmark\-ext\-\*}} \-> 0.28.0, pulled in by
{{camel\-jbang\-plugin\-tui}} \-> {{tamboui\-markdown:0.4.0}}.
commonmark 0.21.0 does not contain the
{{org.commonmark.renderer.markdown.MarkdownRenderer}} class at all \(it was
added later\). The TUI's markdown help view \(tamboui {{MarkdownView}}\)
references {{MarkdownRenderer$MarkdownRendererExtension}}, so rendering help
throws {{NoClassDefFoundError}}.
_? does nothing:_ {{CamelMonitor.handleGlobalKeys}} only bound {{KeyCode.F1}}
to the help overlay; the {{?}} character was never handled, and {{HelpOverlay}}
swallowed {{?}} without closing.
The on\-demand {{camel\-jbang\-main}} path is not affected, since it downloads
only the requested plugin into its own classloader \(clean commonmark 0.28.0\).
h2. Fix
* Pin {{org.commonmark:commonmark}} to 0.28.0 in {{camel\-launcher}}
{{dependencyManagement}} so the core matches the {{commonmark\-ext\-\*}}
modules. openapi\-generator only uses the stable {{Parser}}/{{HtmlRenderer}}
builder APIs, which are unchanged in 0.28.0.
* Bind {{?}} to open/toggle help in {{CamelMonitor}} \(guarded so it does not
trigger while typing in a search/filter input\), and let {{HelpOverlay}} also
close on {{?}} so the binding is a true toggle.
* Documentation updated in {{camel\-jbang\-tui.adoc}} \(TIP line and Keyboard
Shortcuts table\).
* Added {{HelpOverlayTest}} covering close\-on\-{{?}}, F1/{{q}} regression, and
that an unrelated key keeps the overlay open.
h2. Affected component
camel\-jbang \(TUI plugin / launcher\)
----
_Generated by Claude Code on behalf of Adriano Machado._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)