@remcp/runtime 0.2.88 → 0.2.89
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 +6 -0
- package/package.json +1 -1
- package/src/wayland-remote-desktop.mjs +12 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.89 — 2026-09-21
|
|
4
|
+
|
|
5
|
+
- EIS direct typing preflights every character before dispatch, so unsupported Unicode fails before any partial keyboard mutation.
|
|
6
|
+
- Added regression coverage proving `abc✓` sends zero EIS events before the ASCII-only error.
|
|
7
|
+
- Compact and granular runtime catalogs remain unchanged; lockstep patch release at `0.2.89`.
|
|
8
|
+
|
|
3
9
|
## 0.2.88 — 2026-09-21
|
|
4
10
|
|
|
5
11
|
- Added a real compact stdio façade over the same runtime handlers: `read_file` plus up to seven capability-filtered `verb_noun` domain tools.
|
package/package.json
CHANGED
|
@@ -564,19 +564,25 @@ function eisStrokeForChar(char) {
|
|
|
564
564
|
|
|
565
565
|
export async function portalTypeText(value, { delayMs = 1, timeoutMs, state: suppliedState } = {}) {
|
|
566
566
|
const state = suppliedState || await ensureWaylandRemoteDesktop({ timeoutMs });
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
567
|
+
const input = String(value ?? '');
|
|
568
|
+
if (state.backend === 'xdg-eis') {
|
|
569
|
+
const strokes = [...input].map(eisStrokeForChar);
|
|
570
|
+
if (strokes.some(stroke => !stroke)) {
|
|
571
|
+
throw new ToolError('EIS 1.2 direct typing supports ASCII only; use accessibility or clipboard-paste input for Unicode text');
|
|
572
|
+
}
|
|
573
|
+
for (const stroke of strokes) {
|
|
571
574
|
if (stroke.shift) await notifyKeycode(state, 42, 1);
|
|
572
575
|
await notifyKeycode(state, stroke.keycode, 1);
|
|
573
576
|
await notifyKeycode(state, stroke.keycode, 0);
|
|
574
577
|
if (stroke.shift) await notifyKeycode(state, 42, 0);
|
|
575
|
-
|
|
578
|
+
if (delayMs > 0) await new Promise(resolve => setTimeout(resolve, Math.min(1000, delayMs)));
|
|
579
|
+
}
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
for (const char of input) {
|
|
576
583
|
const keysym = char === '\n' ? 0xff0d : char === '\t' ? 0xff09 : keysymForToken(char);
|
|
577
584
|
await notifyKeysym(state, keysym, 1);
|
|
578
585
|
await notifyKeysym(state, keysym, 0);
|
|
579
|
-
}
|
|
580
586
|
if (delayMs > 0) await new Promise(resolve => setTimeout(resolve, Math.min(1000, delayMs)));
|
|
581
587
|
}
|
|
582
588
|
}
|