@quanta-intellect/vessel-browser 0.1.73 → 0.1.74
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.
|
@@ -778,6 +778,39 @@ function Show(props) {
|
|
|
778
778
|
return props.fallback;
|
|
779
779
|
}, void 0, void 0);
|
|
780
780
|
}
|
|
781
|
+
function Switch(props) {
|
|
782
|
+
const chs = children(() => props.children);
|
|
783
|
+
const switchFunc = createMemo(() => {
|
|
784
|
+
const ch = chs();
|
|
785
|
+
const mps = Array.isArray(ch) ? ch : [ch];
|
|
786
|
+
let func = () => void 0;
|
|
787
|
+
for (let i = 0; i < mps.length; i++) {
|
|
788
|
+
const index = i;
|
|
789
|
+
const mp = mps[i];
|
|
790
|
+
const prevFunc = func;
|
|
791
|
+
const conditionValue = createMemo(() => prevFunc() ? void 0 : mp.when, void 0, void 0);
|
|
792
|
+
const condition = mp.keyed ? conditionValue : createMemo(conditionValue, void 0, {
|
|
793
|
+
equals: (a, b) => !a === !b
|
|
794
|
+
});
|
|
795
|
+
func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : void 0);
|
|
796
|
+
}
|
|
797
|
+
return func;
|
|
798
|
+
});
|
|
799
|
+
return createMemo(() => {
|
|
800
|
+
const sel = switchFunc()();
|
|
801
|
+
if (!sel) return props.fallback;
|
|
802
|
+
const [index, conditionValue, mp] = sel;
|
|
803
|
+
const child = mp.children;
|
|
804
|
+
const fn = typeof child === "function" && child.length > 0;
|
|
805
|
+
return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {
|
|
806
|
+
if (untrack(switchFunc)()?.[0] !== index) throw narrowedError("Match");
|
|
807
|
+
return conditionValue();
|
|
808
|
+
})) : child;
|
|
809
|
+
}, void 0, void 0);
|
|
810
|
+
}
|
|
811
|
+
function Match(props) {
|
|
812
|
+
return props;
|
|
813
|
+
}
|
|
781
814
|
const booleans = [
|
|
782
815
|
"allowfullscreen",
|
|
783
816
|
"async",
|
|
@@ -1433,7 +1466,7 @@ function Dynamic(props) {
|
|
|
1433
1466
|
const [, others] = splitProps(props, ["component"]);
|
|
1434
1467
|
return createDynamic(() => props.component, others);
|
|
1435
1468
|
}
|
|
1436
|
-
var _tmpl$$
|
|
1469
|
+
var _tmpl$$k = /* @__PURE__ */ template(`<div class=title-bar><div class=title-bar-drag></div><div class=mcp-status-area><button class=mcp-status-indicator><span class=mcp-dot></span><span class=mcp-label>MCP</span></button></div><div class=window-controls><button class=window-btn data-tooltip=Minimize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=5 width=8 height=1 fill=currentColor></rect></svg></button><button class=window-btn data-tooltip=Maximize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=1 width=8 height=8 fill=none stroke=currentColor stroke-width=1></rect></svg></button><button class="window-btn window-btn-close"data-tooltip=Close><svg width=10 height=10 viewBox="0 0 10 10"><line x1=1 y1=1 x2=9 y2=9 stroke=currentColor stroke-width=1.2></line><line x1=9 y1=1 x2=1 y2=9 stroke=currentColor stroke-width=1.2>`);
|
|
1437
1470
|
const TitleBar = () => {
|
|
1438
1471
|
const isPrivateWindow = new URLSearchParams(window.location.search).get("private") === "1";
|
|
1439
1472
|
const [mcpStatus, setMcpStatus] = createSignal("starting");
|
|
@@ -1458,15 +1491,15 @@ const TitleBar = () => {
|
|
|
1458
1491
|
};
|
|
1459
1492
|
onMount(() => {
|
|
1460
1493
|
void loadHealth();
|
|
1461
|
-
const
|
|
1462
|
-
onCleanup(
|
|
1494
|
+
const unsubscribe2 = window.vessel.settings.onHealthUpdate(applyHealth);
|
|
1495
|
+
onCleanup(unsubscribe2);
|
|
1463
1496
|
});
|
|
1464
1497
|
const handleMcpClick = () => {
|
|
1465
1498
|
if (isPrivateWindow) return;
|
|
1466
1499
|
window.vessel.ui.setSettingsVisibility(true);
|
|
1467
1500
|
};
|
|
1468
1501
|
return (() => {
|
|
1469
|
-
var _el$ = _tmpl$$
|
|
1502
|
+
var _el$ = _tmpl$$k(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling;
|
|
1470
1503
|
_el$4.$$click = handleMcpClick;
|
|
1471
1504
|
_el$6.$$click = () => window.vessel.window.minimize();
|
|
1472
1505
|
_el$7.$$click = () => window.vessel.window.maximize();
|
|
@@ -1507,7 +1540,7 @@ var LucideContext = createContext({
|
|
|
1507
1540
|
absoluteStrokeWidth: false,
|
|
1508
1541
|
class: ""
|
|
1509
1542
|
});
|
|
1510
|
-
var _tmpl$$
|
|
1543
|
+
var _tmpl$$j = /* @__PURE__ */ template(`<svg>`);
|
|
1511
1544
|
var hasA11yProp = (props) => {
|
|
1512
1545
|
for (const prop in props) {
|
|
1513
1546
|
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
@@ -1529,7 +1562,7 @@ var Icon = (props) => {
|
|
|
1529
1562
|
const [localProps, rest] = splitProps(props, ["color", "size", "strokeWidth", "children", "class", "name", "iconNode", "absoluteStrokeWidth"]);
|
|
1530
1563
|
const globalProps = useContext(LucideContext);
|
|
1531
1564
|
return (() => {
|
|
1532
|
-
var _el$ = _tmpl$$
|
|
1565
|
+
var _el$ = _tmpl$$j();
|
|
1533
1566
|
spread(_el$, mergeProps(defaultAttributes_default, {
|
|
1534
1567
|
get width() {
|
|
1535
1568
|
return localProps.size ?? globalProps.size ?? defaultAttributes_default.width;
|
|
@@ -1564,7 +1597,7 @@ var Icon = (props) => {
|
|
|
1564
1597
|
})();
|
|
1565
1598
|
};
|
|
1566
1599
|
var Icon_default = Icon;
|
|
1567
|
-
var iconNode$
|
|
1600
|
+
var iconNode$g = [["path", {
|
|
1568
1601
|
d: "M12 7v14",
|
|
1569
1602
|
key: "1akyts"
|
|
1570
1603
|
}], ["path", {
|
|
@@ -1572,11 +1605,20 @@ var iconNode$d = [["path", {
|
|
|
1572
1605
|
key: "ruj8y"
|
|
1573
1606
|
}]];
|
|
1574
1607
|
var BookOpen = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1575
|
-
iconNode: iconNode$
|
|
1608
|
+
iconNode: iconNode$g,
|
|
1576
1609
|
name: "book-open"
|
|
1577
1610
|
}));
|
|
1578
1611
|
var book_open_default = BookOpen;
|
|
1579
|
-
var iconNode$
|
|
1612
|
+
var iconNode$f = [["path", {
|
|
1613
|
+
d: "M20 6 9 17l-5-5",
|
|
1614
|
+
key: "1gmf2c"
|
|
1615
|
+
}]];
|
|
1616
|
+
var Check = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1617
|
+
iconNode: iconNode$f,
|
|
1618
|
+
name: "check"
|
|
1619
|
+
}));
|
|
1620
|
+
var check_default = Check;
|
|
1621
|
+
var iconNode$e = [["rect", {
|
|
1580
1622
|
width: "8",
|
|
1581
1623
|
height: "4",
|
|
1582
1624
|
x: "8",
|
|
@@ -1601,11 +1643,11 @@ var iconNode$c = [["rect", {
|
|
|
1601
1643
|
key: "18s6g9"
|
|
1602
1644
|
}]];
|
|
1603
1645
|
var ClipboardList = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1604
|
-
iconNode: iconNode$
|
|
1646
|
+
iconNode: iconNode$e,
|
|
1605
1647
|
name: "clipboard-list"
|
|
1606
1648
|
}));
|
|
1607
1649
|
var clipboard_list_default = ClipboardList;
|
|
1608
|
-
var iconNode$
|
|
1650
|
+
var iconNode$d = [["circle", {
|
|
1609
1651
|
cx: "12",
|
|
1610
1652
|
cy: "12",
|
|
1611
1653
|
r: "10",
|
|
@@ -1615,11 +1657,11 @@ var iconNode$b = [["circle", {
|
|
|
1615
1657
|
key: "mmk7yg"
|
|
1616
1658
|
}]];
|
|
1617
1659
|
var Clock = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1618
|
-
iconNode: iconNode$
|
|
1660
|
+
iconNode: iconNode$d,
|
|
1619
1661
|
name: "clock"
|
|
1620
1662
|
}));
|
|
1621
1663
|
var clock_default = Clock;
|
|
1622
|
-
var iconNode$
|
|
1664
|
+
var iconNode$c = [["path", {
|
|
1623
1665
|
d: "M12 15V3",
|
|
1624
1666
|
key: "m9g1x1"
|
|
1625
1667
|
}], ["path", {
|
|
@@ -1630,11 +1672,11 @@ var iconNode$a = [["path", {
|
|
|
1630
1672
|
key: "brsn70"
|
|
1631
1673
|
}]];
|
|
1632
1674
|
var Download = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1633
|
-
iconNode: iconNode$
|
|
1675
|
+
iconNode: iconNode$c,
|
|
1634
1676
|
name: "download"
|
|
1635
1677
|
}));
|
|
1636
1678
|
var download_default = Download;
|
|
1637
|
-
var iconNode$
|
|
1679
|
+
var iconNode$b = [["circle", {
|
|
1638
1680
|
cx: "12",
|
|
1639
1681
|
cy: "12",
|
|
1640
1682
|
r: "10",
|
|
@@ -1647,11 +1689,11 @@ var iconNode$9 = [["circle", {
|
|
|
1647
1689
|
key: "9i4pu4"
|
|
1648
1690
|
}]];
|
|
1649
1691
|
var Globe = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1650
|
-
iconNode: iconNode$
|
|
1692
|
+
iconNode: iconNode$b,
|
|
1651
1693
|
name: "globe"
|
|
1652
1694
|
}));
|
|
1653
1695
|
var globe_default = Globe;
|
|
1654
|
-
var iconNode$
|
|
1696
|
+
var iconNode$a = [["path", {
|
|
1655
1697
|
d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 .83.18 2 2 0 0 0 .83-.18l8.58-3.9a1 1 0 0 0 0-1.831z",
|
|
1656
1698
|
key: "zzgyd3"
|
|
1657
1699
|
}], ["path", {
|
|
@@ -1668,11 +1710,11 @@ var iconNode$8 = [["path", {
|
|
|
1668
1710
|
key: "jksky3"
|
|
1669
1711
|
}]];
|
|
1670
1712
|
var LayersPlus = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1671
|
-
iconNode: iconNode$
|
|
1713
|
+
iconNode: iconNode$a,
|
|
1672
1714
|
name: "layers-plus"
|
|
1673
1715
|
}));
|
|
1674
1716
|
var layers_plus_default = LayersPlus;
|
|
1675
|
-
var iconNode$
|
|
1717
|
+
var iconNode$9 = [["rect", {
|
|
1676
1718
|
width: "18",
|
|
1677
1719
|
height: "18",
|
|
1678
1720
|
x: "3",
|
|
@@ -1684,11 +1726,11 @@ var iconNode$7 = [["rect", {
|
|
|
1684
1726
|
key: "1pudct"
|
|
1685
1727
|
}]];
|
|
1686
1728
|
var PanelTop = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1687
|
-
iconNode: iconNode$
|
|
1729
|
+
iconNode: iconNode$9,
|
|
1688
1730
|
name: "panel-top"
|
|
1689
1731
|
}));
|
|
1690
1732
|
var panel_top_default = PanelTop;
|
|
1691
|
-
var iconNode$
|
|
1733
|
+
var iconNode$8 = [["path", {
|
|
1692
1734
|
d: "M5 12h14",
|
|
1693
1735
|
key: "1ays0h"
|
|
1694
1736
|
}], ["path", {
|
|
@@ -1696,11 +1738,11 @@ var iconNode$6 = [["path", {
|
|
|
1696
1738
|
key: "s699le"
|
|
1697
1739
|
}]];
|
|
1698
1740
|
var Plus = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1699
|
-
iconNode: iconNode$
|
|
1741
|
+
iconNode: iconNode$8,
|
|
1700
1742
|
name: "plus"
|
|
1701
1743
|
}));
|
|
1702
1744
|
var plus_default = Plus;
|
|
1703
|
-
var iconNode$
|
|
1745
|
+
var iconNode$7 = [["path", {
|
|
1704
1746
|
d: "m21 21-4.34-4.34",
|
|
1705
1747
|
key: "14j7rj"
|
|
1706
1748
|
}], ["circle", {
|
|
@@ -1710,20 +1752,20 @@ var iconNode$5 = [["path", {
|
|
|
1710
1752
|
key: "4ej97u"
|
|
1711
1753
|
}]];
|
|
1712
1754
|
var Search = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1713
|
-
iconNode: iconNode$
|
|
1755
|
+
iconNode: iconNode$7,
|
|
1714
1756
|
name: "search"
|
|
1715
1757
|
}));
|
|
1716
1758
|
var search_default = Search;
|
|
1717
|
-
var iconNode$
|
|
1759
|
+
var iconNode$6 = [["path", {
|
|
1718
1760
|
d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
|
|
1719
1761
|
key: "r04s7s"
|
|
1720
1762
|
}]];
|
|
1721
1763
|
var Star = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1722
|
-
iconNode: iconNode$
|
|
1764
|
+
iconNode: iconNode$6,
|
|
1723
1765
|
name: "star"
|
|
1724
1766
|
}));
|
|
1725
1767
|
var star_default = Star;
|
|
1726
|
-
var iconNode$
|
|
1768
|
+
var iconNode$5 = [["path", {
|
|
1727
1769
|
d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
|
|
1728
1770
|
key: "vktsd0"
|
|
1729
1771
|
}], ["circle", {
|
|
@@ -1734,11 +1776,32 @@ var iconNode$3 = [["path", {
|
|
|
1734
1776
|
key: "kqv944"
|
|
1735
1777
|
}]];
|
|
1736
1778
|
var Tag = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1737
|
-
iconNode: iconNode$
|
|
1779
|
+
iconNode: iconNode$5,
|
|
1738
1780
|
name: "tag"
|
|
1739
1781
|
}));
|
|
1740
1782
|
var tag_default = Tag;
|
|
1741
|
-
var iconNode$
|
|
1783
|
+
var iconNode$4 = [["path", {
|
|
1784
|
+
d: "M10 11v6",
|
|
1785
|
+
key: "nco0om"
|
|
1786
|
+
}], ["path", {
|
|
1787
|
+
d: "M14 11v6",
|
|
1788
|
+
key: "outv1u"
|
|
1789
|
+
}], ["path", {
|
|
1790
|
+
d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",
|
|
1791
|
+
key: "miytrc"
|
|
1792
|
+
}], ["path", {
|
|
1793
|
+
d: "M3 6h18",
|
|
1794
|
+
key: "d0wm0j"
|
|
1795
|
+
}], ["path", {
|
|
1796
|
+
d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",
|
|
1797
|
+
key: "e791ji"
|
|
1798
|
+
}]];
|
|
1799
|
+
var Trash2 = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1800
|
+
iconNode: iconNode$4,
|
|
1801
|
+
name: "trash-2"
|
|
1802
|
+
}));
|
|
1803
|
+
var trash_2_default = Trash2;
|
|
1804
|
+
var iconNode$3 = [["path", {
|
|
1742
1805
|
d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
|
|
1743
1806
|
key: "uqj9uw"
|
|
1744
1807
|
}], ["path", {
|
|
@@ -1749,11 +1812,11 @@ var iconNode$2 = [["path", {
|
|
|
1749
1812
|
key: "ijwkga"
|
|
1750
1813
|
}]];
|
|
1751
1814
|
var Volume2 = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1752
|
-
iconNode: iconNode$
|
|
1815
|
+
iconNode: iconNode$3,
|
|
1753
1816
|
name: "volume-2"
|
|
1754
1817
|
}));
|
|
1755
1818
|
var volume_2_default = Volume2;
|
|
1756
|
-
var iconNode$
|
|
1819
|
+
var iconNode$2 = [["path", {
|
|
1757
1820
|
d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
|
|
1758
1821
|
key: "uqj9uw"
|
|
1759
1822
|
}], ["line", {
|
|
@@ -1770,10 +1833,22 @@ var iconNode$1 = [["path", {
|
|
|
1770
1833
|
key: "5ykzw1"
|
|
1771
1834
|
}]];
|
|
1772
1835
|
var VolumeX = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1773
|
-
iconNode: iconNode$
|
|
1836
|
+
iconNode: iconNode$2,
|
|
1774
1837
|
name: "volume-x"
|
|
1775
1838
|
}));
|
|
1776
1839
|
var volume_x_default = VolumeX;
|
|
1840
|
+
var iconNode$1 = [["path", {
|
|
1841
|
+
d: "M18 6 6 18",
|
|
1842
|
+
key: "1bl5f8"
|
|
1843
|
+
}], ["path", {
|
|
1844
|
+
d: "m6 6 12 12",
|
|
1845
|
+
key: "d8bk6v"
|
|
1846
|
+
}]];
|
|
1847
|
+
var X = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1848
|
+
iconNode: iconNode$1,
|
|
1849
|
+
name: "x"
|
|
1850
|
+
}));
|
|
1851
|
+
var x_default = X;
|
|
1777
1852
|
var iconNode = [["path", {
|
|
1778
1853
|
d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
|
|
1779
1854
|
key: "1xq2db"
|
|
@@ -1819,6 +1894,44 @@ function createLogger(scope) {
|
|
|
1819
1894
|
error: (...args) => writeLog("error", scope, args)
|
|
1820
1895
|
};
|
|
1821
1896
|
}
|
|
1897
|
+
const [securityStates, setSecurityStates] = createSignal({});
|
|
1898
|
+
let unsubscribe = null;
|
|
1899
|
+
function initSecurityStore() {
|
|
1900
|
+
if (unsubscribe) return;
|
|
1901
|
+
unsubscribe = window.vessel.security.onStateUpdate((tabId, state) => {
|
|
1902
|
+
setSecurityStates((prev) => ({ ...prev, [tabId]: state }));
|
|
1903
|
+
});
|
|
1904
|
+
}
|
|
1905
|
+
function pruneSecurityStates(activeTabIds) {
|
|
1906
|
+
setSecurityStates((prev) => {
|
|
1907
|
+
const keys = Object.keys(prev);
|
|
1908
|
+
if (keys.length === 0) return prev;
|
|
1909
|
+
let changed = false;
|
|
1910
|
+
const next = {};
|
|
1911
|
+
for (const key of keys) {
|
|
1912
|
+
if (activeTabIds.has(key)) {
|
|
1913
|
+
next[key] = prev[key];
|
|
1914
|
+
} else {
|
|
1915
|
+
changed = true;
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
return changed ? next : prev;
|
|
1919
|
+
});
|
|
1920
|
+
}
|
|
1921
|
+
function useSecurity() {
|
|
1922
|
+
return {
|
|
1923
|
+
securityStates,
|
|
1924
|
+
getSecurityState(tabId) {
|
|
1925
|
+
return securityStates()[tabId];
|
|
1926
|
+
},
|
|
1927
|
+
proceedAnyway(tabId) {
|
|
1928
|
+
void window.vessel.security.proceedAnyway(tabId);
|
|
1929
|
+
},
|
|
1930
|
+
goBackToSafety(tabId) {
|
|
1931
|
+
void window.vessel.security.goBackToSafety(tabId);
|
|
1932
|
+
}
|
|
1933
|
+
};
|
|
1934
|
+
}
|
|
1822
1935
|
const logger$5 = createLogger("TabsStore");
|
|
1823
1936
|
const [tabs, setTabs] = createSignal([]);
|
|
1824
1937
|
const [activeTabId, setActiveTabId] = createSignal("");
|
|
@@ -1835,6 +1948,7 @@ async function doInit() {
|
|
|
1835
1948
|
(newTabs, newActiveId) => {
|
|
1836
1949
|
setTabs(newTabs);
|
|
1837
1950
|
setActiveTabId(newActiveId);
|
|
1951
|
+
pruneSecurityStates(new Set(newTabs.map((t) => t.id)));
|
|
1838
1952
|
}
|
|
1839
1953
|
);
|
|
1840
1954
|
const initialState = await window.vessel.tabs.getState();
|
|
@@ -2085,7 +2199,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
|
|
|
2085
2199
|
}
|
|
2086
2200
|
return "idle";
|
|
2087
2201
|
}
|
|
2088
|
-
var _tmpl$$
|
|
2202
|
+
var _tmpl$$i = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$h = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$d = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$d = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$c = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$b = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$a = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$7 = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$5 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$5 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$5 = /* @__PURE__ */ template(`<span class=tab-loading>`);
|
|
2089
2203
|
const TAB_CLOSE_MS = 200;
|
|
2090
2204
|
function stringToHue(str) {
|
|
2091
2205
|
let hash = 0;
|
|
@@ -2112,14 +2226,14 @@ const TabFavicon = (props) => {
|
|
|
2112
2226
|
},
|
|
2113
2227
|
get fallback() {
|
|
2114
2228
|
return (() => {
|
|
2115
|
-
var _el$2 = _tmpl$2$
|
|
2229
|
+
var _el$2 = _tmpl$2$h();
|
|
2116
2230
|
insert(_el$2, letter);
|
|
2117
2231
|
createRenderEffect((_$p) => setStyleProperty(_el$2, "--favicon-hue", `${hue()}`));
|
|
2118
2232
|
return _el$2;
|
|
2119
2233
|
})();
|
|
2120
2234
|
},
|
|
2121
2235
|
get children() {
|
|
2122
|
-
var _el$ = _tmpl$$
|
|
2236
|
+
var _el$ = _tmpl$$i();
|
|
2123
2237
|
_el$.addEventListener("error", () => setFailed(true));
|
|
2124
2238
|
createRenderEffect(() => setAttribute(_el$, "src", props.favicon));
|
|
2125
2239
|
return _el$;
|
|
@@ -2179,7 +2293,7 @@ const TabBar = () => {
|
|
|
2179
2293
|
}, TAB_CLOSE_MS);
|
|
2180
2294
|
};
|
|
2181
2295
|
return (() => {
|
|
2182
|
-
var _el$3 = _tmpl$3$
|
|
2296
|
+
var _el$3 = _tmpl$3$d(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling;
|
|
2183
2297
|
insert(_el$4, createComponent(For, {
|
|
2184
2298
|
get each() {
|
|
2185
2299
|
return tabEntries();
|
|
@@ -2190,7 +2304,7 @@ const TabBar = () => {
|
|
|
2190
2304
|
},
|
|
2191
2305
|
get fallback() {
|
|
2192
2306
|
return memo(() => entry.type === "group")() && (() => {
|
|
2193
|
-
var _el$0 = _tmpl$4$
|
|
2307
|
+
var _el$0 = _tmpl$4$d(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling, _el$11 = _el$10.nextSibling;
|
|
2194
2308
|
_el$0.$$contextmenu = (e) => {
|
|
2195
2309
|
e.preventDefault();
|
|
2196
2310
|
window.vessel.tabs.showGroupContextMenu(entry.groupId);
|
|
@@ -2216,7 +2330,7 @@ const TabBar = () => {
|
|
|
2216
2330
|
return memo(() => entry.type === "tab")() && (() => {
|
|
2217
2331
|
const tab = entry.tab;
|
|
2218
2332
|
return (() => {
|
|
2219
|
-
var _el$12 = _tmpl$6$
|
|
2333
|
+
var _el$12 = _tmpl$6$b();
|
|
2220
2334
|
_el$12.$$contextmenu = (e) => {
|
|
2221
2335
|
e.preventDefault();
|
|
2222
2336
|
window.vessel.tabs.showContextMenu(tab.id);
|
|
@@ -2241,7 +2355,7 @@ const TabBar = () => {
|
|
|
2241
2355
|
return memo(() => !!tab.isPinned)() && (tab.isAudible || tab.isMuted);
|
|
2242
2356
|
},
|
|
2243
2357
|
get children() {
|
|
2244
|
-
var _el$13 = _tmpl$5$
|
|
2358
|
+
var _el$13 = _tmpl$5$c();
|
|
2245
2359
|
_el$13.$$click = (e) => {
|
|
2246
2360
|
e.stopPropagation();
|
|
2247
2361
|
void toggleMute(tab.id);
|
|
@@ -2268,7 +2382,7 @@ const TabBar = () => {
|
|
|
2268
2382
|
insert(_el$12, (() => {
|
|
2269
2383
|
var _c$ = memo(() => !!!tab.isPinned);
|
|
2270
2384
|
return () => _c$() && [memo(() => memo(() => !!modelActiveTabIds().has(tab.id))() && _tmpl$0$5()), (() => {
|
|
2271
|
-
var _el$14 = _tmpl$7$
|
|
2385
|
+
var _el$14 = _tmpl$7$a();
|
|
2272
2386
|
insert(_el$14, () => tab.title || "New Tab");
|
|
2273
2387
|
return _el$14;
|
|
2274
2388
|
})(), createComponent(Show, {
|
|
@@ -2276,7 +2390,7 @@ const TabBar = () => {
|
|
|
2276
2390
|
return tab.isAudible || tab.isMuted;
|
|
2277
2391
|
},
|
|
2278
2392
|
get children() {
|
|
2279
|
-
var _el$15 = _tmpl$8$
|
|
2393
|
+
var _el$15 = _tmpl$8$7();
|
|
2280
2394
|
_el$15.$$click = (e) => {
|
|
2281
2395
|
e.stopPropagation();
|
|
2282
2396
|
void toggleMute(tab.id);
|
|
@@ -2345,6 +2459,60 @@ const TabBar = () => {
|
|
|
2345
2459
|
})();
|
|
2346
2460
|
};
|
|
2347
2461
|
delegateEvents(["click", "contextmenu"]);
|
|
2462
|
+
var _tmpl$$h = /* @__PURE__ */ template(`<div class=security-popup><div class=security-popup-content><p class=security-popup-text></p><button class=security-popup-link>Learn More`), _tmpl$2$g = /* @__PURE__ */ template(`<div class=security-popup-actions><button class=security-popup-action-proceed>Proceed Anyway</button><button class=security-popup-action-back>Go Back to Safety`);
|
|
2463
|
+
const SecurityPopup = (props) => {
|
|
2464
|
+
const statusText = () => {
|
|
2465
|
+
switch (props.state.status) {
|
|
2466
|
+
case "secure":
|
|
2467
|
+
return "Connection is secure. This site uses HTTPS.";
|
|
2468
|
+
case "insecure":
|
|
2469
|
+
return "Connection is not secure. Information sent to this site could be read by others.";
|
|
2470
|
+
case "error":
|
|
2471
|
+
return `Certificate error: ${props.state.errorMessage || "Unknown error"}. Proceed with caution.`;
|
|
2472
|
+
default:
|
|
2473
|
+
return "No security information available.";
|
|
2474
|
+
}
|
|
2475
|
+
};
|
|
2476
|
+
const handleLearnMore = () => {
|
|
2477
|
+
window.vessel.security.showDetails(props.state);
|
|
2478
|
+
props.onClose();
|
|
2479
|
+
};
|
|
2480
|
+
const handleProceedAnyway = () => {
|
|
2481
|
+
window.vessel.security.proceedAnyway(props.tabId);
|
|
2482
|
+
props.onClose();
|
|
2483
|
+
};
|
|
2484
|
+
const handleGoBackToSafety = () => {
|
|
2485
|
+
window.vessel.security.goBackToSafety(props.tabId);
|
|
2486
|
+
props.onClose();
|
|
2487
|
+
};
|
|
2488
|
+
onMount(() => {
|
|
2489
|
+
const handleClickOutside = (e) => {
|
|
2490
|
+
const target = e.target;
|
|
2491
|
+
if (!target.closest(".security-indicator-wrapper")) {
|
|
2492
|
+
props.onClose();
|
|
2493
|
+
}
|
|
2494
|
+
};
|
|
2495
|
+
document.addEventListener("click", handleClickOutside, true);
|
|
2496
|
+
onCleanup(() => document.removeEventListener("click", handleClickOutside, true));
|
|
2497
|
+
});
|
|
2498
|
+
return (() => {
|
|
2499
|
+
var _el$ = _tmpl$$h(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
2500
|
+
_el$.$$click = (e) => e.stopPropagation();
|
|
2501
|
+
insert(_el$3, statusText);
|
|
2502
|
+
_el$4.$$click = handleLearnMore;
|
|
2503
|
+
insert(_el$2, (() => {
|
|
2504
|
+
var _c$ = memo(() => !!props.state.canProceed);
|
|
2505
|
+
return () => _c$() && (() => {
|
|
2506
|
+
var _el$5 = _tmpl$2$g(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
|
|
2507
|
+
_el$6.$$click = handleProceedAnyway;
|
|
2508
|
+
_el$7.$$click = handleGoBackToSafety;
|
|
2509
|
+
return _el$5;
|
|
2510
|
+
})();
|
|
2511
|
+
})(), null);
|
|
2512
|
+
return _el$;
|
|
2513
|
+
})();
|
|
2514
|
+
};
|
|
2515
|
+
delegateEvents(["click"]);
|
|
2348
2516
|
const DEFAULT_SIDEBAR_WIDTH = 400;
|
|
2349
2517
|
const MIN_SIDEBAR = 240;
|
|
2350
2518
|
const MAX_SIDEBAR = 800;
|
|
@@ -2615,8 +2783,8 @@ const SEARCH_ENGINE_PRESETS = {
|
|
|
2615
2783
|
ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
|
|
2616
2784
|
kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
|
|
2617
2785
|
};
|
|
2618
|
-
var _tmpl$$
|
|
2619
|
-
const AddressBar = () => {
|
|
2786
|
+
var _tmpl$$g = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$f = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$c = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$c = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$b = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$a = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$9 = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$6 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Changed recently`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>What changed since </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>×`), _tmpl$1$4 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$4 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$3 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$3 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$3 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$3 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$3 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$3 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$22$3 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$23$3 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$24$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><span class=page-diff-section></span><span class=page-diff-summary>`), _tmpl$27$3 = /* @__PURE__ */ template(`<li>`);
|
|
2787
|
+
const AddressBar = (props) => {
|
|
2620
2788
|
const {
|
|
2621
2789
|
activeTab,
|
|
2622
2790
|
activeTabId: activeTabId2,
|
|
@@ -2642,12 +2810,20 @@ const AddressBar = () => {
|
|
|
2642
2810
|
const {
|
|
2643
2811
|
bookmarksState: bookmarksState2
|
|
2644
2812
|
} = useBookmarks();
|
|
2813
|
+
const {
|
|
2814
|
+
getSecurityState
|
|
2815
|
+
} = useSecurity();
|
|
2645
2816
|
const [inputValue, setInputValue] = createSignal("");
|
|
2646
2817
|
const [showSuggestions, setShowSuggestions] = createSignal(false);
|
|
2647
2818
|
const [selectedIndex, setSelectedIndex] = createSignal(-1);
|
|
2648
2819
|
const [searchEngine, setSearchEngine] = createSignal("duckduckgo");
|
|
2820
|
+
const [showSecurityPopup, setShowSecurityPopup] = createSignal(false);
|
|
2649
2821
|
const now2 = useNow();
|
|
2650
2822
|
let inputRef;
|
|
2823
|
+
const securityState = createMemo(() => {
|
|
2824
|
+
const tabId = activeTabId2();
|
|
2825
|
+
return tabId ? getSecurityState(tabId) : void 0;
|
|
2826
|
+
});
|
|
2651
2827
|
const agentPresence = createMemo(() => getAgentPresence(runtimeState2(), now2()));
|
|
2652
2828
|
const agentStatusMessage = createMemo(() => getLatestAgentStatusMessage(runtimeState2(), now2()));
|
|
2653
2829
|
const pendingApprovalCount = createMemo(() => runtimeState2().supervisor.pendingApprovals.length);
|
|
@@ -2667,12 +2843,12 @@ const AddressBar = () => {
|
|
|
2667
2843
|
}
|
|
2668
2844
|
}).catch(() => {
|
|
2669
2845
|
});
|
|
2670
|
-
const
|
|
2846
|
+
const unsubscribe2 = window.vessel.settings.onUpdate((settings) => {
|
|
2671
2847
|
setSearchEngine(settings.defaultSearchEngine ?? "duckduckgo");
|
|
2672
2848
|
});
|
|
2673
2849
|
onCleanup(() => {
|
|
2674
2850
|
disposed = true;
|
|
2675
|
-
|
|
2851
|
+
unsubscribe2();
|
|
2676
2852
|
});
|
|
2677
2853
|
});
|
|
2678
2854
|
const showIncomingDiff = (diff) => {
|
|
@@ -2716,14 +2892,14 @@ const AddressBar = () => {
|
|
|
2716
2892
|
};
|
|
2717
2893
|
createEffect(() => {
|
|
2718
2894
|
if (isPrivateWindow) return;
|
|
2719
|
-
const
|
|
2895
|
+
const unsubscribe2 = window.vessel.pageDiff.onChanged((diff) => {
|
|
2720
2896
|
const tab = activeTab();
|
|
2721
2897
|
if (!tab) return;
|
|
2722
2898
|
if (!matchesPageSnapshotUrl(tab.url, diff.url)) return;
|
|
2723
2899
|
showIncomingDiff(diff);
|
|
2724
2900
|
});
|
|
2725
2901
|
onCleanup(() => {
|
|
2726
|
-
|
|
2902
|
+
unsubscribe2();
|
|
2727
2903
|
if (diffCollapseTimer) {
|
|
2728
2904
|
clearTimeout(diffCollapseTimer);
|
|
2729
2905
|
diffCollapseTimer = null;
|
|
@@ -2864,102 +3040,167 @@ const AddressBar = () => {
|
|
|
2864
3040
|
};
|
|
2865
3041
|
const formatSectionLabel = (section) => section === "title" ? "Title" : section === "headings" ? "Headings" : "Content";
|
|
2866
3042
|
return (() => {
|
|
2867
|
-
var _el$ = _tmpl$
|
|
3043
|
+
var _el$ = _tmpl$17$3(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$11 = _el$2.nextSibling, _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$34 = _el$11.nextSibling, _el$35 = _el$34.firstChild, _el$36 = _el$35.firstChild;
|
|
2868
3044
|
addEventListener(_el$3, "click", goBack, true);
|
|
2869
3045
|
addEventListener(_el$4, "click", goForward, true);
|
|
2870
3046
|
addEventListener(_el$5, "click", reload, true);
|
|
2871
3047
|
insert(_el$, createComponent(Show, {
|
|
2872
3048
|
when: isPrivateWindow,
|
|
2873
3049
|
get children() {
|
|
2874
|
-
return _tmpl$$
|
|
3050
|
+
return _tmpl$$g();
|
|
3051
|
+
}
|
|
3052
|
+
}), _el$11);
|
|
3053
|
+
insert(_el$, createComponent(Show, {
|
|
3054
|
+
get when() {
|
|
3055
|
+
return memo(() => !!securityState()?.status)() && securityState()?.status !== "none";
|
|
3056
|
+
},
|
|
3057
|
+
get children() {
|
|
3058
|
+
var _el$7 = _tmpl$4$c(), _el$8 = _el$7.firstChild;
|
|
3059
|
+
_el$8.$$click = () => setShowSecurityPopup((prev) => !prev);
|
|
3060
|
+
insert(_el$8, createComponent(Switch, {
|
|
3061
|
+
get fallback() {
|
|
3062
|
+
return (() => {
|
|
3063
|
+
var _el$47 = _tmpl$18$3();
|
|
3064
|
+
_el$47.firstChild;
|
|
3065
|
+
return _el$47;
|
|
3066
|
+
})();
|
|
3067
|
+
},
|
|
3068
|
+
get children() {
|
|
3069
|
+
return [createComponent(Match, {
|
|
3070
|
+
get when() {
|
|
3071
|
+
return securityState()?.status === "secure";
|
|
3072
|
+
},
|
|
3073
|
+
get children() {
|
|
3074
|
+
var _el$9 = _tmpl$2$f();
|
|
3075
|
+
_el$9.firstChild;
|
|
3076
|
+
return _el$9;
|
|
3077
|
+
}
|
|
3078
|
+
}), createComponent(Match, {
|
|
3079
|
+
get when() {
|
|
3080
|
+
return securityState()?.status === "insecure";
|
|
3081
|
+
},
|
|
3082
|
+
get children() {
|
|
3083
|
+
var _el$1 = _tmpl$3$c();
|
|
3084
|
+
_el$1.firstChild;
|
|
3085
|
+
return _el$1;
|
|
3086
|
+
}
|
|
3087
|
+
})];
|
|
3088
|
+
}
|
|
3089
|
+
}));
|
|
3090
|
+
insert(_el$7, createComponent(Show, {
|
|
3091
|
+
get when() {
|
|
3092
|
+
return showSecurityPopup();
|
|
3093
|
+
},
|
|
3094
|
+
get children() {
|
|
3095
|
+
return createComponent(SecurityPopup, {
|
|
3096
|
+
get state() {
|
|
3097
|
+
return securityState();
|
|
3098
|
+
},
|
|
3099
|
+
get tabId() {
|
|
3100
|
+
return activeTabId2();
|
|
3101
|
+
},
|
|
3102
|
+
onClose: () => setShowSecurityPopup(false)
|
|
3103
|
+
});
|
|
3104
|
+
}
|
|
3105
|
+
}), null);
|
|
3106
|
+
createRenderEffect((_p$) => {
|
|
3107
|
+
var _v$ = `security-indicator ${securityState()?.status}`, _v$2 = securityState()?.status === "secure" ? "Secure connection" : securityState()?.status === "insecure" ? "Connection not secure" : "Certificate error";
|
|
3108
|
+
_v$ !== _p$.e && className(_el$8, _p$.e = _v$);
|
|
3109
|
+
_v$2 !== _p$.t && setAttribute(_el$8, "title", _p$.t = _v$2);
|
|
3110
|
+
return _p$;
|
|
3111
|
+
}, {
|
|
3112
|
+
e: void 0,
|
|
3113
|
+
t: void 0
|
|
3114
|
+
});
|
|
3115
|
+
return _el$7;
|
|
2875
3116
|
}
|
|
2876
|
-
}), _el$
|
|
2877
|
-
_el$
|
|
2878
|
-
_el$
|
|
3117
|
+
}), _el$11);
|
|
3118
|
+
_el$12.addEventListener("submit", handleSubmit);
|
|
3119
|
+
_el$13.addEventListener("blur", () => {
|
|
2879
3120
|
setTimeout(() => {
|
|
2880
3121
|
setShowSuggestions(false);
|
|
2881
3122
|
setSelectedIndex(-1);
|
|
2882
3123
|
}, 150);
|
|
2883
3124
|
});
|
|
2884
|
-
_el$
|
|
2885
|
-
_el$
|
|
3125
|
+
_el$13.$$keydown = handleInputKeyDown;
|
|
3126
|
+
_el$13.addEventListener("focus", (e) => {
|
|
2886
3127
|
e.currentTarget.select();
|
|
2887
3128
|
const query = inputValue().trim();
|
|
2888
3129
|
if (query.length >= 2) setShowSuggestions(true);
|
|
2889
3130
|
});
|
|
2890
|
-
_el$
|
|
3131
|
+
_el$13.$$input = (e) => {
|
|
2891
3132
|
setInputValue(e.currentTarget.value);
|
|
2892
3133
|
setShowSuggestions(true);
|
|
2893
3134
|
setSelectedIndex(-1);
|
|
2894
3135
|
};
|
|
2895
3136
|
var _ref$ = inputRef;
|
|
2896
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
2897
|
-
setAttribute(_el$
|
|
2898
|
-
insert(_el$
|
|
3137
|
+
typeof _ref$ === "function" ? use(_ref$, _el$13) : inputRef = _el$13;
|
|
3138
|
+
setAttribute(_el$13, "spellcheck", false);
|
|
3139
|
+
insert(_el$11, createComponent(Show, {
|
|
2899
3140
|
get when() {
|
|
2900
3141
|
return memo(() => !!showSuggestions())() && suggestions().length > 0;
|
|
2901
3142
|
},
|
|
2902
3143
|
get children() {
|
|
2903
|
-
var _el$
|
|
2904
|
-
insert(_el$
|
|
3144
|
+
var _el$14 = _tmpl$5$b();
|
|
3145
|
+
insert(_el$14, createComponent(For, {
|
|
2905
3146
|
get each() {
|
|
2906
3147
|
return suggestions();
|
|
2907
3148
|
},
|
|
2908
3149
|
children: (item, i) => (() => {
|
|
2909
|
-
var _el$
|
|
2910
|
-
_el$
|
|
2911
|
-
_el$
|
|
3150
|
+
var _el$49 = _tmpl$19$3(), _el$50 = _el$49.firstChild, _el$51 = _el$50.nextSibling, _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling;
|
|
3151
|
+
_el$49.addEventListener("mouseenter", () => setSelectedIndex(i()));
|
|
3152
|
+
_el$49.$$mousedown = (e) => {
|
|
2912
3153
|
e.preventDefault();
|
|
2913
3154
|
selectSuggestion(item.url);
|
|
2914
3155
|
};
|
|
2915
|
-
insert(_el$
|
|
3156
|
+
insert(_el$50, (() => {
|
|
2916
3157
|
var _c$ = memo(() => item.source === "bookmark");
|
|
2917
3158
|
return () => _c$() ? "★" : item.source === "search" ? "⌕" : "◌";
|
|
2918
3159
|
})());
|
|
2919
|
-
insert(_el$
|
|
2920
|
-
insert(_el$
|
|
3160
|
+
insert(_el$52, () => item.title || item.url);
|
|
3161
|
+
insert(_el$53, () => item.subtitle || item.url);
|
|
2921
3162
|
createRenderEffect((_p$) => {
|
|
2922
|
-
var _v$
|
|
2923
|
-
_v$
|
|
2924
|
-
_v$
|
|
2925
|
-
_v$
|
|
3163
|
+
var _v$12 = `address-autocomplete-${i()}`, _v$13 = `autocomplete-item ${selectedIndex() === i() ? "selected" : ""}`, _v$14 = selectedIndex() === i();
|
|
3164
|
+
_v$12 !== _p$.e && setAttribute(_el$49, "id", _p$.e = _v$12);
|
|
3165
|
+
_v$13 !== _p$.t && className(_el$49, _p$.t = _v$13);
|
|
3166
|
+
_v$14 !== _p$.a && setAttribute(_el$49, "aria-selected", _p$.a = _v$14);
|
|
2926
3167
|
return _p$;
|
|
2927
3168
|
}, {
|
|
2928
3169
|
e: void 0,
|
|
2929
3170
|
t: void 0,
|
|
2930
3171
|
a: void 0
|
|
2931
3172
|
});
|
|
2932
|
-
return _el$
|
|
3173
|
+
return _el$49;
|
|
2933
3174
|
})()
|
|
2934
3175
|
}));
|
|
2935
|
-
return _el$
|
|
3176
|
+
return _el$14;
|
|
2936
3177
|
}
|
|
2937
3178
|
}), null);
|
|
2938
|
-
insert(_el$
|
|
3179
|
+
insert(_el$11, createComponent(Show, {
|
|
2939
3180
|
when: !isPrivateWindow,
|
|
2940
3181
|
get children() {
|
|
2941
|
-
var _el$
|
|
2942
|
-
insert(_el$
|
|
3182
|
+
var _el$15 = _tmpl$6$a(), _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
|
|
3183
|
+
insert(_el$17, () => agentStatusMessage() || (agentPresence() === "active" ? "Agent Active" : agentPresence() === "recent" ? "Agent Connected" : "Agent Offline"));
|
|
2943
3184
|
createRenderEffect((_p$) => {
|
|
2944
|
-
var _v$ = `agent-status-badge ${agentPresence()}`, _v$
|
|
2945
|
-
_v$ !== _p$.e && className(_el$
|
|
2946
|
-
_v$
|
|
3185
|
+
var _v$3 = `agent-status-badge ${agentPresence()}`, _v$4 = agentStatusMessage() || (agentPresence() === "active" ? "Agent is actively using the browser" : agentPresence() === "recent" ? "Agent is connected" : "No agent connection detected");
|
|
3186
|
+
_v$3 !== _p$.e && className(_el$15, _p$.e = _v$3);
|
|
3187
|
+
_v$4 !== _p$.t && setAttribute(_el$15, "title", _p$.t = _v$4);
|
|
2947
3188
|
return _p$;
|
|
2948
3189
|
}, {
|
|
2949
3190
|
e: void 0,
|
|
2950
3191
|
t: void 0
|
|
2951
3192
|
});
|
|
2952
|
-
return _el$
|
|
3193
|
+
return _el$15;
|
|
2953
3194
|
}
|
|
2954
3195
|
}), null);
|
|
2955
|
-
insert(_el$
|
|
3196
|
+
insert(_el$11, createComponent(Show, {
|
|
2956
3197
|
get when() {
|
|
2957
3198
|
return pageDiff();
|
|
2958
3199
|
},
|
|
2959
3200
|
get children() {
|
|
2960
|
-
var _el$
|
|
2961
|
-
_el$
|
|
2962
|
-
return _el$
|
|
3201
|
+
var _el$18 = _tmpl$7$9();
|
|
3202
|
+
_el$18.$$click = () => void openDiffTimeline();
|
|
3203
|
+
return _el$18;
|
|
2963
3204
|
}
|
|
2964
3205
|
}), null);
|
|
2965
3206
|
insert(_el$, createComponent(Show, {
|
|
@@ -2967,212 +3208,221 @@ const AddressBar = () => {
|
|
|
2967
3208
|
return memo(() => !!pageDiff())() && diffExpanded();
|
|
2968
3209
|
},
|
|
2969
3210
|
get children() {
|
|
2970
|
-
var _el$
|
|
2971
|
-
_el$
|
|
2972
|
-
var _el$
|
|
2973
|
-
insert(_el$
|
|
2974
|
-
insert(_el$
|
|
3211
|
+
var _el$19 = _tmpl$0$4(), _el$20 = _el$19.firstChild, _el$21 = _el$20.firstChild, _el$22 = _el$21.firstChild;
|
|
3212
|
+
_el$22.firstChild;
|
|
3213
|
+
var _el$29 = _el$21.nextSibling, _el$30 = _el$29.firstChild, _el$31 = _el$30.nextSibling;
|
|
3214
|
+
insert(_el$22, () => formatRelativeTime(pageDiff().oldSnapshot.capturedAt), null);
|
|
3215
|
+
insert(_el$21, createComponent(Show, {
|
|
2975
3216
|
get when() {
|
|
2976
3217
|
return memo(() => !!((pageDiff().burstCount || 0) > 1 && pageDiff().firstDetectedAt))() && pageDiff().lastDetectedAt;
|
|
2977
3218
|
},
|
|
2978
3219
|
get children() {
|
|
2979
|
-
var _el$
|
|
2980
|
-
_el$
|
|
2981
|
-
insert(_el$
|
|
2982
|
-
insert(_el$
|
|
2983
|
-
return _el$
|
|
3220
|
+
var _el$24 = _tmpl$8$6(), _el$25 = _el$24.firstChild, _el$28 = _el$25.nextSibling;
|
|
3221
|
+
_el$28.nextSibling;
|
|
3222
|
+
insert(_el$24, () => pageDiff().burstCount, _el$28);
|
|
3223
|
+
insert(_el$24, () => formatElapsed(pageDiff().firstDetectedAt, pageDiff().lastDetectedAt), null);
|
|
3224
|
+
return _el$24;
|
|
2984
3225
|
}
|
|
2985
3226
|
}), null);
|
|
2986
|
-
_el$
|
|
2987
|
-
_el$
|
|
2988
|
-
insert(_el$
|
|
3227
|
+
_el$30.$$click = () => void openDiffTimeline();
|
|
3228
|
+
_el$31.$$click = () => setDiffExpanded(false);
|
|
3229
|
+
insert(_el$19, createComponent(Show, {
|
|
2989
3230
|
get when() {
|
|
2990
3231
|
return memo(() => !!pageDiff().recentBursts?.length)() && (pageDiff().recentBursts?.length || 0) > 1;
|
|
2991
3232
|
},
|
|
2992
3233
|
get children() {
|
|
2993
|
-
var _el$
|
|
2994
|
-
_el$
|
|
2995
|
-
insert(_el$
|
|
3234
|
+
var _el$32 = _tmpl$9$4();
|
|
3235
|
+
_el$32.firstChild;
|
|
3236
|
+
insert(_el$32, createComponent(For, {
|
|
2996
3237
|
get each() {
|
|
2997
3238
|
return pageDiff().recentBursts;
|
|
2998
3239
|
},
|
|
2999
3240
|
children: (burst) => (() => {
|
|
3000
|
-
var _el$
|
|
3001
|
-
insert(_el$
|
|
3002
|
-
insert(_el$
|
|
3003
|
-
return _el$
|
|
3241
|
+
var _el$54 = _tmpl$20$3(), _el$55 = _el$54.firstChild, _el$56 = _el$55.nextSibling;
|
|
3242
|
+
insert(_el$55, () => formatRelativeTime(burst.detectedAt));
|
|
3243
|
+
insert(_el$56, () => burst.summary);
|
|
3244
|
+
return _el$54;
|
|
3004
3245
|
})()
|
|
3005
3246
|
}), null);
|
|
3006
|
-
return _el$
|
|
3247
|
+
return _el$32;
|
|
3007
3248
|
}
|
|
3008
3249
|
}), null);
|
|
3009
|
-
insert(_el$
|
|
3250
|
+
insert(_el$19, createComponent(For, {
|
|
3010
3251
|
get each() {
|
|
3011
3252
|
return pageDiff().changes;
|
|
3012
3253
|
},
|
|
3013
3254
|
children: (change) => (() => {
|
|
3014
|
-
var _el$
|
|
3015
|
-
insert(_el$
|
|
3016
|
-
insert(_el$
|
|
3017
|
-
insert(_el$
|
|
3255
|
+
var _el$57 = _tmpl$26$3(), _el$58 = _el$57.firstChild, _el$59 = _el$58.firstChild, _el$60 = _el$59.nextSibling;
|
|
3256
|
+
insert(_el$59, () => formatSectionLabel(change.section));
|
|
3257
|
+
insert(_el$60, () => change.summary);
|
|
3258
|
+
insert(_el$57, createComponent(Show, {
|
|
3018
3259
|
get when() {
|
|
3019
3260
|
return change.before || change.after;
|
|
3020
3261
|
},
|
|
3021
3262
|
get children() {
|
|
3022
|
-
var _el$
|
|
3023
|
-
insert(_el$
|
|
3263
|
+
var _el$61 = _tmpl$23$3();
|
|
3264
|
+
insert(_el$61, createComponent(Show, {
|
|
3024
3265
|
get when() {
|
|
3025
3266
|
return change.before;
|
|
3026
3267
|
},
|
|
3027
3268
|
get children() {
|
|
3028
|
-
var _el$
|
|
3029
|
-
insert(_el$
|
|
3030
|
-
return _el$
|
|
3269
|
+
var _el$62 = _tmpl$21$3(), _el$63 = _el$62.firstChild, _el$64 = _el$63.nextSibling;
|
|
3270
|
+
insert(_el$64, () => change.before);
|
|
3271
|
+
return _el$62;
|
|
3031
3272
|
}
|
|
3032
3273
|
}), null);
|
|
3033
|
-
insert(_el$
|
|
3274
|
+
insert(_el$61, createComponent(Show, {
|
|
3034
3275
|
get when() {
|
|
3035
3276
|
return change.after;
|
|
3036
3277
|
},
|
|
3037
3278
|
get children() {
|
|
3038
|
-
var _el$
|
|
3039
|
-
insert(_el$
|
|
3040
|
-
return _el$
|
|
3279
|
+
var _el$65 = _tmpl$22$3(), _el$66 = _el$65.firstChild, _el$67 = _el$66.nextSibling;
|
|
3280
|
+
insert(_el$67, () => change.after);
|
|
3281
|
+
return _el$65;
|
|
3041
3282
|
}
|
|
3042
3283
|
}), null);
|
|
3043
|
-
return _el$
|
|
3284
|
+
return _el$61;
|
|
3044
3285
|
}
|
|
3045
3286
|
}), null);
|
|
3046
|
-
insert(_el$
|
|
3287
|
+
insert(_el$57, createComponent(Show, {
|
|
3047
3288
|
get when() {
|
|
3048
3289
|
return change.addedItems?.length;
|
|
3049
3290
|
},
|
|
3050
3291
|
get children() {
|
|
3051
|
-
var _el$
|
|
3052
|
-
insert(_el$
|
|
3292
|
+
var _el$68 = _tmpl$24$3(), _el$69 = _el$68.firstChild, _el$70 = _el$69.nextSibling;
|
|
3293
|
+
insert(_el$70, createComponent(For, {
|
|
3053
3294
|
get each() {
|
|
3054
3295
|
return change.addedItems;
|
|
3055
3296
|
},
|
|
3056
3297
|
children: (item) => (() => {
|
|
3057
|
-
var _el$
|
|
3058
|
-
insert(_el$
|
|
3059
|
-
return _el$
|
|
3298
|
+
var _el$74 = _tmpl$27$3();
|
|
3299
|
+
insert(_el$74, item);
|
|
3300
|
+
return _el$74;
|
|
3060
3301
|
})()
|
|
3061
3302
|
}));
|
|
3062
|
-
return _el$
|
|
3303
|
+
return _el$68;
|
|
3063
3304
|
}
|
|
3064
3305
|
}), null);
|
|
3065
|
-
insert(_el$
|
|
3306
|
+
insert(_el$57, createComponent(Show, {
|
|
3066
3307
|
get when() {
|
|
3067
3308
|
return change.removedItems?.length;
|
|
3068
3309
|
},
|
|
3069
3310
|
get children() {
|
|
3070
|
-
var _el$
|
|
3071
|
-
insert(_el$
|
|
3311
|
+
var _el$71 = _tmpl$25$3(), _el$72 = _el$71.firstChild, _el$73 = _el$72.nextSibling;
|
|
3312
|
+
insert(_el$73, createComponent(For, {
|
|
3072
3313
|
get each() {
|
|
3073
3314
|
return change.removedItems;
|
|
3074
3315
|
},
|
|
3075
3316
|
children: (item) => (() => {
|
|
3076
|
-
var _el$
|
|
3077
|
-
insert(_el$
|
|
3078
|
-
return _el$
|
|
3317
|
+
var _el$75 = _tmpl$27$3();
|
|
3318
|
+
insert(_el$75, item);
|
|
3319
|
+
return _el$75;
|
|
3079
3320
|
})()
|
|
3080
3321
|
}));
|
|
3081
|
-
return _el$
|
|
3322
|
+
return _el$71;
|
|
3082
3323
|
}
|
|
3083
3324
|
}), null);
|
|
3084
|
-
createRenderEffect(() => className(_el$
|
|
3085
|
-
return _el$
|
|
3325
|
+
createRenderEffect(() => className(_el$57, `page-diff-item page-diff-${change.kind}`));
|
|
3326
|
+
return _el$57;
|
|
3086
3327
|
})()
|
|
3087
3328
|
}), null);
|
|
3088
|
-
return _el$
|
|
3329
|
+
return _el$19;
|
|
3089
3330
|
}
|
|
3090
|
-
}), _el$
|
|
3091
|
-
_el$
|
|
3331
|
+
}), _el$34);
|
|
3332
|
+
_el$35.$$click = async () => {
|
|
3092
3333
|
const id = activeTabId2();
|
|
3093
3334
|
if (!id) return;
|
|
3094
3335
|
await toggleAdBlock(id);
|
|
3095
3336
|
};
|
|
3096
|
-
insert(_el$
|
|
3337
|
+
insert(_el$36, createComponent(Show, {
|
|
3097
3338
|
get when() {
|
|
3098
3339
|
return activeTab()?.adBlockingEnabled;
|
|
3099
3340
|
},
|
|
3100
3341
|
get children() {
|
|
3101
|
-
return _tmpl$
|
|
3342
|
+
return _tmpl$1$4();
|
|
3102
3343
|
}
|
|
3103
3344
|
}), null);
|
|
3104
|
-
insert(_el$
|
|
3345
|
+
insert(_el$36, createComponent(Show, {
|
|
3105
3346
|
get when() {
|
|
3106
3347
|
return !activeTab()?.adBlockingEnabled;
|
|
3107
3348
|
},
|
|
3108
3349
|
get children() {
|
|
3109
|
-
return [_tmpl$
|
|
3350
|
+
return [_tmpl$1$4(), _tmpl$10$4()];
|
|
3110
3351
|
}
|
|
3111
3352
|
}), null);
|
|
3112
|
-
insert(_el$
|
|
3353
|
+
insert(_el$34, createComponent(Show, {
|
|
3113
3354
|
when: !isPrivateWindow,
|
|
3114
3355
|
get children() {
|
|
3115
|
-
var _el$
|
|
3116
|
-
_el$
|
|
3117
|
-
createRenderEffect(() => _el$
|
|
3118
|
-
return _el$
|
|
3356
|
+
var _el$40 = _tmpl$11$4();
|
|
3357
|
+
_el$40.$$click = () => window.vessel.content.toggleReader();
|
|
3358
|
+
createRenderEffect(() => _el$40.classList.toggle("active", !!activeTab()?.isReaderMode));
|
|
3359
|
+
return _el$40;
|
|
3119
3360
|
}
|
|
3120
3361
|
}), null);
|
|
3121
|
-
insert(_el$
|
|
3362
|
+
insert(_el$34, createComponent(Show, {
|
|
3122
3363
|
when: !isPrivateWindow,
|
|
3123
3364
|
get children() {
|
|
3124
|
-
var _el$
|
|
3125
|
-
addEventListener(_el$
|
|
3126
|
-
createRenderEffect(() => _el$
|
|
3127
|
-
return _el$
|
|
3365
|
+
var _el$41 = _tmpl$12$4();
|
|
3366
|
+
addEventListener(_el$41, "click", toggleDevTools, true);
|
|
3367
|
+
createRenderEffect(() => _el$41.classList.toggle("active", !!devtoolsPanelOpen2()));
|
|
3368
|
+
return _el$41;
|
|
3128
3369
|
}
|
|
3129
3370
|
}), null);
|
|
3130
|
-
insert(_el$
|
|
3371
|
+
insert(_el$34, createComponent(Show, {
|
|
3131
3372
|
when: !isPrivateWindow,
|
|
3132
3373
|
get children() {
|
|
3133
|
-
var _el$
|
|
3134
|
-
_el$
|
|
3135
|
-
addEventListener(_el$
|
|
3136
|
-
insert(_el$
|
|
3374
|
+
var _el$42 = _tmpl$14$3();
|
|
3375
|
+
_el$42.firstChild;
|
|
3376
|
+
addEventListener(_el$42, "click", toggleSidebar, true);
|
|
3377
|
+
insert(_el$42, createComponent(Show, {
|
|
3137
3378
|
get when() {
|
|
3138
3379
|
return pendingApprovalCount() > 0;
|
|
3139
3380
|
},
|
|
3140
3381
|
get children() {
|
|
3141
|
-
var _el$
|
|
3142
|
-
insert(_el$
|
|
3143
|
-
createRenderEffect(() => setAttribute(_el$
|
|
3144
|
-
return _el$
|
|
3382
|
+
var _el$44 = _tmpl$13$3();
|
|
3383
|
+
insert(_el$44, pendingApprovalCount);
|
|
3384
|
+
createRenderEffect(() => setAttribute(_el$44, "aria-label", `${pendingApprovalCount()} pending`));
|
|
3385
|
+
return _el$44;
|
|
3145
3386
|
}
|
|
3146
3387
|
}), null);
|
|
3147
3388
|
createRenderEffect((_p$) => {
|
|
3148
|
-
var _v$
|
|
3149
|
-
_v$
|
|
3150
|
-
_v$
|
|
3389
|
+
var _v$5 = !!(pendingApprovalCount() > 0), _v$6 = pendingApprovalCount() > 0 ? `AI Sidebar — ${pendingApprovalCount()} pending approval${pendingApprovalCount() > 1 ? "s" : ""}` : "AI Sidebar (Ctrl+Shift+L)";
|
|
3390
|
+
_v$5 !== _p$.e && _el$42.classList.toggle("has-approvals", _p$.e = _v$5);
|
|
3391
|
+
_v$6 !== _p$.t && setAttribute(_el$42, "title", _p$.t = _v$6);
|
|
3151
3392
|
return _p$;
|
|
3152
3393
|
}, {
|
|
3153
3394
|
e: void 0,
|
|
3154
3395
|
t: void 0
|
|
3155
3396
|
});
|
|
3156
|
-
return _el$
|
|
3397
|
+
return _el$42;
|
|
3157
3398
|
}
|
|
3158
3399
|
}), null);
|
|
3159
|
-
insert(_el$
|
|
3400
|
+
insert(_el$34, createComponent(Show, {
|
|
3160
3401
|
when: !isPrivateWindow,
|
|
3161
3402
|
get children() {
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3403
|
+
return [(() => {
|
|
3404
|
+
var _el$45 = _tmpl$15$3();
|
|
3405
|
+
addEventListener(_el$45, "click", props.onClearData, true);
|
|
3406
|
+
insert(_el$45, createComponent(trash_2_default, {
|
|
3407
|
+
size: 14
|
|
3408
|
+
}));
|
|
3409
|
+
return _el$45;
|
|
3410
|
+
})(), (() => {
|
|
3411
|
+
var _el$46 = _tmpl$16$3();
|
|
3412
|
+
addEventListener(_el$46, "click", openSettings, true);
|
|
3413
|
+
return _el$46;
|
|
3414
|
+
})()];
|
|
3165
3415
|
}
|
|
3166
3416
|
}), null);
|
|
3167
3417
|
createRenderEffect((_p$) => {
|
|
3168
|
-
var _v$
|
|
3169
|
-
_v$
|
|
3170
|
-
_v$
|
|
3171
|
-
_v$
|
|
3172
|
-
_v$
|
|
3173
|
-
_v$
|
|
3174
|
-
_v$
|
|
3175
|
-
_v$
|
|
3418
|
+
var _v$7 = !activeTab()?.canGoBack, _v$8 = !activeTab()?.canGoForward, _v$9 = showSuggestions() && suggestions().length > 0, _v$0 = selectedIndex() >= 0 ? `address-autocomplete-${selectedIndex()}` : void 0, _v$1 = !!activeTab()?.adBlockingEnabled, _v$10 = !activeTab()?.adBlockingEnabled, _v$11 = activeTab()?.adBlockingEnabled ? "Ad Block: On (click to disable)" : "Ad Block: Off (click to enable)";
|
|
3419
|
+
_v$7 !== _p$.e && (_el$3.disabled = _p$.e = _v$7);
|
|
3420
|
+
_v$8 !== _p$.t && (_el$4.disabled = _p$.t = _v$8);
|
|
3421
|
+
_v$9 !== _p$.a && setAttribute(_el$13, "aria-expanded", _p$.a = _v$9);
|
|
3422
|
+
_v$0 !== _p$.o && setAttribute(_el$13, "aria-activedescendant", _p$.o = _v$0);
|
|
3423
|
+
_v$1 !== _p$.i && _el$35.classList.toggle("active", _p$.i = _v$1);
|
|
3424
|
+
_v$10 !== _p$.n && _el$35.classList.toggle("nav-btn-muted", _p$.n = _v$10);
|
|
3425
|
+
_v$11 !== _p$.s && setAttribute(_el$35, "title", _p$.s = _v$11);
|
|
3176
3426
|
return _p$;
|
|
3177
3427
|
}, {
|
|
3178
3428
|
e: void 0,
|
|
@@ -3183,12 +3433,12 @@ const AddressBar = () => {
|
|
|
3183
3433
|
n: void 0,
|
|
3184
3434
|
s: void 0
|
|
3185
3435
|
});
|
|
3186
|
-
createRenderEffect(() => _el$
|
|
3436
|
+
createRenderEffect(() => _el$13.value = inputValue());
|
|
3187
3437
|
return _el$;
|
|
3188
3438
|
})();
|
|
3189
3439
|
};
|
|
3190
3440
|
delegateEvents(["click", "input", "keydown", "mousedown"]);
|
|
3191
|
-
var _tmpl$$
|
|
3441
|
+
var _tmpl$$f = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$e = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
|
|
3192
3442
|
const TOAST_DURATION_MS$1 = 4200;
|
|
3193
3443
|
const TOAST_EXIT_MS$2 = 300;
|
|
3194
3444
|
function isBookmarkToastCandidate(action) {
|
|
@@ -3248,13 +3498,13 @@ const BookmarkNotifications = () => {
|
|
|
3248
3498
|
timeoutIds.clear();
|
|
3249
3499
|
});
|
|
3250
3500
|
return (() => {
|
|
3251
|
-
var _el$ = _tmpl$$
|
|
3501
|
+
var _el$ = _tmpl$$f();
|
|
3252
3502
|
insert(_el$, createComponent(For, {
|
|
3253
3503
|
get each() {
|
|
3254
3504
|
return toasts();
|
|
3255
3505
|
},
|
|
3256
3506
|
children: (toast) => (() => {
|
|
3257
|
-
var _el$2 = _tmpl$2$
|
|
3507
|
+
var _el$2 = _tmpl$2$e(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
3258
3508
|
insert(_el$3, () => toast.title);
|
|
3259
3509
|
insert(_el$4, () => toast.message);
|
|
3260
3510
|
createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!toast.leaving));
|
|
@@ -3264,7 +3514,7 @@ const BookmarkNotifications = () => {
|
|
|
3264
3514
|
return _el$;
|
|
3265
3515
|
})();
|
|
3266
3516
|
};
|
|
3267
|
-
var _tmpl$$
|
|
3517
|
+
var _tmpl$$e = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
|
|
3268
3518
|
const TOAST_DURATION_MS = 3e3;
|
|
3269
3519
|
const TOAST_EXIT_MS$1 = 300;
|
|
3270
3520
|
const HighlightNotifications = (props) => {
|
|
@@ -3303,7 +3553,7 @@ const HighlightNotifications = (props) => {
|
|
|
3303
3553
|
return memo(() => !!visible())() && current();
|
|
3304
3554
|
},
|
|
3305
3555
|
get children() {
|
|
3306
|
-
var _el$ = _tmpl$$
|
|
3556
|
+
var _el$ = _tmpl$$e(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
3307
3557
|
insert(_el$3, () => current().title);
|
|
3308
3558
|
insert(_el$4, () => current().message);
|
|
3309
3559
|
createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!leaving()));
|
|
@@ -3311,7 +3561,7 @@ const HighlightNotifications = (props) => {
|
|
|
3311
3561
|
}
|
|
3312
3562
|
});
|
|
3313
3563
|
};
|
|
3314
|
-
var _tmpl$$
|
|
3564
|
+
var _tmpl$$d = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$d = /* @__PURE__ */ template(`<span class=download-toast-done>✓`), _tmpl$3$b = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$a = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$9 = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
|
|
3315
3565
|
const TOAST_DONE_DURATION_MS = 4200;
|
|
3316
3566
|
const TOAST_EXIT_MS = 300;
|
|
3317
3567
|
function formatBytes(bytes) {
|
|
@@ -3402,20 +3652,20 @@ const DownloadToast = () => {
|
|
|
3402
3652
|
return Math.min(100, Math.round(d.receivedBytes / d.totalBytes * 100));
|
|
3403
3653
|
};
|
|
3404
3654
|
return (() => {
|
|
3405
|
-
var _el$ = _tmpl$$
|
|
3655
|
+
var _el$ = _tmpl$$d();
|
|
3406
3656
|
insert(_el$, createComponent(For, {
|
|
3407
3657
|
get each() {
|
|
3408
3658
|
return downloads();
|
|
3409
3659
|
},
|
|
3410
3660
|
children: (dl) => (() => {
|
|
3411
|
-
var _el$2 = _tmpl$7$
|
|
3661
|
+
var _el$2 = _tmpl$7$8(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
|
|
3412
3662
|
insert(_el$4, () => dl.filename);
|
|
3413
3663
|
insert(_el$3, createComponent(Show, {
|
|
3414
3664
|
get when() {
|
|
3415
3665
|
return dl.state === "completed";
|
|
3416
3666
|
},
|
|
3417
3667
|
get children() {
|
|
3418
|
-
return _tmpl$2$
|
|
3668
|
+
return _tmpl$2$d();
|
|
3419
3669
|
}
|
|
3420
3670
|
}), null);
|
|
3421
3671
|
insert(_el$3, createComponent(Show, {
|
|
@@ -3423,7 +3673,7 @@ const DownloadToast = () => {
|
|
|
3423
3673
|
return dl.state === "cancelled" || dl.state === "interrupted";
|
|
3424
3674
|
},
|
|
3425
3675
|
get children() {
|
|
3426
|
-
return _tmpl$3$
|
|
3676
|
+
return _tmpl$3$b();
|
|
3427
3677
|
}
|
|
3428
3678
|
}), null);
|
|
3429
3679
|
insert(_el$2, createComponent(Show, {
|
|
@@ -3432,11 +3682,11 @@ const DownloadToast = () => {
|
|
|
3432
3682
|
},
|
|
3433
3683
|
get children() {
|
|
3434
3684
|
return [(() => {
|
|
3435
|
-
var _el$7 = _tmpl$4$
|
|
3685
|
+
var _el$7 = _tmpl$4$b(), _el$8 = _el$7.firstChild;
|
|
3436
3686
|
createRenderEffect((_$p) => setStyleProperty(_el$8, "width", `${progressPercent(dl)}%`));
|
|
3437
3687
|
return _el$7;
|
|
3438
3688
|
})(), (() => {
|
|
3439
|
-
var _el$9 = _tmpl$5$
|
|
3689
|
+
var _el$9 = _tmpl$5$a();
|
|
3440
3690
|
insert(_el$9, () => formatBytes(dl.receivedBytes), null);
|
|
3441
3691
|
insert(_el$9, createComponent(Show, {
|
|
3442
3692
|
get when() {
|
|
@@ -3455,7 +3705,7 @@ const DownloadToast = () => {
|
|
|
3455
3705
|
return dl.state === "completed";
|
|
3456
3706
|
},
|
|
3457
3707
|
get children() {
|
|
3458
|
-
var _el$0 = _tmpl$6$
|
|
3708
|
+
var _el$0 = _tmpl$6$9(), _el$1 = _el$0.firstChild;
|
|
3459
3709
|
insert(_el$0, () => formatBytes(dl.receivedBytes), _el$1);
|
|
3460
3710
|
return _el$0;
|
|
3461
3711
|
}
|
|
@@ -3467,7 +3717,7 @@ const DownloadToast = () => {
|
|
|
3467
3717
|
return _el$;
|
|
3468
3718
|
})();
|
|
3469
3719
|
};
|
|
3470
|
-
var _tmpl$$
|
|
3720
|
+
var _tmpl$$c = /* @__PURE__ */ template(`<div class=find-bar><input class=find-bar-input type=text placeholder="Find in page..."><button class=find-bar-btn title="Previous (Shift+Enter)">▲</button><button class=find-bar-btn title="Next (Enter)">▼</button><button class="find-bar-btn find-bar-close"title="Close (Escape)">×`), _tmpl$2$c = /* @__PURE__ */ template(`<span class=find-bar-count>`);
|
|
3471
3721
|
const FindBar = () => {
|
|
3472
3722
|
const [open, setOpen] = createSignal(false);
|
|
3473
3723
|
const [query, setQuery] = createSignal("");
|
|
@@ -3545,7 +3795,7 @@ const FindBar = () => {
|
|
|
3545
3795
|
return open();
|
|
3546
3796
|
},
|
|
3547
3797
|
get children() {
|
|
3548
|
-
var _el$ = _tmpl$$
|
|
3798
|
+
var _el$ = _tmpl$$c(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
|
|
3549
3799
|
_el$2.$$input = (e) => handleInput(e.currentTarget.value);
|
|
3550
3800
|
var _ref$ = inputRef;
|
|
3551
3801
|
typeof _ref$ === "function" ? use(_ref$, _el$2) : inputRef = _el$2;
|
|
@@ -3555,7 +3805,7 @@ const FindBar = () => {
|
|
|
3555
3805
|
return result();
|
|
3556
3806
|
},
|
|
3557
3807
|
children: (r) => (() => {
|
|
3558
|
-
var _el$6 = _tmpl$2$
|
|
3808
|
+
var _el$6 = _tmpl$2$c();
|
|
3559
3809
|
insert(_el$6, (() => {
|
|
3560
3810
|
var _c$ = memo(() => r().matches > 0);
|
|
3561
3811
|
return () => _c$() ? `${r().activeMatchOrdinal} / ${r().matches}` : "No results";
|
|
@@ -3572,7 +3822,7 @@ const FindBar = () => {
|
|
|
3572
3822
|
});
|
|
3573
3823
|
};
|
|
3574
3824
|
delegateEvents(["input", "click"]);
|
|
3575
|
-
var _tmpl$$
|
|
3825
|
+
var _tmpl$$b = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$b = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$a = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$a = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$5$9 = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
|
|
3576
3826
|
const FlowProgress = () => {
|
|
3577
3827
|
const {
|
|
3578
3828
|
runtimeState: runtimeState2
|
|
@@ -3603,13 +3853,13 @@ const FlowProgress = () => {
|
|
|
3603
3853
|
return flow() || tracker();
|
|
3604
3854
|
},
|
|
3605
3855
|
get children() {
|
|
3606
|
-
var _el$ = _tmpl$$
|
|
3856
|
+
var _el$ = _tmpl$$b();
|
|
3607
3857
|
insert(_el$, createComponent(Show, {
|
|
3608
3858
|
get when() {
|
|
3609
3859
|
return tracker();
|
|
3610
3860
|
},
|
|
3611
3861
|
children: (t) => (() => {
|
|
3612
|
-
var _el$2 = _tmpl$4$
|
|
3862
|
+
var _el$2 = _tmpl$4$a(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$3.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling;
|
|
3613
3863
|
insert(_el$4, () => t().goal);
|
|
3614
3864
|
insert(_el$5, () => progressPercent(t().steps), _el$6);
|
|
3615
3865
|
insert(_el$9, createComponent(For, {
|
|
@@ -3617,7 +3867,7 @@ const FlowProgress = () => {
|
|
|
3617
3867
|
return t().steps;
|
|
3618
3868
|
},
|
|
3619
3869
|
children: (step) => (() => {
|
|
3620
|
-
var _el$12 = _tmpl$5$
|
|
3870
|
+
var _el$12 = _tmpl$5$9(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
|
|
3621
3871
|
insert(_el$14, () => step.label);
|
|
3622
3872
|
createRenderEffect(() => className(_el$12, `flow-step ${stepStatusClass(step.status)}`));
|
|
3623
3873
|
return _el$12;
|
|
@@ -3628,7 +3878,7 @@ const FlowProgress = () => {
|
|
|
3628
3878
|
return t().lastAction;
|
|
3629
3879
|
},
|
|
3630
3880
|
get children() {
|
|
3631
|
-
var _el$0 = _tmpl$2$
|
|
3881
|
+
var _el$0 = _tmpl$2$b();
|
|
3632
3882
|
_el$0.firstChild;
|
|
3633
3883
|
insert(_el$0, () => t().lastAction, null);
|
|
3634
3884
|
return _el$0;
|
|
@@ -3639,7 +3889,7 @@ const FlowProgress = () => {
|
|
|
3639
3889
|
return memo(() => !!t().nextHint)() && !t().steps.every((s) => s.status === "done");
|
|
3640
3890
|
},
|
|
3641
3891
|
get children() {
|
|
3642
|
-
var _el$10 = _tmpl$3$
|
|
3892
|
+
var _el$10 = _tmpl$3$a();
|
|
3643
3893
|
_el$10.firstChild;
|
|
3644
3894
|
insert(_el$10, () => t().nextHint, null);
|
|
3645
3895
|
return _el$10;
|
|
@@ -3654,7 +3904,7 @@ const FlowProgress = () => {
|
|
|
3654
3904
|
return memo(() => !!flow())() && !tracker();
|
|
3655
3905
|
},
|
|
3656
3906
|
children: (f) => (() => {
|
|
3657
|
-
var _el$15 = _tmpl$4$
|
|
3907
|
+
var _el$15 = _tmpl$4$a(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$16.nextSibling, _el$21 = _el$20.firstChild, _el$22 = _el$20.nextSibling;
|
|
3658
3908
|
insert(_el$17, () => f().goal);
|
|
3659
3909
|
insert(_el$18, () => progressPercent(f().steps), _el$19);
|
|
3660
3910
|
insert(_el$22, createComponent(For, {
|
|
@@ -3662,7 +3912,7 @@ const FlowProgress = () => {
|
|
|
3662
3912
|
return f().steps;
|
|
3663
3913
|
},
|
|
3664
3914
|
children: (step) => (() => {
|
|
3665
|
-
var _el$23 = _tmpl$5$
|
|
3915
|
+
var _el$23 = _tmpl$5$9(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
|
|
3666
3916
|
insert(_el$25, () => step.label);
|
|
3667
3917
|
createRenderEffect(() => className(_el$23, `flow-step ${stepStatusClass(step.status)}`));
|
|
3668
3918
|
return _el$23;
|
|
@@ -3703,7 +3953,7 @@ function formatTime(iso, options) {
|
|
|
3703
3953
|
...options?.includeSeconds && { second: "2-digit" }
|
|
3704
3954
|
});
|
|
3705
3955
|
}
|
|
3706
|
-
var _tmpl$$
|
|
3956
|
+
var _tmpl$$a = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$a = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$9 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$5$8 = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$8 = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$7 = /* @__PURE__ */ template(`<article><div class=agent-transcript-meta><span class=agent-transcript-badge></span><span class=agent-transcript-time></span></div><div class=agent-transcript-text>`);
|
|
3707
3957
|
const AgentTranscriptDock = () => {
|
|
3708
3958
|
const {
|
|
3709
3959
|
runtimeState: runtimeState2
|
|
@@ -3714,10 +3964,10 @@ const AgentTranscriptDock = () => {
|
|
|
3714
3964
|
void window.vessel.settings.get().then((settings) => {
|
|
3715
3965
|
setMode(settings.agentTranscriptMode ?? "summary");
|
|
3716
3966
|
});
|
|
3717
|
-
const
|
|
3967
|
+
const unsubscribe2 = window.vessel.settings.onUpdate((settings) => {
|
|
3718
3968
|
setMode(settings.agentTranscriptMode ?? "summary");
|
|
3719
3969
|
});
|
|
3720
|
-
onCleanup(
|
|
3970
|
+
onCleanup(unsubscribe2);
|
|
3721
3971
|
});
|
|
3722
3972
|
const visibleEntries = createMemo(() => runtimeState2().transcript.slice(-6).reverse());
|
|
3723
3973
|
const hasStreamingEntry = createMemo(() => visibleEntries().some((entry) => entry.status === "streaming"));
|
|
@@ -3740,7 +3990,7 @@ const AgentTranscriptDock = () => {
|
|
|
3740
3990
|
return isSummary();
|
|
3741
3991
|
},
|
|
3742
3992
|
get children() {
|
|
3743
|
-
var _el$ = _tmpl$$
|
|
3993
|
+
var _el$ = _tmpl$$a();
|
|
3744
3994
|
insert(_el$, createComponent(Show, {
|
|
3745
3995
|
get when() {
|
|
3746
3996
|
return latestEntry();
|
|
@@ -3750,10 +4000,10 @@ const AgentTranscriptDock = () => {
|
|
|
3750
4000
|
return hasStreamingEntry();
|
|
3751
4001
|
},
|
|
3752
4002
|
get children() {
|
|
3753
|
-
return _tmpl$5$
|
|
4003
|
+
return _tmpl$5$8();
|
|
3754
4004
|
}
|
|
3755
4005
|
}), (() => {
|
|
3756
|
-
var _el$10 = _tmpl$6$
|
|
4006
|
+
var _el$10 = _tmpl$6$8(), _el$11 = _el$10.firstChild;
|
|
3757
4007
|
insert(_el$10, () => entry().title || entry().kind, _el$11);
|
|
3758
4008
|
insert(_el$10, (() => {
|
|
3759
4009
|
var _c$ = memo(() => entry().text.length > 80);
|
|
@@ -3769,7 +4019,7 @@ const AgentTranscriptDock = () => {
|
|
|
3769
4019
|
return !isSummary();
|
|
3770
4020
|
},
|
|
3771
4021
|
get children() {
|
|
3772
|
-
var _el$2 = _tmpl$4$
|
|
4022
|
+
var _el$2 = _tmpl$4$9(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
|
|
3773
4023
|
_el$4.firstChild;
|
|
3774
4024
|
var _el$7 = _el$4.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
|
|
3775
4025
|
insert(_el$4, createComponent(Show, {
|
|
@@ -3777,7 +4027,7 @@ const AgentTranscriptDock = () => {
|
|
|
3777
4027
|
return hasStreamingEntry();
|
|
3778
4028
|
},
|
|
3779
4029
|
get children() {
|
|
3780
|
-
return _tmpl$2$
|
|
4030
|
+
return _tmpl$2$a();
|
|
3781
4031
|
}
|
|
3782
4032
|
}), null);
|
|
3783
4033
|
_el$8.$$click = () => setCollapsed((value) => !value);
|
|
@@ -3788,14 +4038,14 @@ const AgentTranscriptDock = () => {
|
|
|
3788
4038
|
return !collapsed();
|
|
3789
4039
|
},
|
|
3790
4040
|
get children() {
|
|
3791
|
-
var _el$0 = _tmpl$3$
|
|
4041
|
+
var _el$0 = _tmpl$3$9();
|
|
3792
4042
|
use((el) => useScrollFade(el), _el$0);
|
|
3793
4043
|
insert(_el$0, createComponent(For, {
|
|
3794
4044
|
get each() {
|
|
3795
4045
|
return visibleEntries();
|
|
3796
4046
|
},
|
|
3797
4047
|
children: (entry) => (() => {
|
|
3798
|
-
var _el$12 = _tmpl$7$
|
|
4048
|
+
var _el$12 = _tmpl$7$7(), _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling, _el$16 = _el$13.nextSibling;
|
|
3799
4049
|
insert(_el$14, () => entry.title || entry.kind);
|
|
3800
4050
|
insert(_el$15, () => formatTime(entry.updatedAt));
|
|
3801
4051
|
insert(_el$16, () => entry.text);
|
|
@@ -4160,7 +4410,7 @@ function useAnimatedPresence(isOpen, exitDurationMs) {
|
|
|
4160
4410
|
});
|
|
4161
4411
|
return { visible, closing };
|
|
4162
4412
|
}
|
|
4163
|
-
var _tmpl$$
|
|
4413
|
+
var _tmpl$$9 = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Configure a chat provider to start using the AI assistant.</p><button class=command-bar-no-provider-btn>Open Settings <kbd>Ctrl+,`), _tmpl$2$9 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$3$8 = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$4$8 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close`), _tmpl$5$7 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
|
|
4164
4414
|
const COMMAND_BAR_EXIT_MS = 200;
|
|
4165
4415
|
const CommandBar = () => {
|
|
4166
4416
|
const {
|
|
@@ -4214,7 +4464,7 @@ const CommandBar = () => {
|
|
|
4214
4464
|
return visible();
|
|
4215
4465
|
},
|
|
4216
4466
|
get children() {
|
|
4217
|
-
var _el$ = _tmpl$4$
|
|
4467
|
+
var _el$ = _tmpl$4$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$10 = _el$3.nextSibling, _el$11 = _el$10.firstChild;
|
|
4218
4468
|
_el$11.nextSibling;
|
|
4219
4469
|
addEventListener(_el$, "click", closeCommandBar, true);
|
|
4220
4470
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
@@ -4228,7 +4478,7 @@ const CommandBar = () => {
|
|
|
4228
4478
|
return !hasProvider();
|
|
4229
4479
|
},
|
|
4230
4480
|
get children() {
|
|
4231
|
-
var _el$6 = _tmpl$$
|
|
4481
|
+
var _el$6 = _tmpl$$9(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
4232
4482
|
_el$8.$$click = () => {
|
|
4233
4483
|
closeCommandBar();
|
|
4234
4484
|
openSettings();
|
|
@@ -4241,13 +4491,13 @@ const CommandBar = () => {
|
|
|
4241
4491
|
return memo(() => !!(hasProvider() && recentQueries2().length > 0))() && !input().trim();
|
|
4242
4492
|
},
|
|
4243
4493
|
get children() {
|
|
4244
|
-
var _el$9 = _tmpl$2$
|
|
4494
|
+
var _el$9 = _tmpl$2$9(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
|
|
4245
4495
|
insert(_el$1, createComponent(For, {
|
|
4246
4496
|
get each() {
|
|
4247
4497
|
return recentQueries2();
|
|
4248
4498
|
},
|
|
4249
4499
|
children: (q) => (() => {
|
|
4250
|
-
var _el$14 = _tmpl$5$
|
|
4500
|
+
var _el$14 = _tmpl$5$7();
|
|
4251
4501
|
_el$14.$$click = () => void handleRecentClick(q);
|
|
4252
4502
|
insert(_el$14, q);
|
|
4253
4503
|
return _el$14;
|
|
@@ -4261,10 +4511,10 @@ const CommandBar = () => {
|
|
|
4261
4511
|
return hasProvider();
|
|
4262
4512
|
},
|
|
4263
4513
|
get fallback() {
|
|
4264
|
-
return _tmpl$6$
|
|
4514
|
+
return _tmpl$6$7();
|
|
4265
4515
|
},
|
|
4266
4516
|
get children() {
|
|
4267
|
-
return _tmpl$3$
|
|
4517
|
+
return _tmpl$3$8();
|
|
4268
4518
|
}
|
|
4269
4519
|
}), null);
|
|
4270
4520
|
createRenderEffect((_p$) => {
|
|
@@ -5776,7 +6026,7 @@ function getBookmarkSearchMatch(args) {
|
|
|
5776
6026
|
}
|
|
5777
6027
|
return { matchedFields, score };
|
|
5778
6028
|
}
|
|
5779
|
-
var _tmpl$$
|
|
6029
|
+
var _tmpl$$8 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$8 = /* @__PURE__ */ template(`<div><button class=dropdown-select-trigger type=button aria-haspopup=listbox><span class=dropdown-select-value></span><span class=dropdown-select-caret aria-hidden=true>▾`), _tmpl$3$7 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$7 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
|
|
5780
6030
|
const DropdownSelect = (props) => {
|
|
5781
6031
|
const [open, setOpen] = createSignal(false);
|
|
5782
6032
|
let rootRef;
|
|
@@ -5800,7 +6050,7 @@ const DropdownSelect = (props) => {
|
|
|
5800
6050
|
});
|
|
5801
6051
|
});
|
|
5802
6052
|
return (() => {
|
|
5803
|
-
var _el$ = _tmpl$2$
|
|
6053
|
+
var _el$ = _tmpl$2$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
5804
6054
|
var _ref$ = rootRef;
|
|
5805
6055
|
typeof _ref$ === "function" ? use(_ref$, _el$) : rootRef = _el$;
|
|
5806
6056
|
_el$2.$$click = () => setOpen((current) => !current);
|
|
@@ -5810,13 +6060,13 @@ const DropdownSelect = (props) => {
|
|
|
5810
6060
|
return open();
|
|
5811
6061
|
},
|
|
5812
6062
|
get children() {
|
|
5813
|
-
var _el$5 = _tmpl$$
|
|
6063
|
+
var _el$5 = _tmpl$$8();
|
|
5814
6064
|
insert(_el$5, createComponent(For, {
|
|
5815
6065
|
get each() {
|
|
5816
6066
|
return props.options;
|
|
5817
6067
|
},
|
|
5818
6068
|
children: (option) => (() => {
|
|
5819
|
-
var _el$6 = _tmpl$4$
|
|
6069
|
+
var _el$6 = _tmpl$4$7(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
|
|
5820
6070
|
_el$6.$$click = () => {
|
|
5821
6071
|
props.onChange(option.value);
|
|
5822
6072
|
setOpen(false);
|
|
@@ -5827,7 +6077,7 @@ const DropdownSelect = (props) => {
|
|
|
5827
6077
|
return option.description;
|
|
5828
6078
|
},
|
|
5829
6079
|
get children() {
|
|
5830
|
-
var _el$9 = _tmpl$3$
|
|
6080
|
+
var _el$9 = _tmpl$3$7();
|
|
5831
6081
|
insert(_el$9, () => option.description);
|
|
5832
6082
|
return _el$9;
|
|
5833
6083
|
}
|
|
@@ -6013,7 +6263,7 @@ function renderKitPrompt(kit, values) {
|
|
|
6013
6263
|
(_, key) => values[key] ?? ""
|
|
6014
6264
|
);
|
|
6015
6265
|
}
|
|
6016
|
-
var _tmpl$$
|
|
6266
|
+
var _tmpl$$7 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$7 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$6 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$6 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$6 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$6 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$6 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$5 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$2 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$2 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$2 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$2 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$2 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$2 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$2 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$2 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$2 = /* @__PURE__ */ template(`<option>`), _tmpl$42$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
|
|
6017
6267
|
const ICON_MAP = {
|
|
6018
6268
|
BookOpen: book_open_default,
|
|
6019
6269
|
Tag: tag_default,
|
|
@@ -6338,7 +6588,7 @@ const AutomationTab = (props) => {
|
|
|
6338
6588
|
return memo(() => !!!premiumData.loading)() && !isPremium();
|
|
6339
6589
|
},
|
|
6340
6590
|
get children() {
|
|
6341
|
-
var _el$2 = _tmpl$$
|
|
6591
|
+
var _el$2 = _tmpl$$7(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
|
|
6342
6592
|
insert(_el$3, createComponent(zap_default, {
|
|
6343
6593
|
size: 24
|
|
6344
6594
|
}));
|
|
@@ -6352,7 +6602,7 @@ const AutomationTab = (props) => {
|
|
|
6352
6602
|
},
|
|
6353
6603
|
get children() {
|
|
6354
6604
|
return [(() => {
|
|
6355
|
-
var _el$7 = _tmpl$2$
|
|
6605
|
+
var _el$7 = _tmpl$2$7(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling;
|
|
6356
6606
|
insert(_el$0, () => allKits().length, _el$1);
|
|
6357
6607
|
_el$10.$$click = () => void handleInstall();
|
|
6358
6608
|
return _el$7;
|
|
@@ -6361,13 +6611,13 @@ const AutomationTab = (props) => {
|
|
|
6361
6611
|
return installError() !== null;
|
|
6362
6612
|
},
|
|
6363
6613
|
get children() {
|
|
6364
|
-
var _el$11 = _tmpl$3$
|
|
6614
|
+
var _el$11 = _tmpl$3$6(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
|
|
6365
6615
|
insert(_el$12, installError);
|
|
6366
6616
|
_el$13.$$click = () => setInstallError(null);
|
|
6367
6617
|
return _el$11;
|
|
6368
6618
|
}
|
|
6369
6619
|
}), (() => {
|
|
6370
|
-
var _el$14 = _tmpl$4$
|
|
6620
|
+
var _el$14 = _tmpl$4$6();
|
|
6371
6621
|
insert(_el$14, createComponent(For, {
|
|
6372
6622
|
get each() {
|
|
6373
6623
|
return allKits();
|
|
@@ -6427,14 +6677,14 @@ const AutomationTab = (props) => {
|
|
|
6427
6677
|
},
|
|
6428
6678
|
get children() {
|
|
6429
6679
|
return [(() => {
|
|
6430
|
-
var _el$15 = _tmpl$5$
|
|
6680
|
+
var _el$15 = _tmpl$5$6(), _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
|
|
6431
6681
|
insert(_el$15, createComponent(clock_default, {
|
|
6432
6682
|
size: 12
|
|
6433
6683
|
}), _el$16);
|
|
6434
6684
|
insert(_el$17, () => scheduledJobs().length);
|
|
6435
6685
|
return _el$15;
|
|
6436
6686
|
})(), (() => {
|
|
6437
|
-
var _el$18 = _tmpl$6$
|
|
6687
|
+
var _el$18 = _tmpl$6$6();
|
|
6438
6688
|
insert(_el$18, createComponent(For, {
|
|
6439
6689
|
get each() {
|
|
6440
6690
|
return scheduledJobs();
|
|
@@ -6512,14 +6762,14 @@ const AutomationTab = (props) => {
|
|
|
6512
6762
|
},
|
|
6513
6763
|
get children() {
|
|
6514
6764
|
return [(() => {
|
|
6515
|
-
var _el$19 = _tmpl$7$
|
|
6765
|
+
var _el$19 = _tmpl$7$6(), _el$20 = _el$19.firstChild, _el$21 = _el$20.nextSibling;
|
|
6516
6766
|
insert(_el$19, createComponent(zap_default, {
|
|
6517
6767
|
size: 12
|
|
6518
6768
|
}), _el$20);
|
|
6519
6769
|
insert(_el$21, () => automationActivities2().length);
|
|
6520
6770
|
return _el$19;
|
|
6521
6771
|
})(), (() => {
|
|
6522
|
-
var _el$22 = _tmpl$8$
|
|
6772
|
+
var _el$22 = _tmpl$8$5();
|
|
6523
6773
|
insert(_el$22, createComponent(For, {
|
|
6524
6774
|
get each() {
|
|
6525
6775
|
return automationActivities2();
|
|
@@ -6852,7 +7102,7 @@ const AutomationTab = (props) => {
|
|
|
6852
7102
|
})();
|
|
6853
7103
|
};
|
|
6854
7104
|
delegateEvents(["click", "input", "keydown", "contextmenu"]);
|
|
6855
|
-
var _tmpl$$
|
|
7105
|
+
var _tmpl$$6 = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$5 = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$5 = /* @__PURE__ */ template(`<div class=agent-section-title>Recent page changes`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=page-diff-list>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$5 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=page-diff-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=page-diff-content><div class=page-diff-time></div><div class=page-diff-summary>`);
|
|
6856
7106
|
const PageDiffTimeline = () => {
|
|
6857
7107
|
const {
|
|
6858
7108
|
activeTab
|
|
@@ -6895,22 +7145,22 @@ const PageDiffTimeline = () => {
|
|
|
6895
7145
|
void activeTab()?.url;
|
|
6896
7146
|
void loadHistory();
|
|
6897
7147
|
});
|
|
6898
|
-
const
|
|
7148
|
+
const unsubscribe2 = window.vessel.pageDiff.onChanged((diff) => {
|
|
6899
7149
|
const tab = activeTab();
|
|
6900
7150
|
if (!tab || !matchesPageSnapshotUrl(tab.url, diff.url)) return;
|
|
6901
7151
|
void loadHistory();
|
|
6902
7152
|
});
|
|
6903
7153
|
onCleanup(() => {
|
|
6904
|
-
|
|
7154
|
+
unsubscribe2();
|
|
6905
7155
|
});
|
|
6906
7156
|
return (() => {
|
|
6907
|
-
var _el$ = _tmpl$6$
|
|
7157
|
+
var _el$ = _tmpl$6$5();
|
|
6908
7158
|
insert(_el$, createComponent(Show, {
|
|
6909
7159
|
get when() {
|
|
6910
7160
|
return loading();
|
|
6911
7161
|
},
|
|
6912
7162
|
get children() {
|
|
6913
|
-
return _tmpl$$
|
|
7163
|
+
return _tmpl$$6();
|
|
6914
7164
|
}
|
|
6915
7165
|
}), null);
|
|
6916
7166
|
insert(_el$, createComponent(Show, {
|
|
@@ -6918,7 +7168,7 @@ const PageDiffTimeline = () => {
|
|
|
6918
7168
|
return memo(() => !!!loading())() && error();
|
|
6919
7169
|
},
|
|
6920
7170
|
get children() {
|
|
6921
|
-
var _el$3 = _tmpl$2$
|
|
7171
|
+
var _el$3 = _tmpl$2$6();
|
|
6922
7172
|
insert(_el$3, error);
|
|
6923
7173
|
return _el$3;
|
|
6924
7174
|
}
|
|
@@ -6928,7 +7178,7 @@ const PageDiffTimeline = () => {
|
|
|
6928
7178
|
return memo(() => !!(!loading() && !error()))() && bursts().length === 0;
|
|
6929
7179
|
},
|
|
6930
7180
|
get children() {
|
|
6931
|
-
return _tmpl$3$
|
|
7181
|
+
return _tmpl$3$5();
|
|
6932
7182
|
}
|
|
6933
7183
|
}), null);
|
|
6934
7184
|
insert(_el$, createComponent(Show, {
|
|
@@ -6936,20 +7186,20 @@ const PageDiffTimeline = () => {
|
|
|
6936
7186
|
return memo(() => !!(!loading() && !error()))() && bursts().length > 0;
|
|
6937
7187
|
},
|
|
6938
7188
|
get children() {
|
|
6939
|
-
return [_tmpl$4$
|
|
6940
|
-
var _el$6 = _tmpl$5$
|
|
7189
|
+
return [_tmpl$4$5(), (() => {
|
|
7190
|
+
var _el$6 = _tmpl$5$5();
|
|
6941
7191
|
insert(_el$6, createComponent(For, {
|
|
6942
7192
|
get each() {
|
|
6943
7193
|
return bursts();
|
|
6944
7194
|
},
|
|
6945
7195
|
children: (burst, i) => (() => {
|
|
6946
|
-
var _el$7 = _tmpl$8$
|
|
7196
|
+
var _el$7 = _tmpl$8$4(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$1 = _el$8.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
|
|
6947
7197
|
insert(_el$8, createComponent(Show, {
|
|
6948
7198
|
get when() {
|
|
6949
7199
|
return i() < bursts().length - 1;
|
|
6950
7200
|
},
|
|
6951
7201
|
get children() {
|
|
6952
|
-
return _tmpl$7$
|
|
7202
|
+
return _tmpl$7$5();
|
|
6953
7203
|
}
|
|
6954
7204
|
}), null);
|
|
6955
7205
|
insert(_el$10, () => new Date(burst.detectedAt).toLocaleString());
|
|
@@ -6966,7 +7216,7 @@ const PageDiffTimeline = () => {
|
|
|
6966
7216
|
})();
|
|
6967
7217
|
};
|
|
6968
7218
|
const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
|
|
6969
|
-
var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$11$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$12$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$13$1 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$14$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$15$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$16$1 = /* @__PURE__ */ template(`<span>`), _tmpl$17$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$19$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$20$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$21$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$24$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$38$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$39$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$40$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$41$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$47 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$52 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$53 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$54 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$55 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$56 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$57 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$58 = /* @__PURE__ */ template(`<div>`), _tmpl$59 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$60 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$61 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$62 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
7219
|
+
var _tmpl$$5 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$4 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$4 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$4 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$4 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$3 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$1$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$10$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$1 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$15$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$16$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$17$1 = /* @__PURE__ */ template(`<span>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$19$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$21$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$22$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$25$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$38$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$39$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$40$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$41$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$43$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$44$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$45$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$46$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$47$1 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$52 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$53 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$54 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$55 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$56 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$57 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$58 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$59 = /* @__PURE__ */ template(`<div>`), _tmpl$60 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$61 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$62 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$63 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
6970
7220
|
const UNSORTED_FOLDER = {
|
|
6971
7221
|
id: "unsorted",
|
|
6972
7222
|
name: "Unsorted",
|
|
@@ -6975,7 +7225,7 @@ const UNSORTED_FOLDER = {
|
|
|
6975
7225
|
const MarkdownMessage = (props) => {
|
|
6976
7226
|
const html2 = createMemo(() => renderMarkdown(props.content));
|
|
6977
7227
|
return (() => {
|
|
6978
|
-
var _el$ = _tmpl$$
|
|
7228
|
+
var _el$ = _tmpl$$5();
|
|
6979
7229
|
createRenderEffect(() => _el$.innerHTML = html2());
|
|
6980
7230
|
return _el$;
|
|
6981
7231
|
})();
|
|
@@ -6993,7 +7243,7 @@ const PremiumPromptCard = (props) => {
|
|
|
6993
7243
|
const title = props.kind === "premium_gate" ? "This workflow needs Premium" : "Need a longer autonomous run?";
|
|
6994
7244
|
const body = props.kind === "premium_gate" ? "Unlock screenshots, saved sessions, workflow tracking, table extraction, and the credential vault with a 7-day free trial." : "Free chats pause after 50 tool calls in a turn. Vessel Premium raises the ceiling so the agent can finish longer workflows without stopping.";
|
|
6995
7245
|
return (() => {
|
|
6996
|
-
var _el$2 = _tmpl$2$
|
|
7246
|
+
var _el$2 = _tmpl$2$5(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
6997
7247
|
insert(_el$4, title);
|
|
6998
7248
|
insert(_el$5, body);
|
|
6999
7249
|
addEventListener(_el$7, "click", props.onStartTrial, true);
|
|
@@ -7131,7 +7381,7 @@ const Sidebar = (props) => {
|
|
|
7131
7381
|
}
|
|
7132
7382
|
});
|
|
7133
7383
|
createEffect(() => {
|
|
7134
|
-
const
|
|
7384
|
+
const unsubscribe2 = window.vessel.highlights.onCountUpdate((count) => {
|
|
7135
7385
|
setHighlightCount(count);
|
|
7136
7386
|
if (count === 0) {
|
|
7137
7387
|
setHighlightIndex(-1);
|
|
@@ -7141,7 +7391,7 @@ const Sidebar = (props) => {
|
|
|
7141
7391
|
setHighlightIndex(count - 1);
|
|
7142
7392
|
}
|
|
7143
7393
|
});
|
|
7144
|
-
onCleanup(
|
|
7394
|
+
onCleanup(unsubscribe2);
|
|
7145
7395
|
});
|
|
7146
7396
|
const scrollToHighlight = async (idx) => {
|
|
7147
7397
|
const count = highlightCount();
|
|
@@ -7168,7 +7418,7 @@ const Sidebar = (props) => {
|
|
|
7168
7418
|
setHighlightIndex(-1);
|
|
7169
7419
|
};
|
|
7170
7420
|
createEffect(() => {
|
|
7171
|
-
const
|
|
7421
|
+
const unsubscribe2 = window.vessel.highlights.onSidebarAction((action) => {
|
|
7172
7422
|
if (action === "remove-current") {
|
|
7173
7423
|
void removeCurrentHighlight();
|
|
7174
7424
|
return;
|
|
@@ -7177,10 +7427,10 @@ const Sidebar = (props) => {
|
|
|
7177
7427
|
void clearAllHighlights();
|
|
7178
7428
|
}
|
|
7179
7429
|
});
|
|
7180
|
-
onCleanup(
|
|
7430
|
+
onCleanup(unsubscribe2);
|
|
7181
7431
|
});
|
|
7182
7432
|
createEffect(() => {
|
|
7183
|
-
const
|
|
7433
|
+
const unsubscribe2 = window.vessel.bookmarks.onAddContextToChat((bookmarkId) => {
|
|
7184
7434
|
const bookmark = bookmarksState2().bookmarks.find((item) => item.id === bookmarkId);
|
|
7185
7435
|
if (!bookmark) return;
|
|
7186
7436
|
const folder = bookmark.folderId === UNSORTED_FOLDER.id ? UNSORTED_FOLDER : bookmarksState2().folders.find((item) => item.id === bookmark.folderId) ?? null;
|
|
@@ -7199,7 +7449,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7199
7449
|
chatInputRef?.setSelectionRange(length, length);
|
|
7200
7450
|
});
|
|
7201
7451
|
});
|
|
7202
|
-
onCleanup(
|
|
7452
|
+
onCleanup(unsubscribe2);
|
|
7203
7453
|
});
|
|
7204
7454
|
const handleChatSend = async () => {
|
|
7205
7455
|
const prompt = chatInput().trim();
|
|
@@ -7232,6 +7482,9 @@ ${contextBlock}` : contextBlock);
|
|
|
7232
7482
|
const [bookmarkSearchQuery, setBookmarkSearchQuery] = createSignal("");
|
|
7233
7483
|
const [bookmarkExportMessage, setBookmarkExportMessage] = createSignal("");
|
|
7234
7484
|
const [bookmarkExporting, setBookmarkExporting] = createSignal(false);
|
|
7485
|
+
const [bookmarkImportExpanded, setBookmarkImportExpanded] = createSignal(false);
|
|
7486
|
+
const [bookmarkImporting, setBookmarkImporting] = createSignal(false);
|
|
7487
|
+
const [bookmarkImportMessage, setBookmarkImportMessage] = createSignal("");
|
|
7235
7488
|
const [editingFolderId, setEditingFolderId] = createSignal(null);
|
|
7236
7489
|
const [editingFolderName, setEditingFolderName] = createSignal("");
|
|
7237
7490
|
const [editingFolderSummary, setEditingFolderSummary] = createSignal("");
|
|
@@ -7526,6 +7779,22 @@ ${contextBlock}` : contextBlock);
|
|
|
7526
7779
|
setBookmarkExporting(false);
|
|
7527
7780
|
}
|
|
7528
7781
|
};
|
|
7782
|
+
const handleImportBookmarks = async (format) => {
|
|
7783
|
+
setBookmarkImporting(true);
|
|
7784
|
+
setBookmarkImportMessage("");
|
|
7785
|
+
try {
|
|
7786
|
+
const result = format === "json" ? await window.vessel.bookmarks.importJson() : await window.vessel.bookmarks.importHtml();
|
|
7787
|
+
if (!result) {
|
|
7788
|
+
setBookmarkImportMessage("Import canceled.");
|
|
7789
|
+
return;
|
|
7790
|
+
}
|
|
7791
|
+
setBookmarkImportMessage(`Imported ${result.imported} bookmarks (${result.skipped} duplicates skipped, ${result.errors} errors)`);
|
|
7792
|
+
} catch (error) {
|
|
7793
|
+
setBookmarkImportMessage(error instanceof Error ? error.message : "Could not import bookmarks.");
|
|
7794
|
+
} finally {
|
|
7795
|
+
setBookmarkImporting(false);
|
|
7796
|
+
}
|
|
7797
|
+
};
|
|
7529
7798
|
const toggleFolderExpanded = (folderId) => {
|
|
7530
7799
|
setExpandedFolderIds((current) => current.includes(folderId) ? current.filter((id) => id !== folderId) : [...current, folderId]);
|
|
7531
7800
|
};
|
|
@@ -7543,9 +7812,9 @@ ${contextBlock}` : contextBlock);
|
|
|
7543
7812
|
return props.forceOpen || sidebarOpen2();
|
|
7544
7813
|
},
|
|
7545
7814
|
get children() {
|
|
7546
|
-
var _el$9 = _tmpl$
|
|
7815
|
+
var _el$9 = _tmpl$29$1(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
|
|
7547
7816
|
_el$16.firstChild;
|
|
7548
|
-
var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$15.nextSibling, _el$
|
|
7817
|
+
var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$15.nextSibling, _el$124 = _el$25.firstChild;
|
|
7549
7818
|
_el$0.$$pointerdown = startResize;
|
|
7550
7819
|
setAttribute(_el$11, "src", vesselLogo);
|
|
7551
7820
|
addEventListener(_el$13, "click", clearHistory, true);
|
|
@@ -7556,7 +7825,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7556
7825
|
return runtimeState2().supervisor.pendingApprovals.length > 0;
|
|
7557
7826
|
},
|
|
7558
7827
|
get children() {
|
|
7559
|
-
var _el$18 = _tmpl$3$
|
|
7828
|
+
var _el$18 = _tmpl$3$4();
|
|
7560
7829
|
insert(_el$18, () => runtimeState2().supervisor.pendingApprovals.length);
|
|
7561
7830
|
return _el$18;
|
|
7562
7831
|
}
|
|
@@ -7576,7 +7845,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7576
7845
|
return sidebarTab() === "supervisor";
|
|
7577
7846
|
},
|
|
7578
7847
|
get children() {
|
|
7579
|
-
var _el$26 = _tmpl$7$
|
|
7848
|
+
var _el$26 = _tmpl$7$4(), _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$27.nextSibling, _el$33 = _el$32.firstChild, _el$34 = _el$33.nextSibling, _el$36 = _el$32.nextSibling, _el$38 = _el$36.nextSibling;
|
|
7580
7849
|
_el$38.firstChild;
|
|
7581
7850
|
insert(_el$30, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
|
|
7582
7851
|
insert(_el$31, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
|
|
@@ -7599,7 +7868,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7599
7868
|
return runtimeState2().canUndo;
|
|
7600
7869
|
},
|
|
7601
7870
|
get children() {
|
|
7602
|
-
var _el$35 = _tmpl$4$
|
|
7871
|
+
var _el$35 = _tmpl$4$4();
|
|
7603
7872
|
_el$35.$$click = () => void undoLastAction();
|
|
7604
7873
|
createRenderEffect(() => setAttribute(_el$35, "title", runtimeState2().undoInfo ? `Undo: ${runtimeState2().undoInfo.actionName}` : "Undo last action"));
|
|
7605
7874
|
return _el$35;
|
|
@@ -7611,21 +7880,21 @@ ${contextBlock}` : contextBlock);
|
|
|
7611
7880
|
return runtimeState2().supervisor.pendingApprovals.length > 0;
|
|
7612
7881
|
},
|
|
7613
7882
|
get fallback() {
|
|
7614
|
-
return _tmpl$
|
|
7883
|
+
return _tmpl$30$1();
|
|
7615
7884
|
},
|
|
7616
7885
|
get children() {
|
|
7617
|
-
return [_tmpl$5$
|
|
7886
|
+
return [_tmpl$5$4(), createComponent(For, {
|
|
7618
7887
|
get each() {
|
|
7619
7888
|
return runtimeState2().supervisor.pendingApprovals;
|
|
7620
7889
|
},
|
|
7621
7890
|
children: (approval) => (() => {
|
|
7622
|
-
var _el$
|
|
7623
|
-
insert(_el$
|
|
7624
|
-
insert(_el$
|
|
7625
|
-
insert(_el$
|
|
7626
|
-
_el$
|
|
7627
|
-
_el$
|
|
7628
|
-
return _el$
|
|
7891
|
+
var _el$142 = _tmpl$31$1(), _el$143 = _el$142.firstChild, _el$144 = _el$143.nextSibling, _el$145 = _el$144.nextSibling, _el$146 = _el$145.nextSibling, _el$147 = _el$146.nextSibling, _el$148 = _el$147.firstChild, _el$149 = _el$148.nextSibling;
|
|
7892
|
+
insert(_el$144, () => approval.name);
|
|
7893
|
+
insert(_el$145, () => approval.argsSummary);
|
|
7894
|
+
insert(_el$146, () => approval.reason);
|
|
7895
|
+
_el$148.$$click = () => void resolveApproval(approval.id, true);
|
|
7896
|
+
_el$149.$$click = () => void resolveApproval(approval.id, false);
|
|
7897
|
+
return _el$142;
|
|
7629
7898
|
})()
|
|
7630
7899
|
})];
|
|
7631
7900
|
}
|
|
@@ -7635,7 +7904,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7635
7904
|
return recentActions().length > 0;
|
|
7636
7905
|
},
|
|
7637
7906
|
get children() {
|
|
7638
|
-
var _el$40 = _tmpl$6$
|
|
7907
|
+
var _el$40 = _tmpl$6$4();
|
|
7639
7908
|
_el$40.$$click = () => setActionsExpanded((current) => !current);
|
|
7640
7909
|
insert(_el$40, (() => {
|
|
7641
7910
|
var _c$ = memo(() => !!actionsExpanded());
|
|
@@ -7649,7 +7918,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7649
7918
|
return recentActions().length > 0;
|
|
7650
7919
|
},
|
|
7651
7920
|
get fallback() {
|
|
7652
|
-
return _tmpl$
|
|
7921
|
+
return _tmpl$32$1();
|
|
7653
7922
|
},
|
|
7654
7923
|
get children() {
|
|
7655
7924
|
return createComponent(Show, {
|
|
@@ -7657,7 +7926,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7657
7926
|
return actionsExpanded();
|
|
7658
7927
|
},
|
|
7659
7928
|
get fallback() {
|
|
7660
|
-
return _tmpl$
|
|
7929
|
+
return _tmpl$33$1();
|
|
7661
7930
|
},
|
|
7662
7931
|
get children() {
|
|
7663
7932
|
return createComponent(For, {
|
|
@@ -7665,32 +7934,32 @@ ${contextBlock}` : contextBlock);
|
|
|
7665
7934
|
return recentActions();
|
|
7666
7935
|
},
|
|
7667
7936
|
children: (action) => (() => {
|
|
7668
|
-
var _el$
|
|
7669
|
-
insert(_el$
|
|
7670
|
-
insert(_el$
|
|
7671
|
-
insert(_el$
|
|
7672
|
-
insert(_el$
|
|
7937
|
+
var _el$152 = _tmpl$36$1(), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$155 = _el$154.nextSibling, _el$156 = _el$153.nextSibling;
|
|
7938
|
+
insert(_el$154, () => action.name);
|
|
7939
|
+
insert(_el$155, () => action.status);
|
|
7940
|
+
insert(_el$156, () => action.argsSummary);
|
|
7941
|
+
insert(_el$152, createComponent(Show, {
|
|
7673
7942
|
get when() {
|
|
7674
7943
|
return action.resultSummary;
|
|
7675
7944
|
},
|
|
7676
7945
|
get children() {
|
|
7677
|
-
var _el$
|
|
7678
|
-
insert(_el$
|
|
7679
|
-
return _el$
|
|
7946
|
+
var _el$157 = _tmpl$34$1();
|
|
7947
|
+
insert(_el$157, () => action.resultSummary);
|
|
7948
|
+
return _el$157;
|
|
7680
7949
|
}
|
|
7681
7950
|
}), null);
|
|
7682
|
-
insert(_el$
|
|
7951
|
+
insert(_el$152, createComponent(Show, {
|
|
7683
7952
|
get when() {
|
|
7684
7953
|
return action.error;
|
|
7685
7954
|
},
|
|
7686
7955
|
get children() {
|
|
7687
|
-
var _el$
|
|
7688
|
-
insert(_el$
|
|
7689
|
-
return _el$
|
|
7956
|
+
var _el$158 = _tmpl$35$1();
|
|
7957
|
+
insert(_el$158, () => action.error);
|
|
7958
|
+
return _el$158;
|
|
7690
7959
|
}
|
|
7691
7960
|
}), null);
|
|
7692
|
-
createRenderEffect(() => className(_el$
|
|
7693
|
-
return _el$
|
|
7961
|
+
createRenderEffect(() => className(_el$155, `agent-action-status ${action.status}`));
|
|
7962
|
+
return _el$152;
|
|
7694
7963
|
})()
|
|
7695
7964
|
});
|
|
7696
7965
|
}
|
|
@@ -7700,13 +7969,13 @@ ${contextBlock}` : contextBlock);
|
|
|
7700
7969
|
createRenderEffect(() => _el$31.classList.toggle("paused", !!runtimeState2().supervisor.paused));
|
|
7701
7970
|
return _el$26;
|
|
7702
7971
|
}
|
|
7703
|
-
}), _el$
|
|
7972
|
+
}), _el$124);
|
|
7704
7973
|
insert(_el$25, createComponent(Show, {
|
|
7705
7974
|
get when() {
|
|
7706
7975
|
return sidebarTab() === "bookmarks";
|
|
7707
7976
|
},
|
|
7708
7977
|
get children() {
|
|
7709
|
-
var _el$41 = _tmpl$
|
|
7978
|
+
var _el$41 = _tmpl$10$2(), _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$43.firstChild, _el$45 = _el$44.nextSibling, _el$47 = _el$42.nextSibling, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling, _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling, _el$53 = _el$52.nextSibling, _el$55 = _el$48.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$56.firstChild, _el$58 = _el$57.nextSibling, _el$64 = _el$55.nextSibling, _el$65 = _el$64.firstChild, _el$66 = _el$65.firstChild, _el$67 = _el$66.nextSibling, _el$78 = _el$64.nextSibling, _el$79 = _el$78.firstChild, _el$80 = _el$79.firstChild, _el$81 = _el$80.nextSibling, _el$82 = _el$79.nextSibling, _el$83 = _el$78.nextSibling;
|
|
7710
7979
|
insert(_el$45, (() => {
|
|
7711
7980
|
var _c$2 = memo(() => !!normalizedBookmarkSearch());
|
|
7712
7981
|
return () => _c$2() ? `${bookmarkMatchCount()} matches for "${bookmarkSearchQuery().trim()}"` : `${bookmarksState2().bookmarks.length} saved across ${bookmarkFolders().length} folders`;
|
|
@@ -7716,7 +7985,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7716
7985
|
return currentTabSaved();
|
|
7717
7986
|
},
|
|
7718
7987
|
get children() {
|
|
7719
|
-
return _tmpl$8$
|
|
7988
|
+
return _tmpl$8$3();
|
|
7720
7989
|
}
|
|
7721
7990
|
}), null);
|
|
7722
7991
|
_el$47.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
|
|
@@ -7733,16 +8002,47 @@ ${contextBlock}` : contextBlock);
|
|
|
7733
8002
|
return _el$54;
|
|
7734
8003
|
}
|
|
7735
8004
|
}), null);
|
|
7736
|
-
_el$56.$$click = () =>
|
|
8005
|
+
_el$56.$$click = () => setBookmarkImportExpanded((current) => !current);
|
|
7737
8006
|
insert(_el$55, createComponent(Show, {
|
|
8007
|
+
get when() {
|
|
8008
|
+
return bookmarkImportExpanded();
|
|
8009
|
+
},
|
|
8010
|
+
get children() {
|
|
8011
|
+
var _el$59 = _tmpl$0$2(), _el$60 = _el$59.firstChild, _el$61 = _el$60.firstChild, _el$62 = _el$61.nextSibling;
|
|
8012
|
+
_el$61.$$click = () => void handleImportBookmarks("html");
|
|
8013
|
+
_el$62.$$click = () => void handleImportBookmarks("json");
|
|
8014
|
+
insert(_el$59, createComponent(Show, {
|
|
8015
|
+
get when() {
|
|
8016
|
+
return bookmarkImportMessage();
|
|
8017
|
+
},
|
|
8018
|
+
get children() {
|
|
8019
|
+
var _el$63 = _tmpl$9$2();
|
|
8020
|
+
insert(_el$63, bookmarkImportMessage);
|
|
8021
|
+
return _el$63;
|
|
8022
|
+
}
|
|
8023
|
+
}), null);
|
|
8024
|
+
createRenderEffect((_p$) => {
|
|
8025
|
+
var _v$ = bookmarkImporting(), _v$2 = bookmarkImporting();
|
|
8026
|
+
_v$ !== _p$.e && (_el$61.disabled = _p$.e = _v$);
|
|
8027
|
+
_v$2 !== _p$.t && (_el$62.disabled = _p$.t = _v$2);
|
|
8028
|
+
return _p$;
|
|
8029
|
+
}, {
|
|
8030
|
+
e: void 0,
|
|
8031
|
+
t: void 0
|
|
8032
|
+
});
|
|
8033
|
+
return _el$59;
|
|
8034
|
+
}
|
|
8035
|
+
}), null);
|
|
8036
|
+
_el$65.$$click = () => setBookmarkSaveExpanded((current) => !current);
|
|
8037
|
+
insert(_el$64, createComponent(Show, {
|
|
7738
8038
|
get when() {
|
|
7739
8039
|
return bookmarkSaveExpanded();
|
|
7740
8040
|
},
|
|
7741
8041
|
get children() {
|
|
7742
|
-
var _el$
|
|
7743
|
-
insert(_el$
|
|
7744
|
-
insert(_el$
|
|
7745
|
-
insert(_el$
|
|
8042
|
+
var _el$68 = _tmpl$1$2(), _el$69 = _el$68.firstChild, _el$70 = _el$69.nextSibling, _el$71 = _el$70.nextSibling, _el$72 = _el$71.firstChild, _el$73 = _el$71.nextSibling, _el$74 = _el$73.nextSibling, _el$75 = _el$74.nextSibling, _el$76 = _el$75.nextSibling, _el$77 = _el$76.nextSibling;
|
|
8043
|
+
insert(_el$69, () => currentTab()?.title || "No active page");
|
|
8044
|
+
insert(_el$70, () => currentTab()?.url || "Open a page to save it here.");
|
|
8045
|
+
insert(_el$71, createComponent(DropdownSelect, {
|
|
7746
8046
|
"class": "bookmark-select",
|
|
7747
8047
|
get value() {
|
|
7748
8048
|
return selectedFolderId();
|
|
@@ -7752,37 +8052,37 @@ ${contextBlock}` : contextBlock);
|
|
|
7752
8052
|
},
|
|
7753
8053
|
ariaLabel: "Bookmark folder",
|
|
7754
8054
|
onChange: (value) => setSelectedFolderId(value)
|
|
7755
|
-
}), _el$
|
|
7756
|
-
_el$
|
|
7757
|
-
_el$
|
|
7758
|
-
_el$
|
|
7759
|
-
_el$
|
|
7760
|
-
_el$
|
|
7761
|
-
_el$
|
|
7762
|
-
createRenderEffect(() => _el$
|
|
7763
|
-
createRenderEffect(() => _el$
|
|
7764
|
-
createRenderEffect(() => _el$
|
|
7765
|
-
createRenderEffect(() => _el$
|
|
7766
|
-
createRenderEffect(() => _el$
|
|
7767
|
-
createRenderEffect(() => _el$
|
|
7768
|
-
return _el$
|
|
8055
|
+
}), _el$72);
|
|
8056
|
+
_el$72.$$click = () => void handleSaveBookmark();
|
|
8057
|
+
_el$73.$$input = (e) => setBookmarkNote(e.currentTarget.value);
|
|
8058
|
+
_el$74.$$input = (e) => setBookmarkIntent(e.currentTarget.value);
|
|
8059
|
+
_el$75.$$input = (e) => setBookmarkExpectedContent(e.currentTarget.value);
|
|
8060
|
+
_el$76.$$input = (e) => setBookmarkKeyFields(e.currentTarget.value);
|
|
8061
|
+
_el$77.$$input = (e) => setBookmarkAgentHints(e.currentTarget.value);
|
|
8062
|
+
createRenderEffect(() => _el$72.disabled = !currentTab()?.url);
|
|
8063
|
+
createRenderEffect(() => _el$73.value = bookmarkNote());
|
|
8064
|
+
createRenderEffect(() => _el$74.value = bookmarkIntent());
|
|
8065
|
+
createRenderEffect(() => _el$75.value = bookmarkExpectedContent());
|
|
8066
|
+
createRenderEffect(() => _el$76.value = bookmarkKeyFields());
|
|
8067
|
+
createRenderEffect(() => _el$77.value = bookmarkAgentHints());
|
|
8068
|
+
return _el$68;
|
|
7769
8069
|
}
|
|
7770
8070
|
}), null);
|
|
7771
|
-
_el$
|
|
7772
|
-
_el$
|
|
7773
|
-
_el$
|
|
7774
|
-
insert(_el$
|
|
8071
|
+
_el$78.addEventListener("submit", handleCreateFolder);
|
|
8072
|
+
_el$80.$$input = (e) => setNewFolderName(e.currentTarget.value);
|
|
8073
|
+
_el$81.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
|
|
8074
|
+
insert(_el$83, createComponent(Show, {
|
|
7775
8075
|
get when() {
|
|
7776
8076
|
return filteredGroupedBookmarks().length > 0;
|
|
7777
8077
|
},
|
|
7778
8078
|
get fallback() {
|
|
7779
8079
|
return (() => {
|
|
7780
|
-
var _el$
|
|
7781
|
-
insert(_el$
|
|
8080
|
+
var _el$159 = _tmpl$37$1();
|
|
8081
|
+
insert(_el$159, (() => {
|
|
7782
8082
|
var _c$5 = memo(() => !!normalizedBookmarkSearch());
|
|
7783
8083
|
return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
|
|
7784
8084
|
})());
|
|
7785
|
-
return _el$
|
|
8085
|
+
return _el$159;
|
|
7786
8086
|
})();
|
|
7787
8087
|
},
|
|
7788
8088
|
get children() {
|
|
@@ -7791,100 +8091,100 @@ ${contextBlock}` : contextBlock);
|
|
|
7791
8091
|
return filteredGroupedBookmarks();
|
|
7792
8092
|
},
|
|
7793
8093
|
children: (folder) => (() => {
|
|
7794
|
-
var _el$
|
|
7795
|
-
_el$
|
|
8094
|
+
var _el$160 = _tmpl$44$1(), _el$161 = _el$160.firstChild, _el$162 = _el$161.firstChild, _el$163 = _el$162.firstChild, _el$164 = _el$163.nextSibling, _el$165 = _el$164.firstChild, _el$166 = _el$165.nextSibling, _el$167 = _el$166.firstChild;
|
|
8095
|
+
_el$161.$$keydown = (e) => {
|
|
7796
8096
|
if (e.key === "Enter" || e.key === " ") {
|
|
7797
8097
|
e.preventDefault();
|
|
7798
8098
|
toggleFolderExpanded(folder.id);
|
|
7799
8099
|
}
|
|
7800
8100
|
};
|
|
7801
|
-
_el$
|
|
7802
|
-
insert(_el$
|
|
7803
|
-
insert(_el$
|
|
7804
|
-
insert(_el$
|
|
8101
|
+
_el$161.$$click = () => toggleFolderExpanded(folder.id);
|
|
8102
|
+
insert(_el$165, () => folder.name);
|
|
8103
|
+
insert(_el$166, () => folder.items.length, _el$167);
|
|
8104
|
+
insert(_el$164, createComponent(Show, {
|
|
7805
8105
|
get when() {
|
|
7806
8106
|
return folder.summary;
|
|
7807
8107
|
},
|
|
7808
8108
|
get children() {
|
|
7809
|
-
var _el$
|
|
7810
|
-
insert(_el$
|
|
7811
|
-
return _el$
|
|
8109
|
+
var _el$168 = _tmpl$38$1();
|
|
8110
|
+
insert(_el$168, () => folder.summary);
|
|
8111
|
+
return _el$168;
|
|
7812
8112
|
}
|
|
7813
8113
|
}), null);
|
|
7814
|
-
insert(_el$
|
|
8114
|
+
insert(_el$161, createComponent(Show, {
|
|
7815
8115
|
get when() {
|
|
7816
8116
|
return folder.id !== UNSORTED_FOLDER.id;
|
|
7817
8117
|
},
|
|
7818
8118
|
get children() {
|
|
7819
|
-
var _el$
|
|
7820
|
-
_el$
|
|
8119
|
+
var _el$169 = _tmpl$39$1(), _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling;
|
|
8120
|
+
_el$170.$$click = (e) => {
|
|
7821
8121
|
e.stopPropagation();
|
|
7822
8122
|
setEditingFolderId(folder.id);
|
|
7823
8123
|
setEditingFolderName(folder.name);
|
|
7824
8124
|
setEditingFolderSummary(folder.summary || "");
|
|
7825
8125
|
};
|
|
7826
|
-
_el$
|
|
8126
|
+
_el$171.$$click = (e) => {
|
|
7827
8127
|
e.stopPropagation();
|
|
7828
8128
|
setDeletingFolderId(folder.id);
|
|
7829
8129
|
};
|
|
7830
|
-
return _el$
|
|
8130
|
+
return _el$169;
|
|
7831
8131
|
}
|
|
7832
8132
|
}), null);
|
|
7833
|
-
insert(_el$
|
|
8133
|
+
insert(_el$160, createComponent(Show, {
|
|
7834
8134
|
get when() {
|
|
7835
8135
|
return deletingFolderId() === folder.id;
|
|
7836
8136
|
},
|
|
7837
8137
|
get children() {
|
|
7838
|
-
var _el$
|
|
7839
|
-
_el$
|
|
7840
|
-
var _el$
|
|
7841
|
-
insert(_el$
|
|
7842
|
-
insert(_el$
|
|
8138
|
+
var _el$172 = _tmpl$41$1(), _el$173 = _el$172.firstChild, _el$174 = _el$173.firstChild, _el$176 = _el$174.nextSibling;
|
|
8139
|
+
_el$176.nextSibling;
|
|
8140
|
+
var _el$177 = _el$173.nextSibling, _el$179 = _el$177.firstChild, _el$180 = _el$179.nextSibling;
|
|
8141
|
+
insert(_el$173, () => folder.name, _el$176);
|
|
8142
|
+
insert(_el$173, (() => {
|
|
7843
8143
|
var _c$6 = memo(() => folder.items.length > 0);
|
|
7844
8144
|
return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
|
|
7845
8145
|
})(), null);
|
|
7846
|
-
insert(_el$
|
|
8146
|
+
insert(_el$177, createComponent(Show, {
|
|
7847
8147
|
get when() {
|
|
7848
8148
|
return folder.items.length > 0;
|
|
7849
8149
|
},
|
|
7850
8150
|
get children() {
|
|
7851
|
-
var _el$
|
|
7852
|
-
_el$
|
|
7853
|
-
return _el$
|
|
8151
|
+
var _el$178 = _tmpl$40$1();
|
|
8152
|
+
_el$178.$$click = () => void handleRemoveFolder(folder.id, false);
|
|
8153
|
+
return _el$178;
|
|
7854
8154
|
}
|
|
7855
|
-
}), _el$
|
|
7856
|
-
_el$
|
|
7857
|
-
insert(_el$
|
|
7858
|
-
_el$
|
|
7859
|
-
return _el$
|
|
8155
|
+
}), _el$179);
|
|
8156
|
+
_el$179.$$click = () => void handleRemoveFolder(folder.id, true);
|
|
8157
|
+
insert(_el$179, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
|
|
8158
|
+
_el$180.$$click = () => setDeletingFolderId(null);
|
|
8159
|
+
return _el$172;
|
|
7860
8160
|
}
|
|
7861
8161
|
}), null);
|
|
7862
|
-
insert(_el$
|
|
8162
|
+
insert(_el$160, createComponent(Show, {
|
|
7863
8163
|
get when() {
|
|
7864
8164
|
return editingFolderId() === folder.id;
|
|
7865
8165
|
},
|
|
7866
8166
|
get children() {
|
|
7867
|
-
var _el$
|
|
7868
|
-
_el$
|
|
7869
|
-
_el$
|
|
7870
|
-
_el$
|
|
7871
|
-
_el$
|
|
8167
|
+
var _el$181 = _tmpl$42$1(), _el$182 = _el$181.firstChild, _el$183 = _el$182.firstChild, _el$184 = _el$183.nextSibling, _el$185 = _el$182.nextSibling, _el$186 = _el$185.nextSibling;
|
|
8168
|
+
_el$183.$$input = (e) => setEditingFolderName(e.currentTarget.value);
|
|
8169
|
+
_el$184.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
|
|
8170
|
+
_el$185.$$click = () => void handleRenameFolder(folder.id);
|
|
8171
|
+
_el$186.$$click = () => {
|
|
7872
8172
|
setEditingFolderId(null);
|
|
7873
8173
|
setEditingFolderName("");
|
|
7874
8174
|
setEditingFolderSummary("");
|
|
7875
8175
|
};
|
|
7876
|
-
createRenderEffect(() => _el$
|
|
7877
|
-
createRenderEffect(() => _el$
|
|
7878
|
-
createRenderEffect(() => _el$
|
|
7879
|
-
return _el$
|
|
8176
|
+
createRenderEffect(() => _el$185.disabled = !editingFolderName().trim());
|
|
8177
|
+
createRenderEffect(() => _el$183.value = editingFolderName());
|
|
8178
|
+
createRenderEffect(() => _el$184.value = editingFolderSummary());
|
|
8179
|
+
return _el$181;
|
|
7880
8180
|
}
|
|
7881
8181
|
}), null);
|
|
7882
|
-
insert(_el$
|
|
8182
|
+
insert(_el$160, createComponent(Show, {
|
|
7883
8183
|
get when() {
|
|
7884
8184
|
return isFolderExpanded(folder.id);
|
|
7885
8185
|
},
|
|
7886
8186
|
get fallback() {
|
|
7887
|
-
return _tmpl$
|
|
8187
|
+
return _tmpl$45$1();
|
|
7888
8188
|
},
|
|
7889
8189
|
get children() {
|
|
7890
8190
|
return createComponent(Show, {
|
|
@@ -7892,209 +8192,211 @@ ${contextBlock}` : contextBlock);
|
|
|
7892
8192
|
return folder.items.length > 0;
|
|
7893
8193
|
},
|
|
7894
8194
|
get fallback() {
|
|
7895
|
-
return _tmpl$
|
|
8195
|
+
return _tmpl$46$1();
|
|
7896
8196
|
},
|
|
7897
8197
|
get children() {
|
|
7898
|
-
var _el$
|
|
7899
|
-
insert(_el$
|
|
8198
|
+
var _el$187 = _tmpl$43$1();
|
|
8199
|
+
insert(_el$187, createComponent(For, {
|
|
7900
8200
|
get each() {
|
|
7901
8201
|
return folder.items;
|
|
7902
8202
|
},
|
|
7903
8203
|
children: (bookmark) => (() => {
|
|
7904
|
-
var _el$
|
|
7905
|
-
_el$
|
|
7906
|
-
insert(_el$
|
|
7907
|
-
insert(_el$
|
|
7908
|
-
insert(_el$
|
|
8204
|
+
var _el$190 = _tmpl$53(), _el$191 = _el$190.firstChild, _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling, _el$218 = _el$191.nextSibling, _el$219 = _el$218.firstChild, _el$220 = _el$219.nextSibling, _el$221 = _el$220.nextSibling;
|
|
8205
|
+
_el$191.$$click = () => void createTab(bookmark.url);
|
|
8206
|
+
insert(_el$192, () => bookmark.title || bookmark.url);
|
|
8207
|
+
insert(_el$193, () => bookmark.url);
|
|
8208
|
+
insert(_el$190, createComponent(Show, {
|
|
7909
8209
|
get when() {
|
|
7910
8210
|
return bookmark.note;
|
|
7911
8211
|
},
|
|
7912
8212
|
get children() {
|
|
7913
|
-
var _el$
|
|
7914
|
-
insert(_el$
|
|
7915
|
-
return _el$
|
|
8213
|
+
var _el$194 = _tmpl$47$1();
|
|
8214
|
+
insert(_el$194, () => bookmark.note);
|
|
8215
|
+
return _el$194;
|
|
7916
8216
|
}
|
|
7917
|
-
}), _el$
|
|
7918
|
-
insert(_el$
|
|
8217
|
+
}), _el$218);
|
|
8218
|
+
insert(_el$190, createComponent(Show, {
|
|
7919
8219
|
get when() {
|
|
7920
8220
|
return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
|
|
7921
8221
|
},
|
|
7922
8222
|
get children() {
|
|
7923
|
-
var _el$
|
|
7924
|
-
insert(_el$
|
|
8223
|
+
var _el$195 = _tmpl$47$1();
|
|
8224
|
+
insert(_el$195, createComponent(Show, {
|
|
7925
8225
|
get when() {
|
|
7926
8226
|
return bookmark.intent;
|
|
7927
8227
|
},
|
|
7928
8228
|
get children() {
|
|
7929
|
-
var _el$
|
|
7930
|
-
_el$
|
|
7931
|
-
insert(_el$
|
|
7932
|
-
return _el$
|
|
8229
|
+
var _el$196 = _tmpl$48(), _el$197 = _el$196.firstChild;
|
|
8230
|
+
_el$197.nextSibling;
|
|
8231
|
+
insert(_el$196, () => bookmark.intent, null);
|
|
8232
|
+
return _el$196;
|
|
7933
8233
|
}
|
|
7934
8234
|
}), null);
|
|
7935
|
-
insert(_el$
|
|
8235
|
+
insert(_el$195, createComponent(Show, {
|
|
7936
8236
|
get when() {
|
|
7937
8237
|
return bookmark.expectedContent;
|
|
7938
8238
|
},
|
|
7939
8239
|
get children() {
|
|
7940
|
-
var _el$
|
|
7941
|
-
_el$
|
|
7942
|
-
insert(_el$
|
|
7943
|
-
return _el$
|
|
8240
|
+
var _el$199 = _tmpl$49(), _el$200 = _el$199.firstChild;
|
|
8241
|
+
_el$200.nextSibling;
|
|
8242
|
+
insert(_el$199, () => bookmark.expectedContent, null);
|
|
8243
|
+
return _el$199;
|
|
7944
8244
|
}
|
|
7945
8245
|
}), null);
|
|
7946
|
-
insert(_el$
|
|
8246
|
+
insert(_el$195, createComponent(Show, {
|
|
7947
8247
|
get when() {
|
|
7948
8248
|
return (bookmark.keyFields?.length || 0) > 0;
|
|
7949
8249
|
},
|
|
7950
8250
|
get children() {
|
|
7951
|
-
var _el$
|
|
7952
|
-
_el$
|
|
7953
|
-
insert(_el$
|
|
7954
|
-
return _el$
|
|
8251
|
+
var _el$202 = _tmpl$50(), _el$203 = _el$202.firstChild;
|
|
8252
|
+
_el$203.nextSibling;
|
|
8253
|
+
insert(_el$202, () => bookmark.keyFields?.join(", "), null);
|
|
8254
|
+
return _el$202;
|
|
7955
8255
|
}
|
|
7956
8256
|
}), null);
|
|
7957
|
-
insert(_el$
|
|
8257
|
+
insert(_el$195, createComponent(Show, {
|
|
7958
8258
|
get when() {
|
|
7959
8259
|
return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
|
|
7960
8260
|
},
|
|
7961
8261
|
get children() {
|
|
7962
|
-
var _el$
|
|
7963
|
-
_el$
|
|
7964
|
-
insert(_el$
|
|
7965
|
-
return _el$
|
|
8262
|
+
var _el$205 = _tmpl$51(), _el$206 = _el$205.firstChild;
|
|
8263
|
+
_el$206.nextSibling;
|
|
8264
|
+
insert(_el$205, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
|
|
8265
|
+
return _el$205;
|
|
7966
8266
|
}
|
|
7967
8267
|
}), null);
|
|
7968
|
-
return _el$
|
|
8268
|
+
return _el$195;
|
|
7969
8269
|
}
|
|
7970
|
-
}), _el$
|
|
7971
|
-
insert(_el$
|
|
8270
|
+
}), _el$218);
|
|
8271
|
+
insert(_el$190, createComponent(Show, {
|
|
7972
8272
|
get when() {
|
|
7973
8273
|
return editingBookmarkId() === bookmark.id;
|
|
7974
8274
|
},
|
|
7975
8275
|
get children() {
|
|
7976
|
-
var _el$
|
|
7977
|
-
_el$
|
|
7978
|
-
_el$
|
|
7979
|
-
_el$
|
|
7980
|
-
_el$
|
|
7981
|
-
_el$
|
|
7982
|
-
_el$
|
|
7983
|
-
_el$
|
|
7984
|
-
_el$
|
|
7985
|
-
createRenderEffect(() => _el$
|
|
7986
|
-
createRenderEffect(() => _el$
|
|
7987
|
-
createRenderEffect(() => _el$
|
|
7988
|
-
createRenderEffect(() => _el$
|
|
7989
|
-
createRenderEffect(() => _el$
|
|
7990
|
-
createRenderEffect(() => _el$
|
|
7991
|
-
return _el$
|
|
8276
|
+
var _el$208 = _tmpl$52(), _el$209 = _el$208.firstChild, _el$210 = _el$209.nextSibling, _el$211 = _el$210.nextSibling, _el$212 = _el$211.nextSibling, _el$213 = _el$212.nextSibling, _el$214 = _el$213.nextSibling, _el$215 = _el$214.nextSibling, _el$216 = _el$215.firstChild, _el$217 = _el$216.nextSibling;
|
|
8277
|
+
_el$209.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
|
|
8278
|
+
_el$210.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
|
|
8279
|
+
_el$211.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
|
|
8280
|
+
_el$212.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
|
|
8281
|
+
_el$213.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
|
|
8282
|
+
_el$214.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
|
|
8283
|
+
_el$216.$$click = () => void handleUpdateBookmark(bookmark.id);
|
|
8284
|
+
_el$217.$$click = resetBookmarkEditor;
|
|
8285
|
+
createRenderEffect(() => _el$209.value = editingBookmarkTitle());
|
|
8286
|
+
createRenderEffect(() => _el$210.value = editingBookmarkNote());
|
|
8287
|
+
createRenderEffect(() => _el$211.value = editingBookmarkIntent());
|
|
8288
|
+
createRenderEffect(() => _el$212.value = editingBookmarkExpectedContent());
|
|
8289
|
+
createRenderEffect(() => _el$213.value = editingBookmarkKeyFields());
|
|
8290
|
+
createRenderEffect(() => _el$214.value = editingBookmarkAgentHints());
|
|
8291
|
+
return _el$208;
|
|
7992
8292
|
}
|
|
7993
|
-
}), _el$
|
|
7994
|
-
insert(_el$
|
|
7995
|
-
_el$
|
|
7996
|
-
insert(_el$
|
|
7997
|
-
_el$
|
|
8293
|
+
}), _el$218);
|
|
8294
|
+
insert(_el$219, () => formatBookmarkDate(bookmark.savedAt));
|
|
8295
|
+
_el$220.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
|
|
8296
|
+
insert(_el$220, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
|
|
8297
|
+
_el$221.$$click = () => {
|
|
7998
8298
|
if (editingBookmarkId() === bookmark.id) {
|
|
7999
8299
|
resetBookmarkEditor();
|
|
8000
8300
|
}
|
|
8001
8301
|
void removeBookmark(bookmark.id);
|
|
8002
8302
|
};
|
|
8003
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8004
|
-
return _el$
|
|
8303
|
+
createRenderEffect(() => setAttribute(_el$190, "data-bookmark-id", bookmark.id));
|
|
8304
|
+
return _el$190;
|
|
8005
8305
|
})()
|
|
8006
8306
|
}));
|
|
8007
|
-
return _el$
|
|
8307
|
+
return _el$187;
|
|
8008
8308
|
}
|
|
8009
8309
|
});
|
|
8010
8310
|
}
|
|
8011
8311
|
}), null);
|
|
8012
|
-
createRenderEffect(() => _el$
|
|
8013
|
-
return _el$
|
|
8312
|
+
createRenderEffect(() => _el$163.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
|
|
8313
|
+
return _el$160;
|
|
8014
8314
|
})()
|
|
8015
8315
|
});
|
|
8016
8316
|
}
|
|
8017
8317
|
}));
|
|
8018
8318
|
createRenderEffect((_p$) => {
|
|
8019
|
-
var _v$ = bookmarkExporting(), _v$
|
|
8020
|
-
_v$ !== _p$.e && (_el$51.disabled = _p$.e = _v$);
|
|
8021
|
-
_v$
|
|
8022
|
-
_v$
|
|
8023
|
-
_v$
|
|
8024
|
-
_v$
|
|
8319
|
+
var _v$3 = bookmarkExporting(), _v$4 = bookmarkExporting(), _v$5 = bookmarkExporting(), _v$6 = !!bookmarkImportExpanded(), _v$7 = !!bookmarkSaveExpanded(), _v$8 = !newFolderName().trim();
|
|
8320
|
+
_v$3 !== _p$.e && (_el$51.disabled = _p$.e = _v$3);
|
|
8321
|
+
_v$4 !== _p$.t && (_el$52.disabled = _p$.t = _v$4);
|
|
8322
|
+
_v$5 !== _p$.a && (_el$53.disabled = _p$.a = _v$5);
|
|
8323
|
+
_v$6 !== _p$.o && _el$58.classList.toggle("expanded", _p$.o = _v$6);
|
|
8324
|
+
_v$7 !== _p$.i && _el$67.classList.toggle("expanded", _p$.i = _v$7);
|
|
8325
|
+
_v$8 !== _p$.n && (_el$82.disabled = _p$.n = _v$8);
|
|
8025
8326
|
return _p$;
|
|
8026
8327
|
}, {
|
|
8027
8328
|
e: void 0,
|
|
8028
8329
|
t: void 0,
|
|
8029
8330
|
a: void 0,
|
|
8030
8331
|
o: void 0,
|
|
8031
|
-
i: void 0
|
|
8332
|
+
i: void 0,
|
|
8333
|
+
n: void 0
|
|
8032
8334
|
});
|
|
8033
8335
|
createRenderEffect(() => _el$47.value = bookmarkSearchQuery());
|
|
8034
|
-
createRenderEffect(() => _el$
|
|
8035
|
-
createRenderEffect(() => _el$
|
|
8336
|
+
createRenderEffect(() => _el$80.value = newFolderName());
|
|
8337
|
+
createRenderEffect(() => _el$81.value = newFolderSummary());
|
|
8036
8338
|
return _el$41;
|
|
8037
8339
|
}
|
|
8038
|
-
}), _el$
|
|
8340
|
+
}), _el$124);
|
|
8039
8341
|
insert(_el$25, createComponent(Show, {
|
|
8040
8342
|
get when() {
|
|
8041
8343
|
return sidebarTab() === "checkpoints";
|
|
8042
8344
|
},
|
|
8043
8345
|
get children() {
|
|
8044
|
-
var _el$
|
|
8045
|
-
_el$
|
|
8046
|
-
insert(_el$
|
|
8346
|
+
var _el$84 = _tmpl$12$2(), _el$85 = _el$84.firstChild, _el$86 = _el$85.firstChild, _el$87 = _el$86.firstChild, _el$88 = _el$87.nextSibling, _el$89 = _el$85.nextSibling, _el$90 = _el$89.firstChild, _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling, _el$93 = _el$92.nextSibling;
|
|
8347
|
+
_el$90.nextSibling;
|
|
8348
|
+
insert(_el$88, (() => {
|
|
8047
8349
|
var _c$3 = memo(() => recentCheckpoints().length > 0);
|
|
8048
8350
|
return () => _c$3() ? `${recentCheckpoints().length} saved snapshots` : "Save and restore session snapshots";
|
|
8049
8351
|
})());
|
|
8050
|
-
_el$
|
|
8051
|
-
_el$
|
|
8052
|
-
_el$
|
|
8352
|
+
_el$91.$$input = (e) => setCheckpointName(e.currentTarget.value);
|
|
8353
|
+
_el$92.$$input = (e) => setCheckpointNote(e.currentTarget.value);
|
|
8354
|
+
_el$93.$$click = async () => {
|
|
8053
8355
|
const name = checkpointName().trim();
|
|
8054
8356
|
await createCheckpoint(name || void 0, checkpointNote() || void 0);
|
|
8055
8357
|
setCheckpointName("");
|
|
8056
8358
|
setCheckpointNote("");
|
|
8057
8359
|
};
|
|
8058
|
-
insert(_el$
|
|
8360
|
+
insert(_el$89, createComponent(Show, {
|
|
8059
8361
|
get when() {
|
|
8060
8362
|
return recentCheckpoints().length > 0;
|
|
8061
8363
|
},
|
|
8062
8364
|
get fallback() {
|
|
8063
|
-
return _tmpl$
|
|
8365
|
+
return _tmpl$54();
|
|
8064
8366
|
},
|
|
8065
8367
|
get children() {
|
|
8066
|
-
var _el$
|
|
8067
|
-
insert(_el$
|
|
8368
|
+
var _el$95 = _tmpl$11$2();
|
|
8369
|
+
insert(_el$95, createComponent(For, {
|
|
8068
8370
|
get each() {
|
|
8069
8371
|
return recentCheckpoints();
|
|
8070
8372
|
},
|
|
8071
8373
|
children: (checkpoint, i) => (() => {
|
|
8072
|
-
var _el$
|
|
8073
|
-
insert(_el$
|
|
8374
|
+
var _el$223 = _tmpl$56(), _el$224 = _el$223.firstChild, _el$225 = _el$224.firstChild, _el$227 = _el$224.nextSibling, _el$228 = _el$227.firstChild, _el$229 = _el$228.nextSibling, _el$230 = _el$229.nextSibling, _el$231 = _el$230.nextSibling;
|
|
8375
|
+
insert(_el$224, createComponent(Show, {
|
|
8074
8376
|
get when() {
|
|
8075
8377
|
return i() < recentCheckpoints().length - 1;
|
|
8076
8378
|
},
|
|
8077
8379
|
get children() {
|
|
8078
|
-
return _tmpl$
|
|
8380
|
+
return _tmpl$55();
|
|
8079
8381
|
}
|
|
8080
8382
|
}), null);
|
|
8081
|
-
insert(_el$
|
|
8082
|
-
insert(_el$
|
|
8083
|
-
_el$
|
|
8084
|
-
_el$
|
|
8085
|
-
createRenderEffect(() => _el$
|
|
8086
|
-
createRenderEffect(() => _el$
|
|
8087
|
-
return _el$
|
|
8383
|
+
insert(_el$228, () => checkpoint.name);
|
|
8384
|
+
insert(_el$229, () => new Date(checkpoint.createdAt).toLocaleString());
|
|
8385
|
+
_el$230.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
|
|
8386
|
+
_el$231.$$click = () => void restoreCheckpoint(checkpoint.id);
|
|
8387
|
+
createRenderEffect(() => _el$225.classList.toggle("latest", !!(i() === 0)));
|
|
8388
|
+
createRenderEffect(() => _el$230.value = checkpoint.note || "");
|
|
8389
|
+
return _el$223;
|
|
8088
8390
|
})()
|
|
8089
8391
|
}));
|
|
8090
|
-
return _el$
|
|
8392
|
+
return _el$95;
|
|
8091
8393
|
}
|
|
8092
8394
|
}), null);
|
|
8093
|
-
createRenderEffect(() => _el$
|
|
8094
|
-
createRenderEffect(() => _el$
|
|
8095
|
-
return _el$
|
|
8395
|
+
createRenderEffect(() => _el$91.value = checkpointName());
|
|
8396
|
+
createRenderEffect(() => _el$92.value = checkpointNote());
|
|
8397
|
+
return _el$84;
|
|
8096
8398
|
}
|
|
8097
|
-
}), _el$
|
|
8399
|
+
}), _el$124);
|
|
8098
8400
|
insert(_el$25, createComponent(Show, {
|
|
8099
8401
|
get when() {
|
|
8100
8402
|
return sidebarTab() === "automation";
|
|
@@ -8104,67 +8406,79 @@ ${contextBlock}` : contextBlock);
|
|
|
8104
8406
|
onRun: () => setSidebarTab("supervisor")
|
|
8105
8407
|
});
|
|
8106
8408
|
}
|
|
8107
|
-
}), _el$
|
|
8409
|
+
}), _el$124);
|
|
8108
8410
|
insert(_el$25, createComponent(Show, {
|
|
8109
8411
|
get when() {
|
|
8110
8412
|
return sidebarTab() === "history";
|
|
8111
8413
|
},
|
|
8112
8414
|
get children() {
|
|
8113
|
-
var _el$
|
|
8114
|
-
_el$
|
|
8415
|
+
var _el$96 = _tmpl$14$1(), _el$97 = _el$96.firstChild, _el$98 = _el$97.firstChild, _el$99 = _el$98.nextSibling, _el$100 = _el$99.firstChild, _el$101 = _el$100.nextSibling, _el$102 = _el$101.nextSibling, _el$103 = _el$102.nextSibling, _el$104 = _el$97.nextSibling;
|
|
8416
|
+
_el$100.$$click = async () => {
|
|
8115
8417
|
await history.clear();
|
|
8116
8418
|
};
|
|
8117
|
-
|
|
8419
|
+
_el$101.$$click = async () => {
|
|
8420
|
+
const result = await window.vessel.history.exportHtml();
|
|
8421
|
+
if (!result) return;
|
|
8422
|
+
};
|
|
8423
|
+
_el$102.$$click = async () => {
|
|
8424
|
+
const result = await window.vessel.history.exportJson();
|
|
8425
|
+
if (!result) return;
|
|
8426
|
+
};
|
|
8427
|
+
_el$103.$$click = async () => {
|
|
8428
|
+
const result = await window.vessel.history.importFile();
|
|
8429
|
+
if (!result) return;
|
|
8430
|
+
};
|
|
8431
|
+
insert(_el$104, createComponent(For, {
|
|
8118
8432
|
get each() {
|
|
8119
8433
|
return history.historyState().entries;
|
|
8120
8434
|
},
|
|
8121
8435
|
children: (entry) => (() => {
|
|
8122
|
-
var _el$
|
|
8123
|
-
_el$
|
|
8124
|
-
insert(_el$
|
|
8125
|
-
insert(_el$
|
|
8126
|
-
insert(_el$
|
|
8127
|
-
return _el$
|
|
8436
|
+
var _el$232 = _tmpl$57(), _el$233 = _el$232.firstChild, _el$234 = _el$233.nextSibling, _el$235 = _el$234.nextSibling;
|
|
8437
|
+
_el$232.$$click = () => createTab(entry.url);
|
|
8438
|
+
insert(_el$233, () => entry.title || entry.url);
|
|
8439
|
+
insert(_el$234, () => entry.url);
|
|
8440
|
+
insert(_el$235, () => new Date(entry.visitedAt).toLocaleString());
|
|
8441
|
+
return _el$232;
|
|
8128
8442
|
})()
|
|
8129
8443
|
}), null);
|
|
8130
|
-
insert(_el$
|
|
8444
|
+
insert(_el$104, createComponent(Show, {
|
|
8131
8445
|
get when() {
|
|
8132
8446
|
return history.historyState().entries.length === 0;
|
|
8133
8447
|
},
|
|
8134
8448
|
get children() {
|
|
8135
|
-
return _tmpl$
|
|
8449
|
+
return _tmpl$13$1();
|
|
8136
8450
|
}
|
|
8137
8451
|
}), null);
|
|
8138
|
-
return _el$
|
|
8452
|
+
return _el$96;
|
|
8139
8453
|
}
|
|
8140
|
-
}), _el$
|
|
8454
|
+
}), _el$124);
|
|
8141
8455
|
insert(_el$25, createComponent(Show, {
|
|
8142
8456
|
get when() {
|
|
8143
8457
|
return sidebarTab() === "diff";
|
|
8144
8458
|
},
|
|
8145
8459
|
get children() {
|
|
8146
|
-
var _el$
|
|
8147
|
-
insert(_el$
|
|
8148
|
-
insert(_el$
|
|
8460
|
+
var _el$106 = _tmpl$15$1(), _el$107 = _el$106.firstChild, _el$108 = _el$107.firstChild, _el$109 = _el$108.nextSibling;
|
|
8461
|
+
insert(_el$109, () => isPremium() ? "Page change timeline" : "Premium feature");
|
|
8462
|
+
insert(_el$106, createComponent(Show, {
|
|
8149
8463
|
get when() {
|
|
8150
8464
|
return isPremium();
|
|
8151
8465
|
},
|
|
8152
8466
|
get fallback() {
|
|
8153
8467
|
return (() => {
|
|
8154
|
-
var _el$
|
|
8155
|
-
_el$
|
|
8468
|
+
var _el$236 = _tmpl$58(), _el$237 = _el$236.firstChild, _el$238 = _el$237.nextSibling, _el$239 = _el$238.nextSibling, _el$240 = _el$239.firstChild, _el$241 = _el$240.nextSibling;
|
|
8469
|
+
_el$240.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
|
|
8156
8470
|
});
|
|
8157
|
-
_el$
|
|
8158
|
-
return _el$
|
|
8471
|
+
_el$241.$$click = openPremiumDetails;
|
|
8472
|
+
return _el$236;
|
|
8159
8473
|
})();
|
|
8160
8474
|
},
|
|
8161
8475
|
get children() {
|
|
8162
8476
|
return createComponent(PageDiffTimeline, {});
|
|
8163
8477
|
}
|
|
8164
8478
|
}), null);
|
|
8165
|
-
return _el$
|
|
8479
|
+
return _el$106;
|
|
8166
8480
|
}
|
|
8167
|
-
}), _el$
|
|
8481
|
+
}), _el$124);
|
|
8168
8482
|
insert(_el$25, createComponent(Show, {
|
|
8169
8483
|
get when() {
|
|
8170
8484
|
return sidebarTab() === "chat";
|
|
@@ -8175,23 +8489,23 @@ ${contextBlock}` : contextBlock);
|
|
|
8175
8489
|
return !isPremium();
|
|
8176
8490
|
},
|
|
8177
8491
|
get children() {
|
|
8178
|
-
var _el$
|
|
8179
|
-
_el$
|
|
8180
|
-
_el$
|
|
8181
|
-
return _el$
|
|
8492
|
+
var _el$110 = _tmpl$16$1(), _el$111 = _el$110.firstChild, _el$112 = _el$111.nextSibling, _el$113 = _el$112.nextSibling, _el$114 = _el$113.firstChild, _el$115 = _el$114.nextSibling;
|
|
8493
|
+
_el$114.$$click = () => openPremiumCheckout("chat_banner_clicked");
|
|
8494
|
+
_el$115.$$click = openPremiumDetails;
|
|
8495
|
+
return _el$110;
|
|
8182
8496
|
}
|
|
8183
8497
|
}), createComponent(For, {
|
|
8184
8498
|
get each() {
|
|
8185
8499
|
return messages2();
|
|
8186
8500
|
},
|
|
8187
8501
|
children: (msg) => (() => {
|
|
8188
|
-
var _el$
|
|
8189
|
-
insert(_el$
|
|
8502
|
+
var _el$242 = _tmpl$59();
|
|
8503
|
+
insert(_el$242, createComponent(MarkdownMessage, {
|
|
8190
8504
|
get content() {
|
|
8191
8505
|
return msg.content;
|
|
8192
8506
|
}
|
|
8193
8507
|
}), null);
|
|
8194
|
-
insert(_el$
|
|
8508
|
+
insert(_el$242, createComponent(Show, {
|
|
8195
8509
|
get when() {
|
|
8196
8510
|
return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
|
|
8197
8511
|
},
|
|
@@ -8204,31 +8518,31 @@ ${contextBlock}` : contextBlock);
|
|
|
8204
8518
|
onOpenSettings: openPremiumDetails
|
|
8205
8519
|
})
|
|
8206
8520
|
}), null);
|
|
8207
|
-
createRenderEffect(() => className(_el$
|
|
8208
|
-
return _el$
|
|
8521
|
+
createRenderEffect(() => className(_el$242, `message message-${msg.role}`));
|
|
8522
|
+
return _el$242;
|
|
8209
8523
|
})()
|
|
8210
8524
|
}), createComponent(Show, {
|
|
8211
8525
|
get when() {
|
|
8212
8526
|
return isStreaming2();
|
|
8213
8527
|
},
|
|
8214
8528
|
get children() {
|
|
8215
|
-
var _el$
|
|
8216
|
-
insert(_el$
|
|
8529
|
+
var _el$116 = _tmpl$19$1(), _el$117 = _el$116.firstChild;
|
|
8530
|
+
insert(_el$117, createComponent(Show, {
|
|
8217
8531
|
get when() {
|
|
8218
8532
|
return hasFirstChunk2();
|
|
8219
8533
|
},
|
|
8220
8534
|
get fallback() {
|
|
8221
|
-
return _tmpl$
|
|
8535
|
+
return _tmpl$60();
|
|
8222
8536
|
},
|
|
8223
8537
|
get children() {
|
|
8224
|
-
var _el$
|
|
8225
|
-
_el$
|
|
8226
|
-
insert(_el$
|
|
8538
|
+
var _el$118 = _tmpl$18$1(), _el$119 = _el$118.firstChild, _el$120 = _el$119.firstChild;
|
|
8539
|
+
_el$120.nextSibling;
|
|
8540
|
+
insert(_el$118, createComponent(MarkdownMessage, {
|
|
8227
8541
|
get content() {
|
|
8228
8542
|
return streamingText2();
|
|
8229
8543
|
}
|
|
8230
|
-
}), _el$
|
|
8231
|
-
insert(_el$
|
|
8544
|
+
}), _el$119);
|
|
8545
|
+
insert(_el$118, createComponent(Show, {
|
|
8232
8546
|
get when() {
|
|
8233
8547
|
return getPremiumPromptKind(streamingText2());
|
|
8234
8548
|
},
|
|
@@ -8240,21 +8554,21 @@ ${contextBlock}` : contextBlock);
|
|
|
8240
8554
|
onStartTrial: () => openPremiumCheckout(kind() === "premium_gate" ? "premium_gate_clicked" : "iteration_limit_clicked"),
|
|
8241
8555
|
onOpenSettings: openPremiumDetails
|
|
8242
8556
|
})
|
|
8243
|
-
}), _el$
|
|
8244
|
-
insert(_el$
|
|
8557
|
+
}), _el$119);
|
|
8558
|
+
insert(_el$119, createComponent(Show, {
|
|
8245
8559
|
get when() {
|
|
8246
8560
|
return elapsedSeconds() > 0;
|
|
8247
8561
|
},
|
|
8248
8562
|
get children() {
|
|
8249
|
-
var _el$
|
|
8250
|
-
insert(_el$
|
|
8251
|
-
return _el$
|
|
8563
|
+
var _el$122 = _tmpl$17$1();
|
|
8564
|
+
insert(_el$122, () => ` • ${elapsedSeconds()}s`);
|
|
8565
|
+
return _el$122;
|
|
8252
8566
|
}
|
|
8253
8567
|
}), null);
|
|
8254
|
-
return _el$
|
|
8568
|
+
return _el$118;
|
|
8255
8569
|
}
|
|
8256
8570
|
}));
|
|
8257
|
-
return _el$
|
|
8571
|
+
return _el$116;
|
|
8258
8572
|
}
|
|
8259
8573
|
}), createComponent(Show, {
|
|
8260
8574
|
get when() {
|
|
@@ -8266,22 +8580,22 @@ ${contextBlock}` : contextBlock);
|
|
|
8266
8580
|
return runtimeState2().supervisor.pendingApprovals;
|
|
8267
8581
|
},
|
|
8268
8582
|
children: (approval) => (() => {
|
|
8269
|
-
var _el$
|
|
8270
|
-
insert(_el$
|
|
8271
|
-
insert(_el$
|
|
8583
|
+
var _el$244 = _tmpl$62(), _el$245 = _el$244.firstChild, _el$246 = _el$245.nextSibling, _el$247 = _el$246.firstChild, _el$248 = _el$247.firstChild, _el$249 = _el$248.nextSibling, _el$251 = _el$247.nextSibling, _el$252 = _el$251.nextSibling, _el$253 = _el$252.firstChild, _el$254 = _el$253.nextSibling;
|
|
8584
|
+
insert(_el$249, () => approval.name);
|
|
8585
|
+
insert(_el$246, createComponent(Show, {
|
|
8272
8586
|
get when() {
|
|
8273
8587
|
return approval.argsSummary;
|
|
8274
8588
|
},
|
|
8275
8589
|
get children() {
|
|
8276
|
-
var _el$
|
|
8277
|
-
insert(_el$
|
|
8278
|
-
return _el$
|
|
8590
|
+
var _el$250 = _tmpl$61();
|
|
8591
|
+
insert(_el$250, () => approval.argsSummary);
|
|
8592
|
+
return _el$250;
|
|
8279
8593
|
}
|
|
8280
|
-
}), _el$
|
|
8281
|
-
insert(_el$
|
|
8282
|
-
_el$
|
|
8283
|
-
_el$
|
|
8284
|
-
return _el$
|
|
8594
|
+
}), _el$251);
|
|
8595
|
+
insert(_el$251, () => approval.reason);
|
|
8596
|
+
_el$253.$$click = () => void resolveApproval(approval.id, true);
|
|
8597
|
+
_el$254.$$click = () => void resolveApproval(approval.id, false);
|
|
8598
|
+
return _el$244;
|
|
8285
8599
|
})()
|
|
8286
8600
|
});
|
|
8287
8601
|
}
|
|
@@ -8290,13 +8604,13 @@ ${contextBlock}` : contextBlock);
|
|
|
8290
8604
|
return memo(() => messages2().length === 0)() && !isStreaming2();
|
|
8291
8605
|
},
|
|
8292
8606
|
get children() {
|
|
8293
|
-
return _tmpl$
|
|
8607
|
+
return _tmpl$20$1();
|
|
8294
8608
|
}
|
|
8295
8609
|
})];
|
|
8296
8610
|
}
|
|
8297
|
-
}), _el$
|
|
8611
|
+
}), _el$124);
|
|
8298
8612
|
var _ref$ = messagesEndRef;
|
|
8299
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
8613
|
+
typeof _ref$ === "function" ? use(_ref$, _el$124) : messagesEndRef = _el$124;
|
|
8300
8614
|
insert(_el$9, createComponent(Show, {
|
|
8301
8615
|
get when() {
|
|
8302
8616
|
return sidebarTab() === "chat";
|
|
@@ -8307,141 +8621,141 @@ ${contextBlock}` : contextBlock);
|
|
|
8307
8621
|
return isStreaming2() || messages2().length > 0;
|
|
8308
8622
|
},
|
|
8309
8623
|
get children() {
|
|
8310
|
-
var _el$
|
|
8311
|
-
insert(_el$
|
|
8624
|
+
var _el$125 = _tmpl$23$1();
|
|
8625
|
+
insert(_el$125, createComponent(Show, {
|
|
8312
8626
|
get when() {
|
|
8313
8627
|
return isStreaming2();
|
|
8314
8628
|
},
|
|
8315
8629
|
get children() {
|
|
8316
|
-
var _el$
|
|
8317
|
-
_el$
|
|
8318
|
-
return _el$
|
|
8630
|
+
var _el$126 = _tmpl$21$1();
|
|
8631
|
+
_el$126.$$click = () => cancel();
|
|
8632
|
+
return _el$126;
|
|
8319
8633
|
}
|
|
8320
8634
|
}), null);
|
|
8321
|
-
insert(_el$
|
|
8635
|
+
insert(_el$125, createComponent(Show, {
|
|
8322
8636
|
get when() {
|
|
8323
8637
|
return memo(() => !!!isStreaming2())() && messages2().length > 0;
|
|
8324
8638
|
},
|
|
8325
8639
|
get children() {
|
|
8326
|
-
var _el$
|
|
8327
|
-
_el$
|
|
8328
|
-
return _el$
|
|
8640
|
+
var _el$127 = _tmpl$22$1();
|
|
8641
|
+
_el$127.$$click = handleRetry;
|
|
8642
|
+
return _el$127;
|
|
8329
8643
|
}
|
|
8330
8644
|
}), null);
|
|
8331
|
-
return _el$
|
|
8645
|
+
return _el$125;
|
|
8332
8646
|
}
|
|
8333
8647
|
}), createComponent(Show, {
|
|
8334
8648
|
get when() {
|
|
8335
8649
|
return highlightCount() > 0;
|
|
8336
8650
|
},
|
|
8337
8651
|
get children() {
|
|
8338
|
-
var _el$
|
|
8339
|
-
_el$
|
|
8340
|
-
var _el$
|
|
8341
|
-
_el$
|
|
8342
|
-
_el$
|
|
8343
|
-
insert(_el$
|
|
8652
|
+
var _el$128 = _tmpl$24$1(), _el$129 = _el$128.firstChild, _el$130 = _el$129.nextSibling;
|
|
8653
|
+
_el$130.firstChild;
|
|
8654
|
+
var _el$132 = _el$130.nextSibling;
|
|
8655
|
+
_el$129.$$click = () => void scrollToHighlight(highlightIndex() - 1);
|
|
8656
|
+
_el$130.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
|
|
8657
|
+
insert(_el$130, (() => {
|
|
8344
8658
|
var _c$4 = memo(() => highlightIndex() >= 0);
|
|
8345
8659
|
return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
|
|
8346
8660
|
})(), null);
|
|
8347
|
-
_el$
|
|
8661
|
+
_el$132.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
|
|
8348
8662
|
createRenderEffect((_p$) => {
|
|
8349
|
-
var _v$
|
|
8350
|
-
_v$
|
|
8351
|
-
_v$
|
|
8663
|
+
var _v$9 = highlightIndex() <= 0, _v$0 = highlightIndex() >= highlightCount() - 1;
|
|
8664
|
+
_v$9 !== _p$.e && (_el$129.disabled = _p$.e = _v$9);
|
|
8665
|
+
_v$0 !== _p$.t && (_el$132.disabled = _p$.t = _v$0);
|
|
8352
8666
|
return _p$;
|
|
8353
8667
|
}, {
|
|
8354
8668
|
e: void 0,
|
|
8355
8669
|
t: void 0
|
|
8356
8670
|
});
|
|
8357
|
-
return _el$
|
|
8671
|
+
return _el$128;
|
|
8358
8672
|
}
|
|
8359
8673
|
}), createComponent(Show, {
|
|
8360
8674
|
get when() {
|
|
8361
8675
|
return queueNotice2() !== null || pendingQueryCount() > 0;
|
|
8362
8676
|
},
|
|
8363
8677
|
get children() {
|
|
8364
|
-
var _el$
|
|
8365
|
-
insert(_el$
|
|
8366
|
-
insert(_el$
|
|
8678
|
+
var _el$133 = _tmpl$27$1(), _el$134 = _el$133.firstChild, _el$135 = _el$134.firstChild;
|
|
8679
|
+
insert(_el$135, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
|
|
8680
|
+
insert(_el$134, createComponent(Show, {
|
|
8367
8681
|
get when() {
|
|
8368
8682
|
return pendingQueryCount() > 0;
|
|
8369
8683
|
},
|
|
8370
8684
|
get children() {
|
|
8371
|
-
var _el$
|
|
8372
|
-
_el$
|
|
8373
|
-
return _el$
|
|
8685
|
+
var _el$136 = _tmpl$25$1();
|
|
8686
|
+
_el$136.$$click = () => clearPendingQueries();
|
|
8687
|
+
return _el$136;
|
|
8374
8688
|
}
|
|
8375
8689
|
}), null);
|
|
8376
|
-
insert(_el$
|
|
8690
|
+
insert(_el$133, createComponent(Show, {
|
|
8377
8691
|
get when() {
|
|
8378
8692
|
return pendingQueries2().length > 0;
|
|
8379
8693
|
},
|
|
8380
8694
|
get children() {
|
|
8381
|
-
var _el$
|
|
8382
|
-
insert(_el$
|
|
8695
|
+
var _el$137 = _tmpl$26$1();
|
|
8696
|
+
insert(_el$137, createComponent(For, {
|
|
8383
8697
|
get each() {
|
|
8384
8698
|
return pendingQueries2();
|
|
8385
8699
|
},
|
|
8386
8700
|
children: (pendingPrompt, index) => (() => {
|
|
8387
|
-
var _el$
|
|
8388
|
-
setAttribute(_el$
|
|
8389
|
-
insert(_el$
|
|
8390
|
-
_el$
|
|
8391
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8392
|
-
return _el$
|
|
8701
|
+
var _el$255 = _tmpl$63(), _el$256 = _el$255.firstChild, _el$257 = _el$256.nextSibling;
|
|
8702
|
+
setAttribute(_el$256, "title", pendingPrompt);
|
|
8703
|
+
insert(_el$256, pendingPrompt);
|
|
8704
|
+
_el$257.$$click = () => removePendingQuery(index());
|
|
8705
|
+
createRenderEffect(() => setAttribute(_el$257, "aria-label", `Remove queued prompt ${index() + 1}`));
|
|
8706
|
+
return _el$255;
|
|
8393
8707
|
})()
|
|
8394
8708
|
}));
|
|
8395
|
-
return _el$
|
|
8709
|
+
return _el$137;
|
|
8396
8710
|
}
|
|
8397
8711
|
}), null);
|
|
8398
|
-
return _el$
|
|
8712
|
+
return _el$133;
|
|
8399
8713
|
}
|
|
8400
8714
|
}), (() => {
|
|
8401
|
-
var _el$
|
|
8402
|
-
_el$
|
|
8715
|
+
var _el$138 = _tmpl$28$1(), _el$139 = _el$138.firstChild, _el$140 = _el$139.nextSibling;
|
|
8716
|
+
_el$139.$$keydown = (e) => {
|
|
8403
8717
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
8404
8718
|
e.preventDefault();
|
|
8405
8719
|
void handleChatSend();
|
|
8406
8720
|
}
|
|
8407
8721
|
};
|
|
8408
|
-
_el$
|
|
8722
|
+
_el$139.$$input = (e) => setChatInput(e.currentTarget.value);
|
|
8409
8723
|
var _ref$2 = chatInputRef;
|
|
8410
|
-
typeof _ref$2 === "function" ? use(_ref$2, _el$
|
|
8411
|
-
_el$
|
|
8412
|
-
insert(_el$
|
|
8724
|
+
typeof _ref$2 === "function" ? use(_ref$2, _el$139) : chatInputRef = _el$139;
|
|
8725
|
+
_el$140.$$click = () => void handleChatSend();
|
|
8726
|
+
insert(_el$140, () => isStreaming2() ? "Queue" : "Send");
|
|
8413
8727
|
createRenderEffect((_p$) => {
|
|
8414
|
-
var _v$
|
|
8415
|
-
_v$
|
|
8416
|
-
_v$
|
|
8728
|
+
var _v$1 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$10 = !chatInput().trim();
|
|
8729
|
+
_v$1 !== _p$.e && setAttribute(_el$139, "placeholder", _p$.e = _v$1);
|
|
8730
|
+
_v$10 !== _p$.t && (_el$140.disabled = _p$.t = _v$10);
|
|
8417
8731
|
return _p$;
|
|
8418
8732
|
}, {
|
|
8419
8733
|
e: void 0,
|
|
8420
8734
|
t: void 0
|
|
8421
8735
|
});
|
|
8422
|
-
createRenderEffect(() => _el$
|
|
8423
|
-
return _el$
|
|
8736
|
+
createRenderEffect(() => _el$139.value = chatInput());
|
|
8737
|
+
return _el$138;
|
|
8424
8738
|
})()];
|
|
8425
8739
|
}
|
|
8426
8740
|
}), null);
|
|
8427
8741
|
createRenderEffect((_p$) => {
|
|
8428
|
-
var _v$
|
|
8429
|
-
_v$
|
|
8430
|
-
_v$
|
|
8431
|
-
_v$
|
|
8432
|
-
_v$
|
|
8433
|
-
_v$
|
|
8434
|
-
_v$
|
|
8435
|
-
_v$
|
|
8436
|
-
_v$
|
|
8437
|
-
_v$
|
|
8438
|
-
_v$
|
|
8439
|
-
_v$
|
|
8440
|
-
_v$
|
|
8441
|
-
_v$
|
|
8442
|
-
_v$
|
|
8443
|
-
_v$
|
|
8444
|
-
_v$
|
|
8742
|
+
var _v$11 = `${sidebarWidth2()}px`, _v$12 = !!isDragging(), _v$13 = !!(sidebarTab() === "supervisor"), _v$14 = sidebarTab() === "supervisor", _v$15 = !!(sidebarTab() === "bookmarks"), _v$16 = sidebarTab() === "bookmarks", _v$17 = !!(sidebarTab() === "checkpoints"), _v$18 = sidebarTab() === "checkpoints", _v$19 = !!(sidebarTab() === "chat"), _v$20 = sidebarTab() === "chat", _v$21 = !!(sidebarTab() === "automation"), _v$22 = sidebarTab() === "automation", _v$23 = !!(sidebarTab() === "history"), _v$24 = sidebarTab() === "history", _v$25 = !!(sidebarTab() === "diff"), _v$26 = sidebarTab() === "diff";
|
|
8743
|
+
_v$11 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$11);
|
|
8744
|
+
_v$12 !== _p$.t && _el$0.classList.toggle("dragging", _p$.t = _v$12);
|
|
8745
|
+
_v$13 !== _p$.a && _el$16.classList.toggle("active", _p$.a = _v$13);
|
|
8746
|
+
_v$14 !== _p$.o && setAttribute(_el$16, "aria-selected", _p$.o = _v$14);
|
|
8747
|
+
_v$15 !== _p$.i && _el$19.classList.toggle("active", _p$.i = _v$15);
|
|
8748
|
+
_v$16 !== _p$.n && setAttribute(_el$19, "aria-selected", _p$.n = _v$16);
|
|
8749
|
+
_v$17 !== _p$.s && _el$20.classList.toggle("active", _p$.s = _v$17);
|
|
8750
|
+
_v$18 !== _p$.h && setAttribute(_el$20, "aria-selected", _p$.h = _v$18);
|
|
8751
|
+
_v$19 !== _p$.r && _el$21.classList.toggle("active", _p$.r = _v$19);
|
|
8752
|
+
_v$20 !== _p$.d && setAttribute(_el$21, "aria-selected", _p$.d = _v$20);
|
|
8753
|
+
_v$21 !== _p$.l && _el$22.classList.toggle("active", _p$.l = _v$21);
|
|
8754
|
+
_v$22 !== _p$.u && setAttribute(_el$22, "aria-selected", _p$.u = _v$22);
|
|
8755
|
+
_v$23 !== _p$.c && _el$23.classList.toggle("active", _p$.c = _v$23);
|
|
8756
|
+
_v$24 !== _p$.w && setAttribute(_el$23, "aria-selected", _p$.w = _v$24);
|
|
8757
|
+
_v$25 !== _p$.m && _el$24.classList.toggle("active", _p$.m = _v$25);
|
|
8758
|
+
_v$26 !== _p$.f && setAttribute(_el$24, "aria-selected", _p$.f = _v$26);
|
|
8445
8759
|
return _p$;
|
|
8446
8760
|
}, {
|
|
8447
8761
|
e: void 0,
|
|
@@ -8466,7 +8780,7 @@ ${contextBlock}` : contextBlock);
|
|
|
8466
8780
|
});
|
|
8467
8781
|
};
|
|
8468
8782
|
delegateEvents(["click", "pointerdown", "input", "keydown"]);
|
|
8469
|
-
var _tmpl$$
|
|
8783
|
+
var _tmpl$$4 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$3 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=devtools-network><div class=network-header><span>Method</span><span>URL</span><span>Status</span><span>Type</span><span>Time`), _tmpl$5$3 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$3 = /* @__PURE__ */ template(`<div><span class=network-method></span><span class=network-url></span><span></span><span class=network-type></span><span class=network-duration>`), _tmpl$7$3 = /* @__PURE__ */ template(`<div class=devtools-activity>`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for agent devtools activity...`), _tmpl$9$1 = /* @__PURE__ */ template(`<div class=activity-entry><span class=activity-time></span><span class=activity-tool></span><span class=activity-args></span><span></span><span class=activity-duration>`), _tmpl$0$1 = /* @__PURE__ */ template(`<span class="devtools-tab-badge error">`), _tmpl$1$1 = /* @__PURE__ */ template(`<span class="devtools-tab-badge count">`), _tmpl$10$1 = /* @__PURE__ */ template(`<div class=export-date-inputs><div class=export-date-row><span class=export-date-label>From</span><input class=export-date-input type=date></div><div class=export-date-row><span class=export-date-label>To</span><input class=export-date-input type=date>`), _tmpl$11$1 = /* @__PURE__ */ template(`<div class=devtools-export-dropdown><div class=export-section><div class=export-section-label>Log Types</div><label class=export-checkbox><input type=checkbox>Console</label><label class=export-checkbox><input type=checkbox>Network</label><label class=export-checkbox><input type=checkbox>Activity</label></div><div class=export-section><div class=export-section-label>Date Range</div><div class=export-date-btns><button>Today</button><button>Custom</button></div></div><button class=export-submit>Export JSON`), _tmpl$12$1 = /* @__PURE__ */ template(`<div class=devtools-panel><div class=devtools-tabs><button>Console</button><button>Network</button><button>Activity</button><div class=devtools-tab-spacer></div><div class=devtools-export-wrap><button title="Export Logs"><svg width=13 height=13 viewBox="0 0 13 13"fill=none style=vertical-align:middle><path d="M6.5 1v7M3.5 5l3 3 3-3"stroke=currentColor stroke-width=1.3 stroke-linecap=round stroke-linejoin=round></path><path d="M1 9.5v1A1.5 1.5 0 0 0 2.5 12h8A1.5 1.5 0 0 0 12 10.5v-1"stroke=currentColor stroke-width=1.3 stroke-linecap=round></path></svg></button></div><button class=devtools-close-btn title="Close DevTools">×</button></div><div class=devtools-content>`);
|
|
8470
8784
|
function statusClass(status) {
|
|
8471
8785
|
if (status == null) return "pending";
|
|
8472
8786
|
if (status >= 200 && status < 300) return "ok";
|
|
@@ -8527,10 +8841,10 @@ const ConsoleView = (props) => {
|
|
|
8527
8841
|
return props.entries.length > 0;
|
|
8528
8842
|
},
|
|
8529
8843
|
get fallback() {
|
|
8530
|
-
return _tmpl$2$
|
|
8844
|
+
return _tmpl$2$4();
|
|
8531
8845
|
},
|
|
8532
8846
|
get children() {
|
|
8533
|
-
var _el$ = _tmpl$$
|
|
8847
|
+
var _el$ = _tmpl$$4();
|
|
8534
8848
|
_el$.addEventListener("scroll", onScroll);
|
|
8535
8849
|
var _ref$ = scrollRef;
|
|
8536
8850
|
typeof _ref$ === "function" ? use(_ref$, _el$) : scrollRef = _el$;
|
|
@@ -8539,7 +8853,7 @@ const ConsoleView = (props) => {
|
|
|
8539
8853
|
return props.entries;
|
|
8540
8854
|
},
|
|
8541
8855
|
children: (entry) => (() => {
|
|
8542
|
-
var _el$3 = _tmpl$3$
|
|
8856
|
+
var _el$3 = _tmpl$3$3(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$6.nextSibling;
|
|
8543
8857
|
insert(_el$4, () => entry.level);
|
|
8544
8858
|
insert(_el$5, () => formatTime(entry.timestamp, {
|
|
8545
8859
|
includeSeconds: true
|
|
@@ -8583,10 +8897,10 @@ const NetworkView = (props) => {
|
|
|
8583
8897
|
return props.entries.length > 0;
|
|
8584
8898
|
},
|
|
8585
8899
|
get fallback() {
|
|
8586
|
-
return _tmpl$5$
|
|
8900
|
+
return _tmpl$5$3();
|
|
8587
8901
|
},
|
|
8588
8902
|
get children() {
|
|
8589
|
-
var _el$8 = _tmpl$4$
|
|
8903
|
+
var _el$8 = _tmpl$4$3();
|
|
8590
8904
|
_el$8.firstChild;
|
|
8591
8905
|
_el$8.addEventListener("scroll", onScroll);
|
|
8592
8906
|
var _ref$2 = scrollRef;
|
|
@@ -8596,7 +8910,7 @@ const NetworkView = (props) => {
|
|
|
8596
8910
|
return props.entries;
|
|
8597
8911
|
},
|
|
8598
8912
|
children: (entry) => (() => {
|
|
8599
|
-
var _el$1 = _tmpl$6$
|
|
8913
|
+
var _el$1 = _tmpl$6$3(), _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.nextSibling, _el$13 = _el$12.nextSibling, _el$14 = _el$13.nextSibling;
|
|
8600
8914
|
insert(_el$10, () => entry.method);
|
|
8601
8915
|
insert(_el$11, () => shortenUrl(entry.url));
|
|
8602
8916
|
insert(_el$12, (() => {
|
|
@@ -8632,10 +8946,10 @@ const ActivityView = (props) => {
|
|
|
8632
8946
|
return props.entries.length > 0;
|
|
8633
8947
|
},
|
|
8634
8948
|
get fallback() {
|
|
8635
|
-
return _tmpl$8$
|
|
8949
|
+
return _tmpl$8$2();
|
|
8636
8950
|
},
|
|
8637
8951
|
get children() {
|
|
8638
|
-
var _el$15 = _tmpl$7$
|
|
8952
|
+
var _el$15 = _tmpl$7$3();
|
|
8639
8953
|
insert(_el$15, createComponent(For, {
|
|
8640
8954
|
get each() {
|
|
8641
8955
|
return [...props.entries].reverse();
|
|
@@ -8987,7 +9301,7 @@ const PROVIDERS = {
|
|
|
8987
9301
|
apiKeyHint: "Optional — only if your endpoint requires authentication"
|
|
8988
9302
|
}
|
|
8989
9303
|
};
|
|
8990
|
-
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$1 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$6$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$7$1 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$8 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$9 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$0 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$11 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$12 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$13 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured \`llama-server\` base URL. For agent loops, run \`llama-server\` with \`--ctx-size 16384\` minimum and \`32768\` recommended.`), _tmpl$14 = /* @__PURE__ */ template(`<div class=premium-section><div class=premium-active-badge>Premium Active</div><p class=premium-detail></p><div class=premium-actions-row><button class="premium-btn premium-btn-manage">Manage Subscription</button><button class="premium-btn premium-btn-reset">Sign Out`), _tmpl$15 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$16 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Store credentials for agent-driven logins. Credentials are encrypted at rest and never sent to AI providers — they are filled directly into login forms with your consent.`), _tmpl$17 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$18 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Label (e.g. Work GitHub)"><input class=settings-input placeholder="Domain pattern (e.g. github.com, *.aws.amazon.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><input class=settings-input placeholder="TOTP secret (optional, base32)"><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Credential</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$19 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$20 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$21 = /* @__PURE__ */ template(`<textarea class="settings-input settings-textarea"rows=4>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>Restrict which domains can be navigated to. Use allowlist mode for kiosk or supervised browsing, blocklist to block specific sites.`), _tmpl$24 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=default-search-engine>Default Search Engine</label><select id=default-search-engine class=settings-input><option value=none>None (disabled)</option></select><p class=settings-hint>The search engine used by the AI agent when it needs to search the web. "None" disables the fallback and forces the agent to use on-page search inputs only.</p></div><div class=settings-field><label class=settings-label for=download-path>Download Location</label><input id=download-path class=settings-input placeholder="Default: ~/Downloads"><p class=settings-hint>Directory for saved files. Leave blank to use the system default Downloads folder.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current</button></div></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label for=theme-select>Theme</label><select id=theme-select class="settings-input settings-select"><option value=dark>Dark</option><option value=light>Light</option></select><p class=settings-hint>Choose the application color scheme. Takes effect after saving.</p></div><div class=settings-field><label class=settings-label for=domain-policy-mode>Domain Restrictions</label><select id=domain-policy-mode class="settings-input settings-select"><option value=none>No restrictions</option><option value=allowlist>Allowlist (only listed domains)</option><option value=blocklist>Blocklist (block listed domains)</option></select></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$25 = /* @__PURE__ */ template(`<style>
|
|
9304
|
+
var _tmpl$$3 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$3 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$2 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$2 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$2 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$6$2 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$8$1 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$9 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$0 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$11 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$12 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$13 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured \`llama-server\` base URL. For agent loops, run \`llama-server\` with \`--ctx-size 16384\` minimum and \`32768\` recommended.`), _tmpl$14 = /* @__PURE__ */ template(`<div class=premium-section><div class=premium-active-badge>Premium Active</div><p class=premium-detail></p><div class=premium-actions-row><button class="premium-btn premium-btn-manage">Manage Subscription</button><button class="premium-btn premium-btn-reset">Sign Out`), _tmpl$15 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$16 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Store credentials for agent-driven logins. Credentials are encrypted at rest and never sent to AI providers — they are filled directly into login forms with your consent.`), _tmpl$17 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$18 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Label (e.g. Work GitHub)"><input class=settings-input placeholder="Domain pattern (e.g. github.com, *.aws.amazon.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><input class=settings-input placeholder="TOTP secret (optional, base32)"><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Credential</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$19 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Save login credentials for any website. Passwords are encrypted locally and filled directly into login forms. The agent can list and fill them with your consent, but passwords are never sent to AI providers.`), _tmpl$20 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Password`), _tmpl$21 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Title (e.g. GitHub Personal)"><input class=settings-input placeholder="URL (e.g. https://github.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><select class=settings-input><option value=login>Login</option><option value=credit_card>Credit Card</option><option value=identity>Identity</option><option value=secure_note>Secure Note</option></select><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Password</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$22 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$23 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$24 = /* @__PURE__ */ template(`<textarea class="settings-input settings-textarea"rows=4>`), _tmpl$25 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$26 = /* @__PURE__ */ template(`<p class=settings-hint>Restrict which domains can be navigated to. Use allowlist mode for kiosk or supervised browsing, blocklist to block specific sites.`), _tmpl$27 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=default-search-engine>Default Search Engine</label><select id=default-search-engine class=settings-input><option value=none>None (disabled)</option></select><p class=settings-hint>The search engine used by the AI agent when it needs to search the web. "None" disables the fallback and forces the agent to use on-page search inputs only.</p></div><div class=settings-field><label class=settings-label for=download-path>Download Location</label><input id=download-path class=settings-input placeholder="Default: ~/Downloads"><p class=settings-hint>Directory for saved files. Leave blank to use the system default Downloads folder.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current</button></div></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Passwords</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label for=theme-select>Theme</label><select id=theme-select class="settings-input settings-select"><option value=dark>Dark</option><option value=light>Light</option></select><p class=settings-hint>Choose the application color scheme. Takes effect after saving.</p></div><div class=settings-field><label class=settings-label for=domain-policy-mode>Domain Restrictions</label><select id=domain-policy-mode class="settings-input settings-select"><option value=none>No restrictions</option><option value=allowlist>Allowlist (only listed domains)</option><option value=blocklist>Blocklist (block listed domains)</option></select></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$28 = /* @__PURE__ */ template(`<style>
|
|
8991
9305
|
.settings-panel {
|
|
8992
9306
|
width: min(440px, calc(100vw - 32px));
|
|
8993
9307
|
max-height: calc(100vh - 48px);
|
|
@@ -9529,7 +9843,7 @@ var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><butt
|
|
|
9529
9843
|
justify-content: flex-end;
|
|
9530
9844
|
margin-top: 4px;
|
|
9531
9845
|
}
|
|
9532
|
-
`), _tmpl$
|
|
9846
|
+
`), _tmpl$29 = /* @__PURE__ */ template(`<option>`), _tmpl$30 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$31 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$33 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$34 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`), _tmpl$35 = /* @__PURE__ */ template(`<div>`), _tmpl$36 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> · <!> cookies · <!> domains</span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Restore this session (replaces current tabs and cookies)"style="padding:2px 10px;font-size:12px">Load</button><button class=vault-entry-remove title="Delete session">×`), _tmpl$37 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$38 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=premium-activate-row><input class="settings-input premium-email-input"inputmode=numeric maxlength=6 placeholder="Enter 6-digit code"><button class="premium-btn premium-btn-activate">`), _tmpl$40 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$41 = /* @__PURE__ */ template(`<div class=premium-section><p class=premium-description>Unlock screenshot/vision analysis, session management, Obsidian integration, workflow tracking, DevTools tools, table extraction, Agent Credential Vault, and unlimited tool iterations.</p><div class=premium-activate-row><input class="settings-input premium-email-input"type=email placeholder="Enter your subscription email"><button class="premium-btn premium-btn-activate"></button></div><button class="premium-btn premium-btn-upgrade">Subscribe to Premium — $5.99/mo after 7-day free trial`), _tmpl$42 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$43 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$44 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> · </span></div><button class=vault-entry-remove title="Remove credential">×`), _tmpl$45 = /* @__PURE__ */ template(`<p class=settings-hint>Your personal password manager. Save, organize, and autofill login credentials. Upgrade to Premium to unlock Passwords.`), _tmpl$46 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> · </span></div><button class=vault-entry-remove title="Remove password">×`), _tmpl$47 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail></span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Fill forms on current page with this profile"style="padding:2px 10px;font-size:12px">Fill</button><button class=vault-entry-remove title="Remove profile">×`);
|
|
9533
9847
|
const CHAT_PROVIDERS = Object.values(PROVIDERS).map((p) => ({
|
|
9534
9848
|
id: p.id,
|
|
9535
9849
|
name: p.name,
|
|
@@ -9585,6 +9899,67 @@ const Settings = () => {
|
|
|
9585
9899
|
const [vaultNewTotp, setVaultNewTotp] = createSignal("");
|
|
9586
9900
|
const [vaultNewNotes, setVaultNewNotes] = createSignal("");
|
|
9587
9901
|
const [vaultMessage, setVaultMessage] = createSignal(null);
|
|
9902
|
+
const [humanEntries, setHumanEntries] = createSignal([]);
|
|
9903
|
+
const [humanAdding, setHumanAdding] = createSignal(false);
|
|
9904
|
+
const [humanNewTitle, setHumanNewTitle] = createSignal("");
|
|
9905
|
+
const [humanNewUrl, setHumanNewUrl] = createSignal("");
|
|
9906
|
+
const [humanNewUsername, setHumanNewUsername] = createSignal("");
|
|
9907
|
+
const [humanNewPassword, setHumanNewPassword] = createSignal("");
|
|
9908
|
+
const [humanNewNotes, setHumanNewNotes] = createSignal("");
|
|
9909
|
+
const [humanNewCategory, setHumanNewCategory] = createSignal("login");
|
|
9910
|
+
const [humanMessage, setHumanMessage] = createSignal(null);
|
|
9911
|
+
const loadHumanEntries = async () => {
|
|
9912
|
+
try {
|
|
9913
|
+
const entries2 = await window.vessel.humanVault.list();
|
|
9914
|
+
setHumanEntries(entries2);
|
|
9915
|
+
} catch (err) {
|
|
9916
|
+
logger.warn("Failed to load human vault entries:", err);
|
|
9917
|
+
}
|
|
9918
|
+
};
|
|
9919
|
+
const handleHumanAdd = async () => {
|
|
9920
|
+
if (!humanNewTitle().trim() || !humanNewUrl().trim() || !humanNewUsername().trim() || !humanNewPassword().trim()) {
|
|
9921
|
+
setHumanMessage({
|
|
9922
|
+
kind: "error",
|
|
9923
|
+
text: "Title, URL, username, and password are required."
|
|
9924
|
+
});
|
|
9925
|
+
return;
|
|
9926
|
+
}
|
|
9927
|
+
try {
|
|
9928
|
+
await window.vessel.humanVault.save({
|
|
9929
|
+
title: humanNewTitle().trim(),
|
|
9930
|
+
url: humanNewUrl().trim(),
|
|
9931
|
+
username: humanNewUsername().trim(),
|
|
9932
|
+
password: humanNewPassword(),
|
|
9933
|
+
notes: humanNewNotes().trim() || void 0,
|
|
9934
|
+
category: humanNewCategory()
|
|
9935
|
+
});
|
|
9936
|
+
setHumanMessage({
|
|
9937
|
+
kind: "success",
|
|
9938
|
+
text: "Password saved."
|
|
9939
|
+
});
|
|
9940
|
+
setHumanAdding(false);
|
|
9941
|
+
setHumanNewTitle("");
|
|
9942
|
+
setHumanNewUrl("");
|
|
9943
|
+
setHumanNewUsername("");
|
|
9944
|
+
setHumanNewPassword("");
|
|
9945
|
+
setHumanNewNotes("");
|
|
9946
|
+
setHumanNewCategory("login");
|
|
9947
|
+
loadHumanEntries();
|
|
9948
|
+
} catch (err) {
|
|
9949
|
+
setHumanMessage({
|
|
9950
|
+
kind: "error",
|
|
9951
|
+
text: err?.message || "Failed to save."
|
|
9952
|
+
});
|
|
9953
|
+
}
|
|
9954
|
+
};
|
|
9955
|
+
const handleHumanRemove = async (id) => {
|
|
9956
|
+
try {
|
|
9957
|
+
await window.vessel.humanVault.remove(id);
|
|
9958
|
+
loadHumanEntries();
|
|
9959
|
+
} catch (err) {
|
|
9960
|
+
logger.warn("Failed to remove human vault entry:", err);
|
|
9961
|
+
}
|
|
9962
|
+
};
|
|
9588
9963
|
const [autofillProfiles, setAutofillProfiles] = createSignal([]);
|
|
9589
9964
|
const [autofillAdding, setAutofillAdding] = createSignal(false);
|
|
9590
9965
|
const [autofillLabel, setAutofillLabel] = createSignal("");
|
|
@@ -9892,12 +10267,13 @@ const Settings = () => {
|
|
|
9892
10267
|
logger.warn("Failed to load premium state:", err);
|
|
9893
10268
|
}
|
|
9894
10269
|
await loadVaultEntries();
|
|
10270
|
+
await loadHumanEntries();
|
|
9895
10271
|
await loadSessionList();
|
|
9896
10272
|
};
|
|
9897
10273
|
onMount(() => {
|
|
9898
10274
|
void loadState();
|
|
9899
10275
|
void loadAutofillProfiles();
|
|
9900
|
-
const
|
|
10276
|
+
const unsubscribe2 = window.vessel.settings.onHealthUpdate((nextHealth) => {
|
|
9901
10277
|
setHealth(nextHealth);
|
|
9902
10278
|
});
|
|
9903
10279
|
const unsubscribePremium = window.vessel.premium.onUpdate((nextState) => {
|
|
@@ -9914,7 +10290,7 @@ const Settings = () => {
|
|
|
9914
10290
|
}
|
|
9915
10291
|
});
|
|
9916
10292
|
onCleanup(() => {
|
|
9917
|
-
|
|
10293
|
+
unsubscribe2();
|
|
9918
10294
|
unsubscribePremium();
|
|
9919
10295
|
});
|
|
9920
10296
|
});
|
|
@@ -9992,13 +10368,15 @@ const Settings = () => {
|
|
|
9992
10368
|
},
|
|
9993
10369
|
get children() {
|
|
9994
10370
|
return [(() => {
|
|
9995
|
-
var _el$ = _tmpl$
|
|
10371
|
+
var _el$ = _tmpl$27(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$11 = _el$3.nextSibling, _el$18 = _el$11.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$18.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling, _el$24 = _el$23.firstChild, _el$25 = _el$21.nextSibling, _el$26 = _el$25.firstChild, _el$27 = _el$26.nextSibling, _el$28 = _el$25.nextSibling, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$31.firstChild, _el$34 = _el$32.nextSibling, _el$35 = _el$31.nextSibling, _el$36 = _el$35.firstChild, _el$37 = _el$36.nextSibling, _el$38 = _el$35.nextSibling, _el$39 = _el$38.firstChild, _el$40 = _el$39.nextSibling, _el$41 = _el$38.nextSibling, _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$41.nextSibling, _el$45 = _el$44.firstChild, _el$46 = _el$45.firstChild, _el$47 = _el$44.nextSibling, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling, _el$51 = _el$50.nextSibling, _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling, _el$55 = _el$48.nextSibling, _el$56 = _el$55.nextSibling, _el$57 = _el$56.firstChild, _el$58 = _el$57.firstChild, _el$79 = _el$56.nextSibling, _el$80 = _el$79.nextSibling;
|
|
9996
10372
|
_el$80.firstChild;
|
|
9997
10373
|
var _el$89 = _el$80.nextSibling, _el$90 = _el$89.nextSibling, _el$91 = _el$90.firstChild;
|
|
9998
10374
|
_el$91.firstChild;
|
|
9999
10375
|
var _el$107 = _el$90.nextSibling, _el$108 = _el$107.nextSibling, _el$109 = _el$108.firstChild;
|
|
10000
|
-
_el$109.
|
|
10001
|
-
var _el$
|
|
10376
|
+
_el$109.firstChild;
|
|
10377
|
+
var _el$125 = _el$108.nextSibling, _el$126 = _el$125.nextSibling, _el$127 = _el$126.firstChild;
|
|
10378
|
+
_el$127.nextSibling;
|
|
10379
|
+
var _el$150 = _el$126.nextSibling, _el$151 = _el$150.nextSibling, _el$152 = _el$151.firstChild, _el$153 = _el$152.firstChild, _el$154 = _el$151.nextSibling, _el$155 = _el$154.nextSibling, _el$156 = _el$155.firstChild, _el$157 = _el$156.nextSibling, _el$158 = _el$155.nextSibling, _el$159 = _el$158.firstChild, _el$160 = _el$159.nextSibling, _el$164 = _el$158.nextSibling, _el$165 = _el$164.firstChild, _el$166 = _el$165.nextSibling;
|
|
10002
10380
|
addEventListener(_el$, "click", closeSettings, true);
|
|
10003
10381
|
_el$2.$$keydown = handleKeyDown;
|
|
10004
10382
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
@@ -10007,14 +10385,14 @@ const Settings = () => {
|
|
|
10007
10385
|
return showWelcome();
|
|
10008
10386
|
},
|
|
10009
10387
|
get children() {
|
|
10010
|
-
var _el$4 = _tmpl$2$
|
|
10388
|
+
var _el$4 = _tmpl$2$3(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$5.nextSibling, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild;
|
|
10011
10389
|
_el$7.$$click = dismissWelcome;
|
|
10012
10390
|
insert(_el$4, createComponent(Show, {
|
|
10013
10391
|
get when() {
|
|
10014
10392
|
return !premiumActive();
|
|
10015
10393
|
},
|
|
10016
10394
|
get children() {
|
|
10017
|
-
var _el$1 = _tmpl$$
|
|
10395
|
+
var _el$1 = _tmpl$$3(), _el$10 = _el$1.firstChild;
|
|
10018
10396
|
_el$10.$$click = () => {
|
|
10019
10397
|
void trackPremiumContext("welcome_banner_clicked");
|
|
10020
10398
|
startPremiumCheckout();
|
|
@@ -10031,7 +10409,7 @@ const Settings = () => {
|
|
|
10031
10409
|
return !premiumActive();
|
|
10032
10410
|
},
|
|
10033
10411
|
get children() {
|
|
10034
|
-
var _el$12 = _tmpl$3$
|
|
10412
|
+
var _el$12 = _tmpl$3$2(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$14.nextSibling, _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
|
|
10035
10413
|
_el$16.$$click = () => {
|
|
10036
10414
|
void trackPremiumContext("settings_banner_clicked");
|
|
10037
10415
|
startPremiumCheckout();
|
|
@@ -10054,10 +10432,10 @@ const Settings = () => {
|
|
|
10054
10432
|
return Object.entries(SEARCH_ENGINE_PRESETS);
|
|
10055
10433
|
},
|
|
10056
10434
|
children: ([id, preset]) => (() => {
|
|
10057
|
-
var _el$
|
|
10058
|
-
_el$
|
|
10059
|
-
insert(_el$
|
|
10060
|
-
return _el$
|
|
10435
|
+
var _el$168 = _tmpl$29();
|
|
10436
|
+
_el$168.value = id;
|
|
10437
|
+
insert(_el$168, () => preset.label);
|
|
10438
|
+
return _el$168;
|
|
10061
10439
|
})()
|
|
10062
10440
|
}), _el$24);
|
|
10063
10441
|
_el$27.$$input = (e) => setDownloadPath(e.currentTarget.value);
|
|
@@ -10069,10 +10447,10 @@ const Settings = () => {
|
|
|
10069
10447
|
return premiumActive();
|
|
10070
10448
|
},
|
|
10071
10449
|
get fallback() {
|
|
10072
|
-
return _tmpl$
|
|
10450
|
+
return _tmpl$30();
|
|
10073
10451
|
},
|
|
10074
10452
|
get children() {
|
|
10075
|
-
var _el$33 = _tmpl$4$
|
|
10453
|
+
var _el$33 = _tmpl$4$2();
|
|
10076
10454
|
_el$33.$$input = (e) => setMaxToolIterations(e.currentTarget.value);
|
|
10077
10455
|
createRenderEffect(() => _el$33.value = maxToolIterations());
|
|
10078
10456
|
return _el$33;
|
|
@@ -10090,55 +10468,55 @@ const Settings = () => {
|
|
|
10090
10468
|
return health();
|
|
10091
10469
|
},
|
|
10092
10470
|
children: (currentHealth) => (() => {
|
|
10093
|
-
var _el$
|
|
10094
|
-
_el$
|
|
10095
|
-
insert(_el$
|
|
10096
|
-
insert(_el$
|
|
10097
|
-
insert(_el$
|
|
10471
|
+
var _el$170 = _tmpl$32(), _el$171 = _el$170.firstChild, _el$172 = _el$171.nextSibling, _el$173 = _el$172.firstChild, _el$175 = _el$173.nextSibling;
|
|
10472
|
+
_el$175.nextSibling;
|
|
10473
|
+
insert(_el$175, () => currentHealth().mcp.status);
|
|
10474
|
+
insert(_el$172, () => currentHealth().mcp.message, null);
|
|
10475
|
+
insert(_el$170, createComponent(Show, {
|
|
10098
10476
|
get when() {
|
|
10099
10477
|
return currentHealth().mcp.endpoint;
|
|
10100
10478
|
},
|
|
10101
10479
|
children: (endpoint) => (() => {
|
|
10102
|
-
var _el$
|
|
10103
|
-
insert(_el$
|
|
10104
|
-
return _el$
|
|
10480
|
+
var _el$178 = _tmpl$33(), _el$179 = _el$178.firstChild, _el$180 = _el$179.nextSibling;
|
|
10481
|
+
insert(_el$180, endpoint);
|
|
10482
|
+
return _el$178;
|
|
10105
10483
|
})()
|
|
10106
10484
|
}), null);
|
|
10107
|
-
insert(_el$
|
|
10485
|
+
insert(_el$170, createComponent(Show, {
|
|
10108
10486
|
get when() {
|
|
10109
10487
|
return currentHealth().startupIssues.length > 0;
|
|
10110
10488
|
},
|
|
10111
10489
|
get children() {
|
|
10112
|
-
var _el$
|
|
10113
|
-
insert(_el$
|
|
10114
|
-
var _el$
|
|
10115
|
-
insert(_el$
|
|
10116
|
-
insert(_el$
|
|
10117
|
-
insert(_el$
|
|
10490
|
+
var _el$177 = _tmpl$31();
|
|
10491
|
+
insert(_el$177, () => currentHealth().startupIssues.map((issue) => (() => {
|
|
10492
|
+
var _el$181 = _tmpl$34(), _el$182 = _el$181.firstChild, _el$183 = _el$182.nextSibling;
|
|
10493
|
+
insert(_el$182, () => issue.title);
|
|
10494
|
+
insert(_el$183, () => issue.detail);
|
|
10495
|
+
insert(_el$181, createComponent(Show, {
|
|
10118
10496
|
get when() {
|
|
10119
10497
|
return issue.action;
|
|
10120
10498
|
},
|
|
10121
10499
|
children: (action) => (() => {
|
|
10122
|
-
var _el$
|
|
10123
|
-
insert(_el$
|
|
10124
|
-
return _el$
|
|
10500
|
+
var _el$184 = _tmpl$35();
|
|
10501
|
+
insert(_el$184, action);
|
|
10502
|
+
return _el$184;
|
|
10125
10503
|
})()
|
|
10126
10504
|
}), null);
|
|
10127
10505
|
createRenderEffect((_p$) => {
|
|
10128
10506
|
var _v$1 = !!(issue.severity === "warning"), _v$10 = !!(issue.severity === "error");
|
|
10129
|
-
_v$1 !== _p$.e && _el$
|
|
10130
|
-
_v$10 !== _p$.t && _el$
|
|
10507
|
+
_v$1 !== _p$.e && _el$181.classList.toggle("warning", _p$.e = _v$1);
|
|
10508
|
+
_v$10 !== _p$.t && _el$181.classList.toggle("error", _p$.t = _v$10);
|
|
10131
10509
|
return _p$;
|
|
10132
10510
|
}, {
|
|
10133
10511
|
e: void 0,
|
|
10134
10512
|
t: void 0
|
|
10135
10513
|
});
|
|
10136
|
-
return _el$
|
|
10514
|
+
return _el$181;
|
|
10137
10515
|
})()));
|
|
10138
|
-
return _el$
|
|
10516
|
+
return _el$177;
|
|
10139
10517
|
}
|
|
10140
10518
|
}), null);
|
|
10141
|
-
return _el$
|
|
10519
|
+
return _el$170;
|
|
10142
10520
|
})()
|
|
10143
10521
|
}), _el$35);
|
|
10144
10522
|
_el$37.$$input = (e) => setObsidianVaultPath(e.currentTarget.value);
|
|
@@ -10170,20 +10548,20 @@ const Settings = () => {
|
|
|
10170
10548
|
return sessionList().length > 0;
|
|
10171
10549
|
},
|
|
10172
10550
|
get children() {
|
|
10173
|
-
var _el$54 = _tmpl$5$
|
|
10551
|
+
var _el$54 = _tmpl$5$2();
|
|
10174
10552
|
insert(_el$54, createComponent(For, {
|
|
10175
10553
|
get each() {
|
|
10176
10554
|
return sessionList();
|
|
10177
10555
|
},
|
|
10178
10556
|
children: (s) => (() => {
|
|
10179
|
-
var _el$
|
|
10180
|
-
_el$
|
|
10181
|
-
var _el$
|
|
10182
|
-
insert(_el$
|
|
10183
|
-
insert(_el$
|
|
10184
|
-
insert(_el$
|
|
10185
|
-
insert(_el$
|
|
10186
|
-
_el$
|
|
10557
|
+
var _el$185 = _tmpl$36(), _el$186 = _el$185.firstChild, _el$187 = _el$186.firstChild, _el$188 = _el$187.nextSibling, _el$189 = _el$188.firstChild, _el$195 = _el$189.nextSibling, _el$191 = _el$195.nextSibling, _el$196 = _el$191.nextSibling;
|
|
10558
|
+
_el$196.nextSibling;
|
|
10559
|
+
var _el$197 = _el$186.nextSibling, _el$198 = _el$197.firstChild, _el$199 = _el$198.nextSibling;
|
|
10560
|
+
insert(_el$187, () => s.name);
|
|
10561
|
+
insert(_el$188, () => new Date(s.updatedAt).toLocaleDateString(), _el$189);
|
|
10562
|
+
insert(_el$188, () => s.cookieCount, _el$195);
|
|
10563
|
+
insert(_el$188, () => s.domains.length, _el$196);
|
|
10564
|
+
_el$198.$$click = async () => {
|
|
10187
10565
|
try {
|
|
10188
10566
|
await window.vessel.sessions.load(s.name);
|
|
10189
10567
|
setStatus({
|
|
@@ -10198,11 +10576,11 @@ const Settings = () => {
|
|
|
10198
10576
|
});
|
|
10199
10577
|
}
|
|
10200
10578
|
};
|
|
10201
|
-
_el$
|
|
10579
|
+
_el$199.$$click = async () => {
|
|
10202
10580
|
await window.vessel.sessions.delete(s.name);
|
|
10203
10581
|
await loadSessionList();
|
|
10204
10582
|
};
|
|
10205
|
-
return _el$
|
|
10583
|
+
return _el$185;
|
|
10206
10584
|
})()
|
|
10207
10585
|
}));
|
|
10208
10586
|
return _el$54;
|
|
@@ -10215,7 +10593,7 @@ const Settings = () => {
|
|
|
10215
10593
|
},
|
|
10216
10594
|
get children() {
|
|
10217
10595
|
return [(() => {
|
|
10218
|
-
var _el$59 = _tmpl$6$
|
|
10596
|
+
var _el$59 = _tmpl$6$2(), _el$60 = _el$59.firstChild, _el$61 = _el$60.nextSibling;
|
|
10219
10597
|
_el$61.addEventListener("change", (e) => {
|
|
10220
10598
|
const id = e.currentTarget.value;
|
|
10221
10599
|
setChatProviderId(id);
|
|
@@ -10229,10 +10607,10 @@ const Settings = () => {
|
|
|
10229
10607
|
insert(_el$61, createComponent(For, {
|
|
10230
10608
|
each: CHAT_PROVIDERS,
|
|
10231
10609
|
children: (p) => (() => {
|
|
10232
|
-
var _el$
|
|
10233
|
-
insert(_el$
|
|
10234
|
-
createRenderEffect(() => _el$
|
|
10235
|
-
return _el$
|
|
10610
|
+
var _el$200 = _tmpl$29();
|
|
10611
|
+
insert(_el$200, () => p.name);
|
|
10612
|
+
createRenderEffect(() => _el$200.value = p.id);
|
|
10613
|
+
return _el$200;
|
|
10236
10614
|
})()
|
|
10237
10615
|
}));
|
|
10238
10616
|
createRenderEffect(() => _el$61.value = chatProviderId());
|
|
@@ -10250,7 +10628,7 @@ const Settings = () => {
|
|
|
10250
10628
|
return !chatProviderMeta().requiresKey;
|
|
10251
10629
|
},
|
|
10252
10630
|
get children() {
|
|
10253
|
-
return _tmpl$7$
|
|
10631
|
+
return _tmpl$7$2();
|
|
10254
10632
|
}
|
|
10255
10633
|
}), null);
|
|
10256
10634
|
_el$66.$$input = (e) => {
|
|
@@ -10265,7 +10643,7 @@ const Settings = () => {
|
|
|
10265
10643
|
return memo(() => !!chatHasStoredApiKey())() && !chatApiKey().trim();
|
|
10266
10644
|
},
|
|
10267
10645
|
get children() {
|
|
10268
|
-
return _tmpl$8();
|
|
10646
|
+
return _tmpl$8$1();
|
|
10269
10647
|
}
|
|
10270
10648
|
}), null);
|
|
10271
10649
|
insert(_el$62, createComponent(Show, {
|
|
@@ -10288,12 +10666,12 @@ const Settings = () => {
|
|
|
10288
10666
|
},
|
|
10289
10667
|
get fallback() {
|
|
10290
10668
|
return (() => {
|
|
10291
|
-
var _el$
|
|
10292
|
-
_el$
|
|
10293
|
-
setAttribute(_el$
|
|
10294
|
-
createRenderEffect(() => setAttribute(_el$
|
|
10295
|
-
createRenderEffect(() => _el$
|
|
10296
|
-
return _el$
|
|
10669
|
+
var _el$201 = _tmpl$37();
|
|
10670
|
+
_el$201.$$input = (e) => setChatModel(e.currentTarget.value);
|
|
10671
|
+
setAttribute(_el$201, "spellcheck", false);
|
|
10672
|
+
createRenderEffect(() => setAttribute(_el$201, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() && !chatHasStoredApiKey() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
|
|
10673
|
+
createRenderEffect(() => _el$201.value = chatModel());
|
|
10674
|
+
return _el$201;
|
|
10297
10675
|
})();
|
|
10298
10676
|
},
|
|
10299
10677
|
get children() {
|
|
@@ -10304,10 +10682,10 @@ const Settings = () => {
|
|
|
10304
10682
|
return providerModels();
|
|
10305
10683
|
},
|
|
10306
10684
|
children: (m) => (() => {
|
|
10307
|
-
var _el$
|
|
10308
|
-
_el$
|
|
10309
|
-
insert(_el$
|
|
10310
|
-
return _el$
|
|
10685
|
+
var _el$202 = _tmpl$29();
|
|
10686
|
+
_el$202.value = m;
|
|
10687
|
+
insert(_el$202, m);
|
|
10688
|
+
return _el$202;
|
|
10311
10689
|
})()
|
|
10312
10690
|
}));
|
|
10313
10691
|
createRenderEffect(() => _el$72.value = chatModel());
|
|
@@ -10328,9 +10706,9 @@ const Settings = () => {
|
|
|
10328
10706
|
return modelFetchWarning();
|
|
10329
10707
|
},
|
|
10330
10708
|
children: (warning) => (() => {
|
|
10331
|
-
var _el$
|
|
10332
|
-
insert(_el$
|
|
10333
|
-
return _el$
|
|
10709
|
+
var _el$203 = _tmpl$38();
|
|
10710
|
+
insert(_el$203, warning);
|
|
10711
|
+
return _el$203;
|
|
10334
10712
|
})()
|
|
10335
10713
|
}), null);
|
|
10336
10714
|
createRenderEffect(() => _el$73.disabled = modelFetchState() === "loading");
|
|
@@ -10363,8 +10741,8 @@ const Settings = () => {
|
|
|
10363
10741
|
},
|
|
10364
10742
|
get fallback() {
|
|
10365
10743
|
return (() => {
|
|
10366
|
-
var _el$
|
|
10367
|
-
_el$
|
|
10744
|
+
var _el$204 = _tmpl$41(), _el$205 = _el$204.firstChild, _el$206 = _el$205.nextSibling, _el$207 = _el$206.firstChild, _el$208 = _el$207.nextSibling, _el$212 = _el$206.nextSibling;
|
|
10745
|
+
_el$207.$$input = (e) => {
|
|
10368
10746
|
const nextEmail = e.currentTarget.value;
|
|
10369
10747
|
if (nextEmail.trim().toLowerCase() !== premiumEmail().trim().toLowerCase()) {
|
|
10370
10748
|
resetPremiumActivationFlow();
|
|
@@ -10372,8 +10750,8 @@ const Settings = () => {
|
|
|
10372
10750
|
}
|
|
10373
10751
|
setPremiumEmail(nextEmail);
|
|
10374
10752
|
};
|
|
10375
|
-
setAttribute(_el$
|
|
10376
|
-
_el$
|
|
10753
|
+
setAttribute(_el$207, "spellcheck", false);
|
|
10754
|
+
_el$208.$$click = async () => {
|
|
10377
10755
|
setPremiumLoading(true);
|
|
10378
10756
|
setPremiumMessage(null);
|
|
10379
10757
|
try {
|
|
@@ -10402,23 +10780,23 @@ const Settings = () => {
|
|
|
10402
10780
|
setPremiumLoading(false);
|
|
10403
10781
|
}
|
|
10404
10782
|
};
|
|
10405
|
-
insert(_el$
|
|
10783
|
+
insert(_el$208, (() => {
|
|
10406
10784
|
var _c$ = memo(() => !!premiumLoading());
|
|
10407
10785
|
return () => _c$() ? "Sending..." : premiumCodeSent() ? "Resend Code" : "Send Code";
|
|
10408
10786
|
})());
|
|
10409
|
-
insert(_el$
|
|
10787
|
+
insert(_el$204, createComponent(Show, {
|
|
10410
10788
|
get when() {
|
|
10411
10789
|
return premiumCodeSent();
|
|
10412
10790
|
},
|
|
10413
10791
|
get children() {
|
|
10414
|
-
var _el$
|
|
10415
|
-
_el$
|
|
10792
|
+
var _el$209 = _tmpl$39(), _el$210 = _el$209.firstChild, _el$211 = _el$210.nextSibling;
|
|
10793
|
+
_el$210.$$input = (e) => {
|
|
10416
10794
|
const nextCode = e.currentTarget.value.replace(/\D+/g, "").slice(0, 6);
|
|
10417
10795
|
setPremiumCode(nextCode);
|
|
10418
10796
|
setPremiumMessage(null);
|
|
10419
10797
|
};
|
|
10420
|
-
setAttribute(_el$
|
|
10421
|
-
_el$
|
|
10798
|
+
setAttribute(_el$210, "spellcheck", false);
|
|
10799
|
+
_el$211.$$click = async () => {
|
|
10422
10800
|
setPremiumLoading(true);
|
|
10423
10801
|
setPremiumMessage(null);
|
|
10424
10802
|
try {
|
|
@@ -10445,53 +10823,53 @@ const Settings = () => {
|
|
|
10445
10823
|
setPremiumLoading(false);
|
|
10446
10824
|
}
|
|
10447
10825
|
};
|
|
10448
|
-
insert(_el$
|
|
10449
|
-
createRenderEffect(() => _el$
|
|
10450
|
-
createRenderEffect(() => _el$
|
|
10451
|
-
return _el$
|
|
10826
|
+
insert(_el$211, () => premiumLoading() ? "Verifying..." : "Verify Code");
|
|
10827
|
+
createRenderEffect(() => _el$211.disabled = premiumLoading() || !premiumEmail().trim() || premiumCode().trim().length !== 6 || !premiumChallengeToken());
|
|
10828
|
+
createRenderEffect(() => _el$210.value = premiumCode());
|
|
10829
|
+
return _el$209;
|
|
10452
10830
|
}
|
|
10453
|
-
}), _el$
|
|
10454
|
-
_el$
|
|
10831
|
+
}), _el$212);
|
|
10832
|
+
_el$212.$$click = () => {
|
|
10455
10833
|
startPremiumCheckout();
|
|
10456
10834
|
};
|
|
10457
|
-
insert(_el$
|
|
10835
|
+
insert(_el$204, createComponent(Show, {
|
|
10458
10836
|
get when() {
|
|
10459
10837
|
return premiumMessage();
|
|
10460
10838
|
},
|
|
10461
10839
|
children: (msg) => (() => {
|
|
10462
|
-
var _el$
|
|
10463
|
-
insert(_el$
|
|
10840
|
+
var _el$214 = _tmpl$42();
|
|
10841
|
+
insert(_el$214, () => msg().text);
|
|
10464
10842
|
createRenderEffect((_p$) => {
|
|
10465
10843
|
var _v$11 = !!(msg().kind === "success"), _v$12 = !!(msg().kind === "error");
|
|
10466
|
-
_v$11 !== _p$.e && _el$
|
|
10467
|
-
_v$12 !== _p$.t && _el$
|
|
10844
|
+
_v$11 !== _p$.e && _el$214.classList.toggle("success", _p$.e = _v$11);
|
|
10845
|
+
_v$12 !== _p$.t && _el$214.classList.toggle("error", _p$.t = _v$12);
|
|
10468
10846
|
return _p$;
|
|
10469
10847
|
}, {
|
|
10470
10848
|
e: void 0,
|
|
10471
10849
|
t: void 0
|
|
10472
10850
|
});
|
|
10473
|
-
return _el$
|
|
10851
|
+
return _el$214;
|
|
10474
10852
|
})()
|
|
10475
10853
|
}), null);
|
|
10476
|
-
insert(_el$
|
|
10854
|
+
insert(_el$204, createComponent(Show, {
|
|
10477
10855
|
get when() {
|
|
10478
10856
|
return premiumState().email || premiumEmail();
|
|
10479
10857
|
},
|
|
10480
10858
|
get children() {
|
|
10481
|
-
var _el$
|
|
10482
|
-
_el$
|
|
10859
|
+
var _el$213 = _tmpl$40();
|
|
10860
|
+
_el$213.$$click = async () => {
|
|
10483
10861
|
const state = await window.vessel.premium.reset();
|
|
10484
10862
|
setPremiumState(state);
|
|
10485
10863
|
setPremiumEmail("");
|
|
10486
10864
|
resetPremiumActivationFlow();
|
|
10487
10865
|
setPremiumMessage(null);
|
|
10488
10866
|
};
|
|
10489
|
-
return _el$
|
|
10867
|
+
return _el$213;
|
|
10490
10868
|
}
|
|
10491
10869
|
}), null);
|
|
10492
|
-
createRenderEffect(() => _el$
|
|
10493
|
-
createRenderEffect(() => _el$
|
|
10494
|
-
return _el$
|
|
10870
|
+
createRenderEffect(() => _el$208.disabled = premiumLoading() || !premiumEmail().trim());
|
|
10871
|
+
createRenderEffect(() => _el$207.value = premiumEmail());
|
|
10872
|
+
return _el$204;
|
|
10495
10873
|
})();
|
|
10496
10874
|
},
|
|
10497
10875
|
get children() {
|
|
@@ -10537,18 +10915,18 @@ const Settings = () => {
|
|
|
10537
10915
|
return premiumMessage();
|
|
10538
10916
|
},
|
|
10539
10917
|
children: (msg) => (() => {
|
|
10540
|
-
var _el$
|
|
10541
|
-
insert(_el$
|
|
10918
|
+
var _el$215 = _tmpl$42();
|
|
10919
|
+
insert(_el$215, () => msg().text);
|
|
10542
10920
|
createRenderEffect((_p$) => {
|
|
10543
10921
|
var _v$13 = !!(msg().kind === "success"), _v$14 = !!(msg().kind === "error");
|
|
10544
|
-
_v$13 !== _p$.e && _el$
|
|
10545
|
-
_v$14 !== _p$.t && _el$
|
|
10922
|
+
_v$13 !== _p$.e && _el$215.classList.toggle("success", _p$.e = _v$13);
|
|
10923
|
+
_v$14 !== _p$.t && _el$215.classList.toggle("error", _p$.t = _v$14);
|
|
10546
10924
|
return _p$;
|
|
10547
10925
|
}, {
|
|
10548
10926
|
e: void 0,
|
|
10549
10927
|
t: void 0
|
|
10550
10928
|
});
|
|
10551
|
-
return _el$
|
|
10929
|
+
return _el$215;
|
|
10552
10930
|
})()
|
|
10553
10931
|
}), null);
|
|
10554
10932
|
return _el$82;
|
|
@@ -10567,7 +10945,7 @@ const Settings = () => {
|
|
|
10567
10945
|
return premiumActive();
|
|
10568
10946
|
},
|
|
10569
10947
|
get fallback() {
|
|
10570
|
-
return _tmpl$
|
|
10948
|
+
return _tmpl$43();
|
|
10571
10949
|
},
|
|
10572
10950
|
get children() {
|
|
10573
10951
|
return [_tmpl$16(), createComponent(Show, {
|
|
@@ -10575,17 +10953,17 @@ const Settings = () => {
|
|
|
10575
10953
|
return vaultEntries().length > 0;
|
|
10576
10954
|
},
|
|
10577
10955
|
get children() {
|
|
10578
|
-
var _el$95 = _tmpl$5$
|
|
10956
|
+
var _el$95 = _tmpl$5$2();
|
|
10579
10957
|
insert(_el$95, createComponent(For, {
|
|
10580
10958
|
get each() {
|
|
10581
10959
|
return vaultEntries();
|
|
10582
10960
|
},
|
|
10583
10961
|
children: (entry) => (() => {
|
|
10584
|
-
var _el$
|
|
10585
|
-
insert(_el$
|
|
10586
|
-
insert(_el$
|
|
10587
|
-
insert(_el$
|
|
10588
|
-
insert(_el$
|
|
10962
|
+
var _el$217 = _tmpl$44(), _el$218 = _el$217.firstChild, _el$219 = _el$218.firstChild, _el$220 = _el$219.nextSibling, _el$221 = _el$220.firstChild, _el$222 = _el$218.nextSibling;
|
|
10963
|
+
insert(_el$219, () => entry.label);
|
|
10964
|
+
insert(_el$220, () => entry.username, _el$221);
|
|
10965
|
+
insert(_el$220, () => entry.domainPattern, null);
|
|
10966
|
+
insert(_el$220, createComponent(Show, {
|
|
10589
10967
|
get when() {
|
|
10590
10968
|
return entry.useCount > 0;
|
|
10591
10969
|
},
|
|
@@ -10593,8 +10971,8 @@ const Settings = () => {
|
|
|
10593
10971
|
return [" ", "· Used ", memo(() => entry.useCount), "x"];
|
|
10594
10972
|
}
|
|
10595
10973
|
}), null);
|
|
10596
|
-
_el$
|
|
10597
|
-
return _el$
|
|
10974
|
+
_el$222.$$click = () => handleVaultRemove(entry.id);
|
|
10975
|
+
return _el$217;
|
|
10598
10976
|
})()
|
|
10599
10977
|
}));
|
|
10600
10978
|
return _el$95;
|
|
@@ -10651,87 +11029,207 @@ const Settings = () => {
|
|
|
10651
11029
|
return vaultMessage();
|
|
10652
11030
|
},
|
|
10653
11031
|
children: (msg) => (() => {
|
|
10654
|
-
var _el$
|
|
10655
|
-
insert(_el$
|
|
11032
|
+
var _el$223 = _tmpl$42();
|
|
11033
|
+
insert(_el$223, () => msg().text);
|
|
10656
11034
|
createRenderEffect((_p$) => {
|
|
10657
11035
|
var _v$15 = !!(msg().kind === "success"), _v$16 = !!(msg().kind === "error");
|
|
10658
|
-
_v$15 !== _p$.e && _el$
|
|
10659
|
-
_v$16 !== _p$.t && _el$
|
|
11036
|
+
_v$15 !== _p$.e && _el$223.classList.toggle("success", _p$.e = _v$15);
|
|
11037
|
+
_v$16 !== _p$.t && _el$223.classList.toggle("error", _p$.t = _v$16);
|
|
10660
11038
|
return _p$;
|
|
10661
11039
|
}, {
|
|
10662
11040
|
e: void 0,
|
|
10663
11041
|
t: void 0
|
|
10664
11042
|
});
|
|
10665
|
-
return _el$
|
|
11043
|
+
return _el$223;
|
|
10666
11044
|
})()
|
|
10667
11045
|
})];
|
|
10668
11046
|
}
|
|
10669
11047
|
}), null);
|
|
11048
|
+
insert(_el$109, createComponent(Show, {
|
|
11049
|
+
get when() {
|
|
11050
|
+
return !premiumActive();
|
|
11051
|
+
},
|
|
11052
|
+
get children() {
|
|
11053
|
+
return _tmpl$15();
|
|
11054
|
+
}
|
|
11055
|
+
}), null);
|
|
10670
11056
|
insert(_el$108, createComponent(Show, {
|
|
11057
|
+
get when() {
|
|
11058
|
+
return premiumActive();
|
|
11059
|
+
},
|
|
11060
|
+
get fallback() {
|
|
11061
|
+
return _tmpl$45();
|
|
11062
|
+
},
|
|
11063
|
+
get children() {
|
|
11064
|
+
return [_tmpl$19(), createComponent(Show, {
|
|
11065
|
+
get when() {
|
|
11066
|
+
return humanEntries().length > 0;
|
|
11067
|
+
},
|
|
11068
|
+
get children() {
|
|
11069
|
+
var _el$113 = _tmpl$5$2();
|
|
11070
|
+
insert(_el$113, createComponent(For, {
|
|
11071
|
+
get each() {
|
|
11072
|
+
return humanEntries();
|
|
11073
|
+
},
|
|
11074
|
+
children: (entry) => (() => {
|
|
11075
|
+
var _el$225 = _tmpl$46(), _el$226 = _el$225.firstChild, _el$227 = _el$226.firstChild, _el$228 = _el$227.nextSibling, _el$229 = _el$228.firstChild, _el$230 = _el$226.nextSibling;
|
|
11076
|
+
insert(_el$227, () => entry.title);
|
|
11077
|
+
insert(_el$228, () => entry.username, _el$229);
|
|
11078
|
+
insert(_el$228, () => entry.domain, null);
|
|
11079
|
+
insert(_el$228, createComponent(Show, {
|
|
11080
|
+
get when() {
|
|
11081
|
+
return memo(() => !!entry.category)() && entry.category !== "login";
|
|
11082
|
+
},
|
|
11083
|
+
get children() {
|
|
11084
|
+
return [" ", "· ", memo(() => entry.category)];
|
|
11085
|
+
}
|
|
11086
|
+
}), null);
|
|
11087
|
+
insert(_el$228, createComponent(Show, {
|
|
11088
|
+
get when() {
|
|
11089
|
+
return entry.useCount > 0;
|
|
11090
|
+
},
|
|
11091
|
+
get children() {
|
|
11092
|
+
return [" ", "· Used ", memo(() => entry.useCount), "x"];
|
|
11093
|
+
}
|
|
11094
|
+
}), null);
|
|
11095
|
+
_el$230.$$click = () => handleHumanRemove(entry.id);
|
|
11096
|
+
return _el$225;
|
|
11097
|
+
})()
|
|
11098
|
+
}));
|
|
11099
|
+
return _el$113;
|
|
11100
|
+
}
|
|
11101
|
+
}), createComponent(Show, {
|
|
11102
|
+
get when() {
|
|
11103
|
+
return !humanAdding();
|
|
11104
|
+
},
|
|
11105
|
+
get children() {
|
|
11106
|
+
var _el$114 = _tmpl$20();
|
|
11107
|
+
_el$114.$$click = () => {
|
|
11108
|
+
setHumanAdding(true);
|
|
11109
|
+
setHumanMessage(null);
|
|
11110
|
+
};
|
|
11111
|
+
return _el$114;
|
|
11112
|
+
}
|
|
11113
|
+
}), createComponent(Show, {
|
|
11114
|
+
get when() {
|
|
11115
|
+
return humanAdding();
|
|
11116
|
+
},
|
|
11117
|
+
get children() {
|
|
11118
|
+
var _el$115 = _tmpl$21(), _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling, _el$118 = _el$117.nextSibling, _el$119 = _el$118.nextSibling, _el$120 = _el$119.nextSibling, _el$121 = _el$120.nextSibling, _el$122 = _el$121.nextSibling, _el$123 = _el$122.firstChild, _el$124 = _el$123.nextSibling;
|
|
11119
|
+
_el$116.$$input = (e) => setHumanNewTitle(e.currentTarget.value);
|
|
11120
|
+
setAttribute(_el$116, "spellcheck", false);
|
|
11121
|
+
_el$117.$$input = (e) => setHumanNewUrl(e.currentTarget.value);
|
|
11122
|
+
setAttribute(_el$117, "spellcheck", false);
|
|
11123
|
+
_el$118.$$input = (e) => setHumanNewUsername(e.currentTarget.value);
|
|
11124
|
+
setAttribute(_el$118, "spellcheck", false);
|
|
11125
|
+
_el$119.$$input = (e) => setHumanNewPassword(e.currentTarget.value);
|
|
11126
|
+
_el$120.addEventListener("change", (e) => setHumanNewCategory(e.currentTarget.value));
|
|
11127
|
+
_el$121.$$input = (e) => setHumanNewNotes(e.currentTarget.value);
|
|
11128
|
+
setAttribute(_el$121, "spellcheck", false);
|
|
11129
|
+
_el$123.$$click = handleHumanAdd;
|
|
11130
|
+
_el$124.$$click = () => {
|
|
11131
|
+
setHumanAdding(false);
|
|
11132
|
+
setHumanNewTitle("");
|
|
11133
|
+
setHumanNewUrl("");
|
|
11134
|
+
setHumanNewUsername("");
|
|
11135
|
+
setHumanNewPassword("");
|
|
11136
|
+
setHumanNewNotes("");
|
|
11137
|
+
setHumanNewCategory("login");
|
|
11138
|
+
};
|
|
11139
|
+
createRenderEffect(() => _el$116.value = humanNewTitle());
|
|
11140
|
+
createRenderEffect(() => _el$117.value = humanNewUrl());
|
|
11141
|
+
createRenderEffect(() => _el$118.value = humanNewUsername());
|
|
11142
|
+
createRenderEffect(() => _el$119.value = humanNewPassword());
|
|
11143
|
+
createRenderEffect(() => _el$120.value = humanNewCategory());
|
|
11144
|
+
createRenderEffect(() => _el$121.value = humanNewNotes());
|
|
11145
|
+
return _el$115;
|
|
11146
|
+
}
|
|
11147
|
+
}), createComponent(Show, {
|
|
11148
|
+
get when() {
|
|
11149
|
+
return humanMessage();
|
|
11150
|
+
},
|
|
11151
|
+
children: (msg) => (() => {
|
|
11152
|
+
var _el$231 = _tmpl$42();
|
|
11153
|
+
insert(_el$231, () => msg().text);
|
|
11154
|
+
createRenderEffect((_p$) => {
|
|
11155
|
+
var _v$17 = !!(msg().kind === "success"), _v$18 = !!(msg().kind === "error");
|
|
11156
|
+
_v$17 !== _p$.e && _el$231.classList.toggle("success", _p$.e = _v$17);
|
|
11157
|
+
_v$18 !== _p$.t && _el$231.classList.toggle("error", _p$.t = _v$18);
|
|
11158
|
+
return _p$;
|
|
11159
|
+
}, {
|
|
11160
|
+
e: void 0,
|
|
11161
|
+
t: void 0
|
|
11162
|
+
});
|
|
11163
|
+
return _el$231;
|
|
11164
|
+
})()
|
|
11165
|
+
})];
|
|
11166
|
+
}
|
|
11167
|
+
}), null);
|
|
11168
|
+
insert(_el$126, createComponent(Show, {
|
|
10671
11169
|
get when() {
|
|
10672
11170
|
return autofillProfiles().length > 0;
|
|
10673
11171
|
},
|
|
10674
11172
|
get children() {
|
|
10675
|
-
var _el$
|
|
10676
|
-
insert(_el$
|
|
11173
|
+
var _el$129 = _tmpl$5$2();
|
|
11174
|
+
insert(_el$129, createComponent(For, {
|
|
10677
11175
|
get each() {
|
|
10678
11176
|
return autofillProfiles();
|
|
10679
11177
|
},
|
|
10680
11178
|
children: (profile) => (() => {
|
|
10681
|
-
var _el$
|
|
10682
|
-
insert(_el$
|
|
10683
|
-
insert(_el$
|
|
10684
|
-
insert(_el$
|
|
11179
|
+
var _el$232 = _tmpl$47(), _el$233 = _el$232.firstChild, _el$234 = _el$233.firstChild, _el$235 = _el$234.nextSibling, _el$236 = _el$233.nextSibling, _el$237 = _el$236.firstChild, _el$238 = _el$237.nextSibling;
|
|
11180
|
+
insert(_el$234, () => profile.label);
|
|
11181
|
+
insert(_el$235, () => profile.firstName, null);
|
|
11182
|
+
insert(_el$235, (() => {
|
|
10685
11183
|
var _c$2 = memo(() => !!profile.lastName);
|
|
10686
11184
|
return () => _c$2() ? ` ${profile.lastName}` : "";
|
|
10687
11185
|
})(), null);
|
|
10688
|
-
insert(_el$
|
|
11186
|
+
insert(_el$235, (() => {
|
|
10689
11187
|
var _c$3 = memo(() => !!profile.email);
|
|
10690
11188
|
return () => _c$3() ? ` · ${profile.email}` : "";
|
|
10691
11189
|
})(), null);
|
|
10692
|
-
_el$
|
|
10693
|
-
_el$
|
|
10694
|
-
return _el$
|
|
11190
|
+
_el$237.$$click = () => handleAutofillFill(profile.id);
|
|
11191
|
+
_el$238.$$click = () => handleAutofillRemove(profile.id);
|
|
11192
|
+
return _el$232;
|
|
10695
11193
|
})()
|
|
10696
11194
|
}));
|
|
10697
|
-
return _el$
|
|
11195
|
+
return _el$129;
|
|
10698
11196
|
}
|
|
10699
11197
|
}), null);
|
|
10700
|
-
insert(_el$
|
|
11198
|
+
insert(_el$126, createComponent(Show, {
|
|
10701
11199
|
get when() {
|
|
10702
11200
|
return !autofillAdding();
|
|
10703
11201
|
},
|
|
10704
11202
|
get children() {
|
|
10705
|
-
var _el$
|
|
10706
|
-
_el$
|
|
11203
|
+
var _el$130 = _tmpl$22();
|
|
11204
|
+
_el$130.$$click = () => {
|
|
10707
11205
|
setAutofillAdding(true);
|
|
10708
11206
|
setAutofillMessage(null);
|
|
10709
11207
|
};
|
|
10710
|
-
return _el$
|
|
11208
|
+
return _el$130;
|
|
10711
11209
|
}
|
|
10712
11210
|
}), null);
|
|
10713
|
-
insert(_el$
|
|
11211
|
+
insert(_el$126, createComponent(Show, {
|
|
10714
11212
|
get when() {
|
|
10715
11213
|
return autofillAdding();
|
|
10716
11214
|
},
|
|
10717
11215
|
get children() {
|
|
10718
|
-
var _el$
|
|
10719
|
-
_el$
|
|
10720
|
-
setAttribute(_el$
|
|
10721
|
-
_el$
|
|
10722
|
-
_el$
|
|
10723
|
-
_el$
|
|
10724
|
-
setAttribute(_el$
|
|
10725
|
-
_el$
|
|
10726
|
-
_el$
|
|
10727
|
-
_el$
|
|
10728
|
-
_el$
|
|
10729
|
-
_el$
|
|
10730
|
-
_el$
|
|
10731
|
-
_el$
|
|
10732
|
-
_el$
|
|
10733
|
-
_el$
|
|
10734
|
-
_el$
|
|
11216
|
+
var _el$131 = _tmpl$23(), _el$132 = _el$131.firstChild, _el$133 = _el$132.nextSibling, _el$134 = _el$133.firstChild, _el$135 = _el$134.nextSibling, _el$136 = _el$133.nextSibling, _el$137 = _el$136.firstChild, _el$138 = _el$137.nextSibling, _el$139 = _el$136.nextSibling, _el$140 = _el$139.nextSibling, _el$141 = _el$140.nextSibling, _el$142 = _el$141.nextSibling, _el$143 = _el$142.firstChild, _el$144 = _el$143.nextSibling, _el$145 = _el$144.nextSibling, _el$146 = _el$142.nextSibling, _el$147 = _el$146.nextSibling, _el$148 = _el$147.firstChild, _el$149 = _el$148.nextSibling;
|
|
11217
|
+
_el$132.$$input = (e) => setAutofillLabel(e.currentTarget.value);
|
|
11218
|
+
setAttribute(_el$132, "spellcheck", false);
|
|
11219
|
+
_el$134.$$input = (e) => setAutofillFirstName(e.currentTarget.value);
|
|
11220
|
+
_el$135.$$input = (e) => setAutofillLastName(e.currentTarget.value);
|
|
11221
|
+
_el$137.$$input = (e) => setAutofillEmail(e.currentTarget.value);
|
|
11222
|
+
setAttribute(_el$137, "spellcheck", false);
|
|
11223
|
+
_el$138.$$input = (e) => setAutofillPhone(e.currentTarget.value);
|
|
11224
|
+
_el$139.$$input = (e) => setAutofillOrg(e.currentTarget.value);
|
|
11225
|
+
_el$140.$$input = (e) => setAutofillAddr1(e.currentTarget.value);
|
|
11226
|
+
_el$141.$$input = (e) => setAutofillAddr2(e.currentTarget.value);
|
|
11227
|
+
_el$143.$$input = (e) => setAutofillCity(e.currentTarget.value);
|
|
11228
|
+
_el$144.$$input = (e) => setAutofillState(e.currentTarget.value);
|
|
11229
|
+
_el$145.$$input = (e) => setAutofillZip(e.currentTarget.value);
|
|
11230
|
+
_el$146.$$input = (e) => setAutofillCountry(e.currentTarget.value);
|
|
11231
|
+
_el$148.$$click = handleAutofillAdd;
|
|
11232
|
+
_el$149.$$click = () => {
|
|
10735
11233
|
setAutofillAdding(false);
|
|
10736
11234
|
setAutofillLabel("");
|
|
10737
11235
|
setAutofillFirstName("");
|
|
@@ -10746,89 +11244,89 @@ const Settings = () => {
|
|
|
10746
11244
|
setAutofillZip("");
|
|
10747
11245
|
setAutofillCountry("");
|
|
10748
11246
|
};
|
|
10749
|
-
createRenderEffect(() => _el$
|
|
10750
|
-
createRenderEffect(() => _el$
|
|
10751
|
-
createRenderEffect(() => _el$
|
|
10752
|
-
createRenderEffect(() => _el$
|
|
10753
|
-
createRenderEffect(() => _el$
|
|
10754
|
-
createRenderEffect(() => _el$
|
|
10755
|
-
createRenderEffect(() => _el$
|
|
10756
|
-
createRenderEffect(() => _el$
|
|
10757
|
-
createRenderEffect(() => _el$
|
|
10758
|
-
createRenderEffect(() => _el$
|
|
10759
|
-
createRenderEffect(() => _el$
|
|
10760
|
-
createRenderEffect(() => _el$
|
|
10761
|
-
return _el$
|
|
11247
|
+
createRenderEffect(() => _el$132.value = autofillLabel());
|
|
11248
|
+
createRenderEffect(() => _el$134.value = autofillFirstName());
|
|
11249
|
+
createRenderEffect(() => _el$135.value = autofillLastName());
|
|
11250
|
+
createRenderEffect(() => _el$137.value = autofillEmail());
|
|
11251
|
+
createRenderEffect(() => _el$138.value = autofillPhone());
|
|
11252
|
+
createRenderEffect(() => _el$139.value = autofillOrg());
|
|
11253
|
+
createRenderEffect(() => _el$140.value = autofillAddr1());
|
|
11254
|
+
createRenderEffect(() => _el$141.value = autofillAddr2());
|
|
11255
|
+
createRenderEffect(() => _el$143.value = autofillCity());
|
|
11256
|
+
createRenderEffect(() => _el$144.value = autofillState());
|
|
11257
|
+
createRenderEffect(() => _el$145.value = autofillZip());
|
|
11258
|
+
createRenderEffect(() => _el$146.value = autofillCountry());
|
|
11259
|
+
return _el$131;
|
|
10762
11260
|
}
|
|
10763
11261
|
}), null);
|
|
10764
|
-
insert(_el$
|
|
11262
|
+
insert(_el$126, createComponent(Show, {
|
|
10765
11263
|
get when() {
|
|
10766
11264
|
return autofillMessage();
|
|
10767
11265
|
},
|
|
10768
11266
|
children: (msg) => (() => {
|
|
10769
|
-
var _el$
|
|
10770
|
-
insert(_el$
|
|
11267
|
+
var _el$239 = _tmpl$42();
|
|
11268
|
+
insert(_el$239, () => msg().text);
|
|
10771
11269
|
createRenderEffect((_p$) => {
|
|
10772
|
-
var _v$
|
|
10773
|
-
_v$
|
|
10774
|
-
_v$
|
|
11270
|
+
var _v$19 = !!(msg().kind === "success"), _v$20 = !!(msg().kind === "error");
|
|
11271
|
+
_v$19 !== _p$.e && _el$239.classList.toggle("success", _p$.e = _v$19);
|
|
11272
|
+
_v$20 !== _p$.t && _el$239.classList.toggle("error", _p$.t = _v$20);
|
|
10775
11273
|
return _p$;
|
|
10776
11274
|
}, {
|
|
10777
11275
|
e: void 0,
|
|
10778
11276
|
t: void 0
|
|
10779
11277
|
});
|
|
10780
|
-
return _el$
|
|
11278
|
+
return _el$239;
|
|
10781
11279
|
})()
|
|
10782
11280
|
}), null);
|
|
10783
|
-
_el$
|
|
10784
|
-
_el$
|
|
10785
|
-
_el$
|
|
10786
|
-
insert(_el$
|
|
11281
|
+
_el$153.$$click = () => setTelemetryEnabled(!telemetryEnabled());
|
|
11282
|
+
_el$157.addEventListener("change", (e) => setTheme(e.currentTarget.value));
|
|
11283
|
+
_el$160.addEventListener("change", (e) => setDomainMode(e.currentTarget.value));
|
|
11284
|
+
insert(_el$158, createComponent(Show, {
|
|
10787
11285
|
get when() {
|
|
10788
11286
|
return domainMode() !== "none";
|
|
10789
11287
|
},
|
|
10790
11288
|
get children() {
|
|
10791
11289
|
return [(() => {
|
|
10792
|
-
var _el$
|
|
10793
|
-
_el$
|
|
10794
|
-
setAttribute(_el$
|
|
10795
|
-
createRenderEffect(() => setAttribute(_el$
|
|
10796
|
-
createRenderEffect(() => _el$
|
|
10797
|
-
return _el$
|
|
11290
|
+
var _el$161 = _tmpl$24();
|
|
11291
|
+
_el$161.$$input = (e) => setDomainList(e.currentTarget.value);
|
|
11292
|
+
setAttribute(_el$161, "spellcheck", false);
|
|
11293
|
+
createRenderEffect(() => setAttribute(_el$161, "placeholder", domainMode() === "allowlist" ? "example.com\napi.example.com" : "ads.example.com\ntracker.io"));
|
|
11294
|
+
createRenderEffect(() => _el$161.value = domainList());
|
|
11295
|
+
return _el$161;
|
|
10798
11296
|
})(), (() => {
|
|
10799
|
-
var _el$
|
|
10800
|
-
insert(_el$
|
|
10801
|
-
return _el$
|
|
11297
|
+
var _el$162 = _tmpl$25();
|
|
11298
|
+
insert(_el$162, () => domainMode() === "allowlist" ? "One domain per line. Subdomains of listed domains are also allowed." : "One domain per line. Subdomains of listed domains are also blocked.");
|
|
11299
|
+
return _el$162;
|
|
10802
11300
|
})()];
|
|
10803
11301
|
}
|
|
10804
11302
|
}), null);
|
|
10805
|
-
insert(_el$
|
|
11303
|
+
insert(_el$158, createComponent(Show, {
|
|
10806
11304
|
get when() {
|
|
10807
11305
|
return domainMode() === "none";
|
|
10808
11306
|
},
|
|
10809
11307
|
get children() {
|
|
10810
|
-
return _tmpl$
|
|
11308
|
+
return _tmpl$26();
|
|
10811
11309
|
}
|
|
10812
11310
|
}), null);
|
|
10813
|
-
_el$
|
|
10814
|
-
addEventListener(_el$
|
|
11311
|
+
_el$165.$$click = handleSave;
|
|
11312
|
+
addEventListener(_el$166, "click", closeSettings, true);
|
|
10815
11313
|
insert(_el$2, createComponent(Show, {
|
|
10816
11314
|
get when() {
|
|
10817
11315
|
return status();
|
|
10818
11316
|
},
|
|
10819
11317
|
children: (currentStatus) => (() => {
|
|
10820
|
-
var _el$
|
|
10821
|
-
insert(_el$
|
|
11318
|
+
var _el$240 = _tmpl$42();
|
|
11319
|
+
insert(_el$240, () => currentStatus().text);
|
|
10822
11320
|
createRenderEffect((_p$) => {
|
|
10823
|
-
var _v$
|
|
10824
|
-
_v$
|
|
10825
|
-
_v$
|
|
11321
|
+
var _v$21 = !!(currentStatus().kind === "success"), _v$22 = !!(currentStatus().kind === "error");
|
|
11322
|
+
_v$21 !== _p$.e && _el$240.classList.toggle("success", _p$.e = _v$21);
|
|
11323
|
+
_v$22 !== _p$.t && _el$240.classList.toggle("error", _p$.t = _v$22);
|
|
10826
11324
|
return _p$;
|
|
10827
11325
|
}, {
|
|
10828
11326
|
e: void 0,
|
|
10829
11327
|
t: void 0
|
|
10830
11328
|
});
|
|
10831
|
-
return _el$
|
|
11329
|
+
return _el$240;
|
|
10832
11330
|
})()
|
|
10833
11331
|
}), null);
|
|
10834
11332
|
createRenderEffect((_p$) => {
|
|
@@ -10841,8 +11339,8 @@ const Settings = () => {
|
|
|
10841
11339
|
_v$6 !== _p$.n && (_el$53.disabled = _p$.n = _v$6);
|
|
10842
11340
|
_v$7 !== _p$.s && _el$58.classList.toggle("on", _p$.s = _v$7);
|
|
10843
11341
|
_v$8 !== _p$.h && setAttribute(_el$58, "aria-checked", _p$.h = _v$8);
|
|
10844
|
-
_v$9 !== _p$.r && _el$
|
|
10845
|
-
_v$0 !== _p$.d && setAttribute(_el$
|
|
11342
|
+
_v$9 !== _p$.r && _el$153.classList.toggle("on", _p$.r = _v$9);
|
|
11343
|
+
_v$0 !== _p$.d && setAttribute(_el$153, "aria-checked", _p$.d = _v$0);
|
|
10846
11344
|
return _p$;
|
|
10847
11345
|
}, {
|
|
10848
11346
|
e: void 0,
|
|
@@ -10863,15 +11361,15 @@ const Settings = () => {
|
|
|
10863
11361
|
createRenderEffect(() => _el$37.value = obsidianVaultPath());
|
|
10864
11362
|
createRenderEffect(() => _el$40.value = agentTranscriptMode());
|
|
10865
11363
|
createRenderEffect(() => _el$52.value = sessionSaveName());
|
|
10866
|
-
createRenderEffect(() => _el$
|
|
10867
|
-
createRenderEffect(() => _el$
|
|
11364
|
+
createRenderEffect(() => _el$157.value = theme());
|
|
11365
|
+
createRenderEffect(() => _el$160.value = domainMode());
|
|
10868
11366
|
return _el$;
|
|
10869
|
-
})(), _tmpl$
|
|
11367
|
+
})(), _tmpl$28()];
|
|
10870
11368
|
}
|
|
10871
11369
|
});
|
|
10872
11370
|
};
|
|
10873
11371
|
delegateEvents(["click", "keydown", "input"]);
|
|
10874
|
-
var _tmpl$$
|
|
11372
|
+
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=keyboard-help><div class=keyboard-help-header><h2 class=keyboard-help-title>Keyboard Shortcuts</h2><button class=keyboard-help-close><kbd>Esc</kbd></button></div><div class=keyboard-help-grid>`), _tmpl$2$2 = /* @__PURE__ */ template(`<style>
|
|
10875
11373
|
.keyboard-help {
|
|
10876
11374
|
width: min(380px, calc(100vw - 32px));
|
|
10877
11375
|
background: var(--bg-elevated);
|
|
@@ -10953,7 +11451,7 @@ var _tmpl$$1 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div cla
|
|
|
10953
11451
|
font-size: 13px;
|
|
10954
11452
|
color: var(--text-secondary);
|
|
10955
11453
|
}
|
|
10956
|
-
`), _tmpl$3 = /* @__PURE__ */ template(`<div class=keyboard-help-keys>`), _tmpl$4 = /* @__PURE__ */ template(`<div class=keyboard-help-action>`), _tmpl$5 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>/`), _tmpl$6 = /* @__PURE__ */ template(`<kbd>`), _tmpl$7 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>+`);
|
|
11454
|
+
`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class=keyboard-help-keys>`), _tmpl$4$1 = /* @__PURE__ */ template(`<div class=keyboard-help-action>`), _tmpl$5$1 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>/`), _tmpl$6$1 = /* @__PURE__ */ template(`<kbd>`), _tmpl$7$1 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>+`);
|
|
10957
11455
|
const SHORTCUTS = [{
|
|
10958
11456
|
keys: "Ctrl+L",
|
|
10959
11457
|
action: "AI Command Bar",
|
|
@@ -11003,6 +11501,14 @@ const SHORTCUTS = [{
|
|
|
11003
11501
|
}, {
|
|
11004
11502
|
keys: "Ctrl+Shift+P",
|
|
11005
11503
|
action: "Save Page as PDF"
|
|
11504
|
+
}, {
|
|
11505
|
+
keys: "Ctrl+Shift+I",
|
|
11506
|
+
action: "Toggle Picture-in-Picture",
|
|
11507
|
+
privateMode: false
|
|
11508
|
+
}, {
|
|
11509
|
+
keys: "Ctrl+Shift+Delete",
|
|
11510
|
+
action: "Clear Browsing Data",
|
|
11511
|
+
privateMode: false
|
|
11006
11512
|
}, {
|
|
11007
11513
|
keys: "Ctrl+,",
|
|
11008
11514
|
action: "Settings",
|
|
@@ -11030,26 +11536,165 @@ const KeyboardHelp = (props) => {
|
|
|
11030
11536
|
},
|
|
11031
11537
|
get children() {
|
|
11032
11538
|
return [(() => {
|
|
11033
|
-
var _el$ = _tmpl$$
|
|
11539
|
+
var _el$ = _tmpl$$2(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
|
|
11034
11540
|
addEventListener(_el$, "click", props.onClose, true);
|
|
11035
11541
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
11036
11542
|
addEventListener(_el$5, "click", props.onClose, true);
|
|
11037
11543
|
insert(_el$6, () => shortcuts().map((s) => [(() => {
|
|
11038
|
-
var _el$8 = _tmpl$3();
|
|
11039
|
-
insert(_el$8, () => shortcutParts(s.keys).map((combo, comboIndex) => [comboIndex > 0 && _tmpl$5(), memo(() => combo.map((key, keyIndex) => [keyIndex > 0 && _tmpl$7(), (() => {
|
|
11040
|
-
var _el$1 = _tmpl$6();
|
|
11544
|
+
var _el$8 = _tmpl$3$1();
|
|
11545
|
+
insert(_el$8, () => shortcutParts(s.keys).map((combo, comboIndex) => [comboIndex > 0 && _tmpl$5$1(), memo(() => combo.map((key, keyIndex) => [keyIndex > 0 && _tmpl$7$1(), (() => {
|
|
11546
|
+
var _el$1 = _tmpl$6$1();
|
|
11041
11547
|
insert(_el$1, key);
|
|
11042
11548
|
return _el$1;
|
|
11043
11549
|
})()]))]));
|
|
11044
11550
|
return _el$8;
|
|
11045
11551
|
})(), (() => {
|
|
11046
|
-
var _el$9 = _tmpl$4();
|
|
11552
|
+
var _el$9 = _tmpl$4$1();
|
|
11047
11553
|
insert(_el$9, () => s.action);
|
|
11048
11554
|
return _el$9;
|
|
11049
11555
|
})()]));
|
|
11050
11556
|
createRenderEffect(() => _el$.classList.toggle("closing", !!closing()));
|
|
11051
11557
|
return _el$;
|
|
11052
|
-
})(), _tmpl$2$
|
|
11558
|
+
})(), _tmpl$2$2()];
|
|
11559
|
+
}
|
|
11560
|
+
});
|
|
11561
|
+
};
|
|
11562
|
+
delegateEvents(["click"]);
|
|
11563
|
+
var _tmpl$$1 = /* @__PURE__ */ template(`<div class=clear-data-header><h3>Clear browsing data</h3><button class=clear-data-close>`), _tmpl$2$1 = /* @__PURE__ */ template(`<div class=clear-data-range><label>Time range</label><select class=clear-data-select>`), _tmpl$3 = /* @__PURE__ */ template(`<div class=clear-data-checks><label class=clear-data-check><input type=checkbox><span>Cached images and files</span></label><label class=clear-data-check><input type=checkbox><span>Cookies and other site data</span></label><label class=clear-data-check><input type=checkbox><span>Browsing history</span></label><label class=clear-data-check><input type=checkbox><span>Local storage`), _tmpl$4 = /* @__PURE__ */ template(`<div class=clear-data-error>`), _tmpl$5 = /* @__PURE__ */ template(`<div class=clear-data-actions><button class=clear-data-cancel>Cancel</button><button class=clear-data-confirm>`), _tmpl$6 = /* @__PURE__ */ template(`<div class=clear-data-overlay><div class=clear-data-dialog>`), _tmpl$7 = /* @__PURE__ */ template(`<div class=clear-data-done><span>Browsing data cleared`), _tmpl$8 = /* @__PURE__ */ template(`<option>`);
|
|
11564
|
+
const TIME_RANGES = [{
|
|
11565
|
+
value: "hour",
|
|
11566
|
+
label: "Last hour"
|
|
11567
|
+
}, {
|
|
11568
|
+
value: "day",
|
|
11569
|
+
label: "Last 24 hours"
|
|
11570
|
+
}, {
|
|
11571
|
+
value: "week",
|
|
11572
|
+
label: "Last 7 days"
|
|
11573
|
+
}, {
|
|
11574
|
+
value: "month",
|
|
11575
|
+
label: "Last 30 days"
|
|
11576
|
+
}, {
|
|
11577
|
+
value: "all",
|
|
11578
|
+
label: "All time"
|
|
11579
|
+
}];
|
|
11580
|
+
const ClearBrowsingData = (props) => {
|
|
11581
|
+
const [cache, setCache] = createSignal(true);
|
|
11582
|
+
const [cookies, setCookies] = createSignal(false);
|
|
11583
|
+
const [history, setHistory] = createSignal(true);
|
|
11584
|
+
const [localStorage2, setLocalStorage] = createSignal(false);
|
|
11585
|
+
const [timeRange, setTimeRange] = createSignal("all");
|
|
11586
|
+
const [clearing, setClearing] = createSignal(false);
|
|
11587
|
+
const [done, setDone] = createSignal(false);
|
|
11588
|
+
const [error, setError] = createSignal("");
|
|
11589
|
+
const handleClear = async () => {
|
|
11590
|
+
setClearing(true);
|
|
11591
|
+
setError("");
|
|
11592
|
+
try {
|
|
11593
|
+
await window.vessel.browsingData.clear({
|
|
11594
|
+
cache: cache(),
|
|
11595
|
+
cookies: cookies(),
|
|
11596
|
+
history: history(),
|
|
11597
|
+
localStorage: localStorage2(),
|
|
11598
|
+
timeRange: timeRange()
|
|
11599
|
+
});
|
|
11600
|
+
setDone(true);
|
|
11601
|
+
setTimeout(() => {
|
|
11602
|
+
props.onClose();
|
|
11603
|
+
setDone(false);
|
|
11604
|
+
}, 1500);
|
|
11605
|
+
} catch {
|
|
11606
|
+
setError("Could not clear browsing data.");
|
|
11607
|
+
} finally {
|
|
11608
|
+
setClearing(false);
|
|
11609
|
+
}
|
|
11610
|
+
};
|
|
11611
|
+
const reset = () => {
|
|
11612
|
+
setCache(true);
|
|
11613
|
+
setCookies(false);
|
|
11614
|
+
setHistory(true);
|
|
11615
|
+
setLocalStorage(false);
|
|
11616
|
+
setTimeRange("all");
|
|
11617
|
+
setDone(false);
|
|
11618
|
+
setError("");
|
|
11619
|
+
};
|
|
11620
|
+
return createComponent(Show, {
|
|
11621
|
+
get when() {
|
|
11622
|
+
return props.open;
|
|
11623
|
+
},
|
|
11624
|
+
get children() {
|
|
11625
|
+
var _el$ = _tmpl$6(), _el$2 = _el$.firstChild;
|
|
11626
|
+
addEventListener(_el$, "click", props.onClose, true);
|
|
11627
|
+
_el$2.$$click = (e) => e.stopPropagation();
|
|
11628
|
+
insert(_el$2, createComponent(Show, {
|
|
11629
|
+
get when() {
|
|
11630
|
+
return !done();
|
|
11631
|
+
},
|
|
11632
|
+
get fallback() {
|
|
11633
|
+
return (() => {
|
|
11634
|
+
var _el$20 = _tmpl$7(), _el$21 = _el$20.firstChild;
|
|
11635
|
+
insert(_el$20, createComponent(check_default, {
|
|
11636
|
+
size: 20,
|
|
11637
|
+
"stroke-width": 2.5
|
|
11638
|
+
}), _el$21);
|
|
11639
|
+
return _el$20;
|
|
11640
|
+
})();
|
|
11641
|
+
},
|
|
11642
|
+
get children() {
|
|
11643
|
+
return [(() => {
|
|
11644
|
+
var _el$3 = _tmpl$$1(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
|
|
11645
|
+
_el$5.$$click = () => {
|
|
11646
|
+
reset();
|
|
11647
|
+
props.onClose();
|
|
11648
|
+
};
|
|
11649
|
+
insert(_el$5, createComponent(x_default, {
|
|
11650
|
+
size: 14
|
|
11651
|
+
}));
|
|
11652
|
+
return _el$3;
|
|
11653
|
+
})(), (() => {
|
|
11654
|
+
var _el$6 = _tmpl$2$1(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
11655
|
+
_el$8.addEventListener("change", (e) => setTimeRange(e.currentTarget.value));
|
|
11656
|
+
insert(_el$8, () => TIME_RANGES.map((r) => (() => {
|
|
11657
|
+
var _el$22 = _tmpl$8();
|
|
11658
|
+
insert(_el$22, () => r.label);
|
|
11659
|
+
createRenderEffect(() => _el$22.value = r.value);
|
|
11660
|
+
return _el$22;
|
|
11661
|
+
})()));
|
|
11662
|
+
createRenderEffect(() => _el$8.value = timeRange());
|
|
11663
|
+
return _el$6;
|
|
11664
|
+
})(), (() => {
|
|
11665
|
+
var _el$9 = _tmpl$3(), _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$12.nextSibling, _el$15 = _el$14.firstChild;
|
|
11666
|
+
_el$1.addEventListener("change", (e) => setCache(e.currentTarget.checked));
|
|
11667
|
+
_el$11.addEventListener("change", (e) => setCookies(e.currentTarget.checked));
|
|
11668
|
+
_el$13.addEventListener("change", (e) => setHistory(e.currentTarget.checked));
|
|
11669
|
+
_el$15.addEventListener("change", (e) => setLocalStorage(e.currentTarget.checked));
|
|
11670
|
+
createRenderEffect(() => _el$1.checked = cache());
|
|
11671
|
+
createRenderEffect(() => _el$11.checked = cookies());
|
|
11672
|
+
createRenderEffect(() => _el$13.checked = history());
|
|
11673
|
+
createRenderEffect(() => _el$15.checked = localStorage2());
|
|
11674
|
+
return _el$9;
|
|
11675
|
+
})(), createComponent(Show, {
|
|
11676
|
+
get when() {
|
|
11677
|
+
return error();
|
|
11678
|
+
},
|
|
11679
|
+
get children() {
|
|
11680
|
+
var _el$16 = _tmpl$4();
|
|
11681
|
+
insert(_el$16, error);
|
|
11682
|
+
return _el$16;
|
|
11683
|
+
}
|
|
11684
|
+
}), (() => {
|
|
11685
|
+
var _el$17 = _tmpl$5(), _el$18 = _el$17.firstChild, _el$19 = _el$18.nextSibling;
|
|
11686
|
+
_el$18.$$click = () => {
|
|
11687
|
+
reset();
|
|
11688
|
+
props.onClose();
|
|
11689
|
+
};
|
|
11690
|
+
_el$19.$$click = handleClear;
|
|
11691
|
+
insert(_el$19, () => clearing() ? "Clearing..." : "Clear data");
|
|
11692
|
+
createRenderEffect(() => _el$19.disabled = clearing() || !cache() && !cookies() && !history() && !localStorage2());
|
|
11693
|
+
return _el$17;
|
|
11694
|
+
})()];
|
|
11695
|
+
}
|
|
11696
|
+
}));
|
|
11697
|
+
return _el$;
|
|
11053
11698
|
}
|
|
11054
11699
|
});
|
|
11055
11700
|
};
|
|
@@ -11103,6 +11748,16 @@ function setupKeybindings(handlers) {
|
|
|
11103
11748
|
handlers.printToPdf?.();
|
|
11104
11749
|
return;
|
|
11105
11750
|
}
|
|
11751
|
+
if (ctrl && key === "i" && e.shiftKey) {
|
|
11752
|
+
e.preventDefault();
|
|
11753
|
+
handlers.togglePip?.();
|
|
11754
|
+
return;
|
|
11755
|
+
}
|
|
11756
|
+
if (ctrl && e.shiftKey && e.key === "Delete") {
|
|
11757
|
+
e.preventDefault();
|
|
11758
|
+
handlers.clearBrowsingData?.();
|
|
11759
|
+
return;
|
|
11760
|
+
}
|
|
11106
11761
|
if (ctrl && key === "p" && !e.shiftKey) {
|
|
11107
11762
|
e.preventDefault();
|
|
11108
11763
|
handlers.print?.();
|
|
@@ -11182,6 +11837,7 @@ const App = () => {
|
|
|
11182
11837
|
} = useTabs();
|
|
11183
11838
|
const [highlightToast, setHighlightToast] = createSignal(null);
|
|
11184
11839
|
const [keyboardHelpOpen, setKeyboardHelpOpen] = createSignal(false);
|
|
11840
|
+
const [clearDataOpen, setClearDataOpen] = createSignal(false);
|
|
11185
11841
|
const loadingPresence = useAnimatedPresence(() => !!activeTab()?.isLoading, 300);
|
|
11186
11842
|
const showHighlightResult = (result) => {
|
|
11187
11843
|
if (result.success && result.text) {
|
|
@@ -11220,6 +11876,7 @@ const App = () => {
|
|
|
11220
11876
|
applyTheme(s.theme ?? "dark");
|
|
11221
11877
|
};
|
|
11222
11878
|
onMount(() => {
|
|
11879
|
+
initSecurityStore();
|
|
11223
11880
|
void loadAndApplyTheme();
|
|
11224
11881
|
window.vessel.ui.rendererReady(view);
|
|
11225
11882
|
const cleanupSettings = window.vessel.settings.onUpdate((settings) => {
|
|
@@ -11266,12 +11923,20 @@ const App = () => {
|
|
|
11266
11923
|
toggleDevTools: isChromeOnlyWindow ? void 0 : () => {
|
|
11267
11924
|
window.vessel.devtoolsPanel.toggle();
|
|
11268
11925
|
},
|
|
11269
|
-
toggleKeyboardHelp: () => setKeyboardHelpOpen((v) => !v)
|
|
11926
|
+
toggleKeyboardHelp: () => setKeyboardHelpOpen((v) => !v),
|
|
11927
|
+
togglePip: isChromeOnlyWindow ? void 0 : () => {
|
|
11928
|
+
void window.vessel.pip.toggle();
|
|
11929
|
+
},
|
|
11930
|
+
clearBrowsingData: isChromeOnlyWindow ? void 0 : () => {
|
|
11931
|
+
setClearDataOpen(true);
|
|
11932
|
+
}
|
|
11270
11933
|
});
|
|
11271
11934
|
const cleanupCapture = window.vessel.highlights.onCaptureResult(showHighlightResult);
|
|
11935
|
+
const cleanupClearData = window.vessel.browsingData.onOpenDialog(() => setClearDataOpen(true));
|
|
11272
11936
|
onCleanup(() => {
|
|
11273
11937
|
cleanupKeys();
|
|
11274
11938
|
cleanupCapture();
|
|
11939
|
+
cleanupClearData();
|
|
11275
11940
|
});
|
|
11276
11941
|
});
|
|
11277
11942
|
if (view === "sidebar") {
|
|
@@ -11305,7 +11970,9 @@ const App = () => {
|
|
|
11305
11970
|
}), _el$2);
|
|
11306
11971
|
insert(_el$2, createComponent(TitleBar, {}), null);
|
|
11307
11972
|
insert(_el$2, createComponent(TabBar, {}), null);
|
|
11308
|
-
insert(_el$2, createComponent(AddressBar, {
|
|
11973
|
+
insert(_el$2, createComponent(AddressBar, {
|
|
11974
|
+
onClearData: () => setClearDataOpen(true)
|
|
11975
|
+
}), null);
|
|
11309
11976
|
insert(_el$2, createComponent(Show, {
|
|
11310
11977
|
get when() {
|
|
11311
11978
|
return loadingPresence.visible();
|
|
@@ -11322,6 +11989,12 @@ const App = () => {
|
|
|
11322
11989
|
return [createComponent(CommandBar, {}), createComponent(Settings, {})];
|
|
11323
11990
|
}
|
|
11324
11991
|
}), null);
|
|
11992
|
+
insert(_el$, createComponent(ClearBrowsingData, {
|
|
11993
|
+
get open() {
|
|
11994
|
+
return clearDataOpen();
|
|
11995
|
+
},
|
|
11996
|
+
onClose: () => setClearDataOpen(false)
|
|
11997
|
+
}), null);
|
|
11325
11998
|
insert(_el$, createComponent(KeyboardHelp, {
|
|
11326
11999
|
get open() {
|
|
11327
12000
|
return keyboardHelpOpen();
|