ds-harness-remote 0.4.16 → 0.4.17
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/dist/client-runtime.js +1 -1
- package/dist/client-runtime.js.map +1 -1
- package/dist/client.github.js +57 -18
- package/dist/client.js +57 -18
- package/dist/client.js.map +1 -1
- package/dist/codex/domain.d.ts +2 -0
- package/dist/codex/domain.d.ts.map +1 -1
- package/dist/codex/domain.js +15 -0
- package/dist/codex/domain.js.map +1 -1
- package/dist/codex/session-id.d.ts +10 -0
- package/dist/codex/session-id.d.ts.map +1 -0
- package/dist/codex/session-id.js +15 -0
- package/dist/codex/session-id.js.map +1 -0
- package/dist/codex/virtual-harness.d.ts +3 -2
- package/dist/codex/virtual-harness.d.ts.map +1 -1
- package/dist/codex/virtual-harness.js +32 -3
- package/dist/codex/virtual-harness.js.map +1 -1
- package/dist/codex-workspace-bridge.d.ts +108 -0
- package/dist/codex-workspace-bridge.d.ts.map +1 -0
- package/dist/codex-workspace-bridge.js +475 -0
- package/dist/codex-workspace-bridge.js.map +1 -0
- package/dist/harness-remote-bridge.d.ts +4 -2
- package/dist/harness-remote-bridge.d.ts.map +1 -1
- package/dist/harness-remote-bridge.js +22 -2
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +616 -78
- package/dist/index.js.map +4 -4
- package/dist/service.d.ts +7 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +8 -2
- package/dist/service.js.map +1 -1
- package/dist/terminal-policy.d.ts.map +1 -1
- package/dist/terminal-policy.js +8 -2
- package/dist/terminal-policy.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -1976,6 +1976,8 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
1976
1976
|
signInClientDescription: "Connect once. Available anytime.",
|
|
1977
1977
|
startSignIn: "Start sign-in",
|
|
1978
1978
|
allowControlCurrentDevice: "Allow control of this device",
|
|
1979
|
+
allowControlDevice: "Allow control of device",
|
|
1980
|
+
allowRemoteTerminal: "Allow remote terminal",
|
|
1979
1981
|
connectedClientCount: "{count} connected",
|
|
1980
1982
|
checkAcp: "Check ACP",
|
|
1981
1983
|
checkingAcp: "Checking ACP\u2026",
|
|
@@ -2212,6 +2214,8 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
2212
2214
|
signInClientDescription: "\u4E00\u6B21\u8FDE\u63A5\uFF0C\u968F\u65F6\u53EF\u7528\u3002",
|
|
2213
2215
|
startSignIn: "\u5F00\u59CB\u767B\u5F55",
|
|
2214
2216
|
allowControlCurrentDevice: "\u5141\u8BB8\u63A7\u5236\u5F53\u524D\u8BBE\u5907",
|
|
2217
|
+
allowControlDevice: "\u5141\u8BB8\u63A7\u5236\u8BBE\u5907",
|
|
2218
|
+
allowRemoteTerminal: "\u5141\u8BB8\u8FDC\u7A0B\u7EC8\u7AEF",
|
|
2215
2219
|
connectedClientCount: "{count} \u53F0\u5DF2\u8FDE\u63A5",
|
|
2216
2220
|
checkAcp: "\u68C0\u6D4B ACP",
|
|
2217
2221
|
checkingAcp: "\u6B63\u5728\u68C0\u6D4B ACP\u2026",
|
|
@@ -2853,7 +2857,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
2853
2857
|
);
|
|
2854
2858
|
}
|
|
2855
2859
|
function RemoteWorkspaceAction(props) {
|
|
2856
|
-
let { t } = props, [open, setOpen] = React.useState(!1), [status, setStatus] = React.useState(void 0), [devices, setDevices] = React.useState([]), [selectedHost, setSelectedHost] = React.useState(void 0), [workspaces, setWorkspaces] = React.useState([]), [codexWorkspaces, setCodexWorkspaces] = React.useState([]), [workspaceBackend, setWorkspaceBackend] = React.useState("harness"), [codexWorkspaceId, setCodexWorkspaceId] = React.useState(void 0), [directory, setDirectory] = React.useState(void 0), [path, setPath] = React.useState(""), [addingWorkspace, setAddingWorkspace] = React.useState(!1), [showAllWorkspaces, setShowAllWorkspaces] = React.useState(!1), [showAllCodexWorkspaces, setShowAllCodexWorkspaces] = React.useState(!1), [devicesOpen, setDevicesOpen] = React.useState(!1), workspaceListId = "dsh-remote-workspace-list", codexWorkspaceHeadingId = "dsh-remote-codex-workspace-heading", codexWorkspaceListId = "dsh-remote-codex-workspace-list", [busy, setBusy] = React.useState(!1), [needsAuthorization, setNeedsAuthorization] = React.useState(!1), [email, setEmail] = React.useState(""), [password, setPassword] = React.useState(""), [loginServerUrl, setLoginServerUrl] = React.useState("https://dsh.r2049.cn"), [loginMethod, setLoginMethod] = React.useState(props.preferredQrProvider), [loginMethodManuallySelected, setLoginMethodManuallySelected] = React.useState(!1), [qrSession, setQrSession] = React.useState(void 0), [qrImage, setQrImage] = React.useState(void 0), [qrExpired, setQrExpired] = React.useState(!1), [progress, setProgress] = React.useState(void 0), progressRun = React.useRef(0), qrFlowRun = React.useRef(0), [notice, setNotice] = React.useState(void 0), [error, setError] = React.useState(void 0);
|
|
2860
|
+
let { t } = props, [open, setOpen] = React.useState(!1), [status, setStatus] = React.useState(void 0), [devices, setDevices] = React.useState([]), [selectedHost, setSelectedHost] = React.useState(void 0), [connectingHost, setConnectingHost] = React.useState(void 0), [workspaces, setWorkspaces] = React.useState([]), [codexWorkspaces, setCodexWorkspaces] = React.useState([]), [workspaceBackend, setWorkspaceBackend] = React.useState("harness"), [codexWorkspaceId, setCodexWorkspaceId] = React.useState(void 0), [directory, setDirectory] = React.useState(void 0), [path, setPath] = React.useState(""), [addingWorkspace, setAddingWorkspace] = React.useState(!1), [showAllWorkspaces, setShowAllWorkspaces] = React.useState(!1), [showAllCodexWorkspaces, setShowAllCodexWorkspaces] = React.useState(!1), [devicesOpen, setDevicesOpen] = React.useState(!1), workspaceListId = "dsh-remote-workspace-list", codexWorkspaceHeadingId = "dsh-remote-codex-workspace-heading", codexWorkspaceListId = "dsh-remote-codex-workspace-list", [busy, setBusy] = React.useState(!1), [terminalEnabled, setTerminalEnabled] = React.useState(!1), [terminalBusy, setTerminalBusy] = React.useState(!1), [needsAuthorization, setNeedsAuthorization] = React.useState(!1), [email, setEmail] = React.useState(""), [password, setPassword] = React.useState(""), [loginServerUrl, setLoginServerUrl] = React.useState("https://dsh.r2049.cn"), [loginMethod, setLoginMethod] = React.useState(props.preferredQrProvider), [loginMethodManuallySelected, setLoginMethodManuallySelected] = React.useState(!1), [qrSession, setQrSession] = React.useState(void 0), [qrImage, setQrImage] = React.useState(void 0), [qrExpired, setQrExpired] = React.useState(!1), [progress, setProgress] = React.useState(void 0), progressRun = React.useRef(0), qrFlowRun = React.useRef(0), [notice, setNotice] = React.useState(void 0), [error, setError] = React.useState(void 0);
|
|
2857
2861
|
React.useEffect(() => {
|
|
2858
2862
|
open || setDevicesOpen(!1);
|
|
2859
2863
|
}, [open]), React.useEffect(() => {
|
|
@@ -2881,6 +2885,9 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
2881
2885
|
props.control("status").then(setStatus).catch(() => {
|
|
2882
2886
|
});
|
|
2883
2887
|
}, []), React.useEffect(() => {
|
|
2888
|
+
status?.hostAuthorizationAvailable === !0 && props.control("settings.get").then((view) => setTerminalEnabled(view.config.terminal?.enabled === !0)).catch(() => {
|
|
2889
|
+
});
|
|
2890
|
+
}, [status?.hostAuthorizationAvailable]), React.useEffect(() => {
|
|
2884
2891
|
status?.serverUrl !== void 0 && loginServerUrl === "https://dsh.r2049.cn" && setLoginServerUrl(status.serverUrl);
|
|
2885
2892
|
}, [status?.serverUrl]), React.useEffect(() => {
|
|
2886
2893
|
let remoteActive = status?.mode === "remote";
|
|
@@ -2951,7 +2958,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
2951
2958
|
disabled: busy,
|
|
2952
2959
|
onClick: () => selectLoginMethod(provider)
|
|
2953
2960
|
}, t(provider === "github" ? "githubLogin" : "zhihuLogin")), selectHost = async (host) => {
|
|
2954
|
-
setBusy(!0), setError(void 0), setCodexWorkspaces([]), setShowAllWorkspaces(!1), setShowAllCodexWorkspaces(!1);
|
|
2961
|
+
setBusy(!0), setError(void 0), setConnectingHost(host), setCodexWorkspaces([]), setShowAllWorkspaces(!1), setShowAllCodexWorkspaces(!1);
|
|
2955
2962
|
try {
|
|
2956
2963
|
let result = await runConnectHostProgress(
|
|
2957
2964
|
status?.preferredTransports,
|
|
@@ -2975,7 +2982,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
2975
2982
|
} catch (reason) {
|
|
2976
2983
|
setError(messageOf(reason));
|
|
2977
2984
|
} finally {
|
|
2978
|
-
setBusy(!1);
|
|
2985
|
+
setConnectingHost(void 0), setBusy(!1);
|
|
2979
2986
|
}
|
|
2980
2987
|
}, browseDirectory = async (nextPath) => {
|
|
2981
2988
|
if (selectedHost !== void 0) {
|
|
@@ -3059,6 +3066,17 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3059
3066
|
} finally {
|
|
3060
3067
|
setBusy(!1);
|
|
3061
3068
|
}
|
|
3069
|
+
}, setRemoteTerminal = async (enabled) => {
|
|
3070
|
+
let previous = terminalEnabled;
|
|
3071
|
+
setTerminalEnabled(enabled), setTerminalBusy(!0), setError(void 0);
|
|
3072
|
+
try {
|
|
3073
|
+
let view = await props.control("settings.development.set", { terminalEnabled: enabled });
|
|
3074
|
+
setTerminalEnabled(view.config.terminal?.enabled === !0);
|
|
3075
|
+
} catch (reason) {
|
|
3076
|
+
setTerminalEnabled(previous), setError(messageOf(reason));
|
|
3077
|
+
} finally {
|
|
3078
|
+
setTerminalBusy(!1);
|
|
3079
|
+
}
|
|
3062
3080
|
}, logoutRemote = async () => {
|
|
3063
3081
|
setBusy(!0), setError(void 0);
|
|
3064
3082
|
try {
|
|
@@ -3139,7 +3157,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3139
3157
|
))
|
|
3140
3158
|
)
|
|
3141
3159
|
) : null
|
|
3142
|
-
) : null;
|
|
3160
|
+
) : null, listedHosts = connectingHost === void 0 ? devices : [connectingHost];
|
|
3143
3161
|
return React.createElement(
|
|
3144
3162
|
React.Fragment,
|
|
3145
3163
|
null,
|
|
@@ -3353,16 +3371,33 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3353
3371
|
React.createElement("strong", null, t("chooseHost")),
|
|
3354
3372
|
status?.hostAuthorizationAvailable ? React.createElement(
|
|
3355
3373
|
"div",
|
|
3356
|
-
{ className: "
|
|
3357
|
-
React.createElement(
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3374
|
+
{ className: "dshRemoteHostControlToggles" },
|
|
3375
|
+
React.createElement(
|
|
3376
|
+
"label",
|
|
3377
|
+
{ className: "dshRemoteHostControlToggle" },
|
|
3378
|
+
React.createElement("span", null, t("allowControlDevice")),
|
|
3379
|
+
React.createElement("input", {
|
|
3380
|
+
type: "checkbox",
|
|
3381
|
+
role: "switch",
|
|
3382
|
+
disabled: busy,
|
|
3383
|
+
"aria-label": t("allowControlDevice"),
|
|
3384
|
+
checked: status.host?.authorized === !0,
|
|
3385
|
+
onChange: (event) => void setCurrentDeviceControl(event.target.checked)
|
|
3386
|
+
})
|
|
3387
|
+
),
|
|
3388
|
+
React.createElement(
|
|
3389
|
+
"label",
|
|
3390
|
+
{ className: "dshRemoteHostControlToggle" },
|
|
3391
|
+
React.createElement("span", null, t("allowRemoteTerminal")),
|
|
3392
|
+
React.createElement("input", {
|
|
3393
|
+
type: "checkbox",
|
|
3394
|
+
role: "switch",
|
|
3395
|
+
disabled: busy || terminalBusy,
|
|
3396
|
+
"aria-label": t("allowRemoteTerminal"),
|
|
3397
|
+
checked: terminalEnabled,
|
|
3398
|
+
onChange: (event) => void setRemoteTerminal(event.target.checked)
|
|
3399
|
+
})
|
|
3400
|
+
)
|
|
3366
3401
|
) : null,
|
|
3367
3402
|
React.createElement("button", {
|
|
3368
3403
|
type: "button",
|
|
@@ -3373,12 +3408,16 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3373
3408
|
connectedMenu
|
|
3374
3409
|
)
|
|
3375
3410
|
),
|
|
3376
|
-
React.createElement("div", {
|
|
3411
|
+
React.createElement("div", {
|
|
3412
|
+
className: `dshRemoteHostList${connectingHost === void 0 ? "" : " isCollapsed"}`,
|
|
3413
|
+
"aria-busy": connectingHost === void 0 ? void 0 : !0
|
|
3414
|
+
}, listedHosts.length === 0 ? React.createElement("p", null, t(busy ? "checkingConnection" : "noRemoteHosts")) : listedHosts.map((device) => React.createElement(
|
|
3377
3415
|
"button",
|
|
3378
3416
|
{
|
|
3379
3417
|
type: "button",
|
|
3380
3418
|
key: device.deviceId,
|
|
3381
3419
|
disabled: busy || !device.online,
|
|
3420
|
+
"aria-current": connectingHost?.deviceId === device.deviceId ? "true" : void 0,
|
|
3382
3421
|
onClick: () => void selectHost(device)
|
|
3383
3422
|
},
|
|
3384
3423
|
React.createElement(
|
|
@@ -3395,7 +3434,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3395
3434
|
)))
|
|
3396
3435
|
) : null,
|
|
3397
3436
|
React.createElement(RemoteProgressView, { progress, t }),
|
|
3398
|
-
selectedHost === void 0 ? React.createElement("p", { className: "dshRemoteHint" }, t("selectHostHint")) : React.createElement(
|
|
3437
|
+
selectedHost === void 0 ? connectingHost === void 0 ? React.createElement("p", { className: "dshRemoteHint" }, t("selectHostHint")) : null : React.createElement(
|
|
3399
3438
|
"section",
|
|
3400
3439
|
{ className: "dshRemoteBrowser", "aria-label": t("chooseDirectory") },
|
|
3401
3440
|
React.createElement(
|
|
@@ -3916,7 +3955,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3916
3955
|
".dshRemoteAcpList>.dshRemoteAuthorizationSetting{grid-template-columns:minmax(0,1fr) 190px 40px 56px;column-gap:18px}.dshRemoteAcpCheckCell{grid-column:2;display:flex;align-items:center;gap:10px;min-width:0}.dshRemoteAcpCheckLink,.dshRemoteAcpRemoveLink{justify-self:start}.dshRemoteAcpCheckResult{position:static}",
|
|
3917
3956
|
".dshRemoteAcpCheckLink.isPassed{color:var(--dsw-alias-state-success-primary)}.dshRemoteAcpCheckLink.isFailed{color:var(--dsw-alias-state-danger-primary)}.dshRemoteAcpCheckLink.isChecking{color:var(--dsw-alias-label-secondary)}",
|
|
3918
3957
|
".dshRemoteCancelWorkspace{min-height:36px;border:0;background:transparent;color:var(--dsw-alias-label-secondary);padding:6px 0;cursor:pointer}.dshRemoteCancelWorkspace:hover:not(:disabled){color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteCancelWorkspace:disabled{opacity:.5;cursor:default}",
|
|
3919
|
-
|
|
3958
|
+
'.dshRemoteHostList{display:flex;flex-direction:column;border-top:1px solid var(--dsw-alias-border-l2);max-height:296px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.dshRemoteHostList.isCollapsed{max-height:none;overflow-y:visible}.dshRemoteHostList>button{min-height:58px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;border:0;border-bottom:1px solid var(--dsw-alias-border-l2);background:transparent;padding:10px 4px;cursor:pointer}.dshRemoteHostList>button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.dshRemoteHostList>button:disabled{opacity:.5;cursor:default}.dshRemoteHostList>button[aria-current="true"]{background:var(--dsw-alias-interactive-bg-hover)}.dshRemoteHostList>button>span{min-width:0;display:flex;flex-direction:column;gap:3px}.dshRemoteHostList>button strong{font-size:14px;font-weight:500}.dshRemoteHostList small{color:var(--dsw-alias-label-secondary);font-size:12px}',
|
|
3920
3959
|
'.dshRemoteConnectedMenu{position:relative;flex:0 0 auto;margin-right:4px}.dshRemoteConnectedCount{appearance:none;display:inline-flex;align-items:center;justify-content:center;height:22px;border:0;border-radius:999px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);box-shadow:0 1px 2px rgba(0,0,0,.18),0 0 0 1px rgba(255,255,255,.04) inset;padding:0 10px;font:inherit;font-size:11px;font-weight:500;line-height:17px;white-space:nowrap;cursor:default}.dshRemoteConnectedCount.isOnline{color:var(--dsw-alias-state-success-primary)}.dshRemoteConnectedCount.isInteractive{cursor:pointer}.dshRemoteConnectedCount.isInteractive:hover{filter:brightness(1.08)}.dshRemoteConnectedCount:disabled{opacity:1;cursor:default}.dshRemoteConnectedCount:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.dshRemoteConnectedPanel{position:absolute;top:calc(100% + 8px);right:0;z-index:4;width:min(320px,calc(100vw - 48px));max-height:min(280px,40vh);overflow:auto;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-2);box-shadow:0 10px 28px rgba(0,0,0,.28);padding:10px 12px}.dshRemoteConnectedPanelTitle{display:block;margin:0 0 6px;color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}.dshRemoteClientList{display:flex;flex-direction:column}.dshRemoteClientRow{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--dsw-alias-border-l2)}.dshRemoteClientRow:last-child{border-bottom:0}.dshRemoteClientRow>span{min-width:0;display:flex;flex-direction:column;gap:2px}.dshRemoteClientRow strong{font-size:13px;font-weight:500}.dshRemoteClientRow small{color:var(--dsw-alias-label-secondary);font-size:11px}.dshRemoteClientOnline{display:inline-flex;align-items:center;gap:6px;color:var(--dsw-alias-state-success-primary)!important}.dshRemoteClientOnline::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}',
|
|
3921
3960
|
".dshRemoteConnectedCount{height:auto;border-radius:0;background:transparent;box-shadow:none;padding:0 4px;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-underline-offset:3px}.dshRemoteConnectedCount.isInteractive:hover{filter:none;text-decoration-color:currentColor}.dshRemoteConnectedCount:focus-visible{outline-offset:3px;border-radius:3px}",
|
|
3922
3961
|
'.dshRemoteProgress{display:flex;flex-direction:column;gap:8px;margin:12px 0;padding:12px 14px;border:1px solid var(--dsw-alias-border-l2);border-radius:10px;background:var(--dsw-alias-bg-layer-2)}.dshRemoteProgressHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}.dshRemoteProgressHeader strong{font-size:13px;font-weight:600}.dshRemoteProgressHeader span{color:var(--dsw-alias-label-secondary);font-size:12px}.dshRemoteProgressBar{height:6px;overflow:hidden;border-radius:999px;background:var(--dsw-alias-bg-layer-3)}.dshRemoteProgressBar>span{display:block;width:100%;height:100%;border-radius:inherit;background:var(--dsw-alias-brand-primary);transform-origin:left center;transition:transform .22s ease-out}[dir="rtl"] .dshRemoteProgressBar>span{transform-origin:right center}.dshRemoteProgress p{margin:0;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.45}.dshRemoteProgressRoute{font-weight:500}.dshRemoteProgressRoute .isActive{color:var(--dsw-alias-state-success-primary);font-weight:700}.dshRemoteProgressRouteArrow{color:var(--dsw-alias-label-tertiary)}@media(prefers-reduced-motion:reduce){.dshRemoteProgressBar>span{transition:none}}',
|
|
@@ -3933,7 +3972,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
|
|
|
3933
3972
|
".dshRemoteClientLogin{width:min(440px,100%);display:flex;flex-direction:column;gap:8px}.dshRemoteClientLogin input{min-height:40px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:inherit;padding:0 12px;font:inherit}.dshRemoteClientLogin button{align-self:flex-start;min-height:40px;border:0;border-radius:8px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-1);padding:8px 16px;cursor:pointer}",
|
|
3934
3973
|
".dshRemoteQrLogin{width:min(440px,100%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:6px 0 2px;text-align:center}.dshRemoteQrLogin img,.dshRemoteQrPlaceholder{box-sizing:border-box;width:200px;height:200px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:#fff;padding:8px}.dshRemoteQrOpen{display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--dsw-alias-label-secondary);font-size:12px;text-decoration:none}.dshRemoteQrOpen:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteQrOpen:hover img{border-color:var(--dsw-alias-label-dimmed)}.dshRemoteQrOpen:focus-visible{border-radius:12px;outline:2px solid var(--dsw-alias-brand-primary);outline-offset:3px}.dshRemoteQrPlaceholder{display:flex;align-items:center;justify-content:center;color:var(--dsw-alias-label-secondary)}.dshRemoteQrLogin>strong{font-size:14px}.dshRemoteQrLogin>p{max-width:48ch;margin:0;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.5}.dshRemoteQrLogin>.dshRemoteServiceAddress{margin-top:2px;color:var(--dsw-alias-label-tertiary)}.dshRemoteServiceAddress>a{color:var(--dsw-alias-label-secondary);text-decoration:none}.dshRemoteServiceAddress>a:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteQrLogin>button,.dshRemoteClientLogin>.dshRemoteLoginSwitch{min-height:32px;border:0;background:transparent;color:var(--dsw-alias-label-secondary);padding:4px 8px;font:inherit;font-size:12px;cursor:pointer}.dshRemoteQrLogin>button:hover,.dshRemoteClientLogin>.dshRemoteLoginSwitch:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteClientLogin>.dshRemoteLoginSwitch{align-self:flex-start;background:transparent;color:var(--dsw-alias-label-secondary);padding-left:0}",
|
|
3935
3974
|
".dshRemoteLoginHeading{box-sizing:border-box;width:100%;display:flex;align-items:baseline;gap:10px;overflow:hidden;white-space:nowrap}.dshRemoteLoginTitle{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dshRemoteLoginHeading>span{flex:0 0 auto;color:var(--dsw-alias-label-secondary);font-size:13px;font-weight:400}.dshRemoteLoginTabs{box-sizing:border-box;width:100%}.dshRemoteLoginTabs>button{min-width:0;flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.dshRemoteLoginTabs>button.isActive::after{right:0;left:0;border-radius:0}.dshRemoteClientLogin,.dshRemoteQrLogin{box-sizing:border-box;width:100%;height:300px;min-height:300px}.dshRemoteClientLogin{align-items:stretch;padding-top:16px}.dshRemoteClientLogin>button{align-self:stretch;width:100%}.dshRemoteQrLogin{padding-top:12px}",
|
|
3936
|
-
'.dshRemoteHostControlToggle{display:flex;align-items:center;gap:7px;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px;white-space:nowrap;cursor:default}.dshRemoteHostControlToggle>input{appearance:none;box-sizing:border-box;position:relative;width:32px;height:18px;flex:0 0 auto;margin:0;border:1px solid var(--dsw-alias-label-secondary);border-radius:999px;background:var(--dsw-alias-bg-layer-3);cursor:pointer;box-shadow:inset 0 0 0 1px var(--dsw-alias-border-l2);transition:background .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out}.dshRemoteHostControlToggle>input::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--dsw-alias-label-secondary);transition:transform .16s ease-out,background .16s ease-out}.dshRemoteHostControlToggle>input:checked{border-color:var(--dsw-alias-state-success-primary);background:var(--dsw-alias-state-success-primary);box-shadow:none}.dshRemoteHostControlToggle>input:checked::after{transform:translateX(14px);background:var(--dsw-alias-bg-layer-1)}.dshRemoteHostControlToggle>input:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.dshRemoteHostControlToggle>input:disabled{opacity:.5;cursor:default}@media(prefers-reduced-motion:reduce){.dshRemoteHostControlToggle>input,.dshRemoteHostControlToggle>input::after{transition:none}}',
|
|
3975
|
+
'.dshRemoteHostControlToggles{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.dshRemoteHostControlToggle{display:flex;align-items:center;gap:7px;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px;white-space:nowrap;cursor:default}.dshRemoteHostControlToggle>input{appearance:none;box-sizing:border-box;position:relative;width:32px;height:18px;flex:0 0 auto;margin:0;border:1px solid var(--dsw-alias-label-secondary);border-radius:999px;background:var(--dsw-alias-bg-layer-3);cursor:pointer;box-shadow:inset 0 0 0 1px var(--dsw-alias-border-l2);transition:background .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out}.dshRemoteHostControlToggle>input::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--dsw-alias-label-secondary);transition:transform .16s ease-out,background .16s ease-out}.dshRemoteHostControlToggle>input:checked{border-color:var(--dsw-alias-state-success-primary);background:var(--dsw-alias-state-success-primary);box-shadow:none}.dshRemoteHostControlToggle>input:checked::after{transform:translateX(14px);background:var(--dsw-alias-bg-layer-1)}.dshRemoteHostControlToggle>input:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.dshRemoteHostControlToggle>input:disabled{opacity:.5;cursor:default}@media(prefers-reduced-motion:reduce){.dshRemoteHostControlToggle>input,.dshRemoteHostControlToggle>input::after{transition:none}}',
|
|
3937
3976
|
".dshRemoteAccountExit{flex:0 0 auto;border:0;background:transparent;color:var(--dsw-alias-label-secondary);cursor:pointer;padding:5px 0;font-size:12px;line-height:1.5;white-space:nowrap}.dshRemoteAccountExit:hover:not(:disabled){color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteAccountExit:disabled{opacity:.5;cursor:default;text-decoration:none}",
|
|
3938
3977
|
".dshRemoteLocalLink{align-self:flex-start;border:0;background:transparent;color:var(--dsw-alias-label-secondary);padding:4px 0;cursor:pointer}.dshRemoteLocalLink:hover{color:var(--dsw-alias-label-primary)}",
|
|
3939
3978
|
"@keyframes dshRemotePageIn{from{opacity:0;transform:translateY(6px) scale(.99)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.dshRemotePage{animation:none}}@media(max-width:620px){.dshRemoteBackdrop{padding:12px}.dshRemotePage{max-height:calc(100vh - 24px)}.dshRemotePageHeader{gap:8px;padding:12px 16px}.dshRemotePage.hasSelectedHost .dshRemotePageBack{max-width:112px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dshRemoteSectionHeading{align-items:flex-start;flex-direction:column;gap:8px}.dshRemoteWorkspaceHeading{align-items:center;flex-direction:row}.dshRemoteSectionActions{width:100%;justify-content:space-between}.dshRemotePageBody{padding:20px 16px}.dshRemoteOpenBar{align-items:flex-end}.dshRemoteOpenBar>button{min-height:48px}}",
|