@remcp/runtime 0.2.143 → 0.2.145

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,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.145 — 2026-10-04
4
+
5
+ - No local runtime tool behavior or schema changes. This patch keeps @remcp/runtime aligned with the ReMCP 0.2.145 Plugin Directory metadata release.
6
+ - The 83-operation runtime surface and MCP annotations remain unchanged; the release affects OpenAI package review/publication metadata only.
7
+
8
+ ## 0.2.144 — 2026-10-03
9
+
10
+ - Linux ui_action focus is idempotent for controls that AT-SPI already reports as focused, avoiding GTK4/GLib focus errors from an unnecessary grabFocus() call.
11
+ - A failed/throwing grabFocus() is accepted only when an immediate AT-SPI state re-read proves the target became focused; otherwise the operation remains fail-closed.
12
+ - Live GNOME Text Editor verification reproduced the 0.2.143 failure and confirmed the patched handler succeeds on the same semantic text node. Tool names and schemas remain unchanged at 83 operations.
13
+
3
14
  ## 0.2.143 — 2026-10-03
4
15
 
5
16
  - No local runtime tool behavior or schema changes. This patch keeps the runtime package version aligned with the ReMCP 0.2.143 hosted/plugin release.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remcp/runtime",
3
- "version": "0.2.143",
3
+ "version": "0.2.145",
4
4
  "description": "First-party ReMCP local device runtime: filesystem, terminal, computer-use, browser, diagnostics and document tools over MCP.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -835,7 +835,17 @@ elif action in ("select","toggle"):
835
835
  applied=target.queryAction().doAction(0)
836
836
  if applied is False: raise Exception(action+" accessibility action returned false")
837
837
  elif action=="focus":
838
- if target.queryComponent().grabFocus() is False: raise Exception("focus accessibility action returned false")
838
+ already_focused=False
839
+ try: already_focused=bool(target.getState().contains(pyatspi.STATE_FOCUSED))
840
+ except: pass
841
+ if not already_focused:
842
+ try:
843
+ if target.queryComponent().grabFocus() is False: raise Exception("focus accessibility action returned false")
844
+ except Exception as focus_error:
845
+ try:
846
+ if not target.getState().contains(pyatspi.STATE_FOCUSED): raise focus_error
847
+ except Exception:
848
+ raise focus_error
839
849
  elif action=="set_value":
840
850
  try:
841
851
  applied=target.queryEditableText().setTextContents(value)