vibora 9.5.0 → 9.6.0
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/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/png" href="/logo.png" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Vibora - Harness Attention. Ship.</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BhDZ1Jze.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BFg6RnDv.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -4884,9 +4884,17 @@ function updateSettingByPath(settingPath, value) {
|
|
|
4884
4884
|
parsed = JSON.parse(fs2.readFileSync(settingsPath, "utf-8"));
|
|
4885
4885
|
} catch {}
|
|
4886
4886
|
}
|
|
4887
|
+
const oldValue = getNestedValue(parsed, settingPath);
|
|
4887
4888
|
setNestedValue(parsed, settingPath, value);
|
|
4888
4889
|
parsed._schemaVersion = CURRENT_SCHEMA_VERSION;
|
|
4889
4890
|
fs2.writeFileSync(settingsPath, JSON.stringify(parsed, null, 2), "utf-8");
|
|
4891
|
+
const sensitiveKeys = ["linearApiKey", "githubPat", "cloudflareApiToken", "apiKey"];
|
|
4892
|
+
const isSensitive = sensitiveKeys.some((key) => settingPath.includes(key));
|
|
4893
|
+
const logValue = isSensitive ? "***" : value;
|
|
4894
|
+
const logOldValue = isSensitive ? "***" : oldValue;
|
|
4895
|
+
if (oldValue !== value) {
|
|
4896
|
+
log2.settings.info("Setting updated", { path: settingPath, from: logOldValue, to: logValue });
|
|
4897
|
+
}
|
|
4890
4898
|
return getSettings();
|
|
4891
4899
|
}
|
|
4892
4900
|
function updateSettings(updates) {
|
|
@@ -4932,7 +4940,7 @@ function getNotificationSettings() {
|
|
|
4932
4940
|
return DEFAULT_NOTIFICATION_SETTINGS;
|
|
4933
4941
|
}
|
|
4934
4942
|
return {
|
|
4935
|
-
enabled: notifications.enabled ??
|
|
4943
|
+
enabled: notifications.enabled ?? true,
|
|
4936
4944
|
toast: { enabled: true, ...notifications.toast },
|
|
4937
4945
|
desktop: { enabled: true, ...notifications.desktop },
|
|
4938
4946
|
sound: { enabled: false, ...notifications.sound },
|
|
@@ -4965,6 +4973,31 @@ function updateNotificationSettings(updates) {
|
|
|
4965
4973
|
};
|
|
4966
4974
|
parsed.notifications = updated;
|
|
4967
4975
|
fs2.writeFileSync(settingsPath, JSON.stringify(parsed, null, 2), "utf-8");
|
|
4976
|
+
const changes = {};
|
|
4977
|
+
if (updates.enabled !== undefined && updates.enabled !== current.enabled) {
|
|
4978
|
+
changes.enabled = { from: current.enabled, to: updates.enabled };
|
|
4979
|
+
}
|
|
4980
|
+
if (updates.toast?.enabled !== undefined && updates.toast.enabled !== current.toast.enabled) {
|
|
4981
|
+
changes["toast.enabled"] = { from: current.toast.enabled, to: updates.toast.enabled };
|
|
4982
|
+
}
|
|
4983
|
+
if (updates.desktop?.enabled !== undefined && updates.desktop.enabled !== current.desktop.enabled) {
|
|
4984
|
+
changes["desktop.enabled"] = { from: current.desktop.enabled, to: updates.desktop.enabled };
|
|
4985
|
+
}
|
|
4986
|
+
if (updates.sound?.enabled !== undefined && updates.sound.enabled !== current.sound.enabled) {
|
|
4987
|
+
changes["sound.enabled"] = { from: current.sound.enabled, to: updates.sound.enabled };
|
|
4988
|
+
}
|
|
4989
|
+
if (updates.slack?.enabled !== undefined && updates.slack.enabled !== current.slack.enabled) {
|
|
4990
|
+
changes["slack.enabled"] = { from: current.slack.enabled, to: updates.slack.enabled };
|
|
4991
|
+
}
|
|
4992
|
+
if (updates.discord?.enabled !== undefined && updates.discord.enabled !== current.discord.enabled) {
|
|
4993
|
+
changes["discord.enabled"] = { from: current.discord.enabled, to: updates.discord.enabled };
|
|
4994
|
+
}
|
|
4995
|
+
if (updates.pushover?.enabled !== undefined && updates.pushover.enabled !== current.pushover.enabled) {
|
|
4996
|
+
changes["pushover.enabled"] = { from: current.pushover.enabled, to: updates.pushover.enabled };
|
|
4997
|
+
}
|
|
4998
|
+
if (Object.keys(changes).length > 0) {
|
|
4999
|
+
log2.settings.info("Notification settings updated", { changes });
|
|
5000
|
+
}
|
|
4968
5001
|
return updated;
|
|
4969
5002
|
}
|
|
4970
5003
|
function getClaudeSettingsPath() {
|
|
@@ -5705,7 +5738,7 @@ class DtachService {
|
|
|
5705
5738
|
}
|
|
5706
5739
|
getAttachCommand(terminalId) {
|
|
5707
5740
|
const socketPath = this.getSocketPath(terminalId);
|
|
5708
|
-
return ["
|
|
5741
|
+
return ["bash", "-c", `stty -echoctl && exec dtach -a ${socketPath} -z`];
|
|
5709
5742
|
}
|
|
5710
5743
|
killSession(terminalId) {
|
|
5711
5744
|
const socketPath = this.getSocketPath(terminalId);
|
|
@@ -183352,7 +183385,7 @@ function createApp() {
|
|
|
183352
183385
|
});
|
|
183353
183386
|
if (process.env.VIBORA_PACKAGE_ROOT) {
|
|
183354
183387
|
const distPath = getDistPath();
|
|
183355
|
-
const serveFile = async (filePath) => {
|
|
183388
|
+
const serveFile = async (filePath, immutableCache = false) => {
|
|
183356
183389
|
const ext2 = filePath.split(".").pop()?.toLowerCase();
|
|
183357
183390
|
const mimeTypes2 = {
|
|
183358
183391
|
html: "text/html",
|
|
@@ -183371,14 +183404,18 @@ function createApp() {
|
|
|
183371
183404
|
ogg: "audio/ogg"
|
|
183372
183405
|
};
|
|
183373
183406
|
const content = await readFile7(filePath);
|
|
183407
|
+
const cacheControl = immutableCache ? "public, max-age=31536000, immutable" : "no-cache, must-revalidate";
|
|
183374
183408
|
return new Response(content, {
|
|
183375
|
-
headers: {
|
|
183409
|
+
headers: {
|
|
183410
|
+
"Content-Type": mimeTypes2[ext2 || ""] || "application/octet-stream",
|
|
183411
|
+
"Cache-Control": cacheControl
|
|
183412
|
+
}
|
|
183376
183413
|
});
|
|
183377
183414
|
};
|
|
183378
183415
|
app21.get("/assets/*", async (c) => {
|
|
183379
183416
|
const assetPath = join27(distPath, c.req.path);
|
|
183380
183417
|
if (existsSync20(assetPath)) {
|
|
183381
|
-
return serveFile(assetPath);
|
|
183418
|
+
return serveFile(assetPath, true);
|
|
183382
183419
|
}
|
|
183383
183420
|
return c.notFound();
|
|
183384
183421
|
});
|
|
@@ -183405,7 +183442,9 @@ function createApp() {
|
|
|
183405
183442
|
return next();
|
|
183406
183443
|
}
|
|
183407
183444
|
const html = await readFile7(join27(distPath, "index.html"), "utf-8");
|
|
183408
|
-
return c.html(html
|
|
183445
|
+
return c.html(html, {
|
|
183446
|
+
headers: { "Cache-Control": "no-cache, must-revalidate" }
|
|
183447
|
+
});
|
|
183409
183448
|
});
|
|
183410
183449
|
}
|
|
183411
183450
|
return app21;
|