simvyn 2.6.2 → 2.6.3

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.
@@ -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,6 +902,16 @@
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);
@@ -1307,6 +1333,16 @@
1307
1333
  border-color: var(--color-text-secondary);
1308
1334
  }
1309
1335
 
1336
+ .border-white\/5 {
1337
+ border-color: #ffffff0d;
1338
+ }
1339
+
1340
+ @supports (color: color-mix(in lab, red, red)) {
1341
+ .border-white\/5 {
1342
+ border-color: color-mix(in oklab, var(--color-white) 5%, transparent);
1343
+ }
1344
+ }
1345
+
1310
1346
  .border-white\/8 {
1311
1347
  border-color: #ffffff14;
1312
1348
  }
@@ -1373,6 +1409,16 @@
1373
1409
  }
1374
1410
  }
1375
1411
 
1412
+ .bg-accent-blue\/40 {
1413
+ background-color: #4fa8e166;
1414
+ }
1415
+
1416
+ @supports (color: color-mix(in lab, red, red)) {
1417
+ .bg-accent-blue\/40 {
1418
+ background-color: color-mix(in oklab, var(--color-accent-blue) 40%, transparent);
1419
+ }
1420
+ }
1421
+
1376
1422
  .bg-amber-500\/15 {
1377
1423
  background-color: #f99c0026;
1378
1424
  }
@@ -1519,6 +1565,16 @@
1519
1565
  background-color: var(--color-text-muted);
1520
1566
  }
1521
1567
 
1568
+ .bg-text-muted\/20 {
1569
+ background-color: #54555833;
1570
+ }
1571
+
1572
+ @supports (color: color-mix(in lab, red, red)) {
1573
+ .bg-text-muted\/20 {
1574
+ background-color: color-mix(in oklab, var(--color-text-muted) 20%, transparent);
1575
+ }
1576
+ }
1577
+
1522
1578
  .bg-text-muted\/50 {
1523
1579
  background-color: #54555880;
1524
1580
  }
@@ -1529,6 +1585,16 @@
1529
1585
  }
1530
1586
  }
1531
1587
 
1588
+ .bg-text-muted\/60 {
1589
+ background-color: #54555899;
1590
+ }
1591
+
1592
+ @supports (color: color-mix(in lab, red, red)) {
1593
+ .bg-text-muted\/60 {
1594
+ background-color: color-mix(in oklab, var(--color-text-muted) 60%, transparent);
1595
+ }
1596
+ }
1597
+
1532
1598
  .bg-transparent {
1533
1599
  background-color: #0000;
1534
1600
  }
@@ -1914,6 +1980,16 @@
1914
1980
  }
1915
1981
  }
1916
1982
 
1983
+ .text-text-muted\/60 {
1984
+ color: #54555899;
1985
+ }
1986
+
1987
+ @supports (color: color-mix(in lab, red, red)) {
1988
+ .text-text-muted\/60 {
1989
+ color: color-mix(in oklab, var(--color-text-muted) 60%, transparent);
1990
+ }
1991
+ }
1992
+
1917
1993
  .text-text-primary {
1918
1994
  color: var(--color-text-primary);
1919
1995
  }
@@ -2090,6 +2166,10 @@
2090
2166
  border-color: var(--color-glass-border-hover);
2091
2167
  }
2092
2168
 
2169
+ .hover\:bg-\[rgba\(255\,255\,255\,0\.05\)\]:hover {
2170
+ background-color: #ffffff0d;
2171
+ }
2172
+
2093
2173
  .hover\:bg-\[rgba\(255\,255\,255\,0\.08\)\]:hover {
2094
2174
  background-color: #ffffff14;
2095
2175
  }
@@ -30529,6 +30529,7 @@ function StateIndicator({ state }) {
30529
30529
  }
30530
30530
  function DeviceSelector() {
30531
30531
  const [open, setOpen] = reactExports.useState(false);
30532
+ const [showAll, setShowAll] = reactExports.useState(false);
30532
30533
  const [contextMenu, setContextMenu] = reactExports.useState(null);
30533
30534
  const ref = reactExports.useRef(null);
30534
30535
  const devices = useDeviceStore((s) => s.devices);
@@ -30545,7 +30546,10 @@ function DeviceSelector() {
30545
30546
  toast(`${name} disconnected`, { description: "Physical device removed" });
30546
30547
  }, []);
30547
30548
  useWsListener("devices", "device-disconnected", handleDeviceDisconnected);
30548
- const groups = groupDevices(devices);
30549
+ const selectedSet = new Set(selectedDeviceIds);
30550
+ const filteredDevices = showAll ? devices : devices.filter((d) => d.state === "booted" || selectedSet.has(d.id));
30551
+ const hiddenCount = devices.length - filteredDevices.length;
30552
+ const groups = groupDevices(filteredDevices);
30549
30553
  reactExports.useEffect(() => {
30550
30554
  if (!isMultiSelect && selectedDeviceIds.length > 1) {
30551
30555
  truncateToFirst();
@@ -30573,7 +30577,6 @@ function DeviceSelector() {
30573
30577
  e.preventDefault();
30574
30578
  setContextMenu({ x: e.clientX, y: e.clientY, deviceId });
30575
30579
  };
30576
- const selectedSet = new Set(selectedDeviceIds);
30577
30580
  const firstDevice = devices.find((d) => d.id === selectedDeviceIds[0]);
30578
30581
  let label;
30579
30582
  if (selectedDeviceIds.length === 0) {
@@ -30588,7 +30591,10 @@ function DeviceSelector() {
30588
30591
  "button",
30589
30592
  {
30590
30593
  type: "button",
30591
- onClick: () => setOpen(!open),
30594
+ onClick: () => {
30595
+ if (!open) setShowAll(false);
30596
+ setOpen(!open);
30597
+ },
30592
30598
  className: "glass-button flex items-center gap-2 px-3 py-1.5 text-sm",
30593
30599
  children: [
30594
30600
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: label }),
@@ -30609,6 +30615,29 @@ function DeviceSelector() {
30609
30615
  }
30610
30616
  ),
30611
30617
  open && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "glass-panel absolute top-full right-0 z-50 mt-2 w-84 max-h-96 overflow-y-auto p-1 shadow-xl shadow-black/30 !backdrop-blur-2xl !bg-[rgba(30,30,45,0.6)]", children: [
30618
+ devices.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
30619
+ "button",
30620
+ {
30621
+ type: "button",
30622
+ onClick: () => setShowAll(!showAll),
30623
+ className: "flex w-full items-center justify-between border-b border-white/5 px-3 py-2 text-xs text-text-muted hover:bg-[rgba(255,255,255,0.05)] cursor-pointer",
30624
+ children: [
30625
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: showAll ? "Showing all devices" : hiddenCount > 0 ? `Show ${hiddenCount} inactive device${hiddenCount === 1 ? "" : "s"}` : "Show inactive devices" }),
30626
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
30627
+ "span",
30628
+ {
30629
+ className: `relative inline-flex h-[18px] w-[32px] shrink-0 items-center rounded-full transition-colors ${showAll ? "bg-accent-blue/40" : "bg-text-muted/20"}`,
30630
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
30631
+ "span",
30632
+ {
30633
+ className: `inline-block h-[14px] w-[14px] rounded-full transition-transform ${showAll ? "translate-x-[16px] bg-accent-blue" : "translate-x-[2px] bg-text-muted/60"}`
30634
+ }
30635
+ )
30636
+ }
30637
+ )
30638
+ ]
30639
+ }
30640
+ ),
30612
30641
  Object.entries(groups).map(([platform, devs]) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
30613
30642
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 py-1 text-[10px] font-semibold uppercase tracking-wider text-text-muted", children: platform }),
30614
30643
  devs.map((d) => {
@@ -30674,6 +30703,10 @@ function DeviceSelector() {
30674
30703
  );
30675
30704
  })
30676
30705
  ] }, platform)),
30706
+ filteredDevices.length === 0 && devices.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-3 py-4 text-center", children: [
30707
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm text-text-muted", children: "No active devices" }),
30708
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-xs text-text-muted/60", children: "Use the toggle above to show inactive devices" })
30709
+ ] }),
30677
30710
  devices.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 py-4 text-center text-sm text-text-muted", children: "No devices detected" })
30678
30711
  ] }),
30679
30712
  contextMenu && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -52380,7 +52413,7 @@ function ToolSettingsPanel() {
52380
52413
  const [copied, setCopied] = reactExports.useState(false);
52381
52414
  const devices = useDeviceStore((s) => s.devices);
52382
52415
  const modules = useModuleStore((s) => s.modules);
52383
- const version = "2.6.2";
52416
+ const version = "2.6.3";
52384
52417
  const fetchStorage = reactExports.useCallback(() => {
52385
52418
  fetch("/api/tool-settings/storage").then((r) => r.json()).then((data) => setStorage(data)).catch(() => {
52386
52419
  });
@@ -53729,4 +53762,4 @@ function App() {
53729
53762
  clientExports.createRoot(document.getElementById("root")).render(
53730
53763
  /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) })
53731
53764
  );
53732
- //# sourceMappingURL=index-CV-ugcyG.js.map
53765
+ //# sourceMappingURL=index-QWG80lyd.js.map