app-platform: remove revoked onlyoffice app

This commit is contained in:
archipelago
2026-06-11 01:03:45 -04:00
parent 881478a873
commit de60f7e21e
22 changed files with 47 additions and 211 deletions
-3
View File
@@ -25,7 +25,6 @@ const NEW_TAB_APP_IDS = new Set([
'vaultwarden',
'nextcloud',
'portainer',
'onlyoffice',
'tailscale',
'nginx-proxy-manager',
'uptime-kuma',
@@ -105,7 +104,6 @@ const PORT_TO_APP_ID: Record<string, string> = {
'9000': 'portainer',
'8087': 'netbird',
'8086': 'netbird',
'9980': 'onlyoffice',
'11434': 'ollama',
'2283': 'immich',
'23000': 'btcpay-server',
@@ -127,7 +125,6 @@ const APP_ID_TO_PORT: Record<string, string> = {
vaultwarden: '8082',
nextcloud: '8085',
portainer: '9000',
onlyoffice: '8044',
tailscale: '8240',
'nginx-proxy-manager': '8081',
'uptime-kuma': '3002',
-36
View File
@@ -438,42 +438,6 @@ export const dummyApps: Record<string, PackageDataEntry> = {
status: ServiceStatus.Running
}
},
'onlyoffice': {
state: PackageState.Running,
'static-files': {
license: 'AGPL-3.0',
instructions: 'Office suite and document collaboration',
icon: '/assets/img/onlyoffice.webp'
},
manifest: {
id: 'onlyoffice',
title: 'OnlyOffice',
version: '7.5.0',
description: {
short: 'Office suite and document collaboration',
long: 'OnlyOffice is a secure office suite that enables real-time collaborative editing of documents, spreadsheets, and presentations. Self-hosted alternative to Google Workspace and Microsoft 365.'
},
'release-notes': 'Initial release',
license: 'AGPL-3.0',
'wrapper-repo': 'https://github.com/ONLYOFFICE/DocumentServer',
'upstream-repo': 'https://github.com/ONLYOFFICE/DocumentServer',
'support-site': 'https://github.com/ONLYOFFICE/DocumentServer/issues',
'marketing-site': 'https://www.onlyoffice.com',
'donation-url': null
},
installed: {
'current-dependents': {},
'current-dependencies': {},
'last-backup': null,
'interface-addresses': {
main: {
'tor-address': 'onlyoffice.onion',
'lan-address': 'http://localhost:8083'
}
},
status: ServiceStatus.Running
}
},
'indeedhub': {
state: PackageState.Running,
'static-files': {
+44 -6
View File
@@ -3,13 +3,15 @@
<!-- Nav header -- tabs + categories + search -->
<div class="mb-4">
<!-- Desktop: page tabs + category tabs + search -->
<div class="hidden md:flex items-center gap-4">
<div class="mode-switcher hidden md:inline-flex flex-shrink-0">
<button class="mode-switcher-btn" :class="{ 'mode-switcher-btn-active': activeTab === 'apps' }" @click="activeTab = 'apps'; router.replace({ query: {} })">My Apps</button>
<RouterLink to="/dashboard/discover" class="mode-switcher-btn">App Store</RouterLink>
<button class="mode-switcher-btn" :class="{ 'mode-switcher-btn-active': activeTab === 'websites' }" @click="activeTab = 'websites'; router.replace({ query: { tab: 'websites' } })">Websites</button>
<div ref="appsHeaderRef" class="hidden md:flex items-center gap-4 relative">
<div ref="appsPrimaryRef" class="flex-shrink-0">
<div class="mode-switcher hidden md:inline-flex">
<button class="mode-switcher-btn" :class="{ 'mode-switcher-btn-active': activeTab === 'apps' }" @click="activeTab = 'apps'; router.replace({ query: {} })">My Apps</button>
<RouterLink to="/dashboard/discover" class="mode-switcher-btn">App Store</RouterLink>
<button class="mode-switcher-btn" :class="{ 'mode-switcher-btn-active': activeTab === 'websites' }" @click="activeTab = 'websites'; router.replace({ query: { tab: 'websites' } })">Websites</button>
</div>
</div>
<div v-if="activeTab === 'apps' && categoriesWithApps.length > 1" class="mode-switcher category-tabs-wide hidden md:inline-flex flex-shrink-0">
<div v-show="activeTab === 'apps' && categoriesWithApps.length > 1 && !collapseCategories" class="mode-switcher category-tabs-wide hidden md:inline-flex flex-shrink-0">
<button
v-for="category in categoriesWithApps"
:key="category.id"
@@ -18,6 +20,32 @@
:class="{ 'mode-switcher-btn-active': selectedCategory === category.id }"
>{{ category.name }}</button>
</div>
<div v-show="activeTab === 'apps' && categoriesWithApps.length > 1 && collapseCategories" class="segmented-select flex-shrink-0">
<label class="sr-only" for="apps-category-select">My Apps category</label>
<select
id="apps-category-select"
v-model="selectedCategory"
class="segmented-select-control"
>
<option
v-for="category in categoriesWithApps"
:key="category.id"
:value="category.id"
>
{{ category.name }}
</option>
</select>
</div>
<div ref="appsCategoryProbeRef" class="mode-switcher category-tabs-probe" aria-hidden="true">
<button
v-for="category in categoriesWithApps"
:key="category.id"
class="mode-switcher-btn"
type="button"
>
{{ category.name }}
</button>
</div>
<div class="app-header-search-wrap flex items-center gap-2">
<input
v-model="searchQuery"
@@ -318,6 +346,7 @@ import { useLastKnownPackages } from './apps/appPackageCache'
import { useAppsActions } from './apps/useAppsActions'
import { validateSideloadRequest } from './apps/sideloadValidation'
import { useMarketplaceApp } from '@/composables/useMarketplaceApp'
import { useCollapsingHeaderTabs } from '@/composables/useCollapsingHeaderTabs'
import {
type AppsTab, filterEntriesForTab, isWebOnlyApp, isWebsitePackage, opensInTab, resolveRuntimeLaunchUrl,
WEB_ONLY_APPS, WEB_ONLY_APP_URLS, buildAllCategories, useCategoriesWithApps,
@@ -411,6 +440,15 @@ const packages = computed(() => {
})
const categoriesWithApps = useCategoriesWithApps(packages, ALL_CATEGORIES)
const appsHeaderRef = ref<HTMLElement | null>(null)
const appsPrimaryRef = ref<HTMLElement | null>(null)
const appsCategoryProbeRef = ref<HTMLElement | null>(null)
const { collapsed: collapseCategories } = useCollapsingHeaderTabs(
appsHeaderRef,
appsPrimaryRef,
appsCategoryProbeRef,
144
)
const curatedApps = getCuratedAppList()
const marketplaceMatches = computed(() => {
-1
View File
@@ -101,7 +101,6 @@ const launchableApps = computed<KioskApp[]>(() => {
'filebrowser': '/app/filebrowser/',
'searxng': '/app/searxng/',
'ollama': '/app/ollama/',
'onlyoffice': '/app/onlyoffice/',
'portainer': '/app/portainer/',
'uptime-kuma': '/app/uptime-kuma/',
'nginx-proxy-manager': '/app/nginx-proxy-manager/',
@@ -32,7 +32,6 @@ export const ROUTE_TO_PACKAGE_KEY: Record<string, string> = {
grafana: 'grafana',
searxng: 'searxng',
ollama: 'ollama',
onlyoffice: 'onlyoffice',
nextcloud: 'nextcloud',
vaultwarden: 'vaultwarden',
jellyfin: 'jellyfin',
@@ -77,7 +76,6 @@ export const APP_URLS: Record<string, { dev: string; prod: string }> = {
'mempool': { dev: 'http://localhost:4080', prod: 'http://localhost:4080' },
'ollama': { dev: 'http://localhost:11434', prod: 'http://localhost:11434' },
'searxng': { dev: 'http://localhost:8888', prod: 'http://localhost:8888' },
'onlyoffice': { dev: 'http://localhost:9980', prod: 'http://localhost:9980' },
'nextcloud': { dev: 'http://localhost:8085', prod: 'http://localhost:8085' },
'vaultwarden': { dev: 'http://localhost:8082', prod: 'http://localhost:8082' },
'jellyfin': { dev: 'http://localhost:8096', prod: 'http://localhost:8096' },
@@ -16,35 +16,17 @@ export const APP_PORTS: Record<string, number> = {
'electrs': 50002,
'archy-electrs-ui': 50002,
'mempool-electrs': 50002,
'btcpay-server': 23000,
'lnd': 18083,
'archy-lnd-ui': 18083,
'mempool': 4080,
'mempool-web': 4080,
'archy-mempool-web': 4080,
'homeassistant': 8123,
'grafana': 3000,
'searxng': 8888,
'ollama': 11434,
'onlyoffice': 8044,
'nextcloud': 8085,
'vaultwarden': 8082,
'jellyfin': 8096,
'photoprism': 2342,
'immich': 2283,
'immich_server': 2283,
'filebrowser': 8083,
'nginx-proxy-manager': 8081,
'gitea': 3001,
'portainer': 9000,
'netbird': 8087,
'tailscale': 8240,
'uptime-kuma': 3002,
'fedimint': 8175,
'fedimintd': 8175,
'fedimint-gateway': 8176,
'indeedhub': 7778,
'botfights': 9100,
'dwn': 3100,
'endurain': 8080,
}
@@ -20,7 +20,6 @@ export const GENERATED_APP_PORTS: Record<string, number> = {
"morphos-server": 8086,
"nextcloud": 8085,
"nostr-rs-relay": 18081,
"onlyoffice": 8088,
"photoprism": 2342,
"portainer": 9000,
"router": 8084,
@@ -63,7 +62,6 @@ export const GENERATED_APP_TITLES: Record<string, string> = {
"morphos-server": "MorphOS Server",
"nextcloud": "Nextcloud",
"nostr-rs-relay": "Nostr Relay (Rust)",
"onlyoffice": "OnlyOffice",
"photoprism": "PhotoPrism",
"portainer": "Portainer",
"router": "Mesh Router",
@@ -80,7 +78,6 @@ export const GENERATED_NEW_TAB_APPS = new Set<string>([
"grafana",
"homeassistant",
"nextcloud",
"onlyoffice",
"photoprism",
"portainer",
"uptime-kuma",