vibora 3.3.0 → 3.5.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,7 +5,7 @@
5
5
  <link rel="icon" type="image/jpeg" href="/logo-dark.jpg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Vibora</title>
8
- <script type="module" crossorigin src="/assets/index-TnsqXjEs.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DtTWiY3L.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-Wn5THx_L.css">
10
10
  </head>
11
11
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibora",
3
- "version": "3.3.0",
3
+ "version": "3.5.0",
4
4
  "description": "The Vibe Engineer's Cockpit",
5
5
  "license": "PolyForm-Shield-1.0.0",
6
6
  "repository": {
package/server/index.js CHANGED
@@ -8464,6 +8464,9 @@ Content-Length: 0\r
8464
8464
  };
8465
8465
  };
8466
8466
 
8467
+ // server/index.ts
8468
+ import { createServer } from "net";
8469
+
8467
8470
  // node_modules/hono/dist/compose.js
8468
8471
  var compose = (middleware, onError, onNotFound) => {
8469
8472
  return (context, next) => {
@@ -21711,6 +21714,12 @@ var terminalWebSocketHandlers = {
21711
21714
  type: "tabs:list",
21712
21715
  payload: { tabs: tabManager2.list() }
21713
21716
  });
21717
+ const settings = getSettings();
21718
+ const theme = settings.appearance?.theme ?? null;
21719
+ sendTo(ws, {
21720
+ type: "theme:synced",
21721
+ payload: { theme: theme || "system" }
21722
+ });
21714
21723
  },
21715
21724
  onMessage(evt, ws) {
21716
21725
  const clientData = clients.get(ws);
@@ -22026,6 +22035,20 @@ var terminalWebSocketHandlers = {
22026
22035
  });
22027
22036
  break;
22028
22037
  }
22038
+ case "theme:sync": {
22039
+ const { theme } = message.payload;
22040
+ if (!["light", "dark", "system"].includes(theme)) {
22041
+ log2.ws.warn("theme:sync invalid theme", { theme, clientId: clientData.id });
22042
+ break;
22043
+ }
22044
+ updateSettingByPath("appearance.theme", theme === "system" ? null : theme);
22045
+ log2.ws.info("theme:sync", { theme, clientId: clientData.id });
22046
+ broadcast({
22047
+ type: "theme:synced",
22048
+ payload: { theme }
22049
+ });
22050
+ break;
22051
+ }
22029
22052
  }
22030
22053
  } catch (error) {
22031
22054
  log2.ws.error("Failed to handle message", { error: String(error) });
@@ -146108,7 +146131,8 @@ app3.post("/merge-to-main", async (c) => {
146108
146131
  gitExec(repoPath, `checkout ${defaultBranch}`);
146109
146132
  }
146110
146133
  try {
146111
- gitExec(repoPath, `merge --no-ff ${worktreeBranch}`);
146134
+ gitExec(repoPath, `merge --squash ${worktreeBranch}`);
146135
+ gitExec(repoPath, `commit -m "Merge branch '${worktreeBranch}'"`);
146112
146136
  } catch (mergeErr) {
146113
146137
  try {
146114
146138
  const mergeStatus = gitExec(repoPath, "status");
@@ -152796,6 +152820,22 @@ function stopPRMonitor() {
152796
152820
  // server/index.ts
152797
152821
  var PORT = getSettingByKey("port");
152798
152822
  var HOST = process.env.HOST || "localhost";
152823
+ async function checkPortAvailable(port, host) {
152824
+ return new Promise((resolve4) => {
152825
+ const server = createServer();
152826
+ server.once("error", () => resolve4(false));
152827
+ server.once("listening", () => {
152828
+ server.close(() => resolve4(true));
152829
+ });
152830
+ server.listen(port, host);
152831
+ });
152832
+ }
152833
+ var portAvailable = await checkPortAvailable(PORT, HOST);
152834
+ if (!portAvailable) {
152835
+ log2.server.error("Port already in use", { port: PORT, host: HOST });
152836
+ console.error(`Error: Port ${PORT} is already in use. Another server may be running.`);
152837
+ process.exit(1);
152838
+ }
152799
152839
  var ptyManager2 = initPTYManager({
152800
152840
  onData: (terminalId, data) => {
152801
152841
  broadcastToTerminal(terminalId, {