viveworker 0.1.2 → 0.1.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.
@@ -265,7 +265,7 @@ async function runSetup(cliOptions) {
265
265
  if (allowInsecureHttpLan) {
266
266
  console.log(t(locale, "cli.setup.warning.insecureHttpLan"));
267
267
  }
268
- if (canShowCaDownload && !cliOptions.installMkcert) {
268
+ if (canShowCaDownload && !cliOptions.installMkcert && !cliOptions.pair) {
269
269
  console.log(t(locale, "cli.setup.caDownloadLocal", { url: caDownloadLocalUrl }));
270
270
  console.log(t(locale, "cli.setup.caDownloadIp", { url: caDownloadIpUrl }));
271
271
  }
@@ -280,7 +280,7 @@ async function runSetup(cliOptions) {
280
280
  console.log("");
281
281
  console.log(t(locale, "cli.setup.qrPairing"));
282
282
  await printQrCode(`${publicBaseUrl}${pairPath}`);
283
- if (canShowCaDownload && !cliOptions.installMkcert) {
283
+ if (canShowCaDownload && !cliOptions.installMkcert && !cliOptions.pair) {
284
284
  console.log("");
285
285
  console.log(t(locale, "cli.setup.qrCaDownload"));
286
286
  await printQrCode(caDownloadIpUrl);
package/web/app.css CHANGED
@@ -1083,6 +1083,30 @@ code {
1083
1083
  gap: 0.34rem;
1084
1084
  }
1085
1085
 
1086
+ .timeline-entry__images {
1087
+ display: grid;
1088
+ grid-template-columns: repeat(auto-fit, minmax(68px, 1fr));
1089
+ gap: 0.46rem;
1090
+ margin-top: 0.08rem;
1091
+ }
1092
+
1093
+ .timeline-entry__image-frame {
1094
+ display: block;
1095
+ border-radius: 14px;
1096
+ overflow: hidden;
1097
+ background:
1098
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)),
1099
+ rgba(10, 17, 22, 0.76);
1100
+ border: 1px solid rgba(156, 181, 197, 0.12);
1101
+ }
1102
+
1103
+ .timeline-entry__image {
1104
+ display: block;
1105
+ width: 100%;
1106
+ aspect-ratio: 1 / 1;
1107
+ object-fit: cover;
1108
+ }
1109
+
1086
1110
  .timeline-entry__title,
1087
1111
  .timeline-entry__summary {
1088
1112
  margin: 0;
@@ -1425,11 +1449,55 @@ code {
1425
1449
  rgba(14, 22, 29, 0.84);
1426
1450
  }
1427
1451
 
1452
+ .detail-card--interrupt {
1453
+ margin-top: 0.24rem;
1454
+ gap: 0;
1455
+ background:
1456
+ linear-gradient(180deg, rgba(214, 171, 96, 0.12), rgba(255, 255, 255, 0.02)),
1457
+ rgba(21, 28, 33, 0.92);
1458
+ }
1459
+
1460
+ .detail-card--images {
1461
+ margin-top: 0.24rem;
1462
+ gap: 0;
1463
+ padding: 0.5rem;
1464
+ }
1465
+
1428
1466
  .detail-card--reply {
1429
1467
  margin-top: 0.32rem;
1430
1468
  gap: 0.72rem;
1431
1469
  }
1432
1470
 
1471
+ .detail-image-grid {
1472
+ display: grid;
1473
+ grid-template-columns: repeat(auto-fit, minmax(132px, 1fr));
1474
+ gap: 0.56rem;
1475
+ width: 100%;
1476
+ }
1477
+
1478
+ .detail-image-link {
1479
+ display: block;
1480
+ padding: 0;
1481
+ cursor: zoom-in;
1482
+ border-radius: 16px;
1483
+ overflow: hidden;
1484
+ background:
1485
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)),
1486
+ rgba(10, 17, 22, 0.86);
1487
+ border: 1px solid rgba(156, 181, 197, 0.12);
1488
+ box-shadow:
1489
+ 0 10px 22px rgba(0, 0, 0, 0.18),
1490
+ inset 0 1px 0 rgba(255, 255, 255, 0.03);
1491
+ }
1492
+
1493
+ .detail-image {
1494
+ display: block;
1495
+ width: 100%;
1496
+ aspect-ratio: 1 / 1;
1497
+ object-fit: cover;
1498
+ background: rgba(255, 255, 255, 0.03);
1499
+ }
1500
+
1433
1501
  .detail-context-card__header {
1434
1502
  display: grid;
1435
1503
  grid-template-columns: minmax(0, 1fr) auto;
@@ -1437,6 +1505,22 @@ code {
1437
1505
  align-items: center;
1438
1506
  }
1439
1507
 
1508
+ .detail-interrupt-copy {
1509
+ margin: 0;
1510
+ display: inline-flex;
1511
+ align-items: center;
1512
+ gap: 0.52rem;
1513
+ color: #ffe7b8;
1514
+ font-weight: 700;
1515
+ line-height: 1.45;
1516
+ }
1517
+
1518
+ .detail-interrupt-copy__icon {
1519
+ width: 1rem;
1520
+ height: 1rem;
1521
+ flex: 0 0 auto;
1522
+ }
1523
+
1440
1524
  .detail-context-card__eyebrow {
1441
1525
  min-width: 0;
1442
1526
  display: inline-flex;
@@ -1524,66 +1608,88 @@ code {
1524
1608
  gap: 0.5rem;
1525
1609
  }
1526
1610
 
1527
- .reply-field__input {
1528
- width: 100%;
1529
- min-height: 7.4rem;
1530
- padding: 0.9rem 1rem;
1611
+ .reply-field__shell {
1612
+ display: grid;
1613
+ gap: 0.52rem;
1614
+ padding: 0.82rem 0.9rem 0.76rem;
1531
1615
  border-radius: 18px;
1532
1616
  border: 1px solid var(--line);
1533
1617
  background: rgba(7, 12, 16, 0.96);
1618
+ }
1619
+
1620
+ .reply-field__input {
1621
+ width: 100%;
1622
+ min-height: 7.4rem;
1623
+ padding: 0;
1624
+ border-radius: 0;
1625
+ border: 0;
1626
+ background: transparent;
1534
1627
  color: var(--text);
1535
1628
  resize: vertical;
1536
1629
  font: inherit;
1537
1630
  line-height: 1.58;
1538
1631
  }
1539
1632
 
1633
+ .reply-field__input:focus {
1634
+ outline: none;
1635
+ }
1636
+
1540
1637
  .reply-field__input::placeholder {
1541
1638
  color: rgba(205, 220, 231, 0.42);
1542
1639
  }
1543
1640
 
1544
- .reply-attachment-field {
1641
+ .reply-field__toolbar {
1545
1642
  display: grid;
1546
- gap: 0.55rem;
1643
+ grid-template-columns: auto 1fr;
1644
+ align-items: end;
1645
+ gap: 0.72rem;
1547
1646
  }
1548
1647
 
1549
- .reply-attachment-field__header {
1550
- display: flex;
1648
+ .reply-attachment-trigger {
1649
+ position: relative;
1650
+ display: inline-flex;
1551
1651
  align-items: center;
1552
- justify-content: space-between;
1553
- gap: 0.75rem;
1554
- }
1555
-
1556
- .reply-attachment-picker {
1557
- display: grid;
1558
- gap: 0.18rem;
1559
- padding: 0.88rem 0.95rem;
1560
- border-radius: 18px;
1561
- border: 1px dashed rgba(156, 181, 197, 0.24);
1562
- background: rgba(255, 255, 255, 0.03);
1652
+ justify-content: center;
1653
+ width: 2.7rem;
1654
+ height: 2.7rem;
1655
+ border-radius: 999px;
1656
+ border: 1px solid rgba(156, 181, 197, 0.16);
1657
+ background: rgba(255, 255, 255, 0.04);
1658
+ color: #eef8ff;
1563
1659
  cursor: pointer;
1564
1660
  }
1565
1661
 
1566
- .reply-attachment-picker__input {
1662
+ .reply-attachment-trigger__input {
1567
1663
  position: absolute;
1664
+ inset: 0;
1568
1665
  opacity: 0;
1569
- pointer-events: none;
1666
+ cursor: pointer;
1570
1667
  }
1571
1668
 
1572
- .reply-attachment-picker__label {
1573
- font-size: 0.93rem;
1574
- font-weight: 700;
1575
- color: #eef8ff;
1669
+ .reply-attachment-trigger__icon {
1670
+ width: 1.1rem;
1671
+ height: 1.1rem;
1576
1672
  }
1577
1673
 
1578
- .reply-attachment-picker__hint {
1579
- font-size: 0.82rem;
1580
- color: var(--muted);
1581
- line-height: 1.42;
1674
+ .reply-attachment-trigger__count {
1675
+ position: absolute;
1676
+ top: -0.12rem;
1677
+ right: -0.08rem;
1678
+ min-width: 1.15rem;
1679
+ height: 1.15rem;
1680
+ padding: 0 0.22rem;
1681
+ border-radius: 999px;
1682
+ background: rgba(84, 190, 133, 0.96);
1683
+ color: #08110d;
1684
+ font-size: 0.72rem;
1685
+ font-weight: 800;
1686
+ line-height: 1.15rem;
1687
+ text-align: center;
1582
1688
  }
1583
1689
 
1584
1690
  .reply-image-preview {
1585
1691
  display: grid;
1586
- grid-template-columns: 4.5rem minmax(0, 1fr);
1692
+ grid-template-columns: 4.5rem minmax(0, 1fr) auto;
1587
1693
  gap: 0.8rem;
1588
1694
  align-items: center;
1589
1695
  padding: 0.78rem 0.85rem;
@@ -1592,6 +1698,11 @@ code {
1592
1698
  background: rgba(255, 255, 255, 0.04);
1593
1699
  }
1594
1700
 
1701
+ .reply-image-preview-list {
1702
+ display: grid;
1703
+ gap: 0.6rem;
1704
+ }
1705
+
1595
1706
  .reply-image-preview__image {
1596
1707
  width: 4.5rem;
1597
1708
  height: 4.5rem;
@@ -1625,6 +1736,60 @@ code {
1625
1736
  font-size: 0.8rem;
1626
1737
  }
1627
1738
 
1739
+ .reply-mode-toggle {
1740
+ justify-self: end;
1741
+ display: inline-grid;
1742
+ grid-template-columns: auto auto;
1743
+ align-items: center;
1744
+ gap: 0.62rem;
1745
+ min-width: 0;
1746
+ cursor: pointer;
1747
+ }
1748
+
1749
+ .reply-mode-toggle__label {
1750
+ color: rgba(236, 248, 255, 0.86);
1751
+ font-size: 0.88rem;
1752
+ font-weight: 700;
1753
+ line-height: 1.2;
1754
+ }
1755
+
1756
+ .reply-mode-toggle__input {
1757
+ position: absolute;
1758
+ opacity: 0;
1759
+ pointer-events: none;
1760
+ }
1761
+
1762
+ .reply-mode-toggle__track {
1763
+ width: 2.65rem;
1764
+ height: 1.6rem;
1765
+ border-radius: 999px;
1766
+ background: rgba(255, 255, 255, 0.1);
1767
+ border: 1px solid rgba(156, 181, 197, 0.16);
1768
+ padding: 0.12rem;
1769
+ display: flex;
1770
+ align-items: center;
1771
+ transition: background 160ms ease, border-color 160ms ease;
1772
+ }
1773
+
1774
+ .reply-mode-toggle__thumb {
1775
+ width: 1.08rem;
1776
+ height: 1.08rem;
1777
+ border-radius: 999px;
1778
+ background: rgba(236, 248, 255, 0.94);
1779
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.22);
1780
+ transform: translateX(0);
1781
+ transition: transform 160ms ease;
1782
+ }
1783
+
1784
+ .reply-mode-toggle__input:checked + .reply-mode-toggle__track {
1785
+ background: rgba(67, 160, 255, 0.28);
1786
+ border-color: rgba(121, 196, 255, 0.34);
1787
+ }
1788
+
1789
+ .reply-mode-toggle__input:checked + .reply-mode-toggle__track .reply-mode-toggle__thumb {
1790
+ transform: translateX(0.94rem);
1791
+ }
1792
+
1628
1793
  .reply-mode-switch {
1629
1794
  display: grid;
1630
1795
  grid-template-columns: auto auto minmax(0, 1fr);
@@ -2188,6 +2353,53 @@ button:disabled {
2188
2353
  backdrop-filter: blur(16px);
2189
2354
  }
2190
2355
 
2356
+ .modal-backdrop--image-viewer {
2357
+ z-index: 60;
2358
+ place-items: stretch center;
2359
+ padding: max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));
2360
+ }
2361
+
2362
+ .image-viewer {
2363
+ width: min(100%, 62rem);
2364
+ min-height: 0;
2365
+ display: grid;
2366
+ grid-template-rows: auto minmax(0, 1fr);
2367
+ border-radius: 24px;
2368
+ overflow: hidden;
2369
+ border: 1px solid rgba(156, 181, 197, 0.12);
2370
+ background: rgba(8, 14, 18, 0.96);
2371
+ box-shadow: 0 28px 72px rgba(0, 0, 0, 0.34);
2372
+ }
2373
+
2374
+ .image-viewer__chrome {
2375
+ display: flex;
2376
+ justify-content: flex-start;
2377
+ padding: 0.85rem;
2378
+ border-bottom: 1px solid rgba(156, 181, 197, 0.08);
2379
+ }
2380
+
2381
+ .image-viewer__close {
2382
+ min-height: 2.75rem;
2383
+ padding-inline: 1rem;
2384
+ }
2385
+
2386
+ .image-viewer__body {
2387
+ min-height: 0;
2388
+ display: flex;
2389
+ align-items: center;
2390
+ justify-content: center;
2391
+ padding: 1rem;
2392
+ }
2393
+
2394
+ .image-viewer__image {
2395
+ display: block;
2396
+ max-width: 100%;
2397
+ max-height: min(78vh, 100%);
2398
+ object-fit: contain;
2399
+ border-radius: 18px;
2400
+ background: rgba(255, 255, 255, 0.03);
2401
+ }
2402
+
2191
2403
  .modal-card {
2192
2404
  width: min(34rem, 100%);
2193
2405
  padding: 1.1rem;