serve: fold mdns domain into option

This commit is contained in:
Dax Raad
2026-05-16 00:51:18 -04:00
parent cb45de6fd2
commit 3caba56bd9
4 changed files with 6 additions and 7 deletions
+1 -1
View File
@@ -72,7 +72,7 @@ export const rpc = {
},
async server(input: { port: number; hostname: string; mdns?: boolean; cors?: string[] }) {
if (server) await server.stop(true)
server = await Server.listen({ type: "tcp", ...input })
server = await Server.listen({ type: "tcp", ...input, mdns: input.mdns ? true : undefined })
return { url: server.url.toString() }
},
async checkUpgrade(input: { directory: string }) {
+1 -1
View File
@@ -67,7 +67,7 @@ export const WebCommand = effectCmd({
UI.println(
UI.Style.TEXT_INFO_BOLD + " mDNS: ",
UI.Style.TEXT_NORMAL,
`${opts.mdnsDomain}:${server.port}`,
`${opts.mdns === true ? "opencode.local" : opts.mdns.domain}:${server.port}`,
)
}
+2 -2
View File
@@ -47,7 +47,7 @@ export function resolveNetworkOptionsNoConfig(args: NetworkOptions, config?: Con
const mdnsExplicitlySet = process.argv.includes("--mdns")
const mdnsDomainExplicitlySet = process.argv.includes("--mdns-domain")
const mdns = mdnsExplicitlySet ? args.mdns : (config?.server?.mdns ?? args.mdns)
const mdnsDomain = mdnsDomainExplicitlySet ? args["mdns-domain"] : (config?.server?.mdnsDomain ?? args["mdns-domain"])
const mdnsDomain = mdnsDomainExplicitlySet ? args["mdns-domain"] : config?.server?.mdnsDomain
const port = portExplicitlySet ? args.port : (config?.server?.port ?? args.port)
const hostname = hostnameExplicitlySet
? args.hostname
@@ -58,5 +58,5 @@ export function resolveNetworkOptionsNoConfig(args: NetworkOptions, config?: Con
const argsCors = Array.isArray(args.cors) ? args.cors : args.cors ? [args.cors] : []
const cors = [...configCors, ...argsCors]
return { type: "tcp" as const, hostname, port, mdns, mdnsDomain, cors }
return { type: "tcp" as const, hostname, port, mdns: mdns ? (mdnsDomain ? { domain: mdnsDomain } : true) : undefined, cors }
}
+2 -3
View File
@@ -45,8 +45,7 @@ export type TcpListenOptions = CorsOptions & {
type: "tcp"
port: number
hostname: string
mdns?: boolean
mdnsDomain?: string
mdns?: true | { domain: string }
}
export type SocketListenOptions = CorsOptions & {
@@ -208,7 +207,7 @@ function setupMdns(opts: TcpListenOptions, port: number, scope: Scope.Scope) {
opts.mdns && port && opts.hostname !== "127.0.0.1" && opts.hostname !== "localhost" && opts.hostname !== "::1"
if (publish) {
const unpublish = yield* Effect.cached(Effect.sync(() => MDNS.unpublish()))
yield* Effect.sync(() => MDNS.publish(port, opts.mdnsDomain))
yield* Effect.sync(() => MDNS.publish(port, opts.mdns === true ? undefined : opts.mdns.domain))
yield* Scope.addFinalizer(scope, unpublish)
return unpublish
}