simvyn 2.6.2 → 2.6.4
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/README.md +3 -2
- package/dist/dashboard/assets/{index-CV-ugcyG.js → index-C84olC1W.js} +245 -106
- package/dist/dashboard/assets/index-C84olC1W.js.map +1 -0
- package/dist/dashboard/assets/{index-DPTLVb11.css → index-DkqAjveq.css} +88 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/index.js +118 -2
- package/package.json +1 -1
- package/dist/dashboard/assets/index-CV-ugcyG.js.map +0 -1
|
@@ -677,6 +677,14 @@
|
|
|
677
677
|
height: calc(var(--spacing) * 48);
|
|
678
678
|
}
|
|
679
679
|
|
|
680
|
+
.h-\[14px\] {
|
|
681
|
+
height: 14px;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
.h-\[18px\] {
|
|
685
|
+
height: 18px;
|
|
686
|
+
}
|
|
687
|
+
|
|
680
688
|
.h-\[calc\(100vh-240px\)\] {
|
|
681
689
|
height: calc(100vh - 240px);
|
|
682
690
|
}
|
|
@@ -793,10 +801,18 @@
|
|
|
793
801
|
width: calc(var(--spacing) * 84);
|
|
794
802
|
}
|
|
795
803
|
|
|
804
|
+
.w-\[14px\] {
|
|
805
|
+
width: 14px;
|
|
806
|
+
}
|
|
807
|
+
|
|
796
808
|
.w-\[30\%\] {
|
|
797
809
|
width: 30%;
|
|
798
810
|
}
|
|
799
811
|
|
|
812
|
+
.w-\[32px\] {
|
|
813
|
+
width: 32px;
|
|
814
|
+
}
|
|
815
|
+
|
|
800
816
|
.w-\[56px\] {
|
|
801
817
|
width: 56px;
|
|
802
818
|
}
|
|
@@ -886,11 +902,29 @@
|
|
|
886
902
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
887
903
|
}
|
|
888
904
|
|
|
905
|
+
.translate-x-\[2px\] {
|
|
906
|
+
--tw-translate-x: 2px;
|
|
907
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
.translate-x-\[16px\] {
|
|
911
|
+
--tw-translate-x: 16px;
|
|
912
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
913
|
+
}
|
|
914
|
+
|
|
889
915
|
.-translate-y-1\/2 {
|
|
890
916
|
--tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
|
|
891
917
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
892
918
|
}
|
|
893
919
|
|
|
920
|
+
.-rotate-90 {
|
|
921
|
+
rotate: -90deg;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
.rotate-90 {
|
|
925
|
+
rotate: 90deg;
|
|
926
|
+
}
|
|
927
|
+
|
|
894
928
|
.rotate-180 {
|
|
895
929
|
rotate: 180deg;
|
|
896
930
|
}
|
|
@@ -1307,6 +1341,16 @@
|
|
|
1307
1341
|
border-color: var(--color-text-secondary);
|
|
1308
1342
|
}
|
|
1309
1343
|
|
|
1344
|
+
.border-white\/5 {
|
|
1345
|
+
border-color: #ffffff0d;
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1349
|
+
.border-white\/5 {
|
|
1350
|
+
border-color: color-mix(in oklab, var(--color-white) 5%, transparent);
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1310
1354
|
.border-white\/8 {
|
|
1311
1355
|
border-color: #ffffff14;
|
|
1312
1356
|
}
|
|
@@ -1373,6 +1417,16 @@
|
|
|
1373
1417
|
}
|
|
1374
1418
|
}
|
|
1375
1419
|
|
|
1420
|
+
.bg-accent-blue\/40 {
|
|
1421
|
+
background-color: #4fa8e166;
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1425
|
+
.bg-accent-blue\/40 {
|
|
1426
|
+
background-color: color-mix(in oklab, var(--color-accent-blue) 40%, transparent);
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1376
1430
|
.bg-amber-500\/15 {
|
|
1377
1431
|
background-color: #f99c0026;
|
|
1378
1432
|
}
|
|
@@ -1519,6 +1573,16 @@
|
|
|
1519
1573
|
background-color: var(--color-text-muted);
|
|
1520
1574
|
}
|
|
1521
1575
|
|
|
1576
|
+
.bg-text-muted\/20 {
|
|
1577
|
+
background-color: #54555833;
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1580
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1581
|
+
.bg-text-muted\/20 {
|
|
1582
|
+
background-color: color-mix(in oklab, var(--color-text-muted) 20%, transparent);
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1522
1586
|
.bg-text-muted\/50 {
|
|
1523
1587
|
background-color: #54555880;
|
|
1524
1588
|
}
|
|
@@ -1529,6 +1593,16 @@
|
|
|
1529
1593
|
}
|
|
1530
1594
|
}
|
|
1531
1595
|
|
|
1596
|
+
.bg-text-muted\/60 {
|
|
1597
|
+
background-color: #54555899;
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1601
|
+
.bg-text-muted\/60 {
|
|
1602
|
+
background-color: color-mix(in oklab, var(--color-text-muted) 60%, transparent);
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1532
1606
|
.bg-transparent {
|
|
1533
1607
|
background-color: #0000;
|
|
1534
1608
|
}
|
|
@@ -1914,6 +1988,16 @@
|
|
|
1914
1988
|
}
|
|
1915
1989
|
}
|
|
1916
1990
|
|
|
1991
|
+
.text-text-muted\/60 {
|
|
1992
|
+
color: #54555899;
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1995
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1996
|
+
.text-text-muted\/60 {
|
|
1997
|
+
color: color-mix(in oklab, var(--color-text-muted) 60%, transparent);
|
|
1998
|
+
}
|
|
1999
|
+
}
|
|
2000
|
+
|
|
1917
2001
|
.text-text-primary {
|
|
1918
2002
|
color: var(--color-text-primary);
|
|
1919
2003
|
}
|
|
@@ -2090,6 +2174,10 @@
|
|
|
2090
2174
|
border-color: var(--color-glass-border-hover);
|
|
2091
2175
|
}
|
|
2092
2176
|
|
|
2177
|
+
.hover\:bg-\[rgba\(255\,255\,255\,0\.05\)\]:hover {
|
|
2178
|
+
background-color: #ffffff0d;
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2093
2181
|
.hover\:bg-\[rgba\(255\,255\,255\,0\.08\)\]:hover {
|
|
2094
2182
|
background-color: #ffffff14;
|
|
2095
2183
|
}
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
}
|
|
39
39
|
</style>
|
|
40
40
|
<title>simvyn</title>
|
|
41
|
-
<script type="module" crossorigin src="/assets/index-
|
|
42
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
41
|
+
<script type="module" crossorigin src="/assets/index-C84olC1W.js"></script>
|
|
42
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DkqAjveq.css">
|
|
43
43
|
</head>
|
|
44
44
|
<body>
|
|
45
45
|
<div id="root"></div>
|
package/dist/index.js
CHANGED
|
@@ -513,6 +513,42 @@ function createAndroidAdapter() {
|
|
|
513
513
|
enabled ? "1" : "0"
|
|
514
514
|
]);
|
|
515
515
|
},
|
|
516
|
+
async setOrientation(deviceId, orientation) {
|
|
517
|
+
if (deviceId.startsWith("avd:"))
|
|
518
|
+
throw new Error("Device must be booted for orientation operations");
|
|
519
|
+
const map = {
|
|
520
|
+
portrait: "0",
|
|
521
|
+
"landscape-left": "1",
|
|
522
|
+
"portrait-upside-down": "2",
|
|
523
|
+
"landscape-right": "3"
|
|
524
|
+
};
|
|
525
|
+
const value = map[orientation];
|
|
526
|
+
if (!value && !["0", "1", "2", "3"].includes(orientation))
|
|
527
|
+
throw new Error(
|
|
528
|
+
`Invalid orientation: ${orientation}. Use: portrait, landscape-left, landscape-right, portrait-upside-down`
|
|
529
|
+
);
|
|
530
|
+
const rotation = value ?? orientation;
|
|
531
|
+
await verboseExec("adb", [
|
|
532
|
+
"-s",
|
|
533
|
+
deviceId,
|
|
534
|
+
"shell",
|
|
535
|
+
"settings",
|
|
536
|
+
"put",
|
|
537
|
+
"system",
|
|
538
|
+
"accelerometer_rotation",
|
|
539
|
+
"0"
|
|
540
|
+
]);
|
|
541
|
+
await verboseExec("adb", [
|
|
542
|
+
"-s",
|
|
543
|
+
deviceId,
|
|
544
|
+
"shell",
|
|
545
|
+
"settings",
|
|
546
|
+
"put",
|
|
547
|
+
"system",
|
|
548
|
+
"user_rotation",
|
|
549
|
+
rotation
|
|
550
|
+
]);
|
|
551
|
+
},
|
|
516
552
|
setStatusBar: void 0,
|
|
517
553
|
clearStatusBar: void 0,
|
|
518
554
|
setContentSize: void 0,
|
|
@@ -698,7 +734,8 @@ function createAndroidAdapter() {
|
|
|
698
734
|
"displayOverride",
|
|
699
735
|
"batterySimulation",
|
|
700
736
|
"inputInjection",
|
|
701
|
-
"bugReport"
|
|
737
|
+
"bugReport",
|
|
738
|
+
"orientation"
|
|
702
739
|
];
|
|
703
740
|
}
|
|
704
741
|
};
|
|
@@ -1881,6 +1918,30 @@ var init_action_registry = __esm({
|
|
|
1881
1918
|
},
|
|
1882
1919
|
isSupported: (adapter) => !!adapter.setIncreaseContrast
|
|
1883
1920
|
},
|
|
1921
|
+
{
|
|
1922
|
+
id: "set-orientation",
|
|
1923
|
+
label: "Set Orientation",
|
|
1924
|
+
description: "Rotate the device to a specific orientation (Android only)",
|
|
1925
|
+
module: "device-settings",
|
|
1926
|
+
params: [
|
|
1927
|
+
{
|
|
1928
|
+
key: "orientation",
|
|
1929
|
+
label: "Orientation",
|
|
1930
|
+
type: "select",
|
|
1931
|
+
required: true,
|
|
1932
|
+
options: [
|
|
1933
|
+
{ label: "Portrait", value: "portrait" },
|
|
1934
|
+
{ label: "Landscape Left", value: "landscape-left" },
|
|
1935
|
+
{ label: "Landscape Right", value: "landscape-right" },
|
|
1936
|
+
{ label: "Portrait Upside Down", value: "portrait-upside-down" }
|
|
1937
|
+
]
|
|
1938
|
+
}
|
|
1939
|
+
],
|
|
1940
|
+
async execute(adapter, deviceId, params) {
|
|
1941
|
+
await adapter.setOrientation(deviceId, params.orientation);
|
|
1942
|
+
},
|
|
1943
|
+
isSupported: (adapter) => !!adapter.setOrientation
|
|
1944
|
+
},
|
|
1884
1945
|
{
|
|
1885
1946
|
id: "boot-device",
|
|
1886
1947
|
label: "Boot Device",
|
|
@@ -5404,6 +5465,40 @@ function registerSettingsCli(program2) {
|
|
|
5404
5465
|
dm.stop();
|
|
5405
5466
|
}
|
|
5406
5467
|
});
|
|
5468
|
+
settings.command("orientation <device> <orientation>").description(
|
|
5469
|
+
"Set device orientation (portrait, landscape-left, landscape-right, portrait-upside-down)"
|
|
5470
|
+
).action(async (deviceId, orientation) => {
|
|
5471
|
+
const valid = ["portrait", "landscape-left", "landscape-right", "portrait-upside-down"];
|
|
5472
|
+
if (!valid.includes(orientation)) {
|
|
5473
|
+
console.error(`Invalid orientation: ${orientation}`);
|
|
5474
|
+
console.error(`Valid options: ${valid.join(", ")}`);
|
|
5475
|
+
process.exit(1);
|
|
5476
|
+
}
|
|
5477
|
+
const { createAvailableAdapters: createAvailableAdapters2, createDeviceManager: createDeviceManager2 } = await Promise.resolve().then(() => (init_src(), src_exports));
|
|
5478
|
+
const adapters = await createAvailableAdapters2();
|
|
5479
|
+
const dm = createDeviceManager2(adapters);
|
|
5480
|
+
try {
|
|
5481
|
+
const devices = await dm.refresh();
|
|
5482
|
+
const target = devices.find((d) => d.id === deviceId || d.id.startsWith(deviceId));
|
|
5483
|
+
if (!target) {
|
|
5484
|
+
console.error(`Device not found: ${deviceId}`);
|
|
5485
|
+
process.exit(1);
|
|
5486
|
+
}
|
|
5487
|
+
if (target.state !== "booted") {
|
|
5488
|
+
console.error("Device must be booted");
|
|
5489
|
+
process.exit(1);
|
|
5490
|
+
}
|
|
5491
|
+
const adapter = dm.getAdapter(target.platform);
|
|
5492
|
+
if (!adapter?.setOrientation) {
|
|
5493
|
+
console.error(`Orientation not supported for ${target.platform}`);
|
|
5494
|
+
process.exit(1);
|
|
5495
|
+
}
|
|
5496
|
+
await adapter.setOrientation(target.id, orientation);
|
|
5497
|
+
console.log(`Orientation set to ${orientation} on ${target.name}`);
|
|
5498
|
+
} finally {
|
|
5499
|
+
dm.stop();
|
|
5500
|
+
}
|
|
5501
|
+
});
|
|
5407
5502
|
}
|
|
5408
5503
|
function registerA11yCli(program2) {
|
|
5409
5504
|
const a11y = program2.command("a11y").description("Accessibility commands");
|
|
@@ -6526,6 +6621,25 @@ async function settingsRoutes(fastify) {
|
|
|
6526
6621
|
}
|
|
6527
6622
|
}
|
|
6528
6623
|
);
|
|
6624
|
+
fastify.post(
|
|
6625
|
+
"/orientation",
|
|
6626
|
+
async (req, reply) => {
|
|
6627
|
+
const { deviceId, orientation } = req.body;
|
|
6628
|
+
const device = fastify.deviceManager.devices.find((d) => d.id === deviceId);
|
|
6629
|
+
if (!device) return reply.status(404).send({ error: "Device not found" });
|
|
6630
|
+
if (device.state !== "booted")
|
|
6631
|
+
return reply.status(400).send({ error: "Device must be booted" });
|
|
6632
|
+
const adapter = fastify.deviceManager.getAdapter(device.platform);
|
|
6633
|
+
if (!adapter?.setOrientation)
|
|
6634
|
+
return reply.status(400).send({ error: "Orientation not supported for this platform" });
|
|
6635
|
+
try {
|
|
6636
|
+
await adapter.setOrientation(device.id, orientation);
|
|
6637
|
+
return { success: true };
|
|
6638
|
+
} catch (err) {
|
|
6639
|
+
return reply.status(500).send({ error: err.message });
|
|
6640
|
+
}
|
|
6641
|
+
}
|
|
6642
|
+
);
|
|
6529
6643
|
fastify.get("/capabilities", async (req, reply) => {
|
|
6530
6644
|
const { deviceId } = req.query;
|
|
6531
6645
|
const device = fastify.deviceManager.devices.find((d) => d.id === deviceId);
|
|
@@ -6547,6 +6661,7 @@ async function settingsRoutes(fastify) {
|
|
|
6547
6661
|
batterySimulation: !!adapter?.setBattery,
|
|
6548
6662
|
inputInjection: !!adapter?.inputTap,
|
|
6549
6663
|
bugReport: !!adapter?.collectBugReport,
|
|
6664
|
+
orientation: !!adapter?.setOrientation,
|
|
6550
6665
|
fileSystem: !isIosPhysical,
|
|
6551
6666
|
database: !isIosPhysical
|
|
6552
6667
|
};
|
|
@@ -6575,7 +6690,8 @@ var deviceSettingsModule = {
|
|
|
6575
6690
|
"displayOverride",
|
|
6576
6691
|
"batterySimulation",
|
|
6577
6692
|
"inputInjection",
|
|
6578
|
-
"bugReport"
|
|
6693
|
+
"bugReport",
|
|
6694
|
+
"orientation"
|
|
6579
6695
|
]
|
|
6580
6696
|
};
|
|
6581
6697
|
var manifest_default8 = deviceSettingsModule;
|
package/package.json
CHANGED