connectors: merge the catalog page into a row-list Connectors page
Nightly Build / build (push) Successful in 6m57s

The standalone Catalog page added nothing the Connectors page could not
do: drop it (component, route, sidebar entry) and move its affordances
onto the Connectors page — the Add-connector dropdown (marketplace /
manual form, now at #connectors/new) and per-row removal for the admin.

Replace the card grid with a sharper row list (4px radius) built for
scanning status and acting; the marketplace's back link now returns to
#connectors. i18n keys renamed catalog.* -> connectors.add/new/*.
This commit is contained in:
2026-07-27 21:01:32 +01:00
parent 165af19774
commit b198ac923b
13 changed files with 465 additions and 605 deletions
+33 -55
View File
@@ -22,7 +22,6 @@ export default {
'nav.connectors': 'Connectors',
'nav.plugins': 'Plugins',
'nav.plugin_catalog': 'Plugin Catalog',
'nav.catalog': 'Connectors Catalog',
'nav.config': 'Settings',
'nav.llm_requests': 'LLM Requests',
'nav.system_agents': 'System agents',
@@ -768,8 +767,6 @@ export default {
'connectors.loading': 'Loading…',
'connectors.search': 'Search connectors…',
'connectors.btn.signin_providers': 'Sign-in providers',
'connectors.btn.catalog': 'Catalog',
'connectors.btn.marketplace': 'Marketplace',
'connectors.empty.installed': 'No connectors installed yet.',
'connectors.empty.available': 'Nothing available to you yet.',
'connectors.empty.install_hint': 'Install one from the Marketplace to get started.',
@@ -998,7 +995,7 @@ export default {
// ── Marketplace ─────────────────────────────────────────────────────────────
'marketplace.title': 'Marketplace',
'marketplace.btn.catalog': 'Catalog',
'marketplace.btn.connectors': 'Connectors',
'marketplace.action.refetch': 'Refetch the feed',
'marketplace.not_admin': 'The marketplace is managed by the admin.',
'marketplace.not_admin_link': 'Connectors the admin has installed appear on the <a href="#connectors">Connectors</a> page.',
@@ -1098,60 +1095,41 @@ export default {
'users.confirm.delete': 'Delete user "{username}"? This permanently erases their database and all conversation history.',
// ── Catalog ─────────────────────────────────────────────────────────────────
'catalog.title': 'Connector Catalog',
'catalog.loading': 'Loading…',
'catalog.not_admin': 'The catalog is managed by the admin.',
'catalog.not_admin_link': 'What you can activate is on the <a href="#connectors">Connectors</a> page.',
'catalog.desc': 'What this box offers. Nothing here is running — a global entry still needs enabling, a per-user one still needs each user to activate it, both on the <a href="#connectors">Connectors</a> page.',
'catalog.empty.title': 'The catalog is empty.',
'catalog.empty.hint': 'Add a connector from the marketplace to get started.',
'catalog.empty.action': 'Browse the marketplace',
// ── Connectors: add / manual entry ────────────────────────────────────────────
'connectors.add.btn': 'Add connector',
'connectors.add.marketplace': 'From the marketplace',
'connectors.add.marketplace_desc': 'Vetted connectors, files verified by SHA-256.',
'connectors.add.manual': 'Manually',
'connectors.add.manual_desc': 'You supply the config, and vouch for it yourself.',
'catalog.btn.add': 'Add connector',
'catalog.dropdown.marketplace': 'From the marketplace',
'catalog.dropdown.marketplace_desc': 'Vetted connectors, files verified by SHA-256.',
'catalog.dropdown.manual': 'Manually',
'catalog.dropdown.manual_desc': 'You supply the config, and vouch for it yourself.',
'connectors.action.remove': 'Remove',
'catalog.table.connector': 'Connector',
'catalog.table.scope': 'Scope',
'catalog.table.type': 'Type',
'catalog.table.auth': 'Auth',
'connectors.new.back': 'Back',
'connectors.new.title': 'Add connector manually',
'connectors.new.script_warn': '<i class="bi bi-exclamation-triangle me-1"></i>A local script runs code on this box. Nothing verifies it — unlike the marketplace path, there is no digest to check.',
'connectors.new.name': 'Name',
'connectors.new.name_hint': 'slug',
'connectors.new.scope': 'Scope',
'connectors.new.type': 'Type',
'connectors.new.transport': 'Transport',
'connectors.new.command': 'Command',
'connectors.new.command_ph': 'python3',
'connectors.new.script_path': 'Script path',
'connectors.new.script_path_hint': 'as <connector>/<file>, under ./connectors',
'connectors.new.url': 'URL',
'connectors.new.args': 'Args',
'connectors.new.args_hint': 'one per line',
'connectors.new.config_schema': 'Required secret/env keys',
'connectors.new.config_schema_hint': 'comma/newline',
'connectors.new.auth': 'Auth',
'connectors.new.friendly': 'Friendly name',
'connectors.new.desc': 'Description',
'connectors.new.desc_hint': 'the LLM reads this when deciding to activate the connector',
'connectors.new.cancel': 'Cancel',
'connectors.new.save': 'Add connector',
'catalog.badge.global': 'global',
'catalog.badge.per_user': 'per-user',
'catalog.badge.local_script':'local script',
'catalog.badge.remote': 'remote',
'catalog.action.remove': 'Remove from catalog',
'catalog.new.back': 'Back',
'catalog.new.title': 'Add connector manually',
'catalog.new.script_warn': '<i class="bi bi-exclamation-triangle me-1"></i>A local script runs code on this box. Nothing verifies it — unlike the marketplace path, there is no digest to check.',
'catalog.new.name': 'Name',
'catalog.new.name_hint': 'slug',
'catalog.new.scope': 'Scope',
'catalog.new.type': 'Type',
'catalog.new.transport': 'Transport',
'catalog.new.command': 'Command',
'catalog.new.command_ph': 'python3',
'catalog.new.script_path': 'Script path',
'catalog.new.script_path_hint': 'as <connector>/<file>, under ./connectors',
'catalog.new.url': 'URL',
'catalog.new.args': 'Args',
'catalog.new.args_hint': 'one per line',
'catalog.new.config_schema': 'Required secret/env keys',
'catalog.new.config_schema_hint': 'comma/newline',
'catalog.new.auth': 'Auth',
'catalog.new.friendly': 'Friendly name',
'catalog.new.desc': 'Description',
'catalog.new.desc_hint': 'the LLM reads this when deciding to activate the connector',
'catalog.new.cancel': 'Cancel',
'catalog.new.save': 'Add to catalog',
'catalog.error.name': 'Name is required.',
'catalog.confirm.delete': 'Remove "{name}" from the catalog?\n\nAnything already activated from it keeps running.',
'connectors.new.error_name': 'Name is required.',
'connectors.confirm.remove': 'Remove "{name}"?\n\nAnything already activated from it keeps running.',
// ── Cron ────────────────────────────────────────────────────────────────────
'cron.title': 'Cron Jobs',