@quanta-intellect/vessel-browser 0.1.118 → 0.1.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main/index.js +673 -408
- package/out/preload/index.js +10 -0
- package/out/renderer/assets/{index-COyRPuS5.js → index-DvhZyq1k.js} +600 -478
- package/out/renderer/index.html +1 -1
- package/package.json +1 -1
package/out/main/index.js
CHANGED
|
@@ -343,8 +343,43 @@ function setSetting(key2, value) {
|
|
|
343
343
|
function flushPersist$5() {
|
|
344
344
|
return saveDirty ? persistNow() : Promise.resolve();
|
|
345
345
|
}
|
|
346
|
+
function isAirGapped() {
|
|
347
|
+
const hasAirGapSwitch = typeof electron.app?.commandLine?.hasSwitch === "function" && electron.app.commandLine.hasSwitch("air-gapped");
|
|
348
|
+
return hasAirGapSwitch || process.env.VESSEL_AIR_GAPPED === "1";
|
|
349
|
+
}
|
|
350
|
+
const LOCAL_PROVIDER_IDS = /* @__PURE__ */ new Set(["ollama", "llama_cpp"]);
|
|
351
|
+
function isLocalProvider(providerId) {
|
|
352
|
+
return LOCAL_PROVIDER_IDS.has(providerId);
|
|
353
|
+
}
|
|
354
|
+
function isLocalHostname(hostname) {
|
|
355
|
+
const normalized = hostname.toLowerCase();
|
|
356
|
+
return normalized === "localhost" || normalized === "127.0.0.1" || normalized === "::1" || normalized === "[::1]";
|
|
357
|
+
}
|
|
358
|
+
function isLocalBaseUrl(baseUrl) {
|
|
359
|
+
if (!baseUrl) return false;
|
|
360
|
+
try {
|
|
361
|
+
return isLocalHostname(new URL(baseUrl).hostname);
|
|
362
|
+
} catch {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
function getAirGapBlockReason(url) {
|
|
367
|
+
if (!isAirGapped()) return null;
|
|
368
|
+
let parsed;
|
|
369
|
+
try {
|
|
370
|
+
parsed = new URL(url);
|
|
371
|
+
} catch {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
375
|
+
return null;
|
|
376
|
+
}
|
|
377
|
+
return isLocalHostname(parsed.hostname) ? null : `Air-gapped mode blocked network access to ${parsed.hostname}.`;
|
|
378
|
+
}
|
|
346
379
|
function checkDomainPolicy(url) {
|
|
347
380
|
if (!url || url.startsWith("about:")) return null;
|
|
381
|
+
const airGapBlockReason = getAirGapBlockReason(url);
|
|
382
|
+
if (airGapBlockReason) return airGapBlockReason;
|
|
348
383
|
const settings2 = loadSettings();
|
|
349
384
|
const policy = settings2.domainPolicy;
|
|
350
385
|
if (policy.allowedDomains.length === 0 && policy.blockedDomains.length === 0) {
|
|
@@ -3396,7 +3431,7 @@ class TabManager {
|
|
|
3396
3431
|
}
|
|
3397
3432
|
}
|
|
3398
3433
|
}
|
|
3399
|
-
const Channels = {
|
|
3434
|
+
const Channels$1 = {
|
|
3400
3435
|
// Tab management
|
|
3401
3436
|
TAB_CREATE: "tab:create",
|
|
3402
3437
|
TAB_CLOSE: "tab:close",
|
|
@@ -3441,6 +3476,9 @@ const Channels = {
|
|
|
3441
3476
|
SIDEBAR_RESIZE: "ui:sidebar-resize",
|
|
3442
3477
|
SIDEBAR_RESIZE_START: "ui:sidebar-resize-start",
|
|
3443
3478
|
SIDEBAR_RESIZE_COMMIT: "ui:sidebar-resize-commit",
|
|
3479
|
+
SIDEBAR_POPOUT: "ui:sidebar-popout",
|
|
3480
|
+
SIDEBAR_DOCK: "ui:sidebar-dock",
|
|
3481
|
+
SIDEBAR_STATE_UPDATE: "ui:sidebar-state-update",
|
|
3444
3482
|
SIDEBAR_CONTEXT_MENU: "ui:sidebar-context-menu",
|
|
3445
3483
|
FOCUS_MODE_TOGGLE: "ui:focus-mode-toggle",
|
|
3446
3484
|
SETTINGS_VISIBILITY: "ui:settings-visibility",
|
|
@@ -4691,6 +4729,9 @@ function assertFeatureUnlocked(featureName, featureLabel = featureName) {
|
|
|
4691
4729
|
}
|
|
4692
4730
|
}
|
|
4693
4731
|
async function getCheckoutUrl(email) {
|
|
4732
|
+
if (isAirGapped()) {
|
|
4733
|
+
return errorResult("Checkout is unavailable in air-gapped mode.");
|
|
4734
|
+
}
|
|
4694
4735
|
try {
|
|
4695
4736
|
const params = new URLSearchParams();
|
|
4696
4737
|
if (email) params.set("email", email);
|
|
@@ -4709,6 +4750,9 @@ async function getCheckoutUrl(email) {
|
|
|
4709
4750
|
}
|
|
4710
4751
|
}
|
|
4711
4752
|
async function getPortalUrl() {
|
|
4753
|
+
if (isAirGapped()) {
|
|
4754
|
+
return errorResult("Billing portal is unavailable in air-gapped mode.");
|
|
4755
|
+
}
|
|
4712
4756
|
const current = loadSettings().premium;
|
|
4713
4757
|
const identifier = current.verificationToken;
|
|
4714
4758
|
if (!identifier) {
|
|
@@ -4736,6 +4780,9 @@ async function getPortalUrl() {
|
|
|
4736
4780
|
}
|
|
4737
4781
|
}
|
|
4738
4782
|
async function verifySubscription$1(identifier) {
|
|
4783
|
+
if (isAirGapped()) {
|
|
4784
|
+
return loadSettings().premium;
|
|
4785
|
+
}
|
|
4739
4786
|
const current = loadSettings().premium;
|
|
4740
4787
|
const verificationIdentifier = identifier || current.verificationToken || current.customerId;
|
|
4741
4788
|
if (!verificationIdentifier) {
|
|
@@ -4773,6 +4820,9 @@ async function verifySubscription$1(identifier) {
|
|
|
4773
4820
|
}
|
|
4774
4821
|
}
|
|
4775
4822
|
async function requestActivationCode(email) {
|
|
4823
|
+
if (isAirGapped()) {
|
|
4824
|
+
return errorResult("Activation codes are unavailable in air-gapped mode.");
|
|
4825
|
+
}
|
|
4776
4826
|
const normalizedEmail = email.trim().toLowerCase();
|
|
4777
4827
|
if (!normalizedEmail) {
|
|
4778
4828
|
return errorResult("Email is required");
|
|
@@ -4796,6 +4846,11 @@ async function requestActivationCode(email) {
|
|
|
4796
4846
|
}
|
|
4797
4847
|
}
|
|
4798
4848
|
async function verifyActivationCode(email, code, challengeToken) {
|
|
4849
|
+
if (isAirGapped()) {
|
|
4850
|
+
return errorResult("Activation codes are unavailable in air-gapped mode.", {
|
|
4851
|
+
state: getPremiumState()
|
|
4852
|
+
});
|
|
4853
|
+
}
|
|
4799
4854
|
const normalizedEmail = email.trim().toLowerCase();
|
|
4800
4855
|
const trimmedCode = code.trim();
|
|
4801
4856
|
if (!normalizedEmail) {
|
|
@@ -4844,6 +4899,7 @@ async function verifyActivationCode(email, code, challengeToken) {
|
|
|
4844
4899
|
let revalidationTimer = null;
|
|
4845
4900
|
function startBackgroundRevalidation() {
|
|
4846
4901
|
if (revalidationTimer) return;
|
|
4902
|
+
if (isAirGapped()) return;
|
|
4847
4903
|
const { premium } = loadSettings();
|
|
4848
4904
|
const identifier = premium.verificationToken || premium.customerId;
|
|
4849
4905
|
if (identifier) {
|
|
@@ -4919,6 +4975,7 @@ let eventQueue = [];
|
|
|
4919
4975
|
let flushTimer = null;
|
|
4920
4976
|
let sessionStartedAt = null;
|
|
4921
4977
|
function isEnabled() {
|
|
4978
|
+
if (isAirGapped()) return false;
|
|
4922
4979
|
if (POSTHOG_API_KEY === "YOUR_POSTHOG_KEY_HERE") return false;
|
|
4923
4980
|
if (process.env.VESSEL_DEV === "1") return false;
|
|
4924
4981
|
return loadSettings().telemetryEnabled !== false;
|
|
@@ -6512,7 +6569,7 @@ async function capturePageSnapshot(url, wc, sendToRendererViews) {
|
|
|
6512
6569
|
if (diff.hasChanges) {
|
|
6513
6570
|
const enrichedDiff = enrichWithBurstHistory(key2, diff);
|
|
6514
6571
|
latestPageDiffs.set(key2, enrichedDiff);
|
|
6515
|
-
sendToRendererViews(Channels.PAGE_CHANGED, enrichedDiff);
|
|
6572
|
+
sendToRendererViews(Channels$1.PAGE_CHANGED, enrichedDiff);
|
|
6516
6573
|
} else {
|
|
6517
6574
|
latestPageDiffs.delete(key2);
|
|
6518
6575
|
}
|
|
@@ -6577,6 +6634,131 @@ function schedulePageSnapshotCapture(wc, sendToRendererViews, delayMs = 0, optio
|
|
|
6577
6634
|
}
|
|
6578
6635
|
scheduleTimerAt(wc, sendToRendererViews, nextDueAt, options);
|
|
6579
6636
|
}
|
|
6637
|
+
const DETACHED_WINDOW_MIN_WIDTH = 360;
|
|
6638
|
+
const DETACHED_WINDOW_MIN_HEIGHT = 480;
|
|
6639
|
+
const DETACHED_WINDOW_DEFAULT_WIDTH = 420;
|
|
6640
|
+
const DETACHED_WINDOW_DEFAULT_HEIGHT = 760;
|
|
6641
|
+
function getSidebarPanelState(state2) {
|
|
6642
|
+
return {
|
|
6643
|
+
open: state2.uiState.sidebarPanelMode !== "closed",
|
|
6644
|
+
width: state2.uiState.sidebarWidth,
|
|
6645
|
+
detached: state2.uiState.sidebarPanelMode === "detached"
|
|
6646
|
+
};
|
|
6647
|
+
}
|
|
6648
|
+
function emitSidebarPanelState(state2) {
|
|
6649
|
+
const panelState = getSidebarPanelState(state2);
|
|
6650
|
+
if (!state2.chromeView.webContents.isDestroyed()) {
|
|
6651
|
+
state2.chromeView.webContents.send(Channels$1.SIDEBAR_STATE_UPDATE, panelState);
|
|
6652
|
+
}
|
|
6653
|
+
if (!state2.sidebarView.webContents.isDestroyed()) {
|
|
6654
|
+
state2.sidebarView.webContents.send(
|
|
6655
|
+
Channels$1.SIDEBAR_STATE_UPDATE,
|
|
6656
|
+
panelState
|
|
6657
|
+
);
|
|
6658
|
+
}
|
|
6659
|
+
return panelState;
|
|
6660
|
+
}
|
|
6661
|
+
function isSidebarAttached(state2) {
|
|
6662
|
+
return state2.uiState.sidebarPanelMode === "docked";
|
|
6663
|
+
}
|
|
6664
|
+
function isSidebarDetached(state2) {
|
|
6665
|
+
return state2.uiState.sidebarPanelMode === "detached";
|
|
6666
|
+
}
|
|
6667
|
+
function closeSidebar(state2, relayout) {
|
|
6668
|
+
const sidebarWindow = state2.sidebarWindow;
|
|
6669
|
+
if (sidebarWindow) {
|
|
6670
|
+
state2.sidebarWindow = null;
|
|
6671
|
+
sidebarWindow.contentView.removeChildView(state2.sidebarView);
|
|
6672
|
+
state2.mainWindow.contentView.addChildView(state2.sidebarView);
|
|
6673
|
+
state2.sidebarWindowClosing = true;
|
|
6674
|
+
sidebarWindow.once("closed", () => {
|
|
6675
|
+
state2.sidebarWindowClosing = false;
|
|
6676
|
+
});
|
|
6677
|
+
sidebarWindow.close();
|
|
6678
|
+
}
|
|
6679
|
+
state2.uiState.sidebarPanelMode = "closed";
|
|
6680
|
+
relayout();
|
|
6681
|
+
return emitSidebarPanelState(state2);
|
|
6682
|
+
}
|
|
6683
|
+
function openDockedSidebar(state2, relayout) {
|
|
6684
|
+
state2.uiState.sidebarPanelMode = "docked";
|
|
6685
|
+
relayout();
|
|
6686
|
+
return emitSidebarPanelState(state2);
|
|
6687
|
+
}
|
|
6688
|
+
function toggleDockedSidebar(state2, relayout) {
|
|
6689
|
+
if (isSidebarDetached(state2)) {
|
|
6690
|
+
state2.sidebarWindow?.focus();
|
|
6691
|
+
return getSidebarPanelState(state2);
|
|
6692
|
+
}
|
|
6693
|
+
state2.uiState.sidebarPanelMode = state2.uiState.sidebarPanelMode === "docked" ? "closed" : "docked";
|
|
6694
|
+
relayout();
|
|
6695
|
+
return emitSidebarPanelState(state2);
|
|
6696
|
+
}
|
|
6697
|
+
function layoutDetachedSidebar(state2) {
|
|
6698
|
+
if (!state2.sidebarWindow) return;
|
|
6699
|
+
const [width, height] = state2.sidebarWindow.getContentSize();
|
|
6700
|
+
state2.sidebarView.setBounds({ x: 0, y: 0, width, height });
|
|
6701
|
+
}
|
|
6702
|
+
function detachSidebar(state2, hooks) {
|
|
6703
|
+
if (state2.sidebarWindow) {
|
|
6704
|
+
state2.sidebarWindow.focus();
|
|
6705
|
+
return getSidebarPanelState(state2);
|
|
6706
|
+
}
|
|
6707
|
+
const sidebarWindow = new electron.BaseWindow({
|
|
6708
|
+
width: Math.max(DETACHED_WINDOW_DEFAULT_WIDTH, state2.uiState.sidebarWidth),
|
|
6709
|
+
height: DETACHED_WINDOW_DEFAULT_HEIGHT,
|
|
6710
|
+
minWidth: DETACHED_WINDOW_MIN_WIDTH,
|
|
6711
|
+
minHeight: DETACHED_WINDOW_MIN_HEIGHT,
|
|
6712
|
+
frame: true,
|
|
6713
|
+
show: false,
|
|
6714
|
+
backgroundColor: "#1a1a1e",
|
|
6715
|
+
title: "Vessel Agent",
|
|
6716
|
+
icon: hooks.getWindowIconPath()
|
|
6717
|
+
});
|
|
6718
|
+
state2.mainWindow.contentView.removeChildView(state2.sidebarView);
|
|
6719
|
+
sidebarWindow.contentView.addChildView(state2.sidebarView);
|
|
6720
|
+
state2.sidebarWindow = sidebarWindow;
|
|
6721
|
+
state2.uiState.sidebarPanelMode = "detached";
|
|
6722
|
+
sidebarWindow.on("resize", () => layoutDetachedSidebar(state2));
|
|
6723
|
+
sidebarWindow.on("close", (event) => {
|
|
6724
|
+
if (state2.sidebarWindowClosing) return;
|
|
6725
|
+
event.preventDefault();
|
|
6726
|
+
dockSidebar(state2, hooks);
|
|
6727
|
+
});
|
|
6728
|
+
sidebarWindow.on("closed", () => {
|
|
6729
|
+
if (state2.sidebarWindow !== sidebarWindow) return;
|
|
6730
|
+
state2.sidebarWindow = null;
|
|
6731
|
+
state2.uiState.sidebarPanelMode = "docked";
|
|
6732
|
+
state2.mainWindow.contentView.addChildView(state2.sidebarView);
|
|
6733
|
+
hooks.relayout();
|
|
6734
|
+
emitSidebarPanelState(state2);
|
|
6735
|
+
});
|
|
6736
|
+
hooks.relayout();
|
|
6737
|
+
layoutDetachedSidebar(state2);
|
|
6738
|
+
sidebarWindow.show();
|
|
6739
|
+
sidebarWindow.focus();
|
|
6740
|
+
return emitSidebarPanelState(state2);
|
|
6741
|
+
}
|
|
6742
|
+
function dockSidebar(state2, hooks) {
|
|
6743
|
+
const sidebarWindow = state2.sidebarWindow;
|
|
6744
|
+
if (!sidebarWindow) {
|
|
6745
|
+
state2.uiState.sidebarPanelMode = "docked";
|
|
6746
|
+
hooks.relayout();
|
|
6747
|
+
return emitSidebarPanelState(state2);
|
|
6748
|
+
}
|
|
6749
|
+
state2.sidebarWindow = null;
|
|
6750
|
+
state2.uiState.sidebarPanelMode = "docked";
|
|
6751
|
+
sidebarWindow.contentView.removeChildView(state2.sidebarView);
|
|
6752
|
+
state2.mainWindow.contentView.addChildView(state2.sidebarView);
|
|
6753
|
+
hooks.relayout();
|
|
6754
|
+
state2.sidebarWindowClosing = true;
|
|
6755
|
+
sidebarWindow.once("closed", () => {
|
|
6756
|
+
state2.sidebarWindowClosing = false;
|
|
6757
|
+
});
|
|
6758
|
+
sidebarWindow.close();
|
|
6759
|
+
state2.mainWindow.focus();
|
|
6760
|
+
return emitSidebarPanelState(state2);
|
|
6761
|
+
}
|
|
6580
6762
|
function enableClipboardShortcuts(view) {
|
|
6581
6763
|
view.webContents.on("before-input-event", (event, input) => {
|
|
6582
6764
|
if (!input.control && !input.meta) return;
|
|
@@ -6757,10 +6939,6 @@ function createMainWindow(onTabStateChange) {
|
|
|
6757
6939
|
}
|
|
6758
6940
|
});
|
|
6759
6941
|
sidebarView.setBackgroundColor("#00000000");
|
|
6760
|
-
sidebarView.webContents.on("context-menu", (event, params) => {
|
|
6761
|
-
event.preventDefault();
|
|
6762
|
-
void showSidebarContextMenu(mainWindow, sidebarView, params);
|
|
6763
|
-
});
|
|
6764
6942
|
mainWindow.contentView.addChildView(sidebarView);
|
|
6765
6943
|
const devtoolsPanelView = new electron.WebContentsView({
|
|
6766
6944
|
webPreferences: {
|
|
@@ -6778,7 +6956,7 @@ function createMainWindow(onTabStateChange) {
|
|
|
6778
6956
|
enableClipboardShortcuts(devtoolsPanelView);
|
|
6779
6957
|
const settings2 = loadSettings();
|
|
6780
6958
|
const uiState = {
|
|
6781
|
-
|
|
6959
|
+
sidebarPanelMode: "docked",
|
|
6782
6960
|
sidebarWidth: settings2.sidebarWidth,
|
|
6783
6961
|
focusMode: false,
|
|
6784
6962
|
settingsOpen: false,
|
|
@@ -6797,6 +6975,8 @@ function createMainWindow(onTabStateChange) {
|
|
|
6797
6975
|
});
|
|
6798
6976
|
const state2 = {
|
|
6799
6977
|
mainWindow,
|
|
6978
|
+
sidebarWindow: null,
|
|
6979
|
+
sidebarWindowClosing: false,
|
|
6800
6980
|
chromeView,
|
|
6801
6981
|
sidebarView,
|
|
6802
6982
|
devtoolsPanelView,
|
|
@@ -6806,6 +6986,21 @@ function createMainWindow(onTabStateChange) {
|
|
|
6806
6986
|
mainWindow.on("resize", () => layoutViews(state2));
|
|
6807
6987
|
mainWindow.on("show", () => layoutViews(state2));
|
|
6808
6988
|
mainWindow.on("focus", () => layoutViews(state2));
|
|
6989
|
+
mainWindow.on("closed", () => {
|
|
6990
|
+
const sidebarWindow = state2.sidebarWindow;
|
|
6991
|
+
if (!sidebarWindow) return;
|
|
6992
|
+
state2.sidebarWindow = null;
|
|
6993
|
+
state2.sidebarWindowClosing = true;
|
|
6994
|
+
sidebarWindow.close();
|
|
6995
|
+
});
|
|
6996
|
+
sidebarView.webContents.on("context-menu", (event, params) => {
|
|
6997
|
+
event.preventDefault();
|
|
6998
|
+
void showSidebarContextMenu(
|
|
6999
|
+
state2.sidebarWindow ?? state2.mainWindow,
|
|
7000
|
+
sidebarView,
|
|
7001
|
+
params
|
|
7002
|
+
);
|
|
7003
|
+
});
|
|
6809
7004
|
layoutViews(state2);
|
|
6810
7005
|
return state2;
|
|
6811
7006
|
}
|
|
@@ -6820,7 +7015,8 @@ function layoutViews(state2) {
|
|
|
6820
7015
|
} = state2;
|
|
6821
7016
|
const [width, height] = mainWindow.getContentSize();
|
|
6822
7017
|
const chromeHeight = uiState.focusMode ? 0 : CHROME_HEIGHT;
|
|
6823
|
-
const
|
|
7018
|
+
const sidebarAttached = isSidebarAttached(state2);
|
|
7019
|
+
const sidebarWidth = sidebarAttached ? uiState.sidebarWidth : 0;
|
|
6824
7020
|
const devtoolsHeight = uiState.devtoolsPanelOpen ? uiState.devtoolsPanelHeight : 0;
|
|
6825
7021
|
const chromeNeedsFullHeight = uiState.settingsOpen;
|
|
6826
7022
|
if (chromeNeedsFullHeight) {
|
|
@@ -6829,14 +7025,14 @@ function layoutViews(state2) {
|
|
|
6829
7025
|
chromeView.setBounds({ x: 0, y: 0, width, height: chromeHeight });
|
|
6830
7026
|
}
|
|
6831
7027
|
const resizeHandleOverlap = 6;
|
|
6832
|
-
if (
|
|
7028
|
+
if (sidebarAttached) {
|
|
6833
7029
|
sidebarView.setBounds({
|
|
6834
7030
|
x: width - sidebarWidth - resizeHandleOverlap,
|
|
6835
7031
|
y: chromeHeight,
|
|
6836
7032
|
width: sidebarWidth + resizeHandleOverlap,
|
|
6837
7033
|
height: height - chromeHeight
|
|
6838
7034
|
});
|
|
6839
|
-
} else {
|
|
7035
|
+
} else if (uiState.sidebarPanelMode === "closed") {
|
|
6840
7036
|
sidebarView.setBounds({ x: width, y: 0, width: 0, height: 0 });
|
|
6841
7037
|
}
|
|
6842
7038
|
const contentWidth = width - sidebarWidth;
|
|
@@ -6852,8 +7048,10 @@ function layoutViews(state2) {
|
|
|
6852
7048
|
}
|
|
6853
7049
|
mainWindow.contentView.removeChildView(chromeView);
|
|
6854
7050
|
mainWindow.contentView.addChildView(chromeView);
|
|
6855
|
-
|
|
6856
|
-
|
|
7051
|
+
if (uiState.sidebarPanelMode !== "detached") {
|
|
7052
|
+
mainWindow.contentView.removeChildView(sidebarView);
|
|
7053
|
+
mainWindow.contentView.addChildView(sidebarView);
|
|
7054
|
+
}
|
|
6857
7055
|
mainWindow.contentView.removeChildView(devtoolsPanelView);
|
|
6858
7056
|
mainWindow.contentView.addChildView(devtoolsPanelView);
|
|
6859
7057
|
const activeTab = tabManager.getActiveTab();
|
|
@@ -6870,16 +7068,18 @@ function resizeSidebarViews(state2) {
|
|
|
6870
7068
|
const { mainWindow, sidebarView, devtoolsPanelView, tabManager, uiState } = state2;
|
|
6871
7069
|
const [width, height] = mainWindow.getContentSize();
|
|
6872
7070
|
const chromeHeight = uiState.focusMode ? 0 : CHROME_HEIGHT;
|
|
6873
|
-
const sidebarWidth =
|
|
7071
|
+
const sidebarWidth = isSidebarAttached(state2) ? uiState.sidebarWidth : 0;
|
|
6874
7072
|
const devtoolsHeight = uiState.devtoolsPanelOpen ? uiState.devtoolsPanelHeight : 0;
|
|
6875
7073
|
const resizeHandleOverlap = 6;
|
|
6876
7074
|
const contentWidth = width - sidebarWidth;
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
7075
|
+
if (uiState.sidebarPanelMode !== "detached") {
|
|
7076
|
+
sidebarView.setBounds({
|
|
7077
|
+
x: width - sidebarWidth - resizeHandleOverlap,
|
|
7078
|
+
y: chromeHeight,
|
|
7079
|
+
width: sidebarWidth + resizeHandleOverlap,
|
|
7080
|
+
height: height - chromeHeight
|
|
7081
|
+
});
|
|
7082
|
+
}
|
|
6883
7083
|
if (uiState.devtoolsPanelOpen) {
|
|
6884
7084
|
devtoolsPanelView.setBounds({
|
|
6885
7085
|
x: 0,
|
|
@@ -7020,6 +7220,7 @@ const state$3 = {
|
|
|
7020
7220
|
userDataPath: "",
|
|
7021
7221
|
settingsPath: "",
|
|
7022
7222
|
startupIssues: [],
|
|
7223
|
+
airGapped: isAirGapped(),
|
|
7023
7224
|
mcp: {
|
|
7024
7225
|
configuredPort: 3100,
|
|
7025
7226
|
activePort: null,
|
|
@@ -7047,6 +7248,7 @@ function getRuntimeHealth() {
|
|
|
7047
7248
|
userDataPath: state$3.userDataPath,
|
|
7048
7249
|
settingsPath: state$3.settingsPath,
|
|
7049
7250
|
startupIssues: state$3.startupIssues.map((issue) => ({ ...issue })),
|
|
7251
|
+
airGapped: state$3.airGapped,
|
|
7050
7252
|
mcp: { ...state$3.mcp }
|
|
7051
7253
|
};
|
|
7052
7254
|
}
|
|
@@ -7577,8 +7779,8 @@ function isLoopbackBaseUrl(baseUrl) {
|
|
|
7577
7779
|
}
|
|
7578
7780
|
function resolveAgentToolProfile(config) {
|
|
7579
7781
|
const providerId = config.id;
|
|
7580
|
-
const
|
|
7581
|
-
if (!
|
|
7782
|
+
const isLocalProvider2 = providerId === "ollama" || providerId === "llama_cpp" || providerId === "custom" && isLoopbackBaseUrl(config.baseUrl);
|
|
7783
|
+
if (!isLocalProvider2) return "default";
|
|
7582
7784
|
const sizeInBillions = parseModelSizeInBillions(config.model);
|
|
7583
7785
|
if (sizeInBillions === null) {
|
|
7584
7786
|
return "compact";
|
|
@@ -9379,6 +9581,15 @@ function validateProviderConnection(config, options = { requireModel: true }) {
|
|
|
9379
9581
|
if (!meta) {
|
|
9380
9582
|
return "Selected AI provider is not supported.";
|
|
9381
9583
|
}
|
|
9584
|
+
if (isAirGapped()) {
|
|
9585
|
+
if (meta.id === "custom") {
|
|
9586
|
+
if (!isLocalBaseUrl(normalized.baseUrl)) {
|
|
9587
|
+
return "Air-gapped mode only allows local AI providers. Use a localhost base URL for custom providers.";
|
|
9588
|
+
}
|
|
9589
|
+
} else if (!isLocalProvider(meta.id)) {
|
|
9590
|
+
return `Air-gapped mode only allows local AI providers (Ollama, llama.cpp). ${meta.name} requires internet access.`;
|
|
9591
|
+
}
|
|
9592
|
+
}
|
|
9382
9593
|
if (meta.type !== "codex_oauth" && meta.requiresApiKey && !normalized.apiKey) {
|
|
9383
9594
|
return `${meta.name} requires an API key. Open settings (Ctrl+,) to add one.`;
|
|
9384
9595
|
}
|
|
@@ -11820,7 +12031,7 @@ const TOOL_DEFINITIONS = [
|
|
|
11820
12031
|
{
|
|
11821
12032
|
name: "select_option",
|
|
11822
12033
|
title: "Select Option",
|
|
11823
|
-
description: "Select an option in a <select> dropdown by visible label or option value. Only works on <select> elements
|
|
12034
|
+
description: "Select an option in a <select> dropdown by visible label or option value. Only works on <select> elements. For checkboxes or radio buttons use click instead.",
|
|
11824
12035
|
inputSchema: {
|
|
11825
12036
|
index: zod.z.number().optional().describe("The select element index number"),
|
|
11826
12037
|
selector: zod.z.string().optional().describe("CSS selector as fallback"),
|
|
@@ -11945,7 +12156,7 @@ const TOOL_DEFINITIONS = [
|
|
|
11945
12156
|
"full",
|
|
11946
12157
|
"debug"
|
|
11947
12158
|
]).optional().describe(
|
|
11948
|
-
"Read mode: glance (fastest
|
|
12159
|
+
"Read mode: glance (fastest: viewport snapshot, no JS extraction, ideal for heavy pages), visible_only/results_only/forms_only/summary/text_only for narrow reads, full/debug for the complete page dump"
|
|
11949
12160
|
)
|
|
11950
12161
|
},
|
|
11951
12162
|
tier: 0
|
|
@@ -11953,7 +12164,7 @@ const TOOL_DEFINITIONS = [
|
|
|
11953
12164
|
{
|
|
11954
12165
|
name: "screenshot",
|
|
11955
12166
|
title: "Screenshot",
|
|
11956
|
-
description: "Take a screenshot of the current page
|
|
12167
|
+
description: "Take a screenshot of the current page. Returns the image for visual analysis. Use when you need to verify visual layout, check what's actually rendered on screen, or when text extraction fails on heavy pages.",
|
|
11957
12168
|
inputSchema: {},
|
|
11958
12169
|
tier: 1
|
|
11959
12170
|
},
|
|
@@ -12287,7 +12498,7 @@ const TOOL_DEFINITIONS = [
|
|
|
12287
12498
|
inputSchema: {
|
|
12288
12499
|
index: zod.z.number().optional().describe("Element index of the table to extract"),
|
|
12289
12500
|
selector: zod.z.string().optional().describe(
|
|
12290
|
-
"CSS selector for the table (auto-detected if omitted
|
|
12501
|
+
"CSS selector for the table (auto-detected if omitted; uses first table)"
|
|
12291
12502
|
)
|
|
12292
12503
|
},
|
|
12293
12504
|
tier: 1,
|
|
@@ -24628,13 +24839,13 @@ async function fireJob(job, windowState, runtime2) {
|
|
|
24628
24839
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
24629
24840
|
output: ""
|
|
24630
24841
|
};
|
|
24631
|
-
send(Channels.AUTOMATION_ACTIVITY_START, entry);
|
|
24842
|
+
send(Channels$1.AUTOMATION_ACTIVITY_START, entry);
|
|
24632
24843
|
};
|
|
24633
24844
|
const appendActivity = (chunk) => {
|
|
24634
|
-
send(Channels.AUTOMATION_ACTIVITY_CHUNK, { id: activityId, chunk });
|
|
24845
|
+
send(Channels$1.AUTOMATION_ACTIVITY_CHUNK, { id: activityId, chunk });
|
|
24635
24846
|
};
|
|
24636
24847
|
const finishActivity = (status) => {
|
|
24637
|
-
send(Channels.AUTOMATION_ACTIVITY_END, {
|
|
24848
|
+
send(Channels$1.AUTOMATION_ACTIVITY_END, {
|
|
24638
24849
|
id: activityId,
|
|
24639
24850
|
status,
|
|
24640
24851
|
finishedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -24701,7 +24912,7 @@ function tick(windowState, runtime2) {
|
|
|
24701
24912
|
job.nextRunAt = computeNextRun(job.schedule, firedAt).toISOString();
|
|
24702
24913
|
}
|
|
24703
24914
|
saveJobs();
|
|
24704
|
-
broadcastFn?.(Channels.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24915
|
+
broadcastFn?.(Channels$1.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24705
24916
|
void fireJob(job, windowState, runtime2).catch((err) => {
|
|
24706
24917
|
logger$b.warn("Unexpected error firing job:", err);
|
|
24707
24918
|
}).finally(fireNext);
|
|
@@ -24723,11 +24934,11 @@ function registerScheduleHandlers(windowState, runtime2, sendToAll) {
|
|
|
24723
24934
|
tick(windowState, runtime2);
|
|
24724
24935
|
pollInterval = setInterval(() => tick(windowState, runtime2), 6e4);
|
|
24725
24936
|
}, msToNextMinute);
|
|
24726
|
-
electron.ipcMain.handle(Channels.SCHEDULE_GET_ALL, (event) => {
|
|
24937
|
+
electron.ipcMain.handle(Channels$1.SCHEDULE_GET_ALL, (event) => {
|
|
24727
24938
|
assertTrustedIpcSender(event);
|
|
24728
24939
|
return jobs;
|
|
24729
24940
|
});
|
|
24730
|
-
electron.ipcMain.handle(Channels.SCHEDULE_CREATE, (event, rawJob) => {
|
|
24941
|
+
electron.ipcMain.handle(Channels$1.SCHEDULE_CREATE, (event, rawJob) => {
|
|
24731
24942
|
assertTrustedIpcSender(event);
|
|
24732
24943
|
if (!isValidJobData(rawJob)) {
|
|
24733
24944
|
throw new Error(
|
|
@@ -24742,10 +24953,10 @@ function registerScheduleHandlers(windowState, runtime2, sendToAll) {
|
|
|
24742
24953
|
};
|
|
24743
24954
|
jobs.push(newJob);
|
|
24744
24955
|
saveJobs();
|
|
24745
|
-
sendToAll(Channels.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24956
|
+
sendToAll(Channels$1.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24746
24957
|
return newJob;
|
|
24747
24958
|
});
|
|
24748
|
-
electron.ipcMain.handle(Channels.SCHEDULE_UPDATE, (event, id, updates) => {
|
|
24959
|
+
electron.ipcMain.handle(Channels$1.SCHEDULE_UPDATE, (event, id, updates) => {
|
|
24749
24960
|
assertTrustedIpcSender(event);
|
|
24750
24961
|
if (typeof id !== "string") throw new Error("id must be a string");
|
|
24751
24962
|
const job = jobs.find((j) => j.id === id);
|
|
@@ -24769,17 +24980,17 @@ function registerScheduleHandlers(windowState, runtime2, sendToAll) {
|
|
|
24769
24980
|
}
|
|
24770
24981
|
}
|
|
24771
24982
|
saveJobs();
|
|
24772
|
-
sendToAll(Channels.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24983
|
+
sendToAll(Channels$1.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24773
24984
|
return job;
|
|
24774
24985
|
});
|
|
24775
|
-
electron.ipcMain.handle(Channels.SCHEDULE_DELETE, (event, id) => {
|
|
24986
|
+
electron.ipcMain.handle(Channels$1.SCHEDULE_DELETE, (event, id) => {
|
|
24776
24987
|
assertTrustedIpcSender(event);
|
|
24777
24988
|
if (typeof id !== "string") throw new Error("id must be a string");
|
|
24778
24989
|
const before = jobs.length;
|
|
24779
24990
|
jobs = jobs.filter((j) => j.id !== id);
|
|
24780
24991
|
if (jobs.length === before) return false;
|
|
24781
24992
|
saveJobs();
|
|
24782
|
-
sendToAll(Channels.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24993
|
+
sendToAll(Channels$1.SCHEDULE_JOBS_UPDATE, jobs);
|
|
24783
24994
|
return true;
|
|
24784
24995
|
});
|
|
24785
24996
|
}
|
|
@@ -25136,28 +25347,28 @@ function sanitizeAutofillUpdates(value) {
|
|
|
25136
25347
|
return updates;
|
|
25137
25348
|
}
|
|
25138
25349
|
function registerAutofillHandlers(windowState) {
|
|
25139
|
-
electron.ipcMain.handle(Channels.AUTOFILL_LIST, (event) => {
|
|
25350
|
+
electron.ipcMain.handle(Channels$1.AUTOFILL_LIST, (event) => {
|
|
25140
25351
|
assertTrustedIpcSender(event);
|
|
25141
25352
|
return listProfiles();
|
|
25142
25353
|
});
|
|
25143
25354
|
electron.ipcMain.handle(
|
|
25144
|
-
Channels.AUTOFILL_ADD,
|
|
25355
|
+
Channels$1.AUTOFILL_ADD,
|
|
25145
25356
|
(event, profile) => {
|
|
25146
25357
|
assertTrustedIpcSender(event);
|
|
25147
25358
|
return addProfile(sanitizeAutofillProfile(profile));
|
|
25148
25359
|
}
|
|
25149
25360
|
);
|
|
25150
|
-
electron.ipcMain.handle(Channels.AUTOFILL_UPDATE, (event, id, updates) => {
|
|
25361
|
+
electron.ipcMain.handle(Channels$1.AUTOFILL_UPDATE, (event, id, updates) => {
|
|
25151
25362
|
assertTrustedIpcSender(event);
|
|
25152
25363
|
assertString(id, "id");
|
|
25153
25364
|
return updateProfile(id, sanitizeAutofillUpdates(updates));
|
|
25154
25365
|
});
|
|
25155
|
-
electron.ipcMain.handle(Channels.AUTOFILL_DELETE, (event, id) => {
|
|
25366
|
+
electron.ipcMain.handle(Channels$1.AUTOFILL_DELETE, (event, id) => {
|
|
25156
25367
|
assertTrustedIpcSender(event);
|
|
25157
25368
|
assertString(id, "id");
|
|
25158
25369
|
return deleteProfile(id);
|
|
25159
25370
|
});
|
|
25160
|
-
electron.ipcMain.handle(Channels.AUTOFILL_FILL, async (event, profileId) => {
|
|
25371
|
+
electron.ipcMain.handle(Channels$1.AUTOFILL_FILL, async (event, profileId) => {
|
|
25161
25372
|
assertTrustedIpcSender(event);
|
|
25162
25373
|
assertString(profileId, "profileId");
|
|
25163
25374
|
const profile = getProfile(profileId);
|
|
@@ -25205,14 +25416,14 @@ function registerPageDiffHandlers(windowState, sendToRendererViews) {
|
|
|
25205
25416
|
bucket.count += 1;
|
|
25206
25417
|
return bucket.count <= 20;
|
|
25207
25418
|
};
|
|
25208
|
-
electron.ipcMain.handle(Channels.PAGE_DIFF_GET, (event) => {
|
|
25419
|
+
electron.ipcMain.handle(Channels$1.PAGE_DIFF_GET, (event) => {
|
|
25209
25420
|
assertTrustedIpcSender(event);
|
|
25210
25421
|
const activeTab = windowState.tabManager.getActiveTab();
|
|
25211
25422
|
const wc = activeTab?.view.webContents;
|
|
25212
25423
|
if (!wc) return null;
|
|
25213
25424
|
return getLatestPageDiff(wc.getURL());
|
|
25214
25425
|
});
|
|
25215
|
-
electron.ipcMain.handle(Channels.PAGE_DIFF_HISTORY, (event) => {
|
|
25426
|
+
electron.ipcMain.handle(Channels$1.PAGE_DIFF_HISTORY, (event) => {
|
|
25216
25427
|
assertTrustedIpcSender(event);
|
|
25217
25428
|
try {
|
|
25218
25429
|
if (!isPremiumActiveState(getPremiumState())) {
|
|
@@ -25226,7 +25437,7 @@ function registerPageDiffHandlers(windowState, sendToRendererViews) {
|
|
|
25226
25437
|
return [];
|
|
25227
25438
|
}
|
|
25228
25439
|
});
|
|
25229
|
-
electron.ipcMain.on(Channels.PAGE_DIFF_ACTIVITY, (event) => {
|
|
25440
|
+
electron.ipcMain.on(Channels$1.PAGE_DIFF_ACTIVITY, (event) => {
|
|
25230
25441
|
const wc = event.sender;
|
|
25231
25442
|
if (!wc || wc.isDestroyed()) return;
|
|
25232
25443
|
if (!isManagedTabIpcSender(event, windowState.tabManager)) return;
|
|
@@ -25236,7 +25447,7 @@ function registerPageDiffHandlers(windowState, sendToRendererViews) {
|
|
|
25236
25447
|
isActive: () => isActiveWebContents(wc.id)
|
|
25237
25448
|
});
|
|
25238
25449
|
});
|
|
25239
|
-
electron.ipcMain.on(Channels.PAGE_DIFF_DIRTY, (event) => {
|
|
25450
|
+
electron.ipcMain.on(Channels$1.PAGE_DIFF_DIRTY, (event) => {
|
|
25240
25451
|
const wc = event.sender;
|
|
25241
25452
|
if (!wc || wc.isDestroyed()) return;
|
|
25242
25453
|
if (!isManagedTabIpcSender(event, windowState.tabManager)) return;
|
|
@@ -25307,11 +25518,11 @@ function renderReportAsMarkdown(report, traces) {
|
|
|
25307
25518
|
}
|
|
25308
25519
|
const logger$a = createLogger("ResearchIPC");
|
|
25309
25520
|
function registerResearchHandlers(getOrchestrator) {
|
|
25310
|
-
electron.ipcMain.handle(Channels.RESEARCH_STATE_GET, () => {
|
|
25521
|
+
electron.ipcMain.handle(Channels$1.RESEARCH_STATE_GET, () => {
|
|
25311
25522
|
return getOrchestrator().getState();
|
|
25312
25523
|
});
|
|
25313
25524
|
electron.ipcMain.handle(
|
|
25314
|
-
Channels.RESEARCH_START_BRIEF,
|
|
25525
|
+
Channels$1.RESEARCH_START_BRIEF,
|
|
25315
25526
|
async (_event, query) => {
|
|
25316
25527
|
try {
|
|
25317
25528
|
const trimmedQuery = query.trim();
|
|
@@ -25329,7 +25540,7 @@ function registerResearchHandlers(getOrchestrator) {
|
|
|
25329
25540
|
}
|
|
25330
25541
|
}
|
|
25331
25542
|
);
|
|
25332
|
-
electron.ipcMain.handle(Channels.RESEARCH_CONFIRM_BRIEF, () => {
|
|
25543
|
+
electron.ipcMain.handle(Channels$1.RESEARCH_CONFIRM_BRIEF, () => {
|
|
25333
25544
|
try {
|
|
25334
25545
|
if (isToolGated("research_confirm_brief")) {
|
|
25335
25546
|
return { accepted: false, reason: "premium" };
|
|
@@ -25346,7 +25557,7 @@ function registerResearchHandlers(getOrchestrator) {
|
|
|
25346
25557
|
}
|
|
25347
25558
|
});
|
|
25348
25559
|
electron.ipcMain.handle(
|
|
25349
|
-
Channels.RESEARCH_APPROVE_OBJECTIVES,
|
|
25560
|
+
Channels$1.RESEARCH_APPROVE_OBJECTIVES,
|
|
25350
25561
|
(_event, options) => {
|
|
25351
25562
|
try {
|
|
25352
25563
|
if (isToolGated("research_approve_objectives")) {
|
|
@@ -25372,24 +25583,24 @@ function registerResearchHandlers(getOrchestrator) {
|
|
|
25372
25583
|
}
|
|
25373
25584
|
);
|
|
25374
25585
|
electron.ipcMain.handle(
|
|
25375
|
-
Channels.RESEARCH_SET_MODE,
|
|
25586
|
+
Channels$1.RESEARCH_SET_MODE,
|
|
25376
25587
|
(_event, mode) => {
|
|
25377
25588
|
getOrchestrator().setSupervisionMode(mode);
|
|
25378
25589
|
}
|
|
25379
25590
|
);
|
|
25380
25591
|
electron.ipcMain.handle(
|
|
25381
|
-
Channels.RESEARCH_SET_TRACES,
|
|
25592
|
+
Channels$1.RESEARCH_SET_TRACES,
|
|
25382
25593
|
(_event, include) => {
|
|
25383
25594
|
getOrchestrator().setIncludeTraces(include);
|
|
25384
25595
|
}
|
|
25385
25596
|
);
|
|
25386
|
-
electron.ipcMain.handle(Channels.RESEARCH_CANCEL, () => {
|
|
25597
|
+
electron.ipcMain.handle(Channels$1.RESEARCH_CANCEL, () => {
|
|
25387
25598
|
getOrchestrator().cancel();
|
|
25388
25599
|
});
|
|
25389
|
-
electron.ipcMain.handle(Channels.RESEARCH_STOP_AND_SYNTHESIZE, () => {
|
|
25600
|
+
electron.ipcMain.handle(Channels$1.RESEARCH_STOP_AND_SYNTHESIZE, () => {
|
|
25390
25601
|
getOrchestrator().stopAndSynthesizeCurrentFindings();
|
|
25391
25602
|
});
|
|
25392
|
-
electron.ipcMain.handle(Channels.RESEARCH_EXPORT_REPORT, async () => {
|
|
25603
|
+
electron.ipcMain.handle(Channels$1.RESEARCH_EXPORT_REPORT, async () => {
|
|
25393
25604
|
try {
|
|
25394
25605
|
if (isToolGated("research_export_report")) {
|
|
25395
25606
|
return { accepted: false, reason: "premium" };
|
|
@@ -26208,13 +26419,13 @@ function assertVaultUnlocked() {
|
|
|
26208
26419
|
assertFeatureUnlocked("vault", "Agent Credential Vault");
|
|
26209
26420
|
}
|
|
26210
26421
|
function registerVaultHandlers() {
|
|
26211
|
-
electron.ipcMain.handle(Channels.VAULT_LIST, (event) => {
|
|
26422
|
+
electron.ipcMain.handle(Channels$1.VAULT_LIST, (event) => {
|
|
26212
26423
|
assertTrustedIpcSender(event);
|
|
26213
26424
|
assertVaultUnlocked();
|
|
26214
26425
|
return listEntries$1();
|
|
26215
26426
|
});
|
|
26216
26427
|
electron.ipcMain.handle(
|
|
26217
|
-
Channels.VAULT_ADD,
|
|
26428
|
+
Channels$1.VAULT_ADD,
|
|
26218
26429
|
(event, entry) => {
|
|
26219
26430
|
assertTrustedIpcSender(event);
|
|
26220
26431
|
assertVaultUnlocked();
|
|
@@ -26241,7 +26452,7 @@ function registerVaultHandlers() {
|
|
|
26241
26452
|
}
|
|
26242
26453
|
);
|
|
26243
26454
|
electron.ipcMain.handle(
|
|
26244
|
-
Channels.VAULT_UPDATE,
|
|
26455
|
+
Channels$1.VAULT_UPDATE,
|
|
26245
26456
|
(event, id, updates) => {
|
|
26246
26457
|
assertTrustedIpcSender(event);
|
|
26247
26458
|
assertVaultUnlocked();
|
|
@@ -26252,14 +26463,14 @@ function registerVaultHandlers() {
|
|
|
26252
26463
|
return updateEntry$1(id, updates) !== null;
|
|
26253
26464
|
}
|
|
26254
26465
|
);
|
|
26255
|
-
electron.ipcMain.handle(Channels.VAULT_REMOVE, (event, id) => {
|
|
26466
|
+
electron.ipcMain.handle(Channels$1.VAULT_REMOVE, (event, id) => {
|
|
26256
26467
|
assertTrustedIpcSender(event);
|
|
26257
26468
|
assertVaultUnlocked();
|
|
26258
26469
|
assertString(id, "id");
|
|
26259
26470
|
trackVaultAction("credential_removed");
|
|
26260
26471
|
return removeEntry$1(id);
|
|
26261
26472
|
});
|
|
26262
|
-
electron.ipcMain.handle(Channels.VAULT_AUDIT_LOG, (event, limit) => {
|
|
26473
|
+
electron.ipcMain.handle(Channels$1.VAULT_AUDIT_LOG, (event, limit) => {
|
|
26263
26474
|
assertTrustedIpcSender(event);
|
|
26264
26475
|
assertVaultUnlocked();
|
|
26265
26476
|
return readAuditLog$1(limit);
|
|
@@ -26283,20 +26494,20 @@ function assertHumanVaultUnlocked() {
|
|
|
26283
26494
|
assertFeatureUnlocked("human_vault", "Passwords");
|
|
26284
26495
|
}
|
|
26285
26496
|
function registerHumanVaultHandlers() {
|
|
26286
|
-
electron.ipcMain.handle(Channels.HUMAN_VAULT_LIST, (event, domain) => {
|
|
26497
|
+
electron.ipcMain.handle(Channels$1.HUMAN_VAULT_LIST, (event, domain) => {
|
|
26287
26498
|
assertTrustedIpcSender(event);
|
|
26288
26499
|
assertHumanVaultUnlocked();
|
|
26289
26500
|
if (domain !== void 0) assertString(domain, "domain");
|
|
26290
26501
|
return domain ? findForDomain(domain) : listEntries();
|
|
26291
26502
|
});
|
|
26292
|
-
electron.ipcMain.handle(Channels.HUMAN_VAULT_GET, (event, id) => {
|
|
26503
|
+
electron.ipcMain.handle(Channels$1.HUMAN_VAULT_GET, (event, id) => {
|
|
26293
26504
|
assertTrustedIpcSender(event);
|
|
26294
26505
|
assertHumanVaultUnlocked();
|
|
26295
26506
|
assertString(id, "id");
|
|
26296
26507
|
return getEntrySafe(id);
|
|
26297
26508
|
});
|
|
26298
26509
|
electron.ipcMain.handle(
|
|
26299
|
-
Channels.HUMAN_VAULT_SAVE,
|
|
26510
|
+
Channels$1.HUMAN_VAULT_SAVE,
|
|
26300
26511
|
(event, input) => {
|
|
26301
26512
|
assertTrustedIpcSender(event);
|
|
26302
26513
|
assertHumanVaultUnlocked();
|
|
@@ -26328,7 +26539,7 @@ function registerHumanVaultHandlers() {
|
|
|
26328
26539
|
}
|
|
26329
26540
|
);
|
|
26330
26541
|
electron.ipcMain.handle(
|
|
26331
|
-
Channels.HUMAN_VAULT_UPDATE,
|
|
26542
|
+
Channels$1.HUMAN_VAULT_UPDATE,
|
|
26332
26543
|
(event, id, updates) => {
|
|
26333
26544
|
assertTrustedIpcSender(event);
|
|
26334
26545
|
assertHumanVaultUnlocked();
|
|
@@ -26373,24 +26584,24 @@ function registerHumanVaultHandlers() {
|
|
|
26373
26584
|
return safe;
|
|
26374
26585
|
}
|
|
26375
26586
|
);
|
|
26376
|
-
electron.ipcMain.handle(Channels.HUMAN_VAULT_REMOVE, (event, id) => {
|
|
26587
|
+
electron.ipcMain.handle(Channels$1.HUMAN_VAULT_REMOVE, (event, id) => {
|
|
26377
26588
|
assertTrustedIpcSender(event);
|
|
26378
26589
|
assertHumanVaultUnlocked();
|
|
26379
26590
|
assertString(id, "id");
|
|
26380
26591
|
return removeEntry(id);
|
|
26381
26592
|
});
|
|
26382
|
-
electron.ipcMain.handle(Channels.HUMAN_VAULT_AUDIT_LOG, (event, limit) => {
|
|
26593
|
+
electron.ipcMain.handle(Channels$1.HUMAN_VAULT_AUDIT_LOG, (event, limit) => {
|
|
26383
26594
|
assertTrustedIpcSender(event);
|
|
26384
26595
|
assertHumanVaultUnlocked();
|
|
26385
26596
|
return readAuditLog(limit);
|
|
26386
26597
|
});
|
|
26387
26598
|
}
|
|
26388
26599
|
function registerWindowControlHandlers(mainWindow) {
|
|
26389
|
-
electron.ipcMain.handle(Channels.WINDOW_MINIMIZE, (event) => {
|
|
26600
|
+
electron.ipcMain.handle(Channels$1.WINDOW_MINIMIZE, (event) => {
|
|
26390
26601
|
assertTrustedIpcSender(event);
|
|
26391
26602
|
mainWindow.minimize();
|
|
26392
26603
|
});
|
|
26393
|
-
electron.ipcMain.handle(Channels.WINDOW_MAXIMIZE, (event) => {
|
|
26604
|
+
electron.ipcMain.handle(Channels$1.WINDOW_MAXIMIZE, (event) => {
|
|
26394
26605
|
assertTrustedIpcSender(event);
|
|
26395
26606
|
if (mainWindow.isMaximized()) {
|
|
26396
26607
|
mainWindow.unmaximize();
|
|
@@ -26398,7 +26609,7 @@ function registerWindowControlHandlers(mainWindow) {
|
|
|
26398
26609
|
mainWindow.maximize();
|
|
26399
26610
|
}
|
|
26400
26611
|
});
|
|
26401
|
-
electron.ipcMain.handle(Channels.WINDOW_CLOSE, (event) => {
|
|
26612
|
+
electron.ipcMain.handle(Channels$1.WINDOW_CLOSE, (event) => {
|
|
26402
26613
|
assertTrustedIpcSender(event);
|
|
26403
26614
|
mainWindow.close();
|
|
26404
26615
|
});
|
|
@@ -26500,6 +26711,12 @@ function getAdBlockDecision(details) {
|
|
|
26500
26711
|
}
|
|
26501
26712
|
let installed = false;
|
|
26502
26713
|
const defaultSessionTabManagers = /* @__PURE__ */ new Set();
|
|
26714
|
+
function getRequestFilterDecision(details, adBlockingEnabled) {
|
|
26715
|
+
if (getAirGapBlockReason(details.url)) {
|
|
26716
|
+
return { cancel: true };
|
|
26717
|
+
}
|
|
26718
|
+
return adBlockingEnabled ? getAdBlockDecision(details) : null;
|
|
26719
|
+
}
|
|
26503
26720
|
function installAdBlocking(tabManager) {
|
|
26504
26721
|
defaultSessionTabManagers.add(tabManager);
|
|
26505
26722
|
if (installed) return;
|
|
@@ -26507,17 +26724,18 @@ function installAdBlocking(tabManager) {
|
|
|
26507
26724
|
electron.session.defaultSession.webRequest.onBeforeRequest((details, callback) => {
|
|
26508
26725
|
const webContentsId = typeof details.webContentsId === "number" ? details.webContentsId : null;
|
|
26509
26726
|
if (webContentsId == null) {
|
|
26510
|
-
callback({});
|
|
26727
|
+
callback(getRequestFilterDecision(details, false) ?? {});
|
|
26511
26728
|
return;
|
|
26512
26729
|
}
|
|
26513
26730
|
const manager = [...defaultSessionTabManagers].find(
|
|
26514
26731
|
(candidate) => candidate.findTabByWebContentsId(webContentsId)
|
|
26515
26732
|
);
|
|
26516
|
-
|
|
26517
|
-
|
|
26518
|
-
|
|
26519
|
-
|
|
26520
|
-
|
|
26733
|
+
callback(
|
|
26734
|
+
getRequestFilterDecision(
|
|
26735
|
+
details,
|
|
26736
|
+
manager?.isAdBlockingEnabledForWebContents(webContentsId) ?? false
|
|
26737
|
+
) ?? {}
|
|
26738
|
+
);
|
|
26521
26739
|
});
|
|
26522
26740
|
}
|
|
26523
26741
|
function unregisterAdBlockingTabManager(tabManager) {
|
|
@@ -26527,14 +26745,15 @@ function installAdBlockingForSession(ses, tabManager) {
|
|
|
26527
26745
|
ses.webRequest.onBeforeRequest((details, callback) => {
|
|
26528
26746
|
const webContentsId = typeof details.webContentsId === "number" ? details.webContentsId : null;
|
|
26529
26747
|
if (webContentsId == null) {
|
|
26530
|
-
callback({});
|
|
26748
|
+
callback(getRequestFilterDecision(details, false) ?? {});
|
|
26531
26749
|
return;
|
|
26532
26750
|
}
|
|
26533
|
-
|
|
26534
|
-
|
|
26535
|
-
|
|
26536
|
-
|
|
26537
|
-
|
|
26751
|
+
callback(
|
|
26752
|
+
getRequestFilterDecision(
|
|
26753
|
+
details,
|
|
26754
|
+
tabManager.isAdBlockingEnabledForWebContents(webContentsId)
|
|
26755
|
+
) ?? {}
|
|
26756
|
+
);
|
|
26538
26757
|
});
|
|
26539
26758
|
}
|
|
26540
26759
|
const filePath$1 = () => path$1.join(electron.app.getPath("userData"), "vessel-downloads.json");
|
|
@@ -26582,7 +26801,7 @@ function persist() {
|
|
|
26582
26801
|
persistence$1.schedule();
|
|
26583
26802
|
}
|
|
26584
26803
|
function emit$1() {
|
|
26585
|
-
broadcaster$1?.(Channels.DOWNLOADS_UPDATE, listDownloads());
|
|
26804
|
+
broadcaster$1?.(Channels$1.DOWNLOADS_UPDATE, listDownloads());
|
|
26586
26805
|
}
|
|
26587
26806
|
function setDownloadBroadcaster(fn) {
|
|
26588
26807
|
broadcaster$1 = fn;
|
|
@@ -26682,19 +26901,19 @@ function installDownloadHandlerForSession(targetSession, chromeView) {
|
|
|
26682
26901
|
state: "progressing"
|
|
26683
26902
|
};
|
|
26684
26903
|
const record = upsertDownload(info);
|
|
26685
|
-
send(Channels.DOWNLOAD_STARTED, { ...info, id: record.id, startedAt: record.startedAt, updatedAt: record.updatedAt });
|
|
26904
|
+
send(Channels$1.DOWNLOAD_STARTED, { ...info, id: record.id, startedAt: record.startedAt, updatedAt: record.updatedAt });
|
|
26686
26905
|
item.on("updated", (_event2, state2) => {
|
|
26687
26906
|
info.receivedBytes = item.getReceivedBytes();
|
|
26688
26907
|
info.totalBytes = item.getTotalBytes();
|
|
26689
26908
|
info.state = state2 === "progressing" ? "progressing" : "interrupted";
|
|
26690
26909
|
const record2 = upsertDownload(info);
|
|
26691
|
-
send(Channels.DOWNLOAD_PROGRESS, { ...info, id: record2.id, startedAt: record2.startedAt, updatedAt: record2.updatedAt });
|
|
26910
|
+
send(Channels$1.DOWNLOAD_PROGRESS, { ...info, id: record2.id, startedAt: record2.startedAt, updatedAt: record2.updatedAt });
|
|
26692
26911
|
});
|
|
26693
26912
|
item.once("done", (_event2, state2) => {
|
|
26694
26913
|
info.receivedBytes = item.getReceivedBytes();
|
|
26695
26914
|
info.state = state2 === "completed" ? "completed" : "cancelled";
|
|
26696
26915
|
const record2 = upsertDownload(info);
|
|
26697
|
-
send(Channels.DOWNLOAD_DONE, { ...info, id: record2.id, startedAt: record2.startedAt, updatedAt: record2.updatedAt });
|
|
26916
|
+
send(Channels$1.DOWNLOAD_DONE, { ...info, id: record2.id, startedAt: record2.startedAt, updatedAt: record2.updatedAt });
|
|
26698
26917
|
});
|
|
26699
26918
|
});
|
|
26700
26919
|
}
|
|
@@ -26886,7 +27105,7 @@ function createFindInPageBridge(tabManager, chromeView) {
|
|
|
26886
27105
|
if (wc.isDestroyed()) return;
|
|
26887
27106
|
const listener = (_event, result) => {
|
|
26888
27107
|
if (!chromeView.webContents.isDestroyed()) {
|
|
26889
|
-
chromeView.webContents.send(Channels.FIND_IN_PAGE_RESULT, result);
|
|
27108
|
+
chromeView.webContents.send(Channels$1.FIND_IN_PAGE_RESULT, result);
|
|
26890
27109
|
}
|
|
26891
27110
|
};
|
|
26892
27111
|
findResultListener = listener;
|
|
@@ -26963,136 +27182,136 @@ function registerPrivateIpcHandlers(state2) {
|
|
|
26963
27182
|
const { chromeView, tabManager } = state2;
|
|
26964
27183
|
const ipc = chromeView.webContents.ipc;
|
|
26965
27184
|
const findBridge = createFindInPageBridge(tabManager, chromeView);
|
|
26966
|
-
ipc.handle(Channels.TAB_CREATE, (_e, url) => {
|
|
27185
|
+
ipc.handle(Channels$1.TAB_CREATE, (_e, url) => {
|
|
26967
27186
|
return tabManager.createTab(url);
|
|
26968
27187
|
});
|
|
26969
|
-
ipc.handle(Channels.TAB_CLOSE, (_e, id) => {
|
|
27188
|
+
ipc.handle(Channels$1.TAB_CLOSE, (_e, id) => {
|
|
26970
27189
|
tabManager.closeTab(id);
|
|
26971
27190
|
layoutPrivateViews(state2);
|
|
26972
27191
|
});
|
|
26973
|
-
ipc.handle(Channels.TAB_SWITCH, (_e, id) => {
|
|
27192
|
+
ipc.handle(Channels$1.TAB_SWITCH, (_e, id) => {
|
|
26974
27193
|
tabManager.switchTab(id);
|
|
26975
27194
|
layoutPrivateViews(state2);
|
|
26976
27195
|
});
|
|
26977
|
-
ipc.handle(Channels.TAB_NAVIGATE, (_e, id, url) => {
|
|
27196
|
+
ipc.handle(Channels$1.TAB_NAVIGATE, (_e, id, url) => {
|
|
26978
27197
|
return tabManager.navigateTab(id, url);
|
|
26979
27198
|
});
|
|
26980
|
-
ipc.handle(Channels.TAB_BACK, (_e, id) => {
|
|
27199
|
+
ipc.handle(Channels$1.TAB_BACK, (_e, id) => {
|
|
26981
27200
|
tabManager.goBack(id);
|
|
26982
27201
|
});
|
|
26983
|
-
ipc.handle(Channels.TAB_FORWARD, (_e, id) => {
|
|
27202
|
+
ipc.handle(Channels$1.TAB_FORWARD, (_e, id) => {
|
|
26984
27203
|
tabManager.goForward(id);
|
|
26985
27204
|
});
|
|
26986
|
-
ipc.handle(Channels.TAB_RELOAD, (_e, id) => {
|
|
27205
|
+
ipc.handle(Channels$1.TAB_RELOAD, (_e, id) => {
|
|
26987
27206
|
tabManager.reloadTab(id);
|
|
26988
27207
|
});
|
|
26989
|
-
ipc.handle(Channels.TAB_TOGGLE_AD_BLOCK, (_e, id) => {
|
|
27208
|
+
ipc.handle(Channels$1.TAB_TOGGLE_AD_BLOCK, (_e, id) => {
|
|
26990
27209
|
const tab = tabManager.getTab(id);
|
|
26991
27210
|
if (!tab) return null;
|
|
26992
27211
|
const newState = !tab.state.adBlockingEnabled;
|
|
26993
27212
|
tab.setAdBlockingEnabled(newState);
|
|
26994
27213
|
return newState;
|
|
26995
27214
|
});
|
|
26996
|
-
ipc.handle(Channels.TAB_ZOOM_IN, (_e, id) => {
|
|
27215
|
+
ipc.handle(Channels$1.TAB_ZOOM_IN, (_e, id) => {
|
|
26997
27216
|
tabManager.zoomIn(id);
|
|
26998
27217
|
});
|
|
26999
|
-
ipc.handle(Channels.TAB_ZOOM_OUT, (_e, id) => {
|
|
27218
|
+
ipc.handle(Channels$1.TAB_ZOOM_OUT, (_e, id) => {
|
|
27000
27219
|
tabManager.zoomOut(id);
|
|
27001
27220
|
});
|
|
27002
|
-
ipc.handle(Channels.TAB_ZOOM_RESET, (_e, id) => {
|
|
27221
|
+
ipc.handle(Channels$1.TAB_ZOOM_RESET, (_e, id) => {
|
|
27003
27222
|
tabManager.zoomReset(id);
|
|
27004
27223
|
});
|
|
27005
|
-
ipc.handle(Channels.TAB_STATE_GET, () => ({
|
|
27224
|
+
ipc.handle(Channels$1.TAB_STATE_GET, () => ({
|
|
27006
27225
|
tabs: tabManager.getAllStates(),
|
|
27007
27226
|
activeId: tabManager.getActiveTabId() || ""
|
|
27008
27227
|
}));
|
|
27009
|
-
ipc.handle(Channels.TAB_REOPEN_CLOSED, () => {
|
|
27228
|
+
ipc.handle(Channels$1.TAB_REOPEN_CLOSED, () => {
|
|
27010
27229
|
const id = tabManager.reopenClosedTab();
|
|
27011
27230
|
if (id) layoutPrivateViews(state2);
|
|
27012
27231
|
return id;
|
|
27013
27232
|
});
|
|
27014
|
-
ipc.handle(Channels.TAB_DUPLICATE, (_e, id) => {
|
|
27233
|
+
ipc.handle(Channels$1.TAB_DUPLICATE, (_e, id) => {
|
|
27015
27234
|
const newId = tabManager.duplicateTab(id);
|
|
27016
27235
|
if (newId) layoutPrivateViews(state2);
|
|
27017
27236
|
return newId;
|
|
27018
27237
|
});
|
|
27019
|
-
ipc.handle(Channels.TAB_PIN, (_e, id) => {
|
|
27238
|
+
ipc.handle(Channels$1.TAB_PIN, (_e, id) => {
|
|
27020
27239
|
tabManager.pinTab(id);
|
|
27021
27240
|
});
|
|
27022
|
-
ipc.handle(Channels.TAB_UNPIN, (_e, id) => {
|
|
27241
|
+
ipc.handle(Channels$1.TAB_UNPIN, (_e, id) => {
|
|
27023
27242
|
tabManager.unpinTab(id);
|
|
27024
27243
|
});
|
|
27025
|
-
ipc.handle(Channels.TAB_GROUP_CREATE, (_e, id) => {
|
|
27244
|
+
ipc.handle(Channels$1.TAB_GROUP_CREATE, (_e, id) => {
|
|
27026
27245
|
return tabManager.createGroupFromTab(id);
|
|
27027
27246
|
});
|
|
27028
|
-
ipc.handle(Channels.TAB_GROUP_ADD_TAB, (_e, id, groupId) => {
|
|
27247
|
+
ipc.handle(Channels$1.TAB_GROUP_ADD_TAB, (_e, id, groupId) => {
|
|
27029
27248
|
tabManager.assignTabToGroup(id, groupId);
|
|
27030
27249
|
});
|
|
27031
|
-
ipc.handle(Channels.TAB_GROUP_REMOVE_TAB, (_e, id) => {
|
|
27250
|
+
ipc.handle(Channels$1.TAB_GROUP_REMOVE_TAB, (_e, id) => {
|
|
27032
27251
|
tabManager.removeTabFromGroup(id);
|
|
27033
27252
|
});
|
|
27034
|
-
ipc.handle(Channels.TAB_GROUP_TOGGLE_COLLAPSED, (_e, groupId) => {
|
|
27253
|
+
ipc.handle(Channels$1.TAB_GROUP_TOGGLE_COLLAPSED, (_e, groupId) => {
|
|
27035
27254
|
return tabManager.toggleGroupCollapsed(groupId);
|
|
27036
27255
|
});
|
|
27037
27256
|
ipc.handle(
|
|
27038
|
-
Channels.TAB_GROUP_SET_COLOR,
|
|
27257
|
+
Channels$1.TAB_GROUP_SET_COLOR,
|
|
27039
27258
|
(_e, groupId, color) => {
|
|
27040
27259
|
tabManager.setGroupColor(groupId, color);
|
|
27041
27260
|
}
|
|
27042
27261
|
);
|
|
27043
|
-
ipc.handle(Channels.TAB_TOGGLE_MUTE, (_e, id) => {
|
|
27262
|
+
ipc.handle(Channels$1.TAB_TOGGLE_MUTE, (_e, id) => {
|
|
27044
27263
|
return tabManager.toggleMuted(id);
|
|
27045
27264
|
});
|
|
27046
|
-
ipc.handle(Channels.TAB_PRINT, (_e, id) => {
|
|
27265
|
+
ipc.handle(Channels$1.TAB_PRINT, (_e, id) => {
|
|
27047
27266
|
tabManager.printTab(id);
|
|
27048
27267
|
});
|
|
27049
|
-
ipc.handle(Channels.TAB_PRINT_TO_PDF, (_e, id) => {
|
|
27268
|
+
ipc.handle(Channels$1.TAB_PRINT_TO_PDF, (_e, id) => {
|
|
27050
27269
|
return tabManager.saveTabAsPdf(id);
|
|
27051
27270
|
});
|
|
27052
|
-
ipc.on(Channels.TAB_CONTEXT_MENU, (_e, id) => {
|
|
27271
|
+
ipc.on(Channels$1.TAB_CONTEXT_MENU, (_e, id) => {
|
|
27053
27272
|
showTabContextMenu(tabManager, id, state2.window, () => layoutPrivateViews(state2));
|
|
27054
27273
|
});
|
|
27055
|
-
ipc.on(Channels.TAB_GROUP_CONTEXT_MENU, (_e, groupId) => {
|
|
27274
|
+
ipc.on(Channels$1.TAB_GROUP_CONTEXT_MENU, (_e, groupId) => {
|
|
27056
27275
|
showGroupContextMenu(tabManager, groupId, state2.window);
|
|
27057
27276
|
});
|
|
27058
|
-
ipc.handle(Channels.IS_PRIVATE_MODE, () => true);
|
|
27059
|
-
ipc.handle(Channels.OPEN_PRIVATE_WINDOW, () => {
|
|
27277
|
+
ipc.handle(Channels$1.IS_PRIVATE_MODE, () => true);
|
|
27278
|
+
ipc.handle(Channels$1.OPEN_PRIVATE_WINDOW, () => {
|
|
27060
27279
|
createPrivateWindow();
|
|
27061
27280
|
});
|
|
27062
|
-
ipc.handle(Channels.OPEN_NEW_WINDOW, () => {
|
|
27281
|
+
ipc.handle(Channels$1.OPEN_NEW_WINDOW, () => {
|
|
27063
27282
|
const { createSecondaryWindow: createSecondaryWindow2 } = require("../secondary/window");
|
|
27064
27283
|
createSecondaryWindow2();
|
|
27065
27284
|
});
|
|
27066
|
-
ipc.handle(Channels.WINDOW_MINIMIZE, () => {
|
|
27285
|
+
ipc.handle(Channels$1.WINDOW_MINIMIZE, () => {
|
|
27067
27286
|
state2.window.minimize();
|
|
27068
27287
|
});
|
|
27069
|
-
ipc.handle(Channels.WINDOW_MAXIMIZE, () => {
|
|
27288
|
+
ipc.handle(Channels$1.WINDOW_MAXIMIZE, () => {
|
|
27070
27289
|
if (state2.window.isMaximized()) {
|
|
27071
27290
|
state2.window.unmaximize();
|
|
27072
27291
|
} else {
|
|
27073
27292
|
state2.window.maximize();
|
|
27074
27293
|
}
|
|
27075
27294
|
});
|
|
27076
|
-
ipc.handle(Channels.WINDOW_CLOSE, () => {
|
|
27295
|
+
ipc.handle(Channels$1.WINDOW_CLOSE, () => {
|
|
27077
27296
|
state2.window.close();
|
|
27078
27297
|
});
|
|
27079
|
-
ipc.handle(Channels.SETTINGS_VISIBILITY, () => {
|
|
27298
|
+
ipc.handle(Channels$1.SETTINGS_VISIBILITY, () => {
|
|
27080
27299
|
return false;
|
|
27081
27300
|
});
|
|
27082
|
-
ipc.handle(Channels.FOCUS_MODE_TOGGLE, () => false);
|
|
27083
|
-
ipc.handle(Channels.SIDEBAR_TOGGLE, () => ({ open: false, width: 0 }));
|
|
27084
|
-
ipc.handle(Channels.DEVTOOLS_PANEL_TOGGLE, () => ({ open: false }));
|
|
27301
|
+
ipc.handle(Channels$1.FOCUS_MODE_TOGGLE, () => false);
|
|
27302
|
+
ipc.handle(Channels$1.SIDEBAR_TOGGLE, () => ({ open: false, width: 0 }));
|
|
27303
|
+
ipc.handle(Channels$1.DEVTOOLS_PANEL_TOGGLE, () => ({ open: false }));
|
|
27085
27304
|
ipc.handle(
|
|
27086
|
-
Channels.FIND_IN_PAGE_START,
|
|
27305
|
+
Channels$1.FIND_IN_PAGE_START,
|
|
27087
27306
|
(_e, text, options) => {
|
|
27088
27307
|
return findBridge.start(text, options);
|
|
27089
27308
|
}
|
|
27090
27309
|
);
|
|
27091
|
-
ipc.handle(Channels.FIND_IN_PAGE_NEXT, (_e, forward) => {
|
|
27310
|
+
ipc.handle(Channels$1.FIND_IN_PAGE_NEXT, (_e, forward) => {
|
|
27092
27311
|
return findBridge.next(forward);
|
|
27093
27312
|
});
|
|
27094
27313
|
ipc.handle(
|
|
27095
|
-
Channels.FIND_IN_PAGE_STOP,
|
|
27314
|
+
Channels$1.FIND_IN_PAGE_STOP,
|
|
27096
27315
|
(_e, action) => {
|
|
27097
27316
|
findBridge.stop(action);
|
|
27098
27317
|
}
|
|
@@ -27126,7 +27345,7 @@ function createPrivateWindow() {
|
|
|
27126
27345
|
win,
|
|
27127
27346
|
(tabs, activeId) => {
|
|
27128
27347
|
if (!chromeView.webContents.isDestroyed()) {
|
|
27129
|
-
chromeView.webContents.send(Channels.TAB_STATE_UPDATE, tabs, activeId);
|
|
27348
|
+
chromeView.webContents.send(Channels$1.TAB_STATE_UPDATE, tabs, activeId);
|
|
27130
27349
|
}
|
|
27131
27350
|
layoutPrivateViews(state2);
|
|
27132
27351
|
},
|
|
@@ -27198,113 +27417,113 @@ function registerSecondaryIpcHandlers(state2) {
|
|
|
27198
27417
|
const { chromeView, tabManager } = state2;
|
|
27199
27418
|
const ipc = chromeView.webContents.ipc;
|
|
27200
27419
|
const findBridge = createFindInPageBridge(tabManager, chromeView);
|
|
27201
|
-
ipc.handle(Channels.TAB_CREATE, (_e, url) => {
|
|
27420
|
+
ipc.handle(Channels$1.TAB_CREATE, (_e, url) => {
|
|
27202
27421
|
return tabManager.createTab(url || loadSettings().defaultUrl);
|
|
27203
27422
|
});
|
|
27204
|
-
ipc.handle(Channels.TAB_CLOSE, (_e, id) => {
|
|
27423
|
+
ipc.handle(Channels$1.TAB_CLOSE, (_e, id) => {
|
|
27205
27424
|
tabManager.closeTab(id);
|
|
27206
27425
|
layoutSecondaryViews(state2);
|
|
27207
27426
|
});
|
|
27208
|
-
ipc.handle(Channels.TAB_SWITCH, (_e, id) => {
|
|
27427
|
+
ipc.handle(Channels$1.TAB_SWITCH, (_e, id) => {
|
|
27209
27428
|
tabManager.switchTab(id);
|
|
27210
27429
|
layoutSecondaryViews(state2);
|
|
27211
27430
|
});
|
|
27212
|
-
ipc.handle(Channels.TAB_NAVIGATE, (_e, id, url) => {
|
|
27431
|
+
ipc.handle(Channels$1.TAB_NAVIGATE, (_e, id, url) => {
|
|
27213
27432
|
return tabManager.navigateTab(id, url);
|
|
27214
27433
|
});
|
|
27215
|
-
ipc.handle(Channels.TAB_BACK, (_e, id) => tabManager.goBack(id));
|
|
27216
|
-
ipc.handle(Channels.TAB_FORWARD, (_e, id) => tabManager.goForward(id));
|
|
27217
|
-
ipc.handle(Channels.TAB_RELOAD, (_e, id) => tabManager.reloadTab(id));
|
|
27218
|
-
ipc.handle(Channels.TAB_TOGGLE_AD_BLOCK, (_e, id) => {
|
|
27434
|
+
ipc.handle(Channels$1.TAB_BACK, (_e, id) => tabManager.goBack(id));
|
|
27435
|
+
ipc.handle(Channels$1.TAB_FORWARD, (_e, id) => tabManager.goForward(id));
|
|
27436
|
+
ipc.handle(Channels$1.TAB_RELOAD, (_e, id) => tabManager.reloadTab(id));
|
|
27437
|
+
ipc.handle(Channels$1.TAB_TOGGLE_AD_BLOCK, (_e, id) => {
|
|
27219
27438
|
const tab = tabManager.getTab(id);
|
|
27220
27439
|
if (!tab) return null;
|
|
27221
27440
|
const enabled = !tab.state.adBlockingEnabled;
|
|
27222
27441
|
tab.setAdBlockingEnabled(enabled);
|
|
27223
27442
|
return enabled;
|
|
27224
27443
|
});
|
|
27225
|
-
ipc.handle(Channels.TAB_ZOOM_IN, (_e, id) => tabManager.zoomIn(id));
|
|
27226
|
-
ipc.handle(Channels.TAB_ZOOM_OUT, (_e, id) => tabManager.zoomOut(id));
|
|
27227
|
-
ipc.handle(Channels.TAB_ZOOM_RESET, (_e, id) => tabManager.zoomReset(id));
|
|
27228
|
-
ipc.handle(Channels.TAB_REOPEN_CLOSED, () => {
|
|
27444
|
+
ipc.handle(Channels$1.TAB_ZOOM_IN, (_e, id) => tabManager.zoomIn(id));
|
|
27445
|
+
ipc.handle(Channels$1.TAB_ZOOM_OUT, (_e, id) => tabManager.zoomOut(id));
|
|
27446
|
+
ipc.handle(Channels$1.TAB_ZOOM_RESET, (_e, id) => tabManager.zoomReset(id));
|
|
27447
|
+
ipc.handle(Channels$1.TAB_REOPEN_CLOSED, () => {
|
|
27229
27448
|
const id = tabManager.reopenClosedTab();
|
|
27230
27449
|
if (id) layoutSecondaryViews(state2);
|
|
27231
27450
|
return id;
|
|
27232
27451
|
});
|
|
27233
|
-
ipc.handle(Channels.TAB_DUPLICATE, (_e, id) => {
|
|
27452
|
+
ipc.handle(Channels$1.TAB_DUPLICATE, (_e, id) => {
|
|
27234
27453
|
const newId = tabManager.duplicateTab(id);
|
|
27235
27454
|
if (newId) layoutSecondaryViews(state2);
|
|
27236
27455
|
return newId;
|
|
27237
27456
|
});
|
|
27238
|
-
ipc.handle(Channels.TAB_PIN, (_e, id) => tabManager.pinTab(id));
|
|
27239
|
-
ipc.handle(Channels.TAB_UNPIN, (_e, id) => tabManager.unpinTab(id));
|
|
27457
|
+
ipc.handle(Channels$1.TAB_PIN, (_e, id) => tabManager.pinTab(id));
|
|
27458
|
+
ipc.handle(Channels$1.TAB_UNPIN, (_e, id) => tabManager.unpinTab(id));
|
|
27240
27459
|
ipc.handle(
|
|
27241
|
-
Channels.TAB_GROUP_CREATE,
|
|
27460
|
+
Channels$1.TAB_GROUP_CREATE,
|
|
27242
27461
|
(_e, id) => tabManager.createGroupFromTab(id)
|
|
27243
27462
|
);
|
|
27244
27463
|
ipc.handle(
|
|
27245
|
-
Channels.TAB_GROUP_ADD_TAB,
|
|
27464
|
+
Channels$1.TAB_GROUP_ADD_TAB,
|
|
27246
27465
|
(_e, id, groupId) => tabManager.assignTabToGroup(id, groupId)
|
|
27247
27466
|
);
|
|
27248
27467
|
ipc.handle(
|
|
27249
|
-
Channels.TAB_GROUP_REMOVE_TAB,
|
|
27468
|
+
Channels$1.TAB_GROUP_REMOVE_TAB,
|
|
27250
27469
|
(_e, id) => tabManager.removeTabFromGroup(id)
|
|
27251
27470
|
);
|
|
27252
27471
|
ipc.handle(
|
|
27253
|
-
Channels.TAB_GROUP_TOGGLE_COLLAPSED,
|
|
27472
|
+
Channels$1.TAB_GROUP_TOGGLE_COLLAPSED,
|
|
27254
27473
|
(_e, groupId) => tabManager.toggleGroupCollapsed(groupId)
|
|
27255
27474
|
);
|
|
27256
27475
|
ipc.handle(
|
|
27257
|
-
Channels.TAB_GROUP_SET_COLOR,
|
|
27476
|
+
Channels$1.TAB_GROUP_SET_COLOR,
|
|
27258
27477
|
(_e, groupId, color) => tabManager.setGroupColor(groupId, color)
|
|
27259
27478
|
);
|
|
27260
27479
|
ipc.handle(
|
|
27261
|
-
Channels.TAB_TOGGLE_MUTE,
|
|
27480
|
+
Channels$1.TAB_TOGGLE_MUTE,
|
|
27262
27481
|
(_e, id) => tabManager.toggleMuted(id)
|
|
27263
27482
|
);
|
|
27264
|
-
ipc.handle(Channels.TAB_PRINT, (_e, id) => tabManager.printTab(id));
|
|
27483
|
+
ipc.handle(Channels$1.TAB_PRINT, (_e, id) => tabManager.printTab(id));
|
|
27265
27484
|
ipc.handle(
|
|
27266
|
-
Channels.TAB_PRINT_TO_PDF,
|
|
27485
|
+
Channels$1.TAB_PRINT_TO_PDF,
|
|
27267
27486
|
(_e, id) => tabManager.saveTabAsPdf(id)
|
|
27268
27487
|
);
|
|
27269
|
-
ipc.handle(Channels.TAB_STATE_GET, () => ({
|
|
27488
|
+
ipc.handle(Channels$1.TAB_STATE_GET, () => ({
|
|
27270
27489
|
tabs: tabManager.getAllStates(),
|
|
27271
27490
|
activeId: tabManager.getActiveTabId() || ""
|
|
27272
27491
|
}));
|
|
27273
27492
|
ipc.on(
|
|
27274
|
-
Channels.TAB_CONTEXT_MENU,
|
|
27493
|
+
Channels$1.TAB_CONTEXT_MENU,
|
|
27275
27494
|
(_e, id) => showTabContextMenu(state2.tabManager, id, state2.window, () => layoutSecondaryViews(state2))
|
|
27276
27495
|
);
|
|
27277
27496
|
ipc.on(
|
|
27278
|
-
Channels.TAB_GROUP_CONTEXT_MENU,
|
|
27497
|
+
Channels$1.TAB_GROUP_CONTEXT_MENU,
|
|
27279
27498
|
(_e, groupId) => showGroupContextMenu(state2.tabManager, groupId, state2.window)
|
|
27280
27499
|
);
|
|
27281
|
-
ipc.handle(Channels.OPEN_NEW_WINDOW, () => createSecondaryWindow());
|
|
27282
|
-
ipc.handle(Channels.OPEN_PRIVATE_WINDOW, () => {
|
|
27500
|
+
ipc.handle(Channels$1.OPEN_NEW_WINDOW, () => createSecondaryWindow());
|
|
27501
|
+
ipc.handle(Channels$1.OPEN_PRIVATE_WINDOW, () => {
|
|
27283
27502
|
const { createPrivateWindow: createPrivateWindow2 } = require("../private/window");
|
|
27284
27503
|
createPrivateWindow2();
|
|
27285
27504
|
});
|
|
27286
|
-
ipc.handle(Channels.IS_PRIVATE_MODE, () => false);
|
|
27287
|
-
ipc.handle(Channels.WINDOW_MINIMIZE, () => state2.window.minimize());
|
|
27288
|
-
ipc.handle(Channels.WINDOW_MAXIMIZE, () => {
|
|
27505
|
+
ipc.handle(Channels$1.IS_PRIVATE_MODE, () => false);
|
|
27506
|
+
ipc.handle(Channels$1.WINDOW_MINIMIZE, () => state2.window.minimize());
|
|
27507
|
+
ipc.handle(Channels$1.WINDOW_MAXIMIZE, () => {
|
|
27289
27508
|
if (state2.window.isMaximized()) state2.window.unmaximize();
|
|
27290
27509
|
else state2.window.maximize();
|
|
27291
27510
|
});
|
|
27292
|
-
ipc.handle(Channels.WINDOW_CLOSE, () => state2.window.close());
|
|
27293
|
-
ipc.handle(Channels.SETTINGS_VISIBILITY, () => false);
|
|
27294
|
-
ipc.handle(Channels.FOCUS_MODE_TOGGLE, () => false);
|
|
27295
|
-
ipc.handle(Channels.SIDEBAR_TOGGLE, () => ({ open: false, width: 0 }));
|
|
27296
|
-
ipc.handle(Channels.DEVTOOLS_PANEL_TOGGLE, () => ({ open: false }));
|
|
27511
|
+
ipc.handle(Channels$1.WINDOW_CLOSE, () => state2.window.close());
|
|
27512
|
+
ipc.handle(Channels$1.SETTINGS_VISIBILITY, () => false);
|
|
27513
|
+
ipc.handle(Channels$1.FOCUS_MODE_TOGGLE, () => false);
|
|
27514
|
+
ipc.handle(Channels$1.SIDEBAR_TOGGLE, () => ({ open: false, width: 0 }));
|
|
27515
|
+
ipc.handle(Channels$1.DEVTOOLS_PANEL_TOGGLE, () => ({ open: false }));
|
|
27297
27516
|
ipc.handle(
|
|
27298
|
-
Channels.FIND_IN_PAGE_START,
|
|
27517
|
+
Channels$1.FIND_IN_PAGE_START,
|
|
27299
27518
|
(_e, text, options) => {
|
|
27300
27519
|
return findBridge.start(text, options);
|
|
27301
27520
|
}
|
|
27302
27521
|
);
|
|
27303
|
-
ipc.handle(Channels.FIND_IN_PAGE_NEXT, (_e, forward) => {
|
|
27522
|
+
ipc.handle(Channels$1.FIND_IN_PAGE_NEXT, (_e, forward) => {
|
|
27304
27523
|
return findBridge.next(forward);
|
|
27305
27524
|
});
|
|
27306
27525
|
ipc.handle(
|
|
27307
|
-
Channels.FIND_IN_PAGE_STOP,
|
|
27526
|
+
Channels$1.FIND_IN_PAGE_STOP,
|
|
27308
27527
|
(_e, action) => {
|
|
27309
27528
|
findBridge.stop(action);
|
|
27310
27529
|
}
|
|
@@ -27333,7 +27552,7 @@ function createSecondaryWindow() {
|
|
|
27333
27552
|
win.contentView.addChildView(chromeView);
|
|
27334
27553
|
const tabManager = new TabManager(win, (tabs, activeId) => {
|
|
27335
27554
|
if (!chromeView.webContents.isDestroyed()) {
|
|
27336
|
-
chromeView.webContents.send(Channels.TAB_STATE_UPDATE, tabs, activeId);
|
|
27555
|
+
chromeView.webContents.send(Channels$1.TAB_STATE_UPDATE, tabs, activeId);
|
|
27337
27556
|
}
|
|
27338
27557
|
layoutSecondaryViews(state2);
|
|
27339
27558
|
});
|
|
@@ -27363,12 +27582,12 @@ function getSafeBookmarkExportName(name) {
|
|
|
27363
27582
|
return safeName || "folder";
|
|
27364
27583
|
}
|
|
27365
27584
|
function registerBookmarkHandlers() {
|
|
27366
|
-
electron.ipcMain.handle(Channels.BOOKMARKS_GET, (event) => {
|
|
27585
|
+
electron.ipcMain.handle(Channels$1.BOOKMARKS_GET, (event) => {
|
|
27367
27586
|
assertTrustedIpcSender(event);
|
|
27368
27587
|
return getState();
|
|
27369
27588
|
});
|
|
27370
27589
|
electron.ipcMain.handle(
|
|
27371
|
-
Channels.FOLDER_CREATE,
|
|
27590
|
+
Channels$1.FOLDER_CREATE,
|
|
27372
27591
|
(event, name, summary) => {
|
|
27373
27592
|
assertTrustedIpcSender(event);
|
|
27374
27593
|
trackBookmarkAction("folder_create");
|
|
@@ -27376,7 +27595,7 @@ function registerBookmarkHandlers() {
|
|
|
27376
27595
|
}
|
|
27377
27596
|
);
|
|
27378
27597
|
electron.ipcMain.handle(
|
|
27379
|
-
Channels.BOOKMARK_SAVE,
|
|
27598
|
+
Channels$1.BOOKMARK_SAVE,
|
|
27380
27599
|
(event, url, title, folderId, note, intent, expectedContent, keyFields, agentHints) => {
|
|
27381
27600
|
assertTrustedIpcSender(event);
|
|
27382
27601
|
trackBookmarkAction("save");
|
|
@@ -27398,20 +27617,20 @@ function registerBookmarkHandlers() {
|
|
|
27398
27617
|
}
|
|
27399
27618
|
);
|
|
27400
27619
|
electron.ipcMain.handle(
|
|
27401
|
-
Channels.BOOKMARK_UPDATE,
|
|
27620
|
+
Channels$1.BOOKMARK_UPDATE,
|
|
27402
27621
|
(event, id, updates) => {
|
|
27403
27622
|
assertTrustedIpcSender(event);
|
|
27404
27623
|
trackBookmarkAction("save");
|
|
27405
27624
|
return updateBookmark(id, updates);
|
|
27406
27625
|
}
|
|
27407
27626
|
);
|
|
27408
|
-
electron.ipcMain.handle(Channels.BOOKMARK_REMOVE, (event, id) => {
|
|
27627
|
+
electron.ipcMain.handle(Channels$1.BOOKMARK_REMOVE, (event, id) => {
|
|
27409
27628
|
assertTrustedIpcSender(event);
|
|
27410
27629
|
trackBookmarkAction("remove");
|
|
27411
27630
|
return removeBookmark(id);
|
|
27412
27631
|
});
|
|
27413
27632
|
electron.ipcMain.handle(
|
|
27414
|
-
Channels.BOOKMARKS_EXPORT_HTML,
|
|
27633
|
+
Channels$1.BOOKMARKS_EXPORT_HTML,
|
|
27415
27634
|
async (event, options) => {
|
|
27416
27635
|
assertTrustedIpcSender(event);
|
|
27417
27636
|
const { canceled, filePath: filePath2 } = await electron.dialog.showSaveDialog({
|
|
@@ -27431,7 +27650,7 @@ function registerBookmarkHandlers() {
|
|
|
27431
27650
|
};
|
|
27432
27651
|
}
|
|
27433
27652
|
);
|
|
27434
|
-
electron.ipcMain.handle(Channels.BOOKMARKS_EXPORT_JSON, async (event) => {
|
|
27653
|
+
electron.ipcMain.handle(Channels$1.BOOKMARKS_EXPORT_JSON, async (event) => {
|
|
27435
27654
|
assertTrustedIpcSender(event);
|
|
27436
27655
|
const { canceled, filePath: filePath2 } = await electron.dialog.showSaveDialog({
|
|
27437
27656
|
title: "Export Vessel Bookmark Archive",
|
|
@@ -27448,7 +27667,7 @@ function registerBookmarkHandlers() {
|
|
|
27448
27667
|
};
|
|
27449
27668
|
});
|
|
27450
27669
|
electron.ipcMain.handle(
|
|
27451
|
-
Channels.FOLDER_EXPORT_HTML,
|
|
27670
|
+
Channels$1.FOLDER_EXPORT_HTML,
|
|
27452
27671
|
async (event, folderId, options) => {
|
|
27453
27672
|
assertTrustedIpcSender(event);
|
|
27454
27673
|
const folder = getFolder(folderId);
|
|
@@ -27471,7 +27690,7 @@ function registerBookmarkHandlers() {
|
|
|
27471
27690
|
};
|
|
27472
27691
|
}
|
|
27473
27692
|
);
|
|
27474
|
-
electron.ipcMain.handle(Channels.BOOKMARKS_IMPORT_HTML, async (event) => {
|
|
27693
|
+
electron.ipcMain.handle(Channels$1.BOOKMARKS_IMPORT_HTML, async (event) => {
|
|
27475
27694
|
assertTrustedIpcSender(event);
|
|
27476
27695
|
const { canceled, filePaths } = await electron.dialog.showOpenDialog({
|
|
27477
27696
|
title: "Import Bookmarks",
|
|
@@ -27485,7 +27704,7 @@ function registerBookmarkHandlers() {
|
|
|
27485
27704
|
trackBookmarkAction("import");
|
|
27486
27705
|
return importBookmarksFromHtml(content);
|
|
27487
27706
|
});
|
|
27488
|
-
electron.ipcMain.handle(Channels.BOOKMARKS_IMPORT_JSON, async (event) => {
|
|
27707
|
+
electron.ipcMain.handle(Channels$1.BOOKMARKS_IMPORT_JSON, async (event) => {
|
|
27489
27708
|
assertTrustedIpcSender(event);
|
|
27490
27709
|
const { canceled, filePaths } = await electron.dialog.showOpenDialog({
|
|
27491
27710
|
title: "Import Bookmarks",
|
|
@@ -27499,13 +27718,13 @@ function registerBookmarkHandlers() {
|
|
|
27499
27718
|
trackBookmarkAction("import");
|
|
27500
27719
|
return importBookmarksFromJson(content);
|
|
27501
27720
|
});
|
|
27502
|
-
electron.ipcMain.handle(Channels.FOLDER_REMOVE, (event, id, deleteContents) => {
|
|
27721
|
+
electron.ipcMain.handle(Channels$1.FOLDER_REMOVE, (event, id, deleteContents) => {
|
|
27503
27722
|
assertTrustedIpcSender(event);
|
|
27504
27723
|
trackBookmarkAction("folder_remove");
|
|
27505
27724
|
return removeFolder(id, deleteContents ?? false);
|
|
27506
27725
|
});
|
|
27507
27726
|
electron.ipcMain.handle(
|
|
27508
|
-
Channels.FOLDER_RENAME,
|
|
27727
|
+
Channels$1.FOLDER_RENAME,
|
|
27509
27728
|
(event, id, newName, summary) => {
|
|
27510
27729
|
assertTrustedIpcSender(event);
|
|
27511
27730
|
return renameFolder(id, newName, summary);
|
|
@@ -27513,23 +27732,23 @@ function registerBookmarkHandlers() {
|
|
|
27513
27732
|
);
|
|
27514
27733
|
}
|
|
27515
27734
|
function registerHistoryHandlers() {
|
|
27516
|
-
electron.ipcMain.handle(Channels.HISTORY_GET, (event) => {
|
|
27735
|
+
electron.ipcMain.handle(Channels$1.HISTORY_GET, (event) => {
|
|
27517
27736
|
assertTrustedIpcSender(event);
|
|
27518
27737
|
return getState$1();
|
|
27519
27738
|
});
|
|
27520
|
-
electron.ipcMain.handle(Channels.HISTORY_LIST, (event, offset, limit) => {
|
|
27739
|
+
electron.ipcMain.handle(Channels$1.HISTORY_LIST, (event, offset, limit) => {
|
|
27521
27740
|
assertTrustedIpcSender(event);
|
|
27522
27741
|
return listEntries$2(offset, limit);
|
|
27523
27742
|
});
|
|
27524
|
-
electron.ipcMain.handle(Channels.HISTORY_SEARCH, (event, query) => {
|
|
27743
|
+
electron.ipcMain.handle(Channels$1.HISTORY_SEARCH, (event, query) => {
|
|
27525
27744
|
assertTrustedIpcSender(event);
|
|
27526
27745
|
return search(query);
|
|
27527
27746
|
});
|
|
27528
|
-
electron.ipcMain.handle(Channels.HISTORY_CLEAR, (event) => {
|
|
27747
|
+
electron.ipcMain.handle(Channels$1.HISTORY_CLEAR, (event) => {
|
|
27529
27748
|
assertTrustedIpcSender(event);
|
|
27530
27749
|
clearAll$1();
|
|
27531
27750
|
});
|
|
27532
|
-
electron.ipcMain.handle(Channels.HISTORY_EXPORT_HTML, async (event) => {
|
|
27751
|
+
electron.ipcMain.handle(Channels$1.HISTORY_EXPORT_HTML, async (event) => {
|
|
27533
27752
|
assertTrustedIpcSender(event);
|
|
27534
27753
|
const { canceled, filePath: filePath2 } = await electron.dialog.showSaveDialog({
|
|
27535
27754
|
title: "Export History",
|
|
@@ -27541,7 +27760,7 @@ function registerHistoryHandlers() {
|
|
|
27541
27760
|
await fs.promises.writeFile(filePath2, content, "utf-8");
|
|
27542
27761
|
return { filePath: filePath2, count: getState$1().entries.length };
|
|
27543
27762
|
});
|
|
27544
|
-
electron.ipcMain.handle(Channels.HISTORY_EXPORT_JSON, async (event) => {
|
|
27763
|
+
electron.ipcMain.handle(Channels$1.HISTORY_EXPORT_JSON, async (event) => {
|
|
27545
27764
|
assertTrustedIpcSender(event);
|
|
27546
27765
|
const { canceled, filePath: filePath2 } = await electron.dialog.showSaveDialog({
|
|
27547
27766
|
title: "Export History",
|
|
@@ -27553,7 +27772,7 @@ function registerHistoryHandlers() {
|
|
|
27553
27772
|
await fs.promises.writeFile(filePath2, content, "utf-8");
|
|
27554
27773
|
return { filePath: filePath2, count: getState$1().entries.length };
|
|
27555
27774
|
});
|
|
27556
|
-
electron.ipcMain.handle(Channels.HISTORY_IMPORT, async (event) => {
|
|
27775
|
+
electron.ipcMain.handle(Channels$1.HISTORY_IMPORT, async (event) => {
|
|
27557
27776
|
assertTrustedIpcSender(event);
|
|
27558
27777
|
const { canceled, filePaths } = await electron.dialog.showOpenDialog({
|
|
27559
27778
|
title: "Import History",
|
|
@@ -27633,7 +27852,7 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27633
27852
|
const previousStatus = getPremiumState().status;
|
|
27634
27853
|
const state2 = await verifySubscription(sessionId);
|
|
27635
27854
|
if (isPremiumActiveState(state2)) {
|
|
27636
|
-
sendToRendererViews(Channels.PREMIUM_UPDATE, state2);
|
|
27855
|
+
sendToRendererViews(Channels$1.PREMIUM_UPDATE, state2);
|
|
27637
27856
|
trackPremiumFunnel("premium_verify_succeeded", {
|
|
27638
27857
|
status: state2.status,
|
|
27639
27858
|
source: "checkout_auto"
|
|
@@ -27668,11 +27887,11 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27668
27887
|
void handleUrl(currentUrl);
|
|
27669
27888
|
}
|
|
27670
27889
|
};
|
|
27671
|
-
electron.ipcMain.handle(Channels.PREMIUM_GET_STATE, (event) => {
|
|
27890
|
+
electron.ipcMain.handle(Channels$1.PREMIUM_GET_STATE, (event) => {
|
|
27672
27891
|
assertTrustedIpcSender(event);
|
|
27673
27892
|
return getPremiumState();
|
|
27674
27893
|
});
|
|
27675
|
-
electron.ipcMain.handle(Channels.PREMIUM_ACTIVATION_START, async (event, email) => {
|
|
27894
|
+
electron.ipcMain.handle(Channels$1.PREMIUM_ACTIVATION_START, async (event, email) => {
|
|
27676
27895
|
assertTrustedIpcSender(event);
|
|
27677
27896
|
assertString(email, "email");
|
|
27678
27897
|
if (!isValidEmail$1(email)) {
|
|
@@ -27696,7 +27915,7 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27696
27915
|
return result;
|
|
27697
27916
|
});
|
|
27698
27917
|
electron.ipcMain.handle(
|
|
27699
|
-
Channels.PREMIUM_ACTIVATION_VERIFY,
|
|
27918
|
+
Channels$1.PREMIUM_ACTIVATION_VERIFY,
|
|
27700
27919
|
async (event, email, code, challengeToken) => {
|
|
27701
27920
|
assertTrustedIpcSender(event);
|
|
27702
27921
|
assertString(email, "email");
|
|
@@ -27726,7 +27945,7 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27726
27945
|
result.state.status,
|
|
27727
27946
|
"settings_code"
|
|
27728
27947
|
);
|
|
27729
|
-
sendToRendererViews(Channels.PREMIUM_UPDATE, result.state);
|
|
27948
|
+
sendToRendererViews(Channels$1.PREMIUM_UPDATE, result.state);
|
|
27730
27949
|
} else {
|
|
27731
27950
|
trackPremiumFunnel("premium_verify_failed", {
|
|
27732
27951
|
status: result.state.status,
|
|
@@ -27737,7 +27956,7 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27737
27956
|
return result;
|
|
27738
27957
|
}
|
|
27739
27958
|
);
|
|
27740
|
-
electron.ipcMain.handle(Channels.PREMIUM_CHECKOUT, async (event, email) => {
|
|
27959
|
+
electron.ipcMain.handle(Channels$1.PREMIUM_CHECKOUT, async (event, email) => {
|
|
27741
27960
|
assertTrustedIpcSender(event);
|
|
27742
27961
|
trackPremiumFunnel("checkout_clicked");
|
|
27743
27962
|
const result = await getCheckoutUrl(email);
|
|
@@ -27749,21 +27968,21 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27749
27968
|
}
|
|
27750
27969
|
return result;
|
|
27751
27970
|
});
|
|
27752
|
-
electron.ipcMain.handle(Channels.PREMIUM_RESET, (event) => {
|
|
27971
|
+
electron.ipcMain.handle(Channels$1.PREMIUM_RESET, (event) => {
|
|
27753
27972
|
assertTrustedIpcSender(event);
|
|
27754
27973
|
trackPremiumFunnel("reset");
|
|
27755
27974
|
const state2 = resetPremium();
|
|
27756
|
-
sendToRendererViews(Channels.PREMIUM_UPDATE, state2);
|
|
27975
|
+
sendToRendererViews(Channels$1.PREMIUM_UPDATE, state2);
|
|
27757
27976
|
return state2;
|
|
27758
27977
|
});
|
|
27759
|
-
electron.ipcMain.handle(Channels.PREMIUM_TRACK_CONTEXT, (event, step) => {
|
|
27978
|
+
electron.ipcMain.handle(Channels$1.PREMIUM_TRACK_CONTEXT, (event, step) => {
|
|
27760
27979
|
assertTrustedIpcSender(event);
|
|
27761
27980
|
assertString(step, "step");
|
|
27762
27981
|
if (PREMIUM_TRACKABLE_STEPS.includes(step)) {
|
|
27763
27982
|
trackPremiumFunnel(step);
|
|
27764
27983
|
}
|
|
27765
27984
|
});
|
|
27766
|
-
electron.ipcMain.handle(Channels.PREMIUM_PORTAL, async (event) => {
|
|
27985
|
+
electron.ipcMain.handle(Channels$1.PREMIUM_PORTAL, async (event) => {
|
|
27767
27986
|
assertTrustedIpcSender(event);
|
|
27768
27987
|
trackPremiumFunnel("portal_opened");
|
|
27769
27988
|
const result = await getPortalUrl();
|
|
@@ -27774,21 +27993,21 @@ function registerPremiumHandlers(tabManager, sendToRendererViews) {
|
|
|
27774
27993
|
});
|
|
27775
27994
|
}
|
|
27776
27995
|
function registerSessionHandlers(tabManager) {
|
|
27777
|
-
electron.ipcMain.handle(Channels.SESSION_LIST, (event) => {
|
|
27996
|
+
electron.ipcMain.handle(Channels$1.SESSION_LIST, (event) => {
|
|
27778
27997
|
assertTrustedIpcSender(event);
|
|
27779
27998
|
return listNamedSessions();
|
|
27780
27999
|
});
|
|
27781
|
-
electron.ipcMain.handle(Channels.SESSION_SAVE, async (event, name) => {
|
|
28000
|
+
electron.ipcMain.handle(Channels$1.SESSION_SAVE, async (event, name) => {
|
|
27782
28001
|
assertTrustedIpcSender(event);
|
|
27783
28002
|
assertString(name, "name");
|
|
27784
28003
|
return await saveNamedSession(tabManager, name);
|
|
27785
28004
|
});
|
|
27786
|
-
electron.ipcMain.handle(Channels.SESSION_LOAD, async (event, name) => {
|
|
28005
|
+
electron.ipcMain.handle(Channels$1.SESSION_LOAD, async (event, name) => {
|
|
27787
28006
|
assertTrustedIpcSender(event);
|
|
27788
28007
|
assertString(name, "name");
|
|
27789
28008
|
return await loadNamedSession(tabManager, name);
|
|
27790
28009
|
});
|
|
27791
|
-
electron.ipcMain.handle(Channels.SESSION_DELETE, (event, name) => {
|
|
28010
|
+
electron.ipcMain.handle(Channels$1.SESSION_DELETE, (event, name) => {
|
|
27792
28011
|
assertTrustedIpcSender(event);
|
|
27793
28012
|
assertString(name, "name");
|
|
27794
28013
|
return deleteNamedSession(name);
|
|
@@ -27826,7 +28045,7 @@ function buildCertificateDetailsHtml(state2) {
|
|
|
27826
28045
|
</html>`;
|
|
27827
28046
|
}
|
|
27828
28047
|
function registerSecurityHandlers(tabManager) {
|
|
27829
|
-
electron.ipcMain.handle(Channels.SECURITY_SHOW_DETAILS, async (event, state2) => {
|
|
28048
|
+
electron.ipcMain.handle(Channels$1.SECURITY_SHOW_DETAILS, async (event, state2) => {
|
|
27830
28049
|
assertTrustedIpcSender(event);
|
|
27831
28050
|
const domain = (() => {
|
|
27832
28051
|
try {
|
|
@@ -27850,12 +28069,12 @@ function registerSecurityHandlers(tabManager) {
|
|
|
27850
28069
|
});
|
|
27851
28070
|
void loadInternalDataURL(win.webContents, `data:text/html;charset=utf-8,${encodeURIComponent(content)}`);
|
|
27852
28071
|
});
|
|
27853
|
-
electron.ipcMain.handle(Channels.SECURITY_PROCEED_ANYWAY, (event, tabId) => {
|
|
28072
|
+
electron.ipcMain.handle(Channels$1.SECURITY_PROCEED_ANYWAY, (event, tabId) => {
|
|
27854
28073
|
assertTrustedIpcSender(event);
|
|
27855
28074
|
assertString(tabId, "tabId");
|
|
27856
28075
|
tabManager.proceedAnyway(tabId);
|
|
27857
28076
|
});
|
|
27858
|
-
electron.ipcMain.handle(Channels.SECURITY_GO_BACK_TO_SAFETY, (event, tabId) => {
|
|
28077
|
+
electron.ipcMain.handle(Channels$1.SECURITY_GO_BACK_TO_SAFETY, (event, tabId) => {
|
|
27859
28078
|
assertTrustedIpcSender(event);
|
|
27860
28079
|
assertString(tabId, "tabId");
|
|
27861
28080
|
tabManager.goBackToSafety(tabId);
|
|
@@ -27863,8 +28082,14 @@ function registerSecurityHandlers(tabManager) {
|
|
|
27863
28082
|
}
|
|
27864
28083
|
const logger$7 = createLogger("CodexIPC");
|
|
27865
28084
|
function registerCodexHandlers() {
|
|
27866
|
-
electron.ipcMain.handle(Channels.CODEX_START_AUTH, async (event) => {
|
|
28085
|
+
electron.ipcMain.handle(Channels$1.CODEX_START_AUTH, async (event) => {
|
|
27867
28086
|
assertTrustedIpcSender(event);
|
|
28087
|
+
if (isAirGapped()) {
|
|
28088
|
+
return {
|
|
28089
|
+
ok: false,
|
|
28090
|
+
error: "Codex authentication is unavailable in air-gapped mode."
|
|
28091
|
+
};
|
|
28092
|
+
}
|
|
27868
28093
|
const wc = event.sender;
|
|
27869
28094
|
if (!wc || wc.isDestroyed()) {
|
|
27870
28095
|
return {
|
|
@@ -27874,7 +28099,7 @@ function registerCodexHandlers() {
|
|
|
27874
28099
|
}
|
|
27875
28100
|
const sendStatus = (status, error) => {
|
|
27876
28101
|
try {
|
|
27877
|
-
wc.send(Channels.CODEX_AUTH_STATUS, { status, error: error || null });
|
|
28102
|
+
wc.send(Channels$1.CODEX_AUTH_STATUS, { status, error: error || null });
|
|
27878
28103
|
} catch {
|
|
27879
28104
|
logger$7.warn("Codex auth status send failed — window may be closed");
|
|
27880
28105
|
}
|
|
@@ -27895,12 +28120,12 @@ function registerCodexHandlers() {
|
|
|
27895
28120
|
};
|
|
27896
28121
|
}
|
|
27897
28122
|
});
|
|
27898
|
-
electron.ipcMain.handle(Channels.CODEX_CANCEL_AUTH, (event) => {
|
|
28123
|
+
electron.ipcMain.handle(Channels$1.CODEX_CANCEL_AUTH, (event) => {
|
|
27899
28124
|
assertTrustedIpcSender(event);
|
|
27900
28125
|
cancelCodexOAuth();
|
|
27901
28126
|
return { ok: true };
|
|
27902
28127
|
});
|
|
27903
|
-
electron.ipcMain.handle(Channels.CODEX_DISCONNECT, (event) => {
|
|
28128
|
+
electron.ipcMain.handle(Channels$1.CODEX_DISCONNECT, (event) => {
|
|
27904
28129
|
assertTrustedIpcSender(event);
|
|
27905
28130
|
clearStoredCodexTokens();
|
|
27906
28131
|
return { ok: true };
|
|
@@ -27973,8 +28198,14 @@ function cancelOpenRouterOAuth() {
|
|
|
27973
28198
|
}
|
|
27974
28199
|
const logger$5 = createLogger("OpenRouterIPC");
|
|
27975
28200
|
function registerOpenRouterHandlers(applySettingChange) {
|
|
27976
|
-
electron.ipcMain.handle(Channels.OPENROUTER_START_AUTH, async (event) => {
|
|
28201
|
+
electron.ipcMain.handle(Channels$1.OPENROUTER_START_AUTH, async (event) => {
|
|
27977
28202
|
assertTrustedIpcSender(event);
|
|
28203
|
+
if (isAirGapped()) {
|
|
28204
|
+
return {
|
|
28205
|
+
ok: false,
|
|
28206
|
+
error: "OpenRouter authentication is unavailable in air-gapped mode."
|
|
28207
|
+
};
|
|
28208
|
+
}
|
|
27978
28209
|
const wc = event.sender;
|
|
27979
28210
|
if (!wc || wc.isDestroyed()) {
|
|
27980
28211
|
return {
|
|
@@ -27984,7 +28215,7 @@ function registerOpenRouterHandlers(applySettingChange) {
|
|
|
27984
28215
|
}
|
|
27985
28216
|
const sendStatus = (status, error) => {
|
|
27986
28217
|
try {
|
|
27987
|
-
wc.send(Channels.OPENROUTER_AUTH_STATUS, { status, error: error || null });
|
|
28218
|
+
wc.send(Channels$1.OPENROUTER_AUTH_STATUS, { status, error: error || null });
|
|
27988
28219
|
} catch {
|
|
27989
28220
|
logger$5.warn("OpenRouter auth status send failed - window may be closed");
|
|
27990
28221
|
}
|
|
@@ -28013,12 +28244,124 @@ function registerOpenRouterHandlers(applySettingChange) {
|
|
|
28013
28244
|
};
|
|
28014
28245
|
}
|
|
28015
28246
|
});
|
|
28016
|
-
electron.ipcMain.handle(Channels.OPENROUTER_CANCEL_AUTH, (event) => {
|
|
28247
|
+
electron.ipcMain.handle(Channels$1.OPENROUTER_CANCEL_AUTH, (event) => {
|
|
28017
28248
|
assertTrustedIpcSender(event);
|
|
28018
28249
|
cancelOpenRouterOAuth();
|
|
28019
28250
|
return { ok: true };
|
|
28020
28251
|
});
|
|
28021
28252
|
}
|
|
28253
|
+
function registerSidebarHandlers(windowState, requireTrusted) {
|
|
28254
|
+
let sidebarResizeRecoveryTimer = null;
|
|
28255
|
+
let sidebarResizeActive = false;
|
|
28256
|
+
const relayout = () => layoutViews(windowState);
|
|
28257
|
+
const clearSidebarResizeRecoveryTimer = () => {
|
|
28258
|
+
if (!sidebarResizeRecoveryTimer) return;
|
|
28259
|
+
clearTimeout(sidebarResizeRecoveryTimer);
|
|
28260
|
+
sidebarResizeRecoveryTimer = null;
|
|
28261
|
+
};
|
|
28262
|
+
const stopSidebarResize = () => {
|
|
28263
|
+
sidebarResizeActive = false;
|
|
28264
|
+
clearSidebarResizeRecoveryTimer();
|
|
28265
|
+
};
|
|
28266
|
+
const restoreSidebarLayoutAfterResize = () => {
|
|
28267
|
+
clearSidebarResizeRecoveryTimer();
|
|
28268
|
+
if (!sidebarResizeActive) return;
|
|
28269
|
+
sidebarResizeActive = false;
|
|
28270
|
+
relayout();
|
|
28271
|
+
};
|
|
28272
|
+
const scheduleSidebarResizeRecovery = () => {
|
|
28273
|
+
clearSidebarResizeRecoveryTimer();
|
|
28274
|
+
sidebarResizeRecoveryTimer = setTimeout(() => {
|
|
28275
|
+
restoreSidebarLayoutAfterResize();
|
|
28276
|
+
}, 1200);
|
|
28277
|
+
};
|
|
28278
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_TOGGLE, (event) => {
|
|
28279
|
+
requireTrusted(event);
|
|
28280
|
+
return toggleDockedSidebar(windowState, relayout);
|
|
28281
|
+
});
|
|
28282
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_NAVIGATE, (event, tab) => {
|
|
28283
|
+
requireTrusted(event);
|
|
28284
|
+
assertString(tab, "tab");
|
|
28285
|
+
if (windowState.uiState.sidebarPanelMode === "closed") {
|
|
28286
|
+
openDockedSidebar(windowState, relayout);
|
|
28287
|
+
}
|
|
28288
|
+
if (!windowState.sidebarView.webContents.isDestroyed()) {
|
|
28289
|
+
windowState.sidebarView.webContents.send(Channels$1.SIDEBAR_NAVIGATE, tab);
|
|
28290
|
+
}
|
|
28291
|
+
windowState.sidebarWindow?.focus();
|
|
28292
|
+
return emitSidebarPanelState(windowState);
|
|
28293
|
+
});
|
|
28294
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_RESIZE_START, (event) => {
|
|
28295
|
+
requireTrusted(event);
|
|
28296
|
+
if (isSidebarDetached(windowState)) return;
|
|
28297
|
+
sidebarResizeActive = true;
|
|
28298
|
+
clearSidebarResizeRecoveryTimer();
|
|
28299
|
+
const [width, height] = windowState.mainWindow.getContentSize();
|
|
28300
|
+
const chromeHeight = windowState.uiState.focusMode ? 0 : CHROME_HEIGHT;
|
|
28301
|
+
const sidebarWidth = windowState.uiState.sidebarWidth;
|
|
28302
|
+
const resizeHandleOverlap = 6;
|
|
28303
|
+
windowState.sidebarView.setBounds({
|
|
28304
|
+
x: width - sidebarWidth - resizeHandleOverlap,
|
|
28305
|
+
y: chromeHeight,
|
|
28306
|
+
width: sidebarWidth + resizeHandleOverlap,
|
|
28307
|
+
height: height - chromeHeight
|
|
28308
|
+
});
|
|
28309
|
+
scheduleSidebarResizeRecovery();
|
|
28310
|
+
});
|
|
28311
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_RESIZE, (event, width) => {
|
|
28312
|
+
requireTrusted(event);
|
|
28313
|
+
assertNumber(width, "width");
|
|
28314
|
+
if (isSidebarDetached(windowState)) {
|
|
28315
|
+
return windowState.uiState.sidebarWidth;
|
|
28316
|
+
}
|
|
28317
|
+
const clamped = Math.max(240, Math.min(800, Math.round(width)));
|
|
28318
|
+
windowState.uiState.sidebarWidth = clamped;
|
|
28319
|
+
resizeSidebarViews(windowState);
|
|
28320
|
+
emitSidebarPanelState(windowState);
|
|
28321
|
+
return clamped;
|
|
28322
|
+
});
|
|
28323
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_RESIZE_COMMIT, (event) => {
|
|
28324
|
+
requireTrusted(event);
|
|
28325
|
+
if (isSidebarDetached(windowState)) return;
|
|
28326
|
+
stopSidebarResize();
|
|
28327
|
+
setSetting("sidebarWidth", windowState.uiState.sidebarWidth);
|
|
28328
|
+
relayout();
|
|
28329
|
+
});
|
|
28330
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_POPOUT, (event) => {
|
|
28331
|
+
requireTrusted(event);
|
|
28332
|
+
stopSidebarResize();
|
|
28333
|
+
return detachSidebar(windowState, {
|
|
28334
|
+
relayout,
|
|
28335
|
+
getWindowIconPath
|
|
28336
|
+
});
|
|
28337
|
+
});
|
|
28338
|
+
electron.ipcMain.handle(Channels$1.SIDEBAR_DOCK, (event) => {
|
|
28339
|
+
requireTrusted(event);
|
|
28340
|
+
stopSidebarResize();
|
|
28341
|
+
return dockSidebar(windowState, { relayout });
|
|
28342
|
+
});
|
|
28343
|
+
electron.ipcMain.on(
|
|
28344
|
+
Channels$1.RENDERER_VIEW_READY,
|
|
28345
|
+
(event, view) => {
|
|
28346
|
+
requireTrusted(event);
|
|
28347
|
+
if (view !== "sidebar") return;
|
|
28348
|
+
if (windowState.uiState.sidebarPanelMode === "closed") {
|
|
28349
|
+
openDockedSidebar(windowState, relayout);
|
|
28350
|
+
}
|
|
28351
|
+
}
|
|
28352
|
+
);
|
|
28353
|
+
electron.ipcMain.handle(Channels$1.SETTINGS_VISIBILITY, (event, open) => {
|
|
28354
|
+
requireTrusted(event);
|
|
28355
|
+
windowState.uiState.settingsOpen = open;
|
|
28356
|
+
if (open) {
|
|
28357
|
+
closeSidebar(windowState, relayout);
|
|
28358
|
+
} else {
|
|
28359
|
+
relayout();
|
|
28360
|
+
emitSidebarPanelState(windowState);
|
|
28361
|
+
}
|
|
28362
|
+
return windowState.uiState.settingsOpen;
|
|
28363
|
+
});
|
|
28364
|
+
}
|
|
28022
28365
|
const SUPPORT_API = process.env.VESSEL_SUPPORT_API || process.env.VESSEL_PREMIUM_API || "https://vesselpremium.quantaintellect.com";
|
|
28023
28366
|
const MAX_FEEDBACK_MESSAGE_LENGTH = 5e3;
|
|
28024
28367
|
const FEEDBACK_REQUEST_TIMEOUT_MS = 15e3;
|
|
@@ -28026,6 +28369,9 @@ function isValidEmail(email) {
|
|
|
28026
28369
|
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
28027
28370
|
}
|
|
28028
28371
|
async function submitFeedback(payload) {
|
|
28372
|
+
if (isAirGapped()) {
|
|
28373
|
+
return errorResult("Feedback submission is disabled in air-gapped mode.");
|
|
28374
|
+
}
|
|
28029
28375
|
const email = payload.email.trim().toLowerCase();
|
|
28030
28376
|
const message = payload.message.trim();
|
|
28031
28377
|
if (!isValidEmail(email)) {
|
|
@@ -28099,7 +28445,7 @@ function snapshot() {
|
|
|
28099
28445
|
return records.map((record) => ({ ...record }));
|
|
28100
28446
|
}
|
|
28101
28447
|
function emit() {
|
|
28102
|
-
broadcaster?.(Channels.PERMISSIONS_GET, snapshot());
|
|
28448
|
+
broadcaster?.(Channels$1.PERMISSIONS_GET, snapshot());
|
|
28103
28449
|
}
|
|
28104
28450
|
function getDecision(origin, permission) {
|
|
28105
28451
|
const existing = records.find((r) => r.origin === origin && r.permission === permission);
|
|
@@ -28222,6 +28568,15 @@ function compareVersions(a, b) {
|
|
|
28222
28568
|
async function checkForUpdates() {
|
|
28223
28569
|
const currentVersion = electron.app.getVersion();
|
|
28224
28570
|
const checkedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
28571
|
+
if (isAirGapped()) {
|
|
28572
|
+
return {
|
|
28573
|
+
currentVersion,
|
|
28574
|
+
latestVersion: null,
|
|
28575
|
+
updateAvailable: false,
|
|
28576
|
+
checkedAt,
|
|
28577
|
+
error: "Update checks are disabled in air-gapped mode."
|
|
28578
|
+
};
|
|
28579
|
+
}
|
|
28225
28580
|
try {
|
|
28226
28581
|
const response = await fetch(GITHUB_LATEST_RELEASE_API_URL, {
|
|
28227
28582
|
headers: { accept: "application/vnd.github+json", "user-agent": `Vessel/${currentVersion}` }
|
|
@@ -28252,6 +28607,9 @@ async function checkForUpdates() {
|
|
|
28252
28607
|
}
|
|
28253
28608
|
}
|
|
28254
28609
|
async function openUpdateDownload() {
|
|
28610
|
+
if (isAirGapped()) {
|
|
28611
|
+
throw new Error("Update downloads are unavailable in air-gapped mode.");
|
|
28612
|
+
}
|
|
28255
28613
|
await openExternalAllowlisted(RELEASES_URL, { hosts: ["github.com"] });
|
|
28256
28614
|
}
|
|
28257
28615
|
let activeChatProvider = null;
|
|
@@ -28300,56 +28658,37 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28300
28658
|
const provider = settings2.chatProvider ? createProvider(settings2.chatProvider) : null;
|
|
28301
28659
|
researchOrchestrator = new ResearchOrchestrator(provider, tabManager, runtime2);
|
|
28302
28660
|
researchOrchestrator.setUpdateListener((state2) => {
|
|
28303
|
-
sendToRendererViews(Channels.RESEARCH_STATE_UPDATE, state2);
|
|
28661
|
+
sendToRendererViews(Channels$1.RESEARCH_STATE_UPDATE, state2);
|
|
28304
28662
|
});
|
|
28305
28663
|
}
|
|
28306
28664
|
return researchOrchestrator;
|
|
28307
28665
|
};
|
|
28308
|
-
electron.ipcMain.handle(Channels.OPEN_PRIVATE_WINDOW, (event) => {
|
|
28666
|
+
electron.ipcMain.handle(Channels$1.OPEN_PRIVATE_WINDOW, (event) => {
|
|
28309
28667
|
requireTrusted(event);
|
|
28310
28668
|
createPrivateWindow();
|
|
28311
28669
|
});
|
|
28312
|
-
electron.ipcMain.handle(Channels.OPEN_NEW_WINDOW, (event) => {
|
|
28670
|
+
electron.ipcMain.handle(Channels$1.OPEN_NEW_WINDOW, (event) => {
|
|
28313
28671
|
requireTrusted(event);
|
|
28314
28672
|
createSecondaryWindow();
|
|
28315
28673
|
});
|
|
28316
|
-
electron.ipcMain.handle(Channels.IS_PRIVATE_MODE, (event) => {
|
|
28674
|
+
electron.ipcMain.handle(Channels$1.IS_PRIVATE_MODE, (event) => {
|
|
28317
28675
|
requireTrusted(event);
|
|
28318
28676
|
return false;
|
|
28319
28677
|
});
|
|
28320
|
-
let sidebarResizeRecoveryTimer = null;
|
|
28321
|
-
let sidebarResizeActive = false;
|
|
28322
28678
|
let runtimeUpdateTimer = null;
|
|
28323
28679
|
let pendingRuntimeState = null;
|
|
28324
|
-
const clearSidebarResizeRecoveryTimer = () => {
|
|
28325
|
-
if (!sidebarResizeRecoveryTimer) return;
|
|
28326
|
-
clearTimeout(sidebarResizeRecoveryTimer);
|
|
28327
|
-
sidebarResizeRecoveryTimer = null;
|
|
28328
|
-
};
|
|
28329
|
-
const restoreSidebarLayoutAfterResize = () => {
|
|
28330
|
-
clearSidebarResizeRecoveryTimer();
|
|
28331
|
-
if (!sidebarResizeActive) return;
|
|
28332
|
-
sidebarResizeActive = false;
|
|
28333
|
-
layoutViews(windowState);
|
|
28334
|
-
};
|
|
28335
|
-
const scheduleSidebarResizeRecovery = () => {
|
|
28336
|
-
clearSidebarResizeRecoveryTimer();
|
|
28337
|
-
sidebarResizeRecoveryTimer = setTimeout(() => {
|
|
28338
|
-
restoreSidebarLayoutAfterResize();
|
|
28339
|
-
}, 1200);
|
|
28340
|
-
};
|
|
28341
28680
|
const flushRuntimeUpdate = () => {
|
|
28342
28681
|
runtimeUpdateTimer = null;
|
|
28343
28682
|
if (!pendingRuntimeState) return;
|
|
28344
28683
|
if (!chromeView.webContents.isDestroyed()) {
|
|
28345
28684
|
chromeView.webContents.send(
|
|
28346
|
-
Channels.AGENT_RUNTIME_UPDATE,
|
|
28685
|
+
Channels$1.AGENT_RUNTIME_UPDATE,
|
|
28347
28686
|
pendingRuntimeState
|
|
28348
28687
|
);
|
|
28349
28688
|
}
|
|
28350
28689
|
if (!sidebarView.webContents.isDestroyed()) {
|
|
28351
28690
|
sidebarView.webContents.send(
|
|
28352
|
-
Channels.AGENT_RUNTIME_UPDATE,
|
|
28691
|
+
Channels$1.AGENT_RUNTIME_UPDATE,
|
|
28353
28692
|
pendingRuntimeState
|
|
28354
28693
|
);
|
|
28355
28694
|
}
|
|
@@ -28386,7 +28725,7 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28386
28725
|
};
|
|
28387
28726
|
const emitHighlightCount = async () => {
|
|
28388
28727
|
const count = await getActiveHighlightCountSafe();
|
|
28389
|
-
sendToRendererViews(Channels.HIGHLIGHT_COUNT_UPDATE, count);
|
|
28728
|
+
sendToRendererViews(Channels$1.HIGHLIGHT_COUNT_UPDATE, count);
|
|
28390
28729
|
};
|
|
28391
28730
|
const applySettingChange = async (key2, value) => {
|
|
28392
28731
|
const updatedSettings = setSetting(key2, value);
|
|
@@ -28405,36 +28744,36 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28405
28744
|
}
|
|
28406
28745
|
}
|
|
28407
28746
|
const rendererSettings = getRendererSettings();
|
|
28408
|
-
sendToRendererViews(Channels.SETTINGS_UPDATE, rendererSettings);
|
|
28747
|
+
sendToRendererViews(Channels$1.SETTINGS_UPDATE, rendererSettings);
|
|
28409
28748
|
return rendererSettings;
|
|
28410
28749
|
};
|
|
28411
28750
|
runtime2.setUpdateListener((state2) => {
|
|
28412
28751
|
scheduleRuntimeUpdate(state2);
|
|
28413
28752
|
});
|
|
28414
28753
|
onRuntimeHealthChange((health) => {
|
|
28415
|
-
sendToRendererViews(Channels.SETTINGS_HEALTH_UPDATE, health);
|
|
28754
|
+
sendToRendererViews(Channels$1.SETTINGS_HEALTH_UPDATE, health);
|
|
28416
28755
|
});
|
|
28417
28756
|
onAIStreamIdle(() => {
|
|
28418
|
-
sendToRendererViews(Channels.AI_STREAM_IDLE);
|
|
28757
|
+
sendToRendererViews(Channels$1.AI_STREAM_IDLE);
|
|
28419
28758
|
});
|
|
28420
|
-
electron.ipcMain.handle(Channels.TAB_CREATE, (event, url) => {
|
|
28759
|
+
electron.ipcMain.handle(Channels$1.TAB_CREATE, (event, url) => {
|
|
28421
28760
|
requireTrusted(event);
|
|
28422
28761
|
const id = tabManager.createTab(url || loadSettings().defaultUrl);
|
|
28423
28762
|
layoutViews(windowState);
|
|
28424
28763
|
return id;
|
|
28425
28764
|
});
|
|
28426
|
-
electron.ipcMain.handle(Channels.TAB_CLOSE, (event, id) => {
|
|
28765
|
+
electron.ipcMain.handle(Channels$1.TAB_CLOSE, (event, id) => {
|
|
28427
28766
|
requireTrusted(event);
|
|
28428
28767
|
tabManager.closeTab(id);
|
|
28429
28768
|
layoutViews(windowState);
|
|
28430
28769
|
});
|
|
28431
|
-
electron.ipcMain.handle(Channels.TAB_SWITCH, (event, id) => {
|
|
28770
|
+
electron.ipcMain.handle(Channels$1.TAB_SWITCH, (event, id) => {
|
|
28432
28771
|
requireTrusted(event);
|
|
28433
28772
|
tabManager.switchTab(id);
|
|
28434
28773
|
layoutViews(windowState);
|
|
28435
28774
|
});
|
|
28436
28775
|
electron.ipcMain.handle(
|
|
28437
|
-
Channels.TAB_NAVIGATE,
|
|
28776
|
+
Channels$1.TAB_NAVIGATE,
|
|
28438
28777
|
(event, id, url, postBody) => {
|
|
28439
28778
|
requireTrusted(event);
|
|
28440
28779
|
assertString(id, "tabId");
|
|
@@ -28442,19 +28781,19 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28442
28781
|
return tabManager.navigateTab(id, url, postBody);
|
|
28443
28782
|
}
|
|
28444
28783
|
);
|
|
28445
|
-
electron.ipcMain.handle(Channels.TAB_BACK, (event, id) => {
|
|
28784
|
+
electron.ipcMain.handle(Channels$1.TAB_BACK, (event, id) => {
|
|
28446
28785
|
requireTrusted(event);
|
|
28447
28786
|
tabManager.goBack(id);
|
|
28448
28787
|
});
|
|
28449
|
-
electron.ipcMain.handle(Channels.TAB_FORWARD, (event, id) => {
|
|
28788
|
+
electron.ipcMain.handle(Channels$1.TAB_FORWARD, (event, id) => {
|
|
28450
28789
|
requireTrusted(event);
|
|
28451
28790
|
tabManager.goForward(id);
|
|
28452
28791
|
});
|
|
28453
|
-
electron.ipcMain.handle(Channels.TAB_RELOAD, (event, id) => {
|
|
28792
|
+
electron.ipcMain.handle(Channels$1.TAB_RELOAD, (event, id) => {
|
|
28454
28793
|
requireTrusted(event);
|
|
28455
28794
|
tabManager.reloadTab(id);
|
|
28456
28795
|
});
|
|
28457
|
-
electron.ipcMain.handle(Channels.TAB_TOGGLE_AD_BLOCK, (event, id) => {
|
|
28796
|
+
electron.ipcMain.handle(Channels$1.TAB_TOGGLE_AD_BLOCK, (event, id) => {
|
|
28458
28797
|
requireTrusted(event);
|
|
28459
28798
|
assertString(id, "id");
|
|
28460
28799
|
const tab = tabManager.getTab(id);
|
|
@@ -28463,67 +28802,67 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28463
28802
|
tab.setAdBlockingEnabled(newState);
|
|
28464
28803
|
return newState;
|
|
28465
28804
|
});
|
|
28466
|
-
electron.ipcMain.handle(Channels.TAB_ZOOM_IN, (event, id) => {
|
|
28805
|
+
electron.ipcMain.handle(Channels$1.TAB_ZOOM_IN, (event, id) => {
|
|
28467
28806
|
requireTrusted(event);
|
|
28468
28807
|
assertString(id, "id");
|
|
28469
28808
|
tabManager.zoomIn(id);
|
|
28470
28809
|
});
|
|
28471
|
-
electron.ipcMain.handle(Channels.TAB_ZOOM_OUT, (event, id) => {
|
|
28810
|
+
electron.ipcMain.handle(Channels$1.TAB_ZOOM_OUT, (event, id) => {
|
|
28472
28811
|
requireTrusted(event);
|
|
28473
28812
|
assertString(id, "id");
|
|
28474
28813
|
tabManager.zoomOut(id);
|
|
28475
28814
|
});
|
|
28476
|
-
electron.ipcMain.handle(Channels.TAB_ZOOM_RESET, (event, id) => {
|
|
28815
|
+
electron.ipcMain.handle(Channels$1.TAB_ZOOM_RESET, (event, id) => {
|
|
28477
28816
|
requireTrusted(event);
|
|
28478
28817
|
assertString(id, "id");
|
|
28479
28818
|
tabManager.zoomReset(id);
|
|
28480
28819
|
});
|
|
28481
|
-
electron.ipcMain.handle(Channels.TAB_REOPEN_CLOSED, (event) => {
|
|
28820
|
+
electron.ipcMain.handle(Channels$1.TAB_REOPEN_CLOSED, (event) => {
|
|
28482
28821
|
requireTrusted(event);
|
|
28483
28822
|
const id = tabManager.reopenClosedTab();
|
|
28484
28823
|
if (id) layoutViews(windowState);
|
|
28485
28824
|
return id;
|
|
28486
28825
|
});
|
|
28487
|
-
electron.ipcMain.handle(Channels.TAB_DUPLICATE, (event, id) => {
|
|
28826
|
+
electron.ipcMain.handle(Channels$1.TAB_DUPLICATE, (event, id) => {
|
|
28488
28827
|
requireTrusted(event);
|
|
28489
28828
|
assertString(id, "id");
|
|
28490
28829
|
const newId = tabManager.duplicateTab(id);
|
|
28491
28830
|
if (newId) layoutViews(windowState);
|
|
28492
28831
|
return newId;
|
|
28493
28832
|
});
|
|
28494
|
-
electron.ipcMain.handle(Channels.TAB_PIN, (event, id) => {
|
|
28833
|
+
electron.ipcMain.handle(Channels$1.TAB_PIN, (event, id) => {
|
|
28495
28834
|
requireTrusted(event);
|
|
28496
28835
|
assertString(id, "id");
|
|
28497
28836
|
tabManager.pinTab(id);
|
|
28498
28837
|
});
|
|
28499
|
-
electron.ipcMain.handle(Channels.TAB_UNPIN, (event, id) => {
|
|
28838
|
+
electron.ipcMain.handle(Channels$1.TAB_UNPIN, (event, id) => {
|
|
28500
28839
|
requireTrusted(event);
|
|
28501
28840
|
assertString(id, "id");
|
|
28502
28841
|
tabManager.unpinTab(id);
|
|
28503
28842
|
});
|
|
28504
|
-
electron.ipcMain.handle(Channels.TAB_GROUP_CREATE, (event, id) => {
|
|
28843
|
+
electron.ipcMain.handle(Channels$1.TAB_GROUP_CREATE, (event, id) => {
|
|
28505
28844
|
requireTrusted(event);
|
|
28506
28845
|
assertString(id, "id");
|
|
28507
28846
|
return tabManager.createGroupFromTab(id);
|
|
28508
28847
|
});
|
|
28509
|
-
electron.ipcMain.handle(Channels.TAB_GROUP_ADD_TAB, (event, id, groupId) => {
|
|
28848
|
+
electron.ipcMain.handle(Channels$1.TAB_GROUP_ADD_TAB, (event, id, groupId) => {
|
|
28510
28849
|
requireTrusted(event);
|
|
28511
28850
|
assertString(id, "id");
|
|
28512
28851
|
assertString(groupId, "groupId");
|
|
28513
28852
|
tabManager.assignTabToGroup(id, groupId);
|
|
28514
28853
|
});
|
|
28515
|
-
electron.ipcMain.handle(Channels.TAB_GROUP_REMOVE_TAB, (event, id) => {
|
|
28854
|
+
electron.ipcMain.handle(Channels$1.TAB_GROUP_REMOVE_TAB, (event, id) => {
|
|
28516
28855
|
requireTrusted(event);
|
|
28517
28856
|
assertString(id, "id");
|
|
28518
28857
|
tabManager.removeTabFromGroup(id);
|
|
28519
28858
|
});
|
|
28520
|
-
electron.ipcMain.handle(Channels.TAB_GROUP_TOGGLE_COLLAPSED, (event, groupId) => {
|
|
28859
|
+
electron.ipcMain.handle(Channels$1.TAB_GROUP_TOGGLE_COLLAPSED, (event, groupId) => {
|
|
28521
28860
|
requireTrusted(event);
|
|
28522
28861
|
assertString(groupId, "groupId");
|
|
28523
28862
|
return tabManager.toggleGroupCollapsed(groupId);
|
|
28524
28863
|
});
|
|
28525
28864
|
electron.ipcMain.handle(
|
|
28526
|
-
Channels.TAB_GROUP_SET_COLOR,
|
|
28865
|
+
Channels$1.TAB_GROUP_SET_COLOR,
|
|
28527
28866
|
(event, groupId, color) => {
|
|
28528
28867
|
requireTrusted(event);
|
|
28529
28868
|
assertString(groupId, "groupId");
|
|
@@ -28531,55 +28870,55 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28531
28870
|
tabManager.setGroupColor(groupId, color);
|
|
28532
28871
|
}
|
|
28533
28872
|
);
|
|
28534
|
-
electron.ipcMain.handle(Channels.TAB_TOGGLE_MUTE, (event, id) => {
|
|
28873
|
+
electron.ipcMain.handle(Channels$1.TAB_TOGGLE_MUTE, (event, id) => {
|
|
28535
28874
|
requireTrusted(event);
|
|
28536
28875
|
assertString(id, "id");
|
|
28537
28876
|
return tabManager.toggleMuted(id);
|
|
28538
28877
|
});
|
|
28539
|
-
electron.ipcMain.handle(Channels.TAB_PRINT, (event, id) => {
|
|
28878
|
+
electron.ipcMain.handle(Channels$1.TAB_PRINT, (event, id) => {
|
|
28540
28879
|
requireTrusted(event);
|
|
28541
28880
|
assertString(id, "id");
|
|
28542
28881
|
tabManager.printTab(id);
|
|
28543
28882
|
});
|
|
28544
|
-
electron.ipcMain.handle(Channels.TAB_PRINT_TO_PDF, (event, id) => {
|
|
28883
|
+
electron.ipcMain.handle(Channels$1.TAB_PRINT_TO_PDF, (event, id) => {
|
|
28545
28884
|
requireTrusted(event);
|
|
28546
28885
|
assertString(id, "id");
|
|
28547
28886
|
return tabManager.saveTabAsPdf(id);
|
|
28548
28887
|
});
|
|
28549
|
-
electron.ipcMain.on(Channels.TAB_CONTEXT_MENU, (event, id) => {
|
|
28888
|
+
electron.ipcMain.on(Channels$1.TAB_CONTEXT_MENU, (event, id) => {
|
|
28550
28889
|
requireTrusted(event);
|
|
28551
28890
|
assertString(id, "id");
|
|
28552
28891
|
showTabContextMenu(tabManager, id, mainWindow, () => layoutViews(windowState));
|
|
28553
28892
|
});
|
|
28554
|
-
electron.ipcMain.on(Channels.TAB_GROUP_CONTEXT_MENU, (event, groupId) => {
|
|
28893
|
+
electron.ipcMain.on(Channels$1.TAB_GROUP_CONTEXT_MENU, (event, groupId) => {
|
|
28555
28894
|
requireTrusted(event);
|
|
28556
28895
|
assertString(groupId, "groupId");
|
|
28557
28896
|
showGroupContextMenu(tabManager, groupId, mainWindow);
|
|
28558
28897
|
});
|
|
28559
|
-
electron.ipcMain.handle(Channels.TAB_STATE_GET, (event) => {
|
|
28898
|
+
electron.ipcMain.handle(Channels$1.TAB_STATE_GET, (event) => {
|
|
28560
28899
|
requireTrusted(event);
|
|
28561
28900
|
return {
|
|
28562
28901
|
tabs: tabManager.getAllStates(),
|
|
28563
28902
|
activeId: tabManager.getActiveTabId() || ""
|
|
28564
28903
|
};
|
|
28565
28904
|
});
|
|
28566
|
-
electron.ipcMain.handle(Channels.AI_QUERY, async (event, query, history) => {
|
|
28905
|
+
electron.ipcMain.handle(Channels$1.AI_QUERY, async (event, query, history) => {
|
|
28567
28906
|
requireTrusted(event);
|
|
28568
28907
|
const settings2 = loadSettings();
|
|
28569
28908
|
const chatConfig = settings2.chatProvider;
|
|
28570
28909
|
if (!chatConfig) {
|
|
28571
|
-
sendToRendererViews(Channels.AI_STREAM_START, query);
|
|
28910
|
+
sendToRendererViews(Channels$1.AI_STREAM_START, query);
|
|
28572
28911
|
sendToRendererViews(
|
|
28573
|
-
Channels.AI_STREAM_CHUNK,
|
|
28912
|
+
Channels$1.AI_STREAM_CHUNK,
|
|
28574
28913
|
"Chat provider not configured. Open Settings (Ctrl+,) to choose a provider."
|
|
28575
28914
|
);
|
|
28576
|
-
sendToRendererViews(Channels.AI_STREAM_END, "failed");
|
|
28915
|
+
sendToRendererViews(Channels$1.AI_STREAM_END, "failed");
|
|
28577
28916
|
return { accepted: true };
|
|
28578
28917
|
}
|
|
28579
28918
|
if (!tryBeginAIStream("manual")) {
|
|
28580
28919
|
return { accepted: false, reason: "busy" };
|
|
28581
28920
|
}
|
|
28582
|
-
sendToRendererViews(Channels.AI_STREAM_START, query);
|
|
28921
|
+
sendToRendererViews(Channels$1.AI_STREAM_START, query);
|
|
28583
28922
|
(async () => {
|
|
28584
28923
|
try {
|
|
28585
28924
|
activeChatProvider = createProvider(chatConfig);
|
|
@@ -28589,8 +28928,8 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28589
28928
|
query,
|
|
28590
28929
|
activeChatProvider,
|
|
28591
28930
|
activeTab?.view.webContents,
|
|
28592
|
-
(chunk) => sendToRendererViews(Channels.AI_STREAM_CHUNK, chunk),
|
|
28593
|
-
() => sendToRendererViews(Channels.AI_STREAM_END, "completed"),
|
|
28931
|
+
(chunk) => sendToRendererViews(Channels$1.AI_STREAM_CHUNK, chunk),
|
|
28932
|
+
() => sendToRendererViews(Channels$1.AI_STREAM_END, "completed"),
|
|
28594
28933
|
tabManager,
|
|
28595
28934
|
runtime2,
|
|
28596
28935
|
compactProviderHistory(history),
|
|
@@ -28598,9 +28937,9 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28598
28937
|
);
|
|
28599
28938
|
} catch (err) {
|
|
28600
28939
|
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
28601
|
-
sendToRendererViews(Channels.AI_STREAM_CHUNK, `
|
|
28940
|
+
sendToRendererViews(Channels$1.AI_STREAM_CHUNK, `
|
|
28602
28941
|
[Error: ${msg}]`);
|
|
28603
|
-
sendToRendererViews(Channels.AI_STREAM_END, "failed");
|
|
28942
|
+
sendToRendererViews(Channels$1.AI_STREAM_END, "failed");
|
|
28604
28943
|
} finally {
|
|
28605
28944
|
activeChatProvider = null;
|
|
28606
28945
|
endAIStream("manual");
|
|
@@ -28608,11 +28947,11 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28608
28947
|
})();
|
|
28609
28948
|
return { accepted: true };
|
|
28610
28949
|
});
|
|
28611
|
-
electron.ipcMain.handle(Channels.AI_CANCEL, (event) => {
|
|
28950
|
+
electron.ipcMain.handle(Channels$1.AI_CANCEL, (event) => {
|
|
28612
28951
|
requireTrusted(event);
|
|
28613
28952
|
activeChatProvider?.cancel();
|
|
28614
28953
|
});
|
|
28615
|
-
electron.ipcMain.handle(Channels.AI_FETCH_MODELS, async (event, config) => {
|
|
28954
|
+
electron.ipcMain.handle(Channels$1.AI_FETCH_MODELS, async (event, config) => {
|
|
28616
28955
|
requireTrusted(event);
|
|
28617
28956
|
try {
|
|
28618
28957
|
if (!config || typeof config !== "object" || !("id" in config)) {
|
|
@@ -28625,13 +28964,13 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28625
28964
|
return errorResult(getErrorMessage(err), { models: [] });
|
|
28626
28965
|
}
|
|
28627
28966
|
});
|
|
28628
|
-
electron.ipcMain.handle(Channels.CONTENT_EXTRACT, async (event) => {
|
|
28967
|
+
electron.ipcMain.handle(Channels$1.CONTENT_EXTRACT, async (event) => {
|
|
28629
28968
|
requireTrusted(event);
|
|
28630
28969
|
const activeTab = tabManager.getActiveTab();
|
|
28631
28970
|
if (!activeTab) return null;
|
|
28632
28971
|
return extractContent(activeTab.view.webContents);
|
|
28633
28972
|
});
|
|
28634
|
-
electron.ipcMain.handle(Channels.READER_MODE_TOGGLE, async (event) => {
|
|
28973
|
+
electron.ipcMain.handle(Channels$1.READER_MODE_TOGGLE, async (event) => {
|
|
28635
28974
|
requireTrusted(event);
|
|
28636
28975
|
const activeTab = tabManager.getActiveTab();
|
|
28637
28976
|
if (!activeTab) return;
|
|
@@ -28652,106 +28991,31 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28652
28991
|
);
|
|
28653
28992
|
}
|
|
28654
28993
|
});
|
|
28655
|
-
electron.ipcMain.handle(Channels.
|
|
28656
|
-
requireTrusted(event);
|
|
28657
|
-
windowState.uiState.sidebarOpen = !windowState.uiState.sidebarOpen;
|
|
28658
|
-
layoutViews(windowState);
|
|
28659
|
-
return {
|
|
28660
|
-
open: windowState.uiState.sidebarOpen,
|
|
28661
|
-
width: windowState.uiState.sidebarWidth
|
|
28662
|
-
};
|
|
28663
|
-
});
|
|
28664
|
-
electron.ipcMain.handle(Channels.SIDEBAR_NAVIGATE, (event, tab) => {
|
|
28665
|
-
requireTrusted(event);
|
|
28666
|
-
assertString(tab, "tab");
|
|
28667
|
-
if (!windowState.uiState.sidebarOpen) {
|
|
28668
|
-
windowState.uiState.sidebarOpen = true;
|
|
28669
|
-
layoutViews(windowState);
|
|
28670
|
-
}
|
|
28671
|
-
if (!sidebarView.webContents.isDestroyed()) {
|
|
28672
|
-
sidebarView.webContents.send(Channels.SIDEBAR_NAVIGATE, tab);
|
|
28673
|
-
}
|
|
28674
|
-
return {
|
|
28675
|
-
open: windowState.uiState.sidebarOpen,
|
|
28676
|
-
width: windowState.uiState.sidebarWidth
|
|
28677
|
-
};
|
|
28678
|
-
});
|
|
28679
|
-
electron.ipcMain.handle(Channels.SIDEBAR_RESIZE_START, (event) => {
|
|
28680
|
-
requireTrusted(event);
|
|
28681
|
-
sidebarResizeActive = true;
|
|
28682
|
-
clearSidebarResizeRecoveryTimer();
|
|
28683
|
-
const [width, height] = windowState.mainWindow.getContentSize();
|
|
28684
|
-
const chromeHeight = windowState.uiState.focusMode ? 0 : CHROME_HEIGHT;
|
|
28685
|
-
const sidebarWidth = windowState.uiState.sidebarWidth;
|
|
28686
|
-
const resizeHandleOverlap = 6;
|
|
28687
|
-
windowState.sidebarView.setBounds({
|
|
28688
|
-
x: width - sidebarWidth - resizeHandleOverlap,
|
|
28689
|
-
y: chromeHeight,
|
|
28690
|
-
width: sidebarWidth + resizeHandleOverlap,
|
|
28691
|
-
height: height - chromeHeight
|
|
28692
|
-
});
|
|
28693
|
-
scheduleSidebarResizeRecovery();
|
|
28694
|
-
});
|
|
28695
|
-
electron.ipcMain.handle(Channels.SIDEBAR_RESIZE, (event, width) => {
|
|
28696
|
-
requireTrusted(event);
|
|
28697
|
-
assertNumber(width, "width");
|
|
28698
|
-
const clamped = Math.max(240, Math.min(800, Math.round(width)));
|
|
28699
|
-
windowState.uiState.sidebarWidth = clamped;
|
|
28700
|
-
resizeSidebarViews(windowState);
|
|
28701
|
-
return clamped;
|
|
28702
|
-
});
|
|
28703
|
-
electron.ipcMain.handle(Channels.SIDEBAR_RESIZE_COMMIT, (event) => {
|
|
28704
|
-
requireTrusted(event);
|
|
28705
|
-
sidebarResizeActive = false;
|
|
28706
|
-
clearSidebarResizeRecoveryTimer();
|
|
28707
|
-
setSetting("sidebarWidth", windowState.uiState.sidebarWidth);
|
|
28708
|
-
layoutViews(windowState);
|
|
28709
|
-
});
|
|
28710
|
-
electron.ipcMain.on(
|
|
28711
|
-
Channels.RENDERER_VIEW_READY,
|
|
28712
|
-
(event, view) => {
|
|
28713
|
-
requireTrusted(event);
|
|
28714
|
-
if (view !== "sidebar") return;
|
|
28715
|
-
if (!windowState.uiState.sidebarOpen) {
|
|
28716
|
-
windowState.uiState.sidebarOpen = true;
|
|
28717
|
-
layoutViews(windowState);
|
|
28718
|
-
}
|
|
28719
|
-
}
|
|
28720
|
-
);
|
|
28721
|
-
electron.ipcMain.handle(Channels.FOCUS_MODE_TOGGLE, (event) => {
|
|
28994
|
+
electron.ipcMain.handle(Channels$1.FOCUS_MODE_TOGGLE, (event) => {
|
|
28722
28995
|
requireTrusted(event);
|
|
28723
28996
|
windowState.uiState.focusMode = !windowState.uiState.focusMode;
|
|
28724
28997
|
layoutViews(windowState);
|
|
28725
28998
|
return windowState.uiState.focusMode;
|
|
28726
28999
|
});
|
|
28727
|
-
electron.ipcMain.handle(Channels.
|
|
28728
|
-
requireTrusted(event);
|
|
28729
|
-
windowState.uiState.settingsOpen = open;
|
|
28730
|
-
if (open) {
|
|
28731
|
-
windowState.uiState.sidebarOpen = false;
|
|
28732
|
-
}
|
|
28733
|
-
layoutViews(windowState);
|
|
28734
|
-
return windowState.uiState.settingsOpen;
|
|
28735
|
-
});
|
|
28736
|
-
electron.ipcMain.handle(Channels.SETTINGS_GET, (event) => {
|
|
29000
|
+
electron.ipcMain.handle(Channels$1.SETTINGS_GET, (event) => {
|
|
28737
29001
|
requireTrusted(event);
|
|
28738
29002
|
return getRendererSettings();
|
|
28739
29003
|
});
|
|
28740
|
-
electron.ipcMain.handle(Channels.SETTINGS_HEALTH_GET, (event) => {
|
|
29004
|
+
electron.ipcMain.handle(Channels$1.SETTINGS_HEALTH_GET, (event) => {
|
|
28741
29005
|
requireTrusted(event);
|
|
28742
29006
|
return getRuntimeHealth();
|
|
28743
29007
|
});
|
|
28744
|
-
electron.ipcMain.handle(Channels.MCP_REGENERATE_TOKEN, (event) => {
|
|
29008
|
+
electron.ipcMain.handle(Channels$1.MCP_REGENERATE_TOKEN, (event) => {
|
|
28745
29009
|
requireTrusted(event);
|
|
28746
29010
|
return regenerateMcpAuthToken();
|
|
28747
29011
|
});
|
|
28748
|
-
electron.ipcMain.handle(Channels.SUPPORT_SUBMIT_FEEDBACK, async (event, email, message) => {
|
|
29012
|
+
electron.ipcMain.handle(Channels$1.SUPPORT_SUBMIT_FEEDBACK, async (event, email, message) => {
|
|
28749
29013
|
requireTrusted(event);
|
|
28750
29014
|
assertString(email, "email");
|
|
28751
29015
|
assertString(message, "message");
|
|
28752
29016
|
return submitFeedback({ email, message, source: "settings_account" });
|
|
28753
29017
|
});
|
|
28754
|
-
electron.ipcMain.handle(Channels.SETTINGS_SET, async (event, key2, value) => {
|
|
29018
|
+
electron.ipcMain.handle(Channels$1.SETTINGS_SET, async (event, key2, value) => {
|
|
28755
29019
|
requireTrusted(event);
|
|
28756
29020
|
assertString(key2, "key");
|
|
28757
29021
|
if (!SETTABLE_KEYS.has(key2)) {
|
|
@@ -28760,20 +29024,20 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28760
29024
|
const settingsKey = key2;
|
|
28761
29025
|
return applySettingChange(settingsKey, value);
|
|
28762
29026
|
});
|
|
28763
|
-
electron.ipcMain.handle(Channels.AGENT_RUNTIME_GET, (event) => {
|
|
29027
|
+
electron.ipcMain.handle(Channels$1.AGENT_RUNTIME_GET, (event) => {
|
|
28764
29028
|
requireTrusted(event);
|
|
28765
29029
|
return runtime2.getState();
|
|
28766
29030
|
});
|
|
28767
|
-
electron.ipcMain.handle(Channels.AGENT_PAUSE, (event) => {
|
|
29031
|
+
electron.ipcMain.handle(Channels$1.AGENT_PAUSE, (event) => {
|
|
28768
29032
|
requireTrusted(event);
|
|
28769
29033
|
return runtime2.pause();
|
|
28770
29034
|
});
|
|
28771
|
-
electron.ipcMain.handle(Channels.AGENT_RESUME, (event) => {
|
|
29035
|
+
electron.ipcMain.handle(Channels$1.AGENT_RESUME, (event) => {
|
|
28772
29036
|
requireTrusted(event);
|
|
28773
29037
|
return runtime2.resume();
|
|
28774
29038
|
});
|
|
28775
29039
|
electron.ipcMain.handle(
|
|
28776
|
-
Channels.AGENT_SET_APPROVAL_MODE,
|
|
29040
|
+
Channels$1.AGENT_SET_APPROVAL_MODE,
|
|
28777
29041
|
(event, mode) => {
|
|
28778
29042
|
requireTrusted(event);
|
|
28779
29043
|
assertString(mode, "mode");
|
|
@@ -28786,44 +29050,44 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28786
29050
|
}
|
|
28787
29051
|
);
|
|
28788
29052
|
electron.ipcMain.handle(
|
|
28789
|
-
Channels.AGENT_APPROVAL_RESOLVE,
|
|
29053
|
+
Channels$1.AGENT_APPROVAL_RESOLVE,
|
|
28790
29054
|
(event, approvalId, approved) => {
|
|
28791
29055
|
requireTrusted(event);
|
|
28792
29056
|
return runtime2.resolveApproval(approvalId, approved);
|
|
28793
29057
|
}
|
|
28794
29058
|
);
|
|
28795
29059
|
electron.ipcMain.handle(
|
|
28796
|
-
Channels.AGENT_CHECKPOINT_CREATE,
|
|
29060
|
+
Channels$1.AGENT_CHECKPOINT_CREATE,
|
|
28797
29061
|
(event, name, note) => {
|
|
28798
29062
|
requireTrusted(event);
|
|
28799
29063
|
return runtime2.createCheckpoint(name, note);
|
|
28800
29064
|
}
|
|
28801
29065
|
);
|
|
28802
|
-
electron.ipcMain.handle(Channels.AGENT_CHECKPOINT_RESTORE, (event, checkpointId) => {
|
|
29066
|
+
electron.ipcMain.handle(Channels$1.AGENT_CHECKPOINT_RESTORE, (event, checkpointId) => {
|
|
28803
29067
|
requireTrusted(event);
|
|
28804
29068
|
return runtime2.restoreCheckpoint(checkpointId);
|
|
28805
29069
|
});
|
|
28806
|
-
electron.ipcMain.handle(Channels.AGENT_CHECKPOINT_UPDATE_NOTE, (event, checkpointId, note) => {
|
|
29070
|
+
electron.ipcMain.handle(Channels$1.AGENT_CHECKPOINT_UPDATE_NOTE, (event, checkpointId, note) => {
|
|
28807
29071
|
requireTrusted(event);
|
|
28808
29072
|
return runtime2.updateCheckpointNote(checkpointId, note || "");
|
|
28809
29073
|
});
|
|
28810
|
-
electron.ipcMain.handle(Channels.AGENT_UNDO_LAST_ACTION, (event) => {
|
|
29074
|
+
electron.ipcMain.handle(Channels$1.AGENT_UNDO_LAST_ACTION, (event) => {
|
|
28811
29075
|
requireTrusted(event);
|
|
28812
29076
|
return runtime2.undoLastAction();
|
|
28813
29077
|
});
|
|
28814
|
-
electron.ipcMain.handle(Channels.AGENT_SESSION_CAPTURE, (event, note) => {
|
|
29078
|
+
electron.ipcMain.handle(Channels$1.AGENT_SESSION_CAPTURE, (event, note) => {
|
|
28815
29079
|
requireTrusted(event);
|
|
28816
29080
|
return runtime2.captureSession(note);
|
|
28817
29081
|
});
|
|
28818
29082
|
electron.ipcMain.handle(
|
|
28819
|
-
Channels.AGENT_SESSION_RESTORE,
|
|
29083
|
+
Channels$1.AGENT_SESSION_RESTORE,
|
|
28820
29084
|
(event, snapshot2) => {
|
|
28821
29085
|
requireTrusted(event);
|
|
28822
29086
|
return runtime2.restoreSession(snapshot2);
|
|
28823
29087
|
}
|
|
28824
29088
|
);
|
|
28825
29089
|
registerBookmarkHandlers();
|
|
28826
|
-
electron.ipcMain.handle(Channels.HIGHLIGHT_CAPTURE, async (event) => {
|
|
29090
|
+
electron.ipcMain.handle(Channels$1.HIGHLIGHT_CAPTURE, async (event) => {
|
|
28827
29091
|
requireTrusted(event);
|
|
28828
29092
|
try {
|
|
28829
29093
|
const activeTab = tabManager.getActiveTab();
|
|
@@ -28849,10 +29113,10 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28849
29113
|
void emitHighlightCount();
|
|
28850
29114
|
}
|
|
28851
29115
|
if (!chromeView.webContents.isDestroyed()) {
|
|
28852
|
-
chromeView.webContents.send(Channels.HIGHLIGHT_CAPTURE_RESULT, result);
|
|
29116
|
+
chromeView.webContents.send(Channels$1.HIGHLIGHT_CAPTURE_RESULT, result);
|
|
28853
29117
|
}
|
|
28854
29118
|
});
|
|
28855
|
-
electron.ipcMain.on(Channels.HIGHLIGHT_SELECTION, (event, text) => {
|
|
29119
|
+
electron.ipcMain.on(Channels$1.HIGHLIGHT_SELECTION, (event, text) => {
|
|
28856
29120
|
try {
|
|
28857
29121
|
const wc = event.sender;
|
|
28858
29122
|
if (wc.isDestroyed()) return;
|
|
@@ -28861,18 +29125,18 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28861
29125
|
void persistAndMarkHighlight(wc, text).then((result) => {
|
|
28862
29126
|
if (result.success && !chromeView.webContents.isDestroyed()) {
|
|
28863
29127
|
void emitHighlightCount();
|
|
28864
|
-
chromeView.webContents.send(Channels.HIGHLIGHT_CAPTURE_RESULT, result);
|
|
29128
|
+
chromeView.webContents.send(Channels$1.HIGHLIGHT_CAPTURE_RESULT, result);
|
|
28865
29129
|
}
|
|
28866
29130
|
});
|
|
28867
29131
|
} catch (err) {
|
|
28868
29132
|
logger$4.warn("Failed to persist auto-highlight selection:", err);
|
|
28869
29133
|
}
|
|
28870
29134
|
});
|
|
28871
|
-
electron.ipcMain.handle(Channels.HIGHLIGHT_NAV_COUNT, (event) => {
|
|
29135
|
+
electron.ipcMain.handle(Channels$1.HIGHLIGHT_NAV_COUNT, (event) => {
|
|
28872
29136
|
requireTrusted(event);
|
|
28873
29137
|
return getActiveHighlightCountSafe();
|
|
28874
29138
|
});
|
|
28875
|
-
electron.ipcMain.handle(Channels.HIGHLIGHT_NAV_SCROLL, (event, index) => {
|
|
29139
|
+
electron.ipcMain.handle(Channels$1.HIGHLIGHT_NAV_SCROLL, (event, index) => {
|
|
28876
29140
|
requireTrusted(event);
|
|
28877
29141
|
const info = getActiveTabInfo(tabManager);
|
|
28878
29142
|
if (!info) return false;
|
|
@@ -28883,7 +29147,7 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28883
29147
|
return false;
|
|
28884
29148
|
}
|
|
28885
29149
|
});
|
|
28886
|
-
electron.ipcMain.handle(Channels.HIGHLIGHT_NAV_REMOVE, async (event, index) => {
|
|
29150
|
+
electron.ipcMain.handle(Channels$1.HIGHLIGHT_NAV_REMOVE, async (event, index) => {
|
|
28887
29151
|
requireTrusted(event);
|
|
28888
29152
|
const info = getActiveTabInfo(tabManager);
|
|
28889
29153
|
if (!info) return false;
|
|
@@ -28898,7 +29162,7 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28898
29162
|
return false;
|
|
28899
29163
|
}
|
|
28900
29164
|
});
|
|
28901
|
-
electron.ipcMain.handle(Channels.HIGHLIGHT_NAV_CLEAR, async (event) => {
|
|
29165
|
+
electron.ipcMain.handle(Channels$1.HIGHLIGHT_NAV_CLEAR, async (event) => {
|
|
28902
29166
|
requireTrusted(event);
|
|
28903
29167
|
const info = getActiveTabInfo(tabManager);
|
|
28904
29168
|
if (!info) return false;
|
|
@@ -28914,26 +29178,26 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28914
29178
|
}
|
|
28915
29179
|
});
|
|
28916
29180
|
const findBridge = createFindInPageBridge(tabManager, chromeView);
|
|
28917
|
-
electron.ipcMain.handle(Channels.FIND_IN_PAGE_START, (event, text, options) => {
|
|
29181
|
+
electron.ipcMain.handle(Channels$1.FIND_IN_PAGE_START, (event, text, options) => {
|
|
28918
29182
|
requireTrusted(event);
|
|
28919
29183
|
return findBridge.start(text, options);
|
|
28920
29184
|
});
|
|
28921
|
-
electron.ipcMain.handle(Channels.FIND_IN_PAGE_NEXT, (event, forward) => {
|
|
29185
|
+
electron.ipcMain.handle(Channels$1.FIND_IN_PAGE_NEXT, (event, forward) => {
|
|
28922
29186
|
requireTrusted(event);
|
|
28923
29187
|
return findBridge.next(forward);
|
|
28924
29188
|
});
|
|
28925
|
-
electron.ipcMain.handle(Channels.FIND_IN_PAGE_STOP, (event, action) => {
|
|
29189
|
+
electron.ipcMain.handle(Channels$1.FIND_IN_PAGE_STOP, (event, action) => {
|
|
28926
29190
|
requireTrusted(event);
|
|
28927
29191
|
findBridge.stop(action);
|
|
28928
29192
|
});
|
|
28929
29193
|
registerHistoryHandlers();
|
|
28930
|
-
electron.ipcMain.handle(Channels.DEVTOOLS_PANEL_TOGGLE, (event) => {
|
|
29194
|
+
electron.ipcMain.handle(Channels$1.DEVTOOLS_PANEL_TOGGLE, (event) => {
|
|
28931
29195
|
requireTrusted(event);
|
|
28932
29196
|
windowState.uiState.devtoolsPanelOpen = !windowState.uiState.devtoolsPanelOpen;
|
|
28933
29197
|
layoutViews(windowState);
|
|
28934
29198
|
return { open: windowState.uiState.devtoolsPanelOpen };
|
|
28935
29199
|
});
|
|
28936
|
-
electron.ipcMain.handle(Channels.DEVTOOLS_PANEL_RESIZE, (event, height) => {
|
|
29200
|
+
electron.ipcMain.handle(Channels$1.DEVTOOLS_PANEL_RESIZE, (event, height) => {
|
|
28937
29201
|
requireTrusted(event);
|
|
28938
29202
|
const clamped = Math.max(MIN_DEVTOOLS_PANEL, Math.min(MAX_DEVTOOLS_PANEL, Math.round(height)));
|
|
28939
29203
|
windowState.uiState.devtoolsPanelHeight = clamped;
|
|
@@ -28948,15 +29212,16 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28948
29212
|
registerWindowControlHandlers(mainWindow);
|
|
28949
29213
|
registerCodexHandlers();
|
|
28950
29214
|
registerOpenRouterHandlers(applySettingChange);
|
|
28951
|
-
|
|
29215
|
+
registerSidebarHandlers(windowState, requireTrusted);
|
|
29216
|
+
electron.ipcMain.handle(Channels$1.AUTOMATION_GET_INSTALLED, (event) => {
|
|
28952
29217
|
requireTrusted(event);
|
|
28953
29218
|
return getInstalledKits();
|
|
28954
29219
|
});
|
|
28955
|
-
electron.ipcMain.handle(Channels.AUTOMATION_INSTALL_FROM_FILE, async (event) => {
|
|
29220
|
+
electron.ipcMain.handle(Channels$1.AUTOMATION_INSTALL_FROM_FILE, async (event) => {
|
|
28956
29221
|
requireTrusted(event);
|
|
28957
29222
|
return await installKitFromFile();
|
|
28958
29223
|
});
|
|
28959
|
-
electron.ipcMain.handle(Channels.AUTOMATION_UNINSTALL, (event, id) => {
|
|
29224
|
+
electron.ipcMain.handle(Channels$1.AUTOMATION_UNINSTALL, (event, id) => {
|
|
28960
29225
|
requireTrusted(event);
|
|
28961
29226
|
assertString(id, "id");
|
|
28962
29227
|
return uninstallKit(id, getScheduledKitIds());
|
|
@@ -28965,7 +29230,7 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28965
29230
|
registerAutofillHandlers(windowState);
|
|
28966
29231
|
registerPageDiffHandlers(windowState, sendToRendererViews);
|
|
28967
29232
|
registerResearchHandlers(() => getResearchOrchestrator());
|
|
28968
|
-
electron.ipcMain.handle(Channels.CLEAR_BROWSING_DATA, async (event, options) => {
|
|
29233
|
+
electron.ipcMain.handle(Channels$1.CLEAR_BROWSING_DATA, async (event, options) => {
|
|
28969
29234
|
requireTrusted(event);
|
|
28970
29235
|
const { cache, cookies, history, localStorage: clearLs, timeRange } = options;
|
|
28971
29236
|
if (cache) {
|
|
@@ -28983,46 +29248,46 @@ function registerIpcHandlers(windowState, runtime2) {
|
|
|
28983
29248
|
});
|
|
28984
29249
|
setDownloadBroadcaster(sendToRendererViews);
|
|
28985
29250
|
setPermissionBroadcaster(sendToRendererViews);
|
|
28986
|
-
electron.ipcMain.handle(Channels.DOWNLOADS_GET, (event) => {
|
|
29251
|
+
electron.ipcMain.handle(Channels$1.DOWNLOADS_GET, (event) => {
|
|
28987
29252
|
requireTrusted(event);
|
|
28988
29253
|
return listDownloads();
|
|
28989
29254
|
});
|
|
28990
|
-
electron.ipcMain.handle(Channels.DOWNLOADS_CLEAR, (event) => {
|
|
29255
|
+
electron.ipcMain.handle(Channels$1.DOWNLOADS_CLEAR, (event) => {
|
|
28991
29256
|
requireTrusted(event);
|
|
28992
29257
|
clearDownloads();
|
|
28993
29258
|
return true;
|
|
28994
29259
|
});
|
|
28995
|
-
electron.ipcMain.handle(Channels.DOWNLOADS_OPEN, (event, id) => {
|
|
29260
|
+
electron.ipcMain.handle(Channels$1.DOWNLOADS_OPEN, (event, id) => {
|
|
28996
29261
|
requireTrusted(event);
|
|
28997
29262
|
return openDownload(id);
|
|
28998
29263
|
});
|
|
28999
|
-
electron.ipcMain.handle(Channels.DOWNLOADS_SHOW_IN_FOLDER, (event, id) => {
|
|
29264
|
+
electron.ipcMain.handle(Channels$1.DOWNLOADS_SHOW_IN_FOLDER, (event, id) => {
|
|
29000
29265
|
requireTrusted(event);
|
|
29001
29266
|
return showDownloadInFolder(id);
|
|
29002
29267
|
});
|
|
29003
|
-
electron.ipcMain.handle(Channels.PERMISSIONS_GET, (event) => {
|
|
29268
|
+
electron.ipcMain.handle(Channels$1.PERMISSIONS_GET, (event) => {
|
|
29004
29269
|
requireTrusted(event);
|
|
29005
29270
|
return listPermissions();
|
|
29006
29271
|
});
|
|
29007
|
-
electron.ipcMain.handle(Channels.PERMISSIONS_CLEAR, (event) => {
|
|
29272
|
+
electron.ipcMain.handle(Channels$1.PERMISSIONS_CLEAR, (event) => {
|
|
29008
29273
|
requireTrusted(event);
|
|
29009
29274
|
clearPermissions();
|
|
29010
29275
|
return true;
|
|
29011
29276
|
});
|
|
29012
|
-
electron.ipcMain.handle(Channels.PERMISSIONS_CLEAR_ORIGIN, (event, origin) => {
|
|
29277
|
+
electron.ipcMain.handle(Channels$1.PERMISSIONS_CLEAR_ORIGIN, (event, origin) => {
|
|
29013
29278
|
requireTrusted(event);
|
|
29014
29279
|
clearPermissionsForOrigin(origin);
|
|
29015
29280
|
return true;
|
|
29016
29281
|
});
|
|
29017
|
-
electron.ipcMain.handle(Channels.UPDATES_CHECK, (event) => {
|
|
29282
|
+
electron.ipcMain.handle(Channels$1.UPDATES_CHECK, (event) => {
|
|
29018
29283
|
requireTrusted(event);
|
|
29019
29284
|
return checkForUpdates();
|
|
29020
29285
|
});
|
|
29021
|
-
electron.ipcMain.handle(Channels.UPDATES_OPEN_DOWNLOAD, (event) => {
|
|
29286
|
+
electron.ipcMain.handle(Channels$1.UPDATES_OPEN_DOWNLOAD, (event) => {
|
|
29022
29287
|
requireTrusted(event);
|
|
29023
29288
|
return openUpdateDownload();
|
|
29024
29289
|
});
|
|
29025
|
-
electron.ipcMain.handle(Channels.TAB_TOGGLE_PIP, async (event) => {
|
|
29290
|
+
electron.ipcMain.handle(Channels$1.TAB_TOGGLE_PIP, async (event) => {
|
|
29026
29291
|
requireTrusted(event);
|
|
29027
29292
|
return togglePictureInPicture(tabManager);
|
|
29028
29293
|
});
|
|
@@ -30364,21 +30629,21 @@ async function bootstrap() {
|
|
|
30364
30629
|
}
|
|
30365
30630
|
}
|
|
30366
30631
|
if (!state2.chromeView.webContents.isDestroyed()) {
|
|
30367
|
-
state2.chromeView.webContents.send(Channels.HIGHLIGHT_COUNT_UPDATE, count);
|
|
30632
|
+
state2.chromeView.webContents.send(Channels$1.HIGHLIGHT_COUNT_UPDATE, count);
|
|
30368
30633
|
}
|
|
30369
30634
|
if (!state2.sidebarView.webContents.isDestroyed()) {
|
|
30370
|
-
state2.sidebarView.webContents.send(Channels.HIGHLIGHT_COUNT_UPDATE, count);
|
|
30635
|
+
state2.sidebarView.webContents.send(Channels$1.HIGHLIGHT_COUNT_UPDATE, count);
|
|
30371
30636
|
}
|
|
30372
30637
|
if (!state2.devtoolsPanelView.webContents.isDestroyed()) {
|
|
30373
30638
|
state2.devtoolsPanelView.webContents.send(
|
|
30374
|
-
Channels.HIGHLIGHT_COUNT_UPDATE,
|
|
30639
|
+
Channels$1.HIGHLIGHT_COUNT_UPDATE,
|
|
30375
30640
|
count
|
|
30376
30641
|
);
|
|
30377
30642
|
}
|
|
30378
30643
|
};
|
|
30379
30644
|
const windowState = createMainWindow((tabs, activeId, meta) => {
|
|
30380
30645
|
windowState.chromeView.webContents.send(
|
|
30381
|
-
Channels.TAB_STATE_UPDATE,
|
|
30646
|
+
Channels$1.TAB_STATE_UPDATE,
|
|
30382
30647
|
tabs,
|
|
30383
30648
|
activeId
|
|
30384
30649
|
);
|
|
@@ -30405,16 +30670,16 @@ async function bootstrap() {
|
|
|
30405
30670
|
installAdBlocking(tabManager);
|
|
30406
30671
|
setDevToolsPanelListener((state2) => {
|
|
30407
30672
|
if (!devtoolsPanelView.webContents.isDestroyed()) {
|
|
30408
|
-
devtoolsPanelView.webContents.send(Channels.DEVTOOLS_PANEL_STATE, state2);
|
|
30673
|
+
devtoolsPanelView.webContents.send(Channels$1.DEVTOOLS_PANEL_STATE, state2);
|
|
30409
30674
|
}
|
|
30410
30675
|
});
|
|
30411
30676
|
registerIpcHandlers(windowState, runtime);
|
|
30412
30677
|
tabManager.onSecurityStateChange((tabId, state2) => {
|
|
30413
30678
|
if (!chromeView.webContents.isDestroyed()) {
|
|
30414
|
-
chromeView.webContents.send(Channels.SECURITY_STATE_UPDATE, { tabId, state: state2 });
|
|
30679
|
+
chromeView.webContents.send(Channels$1.SECURITY_STATE_UPDATE, { tabId, state: state2 });
|
|
30415
30680
|
}
|
|
30416
30681
|
if (!sidebarView.webContents.isDestroyed()) {
|
|
30417
|
-
sidebarView.webContents.send(Channels.SECURITY_STATE_UPDATE, { tabId, state: state2 });
|
|
30682
|
+
sidebarView.webContents.send(Channels$1.SECURITY_STATE_UPDATE, { tabId, state: state2 });
|
|
30418
30683
|
}
|
|
30419
30684
|
});
|
|
30420
30685
|
registerHighlightShortcut(windowState.mainWindow, tabManager);
|
|
@@ -30450,7 +30715,7 @@ async function bootstrap() {
|
|
|
30450
30715
|
},
|
|
30451
30716
|
clearBrowsingData: () => {
|
|
30452
30717
|
if (!chromeView.webContents.isDestroyed()) {
|
|
30453
|
-
chromeView.webContents.send(Channels.CLEAR_BROWSING_DATA_OPEN);
|
|
30718
|
+
chromeView.webContents.send(Channels$1.CLEAR_BROWSING_DATA_OPEN);
|
|
30454
30719
|
}
|
|
30455
30720
|
},
|
|
30456
30721
|
togglePictureInPicture: () => {
|
|
@@ -30458,12 +30723,12 @@ async function bootstrap() {
|
|
|
30458
30723
|
}
|
|
30459
30724
|
});
|
|
30460
30725
|
subscribe((state2) => {
|
|
30461
|
-
chromeView.webContents.send(Channels.BOOKMARKS_UPDATE, state2);
|
|
30462
|
-
sidebarView.webContents.send(Channels.BOOKMARKS_UPDATE, state2);
|
|
30726
|
+
chromeView.webContents.send(Channels$1.BOOKMARKS_UPDATE, state2);
|
|
30727
|
+
sidebarView.webContents.send(Channels$1.BOOKMARKS_UPDATE, state2);
|
|
30463
30728
|
});
|
|
30464
30729
|
subscribe$1((state2) => {
|
|
30465
|
-
chromeView.webContents.send(Channels.HISTORY_UPDATE, state2);
|
|
30466
|
-
sidebarView.webContents.send(Channels.HISTORY_UPDATE, state2);
|
|
30730
|
+
chromeView.webContents.send(Channels$1.HISTORY_UPDATE, state2);
|
|
30731
|
+
sidebarView.webContents.send(Channels$1.HISTORY_UPDATE, state2);
|
|
30467
30732
|
});
|
|
30468
30733
|
installDownloadHandler(chromeView);
|
|
30469
30734
|
installPermissionHandler();
|