fix: route GitWorkshop installs through orchestrator
This commit is contained in:
@@ -2743,6 +2743,11 @@ fn uses_orchestrator_install_flow(package_id: &str) -> bool {
|
||||
| "gitea"
|
||||
| "portainer"
|
||||
| "meshtastic"
|
||||
// Build-backed user-facing app. Route it through the production
|
||||
// orchestrator so a fresh node builds its bundled image instead
|
||||
// of treating localhost/archipelago-source:local as a registry
|
||||
// image in the legacy installer.
|
||||
| "archipelago-source"
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2822,6 +2827,7 @@ mod tests {
|
||||
"gitea",
|
||||
"portainer",
|
||||
"meshtastic",
|
||||
"archipelago-source",
|
||||
] {
|
||||
assert!(uses_orchestrator_install_flow(app));
|
||||
assert!(should_try_orchestrator_install(app, true));
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { ref } from 'vue'
|
||||
import { PackageState, type PackageDataEntry } from '@/types/api'
|
||||
import { canLaunch, filterEntriesForTab, hasFrontendUi, isServiceContainer, isServicePackage, isWebsitePackage, launchBlockedReason, resolveAppIcon, useCategoriesWithApps, DEFAULT_APP_ICON } from '../appsConfig'
|
||||
import { APP_CATEGORY_MAP, canLaunch, filterEntriesForTab, hasFrontendUi, isServiceContainer, isServicePackage, isWebsitePackage, launchBlockedReason, resolveAppIcon, useCategoriesWithApps, DEFAULT_APP_ICON } from '../appsConfig'
|
||||
|
||||
function makePkg(id: string, title: string, category: string): PackageDataEntry {
|
||||
return {
|
||||
@@ -105,6 +105,25 @@ describe('appsConfig service filtering', () => {
|
||||
expect(isWebsitePackage('some-ui-app', uiApp)).toBe(false)
|
||||
})
|
||||
|
||||
it('keeps GitWorkshop in My Apps while installing metadata is minimal', () => {
|
||||
const installing = makePkg('archipelago-source', 'GitWorkshop', 'development')
|
||||
installing.state = PackageState.Installing
|
||||
expect(isWebsitePackage('archipelago-source', installing)).toBe(false)
|
||||
expect(filterEntriesForTab([['archipelago-source', installing]], 'apps', 'all'))
|
||||
.toEqual([['archipelago-source', installing]])
|
||||
expect(filterEntriesForTab([['archipelago-source', installing]], 'services', 'all'))
|
||||
.toEqual([])
|
||||
})
|
||||
|
||||
it('keeps every curated app placeholder out of Services during install', () => {
|
||||
for (const id of Object.keys(APP_CATEGORY_MAP)) {
|
||||
if (isServiceContainer(id)) continue
|
||||
const placeholder = makePkg(id, id, APP_CATEGORY_MAP[id])
|
||||
placeholder.state = PackageState.Installing
|
||||
expect(isWebsitePackage(id, placeholder), id).toBe(false)
|
||||
}
|
||||
})
|
||||
|
||||
it('never offers Launch for an unknown container with a bare exposed port', () => {
|
||||
// A self-deployed compose stack (e.g. podsteadr) publishes a port, so it
|
||||
// has a runtime lan-address — but no manifest-declared or probed UI. It
|
||||
|
||||
@@ -48,6 +48,9 @@ export const APP_CATEGORY_MAP: Record<string, string> = {
|
||||
'tailscale': 'networking', 'netbird': 'networking', 'nginx-proxy-manager': 'networking', 'portainer': 'networking',
|
||||
'uptime-kuma': 'networking',
|
||||
'botfights': 'community',
|
||||
// User-facing app: keep the install placeholder in My Apps while its
|
||||
// manifest (including interfaces.main.ui) is not available yet.
|
||||
'archipelago-source': 'development',
|
||||
}
|
||||
|
||||
export function getAppCategory(id: string, pkg: PackageDataEntry): string {
|
||||
|
||||
Reference in New Issue
Block a user