diff --git a/startos/interfaces.ts b/startos/interfaces.ts index 322bf9e..930e5ae 100644 --- a/startos/interfaces.ts +++ b/startos/interfaces.ts @@ -117,5 +117,15 @@ export const setInterfaces = sdk.setupInterfaces(async ({ effects }) => { ], }) + // Exported service interfaces are a SECOND registry, independent of the + // bindings above and with its own cleanup effect. Clearing bindings alone + // leaves an orphaned interface record behind, which the UI still lists — so + // a port change can produce two identical "Stratum" rows. Excluding + // 'stratum-tls' when TLS is off also removes that row when the user + // disables TLS, rather than leaving a dead endpoint on display. + await effects.clearServiceInterfaces({ + except: ['ui', 'stratum', ...(ports?.tlsEnabled ? ['stratum-tls'] : [])], + }) + return receipts }) diff --git a/startos/versions/current.ts b/startos/versions/current.ts index a294f7d..7911fee 100644 --- a/startos/versions/current.ts +++ b/startos/versions/current.ts @@ -21,7 +21,7 @@ type LegacyConfig = { } export const current = VersionInfo.of({ - version: '0.2.0:1', + version: '0.2.0:2', releaseNotes: { en_US: 'Adds configurable stratum and stratum-TLS ports to the Configure action, and fixes a duplicate Stratum interface left behind when a port is changed. StartOS 0.4.0 port: stratum is exposed directly on the LAN as a raw TCP interface (no more router forwards or simpleproxy), Bitcoin Core is reached over the internal network bridge with cookie authentication, and settings moved from Config to the Configure action. Existing settings, found-block history, and the stratum TLS certificate are migrated automatically.',