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 a6302efb3bbc CAMEL-26854: camel-jbang - Upgrade TamboUI to 0.7.0 
(#29631)
a6302efb3bbc is described below

commit a6302efb3bbc6d45f1a80fc5fdca7872f6ccd586
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Nov 11 15:00:17 2026 +0100

    CAMEL-26854: camel-jbang - Upgrade TamboUI to 0.7.0 (#29631)
    
    TamboUI 0.7.0 turns on the Kitty keyboard protocol by default, and then 
some keys arrive differently. Stay on the legacy keys for now 
(KeyboardProtocol.LEGACY in TuiBackendHelper); switching to Kitty keys and 
reviewing the key bindings is a follow-up.
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../dsl/jbang/core/commands/tui/TuiBackendHelper.java     |  6 +++++-
 .../camel/dsl/jbang/core/commands/tui/NoopBackend.java    | 15 +++++++++++++++
 .../core/commands/tui/TuiBackendHelperRecordingTest.java  | 11 +++++++++++
 parent/pom.xml                                            |  2 +-
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelper.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelper.java
index 7ac2b6fe7f12..b4af04dc2cbb 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelper.java
@@ -18,6 +18,7 @@ package org.apache.camel.dsl.jbang.core.commands.tui;
 
 import dev.tamboui.backend.jline3.JLineBackend;
 import dev.tamboui.terminal.Backend;
+import dev.tamboui.terminal.KeyboardProtocol;
 import dev.tamboui.tui.TuiConfig;
 import dev.tamboui.tui.TuiRunner;
 import org.apache.camel.dsl.jbang.core.common.EnvironmentHelper;
@@ -42,7 +43,10 @@ final class TuiBackendHelper {
      * itself when {@code --record} configured the {@code tamboui.record*} 
system properties.
      */
     static TuiRunner createTuiRunner(Backend backend) throws Exception {
+        // TamboUI 0.7 turns on the Kitty keyboard protocol by default, and 
then some keys arrive differently
+        // (Ctrl+I vs Tab, Esc and Alt combinations); stay on the legacy keys 
until the key bindings are reviewed
         return TuiRunner.create(
-                
TuiConfig.builder().backend(backend).mouseCapture(true).bracketedPaste(true).build());
+                
TuiConfig.builder().backend(backend).mouseCapture(true).bracketedPaste(true)
+                        .keyboardProtocol(KeyboardProtocol.LEGACY).build());
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/NoopBackend.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/NoopBackend.java
index 4090a78aef9b..1778e0e191be 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/NoopBackend.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/NoopBackend.java
@@ -22,6 +22,7 @@ import dev.tamboui.buffer.DiffResult;
 import dev.tamboui.layout.Position;
 import dev.tamboui.layout.Size;
 import dev.tamboui.terminal.Backend;
+import dev.tamboui.terminal.KeyboardProtocol;
 
 /**
  * Minimal {@link Backend} stand-in. Only {@link #size()} needs a meaningful 
value, so that the test fails if the
@@ -31,6 +32,7 @@ final class NoopBackend implements Backend {
 
     private final int[] input;
     private int inputPos;
+    private KeyboardProtocol keyboardProtocol;
 
     /**
      * @param input the bytes the terminal sends, read through TamboUI's event 
parser by tests of key handling
@@ -103,6 +105,19 @@ final class NoopBackend implements Backend {
         return inputPos < input.length ? input[inputPos] : -2;
     }
 
+    @Override
+    public boolean enableKeyboardProtocol(KeyboardProtocol protocol) throws 
IOException {
+        keyboardProtocol = protocol;
+        return Backend.super.enableKeyboardProtocol(protocol);
+    }
+
+    /**
+     * @return the keyboard protocol TuiRunner asked for, or null when it did 
not ask
+     */
+    KeyboardProtocol keyboardProtocol() {
+        return keyboardProtocol;
+    }
+
     @Override
     public void writeRaw(byte[] data) throws IOException {
         // TuiRunner.create enables bracketed paste through this method
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelperRecordingTest.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelperRecordingTest.java
index d806b3d4fb7d..4dcd75d1cb0b 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelperRecordingTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/TuiBackendHelperRecordingTest.java
@@ -22,6 +22,7 @@ import java.nio.file.Path;
 import dev.tamboui.internal.record.AnsiTerminalCapture;
 import dev.tamboui.layout.Size;
 import dev.tamboui.terminal.Backend;
+import dev.tamboui.terminal.KeyboardProtocol;
 import dev.tamboui.tui.TuiRunner;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
@@ -70,6 +71,16 @@ class TuiBackendHelperRecordingTest {
         }
     }
 
+    @Test
+    void theTerminalStaysOnTheLegacyKeyboardProtocol() throws Exception {
+        // TamboUI 0.7 defaults to the Kitty keyboard protocol, which changes 
how some keys arrive
+        NoopBackend backend = new NoopBackend();
+
+        try (TuiRunner runner = TuiBackendHelper.createTuiRunner(backend)) {
+            
assertThat(backend.keyboardProtocol()).isEqualTo(KeyboardProtocol.LEGACY);
+        }
+    }
+
     @Test
     void withRecordOptionTheBackendIsWrappedAndSizedFromTheRecordingConfig() 
throws Exception {
         Path tape = tempDir.resolve("demo.tape");
diff --git a/parent/pom.xml b/parent/pom.xml
index 4c8dd441046a..4420a7c4d9c7 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -535,7 +535,7 @@
         <swagger-ui-version>5.34.1</swagger-ui-version>
         <stringtemplate-version>4.3.4</stringtemplate-version>
         <tahu-version>1.0.21</tahu-version>
-        <tamboui-version>0.6.0</tamboui-version>
+        <tamboui-version>0.7.0</tamboui-version>
         <testcontainers-version>2.0.5</testcontainers-version>
         <thymeleaf-version>3.1.5.RELEASE</thymeleaf-version>
         <tika-version>4.1.0</tika-version>

Reply via email to