xterm-input-panel 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/package.json +1 -1
- package/src/xterm-addon.ts +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# xterm-input-panel
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7c7735b: Add OPSX compose workflow for change actions: actions now open a pop-area prompt editor with terminal target selection, copy/save-to-history controls, and send-to-terminal flow.
|
|
8
|
+
|
|
9
|
+
Improve terminal input safety/feedback by surfacing write readiness and sanitizing generated payloads before dispatch.
|
|
10
|
+
|
|
11
|
+
Enable InputPanel FAB usage on desktop while keeping touch-device keyboard suppression behavior.
|
|
12
|
+
|
|
13
|
+
Refine compose dialog/editor layout controls and add route/navigation support for `/opsx-compose`.
|
|
14
|
+
|
|
3
15
|
## 1.0.0
|
|
4
16
|
|
|
5
17
|
### Major Changes
|
package/package.json
CHANGED
package/src/xterm-addon.ts
CHANGED
|
@@ -123,8 +123,6 @@ export class InputPanelAddon implements ITerminalAddon {
|
|
|
123
123
|
return
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
if (!isTouchDevice()) return
|
|
127
|
-
|
|
128
126
|
const btn = document.createElement('button')
|
|
129
127
|
btn.type = 'button'
|
|
130
128
|
btn.title = 'Open InputPanel'
|
|
@@ -393,11 +391,6 @@ export class InputPanelAddon implements ITerminalAddon {
|
|
|
393
391
|
|
|
394
392
|
this._listenersAttached = true
|
|
395
393
|
|
|
396
|
-
if (!isTouchDevice()) return
|
|
397
|
-
|
|
398
|
-
// Permanently suppress native keyboard on touch devices
|
|
399
|
-
textarea.setAttribute('inputmode', 'none')
|
|
400
|
-
|
|
401
394
|
// Ensure native FAB exists in the correct mount target
|
|
402
395
|
InputPanelAddon._ensureFab(this._getMountTarget())
|
|
403
396
|
|
|
@@ -410,10 +403,15 @@ export class InputPanelAddon implements ITerminalAddon {
|
|
|
410
403
|
// textarea focus → open InputPanel (migration via singleton)
|
|
411
404
|
const onFocus = () => {
|
|
412
405
|
InputPanelAddon._lastFocused = this
|
|
413
|
-
if (!this._isOpen) this.open()
|
|
406
|
+
if (isTouchDevice() && !this._isOpen) this.open()
|
|
414
407
|
}
|
|
415
408
|
textarea.addEventListener('focus', onFocus)
|
|
416
409
|
this._persistentCleanups.push(() => textarea.removeEventListener('focus', onFocus))
|
|
410
|
+
|
|
411
|
+
// Permanently suppress native keyboard on touch devices only
|
|
412
|
+
if (isTouchDevice()) {
|
|
413
|
+
textarea.setAttribute('inputmode', 'none')
|
|
414
|
+
}
|
|
417
415
|
}
|
|
418
416
|
|
|
419
417
|
open(): void {
|
|
@@ -654,8 +652,7 @@ export class InputPanelAddon implements ITerminalAddon {
|
|
|
654
652
|
this._cursorEl?.remove()
|
|
655
653
|
this._cursorEl = null
|
|
656
654
|
|
|
657
|
-
|
|
658
|
-
if (!this._listenersAttached) {
|
|
655
|
+
if (!isTouchDevice()) {
|
|
659
656
|
this._restoreKeyboard()
|
|
660
657
|
}
|
|
661
658
|
|
|
@@ -675,7 +672,9 @@ export class InputPanelAddon implements ITerminalAddon {
|
|
|
675
672
|
private _focusTerminal(): void {
|
|
676
673
|
const textarea = this._terminal?.textarea
|
|
677
674
|
if (!textarea) return
|
|
678
|
-
|
|
675
|
+
if (isTouchDevice()) {
|
|
676
|
+
textarea.setAttribute('inputmode', 'none')
|
|
677
|
+
}
|
|
679
678
|
textarea.focus()
|
|
680
679
|
}
|
|
681
680
|
|
|
@@ -869,6 +868,7 @@ export class InputPanelAddon implements ITerminalAddon {
|
|
|
869
868
|
// ── Keyboard suppression ──
|
|
870
869
|
|
|
871
870
|
private _suppressKeyboard(): void {
|
|
871
|
+
if (!isTouchDevice()) return
|
|
872
872
|
const textarea = this._terminal?.textarea
|
|
873
873
|
if (textarea) textarea.setAttribute('inputmode', 'none')
|
|
874
874
|
}
|