@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 +11 -0
- package/package.json +1 -1
- package/src/extended/desktop-linux.mjs +11 -1
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
|
@@ -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
|
-
|
|
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)
|