@trusty-squire/mcp 0.7.4 → 0.7.5
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/assets/login/vnc.html +23 -36
- package/package.json +1 -1
package/assets/login/vnc.html
CHANGED
|
@@ -29,17 +29,25 @@
|
|
|
29
29
|
flex: none; }
|
|
30
30
|
#dot.ok { background: #3fb950; }
|
|
31
31
|
#dot.err { background: #f85149; }
|
|
32
|
-
/*
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
/* noVNC's scaleViewport is unreliable on mobile — its measurement
|
|
33
|
+
races flex layout and we've burned three releases on it. Just
|
|
34
|
+
do the scaling ourselves: width:100% + height:auto on the
|
|
35
|
+
canvas, with the screen DIV flex-centering whatever's inside.
|
|
36
|
+
The browser does aspect-preserving scaling from the canvas's
|
|
37
|
+
intrinsic dimensions (the framebuffer width/height attributes)
|
|
38
|
+
— exactly what we want, no JS involved. The !important is
|
|
39
|
+
required because noVNC writes inline `style.width`/`style.height`
|
|
40
|
+
on the canvas; without !important those would beat our rule. */
|
|
39
41
|
#screen { flex: 1; position: relative; background: #0f1115;
|
|
40
42
|
min-height: 0; min-width: 0; width: 100%;
|
|
41
|
-
overflow: hidden;
|
|
42
|
-
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
display: flex; align-items: center; justify-content: center; }
|
|
45
|
+
#screen > canvas {
|
|
46
|
+
display: block !important;
|
|
47
|
+
width: 100% !important;
|
|
48
|
+
height: auto !important;
|
|
49
|
+
max-height: 100% !important;
|
|
50
|
+
}
|
|
43
51
|
/* Overlay siblings of #screen — `position: fixed` against the
|
|
44
52
|
viewport, NOT positioned inside #screen. RFB appends a <canvas>
|
|
45
53
|
child to #screen at connect time, and that canvas can cover any
|
|
@@ -120,29 +128,12 @@
|
|
|
120
128
|
let rfb;
|
|
121
129
|
try {
|
|
122
130
|
rfb = new RFB(screen, wsUrl, { credentials: { password }, shared: true });
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
// canvas redraws at native resolution, otherwise scaleViewport
|
|
130
|
-
// shrinks the original.
|
|
131
|
-
rfb.scaleViewport = true;
|
|
132
|
-
rfb.resizeSession = true;
|
|
133
|
-
|
|
134
|
-
// Re-apply the scale on any layout change (window resize,
|
|
135
|
-
// soft-keyboard pop, orientation flip). noVNC also does this
|
|
136
|
-
// internally on `connect`, but on at least one Android+noVNC-1.x
|
|
137
|
-
// combo the first scale fires before the flex layout finalizes,
|
|
138
|
-
// leaving the canvas at framebuffer-native size until something
|
|
139
|
-
// triggers a re-measure. A no-op assignment runs the setter,
|
|
140
|
-
// which re-reads the screen DIV's bounding rect and re-scales.
|
|
141
|
-
const reapplyScale = () => {
|
|
142
|
-
if (rfb) rfb.scaleViewport = true;
|
|
143
|
-
};
|
|
144
|
-
window.addEventListener("resize", reapplyScale);
|
|
145
|
-
window.addEventListener("orientationchange", reapplyScale);
|
|
131
|
+
// Disable BOTH server-side resize and noVNC's CSS scaling. The
|
|
132
|
+
// canvas styling above does aspect-preserving fit-to-width in
|
|
133
|
+
// pure CSS; touching either of these from JS introduces races
|
|
134
|
+
// we can't win on first paint.
|
|
135
|
+
rfb.scaleViewport = false;
|
|
136
|
+
rfb.resizeSession = false;
|
|
146
137
|
} catch (err) {
|
|
147
138
|
dot.className = "err";
|
|
148
139
|
msg.textContent = "Could not start the login window: " + err;
|
|
@@ -152,10 +143,6 @@
|
|
|
152
143
|
rfb.addEventListener("connect", () => {
|
|
153
144
|
dot.className = "ok";
|
|
154
145
|
msg.style.display = "none";
|
|
155
|
-
// Re-fire the scale after the canvas has actually been added
|
|
156
|
-
// to the DOM by RFB — the property assigned at construction
|
|
157
|
-
// time may have run against an empty container.
|
|
158
|
-
reapplyScale();
|
|
159
146
|
});
|
|
160
147
|
rfb.addEventListener("disconnect", () => {
|
|
161
148
|
dot.className = "err";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trusty-squire/mcp",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"mcpName": "io.github.Trusty-Squire/mcp",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Local MCP server vibe coding agents install. Thin relay to the Trusty Squire API, with the bundled universal signup bot.",
|