Skip to content

Commit 5bc3c23

Browse files
authored
Merge pull request #79 from NeuralNomadsAI/dev
Release 0.7.3 - Bug fixes and minor improvements
2 parents 127a51e + ec64287 commit 5bc3c23

12 files changed

Lines changed: 53 additions & 27 deletions

File tree

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codenomad-workspace",
3-
"version": "0.7.2",
3+
"version": "0.7.3",
44
"private": true,
55
"description": "CodeNomad monorepo workspace",
66
"workspaces": {

packages/electron-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@neuralnomads/codenomad-electron-app",
3-
"version": "0.7.2",
3+
"version": "0.7.3",
44
"description": "CodeNomad - AI coding assistant",
55
"author": {
66
"name": "Neural Nomads",

packages/server/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@neuralnomads/codenomad",
3-
"version": "0.7.2",
3+
"version": "0.7.3",
44
"description": "CodeNomad Server",
55
"author": {
66
"name": "Neural Nomads",

packages/server/src/index.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,18 @@ function parsePort(input: string): number {
127127
}
128128

129129
function resolveHost(input: string | undefined): string {
130-
if (input && input.trim() === "0.0.0.0") {
130+
const trimmed = input?.trim()
131+
if (!trimmed) return DEFAULT_HOST
132+
133+
if (trimmed === "0.0.0.0") {
131134
return "0.0.0.0"
132135
}
133-
return DEFAULT_HOST
136+
137+
if (trimmed === "localhost") {
138+
return DEFAULT_HOST
139+
}
140+
141+
return trimmed
134142
}
135143

136144
async function main() {
@@ -149,11 +157,13 @@ async function main() {
149157

150158
const eventBus = new EventBus(eventLogger)
151159

160+
const isLoopbackHost = (host: string) => host === "127.0.0.1" || host === "::1" || host.startsWith("127.")
161+
152162
const serverMeta: ServerMeta = {
153163
httpBaseUrl: `http://${options.host}:${options.port}`,
154164
eventsUrl: `/api/events`,
155165
host: options.host,
156-
listeningMode: options.host === "0.0.0.0" ? "all" : "local",
166+
listeningMode: isLoopbackHost(options.host) ? "local" : "all",
157167
port: options.port,
158168
hostLabel: options.host,
159169
workspaceRoot: options.rootDir,

packages/server/src/server/http-server.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export function createHttpServer(deps: HttpServerDeps) {
9393
})
9494

9595
const allowedDevOrigins = new Set(["http://localhost:3000", "http://127.0.0.1:3000"])
96+
const isLoopbackHost = (host: string) => host === "127.0.0.1" || host === "::1" || host.startsWith("127.")
9697

9798
app.register(cors, {
9899
origin: (origin, cb) => {
@@ -113,10 +114,17 @@ export function createHttpServer(deps: HttpServerDeps) {
113114
return
114115
}
115116

116-
if (allowedDevOrigins.has(origin)) {
117-
cb(null, true)
118-
return
119-
}
117+
if (allowedDevOrigins.has(origin)) {
118+
cb(null, true)
119+
return
120+
}
121+
122+
// When we bind to a non-loopback host (e.g., 0.0.0.0 or LAN IP), allow cross-origin UI access.
123+
if (deps.host === "0.0.0.0" || !isLoopbackHost(deps.host)) {
124+
cb(null, true)
125+
return
126+
}
127+
120128

121129
cb(null, false)
122130
},
@@ -275,13 +283,13 @@ export function createHttpServer(deps: HttpServerDeps) {
275283
}
276284
}
277285

278-
const displayHost = deps.host === "0.0.0.0" ? "127.0.0.1" : deps.host === "127.0.0.1" ? "localhost" : deps.host
286+
const displayHost = deps.host === "127.0.0.1" ? "localhost" : deps.host
279287
const serverUrl = `http://${displayHost}:${actualPort}`
280288

281289
deps.serverMeta.httpBaseUrl = serverUrl
282290
deps.serverMeta.host = deps.host
283291
deps.serverMeta.port = actualPort
284-
deps.serverMeta.listeningMode = deps.host === "0.0.0.0" ? "all" : "local"
292+
deps.serverMeta.listeningMode = deps.host === "0.0.0.0" || !isLoopbackHost(deps.host) ? "all" : "local"
285293
deps.logger.info({ port: actualPort, host: deps.host }, "HTTP server listening")
286294
console.log(`CodeNomad Server is ready at ${serverUrl}`)
287295

packages/server/src/server/routes/meta.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function buildMetaResponse(meta: ServerMeta): ServerMeta {
1717
return {
1818
...meta,
1919
port,
20-
listeningMode: meta.host === "0.0.0.0" ? "all" : "local",
20+
listeningMode: meta.host === "0.0.0.0" || !isLoopbackHost(meta.host) ? "all" : "local",
2121
addresses,
2222
}
2323
}
@@ -35,6 +35,10 @@ function resolvePort(meta: ServerMeta): number {
3535
}
3636
}
3737

38+
function isLoopbackHost(host: string): boolean {
39+
return host === "127.0.0.1" || host === "::1" || host.startsWith("127.")
40+
}
41+
3842
function resolveAddresses(port: number, host: string): NetworkAddress[] {
3943
const interfaces = os.networkInterfaces()
4044
const seen = new Set<string>()

packages/tauri-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@codenomad/tauri-app",
3-
"version": "0.7.2",
3+
"version": "0.7.3",
44
"private": true,
55
"scripts": {
66
"dev": "tauri dev",

packages/ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@codenomad/ui",
3-
"version": "0.7.2",
3+
"version": "0.7.3",
44
"private": true,
55
"type": "module",
66
"scripts": {

0 commit comments

Comments
 (0)