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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xterm-input-panel",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "dependencies": {
@@ -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
- // On touch devices, keep inputmode='none' permanently
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
- textarea.setAttribute('inputmode', 'none')
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
  }