feat(frontend): Q1+Q2 — Plugin-Routen kommen aus Manifesten, statische Duplikate entfernt
Check Cross-Plugin Imports / check (push) Has been cancelled
Check Cross-Plugin Imports / check (push) Has been cancelled
Phase Q1 (Seiten-Routen) + Q2 (Settings-Routen): Die Plugin-Manifeste sind ab sofort die einzige Quelle fuer Plugin-Frontend-Routen. routes/index.tsx enthaelt nur noch Core-Routen + die StartLayout-Hub-Baeume (/agents, /automation, /logs, /help — verschachtelte Sub-Navigation). - PluginRouteRenderer: variante 'settings' rendert settings_pages mit bare Sub-Segments (Descendant-Matching im /settings-Subtree); Variante 'pages' (Default) behaelt absolute Pfade. Getrennte Entry-Listen verhindern Pfad-Kollisionen (settings 'mail' vs. page '/mail'). - Entfernt: 14 statische AppShell-Plugin-Routen + 9 statische Settings-Routen + 20 tote Lazy-Imports (search, calendar+kanban, dms, dms/trash, mail, mail/settings, reports, tasks, communication, workflows, import-export, tags, wiki, roles, users, groups, notifications, ai, ai-proactive, automation, documents). - Manifeste ergaenzt: Calendar +/calendar/kanban, Tags +/tags (+ Menue-Item, Route war sonst unerreichbar), Automation: /workflows-Permission auf workflows:read (Paritaet zur ersetzten statischen Route). - Automation: tote flache Manifest-Eintraeger fuer /agents + /automation entfernt (StartLayout-Hub-Baeume gewinnen diese Pfade immer — die Eintraege matchten nie). - Komponenten-Map regeneriert (37 Eintraege, CalendarKanban + Tags neu). Verifikation: tsc exit 0; production build exit 0; Vitest Dashboard + MiniAppWindow + pluginStore 35/35; Backend-Regressionen Route-Order, M5-MiniApps, N4-Scope, N3-Filtering 49/49; compileall sauber; Cross-Plugin-Checker 497 Dateien / 0 verbotene Imports; ruff clean.
This commit is contained in:
@@ -102,7 +102,7 @@ class AutomationPlugin(BasePlugin):
|
||||
path="/workflows",
|
||||
icon="Workflow",
|
||||
order=52,
|
||||
permission="automation:read",
|
||||
permission="workflows:read",
|
||||
),
|
||||
FrontendMenuItem(
|
||||
label_key="nav.importExport",
|
||||
@@ -137,24 +137,15 @@ class AutomationPlugin(BasePlugin):
|
||||
permission="contacts:read",
|
||||
),
|
||||
],
|
||||
# Phase Q1: /agents and /automation are served by the static
|
||||
# StartLayout hub trees (sub-navigation). Flat manifest entries for
|
||||
# them were dead duplicates (never matched) and were removed.
|
||||
page_routes=[
|
||||
FrontendPageRoute(
|
||||
path="/automation",
|
||||
component="@/pages/AutomationDashboard",
|
||||
order=50,
|
||||
permission="automation:read",
|
||||
),
|
||||
FrontendPageRoute(
|
||||
path="/agents",
|
||||
component="@/pages/AgentDashboard",
|
||||
order=51,
|
||||
permission="agents:read",
|
||||
),
|
||||
FrontendPageRoute(
|
||||
path="/workflows",
|
||||
component="@/pages/Workflows",
|
||||
order=52,
|
||||
permission="automation:read",
|
||||
permission="workflows:read",
|
||||
),
|
||||
FrontendPageRoute(
|
||||
path="/import-export",
|
||||
|
||||
@@ -64,6 +64,8 @@ class CalendarPlugin(BasePlugin):
|
||||
],
|
||||
page_routes=[
|
||||
FrontendPageRoute(path='/calendar', component='@/pages/Calendar', protected=True, permission='calendar:read'),
|
||||
# Q1: kanban view was static-only before - now manifest-declared.
|
||||
FrontendPageRoute(path='/calendar/kanban', component='@/pages/CalendarKanban', protected=True, permission='calendar:read'),
|
||||
],
|
||||
# BUG (ghost component): ContactCalendarTab does not exist in the
|
||||
# frontend — tab removed until implemented (Block I-D).
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from app.plugins.base import BasePlugin
|
||||
from app.plugins.manifest import PluginManifest, PluginRouteDef
|
||||
from app.plugins.manifest import FrontendMenuItem, FrontendPageRoute, PluginManifest, PluginRouteDef
|
||||
|
||||
|
||||
class TagsPlugin(BasePlugin):
|
||||
@@ -30,6 +30,26 @@ class TagsPlugin(BasePlugin):
|
||||
"tags:delete",
|
||||
"tags:admin",
|
||||
],
|
||||
# Q1: the /tags page was a static-only route before - now
|
||||
# manifest-declared (route + sidebar menu item).
|
||||
menu_items=[
|
||||
FrontendMenuItem(
|
||||
label_key="nav.tags",
|
||||
label="Tags",
|
||||
path="/tags",
|
||||
icon="Tags",
|
||||
order=80,
|
||||
permission="tags:read",
|
||||
),
|
||||
],
|
||||
page_routes=[
|
||||
FrontendPageRoute(
|
||||
path="/tags",
|
||||
component="@/pages/Tags",
|
||||
protected=True,
|
||||
permission="tags:read",
|
||||
),
|
||||
],
|
||||
is_core=True,
|
||||
# BUG (ghost component): ContactTagsTab does not exist in the
|
||||
# frontend — tab removed until implemented (Block I-D).
|
||||
|
||||
Reference in New Issue
Block a user