Add headless Angor services and shared-index install guard
Demo images / Build & push demo images (push) Failing after 43s

This commit is contained in:
archipelago
2026-09-30 11:52:19 -04:00
parent 7c4169867c
commit 169bf77de6
24 changed files with 828 additions and 11 deletions
@@ -42,6 +42,8 @@ export const GENERATED_APP_PORTS: Record<string, number> = {
export const GENERATED_APP_TITLES: Record<string, string> = {
"aiui": "AI Assistant",
"alby-hub": "Alby Hub",
"angor-indexer": "Angor Indexer",
"angor-relay": "Angor Relay",
"archipelago-source": "GitWorkshop",
"archy-btcpay-db": "BTCPay Postgres",
"archy-mempool-db": "Mempool MariaDB",
@@ -25,6 +25,15 @@ function makePkg(id: string, title: string, category: string): PackageDataEntry
}
describe('appsConfig service filtering', () => {
it('keeps standalone Angor APIs in Services without a launch button', () => {
for (const id of ['angor-indexer', 'angor-relay']) {
const pkg = makePkg(id, id, 'money')
expect(filterEntriesForTab([[id, pkg]], 'services', 'all')).toHaveLength(1)
expect(filterEntriesForTab([[id, pkg]], 'apps', 'all')).toHaveLength(0)
expect(canLaunch(pkg)).toBe(false)
}
})
it('treats bitcoin stack UI sidecars as services', () => {
expect(isServiceContainer('bitcoin-ui')).toBe(true)
expect(isServiceContainer('lnd-ui')).toBe(true)
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, it } from 'vitest'
import { __setSignedCatalogForTests, portAuth, portIsGateFronted, type SignedAppCatalog } from '../curatedApps'
import { __setSignedCatalogForTests, signedCatalogToApps, portAuth, portIsGateFronted, type SignedAppCatalog } from '../curatedApps'
/** Catalog fragments mirroring the live signed catalog's port declarations
* (releases/app-catalog.json, 2026-09-01). */
@@ -77,3 +77,12 @@ describe('portAuth', () => {
expect(portAuth('mempool-web', 4080)).toBeNull()
})
})
describe('standalone headless services', () => {
it('lists Angor services while keeping shared Mempool and node relay internals hidden', () => {
const apps = signedCatalogToApps(catalog(Object.fromEntries(
['angor-indexer', 'angor-relay', 'mempool-api', 'strfry'].map(id => [id, { version: '1' }]),
)))
expect(apps.map(app => app.id)).toEqual(['angor-indexer', 'angor-relay'])
})
})