feat(plugins): browse and install official plugins from catalog (#1088) (#1096)

This commit is contained in:
M57 authored and GitHub committed 2026-09-12 22:32:52 +03:00
1 parent 47b6955c9a
commit d774a63663
8 files changed
+840 -71

No files matched your search

@@ -5,6 +5,7 @@ import androidx.compose.ui.res.stringResource
import com.m57.hermescontrol.R
import com.m57.hermescontrol.data.model.HubSkill
import com.m57.hermescontrol.data.model.McpServer
import com.m57.hermescontrol.data.model.PluginCatalogEntry
import com.m57.hermescontrol.data.model.PluginInfo
import com.m57.hermescontrol.data.model.Skill
import com.m57.hermescontrol.data.model.Toolset
@@ -68,6 +69,26 @@ fun PluginInfo.toDetailRows(): List<DetailRow> =
DetailRow(stringResource(R.string.detail_dialog_description), description),
)
@Composable
fun PluginCatalogEntry.toDetailRows(): List<DetailRow> =
listOfNotNull(
tier?.let { DetailRow(stringResource(R.string.detail_dialog_tier), it) },
maintainer?.let { DetailRow(stringResource(R.string.detail_dialog_maintainer), it) },
category?.let { DetailRow(stringResource(R.string.detail_dialog_category), it) },
repo?.let { DetailRow(stringResource(R.string.detail_dialog_repository), it) },
shaShort?.let { DetailRow(stringResource(R.string.detail_dialog_commit), it) },
requiresHermes?.takeIf { it.isNotBlank() }?.let {
DetailRow(stringResource(R.string.detail_dialog_requires_hermes), it)
},
docsUrl?.takeIf { it.isNotBlank() }?.let {
DetailRow(stringResource(R.string.detail_dialog_docs), it)
},
capabilitySummary?.takeIf { it.isNotBlank() }?.let {
DetailRow(stringResource(R.string.detail_dialog_capabilities), it)
},
description?.let { DetailRow(stringResource(R.string.detail_dialog_description), it) },
)
@Composable
fun Toolset.toDetailRows(): List<DetailRow> =
listOf(