{
  "type": "featherpanel.pages.all",
  "generated_at": "2026-10-09T12:14:41.225Z",
  "total": 214,
  "coverage": {
    "with_i18n_or_nav_title": 195,
    "with_pageheader_description": 171,
    "nav_urls_indexed": 64
  },
  "pages": [
    {
      "route": "/account/api-keys/create",
      "area": "account",
      "file_slug": "account-api-keys-create",
      "source": "src/app/(app)/account/api-keys/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Api Keys · Create",
      "description": "Create form for a new resource. Related to: Account · Api Keys.",
      "title_key": null,
      "description_key": null,
      "component": "CalagopusApiKeyCreatePage",
      "audience": "Logged-in users managing their own account",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/api-clients/calagopus/create"
      ],
      "summary": "**Api Keys · Create** Create form for a new resource. Related to: Account · Api Keys.",
      "how_to_guide_users": "1. Open Account area.\n2. Go to **Api Keys · Create**.\n3. Direct URL: `/account/api-keys/create`."
    },
    {
      "route": "/account/api-keys/update",
      "area": "account",
      "file_slug": "account-api-keys-update",
      "source": "src/app/(app)/account/api-keys/update/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Api Keys · Update",
      "description": "Update form for an existing resource. Related to: Account · Api Keys.",
      "title_key": null,
      "description_key": null,
      "component": "CalagopusApiKeyUpdatePage",
      "audience": "Logged-in users managing their own account",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/api-clients/calagopus/find",
        "/api/user/api-clients/calagopus/update-permissions"
      ],
      "summary": "**Api Keys · Update** Update form for an existing resource. Related to: Account · Api Keys.",
      "how_to_guide_users": "1. Open Account area.\n2. Go to **Api Keys · Update**.\n3. Direct URL: `/account/api-keys/update`."
    },
    {
      "route": "/admin",
      "area": "admin",
      "file_slug": "admin",
      "source": "src/app/(app)/admin/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Administration",
      "description": "Infrastructure, service health, and panel activity.",
      "title_key": "admin.dashboard.title",
      "description_key": "admin.dashboard.subtitle",
      "component": "AdminDashboardPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-dashboard",
        "title": "Admin Home",
        "title_key": "navigation.items.adminHome",
        "permission": "admin.dashboard.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin",
        "inherited": false
      },
      "widget_slugs": [
        "admin-home"
      ],
      "sections": [
        "APP_URL Mismatch Detected",
        "Update {version} available"
      ],
      "features": [
        "View updates"
      ],
      "ui_labels": [
        {
          "key": "admin.dashboard.app_url_warning.title",
          "value": "APP_URL Mismatch Detected"
        },
        {
          "key": "admin.dashboard.update_banner.title",
          "value": "Update {version} available"
        },
        {
          "key": "admin.dashboard.update_banner.action",
          "value": "View updates"
        }
      ],
      "hooks": [
        "useAdminDashboard",
        "usePluginWidgets",
        "useSettings",
        "useSystemHealth"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/dashboard/cache/clear"
      ],
      "summary": "**Administration** Infrastructure, service health, and panel activity. Sidebar label: “Admin Home”. Requires permission `admin.dashboard.view`. Key UI: View updates.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Admin Home**, then **Administration**.\n3. Direct URL: `/admin`.\n4. User needs permission `admin.dashboard.view` (or `admin.root`)."
    },
    {
      "route": "/admin/abuseipdb",
      "area": "admin",
      "file_slug": "admin-abuseipdb",
      "source": "src/app/(app)/admin/abuseipdb/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "AbuseIPDB",
      "description": "Scan user IPs against AbuseIPDB and configure reporting when banning accounts.",
      "title_key": "admin.abuseipdb.title",
      "description_key": "admin.abuseipdb.description",
      "component": "AbuseIPDBPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-abuseipdb",
        "title": "AbuseIPDB",
        "title_key": "navigation.items.abuseipdb",
        "permission": "admin.users.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/abuseipdb",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Integration status",
        "Configured",
        "Not configured",
        "Scan users",
        "No flagged IPs yet",
        "Run a scan to check first and last IPs of panel users against AbuseIPDB.",
        "Check a single IP",
        "Check IP"
      ],
      "ui_labels": [
        {
          "key": "admin.abuseipdb.status_title",
          "value": "Integration status"
        },
        {
          "key": "admin.abuseipdb.status_configured",
          "value": "Configured"
        },
        {
          "key": "admin.abuseipdb.status_not_configured",
          "value": "Not configured"
        },
        {
          "key": "admin.abuseipdb.status_summary",
          "value": "Min score {score}% · Lookback {days} days · Register action: {action}"
        },
        {
          "key": "admin.abuseipdb.scan_title",
          "value": "Scan users"
        },
        {
          "key": "admin.abuseipdb.no_results_title",
          "value": "No flagged IPs yet"
        },
        {
          "key": "admin.abuseipdb.no_results_description",
          "value": "Run a scan to check first and last IPs of panel users against AbuseIPDB."
        },
        {
          "key": "admin.abuseipdb.check_title",
          "value": "Check a single IP"
        },
        {
          "key": "admin.abuseipdb.check_button",
          "value": "Check IP"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/abuseipdb/check",
        "/api/admin/abuseipdb/scan",
        "/api/admin/abuseipdb/status"
      ],
      "summary": "**AbuseIPDB** Scan user IPs against AbuseIPDB and configure reporting when banning accounts. Requires permission `admin.users.view`. Key UI: Integration status; Configured; Not configured; Scan users; No flagged IPs yet; Run a scan to check first and last IPs of panel users against AbuseIPDB..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **AbuseIPDB**.\n3. Direct URL: `/admin/abuseipdb`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics",
      "area": "admin",
      "file_slug": "admin-analytics",
      "source": "src/app/(app)/admin/analytics/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Analytics Dashboard",
      "description": "Overview of system performance and usage statistics",
      "title_key": "admin.analytics.title",
      "description_key": "admin.analytics.subtitle",
      "component": "AnalyticsDashboardPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": false
      },
      "widget_slugs": [
        "admin-analytics"
      ],
      "sections": [
        "User Analytics",
        "Language Analytics",
        "Activity Analytics",
        "Infrastructure Analytics",
        "Server Analytics",
        "Content Analytics",
        "System Analytics"
      ],
      "features": [
        "Registrations, roles, security, and growth",
        "User activity, trends, peak hours, and activity types",
        "Locations, nodes, allocations, and database host distribution and resource usage",
        "Mail queue monitoring, email delivery statistics, and queue performance metrics"
      ],
      "ui_labels": [
        {
          "key": "admin.analytics.users.title",
          "value": "User Analytics"
        },
        {
          "key": "admin.analytics.nav.users_desc",
          "value": "Registrations, roles, security, and growth"
        },
        {
          "key": "admin.analytics.languages.title",
          "value": "Language Analytics"
        },
        {
          "key": "admin.analytics.languages.subtitle",
          "value": "Breakdown of user language preferences and locale distribution"
        },
        {
          "key": "admin.analytics.activity.title",
          "value": "Activity Analytics"
        },
        {
          "key": "admin.analytics.nav.activity_desc",
          "value": "User activity, trends, peak hours, and activity types"
        },
        {
          "key": "admin.analytics.infrastructure.title",
          "value": "Infrastructure Analytics"
        },
        {
          "key": "admin.analytics.nav.infrastructure_desc",
          "value": "Locations, nodes, allocations, and database host distribution and resource usage"
        },
        {
          "key": "admin.analytics.servers.title",
          "value": "Server Analytics"
        },
        {
          "key": "admin.analytics.nav.servers_desc",
          "value": "Server statistics, database usage per server, allocation patterns, and resource distribution"
        },
        {
          "key": "admin.analytics.content.title",
          "value": "Content Analytics"
        },
        {
          "key": "admin.analytics.nav.content_desc",
          "value": "Realms, eggs, nests, redirect links, mail templates, and content management insights"
        },
        {
          "key": "admin.analytics.system.title",
          "value": "System Analytics"
        },
        {
          "key": "admin.analytics.nav.system_desc",
          "value": "Mail queue monitoring, email delivery statistics, and queue performance metrics"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Analytics Dashboard** Overview of system performance and usage statistics Sidebar label: “Analytics & KPIs”. Requires permission `admin.users.view`. Key UI: Registrations, roles, security, and growth; User activity, trends, peak hours, and activity types; Locations, nodes, allocations, and database host distribution and resource usage; Mail queue monitoring, email delivery statistics, and queue performance metrics.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs**, then **Analytics Dashboard**.\n3. Direct URL: `/admin/analytics`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/activity",
      "area": "admin",
      "file_slug": "admin-analytics-activity",
      "source": "src/app/(app)/admin/analytics/activity/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Activity Analytics",
      "description": "Track and analyze user activities across your panel",
      "title_key": "admin.analytics.activity.title",
      "description_key": "admin.analytics.activity.subtitle",
      "component": "ActivityAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-activity"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Activity Analytics** Track and analyze user activities across your panel Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Activity Analytics**.\n3. Direct URL: `/admin/analytics/activity`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/content",
      "area": "admin",
      "file_slug": "admin-analytics-content",
      "source": "src/app/(app)/admin/analytics/content/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Content Analytics",
      "description": "Realms, eggs, nests, redirect links, mail templates, and content management insights",
      "title_key": "admin.analytics.content.title",
      "description_key": "admin.analytics.content.subtitle",
      "component": "ContentAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-content"
      ],
      "sections": [],
      "features": [
        "Empty Realms"
      ],
      "ui_labels": [
        {
          "key": "admin.analytics.content.empty_realms",
          "value": "Empty Realms"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Content Analytics** Realms, eggs, nests, redirect links, mail templates, and content management insights Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`. Key UI: Empty Realms.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Content Analytics**.\n3. Direct URL: `/admin/analytics/content`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/infrastructure",
      "area": "admin",
      "file_slug": "admin-analytics-infrastructure",
      "source": "src/app/(app)/admin/analytics/infrastructure/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Infrastructure Analytics",
      "description": "Monitor locations, nodes, allocations, and databases",
      "title_key": "admin.analytics.infrastructure.title",
      "description_key": "admin.analytics.infrastructure.subtitle",
      "component": "InfrastructureAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-infrastructure"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Infrastructure Analytics** Monitor locations, nodes, allocations, and databases Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Infrastructure Analytics**.\n3. Direct URL: `/admin/analytics/infrastructure`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/knowledgebase",
      "area": "admin",
      "file_slug": "admin-analytics-knowledgebase",
      "source": "src/app/(app)/admin/analytics/knowledgebase/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Knowledgebase Analytics",
      "description": "Knowledgebase content KPIs.",
      "title_key": "admin.analytics.knowledgebase.title",
      "description_key": "admin.analytics.knowledgebase.subtitle",
      "component": "KnowledgebaseAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-knowledgebase"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Knowledgebase Analytics** Knowledgebase content KPIs. Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Knowledgebase Analytics**.\n3. Direct URL: `/admin/analytics/knowledgebase`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/languages",
      "area": "admin",
      "file_slug": "admin-analytics-languages",
      "source": "src/app/(app)/admin/analytics/languages/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Language Analytics",
      "description": "Breakdown of user language preferences and locale distribution",
      "title_key": "admin.analytics.languages.title",
      "description_key": "admin.analytics.languages.subtitle",
      "component": "LanguageAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/analytics/languages",
        "/api/admin/analytics/languages/trends"
      ],
      "summary": "**Language Analytics** Breakdown of user language preferences and locale distribution Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Language Analytics**.\n3. Direct URL: `/admin/analytics/languages`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/plugins",
      "area": "admin",
      "file_slug": "admin-analytics-plugins",
      "source": "src/app/(app)/admin/analytics/plugins/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Plugins & Integrations Analytics",
      "description": "KPIs for plugins and integration-related entities.",
      "title_key": "admin.analytics.plugins.title",
      "description_key": "admin.analytics.plugins.subtitle",
      "component": "PluginsAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-plugins"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Plugins & Integrations Analytics** KPIs for plugins and integration-related entities. Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Plugins & Integrations Analytics**.\n3. Direct URL: `/admin/analytics/plugins`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/servers",
      "area": "admin",
      "file_slug": "admin-analytics-servers",
      "source": "src/app/(app)/admin/analytics/servers/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Server Analytics",
      "description": "Deep insights into server statistics, resource usage, and patterns",
      "title_key": "admin.analytics.servers.title",
      "description_key": "admin.analytics.servers.subtitle",
      "component": "ServerAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-servers"
      ],
      "sections": [],
      "features": [
        "Status Distribution",
        "Servers by status"
      ],
      "ui_labels": [
        {
          "key": "admin.analytics.servers.status_dist",
          "value": "Status Distribution"
        },
        {
          "key": "admin.analytics.servers.status_dist_desc",
          "value": "Servers by status"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Server Analytics** Deep insights into server statistics, resource usage, and patterns Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`. Key UI: Status Distribution; Servers by status.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Server Analytics**.\n3. Direct URL: `/admin/analytics/servers`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/system",
      "area": "admin",
      "file_slug": "admin-analytics-system",
      "source": "src/app/(app)/admin/analytics/system/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "System Analytics",
      "description": "Mail queue monitoring and statistics",
      "title_key": "admin.analytics.system.title",
      "description_key": "admin.analytics.system.subtitle",
      "component": "SystemAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-system"
      ],
      "sections": [],
      "features": [
        "Mail Queue Status",
        "Email queue distribution"
      ],
      "ui_labels": [
        {
          "key": "admin.analytics.system.queue_status",
          "value": "Mail Queue Status"
        },
        {
          "key": "admin.analytics.system.queue_status_desc",
          "value": "Email queue distribution"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**System Analytics** Mail queue monitoring and statistics Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`. Key UI: Mail Queue Status; Email queue distribution.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **System Analytics**.\n3. Direct URL: `/admin/analytics/system`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/tickets",
      "area": "admin",
      "file_slug": "admin-analytics-tickets",
      "source": "src/app/(app)/admin/analytics/tickets/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Tickets Analytics",
      "description": "Ticketing KPIs and usage metrics.",
      "title_key": "admin.analytics.tickets.title",
      "description_key": "admin.analytics.tickets.subtitle",
      "component": "TicketsAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-tickets"
      ],
      "sections": [],
      "features": [
        "Statuses"
      ],
      "ui_labels": [
        {
          "key": "admin.analytics.tickets.statuses",
          "value": "Statuses"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Tickets Analytics** Ticketing KPIs and usage metrics. Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`. Key UI: Statuses.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **Tickets Analytics**.\n3. Direct URL: `/admin/analytics/tickets`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/users",
      "area": "admin",
      "file_slug": "admin-analytics-users",
      "source": "src/app/(app)/admin/analytics/users/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "User Analytics",
      "description": "User behavior and statistics",
      "title_key": "admin.analytics.users.title",
      "description_key": "admin.analytics.users.subtitle",
      "component": "UserAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-users"
      ],
      "sections": [],
      "features": [
        "Security Statistics"
      ],
      "ui_labels": [
        {
          "key": "admin.analytics.users.security_stats_title",
          "value": "Security Statistics"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**User Analytics** User behavior and statistics Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`. Key UI: Security Statistics.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **User Analytics**.\n3. Direct URL: `/admin/analytics/users`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/analytics/vds",
      "area": "admin",
      "file_slug": "admin-analytics-vds",
      "source": "src/app/(app)/admin/analytics/vds/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "VDS Analytics",
      "description": "VDS-only KPIs for nodes, templates, instances, backups, and operations.",
      "title_key": "admin.analytics.vds.title",
      "description_key": "admin.analytics.vds.subtitle",
      "component": "VdsAnalyticsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-kpi-analytics",
        "title": "Analytics & KPIs",
        "title_key": "navigation.items.analytics",
        "permission": "admin.users.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/analytics",
        "inherited": true
      },
      "widget_slugs": [
        "admin-analytics-vds"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**VDS Analytics** VDS-only KPIs for nodes, templates, instances, backups, and operations. Under sidebar item “Analytics & KPIs”. Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Analytics & KPIs** (parent nav item), then **VDS Analytics**.\n3. Direct URL: `/admin/analytics/vds`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/api-keys",
      "area": "admin",
      "file_slug": "admin-api-keys",
      "source": "src/app/(app)/admin/api-keys/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "API Keys",
      "description": "API Keys screen in FeatherPanel (admin area). Use this page to manage api keys.",
      "title_key": "navigation.items.apiKeys",
      "description_key": null,
      "component": "CloudManagementPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-api-keys",
        "title": "API Keys",
        "title_key": "navigation.items.apiKeys",
        "permission": "admin.dashboard.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/api-keys",
        "inherited": false
      },
      "widget_slugs": [
        "admin-api-keys"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**API Keys** API Keys screen in FeatherPanel (admin area). Use this page to manage api keys. Requires permission `admin.dashboard.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **API Keys**.\n3. Direct URL: `/admin/api-keys`.\n4. User needs permission `admin.dashboard.view` (or `admin.root`)."
    },
    {
      "route": "/admin/backup-schedules",
      "area": "admin",
      "file_slug": "admin-backup-schedules",
      "source": "src/app/(app)/admin/backup-schedules/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Backup Schedules",
      "description": "Automatically back up game servers across the panel on a schedule.",
      "title_key": "adminBackupSchedules.title",
      "description_key": "adminBackupSchedules.description",
      "component": "AdminBackupSchedulesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-backup-schedules",
        "title": "Backup Schedules",
        "title_key": "navigation.items.backupSchedules",
        "permission": "admin.backup.schedules.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/backup-schedules",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [
        "How schedules work",
        "Retention & limits",
        "Tips"
      ],
      "features": [
        "Create schedule",
        "No backup schedules yet",
        "Create a schedule to back up servers automatically across the panel.",
        "Edit",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "adminBackupSchedules.deleteConfirm",
          "value": "Delete backup schedule \"{name}\"?"
        },
        {
          "key": "adminBackupSchedules.create",
          "value": "Create schedule"
        },
        {
          "key": "adminBackupSchedules.emptyTitle",
          "value": "No backup schedules yet"
        },
        {
          "key": "adminBackupSchedules.emptyDescription",
          "value": "Create a schedule to back up servers automatically across the panel."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "adminBackupSchedules.help.schedules.title",
          "value": "How schedules work"
        },
        {
          "key": "adminBackupSchedules.help.retention.title",
          "value": "Retention & limits"
        },
        {
          "key": "adminBackupSchedules.help.tips.title",
          "value": "Tips"
        }
      ],
      "hooks": [
        "usePersistedListFilters"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/backup-schedules"
      ],
      "summary": "**Backup Schedules** Automatically back up game servers across the panel on a schedule. Requires permission `admin.backup.schedules.view`. Key UI: Create schedule; No backup schedules yet; Create a schedule to back up servers automatically across the panel.; Edit; Delete.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Backup Schedules**.\n3. Direct URL: `/admin/backup-schedules`.\n4. User needs permission `admin.backup.schedules.view` (or `admin.root`)."
    },
    {
      "route": "/admin/backup-schedules/new",
      "area": "admin",
      "file_slug": "admin-backup-schedules-new",
      "source": "src/app/(app)/admin/backup-schedules/new/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "New backup schedule",
      "description": "Choose which servers to include, when to run, and what to back up.",
      "title_key": "adminBackupSchedules.createTitle",
      "description_key": "adminBackupSchedules.createDescription",
      "component": "CreateBackupSchedulePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-backup-schedules",
        "title": "Backup Schedules",
        "title_key": "navigation.items.backupSchedules",
        "permission": "admin.backup.schedules.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/backup-schedules",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Create schedule"
      ],
      "ui_labels": [
        {
          "key": "adminBackupSchedules.create",
          "value": "Create schedule"
        }
      ],
      "hooks": [
        "useUserTimezone"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/backup-schedules"
      ],
      "summary": "**New backup schedule** Choose which servers to include, when to run, and what to back up. Under sidebar item “Backup Schedules”. Requires permission `admin.backup.schedules.view`. Key UI: Create schedule.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Backup Schedules** (parent nav item), then **New backup schedule**.\n3. Direct URL: `/admin/backup-schedules/new`.\n4. User needs permission `admin.backup.schedules.view` (or `admin.root`)."
    },
    {
      "route": "/admin/blocked-email-domains",
      "area": "admin",
      "file_slug": "admin-blocked-email-domains",
      "source": "src/app/(app)/admin/blocked-email-domains/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Blocked email domains",
      "description": "Domains listed here cannot be used for new registrations or when users change their email, when blocking is enabled. Subdomains match (e.g. sub.example.com matches example.com).",
      "title_key": "admin.blocked_email_domains.title",
      "description_key": "admin.blocked_email_domains.description",
      "component": "BlockedEmailDomainsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-blocked-email-domains",
        "title": "Blocked Email Domains",
        "title_key": "navigation.items.blockedEmailDomains",
        "permission": "admin.settings.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/blocked-email-domains",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Bulk import domains",
        "Bundled preset",
        "From URL",
        "Paste text",
        "Plain-text URL",
        "Domain list",
        "Enforcement",
        "Toggle whether the list below is applied at signup and email changes",
        "Enforce blocked domains",
        "Add domain",
        "Single entries are validated instantly",
        "Block a domain"
      ],
      "ui_labels": [
        {
          "key": "admin.blocked_email_domains.confirm_delete",
          "value": "Remove {domain} from the blocklist?"
        },
        {
          "key": "admin.blocked_email_domains.import_confirm",
          "value": "Import the bundled disposable-domain preset ({file})? This may take a minute."
        },
        {
          "key": "admin.blocked_email_domains.import_dialog_title",
          "value": "Bulk import domains"
        },
        {
          "key": "admin.blocked_email_domains.import_tab_preset",
          "value": "Bundled preset"
        },
        {
          "key": "admin.blocked_email_domains.import_tab_url",
          "value": "From URL"
        },
        {
          "key": "admin.blocked_email_domains.import_tab_paste",
          "value": "Paste text"
        },
        {
          "key": "admin.blocked_email_domains.import_url_label",
          "value": "Plain-text URL"
        },
        {
          "key": "admin.blocked_email_domains.import_paste_label",
          "value": "Domain list"
        },
        {
          "key": "admin.blocked_email_domains.section_enforcement_title",
          "value": "Enforcement"
        },
        {
          "key": "admin.blocked_email_domains.section_enforcement_subtitle",
          "value": "Toggle whether the list below is applied at signup and email changes"
        },
        {
          "key": "admin.blocked_email_domains.switch_label",
          "value": "Enforce blocked domains"
        },
        {
          "key": "admin.blocked_email_domains.section_quick_add_title",
          "value": "Add domain"
        },
        {
          "key": "admin.blocked_email_domains.section_quick_add_subtitle",
          "value": "Single entries are validated instantly"
        },
        {
          "key": "admin.blocked_email_domains.add_label",
          "value": "Block a domain"
        },
        {
          "key": "admin.blocked_email_domains.add_button",
          "value": "Add"
        },
        {
          "key": "admin.blocked_email_domains.empty_search_title",
          "value": "No matching domains"
        },
        {
          "key": "admin.blocked_email_domains.empty_search_hint",
          "value": "Try another search term or clear filters."
        },
        {
          "key": "admin.blocked_email_domains.empty",
          "value": "No blocked domains yet."
        },
        {
          "key": "admin.blocked_email_domains.empty_hint",
          "value": "Add domains above or run a bulk import."
        },
        {
          "key": "common.actions",
          "value": "Actions"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/blocked-email-domains",
        "/api/admin/blocked-email-domains/import-preset",
        "/api/admin/blocked-email-domains/import-text",
        "/api/admin/blocked-email-domains/import-url",
        "/api/admin/settings"
      ],
      "summary": "**Blocked email domains** Domains listed here cannot be used for new registrations or when users change their email, when blocking is enabled. Subdomains match (e.g. sub.example.com matches example.com). Sidebar label: “Blocked Email Domains”. Requires permission `admin.settings.view`. Key UI: Bulk import domains; Bundled preset; From URL; Paste text; Plain-text URL; Domain list.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Blocked Email Domains**, then **Blocked email domains**.\n3. Direct URL: `/admin/blocked-email-domains`.\n4. User needs permission `admin.settings.view` (or `admin.root`)."
    },
    {
      "route": "/admin/blocked-ips",
      "area": "admin",
      "file_slug": "admin-blocked-ips",
      "source": "src/app/(app)/admin/blocked-ips/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Banned IPs",
      "description": "IPs listed here cannot create new panel accounts (password, Discord, or OIDC signup). Existing accounts can still log in; ban the user account separately if needed.",
      "title_key": "admin.blocked_ips.title",
      "description_key": "admin.blocked_ips.description",
      "component": "BlockedIpsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-blocked-ips",
        "title": "Banned IPs",
        "title_key": "navigation.items.blockedIps",
        "permission": "admin.blocked.ips.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/blocked-ips",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Ban an IP",
        "Enter an IPv4/IPv6 address or CIDR and an optional duration timestring",
        "IP address or CIDR",
        "Duration",
        "Reason (optional)",
        "Ban IP",
        "No banned IPs yet.",
        "Add an IP above to block new registrations from that address.",
        "No matching bans",
        "Try another search term or clear filters.",
        "Active",
        "Expired"
      ],
      "ui_labels": [
        {
          "key": "admin.blocked_ips.confirm_delete",
          "value": "Remove the ban for {ip}?"
        },
        {
          "key": "admin.blocked_ips.section_quick_add_title",
          "value": "Ban an IP"
        },
        {
          "key": "admin.blocked_ips.section_quick_add_subtitle",
          "value": "Enter an IPv4/IPv6 address or CIDR and an optional duration timestring"
        },
        {
          "key": "admin.blocked_ips.add_label",
          "value": "IP address or CIDR"
        },
        {
          "key": "admin.blocked_ips.duration_label",
          "value": "Duration"
        },
        {
          "key": "admin.blocked_ips.reason_label",
          "value": "Reason (optional)"
        },
        {
          "key": "admin.blocked_ips.add_button",
          "value": "Ban IP"
        },
        {
          "key": "admin.blocked_ips.empty",
          "value": "No banned IPs yet."
        },
        {
          "key": "admin.blocked_ips.empty_hint",
          "value": "Add an IP above to block new registrations from that address."
        },
        {
          "key": "admin.blocked_ips.empty_search_title",
          "value": "No matching bans"
        },
        {
          "key": "admin.blocked_ips.empty_search_hint",
          "value": "Try another search term or clear filters."
        },
        {
          "key": "admin.blocked_ips.status_active",
          "value": "Active"
        },
        {
          "key": "admin.blocked_ips.status_expired",
          "value": "Expired"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/blocked-ips"
      ],
      "summary": "**Banned IPs** IPs listed here cannot create new panel accounts (password, Discord, or OIDC signup). Existing accounts can still log in; ban the user account separately if needed. Requires permission `admin.blocked.ips.view`. Key UI: Ban an IP; Enter an IPv4/IPv6 address or CIDR and an optional duration timestring; IP address or CIDR; Duration; Reason (optional); Ban IP.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Banned IPs**.\n3. Direct URL: `/admin/blocked-ips`.\n4. User needs permission `admin.blocked.ips.view` (or `admin.root`)."
    },
    {
      "route": "/admin/cloud-management",
      "area": "admin",
      "file_slug": "admin-cloud-management",
      "source": "src/app/(app)/admin/cloud-management/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Cloud Connections",
      "description": "Connect Mythic Cloud in a couple of clicks no API keys or user ids to paste.",
      "title_key": "admin.cloud_management.title",
      "description_key": "admin.cloud_management.subtitle",
      "component": "CloudManagementPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-myfeatherpanel",
        "title": "MyFeatherPanel",
        "title_key": "navigation.items.myFeatherPanel",
        "permission": "admin.plugins.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/cloud-management",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [
        "Cloud unavailable on demo",
        "About to connect Mythic Cloud",
        "Disconnect Mythic Cloud?"
      ],
      "features": [
        "Refresh",
        "Connection",
        "Connected to Mythic Cloud",
        "Not connected",
        "This panel will be able to:",
        "This panel will NOT be able to:"
      ],
      "ui_labels": [
        {
          "key": "admin.cloud_management.refresh_status",
          "value": "Refresh"
        },
        {
          "key": "demo.cloud.title",
          "value": "Cloud unavailable on demo"
        },
        {
          "key": "demo.cloud.description",
          "value": "FeatherPanel Cloud / Mythic Cloud cannot be linked on DEMO instances. Install your own panel for marketplace, premium, and cloud features."
        },
        {
          "key": "admin.cloud_management.connection_status.card_title",
          "value": "Connection"
        },
        {
          "key": "admin.cloud_management.connection_status.connected_to",
          "value": "Connected to {team}"
        },
        {
          "key": "admin.cloud_management.connection_status.connected",
          "value": "Connected to Mythic Cloud"
        },
        {
          "key": "admin.cloud_management.connection_status.connected_desc",
          "value": "This panel can use Mythic marketplace, eggs, issues, pastes, and team cloud features."
        },
        {
          "key": "admin.cloud_management.connection_status.not_connected",
          "value": "Not connected"
        },
        {
          "key": "admin.cloud_management.connection_status.not_connected_desc",
          "value": "Authorize Mythic once. We'll store the link and map your team members by email automatically."
        },
        {
          "key": "admin.cloud_management.consent.title",
          "value": "About to connect Mythic Cloud"
        },
        {
          "key": "admin.cloud_management.consent.granted_title",
          "value": "This panel will be able to:"
        },
        {
          "key": "admin.cloud_management.consent.denied_title",
          "value": "This panel will NOT be able to:"
        },
        {
          "key": "admin.cloud_management.disconnect_dialog.title",
          "value": "Disconnect Mythic Cloud?"
        },
        {
          "key": "admin.cloud_management.disconnect_dialog.description",
          "value": "This fully removes the Mythic link identity keys, team mapping, and authorizer identity. The panel will act as if it was never connected."
        }
      ],
      "hooks": [
        "useFeatherCloud",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/disconnect",
        "/api/admin/cloud/oauth2/link",
        "/api/admin/cloud/settings",
        "/api/admin/cloud/sync"
      ],
      "summary": "**Cloud Connections** Connect Mythic Cloud in a couple of clicks no API keys or user ids to paste. Sidebar label: “MyFeatherPanel”. Requires permission `admin.plugins.view`. Key UI: Refresh; Connection; Connected to Mythic Cloud; Not connected; This panel will be able to:; This panel will NOT be able to:.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **MyFeatherPanel**, then **Cloud Connections**.\n3. Direct URL: `/admin/cloud-management`.\n4. User needs permission `admin.plugins.view` (or `admin.root`)."
    },
    {
      "route": "/admin/cloud-management/finish",
      "area": "admin",
      "file_slug": "admin-cloud-management-finish",
      "source": "src/app/(app)/admin/cloud-management/finish/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Cloud Management · Finish",
      "description": "MyFeatherPanel screen in FeatherPanel (admin area). Use this page to manage myfeatherpanel.",
      "title_key": null,
      "description_key": null,
      "component": "CloudManagementFinishPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-myfeatherpanel",
        "title": "MyFeatherPanel",
        "title_key": "navigation.items.myFeatherPanel",
        "permission": "admin.plugins.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/cloud-management",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Mythic Cloud connected"
      ],
      "ui_labels": [
        {
          "key": "admin.cloud_management.finish.linked_toast",
          "value": "Mythic Cloud connected"
        }
      ],
      "hooks": [
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/oauth2/callback"
      ],
      "summary": "**Cloud Management · Finish** MyFeatherPanel screen in FeatherPanel (admin area). Use this page to manage myfeatherpanel. Under sidebar item “MyFeatherPanel”. Requires permission `admin.plugins.view`. Key UI: Mythic Cloud connected.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **MyFeatherPanel** (parent nav item), then **Cloud Management · Finish**.\n3. Direct URL: `/admin/cloud-management/finish`.\n4. User needs permission `admin.plugins.view` (or `admin.root`)."
    },
    {
      "route": "/admin/databases/management",
      "area": "admin",
      "file_slug": "admin-databases-management",
      "source": "src/app/(app)/admin/databases/management/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Database Management",
      "description": "Inspect database health, run migrations, and manage utilities",
      "title_key": "admin.database_management.title",
      "description_key": "admin.database_management.subtitle",
      "component": "DatabaseManagementPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-database-management",
        "title": "Database Management",
        "title_key": "navigation.items.databaseManagement",
        "permission": "admin.databases.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/databases/management",
        "inherited": false
      },
      "widget_slugs": [
        "admin-databases-management"
      ],
      "sections": [
        "Migration Output",
        "What is this page?"
      ],
      "features": [
        "Failed to fetch database status",
        "Migrations completed successfully",
        "Migration failed",
        "phpMyAdmin is already installed",
        "phpMyAdmin installed successfully",
        "Are you sure you want to delete phpMyAdmin? This action cannot be undone.",
        "phpMyAdmin deleted successfully",
        "Refresh Status",
        "Run Migrations",
        "Delete phpMyAdmin",
        "Install phpMyAdmin",
        "Overview"
      ],
      "ui_labels": [
        {
          "key": "admin.database_management.toasts.failed_status",
          "value": "Failed to fetch database status"
        },
        {
          "key": "admin.database_management.migrations.success",
          "value": "Migrations completed successfully"
        },
        {
          "key": "admin.database_management.migrations.failed",
          "value": "Migration failed"
        },
        {
          "key": "admin.database_management.pma.already_installed",
          "value": "phpMyAdmin is already installed"
        },
        {
          "key": "admin.database_management.pma.installed_success",
          "value": "phpMyAdmin installed successfully"
        },
        {
          "key": "admin.database_management.pma.confirm_delete",
          "value": "Are you sure you want to delete phpMyAdmin? This action cannot be undone."
        },
        {
          "key": "admin.database_management.pma.deleted_success",
          "value": "phpMyAdmin deleted successfully"
        },
        {
          "key": "admin.database_management.actions.refresh",
          "value": "Refresh Status"
        },
        {
          "key": "admin.database_management.actions.run_migrations",
          "value": "Run Migrations"
        },
        {
          "key": "admin.database_management.actions.delete_pma",
          "value": "Delete phpMyAdmin"
        },
        {
          "key": "admin.database_management.actions.install_pma",
          "value": "Install phpMyAdmin"
        },
        {
          "key": "admin.database_management.stats.overview",
          "value": "Overview"
        },
        {
          "key": "admin.database_management.stats.engine",
          "value": "Engine"
        },
        {
          "key": "admin.database_management.stats.version",
          "value": "Version"
        },
        {
          "key": "admin.database_management.stats.uptime",
          "value": "Uptime"
        },
        {
          "key": "admin.database_management.stats.qps",
          "value": "QPS"
        },
        {
          "key": "admin.database_management.stats.connections",
          "value": "Connections"
        },
        {
          "key": "admin.database_management.stats.threads_connected",
          "value": "Threads Connected"
        },
        {
          "key": "admin.database_management.stats.threads_running",
          "value": "Threads Running"
        },
        {
          "key": "admin.database_management.stats.connections_total",
          "value": "Total Connections"
        },
        {
          "key": "admin.database_management.stats.aborted_connects",
          "value": "Aborted Connects"
        },
        {
          "key": "admin.database_management.stats.queries",
          "value": "Queries"
        },
        {
          "key": "admin.database_management.stats.queries_total",
          "value": "Total Queries"
        },
        {
          "key": "admin.database_management.stats.questions_total",
          "value": "Total Questions"
        },
        {
          "key": "admin.database_management.stats.network",
          "value": "Network"
        },
        {
          "key": "admin.database_management.stats.bytes_received",
          "value": "Bytes Received"
        },
        {
          "key": "admin.database_management.stats.bytes_sent",
          "value": "Bytes Sent"
        },
        {
          "key": "admin.database_management.actions.loading_status",
          "value": "Loading database status..."
        },
        {
          "key": "admin.database_management.migrations.title",
          "value": "Migration Output"
        },
        {
          "key": "admin.database_management.actions.clear_output",
          "value": "Clear Output"
        },
        {
          "key": "admin.database_management.migrations.running",
          "value": "Running migrations..."
        },
        {
          "key": "admin.database_management.help.what_is.title",
          "value": "What is this page?"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/databases/management/install-phpmyadmin",
        "/api/admin/databases/management/migrate",
        "/api/admin/databases/management/phpmyadmin",
        "/api/admin/databases/management/phpmyadmin/status",
        "/api/admin/databases/management/status"
      ],
      "summary": "**Database Management** Inspect database health, run migrations, and manage utilities Requires permission `admin.databases.view`. Key UI: Failed to fetch database status; Migrations completed successfully; Migration failed; phpMyAdmin is already installed; phpMyAdmin installed successfully; Are you sure you want to delete phpMyAdmin? This action cannot be undone..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Database Management**.\n3. Direct URL: `/admin/databases/management`.\n4. User needs permission `admin.databases.view` (or `admin.root`)."
    },
    {
      "route": "/admin/databases/nodes",
      "area": "admin",
      "file_slug": "admin-databases-nodes",
      "source": "src/app/(app)/admin/databases/nodes/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Node Databases",
      "description": "Node Databases screen in FeatherPanel (admin area). Use this page to manage node databases.",
      "title_key": "navigation.items.nodeDatabases",
      "description_key": null,
      "component": "AllNodeDatabasesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-node-databases",
        "title": "Node Databases",
        "title_key": "navigation.items.nodeDatabases",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/databases/nodes",
        "inherited": false
      },
      "widget_slugs": [
        "admin-node-databases"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Node Databases** Node Databases screen in FeatherPanel (admin area). Use this page to manage node databases. Requires permission `admin.nodes.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Node Databases**.\n3. Direct URL: `/admin/databases/nodes`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/dev/console",
      "area": "admin",
      "file_slug": "admin-dev-console",
      "source": "src/app/(app)/admin/dev/console/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Console",
      "description": "Execute commands on the server",
      "title_key": "admin.dev.console.title",
      "description_key": "admin.dev.console.description",
      "component": "ConsolePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-dev-console",
        "title": "Console",
        "title_key": "navigation.items.console",
        "permission": "admin.root",
        "group": "developer",
        "category": "admin",
        "matched_url": "/admin/dev/console",
        "inherited": false
      },
      "widget_slugs": [
        "admin-dev-console"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [
        {
          "key": "admin.dev.developerModeDescription",
          "value": "Developer mode must be enabled in settings to access developer tools. Please enable it in Admin Settings to continue."
        }
      ],
      "hooks": [
        "useDeveloperMode",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/console/execute",
        "/api/admin/console/system-info"
      ],
      "summary": "**Console** Execute commands on the server Requires permission `admin.root`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Console**.\n3. Direct URL: `/admin/dev/console`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/dev/logs",
      "area": "admin",
      "file_slug": "admin-dev-logs",
      "source": "src/app/(app)/admin/dev/logs/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Dev · Logs",
      "description": "Developer tools: view and stream panel application logs.",
      "title_key": null,
      "description_key": null,
      "component": "DevLogsRedirectPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [
        "admin-dev-logs-redirect"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Dev · Logs** Developer tools: view and stream panel application logs.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Dev · Logs**.\n3. Direct URL: `/admin/dev/logs`."
    },
    {
      "route": "/admin/dev/plugins",
      "area": "admin",
      "file_slug": "admin-dev-plugins",
      "source": "src/app/(app)/admin/dev/plugins/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Plugin Manager",
      "description": "Create and manage FeatherPanel plugins",
      "title_key": "admin.dev.plugins.title",
      "description_key": "admin.dev.plugins.description",
      "component": "PluginManagerPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-dev-plugins",
        "title": "Dev Plugins",
        "title_key": "navigation.items.devPlugins",
        "permission": "admin.root",
        "group": "developer",
        "category": "admin",
        "matched_url": "/admin/dev/plugins",
        "inherited": false
      },
      "widget_slugs": [
        "admin-dev-plugins"
      ],
      "sections": [
        "SDK Information",
        "No plugins found",
        "Details",
        "Create {name}",
        "Delete Plugin"
      ],
      "features": [
        "Refresh",
        "Create Plugin",
        "Create your first plugin to get started",
        "No description available",
        "Status",
        "Creating...",
        "Create",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "admin.dev.developerModeDescription",
          "value": "Developer mode must be enabled in settings to access developer tools. Please enable it in Admin Settings to continue."
        },
        {
          "key": "admin.dev.plugins.actions.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.dev.plugins.actions.create",
          "value": "Create Plugin"
        },
        {
          "key": "admin.dev.plugins.sdk.title",
          "value": "SDK Information"
        },
        {
          "key": "admin.dev.plugins.empty.title",
          "value": "No plugins found"
        },
        {
          "key": "admin.dev.plugins.empty.description",
          "value": "Create your first plugin to get started"
        },
        {
          "key": "admin.dev.plugins.no_description",
          "value": "No description available"
        },
        {
          "key": "admin.dev.plugins.details.title",
          "value": "Details"
        },
        {
          "key": "admin.dev.plugins.details.status",
          "value": "Status"
        },
        {
          "key": "admin.dev.plugins.create_action.title",
          "value": "Create {name}"
        },
        {
          "key": "admin.dev.plugins.create_action.file_warning",
          "value": "Be careful not to upload files containing secrets or sensitive data. Uploaded files may be accessible to others or stored in ways you do not expect."
        },
        {
          "key": "admin.dev.plugins.create_action.creating",
          "value": "Creating..."
        },
        {
          "key": "common.create",
          "value": "Create"
        },
        {
          "key": "admin.dev.plugins.uninstall.title",
          "value": "Delete Plugin"
        },
        {
          "key": "admin.dev.plugins.uninstall.description",
          "value": "Are you sure you want to delete {name}? This action cannot be undone."
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "useDeveloperMode",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/plugin-manager",
        "/api/admin/plugin-tools/create-file",
        "/api/admin/plugin-tools/creation-options"
      ],
      "summary": "**Plugin Manager** Create and manage FeatherPanel plugins Sidebar label: “Dev Plugins”. Requires permission `admin.root`. Key UI: Refresh; Create Plugin; Create your first plugin to get started; No description available; Status; Creating....",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Dev Plugins**, then **Plugin Manager**.\n3. Direct URL: `/admin/dev/plugins`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/dev/plugins/create",
      "area": "admin",
      "file_slug": "admin-dev-plugins-create",
      "source": "src/app/(app)/admin/dev/plugins/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create New Plugin",
      "description": "Developer tools: scaffold / create a new FeatherPanel plugin.",
      "title_key": "admin.dev.plugins.create.title",
      "description_key": "admin.dev.plugins.create.description",
      "component": "CreatePluginPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-dev-plugins",
        "title": "Dev Plugins",
        "title_key": "navigation.items.devPlugins",
        "permission": "admin.root",
        "group": "developer",
        "category": "admin",
        "matched_url": "/admin/dev/plugins",
        "inherited": true
      },
      "widget_slugs": [
        "admin-dev-plugins-create"
      ],
      "sections": [],
      "features": [
        "Empty Template",
        "Minimal structure with just conf.yml and basic directories",
        "Starter Template",
        "Full template with all example files and documentation",
        "Fresh Template",
        "Clean template with basic structure and minimal examples",
        "Theme pack",
        "Selectable theme with design tokens and optional CSS",
        "UI pack",
        "Layout takeover with shell/page replace and slot actions",
        "A brief description of what this plugin does...",
        "Describe what this configuration field is used for..."
      ],
      "ui_labels": [
        {
          "key": "admin.dev.plugins.create.templates.empty.label",
          "value": "Empty Template"
        },
        {
          "key": "admin.dev.plugins.create.templates.empty.description",
          "value": "Minimal structure with just conf.yml and basic directories"
        },
        {
          "key": "admin.dev.plugins.create.templates.starter.label",
          "value": "Starter Template"
        },
        {
          "key": "admin.dev.plugins.create.templates.starter.description",
          "value": "Full template with all example files and documentation"
        },
        {
          "key": "admin.dev.plugins.create.templates.fresh.label",
          "value": "Fresh Template"
        },
        {
          "key": "admin.dev.plugins.create.templates.fresh.description",
          "value": "Clean template with basic structure and minimal examples"
        },
        {
          "key": "admin.dev.plugins.create.templates.theme.label",
          "value": "Theme pack"
        },
        {
          "key": "admin.dev.plugins.create.templates.theme.description",
          "value": "Selectable theme with design tokens and optional CSS"
        },
        {
          "key": "admin.dev.plugins.create.templates.uiPack.label",
          "value": "UI pack"
        },
        {
          "key": "admin.dev.plugins.create.templates.uiPack.description",
          "value": "Layout takeover with shell/page replace and slot actions"
        },
        {
          "key": "admin.dev.developerModeDescription",
          "value": "Developer mode must be enabled in settings to access developer tools. Please enable it in Admin Settings to continue."
        },
        {
          "key": "admin.dev.plugins.create.description_placeholder",
          "value": "A brief description of what this plugin does..."
        },
        {
          "key": "admin.dev.plugins.create.config_description_placeholder",
          "value": "Describe what this configuration field is used for..."
        }
      ],
      "hooks": [
        "useDeveloperMode",
        "usePluginWidgets",
        "useSession",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/plugin-manager"
      ],
      "summary": "**Create New Plugin** Developer tools: scaffold / create a new FeatherPanel plugin. Under sidebar item “Dev Plugins”. Requires permission `admin.root`. Key UI: Empty Template; Minimal structure with just conf.yml and basic directories; Starter Template; Full template with all example files and documentation; Fresh Template; Clean template with basic structure and minimal examples.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Dev Plugins** (parent nav item), then **Create New Plugin**.\n3. Direct URL: `/admin/dev/plugins/create`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/dns-hosts",
      "area": "admin",
      "file_slug": "admin-dns-hosts",
      "source": "src/app/(app)/admin/dns-hosts/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "DNS hosts",
      "description": "Manage PowerDNS on FeatherQuilld web nodes for WebSpace DNS zone hosting.",
      "title_key": "admin.dnsHosts.title",
      "description_key": "admin.dnsHosts.description",
      "component": "AdminDnsHostsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-dns-hosts",
        "title": "DNS hosts",
        "title_key": "navigation.items.dnsHosts",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/dns-hosts",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Delete this DNS host?",
        "Add DNS host",
        "No DNS hosts configured yet",
        "Install PowerDNS on a web node, then add a DNS host here.",
        "Registrar delegation (example zone)",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "admin.dnsHosts.confirmDelete",
          "value": "Delete this DNS host?"
        },
        {
          "key": "admin.dnsHosts.createSection",
          "value": "Add DNS host"
        },
        {
          "key": "admin.dnsHosts.createSectionHint",
          "value": "Link a web node that already has PowerDNS installed so WebSpaces can use it for DNS zones."
        },
        {
          "key": "admin.dnsHosts.create",
          "value": "Add DNS host"
        },
        {
          "key": "admin.dnsHosts.empty",
          "value": "No DNS hosts configured yet"
        },
        {
          "key": "admin.dnsHosts.emptyHint",
          "value": "Install PowerDNS on a web node, then add a DNS host here."
        },
        {
          "key": "admin.dnsHosts.delegationTitle",
          "value": "Registrar delegation (example zone)"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/dns-hosts",
        "/api/admin/web-nodes"
      ],
      "summary": "**DNS hosts** Manage PowerDNS on FeatherQuilld web nodes for WebSpace DNS zone hosting. Requires permission `admin.webspaces.view`. Key UI: Delete this DNS host?; Add DNS host; No DNS hosts configured yet; Install PowerDNS on a web node, then add a DNS host here.; Registrar delegation (example zone); Delete.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **DNS hosts**.\n3. Direct URL: `/admin/dns-hosts`.\n4. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/feathercloud/issues",
      "area": "admin",
      "file_slug": "admin-feathercloud-issues",
      "source": "src/app/(app)/admin/feathercloud/issues/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Report an Issue",
      "description": "Always filed on featherpanel. Panel logs, every node's diagnostics, and environment details are attached automatically.",
      "title_key": "admin.feathercloud.issues.title",
      "description_key": "admin.feathercloud.issues.subtitle",
      "component": "MythicIssuesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-myfeatherpanel-report-issue",
        "title": "Report an Issue",
        "title_key": "navigation.items.reportIssue",
        "permission": "admin.root",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/feathercloud/issues",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Add a short title",
        "Not linked",
        "What we attach automatically",
        "Describe the bug",
        "Title",
        "Short summary of what went wrong"
      ],
      "ui_labels": [
        {
          "key": "admin.feathercloud.issues.title_required",
          "value": "Add a short title"
        },
        {
          "key": "admin.feathercloud.common.not_linked_title",
          "value": "Not linked"
        },
        {
          "key": "admin.feathercloud.issues.auto_attach_title",
          "value": "What we attach automatically"
        },
        {
          "key": "admin.feathercloud.issues.form_title",
          "value": "Describe the bug"
        },
        {
          "key": "admin.feathercloud.issues.field_title",
          "value": "Title"
        },
        {
          "key": "admin.feathercloud.issues.field_title_placeholder",
          "value": "Short summary of what went wrong"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/data/report",
        "/api/admin/cloud/data/summary"
      ],
      "summary": "**Report an Issue** Always filed on featherpanel. Panel logs, every node's diagnostics, and environment details are attached automatically. Requires permission `admin.root`. Key UI: Add a short title; Not linked; What we attach automatically; Describe the bug; Title; Short summary of what went wrong.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Report an Issue**.\n3. Direct URL: `/admin/feathercloud/issues`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/feathercloud/marketplace",
      "area": "admin",
      "file_slug": "admin-feathercloud-marketplace",
      "source": "src/app/(app)/admin/feathercloud/marketplace/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "FeatherCloud Marketplace",
      "description": "Browse and install extensions, spells, and translations to enhance your FeatherPanel experience",
      "title_key": "admin.marketplace.title",
      "description_key": "admin.marketplace.subtitle",
      "component": "MarketplacePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-myfeatherpanel-marketplace",
        "title": "Panel Marketplace",
        "title_key": "navigation.items.panelMarketplace",
        "permission": "admin.plugins.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/feathercloud/marketplace",
        "inherited": false
      },
      "widget_slugs": [
        "admin-feathercloud-marketplace"
      ],
      "sections": [
        "Plugins",
        "Spells",
        "Translations",
        "About the Marketplace"
      ],
      "features": [
        "Server templates to run specific games and applications on FeatherPanel",
        "Translations for the panel provided by the community and official contributors"
      ],
      "ui_labels": [
        {
          "key": "admin.marketplace.index.plugins.title",
          "value": "Plugins"
        },
        {
          "key": "admin.marketplace.index.spells.title",
          "value": "Spells"
        },
        {
          "key": "admin.marketplace.index.spells.description",
          "value": "Server templates to run specific games and applications on FeatherPanel"
        },
        {
          "key": "admin.marketplace.index.translations.title",
          "value": "Translations"
        },
        {
          "key": "admin.marketplace.index.translations.description",
          "value": "Translations for the panel provided by the community and official contributors"
        },
        {
          "key": "admin.marketplace.index.about.title",
          "value": "About the Marketplace"
        },
        {
          "key": "admin.marketplace.index.about.description",
          "value": "Browse official and community plugins and spells for FeatherPanel. Install what you need from here."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**FeatherCloud Marketplace** Browse and install extensions, spells, and translations to enhance your FeatherPanel experience Sidebar label: “Panel Marketplace”. Requires permission `admin.plugins.view`. Key UI: Server templates to run specific games and applications on FeatherPanel; Translations for the panel provided by the community and official contributors.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Panel Marketplace**, then **FeatherCloud Marketplace**.\n3. Direct URL: `/admin/feathercloud/marketplace`.\n4. User needs permission `admin.plugins.view` (or `admin.root`)."
    },
    {
      "route": "/admin/feathercloud/plugins",
      "area": "admin",
      "file_slug": "admin-feathercloud-plugins",
      "source": "src/app/(app)/admin/feathercloud/plugins/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Feathercloud · Plugins",
      "description": "Mythic / FeatherCloud plugin catalog — browse and install store plugins.",
      "title_key": null,
      "description_key": null,
      "component": "LegacyPluginsMarketplaceRedirect",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Feathercloud · Plugins** Mythic / FeatherCloud plugin catalog — browse and install store plugins.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Feathercloud · Plugins**.\n3. Direct URL: `/admin/feathercloud/plugins`."
    },
    {
      "route": "/admin/feathercloud/products",
      "area": "admin",
      "file_slug": "admin-feathercloud-products",
      "source": "src/app/(app)/admin/feathercloud/products/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Plugins",
      "description": "FeatherPanel plugins from Mythic marketplace browse, review, and install.",
      "title_key": "admin.marketplace.plugins.title",
      "description_key": "admin.marketplace.plugins.subtitle",
      "component": "MythicProductsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [],
      "sections": [
        "Not linked",
        "No plugins found"
      ],
      "features": [
        "This product cannot be installed from the panel.",
        "This plugin is already up to date.",
        "No downloadable release found.",
        "Update failed",
        "Install failed",
        "Select at least one installable or updatable plugin.",
        "Open Cloud Connections",
        "Select actionable",
        "No plugins match your search or price filter.",
        "Free",
        "N/A",
        "MythicalSystems"
      ],
      "ui_labels": [
        {
          "key": "admin.marketplace.plugins.toasts.cannot_install",
          "value": "This product cannot be installed from the panel."
        },
        {
          "key": "admin.marketplace.plugins.toasts.already_up_to_date",
          "value": "This plugin is already up to date."
        },
        {
          "key": "admin.marketplace.plugins.toasts.no_release",
          "value": "No downloadable release found."
        },
        {
          "key": "admin.marketplace.plugins.toasts.updated",
          "value": "Updated {name} to v{version}"
        },
        {
          "key": "admin.marketplace.plugins.toasts.installed",
          "value": "Installed {name}"
        },
        {
          "key": "admin.marketplace.plugins.toasts.update_failed",
          "value": "Update failed"
        },
        {
          "key": "admin.marketplace.plugins.toasts.install_failed",
          "value": "Install failed"
        },
        {
          "key": "admin.marketplace.plugins.toasts.select_actionable",
          "value": "Select at least one installable or updatable plugin."
        },
        {
          "key": "admin.marketplace.plugins.not_linked.title",
          "value": "Not linked"
        },
        {
          "key": "admin.marketplace.plugins.not_linked.action",
          "value": "Open Cloud Connections"
        },
        {
          "key": "admin.marketplace.plugins.select_actionable",
          "value": "Select actionable"
        },
        {
          "key": "admin.marketplace.plugins.empty.title",
          "value": "No plugins found"
        },
        {
          "key": "admin.marketplace.plugins.empty.no_products",
          "value": "Mythic returned no FeatherPanel plugins for this cloud. Re-link Cloud Connections if curl shows products."
        },
        {
          "key": "admin.marketplace.plugins.empty.no_match",
          "value": "No plugins match your search or price filter."
        },
        {
          "key": "admin.marketplace.plugins.labels.free",
          "value": "Free"
        },
        {
          "key": "admin.marketplace.plugins.labels.empty_price",
          "value": "N/A"
        },
        {
          "key": "admin.marketplace.plugins.labels.versions_line",
          "value": "Installed v{installed} · Store v{store}"
        },
        {
          "key": "admin.marketplace.plugins.labels.installed_version",
          "value": "Installed v{version}"
        },
        {
          "key": "admin.marketplace.plugins.labels.latest_version",
          "value": "Latest v{version}"
        },
        {
          "key": "admin.marketplace.plugins.labels.by_author",
          "value": "by {author}"
        },
        {
          "key": "admin.marketplace.plugins.labels.default_seller",
          "value": "MythicalSystems"
        },
        {
          "key": "admin.marketplace.plugins.labels.update",
          "value": "Update"
        },
        {
          "key": "admin.marketplace.plugins.labels.installed",
          "value": "Installed"
        },
        {
          "key": "admin.marketplace.plugins.labels.owned",
          "value": "Owned"
        },
        {
          "key": "admin.marketplace.plugins.labels.no_ratings",
          "value": "No ratings"
        },
        {
          "key": "admin.marketplace.plugins.labels.info",
          "value": "Info"
        },
        {
          "key": "admin.marketplace.plugins.labels.reviews",
          "value": "Reviews"
        },
        {
          "key": "admin.marketplace.plugins.actions.update_to",
          "value": "Update to v{version}"
        },
        {
          "key": "admin.marketplace.plugins.actions.already_up_to_date",
          "value": "Already up to date"
        },
        {
          "key": "admin.marketplace.plugins.actions.install",
          "value": "Install"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/data/store",
        "/api/admin/plugins"
      ],
      "summary": "**Plugins** FeatherPanel plugins from Mythic marketplace browse, review, and install. Key UI: This product cannot be installed from the panel.; This plugin is already up to date.; No downloadable release found.; Update failed; Install failed; Select at least one installable or updatable plugin..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Plugins**.\n3. Direct URL: `/admin/feathercloud/products`."
    },
    {
      "route": "/admin/feathercloud/spells",
      "area": "admin",
      "file_slug": "admin-feathercloud-spells",
      "source": "src/app/(app)/admin/feathercloud/spells/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Spells Marketplace",
      "description": "Browse and install spells from the online repository",
      "title_key": "admin.marketplace.spells.title",
      "description_key": "admin.marketplace.spells.subtitle",
      "component": "SpellsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [
        "admin-feathercloud-spells"
      ],
      "sections": [
        "Install Game Server Egg"
      ],
      "features": [
        "Failed to load reviews",
        "Review saved",
        "Failed to save review",
        "Review deleted",
        "Failed to delete review",
        "Egg JSON downloaded",
        "Download failed",
        "Search",
        "No description available",
        "Install",
        "Pterodactyl Community Egg",
        "Spell Already Installed"
      ],
      "ui_labels": [
        {
          "key": "admin.marketplace.spells.toasts.review_load_failed",
          "value": "Failed to load reviews"
        },
        {
          "key": "admin.marketplace.spells.toasts.review_saved",
          "value": "Review saved"
        },
        {
          "key": "admin.marketplace.spells.toasts.review_save_failed",
          "value": "Failed to save review"
        },
        {
          "key": "admin.marketplace.spells.toasts.review_deleted",
          "value": "Review deleted"
        },
        {
          "key": "admin.marketplace.spells.toasts.review_delete_failed",
          "value": "Failed to delete review"
        },
        {
          "key": "admin.marketplace.spells.toasts.egg_downloaded",
          "value": "Egg JSON downloaded"
        },
        {
          "key": "admin.marketplace.spells.toasts.egg_download_failed",
          "value": "Download failed"
        },
        {
          "key": "admin.marketplace.spells.search_button",
          "value": "Search"
        },
        {
          "key": "admin.marketplace.spells.grid.no_description",
          "value": "No description available"
        },
        {
          "key": "admin.marketplace.spells.grid.install",
          "value": "Install"
        },
        {
          "key": "admin.marketplace.spells.dialog.title",
          "value": "Install Game Server Egg"
        },
        {
          "key": "admin.marketplace.spells.dialog.community_egg_title",
          "value": "Pterodactyl Community Egg"
        },
        {
          "key": "admin.marketplace.spells.dialog.already_installed_title",
          "value": "Spell Already Installed"
        },
        {
          "key": "admin.marketplace.spells.dialog.new_realm_description",
          "value": "Description (optional)"
        },
        {
          "key": "admin.marketplace.spells.dialog.install",
          "value": "Install"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/realms",
        "/api/admin/spells",
        "/api/admin/spells/online/install"
      ],
      "summary": "**Spells Marketplace** Browse and install spells from the online repository Key UI: Failed to load reviews; Review saved; Failed to save review; Review deleted; Failed to delete review; Egg JSON downloaded.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Spells Marketplace**.\n3. Direct URL: `/admin/feathercloud/spells`."
    },
    {
      "route": "/admin/feathercloud/suggestions",
      "area": "admin",
      "file_slug": "admin-feathercloud-suggestions",
      "source": "src/app/(app)/admin/feathercloud/suggestions/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Suggest a New Thing",
      "description": "Ideas land on the Mythic suggestions board for featherpanel (not GitHub until accepted). We attach basic environment details automatically (no logs).",
      "title_key": "admin.feathercloud.suggestions.title",
      "description_key": "admin.feathercloud.suggestions.subtitle",
      "component": "FeatherCloudSuggestionsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-myfeatherpanel-suggest",
        "title": "Suggest a New Thing",
        "title_key": "navigation.items.suggestFeature",
        "permission": "admin.root",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/feathercloud/suggestions",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Add a short title for your idea",
        "Not linked",
        "What we attach automatically",
        "Your idea",
        "Idea title",
        "Short name for the feature"
      ],
      "ui_labels": [
        {
          "key": "admin.feathercloud.suggestions.title_required",
          "value": "Add a short title for your idea"
        },
        {
          "key": "admin.feathercloud.common.not_linked_title",
          "value": "Not linked"
        },
        {
          "key": "admin.feathercloud.suggestions.auto_attach_title",
          "value": "What we attach automatically"
        },
        {
          "key": "admin.feathercloud.suggestions.form_title",
          "value": "Your idea"
        },
        {
          "key": "admin.feathercloud.suggestions.idea_title",
          "value": "Idea title"
        },
        {
          "key": "admin.feathercloud.suggestions.idea_title_placeholder",
          "value": "Short name for the feature"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/data/suggestion",
        "/api/admin/cloud/data/summary"
      ],
      "summary": "**Suggest a New Thing** Ideas land on the Mythic suggestions board for featherpanel (not GitHub until accepted). We attach basic environment details automatically (no logs). Requires permission `admin.root`. Key UI: Add a short title for your idea; Not linked; What we attach automatically; Your idea; Idea title; Short name for the feature.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Suggest a New Thing**.\n3. Direct URL: `/admin/feathercloud/suggestions`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/feathercloud/translations",
      "area": "admin",
      "file_slug": "admin-feathercloud-translations",
      "source": "src/app/(app)/admin/feathercloud/translations/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Translations",
      "description": "Install community locales here, or contribute on Mythic Translate.",
      "title_key": "admin.feathercloud.translations.title",
      "description_key": "admin.feathercloud.translations.subtitle",
      "component": "MythicTranslationsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "No locales",
        "Installed",
        "Base",
        "Completion",
        "Community",
        "Download",
        "Install",
        "Update"
      ],
      "ui_labels": [
        {
          "key": "admin.feathercloud.translations.empty_title",
          "value": "No locales"
        },
        {
          "key": "admin.feathercloud.translations.empty_description",
          "value": "No published locales match your search or filter. Contribute missing languages on Mythic Translate."
        },
        {
          "key": "admin.feathercloud.translations.labels.installed",
          "value": "Installed"
        },
        {
          "key": "admin.feathercloud.translations.labels.base",
          "value": "Base"
        },
        {
          "key": "admin.feathercloud.translations.labels.completion",
          "value": "Completion"
        },
        {
          "key": "admin.feathercloud.translations.labels.keys",
          "value": "{translated} / {total} keys"
        },
        {
          "key": "admin.feathercloud.translations.labels.community",
          "value": "Community"
        },
        {
          "key": "admin.feathercloud.translations.download",
          "value": "Download"
        },
        {
          "key": "admin.feathercloud.translations.install",
          "value": "Install"
        },
        {
          "key": "admin.feathercloud.translations.update",
          "value": "Update"
        }
      ],
      "hooks": [
        "useSlug"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/translations/settings",
        "/api/admin/translations"
      ],
      "summary": "**Translations** Install community locales here, or contribute on Mythic Translate. Key UI: No locales; Installed; Base; Completion; Community; Download.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Translations**.\n3. Direct URL: `/admin/feathercloud/translations`."
    },
    {
      "route": "/admin/featherpanel-ai-agent",
      "area": "admin",
      "file_slug": "admin-featherpanel-ai-agent",
      "source": "src/app/(app)/admin/featherpanel-ai-agent/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "FeatherCloud AI Agent",
      "description": "Configure and customize your AI chatbot assistant",
      "title_key": "admin.featherai_agent.title",
      "description_key": "admin.featherai_agent.subtitle",
      "component": "FeatherAiAgentPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-feathercloud-ai-agent",
        "title": "AI Agent",
        "title_key": "navigation.items.aiAgent",
        "permission": "admin.statistics.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/featherpanel-ai-agent",
        "inherited": false
      },
      "widget_slugs": [
        "admin-ai-agent"
      ],
      "sections": [
        "Chatbot Configuration"
      ],
      "features": [
        "Please wait while we fetch your configuration...",
        "Enable or disable the AI chatbot feature for all users",
        "Select the AI provider to use for chatbot responses",
        "Controls randomness (0.0 = focused, 1.0 = creative)",
        "Maximum tokens in responses (1-8192)",
        "Previous messages in context (1-50)",
        "Custom system prompt to prepend to all messages (max 1000 characters)",
        "User context prompt to append to all messages (max 1000 characters)",
        "Unable to load chatbot settings. Please try again later."
      ],
      "ui_labels": [
        {
          "key": "admin.featherai_agent.config.title",
          "value": "Chatbot Configuration"
        },
        {
          "key": "admin.featherai_agent.config.subtitle",
          "value": "Configure and customize your AI chatbot assistant"
        },
        {
          "key": "admin.featherai_agent.config.loading_settings_description",
          "value": "Please wait while we fetch your configuration..."
        },
        {
          "key": "admin.featherai_agent.config.enable_description",
          "value": "Enable or disable the AI chatbot feature for all users"
        },
        {
          "key": "admin.featherai_agent.config.ai_provider_description",
          "value": "Select the AI provider to use for chatbot responses"
        },
        {
          "key": "admin.featherai_agent.config.temperature_description",
          "value": "Controls randomness (0.0 = focused, 1.0 = creative)"
        },
        {
          "key": "admin.featherai_agent.config.max_tokens_description",
          "value": "Maximum tokens in responses (1-8192)"
        },
        {
          "key": "admin.featherai_agent.config.max_history_description",
          "value": "Previous messages in context (1-50)"
        },
        {
          "key": "admin.featherai_agent.config.system_prompt_core_description",
          "value": "The core system prompt that defines the AI assistant's behavior and capabilities. This is read-only and loaded from the system configuration."
        },
        {
          "key": "admin.featherai_agent.config.custom_system_prompt_description",
          "value": "Custom system prompt to prepend to all messages (max 1000 characters)"
        },
        {
          "key": "admin.featherai_agent.config.custom_user_prompt_description",
          "value": "User context prompt to append to all messages (max 1000 characters)"
        },
        {
          "key": "admin.featherai_agent.config.load_failed_description",
          "value": "Unable to load chatbot settings. Please try again later."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [
        "admin-settings-api"
      ],
      "api_paths": [
        "/api/admin/settings/chatbot/system-prompt"
      ],
      "summary": "**FeatherCloud AI Agent** Configure and customize your AI chatbot assistant Sidebar label: “AI Agent”. Requires permission `admin.statistics.view`. Key UI: Please wait while we fetch your configuration...; Enable or disable the AI chatbot feature for all users; Select the AI provider to use for chatbot responses; Controls randomness (0.0 = focused, 1.0 = creative); Maximum tokens in responses (1-8192); Previous messages in context (1-50).",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **AI Agent**, then **FeatherCloud AI Agent**.\n3. Direct URL: `/admin/featherpanel-ai-agent`.\n4. User needs permission `admin.statistics.view` (or `admin.root`)."
    },
    {
      "route": "/admin/featherpanel-premium",
      "area": "admin",
      "file_slug": "admin-featherpanel-premium",
      "source": "src/app/(app)/admin/featherpanel-premium/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "FeatherPanel Premium",
      "description": "Customize AI branding, powered-by text, and version labels with a Mythic team Premium subscription.",
      "title_key": "admin.featherpanel_premium.title",
      "description_key": "admin.featherpanel_premium.subtitle",
      "component": "FeatherPanelPremiumPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-myfeatherpanel-premium",
        "title": "FeatherPanel Premium",
        "title_key": "navigation.items.featherpanelPremium",
        "permission": "admin.settings.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/featherpanel-premium",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Subscription status",
        "Premium is active",
        "Premium is not active",
        "Link Mythic Cloud first so this panel can read your team's Premium entitlement.",
        "Premium limits are active on Mythic (paste, temp files, and Panel API).",
        "Last checked",
        "Cache valid until",
        "Premium customization",
        "Save changes",
        "Custom sidebar"
      ],
      "ui_labels": [
        {
          "key": "admin.featherpanel_premium.status.card_title",
          "value": "Subscription status"
        },
        {
          "key": "admin.featherpanel_premium.status.active",
          "value": "Premium is active"
        },
        {
          "key": "admin.featherpanel_premium.status.inactive",
          "value": "Premium is not active"
        },
        {
          "key": "admin.featherpanel_premium.status.not_linked",
          "value": "Link Mythic Cloud first so this panel can read your team's Premium entitlement."
        },
        {
          "key": "admin.featherpanel_premium.status.active_desc",
          "value": "Premium is active for {team}. Customize your AI assistant and FeatherPanel branding below."
        },
        {
          "key": "admin.featherpanel_premium.status.higher_limits",
          "value": "Premium limits are active on Mythic (paste, temp files, and Panel API)."
        },
        {
          "key": "admin.featherpanel_premium.status.using_cache",
          "value": "Mythic could not be reached. Using cached Premium entitlement until {expires}."
        },
        {
          "key": "admin.featherpanel_premium.status.checked_at",
          "value": "Last checked"
        },
        {
          "key": "admin.featherpanel_premium.status.expires_at",
          "value": "Cache valid until"
        },
        {
          "key": "admin.featherpanel_premium.status.inactive_desc",
          "value": "Subscribe on Mythic to rename the AI assistant, customize sidebar items/links, hide the powered-by footer, and hide the panel version."
        },
        {
          "key": "admin.featherpanel_premium.customize.card_title",
          "value": "Premium customization"
        },
        {
          "key": "admin.featherpanel_premium.customize.description",
          "value": "These settings apply across the panel for all users. Clearing a field restores the FeatherPanel default."
        },
        {
          "key": "admin.featherpanel_premium.customize.save",
          "value": "Save changes"
        },
        {
          "key": "admin.featherpanel_premium.sidebar.card_title",
          "value": "Custom sidebar"
        }
      ],
      "hooks": [
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/featherpanel-premium"
      ],
      "summary": "**FeatherPanel Premium** Customize AI branding, powered-by text, and version labels with a Mythic team Premium subscription. Requires permission `admin.settings.view`. Key UI: Subscription status; Premium is active; Premium is not active; Link Mythic Cloud first so this panel can read your team's Premium entitlement.; Premium limits are active on Mythic (paste, temp files, and Panel API).; Last checked.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **FeatherPanel Premium**.\n3. Direct URL: `/admin/featherpanel-premium`.\n4. User needs permission `admin.settings.view` (or `admin.root`)."
    },
    {
      "route": "/admin/featherzerotrust",
      "area": "admin",
      "file_slug": "admin-featherzerotrust",
      "source": "src/app/(app)/admin/featherzerotrust/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "FeatherZeroTrust",
      "description": "Advanced threat detection and malicious file scanning for your infrastructure",
      "title_key": "admin.featherzerotrust.title",
      "description_key": "admin.featherzerotrust.description",
      "component": "FeatherZeroTrustPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-featherzerotrust",
        "title": "ZeroTrust Security",
        "title_key": "navigation.items.zeroTrust",
        "permission": "admin.featherzerotrust.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/featherzerotrust",
        "inherited": false
      },
      "widget_slugs": [
        "admin-featherzerotrust"
      ],
      "sections": [],
      "features": [
        "Scanner",
        "Suspicious Hashes",
        "Scan History",
        "Configuration"
      ],
      "ui_labels": [
        {
          "key": "admin.featherzerotrust.tabs.scanner",
          "value": "Scanner"
        },
        {
          "key": "admin.featherzerotrust.tabs.hashes",
          "value": "Suspicious Hashes"
        },
        {
          "key": "admin.featherzerotrust.tabs.logs",
          "value": "Scan History"
        },
        {
          "key": "admin.featherzerotrust.tabs.config",
          "value": "Configuration"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**FeatherZeroTrust** Advanced threat detection and malicious file scanning for your infrastructure Sidebar label: “ZeroTrust Security”. Requires permission `admin.featherzerotrust.view`. Key UI: Scanner; Suspicious Hashes; Scan History; Configuration.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **ZeroTrust Security**, then **FeatherZeroTrust**.\n3. Direct URL: `/admin/featherzerotrust`.\n4. User needs permission `admin.featherzerotrust.view` (or `admin.root`)."
    },
    {
      "route": "/admin/hosting-packages",
      "area": "admin",
      "file_slug": "admin-hosting-packages",
      "source": "src/app/(app)/admin/hosting-packages/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Hosting packages",
      "description": "Named product tiers that prefill WebSpace disk, CPU, memory, and database limits.",
      "title_key": "admin.hostingPackages.title",
      "description_key": "admin.hostingPackages.description",
      "component": "HostingPackagesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "New package",
        "Description",
        "Database limit",
        "Create package",
        "Packages",
        "No hosting packages yet."
      ],
      "ui_labels": [
        {
          "key": "admin.hostingPackages.createTitle",
          "value": "New package"
        },
        {
          "key": "admin.hostingPackages.descriptionLabel",
          "value": "Description"
        },
        {
          "key": "admin.hostingPackages.databaseLimit",
          "value": "Database limit"
        },
        {
          "key": "admin.hostingPackages.create",
          "value": "Create package"
        },
        {
          "key": "admin.hostingPackages.listTitle",
          "value": "Packages"
        },
        {
          "key": "admin.hostingPackages.empty",
          "value": "No hosting packages yet."
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/hosting-packages"
      ],
      "summary": "**Hosting packages** Named product tiers that prefill WebSpace disk, CPU, memory, and database limits. Key UI: New package; Description; Database limit; Create package; Packages; No hosting packages yet..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Hosting packages**.\n3. Direct URL: `/admin/hosting-packages`."
    },
    {
      "route": "/admin/images",
      "area": "admin",
      "file_slug": "admin-images",
      "source": "src/app/(app)/admin/images/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Images",
      "description": "Manage uploaded images for your system.",
      "title_key": "admin.images.title",
      "description_key": "admin.images.subtitle",
      "component": "ImagesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-images",
        "title": "Images",
        "title_key": "navigation.items.images",
        "permission": "admin.images.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/images",
        "inherited": false
      },
      "widget_slugs": [
        "admin-images"
      ],
      "sections": [
        "Upload & Reuse",
        "Library & Audit"
      ],
      "features": [
        "Are you sure you want to delete this image? This action cannot be undone.",
        "Upload Image",
        "Upload a new image to your system.",
        "Edit Image",
        "Image Details"
      ],
      "ui_labels": [
        {
          "key": "admin.images.messages.delete_confirm",
          "value": "Are you sure you want to delete this image? This action cannot be undone."
        },
        {
          "key": "admin.images.create",
          "value": "Upload Image"
        },
        {
          "key": "admin.images.help.upload.title",
          "value": "Upload & Reuse"
        },
        {
          "key": "admin.images.help.upload.description",
          "value": "Upload images to use across the dashboard – e.g., for spells/eggs, banners, logos, or other UI assets you want to reference."
        },
        {
          "key": "admin.images.help.audit.title",
          "value": "Library & Audit"
        },
        {
          "key": "admin.images.help.audit.description",
          "value": "This page is a central place to see what was uploaded to your host by users – like banners and other media – and manage them when needed."
        },
        {
          "key": "admin.images.form.create_title",
          "value": "Upload Image"
        },
        {
          "key": "admin.images.form.create_description",
          "value": "Upload a new image to your system."
        },
        {
          "key": "admin.images.form.edit_title",
          "value": "Edit Image"
        },
        {
          "key": "admin.images.form.edit_description",
          "value": "Edit details for image: {name}"
        },
        {
          "key": "admin.images.form.view_title",
          "value": "Image Details"
        },
        {
          "key": "admin.images.form.view_description",
          "value": "Viewing details for image: {name}"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/images",
        "/api/admin/images/upload"
      ],
      "summary": "**Images** Manage uploaded images for your system. Requires permission `admin.images.view`. Key UI: Are you sure you want to delete this image? This action cannot be undone.; Upload Image; Upload a new image to your system.; Edit Image; Image Details.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Images**.\n3. Direct URL: `/admin/images`.\n4. User needs permission `admin.images.view` (or `admin.root`)."
    },
    {
      "route": "/admin/knowledgebase/categories",
      "area": "admin",
      "file_slug": "admin-knowledgebase-categories",
      "source": "src/app/(app)/admin/knowledgebase/categories/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Knowledgebase Categories",
      "description": "Manage all knowledgebase categories in your system.",
      "title_key": "admin.knowledgebase.categories.title",
      "description_key": "admin.knowledgebase.categories.subtitle",
      "component": "KnowledgeBaseCategoriesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-knowledgebase",
        "title": "Knowledge Base",
        "title_key": "navigation.items.knowledgebase",
        "permission": "admin.knowledgebase.categories.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/knowledgebase/categories",
        "inherited": false
      },
      "widget_slugs": [
        "admin-knowledgebase-categories"
      ],
      "sections": [
        "Knowledge Management",
        "Rich Content",
        "Assets & Tags"
      ],
      "features": [
        "Create Category",
        "Attach files and tags so articles are easier to find.",
        "Fill in the details to create a new knowledgebase category.",
        "Upload File",
        "Description",
        "Edit Category",
        "Save Changes",
        "Created"
      ],
      "ui_labels": [
        {
          "key": "admin.knowledgebase.categories.messages.delete_confirm",
          "value": "Are you sure you want to delete category {name}?"
        },
        {
          "key": "admin.knowledgebase.categories.create",
          "value": "Create Category"
        },
        {
          "key": "admin.knowledgebase.help.managing.title",
          "value": "Knowledge Management"
        },
        {
          "key": "admin.knowledgebase.help.managing.description",
          "value": "Organize your documentation into categories. Each category can have many articles to help your users find what they need."
        },
        {
          "key": "admin.knowledgebase.help.content.title",
          "value": "Rich Content"
        },
        {
          "key": "admin.knowledgebase.help.content.description",
          "value": "Articles support Markdown, allowing you to use formatting, images, and code blocks for clear and helpful guides."
        },
        {
          "key": "admin.knowledgebase.help.attachments.title",
          "value": "Assets & Tags"
        },
        {
          "key": "admin.knowledgebase.help.attachments.description",
          "value": "Attach files and tags so articles are easier to find."
        },
        {
          "key": "admin.knowledgebase.categories.form.create_title",
          "value": "Create Category"
        },
        {
          "key": "admin.knowledgebase.categories.form.create_description",
          "value": "Fill in the details to create a new knowledgebase category."
        },
        {
          "key": "admin.knowledgebase.edit.attachments.upload",
          "value": "Upload File"
        },
        {
          "key": "admin.knowledgebase.categories.form.description",
          "value": "Description"
        },
        {
          "key": "admin.knowledgebase.categories.form.edit_title",
          "value": "Edit Category"
        },
        {
          "key": "admin.knowledgebase.categories.form.edit_description",
          "value": "Edit details for category: {name}"
        },
        {
          "key": "admin.knowledgebase.form.save",
          "value": "Save Changes"
        },
        {
          "key": "admin.roles.labels.created",
          "value": "Created"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/knowledgebase/categories",
        "/api/admin/knowledgebase/upload-icon"
      ],
      "summary": "**Knowledgebase Categories** Manage all knowledgebase categories in your system. Sidebar label: “Knowledge Base”. Requires permission `admin.knowledgebase.categories.view`. Key UI: Create Category; Attach files and tags so articles are easier to find.; Fill in the details to create a new knowledgebase category.; Upload File; Description; Edit Category.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Knowledge Base**, then **Knowledgebase Categories**.\n3. Direct URL: `/admin/knowledgebase/categories`.\n4. User needs permission `admin.knowledgebase.categories.view` (or `admin.root`)."
    },
    {
      "route": "/admin/ldap-providers",
      "area": "admin",
      "file_slug": "admin-ldap-providers",
      "source": "src/app/(app)/admin/ldap-providers/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "LDAP Providers",
      "description": "Configure LDAP/Active Directory authentication providers for direct directory integration",
      "title_key": "admin.ldapProviders.title",
      "description_key": "admin.ldapProviders.description",
      "component": "LdapProvidersPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-ldap-providers",
        "title": "LDAP Providers",
        "title_key": "navigation.items.ldapProviders",
        "permission": "admin.settings.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/ldap-providers",
        "inherited": false
      },
      "widget_slugs": [
        "admin-ldap-providers"
      ],
      "sections": [],
      "features": [
        "Edit",
        "Delete",
        "Leave empty for anonymous bind. Service account recommended for production.",
        "Base DN",
        "Auto-Provision Users",
        "Sync Attributes",
        "Generate Email if Missing",
        "Enable Provider",
        "Save Provider"
      ],
      "ui_labels": [
        {
          "key": "admin.ldapProviders.deleteConfirm",
          "value": "Are you sure you want to delete \"{name}\"?"
        },
        {
          "key": "admin.ldapProviders.edit",
          "value": "Edit"
        },
        {
          "key": "admin.ldapProviders.delete",
          "value": "Delete"
        },
        {
          "key": "admin.ldapProviders.form.bindConfigDescription",
          "value": "Leave empty for anonymous bind. Service account recommended for production."
        },
        {
          "key": "admin.ldapProviders.form.baseDnLabel",
          "value": "Base DN"
        },
        {
          "key": "admin.ldapProviders.form.autoProvisionLabel",
          "value": "Auto-Provision Users"
        },
        {
          "key": "admin.ldapProviders.form.syncAttributesLabel",
          "value": "Sync Attributes"
        },
        {
          "key": "admin.ldapProviders.form.generateEmailLabel",
          "value": "Generate Email if Missing"
        },
        {
          "key": "admin.ldapProviders.form.enableProviderLabel",
          "value": "Enable Provider"
        },
        {
          "key": "admin.ldapProviders.save",
          "value": "Save Provider"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useSsl",
        "useTls"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/ldap/providers"
      ],
      "summary": "**LDAP Providers** Configure LDAP/Active Directory authentication providers for direct directory integration Requires permission `admin.settings.view`. Key UI: Edit; Delete; Leave empty for anonymous bind. Service account recommended for production.; Base DN; Auto-Provision Users; Sync Attributes.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **LDAP Providers**.\n3. Direct URL: `/admin/ldap-providers`.\n4. User needs permission `admin.settings.view` (or `admin.root`)."
    },
    {
      "route": "/admin/locations",
      "area": "admin",
      "file_slug": "admin-locations",
      "source": "src/app/(app)/admin/locations/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Locations",
      "description": "Manage all locations in your system.",
      "title_key": "admin.locations.title",
      "description_key": "admin.locations.subtitle",
      "component": "LocationsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-locations-parent",
        "title": "Locations & Nodes",
        "title_key": "navigation.items.locations_and_nodes",
        "permission": "admin.locations.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/locations",
        "inherited": false
      },
      "widget_slugs": [
        "admin-locations"
      ],
      "sections": [
        "What are Locations?",
        "Examples",
        "Getting Started"
      ],
      "features": [
        "Location type is permanent and was set when this location was created.",
        "Create Location",
        "Create your first location to get started",
        "Edit location",
        "View location nodes",
        "Confirm deletion",
        "Confirm",
        "Cancel deletion",
        "Delete location",
        "Edit Location",
        "Description",
        "Fill in the details to create a new location."
      ],
      "ui_labels": [
        {
          "key": "admin.locations.form.type_immutable_notice",
          "value": "Location type is permanent and was set when this location was created."
        },
        {
          "key": "admin.locations.create",
          "value": "Create Location"
        },
        {
          "key": "admin.locations.create_description",
          "value": "Create your first location to get started"
        },
        {
          "key": "admin.locations.actions.edit",
          "value": "Edit location"
        },
        {
          "key": "admin.locations.actions.view_nodes",
          "value": "View location nodes"
        },
        {
          "key": "admin.locations.actions.confirm_delete",
          "value": "Confirm deletion"
        },
        {
          "key": "common.confirm",
          "value": "Confirm"
        },
        {
          "key": "admin.locations.actions.cancel_delete",
          "value": "Cancel deletion"
        },
        {
          "key": "admin.locations.actions.delete",
          "value": "Delete location"
        },
        {
          "key": "admin.locations.help.what.title",
          "value": "What are Locations?"
        },
        {
          "key": "admin.locations.help.what.description",
          "value": "Locations group nodes by geography or purpose. Keep your infrastructure organized and easy to navigate across regions and data centers."
        },
        {
          "key": "admin.locations.help.examples.title",
          "value": "Examples"
        },
        {
          "key": "admin.locations.help.getting_started.title",
          "value": "Getting Started"
        },
        {
          "key": "admin.locations.form.edit_title",
          "value": "Edit Location"
        },
        {
          "key": "admin.locations.form.edit_description",
          "value": "Edit details for location: {name}"
        },
        {
          "key": "admin.locations.form.description",
          "value": "Description"
        },
        {
          "key": "admin.locations.form.create_title",
          "value": "Create Location"
        },
        {
          "key": "admin.locations.form.create_description",
          "value": "Fill in the details to create a new location."
        },
        {
          "key": "admin.locations.form.type_description",
          "value": "Each location serves one infrastructure type only. The type is permanent and cannot be changed after creation."
        },
        {
          "key": "common.create",
          "value": "Create"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/system/country-codes"
      ],
      "summary": "**Locations** Manage all locations in your system. Sidebar label: “Locations & Nodes”. Requires permission `admin.locations.view`. Key UI: Location type is permanent and was set when this location was created.; Create Location; Create your first location to get started; Edit location; View location nodes; Confirm deletion.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Locations & Nodes**, then **Locations**.\n3. Direct URL: `/admin/locations`.\n4. User needs permission `admin.locations.view` (or `admin.root`)."
    },
    {
      "route": "/admin/logs",
      "area": "admin",
      "file_slug": "admin-logs",
      "source": "src/app/(app)/admin/logs/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Logs",
      "description": "View application and web server logs, plus async runner output",
      "title_key": "admin.logs.title",
      "description_key": "admin.logs.description",
      "component": "AdminLogsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-logs",
        "title": "Log Viewer",
        "title_key": "navigation.items.logViewer",
        "permission": "admin.root",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/logs",
        "inherited": false
      },
      "widget_slugs": [
        "admin-logs"
      ],
      "sections": [],
      "features": [
        "Refresh",
        "Stop Auto",
        "Auto Refresh",
        "Clear Logs",
        "Panel Logs",
        "Wings Nodes",
        "No Wings logs available node may be offline or logs are empty",
        "No node selected"
      ],
      "ui_labels": [
        {
          "key": "admin.logs.actions.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.logs.actions.stop_auto",
          "value": "Stop Auto"
        },
        {
          "key": "admin.logs.actions.auto_refresh",
          "value": "Auto Refresh"
        },
        {
          "key": "admin.logs.actions.clear_logs",
          "value": "Clear Logs"
        },
        {
          "key": "admin.logs.tab_panel",
          "value": "Panel Logs"
        },
        {
          "key": "admin.logs.tab_wings",
          "value": "Wings Nodes"
        },
        {
          "key": "admin.logs.wings_empty",
          "value": "No Wings logs available node may be offline or logs are empty"
        },
        {
          "key": "admin.logs.wings_no_node_status",
          "value": "No node selected"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/log-viewer/clear",
        "/api/admin/log-viewer/files",
        "/api/admin/log-viewer/get",
        "/api/admin/nodes"
      ],
      "summary": "**Logs** View application and web server logs, plus async runner output Sidebar label: “Log Viewer”. Requires permission `admin.root`. Key UI: Refresh; Stop Auto; Auto Refresh; Clear Logs; Panel Logs; Wings Nodes.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Log Viewer**, then **Logs**.\n3. Direct URL: `/admin/logs`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/mail-hosts",
      "area": "admin",
      "file_slug": "admin-mail-hosts",
      "source": "src/app/(app)/admin/mail-hosts/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Mail",
      "description": "Built-in mail is provisioned automatically when you install Mailserver on a web node. Customers get mailboxes, DNS records, and webmail from the WebSpace email page.",
      "title_key": "admin.mailHosts.title",
      "description_key": "admin.mailHosts.description",
      "component": "AdminMailHostsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-mail-hosts",
        "title": "Mail",
        "title_key": "navigation.items.mailHosts",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/mail-hosts",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Delete this mail host? Existing mailboxes may stop working.",
        "Most setups need zero configuration here",
        "Finish mail setup",
        "Active on your nodes",
        "MX host",
        "IMAP",
        "SMTP",
        "Webmail",
        "Delete",
        "External mail providers",
        "No mail hosts yet",
        "Install Mailserver on a web node from the package manager to get started."
      ],
      "ui_labels": [
        {
          "key": "admin.mailHosts.confirmDelete",
          "value": "Delete this mail host? Existing mailboxes may stop working."
        },
        {
          "key": "admin.mailHosts.autoTitle",
          "value": "Most setups need zero configuration here"
        },
        {
          "key": "admin.mailHosts.setupSection",
          "value": "Finish mail setup"
        },
        {
          "key": "admin.mailHosts.builtinSection",
          "value": "Active on your nodes"
        },
        {
          "key": "admin.mailHosts.labels.mx",
          "value": "MX host"
        },
        {
          "key": "admin.mailHosts.labels.imap",
          "value": "IMAP"
        },
        {
          "key": "admin.mailHosts.labels.smtp",
          "value": "SMTP"
        },
        {
          "key": "admin.mailHosts.labels.webmail",
          "value": "Webmail"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.mailHosts.externalSection",
          "value": "External mail providers"
        },
        {
          "key": "admin.mailHosts.empty",
          "value": "No mail hosts yet"
        },
        {
          "key": "admin.mailHosts.emptyHint",
          "value": "Install Mailserver on a web node from the package manager to get started."
        },
        {
          "key": "admin.mailHosts.create",
          "value": "Add mail host"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/mail-hosts",
        "/api/admin/web-nodes"
      ],
      "summary": "**Mail** Built-in mail is provisioned automatically when you install Mailserver on a web node. Customers get mailboxes, DNS records, and webmail from the WebSpace email page. Requires permission `admin.webspaces.view`. Key UI: Delete this mail host? Existing mailboxes may stop working.; Most setups need zero configuration here; Finish mail setup; Active on your nodes; MX host; IMAP.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Mail**.\n3. Direct URL: `/admin/mail-hosts`.\n4. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/mail-templates",
      "area": "admin",
      "file_slug": "admin-mail-templates",
      "source": "src/app/(app)/admin/mail-templates/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Mail Templates",
      "description": "Manage email templates for your system.",
      "title_key": "admin.mail_templates.title",
      "description_key": "admin.mail_templates.subtitle",
      "component": "MailTemplatesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-mail-templates",
        "title": "Mail Templates",
        "title_key": "navigation.items.mailTemplates",
        "permission": "admin.template.email.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/mail-templates",
        "inherited": false
      },
      "widget_slugs": [
        "admin-mail-templates"
      ],
      "sections": [
        "What are Mail Templates?",
        "Mass Email",
        "Legal & Compliance"
      ],
      "features": [
        "Are you sure you want to delete this template? This action cannot be undone.",
        "Template",
        "Edit",
        "Delete",
        "Reusable HTML email layouts for notifications, onboarding, invoices, and more.",
        "Send an HTML email to all users. Use responsibly and ensure SMTP is configured.",
        "Update your Privacy Policy and Terms to reflect bulk messaging usage.",
        "Create Template",
        "Fill in the details to create a new email template.",
        "Template Preview",
        "Edit Template",
        "Send Mass Email"
      ],
      "ui_labels": [
        {
          "key": "admin.mail_templates.messages.delete_confirm",
          "value": "Are you sure you want to delete this template? This action cannot be undone."
        },
        {
          "key": "admin.mail_templates.create",
          "value": "Template"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.mail_templates.help.what_is.title",
          "value": "What are Mail Templates?"
        },
        {
          "key": "admin.mail_templates.help.what_is.description",
          "value": "Reusable HTML email layouts for notifications, onboarding, invoices, and more."
        },
        {
          "key": "admin.mail_templates.help.mass_email.title",
          "value": "Mass Email"
        },
        {
          "key": "admin.mail_templates.help.mass_email.description",
          "value": "Send an HTML email to all users. Use responsibly and ensure SMTP is configured."
        },
        {
          "key": "admin.mail_templates.help.legal.title",
          "value": "Legal & Compliance"
        },
        {
          "key": "admin.mail_templates.help.legal.description",
          "value": "Update your Privacy Policy and Terms to reflect bulk messaging usage."
        },
        {
          "key": "admin.mail_templates.form.create_title",
          "value": "Create Template"
        },
        {
          "key": "admin.mail_templates.form.create_description",
          "value": "Fill in the details to create a new email template."
        },
        {
          "key": "admin.mail_templates.form.preview_title",
          "value": "Template Preview"
        },
        {
          "key": "admin.mail_templates.form.edit_title",
          "value": "Edit Template"
        },
        {
          "key": "admin.mail_templates.form.edit_description",
          "value": "Edit details for template: {name}"
        },
        {
          "key": "admin.mail_templates.form.preview_description",
          "value": "Preview for template: {name}"
        },
        {
          "key": "admin.mail_templates.form.mass_email_title",
          "value": "Send Mass Email"
        },
        {
          "key": "admin.mail_templates.form.mass_email_description",
          "value": "Create and send HTML emails to all users in your system."
        },
        {
          "key": "admin.mail_templates.messages.mass_email_warning_title",
          "value": "Important Notice"
        },
        {
          "key": "admin.mail_templates.form.test_email_title",
          "value": "Send Test Email"
        },
        {
          "key": "admin.mail_templates.form.test_email_description",
          "value": "Send a test email to verify your mail configuration and template rendering."
        },
        {
          "key": "admin.mail_templates.messages.test_email_info_title",
          "value": "Test Email"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/mail-templates",
        "/api/admin/mail-templates/mass-email",
        "/api/admin/mail-templates/test-email"
      ],
      "summary": "**Mail Templates** Manage email templates for your system. Requires permission `admin.template.email.view`. Key UI: Are you sure you want to delete this template? This action cannot be undone.; Template; Edit; Delete; Reusable HTML email layouts for notifications, onboarding, invoices, and more.; Send an HTML email to all users. Use responsibly and ensure SMTP is configured..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Mail Templates**.\n3. Direct URL: `/admin/mail-templates`.\n4. User needs permission `admin.template.email.view` (or `admin.root`)."
    },
    {
      "route": "/admin/mounts",
      "area": "admin",
      "file_slug": "admin-mounts",
      "source": "src/app/(app)/admin/mounts/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Mounts",
      "description": "Define host folders Wings may bind into containers. Link each mount to nodes for Wings allowed_mounts, optionally restrict by spell, then enable per server.",
      "title_key": "admin.mounts.title",
      "description_key": "admin.mounts.description",
      "component": "AdminMountsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-mounts",
        "title": "Mounts",
        "title_key": "navigation.items.mounts",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/mounts",
        "inherited": false
      },
      "widget_slugs": [
        "admin-mounts"
      ],
      "sections": [],
      "features": [
        "Refresh",
        "Create mount",
        "Edit",
        "Delete",
        "New mount",
        "Edit mount",
        "Description",
        "Users can self-attach",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "navigation.items.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.mounts.create",
          "value": "Create mount"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.mounts.drawer_create_title",
          "value": "New mount"
        },
        {
          "key": "admin.mounts.drawer_edit_title",
          "value": "Edit mount"
        },
        {
          "key": "admin.mounts.form.description",
          "value": "Description"
        },
        {
          "key": "admin.mounts.form.user_mountable",
          "value": "Users can self-attach"
        },
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/mounts",
        "/api/admin/nodes",
        "/api/admin/spells"
      ],
      "summary": "**Mounts** Define host folders Wings may bind into containers. Link each mount to nodes for Wings allowed_mounts, optionally restrict by spell, then enable per server. Requires permission `admin.nodes.view`. Key UI: Refresh; Create mount; Edit; Delete; New mount; Edit mount.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Mounts**.\n3. Direct URL: `/admin/mounts`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/nodes",
      "area": "admin",
      "file_slug": "admin-nodes",
      "source": "src/app/(app)/admin/nodes/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Nodes",
      "description": "View and manage all nodes in the system",
      "title_key": "admin.node.title",
      "description_key": "admin.node.description",
      "component": "NodesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-nodes",
        "title": "Nodes",
        "title_key": "navigation.items.nodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/nodes",
        "inherited": false
      },
      "widget_slugs": [
        "admin-nodes"
      ],
      "sections": [
        "What are Nodes?",
        "What can Nodes do?",
        "Nodes and Locations",
        "About Wings (the daemon)"
      ],
      "features": [
        "Create Node",
        "Manage node databases",
        "Mass move servers",
        "Edit node",
        "Confirm Delete",
        "Cancel",
        "Delete node"
      ],
      "ui_labels": [
        {
          "key": "admin.node.create",
          "value": "Create Node"
        },
        {
          "key": "admin.node.actions.databases",
          "value": "Manage node databases"
        },
        {
          "key": "admin.node.mass_transfer.button",
          "value": "Mass move servers"
        },
        {
          "key": "admin.node.actions.edit",
          "value": "Edit node"
        },
        {
          "key": "admin.node.actions.confirm_delete",
          "value": "Confirm Delete"
        },
        {
          "key": "admin.node.actions.cancel_delete",
          "value": "Cancel"
        },
        {
          "key": "admin.node.actions.delete",
          "value": "Delete node"
        },
        {
          "key": "admin.node.help.what.title",
          "value": "What are Nodes?"
        },
        {
          "key": "admin.node.help.what.description",
          "value": "Nodes are machines that run Wings, hosting and managing your containers for deployments."
        },
        {
          "key": "admin.node.help.utility.title",
          "value": "What can Nodes do?"
        },
        {
          "key": "admin.node.help.locations.title",
          "value": "Nodes and Locations"
        },
        {
          "key": "admin.node.help.locations.description",
          "value": "Each node belongs to a location so you can separate infrastructure by region or purpose and deploy predictably."
        },
        {
          "key": "admin.node.help.wings.title",
          "value": "About Wings (the daemon)"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/nodes"
      ],
      "summary": "**Nodes** View and manage all nodes in the system Requires permission `admin.nodes.view`. Key UI: Create Node; Manage node databases; Mass move servers; Edit node; Confirm Delete; Cancel.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Nodes**.\n3. Direct URL: `/admin/nodes`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/nodes/create",
      "area": "admin",
      "file_slug": "admin-nodes-create",
      "source": "src/app/(app)/admin/nodes/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create Node",
      "description": "Fill in the details to create a new node.",
      "title_key": "admin.node.form.create_title",
      "description_key": "admin.node.form.create_description",
      "component": "CreateNodePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-nodes",
        "title": "Nodes",
        "title_key": "navigation.items.nodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-nodes-create"
      ],
      "sections": [],
      "features": [
        "You must confirm the Calagopus daemon choice before creating this node.",
        "Description",
        "A brief description of this node..."
      ],
      "ui_labels": [
        {
          "key": "admin.node.form.daemon_type_confirm_required",
          "value": "You must confirm the Calagopus daemon choice before creating this node."
        },
        {
          "key": "admin.node.form.description",
          "value": "Description"
        },
        {
          "key": "admin.node.form.description_placeholder",
          "value": "A brief description of this node..."
        },
        {
          "key": "admin.node.form.select_location_description",
          "value": "Select a location for this node. Total locations: {total}"
        },
        {
          "key": "admin.locations.form.description",
          "value": "Description"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/nodes",
        "/api/system/country-codes"
      ],
      "summary": "**Create Node** Fill in the details to create a new node. Under sidebar item “Nodes”. Requires permission `admin.nodes.view`. Key UI: You must confirm the Calagopus daemon choice before creating this node.; Description; A brief description of this node....",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes** (parent nav item), then **Create Node**.\n3. Direct URL: `/admin/nodes/create`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/nodes/status",
      "area": "admin",
      "file_slug": "admin-nodes-status",
      "source": "src/app/(app)/admin/nodes/status/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Node Status Dashboard",
      "description": "Real-time monitoring of all infrastructure nodes",
      "title_key": "admin.nodes.title",
      "description_key": "admin.nodes.subtitle",
      "component": "NodeStatusPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-nodes-status",
        "title": "Node Status",
        "title_key": "navigation.items.nodeStatus",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/nodes/status",
        "inherited": false
      },
      "widget_slugs": [
        "admin-nodes-status"
      ],
      "sections": [],
      "features": [
        "No nodes found please make sure to setup a location and a node!",
        "Players Online"
      ],
      "ui_labels": [
        {
          "key": "admin.nodes.no_nodes_description",
          "value": "No nodes found please make sure to setup a location and a node!"
        },
        {
          "key": "dashboard.status.playersOnline",
          "value": "Players Online"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Node Status Dashboard** Real-time monitoring of all infrastructure nodes Sidebar label: “Node Status”. Requires permission `admin.nodes.view`. Key UI: No nodes found please make sure to setup a location and a node!; Players Online.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Node Status**, then **Node Status Dashboard**.\n3. Direct URL: `/admin/nodes/status`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/notifications",
      "area": "admin",
      "file_slug": "admin-notifications",
      "source": "src/app/(app)/admin/notifications/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Notifications",
      "description": "Manage platform-wide announcements and targeted user/server warnings.",
      "title_key": "admin.notifications.title",
      "description_key": "admin.notifications.subtitle",
      "component": "NotificationsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-notifications",
        "title": "Announcements",
        "title_key": "navigation.items.announcements",
        "permission": "admin.notifications.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/notifications",
        "inherited": false
      },
      "widget_slugs": [
        "admin-notifications"
      ],
      "sections": [
        "System Alerts",
        "Rich Content",
        "Targeting & Email",
        "Title"
      ],
      "features": [
        "Are you sure you want to delete this notification?",
        "Create Notification",
        "Create a global announcement or a targeted warning for a user/server.",
        "Edit Notification",
        "Update existing notification details.",
        "Notification Details"
      ],
      "ui_labels": [
        {
          "key": "admin.notifications.messages.delete_confirm",
          "value": "Are you sure you want to delete this notification?"
        },
        {
          "key": "admin.notifications.create",
          "value": "Create Notification"
        },
        {
          "key": "admin.notifications.help.alerts.title",
          "value": "System Alerts"
        },
        {
          "key": "admin.notifications.help.alerts.description",
          "value": "Use global notifications for maintenance announcements, or target a user/server for warnings like high CPU stops."
        },
        {
          "key": "admin.notifications.help.markdown.title",
          "value": "Rich Content"
        },
        {
          "key": "admin.notifications.help.markdown.description",
          "value": "Messages support full Markdown syntax. You can use bold text, lists, and even code blocks to make your announcements clear and engaging."
        },
        {
          "key": "admin.notifications.help.delivery.title",
          "value": "Targeting & Email"
        },
        {
          "key": "admin.notifications.form.create_title",
          "value": "Create Notification"
        },
        {
          "key": "admin.notifications.form.create_description",
          "value": "Create a global announcement or a targeted warning for a user/server."
        },
        {
          "key": "admin.notifications.form.title",
          "value": "Title"
        },
        {
          "key": "admin.notifications.form.edit_title",
          "value": "Edit Notification"
        },
        {
          "key": "admin.notifications.form.edit_description",
          "value": "Update existing notification details."
        },
        {
          "key": "admin.notifications.form.view_title",
          "value": "Notification Details"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/notifications",
        "/api/admin/users"
      ],
      "summary": "**Notifications** Manage platform-wide announcements and targeted user/server warnings. Sidebar label: “Announcements”. Requires permission `admin.notifications.view`. Key UI: Are you sure you want to delete this notification?; Create Notification; Create a global announcement or a targeted warning for a user/server.; Edit Notification; Update existing notification details.; Notification Details.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Announcements**, then **Notifications**.\n3. Direct URL: `/admin/notifications`.\n4. User needs permission `admin.notifications.view` (or `admin.root`)."
    },
    {
      "route": "/admin/oidc-providers",
      "area": "admin",
      "file_slug": "admin-oidc-providers",
      "source": "src/app/(app)/admin/oidc-providers/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "OIDC Providers",
      "description": "Configure one or more OpenID Connect Single Sign-On providers.",
      "title_key": "admin.oidcProviders.title",
      "description_key": "admin.oidcProviders.description",
      "component": "OidcProvidersPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-oidc-providers",
        "title": "OIDC / SSO Providers",
        "title_key": "navigation.items.oidcProviders",
        "permission": "admin.settings.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/oidc-providers",
        "inherited": false
      },
      "widget_slugs": [
        "admin-oidc-providers"
      ],
      "sections": [],
      "features": [
        "Use this URL when configuring your OIDC provider",
        "Edit",
        "Delete",
        "Enabled",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "admin.oidcProviders.deleteConfirm",
          "value": "Delete provider \"{name}\"?"
        },
        {
          "key": "admin.oidcProviders.callbackUrlDescription",
          "value": "Use this URL when configuring your OIDC provider"
        },
        {
          "key": "admin.oidcProviders.edit",
          "value": "Edit"
        },
        {
          "key": "admin.oidcProviders.delete",
          "value": "Delete"
        },
        {
          "key": "admin.oidcProviders.form.enabledLabel",
          "value": "Enabled"
        },
        {
          "key": "admin.oidcProviders.save",
          "value": "Save"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/oidc/providers"
      ],
      "summary": "**OIDC Providers** Configure one or more OpenID Connect Single Sign-On providers. Sidebar label: “OIDC / SSO Providers”. Requires permission `admin.settings.view`. Key UI: Use this URL when configuring your OIDC provider; Edit; Delete; Enabled; Save.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **OIDC / SSO Providers**, then **OIDC Providers**.\n3. Direct URL: `/admin/oidc-providers`.\n4. User needs permission `admin.settings.view` (or `admin.root`)."
    },
    {
      "route": "/admin/plugins",
      "area": "admin",
      "file_slug": "admin-plugins",
      "source": "src/app/(app)/admin/plugins/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Plugins",
      "description": "Manage installed plugins and their configurations",
      "title_key": "admin.plugins.title",
      "description_key": "admin.plugins.description",
      "component": "PluginsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-plugins",
        "title": "Plugins",
        "title_key": "navigation.items.plugins",
        "permission": "admin.plugins.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/plugins",
        "inherited": false
      },
      "widget_slugs": [
        "admin-plugins"
      ],
      "sections": [
        "Plugin Configuration",
        "Frontend Visibility",
        "Server Sidebar Spell Restrictions",
        "Uninstall Plugin",
        "Install From URL"
      ],
      "features": [
        "Check Updates",
        "Upload Plugin (.fpa)",
        "Install URL",
        "Store",
        "Store unavailable",
        "Cloud Connections",
        "Refresh",
        "No Plugins Installed",
        "No plugins are currently installed on your system.",
        "Update",
        "No description available",
        "Configure"
      ],
      "ui_labels": [
        {
          "key": "admin.plugins.actions.check_updates",
          "value": "Check Updates"
        },
        {
          "key": "admin.plugins.actions.update_all",
          "value": "Update All ({count})"
        },
        {
          "key": "admin.plugins.actions.upload",
          "value": "Upload Plugin (.fpa)"
        },
        {
          "key": "admin.plugins.actions.install_url",
          "value": "Install URL"
        },
        {
          "key": "admin.plugins.actions.store",
          "value": "Store"
        },
        {
          "key": "admin.plugins.stats.store_unavailable",
          "value": "Store unavailable"
        },
        {
          "key": "admin.plugins.actions.cloud_connections",
          "value": "Cloud Connections"
        },
        {
          "key": "admin.plugins.actions.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.plugins.grid.empty_title",
          "value": "No Plugins Installed"
        },
        {
          "key": "admin.plugins.grid.empty_description",
          "value": "No plugins are currently installed on your system."
        },
        {
          "key": "admin.plugins.actions.update",
          "value": "Update"
        },
        {
          "key": "admin.plugins.grid.no_description",
          "value": "No description available"
        },
        {
          "key": "admin.plugins.actions.configure",
          "value": "Configure"
        },
        {
          "key": "admin.plugins.drawers.config.title",
          "value": "Plugin Configuration"
        },
        {
          "key": "admin.plugins.drawers.config.description",
          "value": "Configure settings for {plugin}"
        },
        {
          "key": "admin.plugins.drawers.config.settings_title",
          "value": "Plugin Settings"
        },
        {
          "key": "admin.plugins.actions.save_settings",
          "value": "Save All Settings"
        },
        {
          "key": "admin.plugins.drawers.config.visibility.title",
          "value": "Frontend Visibility"
        },
        {
          "key": "admin.plugins.drawers.config.visibility.description",
          "value": "Hide plugin sidebar items, routes, pages, widgets, and UI-pack entries without editing plugin files."
        },
        {
          "key": "admin.plugins.drawers.config.visibility.empty",
          "value": "No frontend items found for this plugin."
        },
        {
          "key": "admin.plugins.drawers.config.spell_restrictions.title",
          "value": "Server Sidebar Spell Restrictions"
        },
        {
          "key": "admin.plugins.drawers.config.spell_restrictions.save",
          "value": "Save Spell Restrictions"
        },
        {
          "key": "admin.plugins.actions.close",
          "value": "Close"
        },
        {
          "key": "admin.plugins.dialogs.uninstall.title",
          "value": "Uninstall Plugin"
        },
        {
          "key": "admin.plugins.dialogs.uninstall.description",
          "value": "Are you sure you want to uninstall {plugin}?"
        },
        {
          "key": "admin.plugins.actions.cancel",
          "value": "Cancel"
        },
        {
          "key": "admin.plugins.actions.uninstall",
          "value": "Uninstall"
        },
        {
          "key": "admin.plugins.dialogs.install_url.title",
          "value": "Install From URL"
        },
        {
          "key": "admin.plugins.dialogs.install_url.url_label",
          "value": "Plugin URL"
        },
        {
          "key": "admin.plugins.dialogs.install_url.url_description",
          "value": "Enter the direct URL to a FeatherPanel plugin file (.fpa)."
        },
        {
          "key": "admin.plugins.dialogs.install_url.security_warning_title",
          "value": "Security Warning"
        },
        {
          "key": "admin.plugins.actions.install",
          "value": "Install"
        }
      ],
      "hooks": [
        "usePluginRoutes",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/cloud/data/store",
        "/api/admin/plugins",
        "/api/admin/plugins/online/install",
        "/api/admin/plugins/upload/install",
        "/api/admin/plugins/upload/install-url",
        "/api/admin/spells"
      ],
      "summary": "**Plugins** Manage installed plugins and their configurations Requires permission `admin.plugins.view`. Key UI: Check Updates; Upload Plugin (.fpa); Install URL; Store; Store unavailable; Cloud Connections.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Plugins**.\n3. Direct URL: `/admin/plugins`.\n4. User needs permission `admin.plugins.view` (or `admin.root`)."
    },
    {
      "route": "/admin/pterodactyl-importer",
      "area": "admin",
      "file_slug": "admin-pterodactyl-importer",
      "source": "src/app/(app)/admin/pterodactyl-importer/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Pterodactyl Importer",
      "description": "Import servers, users, and nodes from Pterodactyl into FeatherPanel. Follow the steps below.",
      "title_key": "admin.pterodactyl_importer.title",
      "description_key": "admin.pterodactyl_importer.description",
      "component": "PterodactylImporterPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-pterodactyl-importer",
        "title": "Pterodactyl Importer",
        "title_key": "navigation.items.pterodactylImporter",
        "permission": "admin.databases.manage",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/pterodactyl-importer",
        "inherited": false
      },
      "widget_slugs": [
        "admin-pterodactyl-importer"
      ],
      "sections": [
        "System Requirements",
        "1. Helper Installation",
        "2. Authentication",
        "3. Configuration",
        "4. Execution",
        "Help & Support",
        "Migration Documentation",
        "MythicalSystems Discord",
        "Excluded Data",
        "Create New API Key"
      ],
      "features": [
        "Failed to load API key details",
        "Failed to fetch API keys",
        "API Key Name",
        "API key created successfully!",
        "Failed to create API key",
        "Cheat code activated: Prerequisites bypassed!",
        "Ensure your environment meets these criteria before starting the migration.",
        "Refresh",
        "Requirements Not Met",
        "Installation Status",
        "Migration Workflow",
        "Execute the following command to install the necessary migration tools:"
      ],
      "ui_labels": [
        {
          "key": "admin.pterodactyl_importer.toasts.failed_load_key",
          "value": "Failed to load API key details"
        },
        {
          "key": "admin.pterodactyl_importer.toasts.failed_fetch_keys",
          "value": "Failed to fetch API keys"
        },
        {
          "key": "admin.pterodactyl_importer.create_key.name_label",
          "value": "API Key Name"
        },
        {
          "key": "admin.pterodactyl_importer.toasts.key_created",
          "value": "API key created successfully!"
        },
        {
          "key": "admin.pterodactyl_importer.toasts.key_create_failed",
          "value": "Failed to create API key"
        },
        {
          "key": "admin.pterodactyl_importer.toasts.cheat_code_activated",
          "value": "Cheat code activated: Prerequisites bypassed!"
        },
        {
          "key": "admin.pterodactyl_importer.prerequisites.title",
          "value": "System Requirements"
        },
        {
          "key": "admin.pterodactyl_importer.prerequisites.description",
          "value": "Ensure your environment meets these criteria before starting the migration."
        },
        {
          "key": "admin.rate_limits.actions.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.pterodactyl_importer.prerequisites.failed_title",
          "value": "Requirements Not Met"
        },
        {
          "key": "admin.pterodactyl_importer.prerequisites.items.panel_status",
          "value": "Installation Status"
        },
        {
          "key": "admin.pterodactyl_importer.cli.overview",
          "value": "Migration Workflow"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step1.title",
          "value": "1. Helper Installation"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step1.description",
          "value": "Execute the following command to install the necessary migration tools:"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step2.title",
          "value": "2. Authentication"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step2.description",
          "value": "Generate or select an API key to authorize the migration agent."
        },
        {
          "key": "admin.pterodactyl_importer.cli.step2.select_label",
          "value": "API Key Selection"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step3.title",
          "value": "3. Configuration"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step3.description",
          "value": "Initialize the CLI with your instance credentials:"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step4.title",
          "value": "4. Execution"
        },
        {
          "key": "admin.pterodactyl_importer.cli.step4.description",
          "value": "Begin the data import process:"
        },
        {
          "key": "admin.pterodactyl_importer.help.title",
          "value": "Help & Support"
        },
        {
          "key": "admin.pterodactyl_importer.help.description",
          "value": "Need help with the migration process? Check out our documentation or join our Discord community."
        },
        {
          "key": "admin.pterodactyl_importer.help.documentation.title",
          "value": "Migration Documentation"
        },
        {
          "key": "admin.pterodactyl_importer.help.documentation.description",
          "value": "Complete guide and tutorial for migrating from Pterodactyl"
        },
        {
          "key": "admin.pterodactyl_importer.help.discord.title",
          "value": "MythicalSystems Discord"
        },
        {
          "key": "admin.pterodactyl_importer.help.discord.description",
          "value": "Get support from our community and team"
        },
        {
          "key": "admin.pterodactyl_importer.info.title",
          "value": "Excluded Data"
        },
        {
          "key": "admin.pterodactyl_importer.info.description",
          "value": "The following items are excluded from migration to ensure a clean import."
        },
        {
          "key": "admin.pterodactyl_importer.create_key.title",
          "value": "Create New API Key"
        },
        {
          "key": "admin.pterodactyl_importer.create_key.description",
          "value": "Create a new API key for the Pterodactyl Migration Agent. This key will be used to authenticate the migration agent with your FeatherPanel instance."
        },
        {
          "key": "admin.pterodactyl_importer.create_key.create",
          "value": "Create API Key"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/pterodactyl-importer/prerequisites",
        "/api/user/api-clients"
      ],
      "summary": "**Pterodactyl Importer** Import servers, users, and nodes from Pterodactyl into FeatherPanel. Follow the steps below. Requires permission `admin.databases.manage`. Key UI: Failed to load API key details; Failed to fetch API keys; API Key Name; API key created successfully!; Failed to create API key; Cheat code activated: Prerequisites bypassed!.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Pterodactyl Importer**.\n3. Direct URL: `/admin/pterodactyl-importer`.\n4. User needs permission `admin.databases.manage` (or `admin.root`)."
    },
    {
      "route": "/admin/rate-limits",
      "area": "admin",
      "file_slug": "admin-rate-limits",
      "source": "src/app/(app)/admin/rate-limits/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Rate Limits",
      "description": "Configure rate limits for API routes to prevent abuse.",
      "title_key": "admin.rate_limits.title",
      "description_key": "admin.rate_limits.description",
      "component": "RateLimitsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-rate-limits",
        "title": "Rate Limits",
        "title_key": "navigation.items.rateLimits",
        "permission": "admin.settings.view",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/rate-limits",
        "inherited": false
      },
      "widget_slugs": [
        "admin-rate-limits"
      ],
      "sections": [
        "Global Rate Limiting",
        "Route Configuration"
      ],
      "features": [
        "Refresh",
        "Save All",
        "Rate limiting is enabled globally. Individual routes can still be disabled.",
        "Rate limiting is disabled globally. No rate limits will be applied.",
        "Global Status",
        "Toggle standard rate limiting across the entire application.",
        "Manage rate limits for individual API routes.",
        "Route",
        "Status",
        "/s",
        "/m",
        "/h"
      ],
      "ui_labels": [
        {
          "key": "admin.rate_limits.messages.reset_confirm",
          "value": "Reset configuration for {route}?"
        },
        {
          "key": "admin.rate_limits.actions.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.rate_limits.actions.save_all",
          "value": "Save All"
        },
        {
          "key": "admin.rate_limits.global.title",
          "value": "Global Rate Limiting"
        },
        {
          "key": "admin.rate_limits.global.description_enabled",
          "value": "Rate limiting is enabled globally. Individual routes can still be disabled."
        },
        {
          "key": "admin.rate_limits.global.description_disabled",
          "value": "Rate limiting is disabled globally. No rate limits will be applied."
        },
        {
          "key": "admin.rate_limits.global.status_label",
          "value": "Global Status"
        },
        {
          "key": "admin.rate_limits.global.status_description",
          "value": "Toggle standard rate limiting across the entire application."
        },
        {
          "key": "admin.rate_limits.routes.title",
          "value": "Route Configuration"
        },
        {
          "key": "admin.rate_limits.routes.description",
          "value": "Manage rate limits for individual API routes."
        },
        {
          "key": "admin.rate_limits.routes.table.route",
          "value": "Route"
        },
        {
          "key": "admin.rate_limits.routes.table.status",
          "value": "Status"
        },
        {
          "key": "admin.rate_limits.routes.table.per_second",
          "value": "/s"
        },
        {
          "key": "admin.rate_limits.routes.table.per_minute",
          "value": "/m"
        },
        {
          "key": "admin.rate_limits.routes.table.per_hour",
          "value": "/h"
        },
        {
          "key": "admin.rate_limits.routes.table.per_day",
          "value": "/d"
        },
        {
          "key": "admin.rate_limits.routes.table.namespace",
          "value": "Namespace"
        },
        {
          "key": "admin.rate_limits.routes.table.actions",
          "value": "Actions"
        },
        {
          "key": "admin.rate_limits.routes.table.empty",
          "value": "No rate limits configured."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/rate-limits",
        "/api/admin/rate-limits/bulk",
        "/api/admin/rate-limits/global"
      ],
      "summary": "**Rate Limits** Configure rate limits for API routes to prevent abuse. Requires permission `admin.settings.view`. Key UI: Refresh; Save All; Rate limiting is enabled globally. Individual routes can still be disabled.; Rate limiting is disabled globally. No rate limits will be applied.; Global Status; Toggle standard rate limiting across the entire application..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Rate Limits**.\n3. Direct URL: `/admin/rate-limits`.\n4. User needs permission `admin.settings.view` (or `admin.root`)."
    },
    {
      "route": "/admin/realms",
      "area": "admin",
      "file_slug": "admin-realms",
      "source": "src/app/(app)/admin/realms/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Realms",
      "description": "Manage all realms in your system",
      "title_key": "admin.realms.title",
      "description_key": "admin.realms.subtitle",
      "component": "RealmsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-realms-parent",
        "title": "Realms (Nests)",
        "title_key": "navigation.items.realms",
        "permission": "admin.realms.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/realms",
        "inherited": false
      },
      "widget_slugs": [
        "admin-realms"
      ],
      "sections": [
        "What are Realms?",
        "Organize your spells"
      ],
      "features": [
        "Are you sure you want to delete this realm?",
        "Create Realm",
        "Fill in the details to create a new realm",
        "Description",
        "Edit Realm",
        "Edit details for this realm"
      ],
      "ui_labels": [
        {
          "key": "admin.realms.messages.delete_confirm",
          "value": "Are you sure you want to delete this realm?"
        },
        {
          "key": "admin.realms.create",
          "value": "Create Realm"
        },
        {
          "key": "admin.realms.help.what_are_realms.title",
          "value": "What are Realms?"
        },
        {
          "key": "admin.realms.help.what_are_realms.description",
          "value": "Realms are categories for your spells (known as 'eggs' in Pterodactyl's terms). Pterodactyl calls them nests; we call them realms because it's just better."
        },
        {
          "key": "admin.realms.help.organize_spells.title",
          "value": "Organize your spells"
        },
        {
          "key": "admin.realms.form.create_title",
          "value": "Create Realm"
        },
        {
          "key": "admin.realms.form.create_description",
          "value": "Fill in the details to create a new realm"
        },
        {
          "key": "admin.realms.form.description",
          "value": "Description"
        },
        {
          "key": "admin.realms.form.edit_title",
          "value": "Edit Realm"
        },
        {
          "key": "admin.realms.form.edit_description",
          "value": "Edit details for this realm"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/realms"
      ],
      "summary": "**Realms** Manage all realms in your system Sidebar label: “Realms (Nests)”. Requires permission `admin.realms.view`. Key UI: Are you sure you want to delete this realm?; Create Realm; Fill in the details to create a new realm; Description; Edit Realm; Edit details for this realm.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Realms (Nests)**, then **Realms**.\n3. Direct URL: `/admin/realms`.\n4. User needs permission `admin.realms.view` (or `admin.root`)."
    },
    {
      "route": "/admin/roles",
      "area": "admin",
      "file_slug": "admin-roles",
      "source": "src/app/(app)/admin/roles/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Roles & Permissions",
      "description": "Manage roles and their associated permissions.",
      "title_key": "admin.roles.title",
      "description_key": "admin.roles.subtitle",
      "component": "RolesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-roles",
        "title": "Roles",
        "title_key": "navigation.items.roles",
        "permission": "admin.roles.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/roles",
        "inherited": false
      },
      "widget_slugs": [
        "admin-roles"
      ],
      "sections": [
        "Managing Roles",
        "Granular Permissions",
        "Security First"
      ],
      "features": [
        "Are you sure you want to delete this role?",
        "Create Role",
        "Your role",
        "Edit",
        "Duplicate"
      ],
      "ui_labels": [
        {
          "key": "admin.roles.delete_confirm",
          "value": "Are you sure you want to delete this role?"
        },
        {
          "key": "admin.roles.create",
          "value": "Create Role"
        },
        {
          "key": "admin.roles.labels.your_role",
          "value": "Your role"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "admin.roles.actions.duplicate",
          "value": "Duplicate"
        },
        {
          "key": "admin.roles.help.managing.title",
          "value": "Managing Roles"
        },
        {
          "key": "admin.roles.help.permissions.title",
          "value": "Granular Permissions"
        },
        {
          "key": "admin.roles.help.permissions.description",
          "value": "Each role can have an unlimited number of permission nodes. This allows for precise control over what each user group can see and do within the panel."
        },
        {
          "key": "admin.roles.help.security.title",
          "value": "Security First"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets",
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/permissions",
        "/api/admin/roles"
      ],
      "summary": "**Roles & Permissions** Manage roles and their associated permissions. Sidebar label: “Roles”. Requires permission `admin.roles.view`. Key UI: Are you sure you want to delete this role?; Create Role; Your role; Edit; Duplicate.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Roles**, then **Roles & Permissions**.\n3. Direct URL: `/admin/roles`.\n4. User needs permission `admin.roles.view` (or `admin.root`)."
    },
    {
      "route": "/admin/roles/create",
      "area": "admin",
      "file_slug": "admin-roles-create",
      "source": "src/app/(app)/admin/roles/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Roles · Create",
      "description": "Create form for a new resource. Related to: Roles.",
      "title_key": null,
      "description_key": null,
      "component": "CreateRolePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-roles",
        "title": "Roles",
        "title_key": "navigation.items.roles",
        "permission": "admin.roles.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/roles",
        "inherited": true
      },
      "widget_slugs": [
        "admin-roles-create"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets",
        "useRoleEditor"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/roles"
      ],
      "summary": "**Roles · Create** Create form for a new resource. Related to: Roles. Under sidebar item “Roles”. Requires permission `admin.roles.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Roles** (parent nav item), then **Roles · Create**.\n3. Direct URL: `/admin/roles/create`.\n4. User needs permission `admin.roles.view` (or `admin.root`)."
    },
    {
      "route": "/admin/servers",
      "area": "admin",
      "file_slug": "admin-servers",
      "source": "src/app/(app)/admin/servers/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Servers",
      "description": "Manage all servers in your system.",
      "title_key": "admin.servers.title",
      "description_key": "admin.servers.description",
      "component": "ServersPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-servers-parent",
        "title": "Servers",
        "title_key": "navigation.items.servers",
        "permission": "admin.servers.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/servers",
        "inherited": false
      },
      "widget_slugs": [
        "admin-servers"
      ],
      "sections": [
        "Managing Servers",
        "Relationships",
        "Resources & Limits",
        "Tips",
        "Server Details"
      ],
      "features": [
        "Create Server",
        "View details",
        "Edit server",
        "Transfer server",
        "Delete server",
        "Details",
        "Resources",
        "Relationships",
        "UUID:",
        "Short UUID:",
        "Created:",
        "Updated:"
      ],
      "ui_labels": [
        {
          "key": "admin.servers.create",
          "value": "Create Server"
        },
        {
          "key": "admin.servers.actions.view",
          "value": "View details"
        },
        {
          "key": "admin.servers.actions.edit",
          "value": "Edit server"
        },
        {
          "key": "admin.servers.actions.transfer",
          "value": "Transfer server"
        },
        {
          "key": "admin.servers.actions.delete",
          "value": "Delete server"
        },
        {
          "key": "admin.servers.help.managing.title",
          "value": "Managing Servers"
        },
        {
          "key": "admin.servers.help.managing.description",
          "value": "View, create, edit, and delete servers. Use search and pagination to quickly navigate large fleets."
        },
        {
          "key": "admin.servers.help.relationships.title",
          "value": "Relationships"
        },
        {
          "key": "admin.servers.help.relationships.description",
          "value": "Each server belongs to an Owner (user), runs on a Node (machine), and is grouped by Realm & Spell (template/runtime)."
        },
        {
          "key": "admin.servers.help.resources.title",
          "value": "Resources & Limits"
        },
        {
          "key": "admin.servers.help.resources.description",
          "value": "Resource usage (RAM/CPU/Disk) and limits (allocations, databases, backups) are summarized per server."
        },
        {
          "key": "admin.servers.help.tips.title",
          "value": "Tips"
        },
        {
          "key": "admin.servers.details.title",
          "value": "Server Details"
        },
        {
          "key": "admin.servers.details.subtitle",
          "value": "Viewing details for server: {name}"
        },
        {
          "key": "admin.servers.details.tabs.details",
          "value": "Details"
        },
        {
          "key": "admin.servers.details.tabs.resources",
          "value": "Resources"
        },
        {
          "key": "admin.servers.details.tabs.relationships",
          "value": "Relationships"
        },
        {
          "key": "admin.servers.details.labels.uuid",
          "value": "UUID:"
        },
        {
          "key": "admin.servers.details.labels.short_uuid",
          "value": "Short UUID:"
        },
        {
          "key": "admin.servers.details.labels.created",
          "value": "Created:"
        },
        {
          "key": "admin.servers.details.labels.updated",
          "value": "Updated:"
        },
        {
          "key": "admin.servers.details.labels.image",
          "value": "Image:"
        },
        {
          "key": "admin.servers.details.labels.startup",
          "value": "Startup:"
        },
        {
          "key": "admin.servers.details.labels.skip_scripts",
          "value": "Skip Scripts:"
        },
        {
          "key": "admin.servers.details.labels.oom_disabled",
          "value": "OOM Disabled:"
        },
        {
          "key": "admin.servers.details.labels.memory",
          "value": "Memory:"
        },
        {
          "key": "admin.servers.details.labels.swap",
          "value": "Swap:"
        },
        {
          "key": "admin.servers.details.labels.disk",
          "value": "Disk:"
        },
        {
          "key": "admin.servers.details.labels.cpu",
          "value": "CPU:"
        },
        {
          "key": "admin.servers.details.labels.io",
          "value": "IO:"
        },
        {
          "key": "admin.servers.details.labels.allocation_limit",
          "value": "Allocation Limit:"
        },
        {
          "key": "admin.servers.details.labels.database_limit",
          "value": "Database Limit:"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/nodes",
        "/api/admin/realms",
        "/api/admin/servers",
        "/api/admin/spells",
        "/api/admin/users"
      ],
      "summary": "**Servers** Manage all servers in your system. Requires permission `admin.servers.view`. Key UI: Create Server; View details; Edit server; Transfer server; Delete server; Details.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Servers**.\n3. Direct URL: `/admin/servers`.\n4. User needs permission `admin.servers.view` (or `admin.root`)."
    },
    {
      "route": "/admin/servers/create",
      "area": "admin",
      "file_slug": "admin-servers-create",
      "source": "src/app/(app)/admin/servers/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create Server",
      "description": "Add a new server to the panel.",
      "title_key": "admin.servers.form.create_title",
      "description_key": "admin.servers.form.create_subtitle",
      "component": "CreateServerPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-servers-parent",
        "title": "Servers",
        "title_key": "navigation.items.servers",
        "permission": "admin.servers.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/servers",
        "inherited": true
      },
      "widget_slugs": [
        "admin-servers-create"
      ],
      "sections": [],
      "features": [
        "Owner & Core Details",
        "Set the server owner and basic information",
        "Location & Resources",
        "Choose where the server will be deployed",
        "Application Setup",
        "Configure the realm, spell, and Docker image",
        "Resource Limits",
        "Define memory, CPU, disk, and other resource constraints",
        "Feature Limits",
        "Set limits for databases, allocations, and backups",
        "Review & Create",
        "Review your configuration and create the server"
      ],
      "ui_labels": [
        {
          "key": "admin.servers.form.wizard.step1_title",
          "value": "Owner & Core Details"
        },
        {
          "key": "admin.servers.form.wizard.step1_subtitle",
          "value": "Set the server owner and basic information"
        },
        {
          "key": "admin.servers.form.wizard.step2_title",
          "value": "Location & Resources"
        },
        {
          "key": "admin.servers.form.wizard.step2_subtitle",
          "value": "Choose where the server will be deployed"
        },
        {
          "key": "admin.servers.form.wizard.step3_title",
          "value": "Application Setup"
        },
        {
          "key": "admin.servers.form.wizard.step3_subtitle",
          "value": "Configure the realm, spell, and Docker image"
        },
        {
          "key": "admin.servers.form.wizard.step4_title",
          "value": "Resource Limits"
        },
        {
          "key": "admin.servers.form.wizard.step4_subtitle",
          "value": "Define memory, CPU, disk, and other resource constraints"
        },
        {
          "key": "admin.servers.form.wizard.step5_title",
          "value": "Feature Limits"
        },
        {
          "key": "admin.servers.form.wizard.step5_subtitle",
          "value": "Set limits for databases, allocations, and backups"
        },
        {
          "key": "admin.servers.form.wizard.step6_title",
          "value": "Review & Create"
        },
        {
          "key": "admin.servers.form.wizard.step6_subtitle",
          "value": "Review your configuration and create the server"
        },
        {
          "key": "admin.servers.form.infra_prerequisite_toast",
          "value": "Add at least one game location and one node before continuing."
        },
        {
          "key": "admin.servers.form.infra_prerequisite_title",
          "value": "Infrastructure required"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/allocations",
        "/api/admin/locations",
        "/api/admin/nodes",
        "/api/admin/realms",
        "/api/admin/servers",
        "/api/admin/settings",
        "/api/admin/spells",
        "/api/admin/users"
      ],
      "summary": "**Create Server** Add a new server to the panel. Under sidebar item “Servers”. Requires permission `admin.servers.view`. Key UI: Owner & Core Details; Set the server owner and basic information; Location & Resources; Choose where the server will be deployed; Application Setup; Configure the realm, spell, and Docker image.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Servers** (parent nav item), then **Create Server**.\n3. Direct URL: `/admin/servers/create`.\n4. User needs permission `admin.servers.view` (or `admin.root`)."
    },
    {
      "route": "/admin/settings",
      "area": "admin",
      "file_slug": "admin-settings",
      "source": "src/app/(app)/admin/settings/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Settings",
      "description": "Manage your panel settings.",
      "title_key": "admin.settings.title",
      "description_key": "admin.settings.subtitle",
      "component": "SettingsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-settings",
        "title": "Settings",
        "title_key": "navigation.items.settings",
        "permission": "admin.root",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/settings",
        "inherited": false
      },
      "widget_slugs": [
        "admin-settings"
      ],
      "sections": [
        "Test Email Configuration"
      ],
      "features": [
        "Upload Logs",
        "Save Changes",
        "Send Test Email",
        "Logs were uploaded. You can share these URLs with support."
      ],
      "ui_labels": [
        {
          "key": "admin.settings.actions.upload_logs",
          "value": "Upload Logs"
        },
        {
          "key": "admin.settings.actions.save",
          "value": "Save Changes"
        },
        {
          "key": "admin.settings.email_test.title",
          "value": "Test Email Configuration"
        },
        {
          "key": "admin.settings.email_test.description",
          "value": "Send a test email to your account to verify SMTP settings are working correctly. Required by some providers like SendGrid."
        },
        {
          "key": "admin.settings.email_test.button",
          "value": "Send Test Email"
        },
        {
          "key": "admin.settings.logs.dialog_description",
          "value": "Logs were uploaded. You can share these URLs with support."
        }
      ],
      "hooks": [
        "useDemoMode",
        "usePluginWidgets"
      ],
      "api_modules": [
        "admin-settings-api"
      ],
      "api_paths": [
        "/api/admin/settings/email/test"
      ],
      "summary": "**Settings** Manage your panel settings. Requires permission `admin.root`. Key UI: Upload Logs; Save Changes; Send Test Email; Logs were uploaded. You can share these URLs with support..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Settings**.\n3. Direct URL: `/admin/settings`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/spells",
      "area": "admin",
      "file_slug": "admin-spells",
      "source": "src/app/(app)/admin/spells/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Spells",
      "description": "Manage all spells in your system",
      "title_key": "admin.spells.title",
      "description_key": "admin.spells.subtitle",
      "component": "SpellsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-spells",
        "title": "Spells (Eggs)",
        "title_key": "navigation.items.spells",
        "permission": "admin.realms.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/spells",
        "inherited": false
      },
      "widget_slugs": [
        "admin-spells"
      ],
      "sections": [
        "Reorder spells",
        "Cross-compatible spells",
        "What are Spells (eggs)?",
        "How you use them",
        "Under the hood",
        "Sources & compatibility"
      ],
      "features": [
        "Are you sure you want to delete this spell?",
        "Save",
        "Create Spell",
        "Select the realm where you want to import this spell."
      ],
      "ui_labels": [
        {
          "key": "admin.spells.messages.delete_confirm",
          "value": "Are you sure you want to delete this spell?"
        },
        {
          "key": "admin.spells.subtitle_realm",
          "value": "Managing spells for realm: {realm}"
        },
        {
          "key": "admin.spells.order.title",
          "value": "Reorder spells"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.spells.create",
          "value": "Create Spell"
        },
        {
          "key": "admin.spells.order.subtitle",
          "value": "Use the arrows to set display order in this realm (shown when creating servers and picking a spell)."
        },
        {
          "key": "admin.spells.help.cross_compatible.title",
          "value": "Cross-compatible spells"
        },
        {
          "key": "admin.spells.help.what_are_spells.title",
          "value": "What are Spells (eggs)?"
        },
        {
          "key": "admin.spells.help.how_to_use.title",
          "value": "How you use them"
        },
        {
          "key": "admin.spells.help.under_the_hood.title",
          "value": "Under the hood"
        },
        {
          "key": "admin.spells.help.under_the_hood.description",
          "value": "Configs (files/startup/logs/stop), file denylist, variables, Docker images, script container/entry, and optional privileged install scripts define behavior."
        },
        {
          "key": "admin.spells.help.sources.title",
          "value": "Sources & compatibility"
        },
        {
          "key": "admin.spells.help.sources.description",
          "value": "Use our cross-compatible spells repo (FeatherPanel ↔ Pterodactyl) or bring your own JSON-defined spells. Import locally or host them in your own repository."
        },
        {
          "key": "admin.spells.import_dialog_description",
          "value": "Select the realm where you want to import this spell."
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/realms",
        "/api/admin/spells",
        "/api/admin/spells/import",
        "/api/admin/spells/reorder"
      ],
      "summary": "**Spells** Manage all spells in your system Sidebar label: “Spells (Eggs)”. Requires permission `admin.realms.view`. Key UI: Are you sure you want to delete this spell?; Save; Create Spell; Select the realm where you want to import this spell..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Spells (Eggs)**, then **Spells**.\n3. Direct URL: `/admin/spells`.\n4. User needs permission `admin.realms.view` (or `admin.root`)."
    },
    {
      "route": "/admin/spells/create",
      "area": "admin",
      "file_slug": "admin-spells-create",
      "source": "src/app/(app)/admin/spells/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create Spell",
      "description": "Fill in the details to create a new spell",
      "title_key": "admin.spells.form.create_title",
      "description_key": "admin.spells.form.create_description",
      "component": "CreateSpellPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-spells",
        "title": "Spells (Eggs)",
        "title_key": "navigation.items.spells",
        "permission": "admin.realms.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/spells",
        "inherited": true
      },
      "widget_slugs": [
        "admin-spells-create"
      ],
      "sections": [],
      "features": [
        "General",
        "Docker",
        "Features",
        "Config",
        "Script",
        "Description"
      ],
      "ui_labels": [
        {
          "key": "admin.spells.tabs.general",
          "value": "General"
        },
        {
          "key": "admin.spells.tabs.docker",
          "value": "Docker"
        },
        {
          "key": "admin.spells.tabs.features",
          "value": "Features"
        },
        {
          "key": "admin.spells.tabs.config",
          "value": "Config"
        },
        {
          "key": "admin.spells.tabs.script",
          "value": "Script"
        },
        {
          "key": "admin.spells.form.description",
          "value": "Description"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/realms",
        "/api/admin/spells"
      ],
      "summary": "**Create Spell** Fill in the details to create a new spell Under sidebar item “Spells (Eggs)”. Requires permission `admin.realms.view`. Key UI: General; Docker; Features; Config; Script; Description.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Spells (Eggs)** (parent nav item), then **Create Spell**.\n3. Direct URL: `/admin/spells/create`.\n4. User needs permission `admin.realms.view` (or `admin.root`)."
    },
    {
      "route": "/admin/storage-sense",
      "area": "admin",
      "file_slug": "admin-storage-sense",
      "source": "src/app/(app)/admin/storage-sense/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Storage Sense",
      "description": "Audit database history tables, preview reclaimable rows, and run safe retention purges.",
      "title_key": "admin.storage_sense.title",
      "description_key": "admin.storage_sense.subtitle",
      "component": "StorageSensePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-storage-sense",
        "title": "Storage Sense",
        "title_key": "navigation.items.storageSense",
        "permission": "admin.settings.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/storage-sense",
        "inherited": false
      },
      "widget_slugs": [
        "admin-storage-sense"
      ],
      "sections": [],
      "features": [
        "Tracked tables",
        "Panel log files",
        "Retention period (days)",
        "Table",
        "Actions",
        "Delete old rows?",
        "Purge multiple targets?"
      ],
      "ui_labels": [
        {
          "key": "admin.storage_sense.stats_tables",
          "value": "Tracked tables"
        },
        {
          "key": "admin.storage_sense.disk_card_title",
          "value": "Panel log files"
        },
        {
          "key": "admin.storage_sense.retention_label",
          "value": "Retention period (days)"
        },
        {
          "key": "admin.storage_sense.table",
          "value": "Table"
        },
        {
          "key": "common.actions",
          "value": "Actions"
        },
        {
          "key": "admin.storage_sense.purge_confirm_title",
          "value": "Delete old rows?"
        },
        {
          "key": "admin.storage_sense.purge_confirm_desc",
          "value": "Permanently remove {count} rows from {label} (older than {days} days)."
        },
        {
          "key": "admin.storage_sense.purge_confirm_desc_sso",
          "value": "Permanently remove {count} expired SSO tokens from {label}. Retention days do not apply."
        },
        {
          "key": "admin.storage_sense.batch_confirm_title",
          "value": "Purge multiple targets?"
        },
        {
          "key": "admin.storage_sense.batch_confirm_desc",
          "value": "Run retention purge on {count} targets for rows older than {days} days. Expired SSO tokens use their own rule."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/storage-sense",
        "/api/admin/storage-sense/purge",
        "/api/admin/storage-sense/purge-batch"
      ],
      "summary": "**Storage Sense** Audit database history tables, preview reclaimable rows, and run safe retention purges. Requires permission `admin.settings.view`. Key UI: Tracked tables; Panel log files; Retention period (days); Table; Actions; Delete old rows?.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Storage Sense**.\n3. Direct URL: `/admin/storage-sense`.\n4. User needs permission `admin.settings.view` (or `admin.root`)."
    },
    {
      "route": "/admin/subdomains",
      "area": "admin",
      "file_slug": "admin-subdomains",
      "source": "src/app/(app)/admin/subdomains/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Global Subdomains",
      "description": "Manage the global domains and their SRV mappings for the subdomain system.",
      "title_key": "admin.subdomains.title",
      "description_key": "admin.subdomains.description",
      "component": "AdminSubdomainsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-subdomains",
        "title": "Subdomains",
        "title_key": "navigation.items.subdomains",
        "permission": "admin.subdomains.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/subdomains",
        "inherited": false
      },
      "widget_slugs": [
        "admin-subdomains"
      ],
      "sections": [],
      "features": [
        "User subdomains are now enabled for clients.",
        "User subdomains are now disabled for clients.",
        "User-made subdomains are turned off",
        "Allow users to create and manage server subdomains",
        "User subdomains are enabled",
        "Active",
        "Inactive",
        "Edit",
        "Delete",
        "No description provided.",
        "Cloudflare Settings",
        "Save Changes"
      ],
      "ui_labels": [
        {
          "key": "admin.subdomains.userSubdomainsEnabledToast",
          "value": "User subdomains are now enabled for clients."
        },
        {
          "key": "admin.subdomains.userSubdomainsDisabledToast",
          "value": "User subdomains are now disabled for clients."
        },
        {
          "key": "admin.subdomains.featureDisabledAlertTitle",
          "value": "User-made subdomains are turned off"
        },
        {
          "key": "admin.subdomains.userSubdomainsToggleLabel",
          "value": "Allow users to create and manage server subdomains"
        },
        {
          "key": "admin.subdomains.featureEnabledAlertTitle",
          "value": "User subdomains are enabled"
        },
        {
          "key": "admin.subdomains.statusActive",
          "value": "Active"
        },
        {
          "key": "admin.subdomains.statusInactive",
          "value": "Inactive"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.subdomains.descriptionPlaceholder",
          "value": "No description provided."
        },
        {
          "key": "admin.subdomains.settingsTitle",
          "value": "Cloudflare Settings"
        },
        {
          "key": "admin.subdomains.save",
          "value": "Save Changes"
        },
        {
          "key": "admin.subdomains.tutorialTitle",
          "value": "Subdomain Setup Guide"
        },
        {
          "key": "admin.subdomains.tutorialDescription",
          "value": "Follow these steps to integrate Cloudflare subdomains with your panel."
        },
        {
          "key": "admin.subdomains.dialogHelpTitle",
          "value": "Configuration Help"
        },
        {
          "key": "admin.subdomains.drawerDescription",
          "value": "Configure the Cloudflare integration and SRV mappings for this domain."
        },
        {
          "key": "admin.subdomains.domainLabel",
          "value": "Domain Name"
        },
        {
          "key": "admin.subdomains.accountIdLabel",
          "value": "Cloudflare Account ID"
        },
        {
          "key": "admin.subdomains.descriptionLabel",
          "value": "Internal Description"
        },
        {
          "key": "admin.subdomains.zoneToggleLabel",
          "value": "Override Zone ID"
        },
        {
          "key": "admin.subdomains.mappingsTitle",
          "value": "SRV Spell Mappings"
        },
        {
          "key": "admin.subdomains.mappingsDescription",
          "value": "Configure spell routing rules and protocols for your domain."
        },
        {
          "key": "admin.subdomains.createButton",
          "value": "Create Domain"
        },
        {
          "key": "admin.subdomains.domainDetailsTitle",
          "value": "Subdomain Entries: {domain}"
        },
        {
          "key": "admin.subdomains.domainDetailsDescription",
          "value": "Active subdomains currently assigned to servers under this domain."
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/subdomains",
        "/api/admin/subdomains/settings",
        "/api/admin/subdomains/spells"
      ],
      "summary": "**Global Subdomains** Manage the global domains and their SRV mappings for the subdomain system. Sidebar label: “Subdomains”. Requires permission `admin.subdomains.view`. Key UI: User subdomains are now enabled for clients.; User subdomains are now disabled for clients.; User-made subdomains are turned off; Allow users to create and manage server subdomains; User subdomains are enabled; Active.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Subdomains**, then **Global Subdomains**.\n3. Direct URL: `/admin/subdomains`.\n4. User needs permission `admin.subdomains.view` (or `admin.root`)."
    },
    {
      "route": "/admin/support",
      "area": "admin",
      "file_slug": "admin-support",
      "source": "src/app/(app)/admin/support/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "FeatherPanel Support",
      "description": "Remote access and resources when working with FeatherPanel developers on an active support ticket.",
      "title_key": "admin.support.title",
      "description_key": "admin.support.description",
      "component": "AdminSupportPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-support",
        "title": "Support",
        "title_key": "navigation.items.support",
        "permission": "admin.root",
        "group": "system",
        "category": "admin",
        "matched_url": "/admin/support",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Remote shell (sshx)",
        "Logs & resources",
        "Upload panel logs",
        "Community Discord",
        "Ask questions and get help from the community and MythicalSystems team.",
        "Documentation",
        "Official FeatherPanel guides, API reference, and troubleshooting docs."
      ],
      "ui_labels": [
        {
          "key": "admin.support.tabs.sshx",
          "value": "Remote shell (sshx)"
        },
        {
          "key": "admin.support.tabs.resources",
          "value": "Logs & resources"
        },
        {
          "key": "admin.support.resources.logs_title",
          "value": "Upload panel logs"
        },
        {
          "key": "admin.support.resources.logs_description",
          "value": "Upload web, app, and runner logs from Settings and share the paste URLs with support."
        },
        {
          "key": "admin.support.resources.discord_title",
          "value": "Community Discord"
        },
        {
          "key": "admin.support.resources.discord_description",
          "value": "Ask questions and get help from the community and MythicalSystems team."
        },
        {
          "key": "admin.support.resources.docs_title",
          "value": "Documentation"
        },
        {
          "key": "admin.support.resources.docs_description",
          "value": "Official FeatherPanel guides, API reference, and troubleshooting docs."
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**FeatherPanel Support** Remote access and resources when working with FeatherPanel developers on an active support ticket. Sidebar label: “Support”. Requires permission `admin.root`. Key UI: Remote shell (sshx); Logs & resources; Upload panel logs; Community Discord; Ask questions and get help from the community and MythicalSystems team.; Documentation.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Support**, then **FeatherPanel Support**.\n3. Direct URL: `/admin/support`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/tickets",
      "area": "admin",
      "file_slug": "admin-tickets",
      "source": "src/app/(app)/admin/tickets/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Support Tickets",
      "description": "View and manage all support tickets in the system",
      "title_key": "admin.tickets.title",
      "description_key": "admin.tickets.viewAndManage",
      "component": "TicketsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-tickets",
        "title": "Support Tickets",
        "title_key": "navigation.items.tickets",
        "permission": "admin.tickets.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/tickets",
        "inherited": false
      },
      "widget_slugs": [
        "admin-tickets"
      ],
      "sections": [
        "Managing Tickets",
        "Categorization",
        "Priority Support"
      ],
      "features": [
        "Are you sure you want to delete this ticket?",
        "All Statuses",
        "Category",
        "Created",
        "Server"
      ],
      "ui_labels": [
        {
          "key": "admin.tickets.messages.delete_confirm",
          "value": "Are you sure you want to delete this ticket?"
        },
        {
          "key": "admin.tickets.filters.all_statuses",
          "value": "All Statuses"
        },
        {
          "key": "admin.tickets.table.category",
          "value": "Category"
        },
        {
          "key": "admin.tickets.table.created",
          "value": "Created"
        },
        {
          "key": "admin.tickets.table.server",
          "value": "Server"
        },
        {
          "key": "admin.tickets.help.managing.title",
          "value": "Managing Tickets"
        },
        {
          "key": "admin.tickets.help.managing.description",
          "value": "Keep track of all your support requests in one place. You can filter by status and category to quickly find what you're looking for."
        },
        {
          "key": "admin.tickets.help.categories.title",
          "value": "Categorization"
        },
        {
          "key": "admin.tickets.help.categories.description",
          "value": "Organize support requests by assigning them to categories. This helps in routing tickets to the right team members."
        },
        {
          "key": "admin.tickets.help.support.title",
          "value": "Priority Support"
        },
        {
          "key": "admin.tickets.help.support.description",
          "value": "Higher priority tickets are highlighted to ensure they get the attention they deserve from your staff."
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/tickets",
        "/api/admin/tickets/categories",
        "/api/admin/tickets/statuses"
      ],
      "summary": "**Support Tickets** View and manage all support tickets in the system Requires permission `admin.tickets.view`. Key UI: Are you sure you want to delete this ticket?; All Statuses; Category; Created; Server.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Support Tickets**.\n3. Direct URL: `/admin/tickets`.\n4. User needs permission `admin.tickets.view` (or `admin.root`)."
    },
    {
      "route": "/admin/tickets/categories",
      "area": "admin",
      "file_slug": "admin-tickets-categories",
      "source": "src/app/(app)/admin/tickets/categories/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Ticket Categories",
      "description": "Create and manage ticket categories to organize support requests.",
      "title_key": "admin.tickets.categories.title",
      "description_key": "admin.tickets.categories.description",
      "component": "TicketCategoriesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-ticket-categories",
        "title": "Ticket Categories",
        "title_key": "navigation.items.ticketCategories",
        "permission": "admin.ticket.categories.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/tickets/categories",
        "inherited": false
      },
      "widget_slugs": [
        "admin-tickets-categories"
      ],
      "sections": [
        "Managing Categories",
        "Support Emails",
        "Visual Identity"
      ],
      "features": [
        "Are you sure you want to delete this category?",
        "Create Category",
        "Create",
        "Edit Category",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "admin.tickets.categories.delete_confirm",
          "value": "Are you sure you want to delete this category?"
        },
        {
          "key": "admin.tickets.categories.create",
          "value": "Create Category"
        },
        {
          "key": "common.create",
          "value": "Create"
        },
        {
          "key": "admin.tickets.categories.edit",
          "value": "Edit Category"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.tickets.categories.help.managing.title",
          "value": "Managing Categories"
        },
        {
          "key": "admin.tickets.categories.help.managing.description",
          "value": "Create and edit categories to organize your support system. Each category can have its own support email and hours."
        },
        {
          "key": "admin.tickets.categories.help.emails.title",
          "value": "Support Emails"
        },
        {
          "key": "admin.tickets.categories.help.emails.description",
          "value": "Each category can be linked to a specific support email. This helps in tracking communication for different topics."
        },
        {
          "key": "admin.tickets.categories.help.icons.title",
          "value": "Visual Identity"
        },
        {
          "key": "admin.tickets.categories.help.icons.description",
          "value": "Upload custom icons for your categories to make them easily distinguishable in the dashboard."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/tickets/categories",
        "/api/admin/tickets/categories/upload-icon"
      ],
      "summary": "**Ticket Categories** Create and manage ticket categories to organize support requests. Requires permission `admin.ticket.categories.view`. Key UI: Are you sure you want to delete this category?; Create Category; Create; Edit Category; Save.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Ticket Categories**.\n3. Direct URL: `/admin/tickets/categories`.\n4. User needs permission `admin.ticket.categories.view` (or `admin.root`)."
    },
    {
      "route": "/admin/tickets/priorities",
      "area": "admin",
      "file_slug": "admin-tickets-priorities",
      "source": "src/app/(app)/admin/tickets/priorities/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Ticket Priorities",
      "description": "Manage ticket priorities to define urgency levels",
      "title_key": "admin.tickets.priorities.title",
      "description_key": "admin.tickets.priorities.subtitle",
      "component": "TicketPrioritiesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-ticket-priorities",
        "title": "Ticket Priorities",
        "title_key": "navigation.items.ticketPriorities",
        "permission": "admin.ticket.priorities.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/tickets/priorities",
        "inherited": false
      },
      "widget_slugs": [
        "admin-tickets-priorities"
      ],
      "sections": [
        "Priority Levels",
        "Visual Cues",
        "Urgent Requests"
      ],
      "features": [
        "Are you sure you want to delete this priority?",
        "Are you sure you want to delete this ticket?",
        "Lower numbers appear first in lists (e.g. Low → Medium → High).",
        "Create Priority",
        "Create",
        "Edit Priority",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "admin.tickets.priorities.delete_confirm",
          "value": "Are you sure you want to delete this priority?"
        },
        {
          "key": "admin.tickets.messages.delete_confirm",
          "value": "Are you sure you want to delete this ticket?"
        },
        {
          "key": "admin.tickets.priorities.form.sortOrderDescription",
          "value": "Lower numbers appear first in lists (e.g. Low → Medium → High)."
        },
        {
          "key": "admin.tickets.priorities.create",
          "value": "Create Priority"
        },
        {
          "key": "admin.tickets.priorities.levelLabel",
          "value": "Level {level}"
        },
        {
          "key": "common.create",
          "value": "Create"
        },
        {
          "key": "admin.tickets.priorities.edit",
          "value": "Edit Priority"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.tickets.priorities.help.levels.title",
          "value": "Priority Levels"
        },
        {
          "key": "admin.tickets.priorities.help.levels.description",
          "value": "Define different priority levels like Low, Medium, High, and Urgent to manage response expectations."
        },
        {
          "key": "admin.tickets.priorities.help.visuals.title",
          "value": "Visual Cues"
        },
        {
          "key": "admin.tickets.priorities.help.visuals.description",
          "value": "Assign distinct colors to priorities to help staff quickly identify high-priority requests in the list."
        },
        {
          "key": "admin.tickets.priorities.help.urgent.title",
          "value": "Urgent Requests"
        },
        {
          "key": "admin.tickets.priorities.help.urgent.description",
          "value": "Urgent priorities should be used sparingly for critical issues requiring immediate intervention."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/tickets/priorities"
      ],
      "summary": "**Ticket Priorities** Manage ticket priorities to define urgency levels Requires permission `admin.ticket.priorities.view`. Key UI: Are you sure you want to delete this priority?; Are you sure you want to delete this ticket?; Lower numbers appear first in lists (e.g. Low → Medium → High).; Create Priority; Create; Edit Priority.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Ticket Priorities**.\n3. Direct URL: `/admin/tickets/priorities`.\n4. User needs permission `admin.ticket.priorities.view` (or `admin.root`)."
    },
    {
      "route": "/admin/tickets/statuses",
      "area": "admin",
      "file_slug": "admin-tickets-statuses",
      "source": "src/app/(app)/admin/tickets/statuses/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Ticket Statuses",
      "description": "Manage ticket statuses to track progress",
      "title_key": "admin.tickets.statuses.title",
      "description_key": "admin.tickets.statuses.subtitle",
      "component": "TicketStatusesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-ticket-statuses",
        "title": "Ticket Statuses",
        "title_key": "navigation.items.ticketStatuses",
        "permission": "admin.ticket.statuses.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/tickets/statuses",
        "inherited": false
      },
      "widget_slugs": [
        "admin-tickets-statuses"
      ],
      "sections": [
        "State Management",
        "Progress Tracking",
        "Custom States"
      ],
      "features": [
        "Status created successfully",
        "Failed to create status",
        "Status updated successfully",
        "Failed to update status",
        "Are you sure you want to delete this status?",
        "Are you sure you want to delete this ticket?",
        "Status deleted successfully",
        "Failed to delete status",
        "Status order updated",
        "Failed to update status order",
        "Name",
        "Level"
      ],
      "ui_labels": [
        {
          "key": "admin.tickets.statuses.create_success",
          "value": "Status created successfully"
        },
        {
          "key": "admin.tickets.statuses.create_error",
          "value": "Failed to create status"
        },
        {
          "key": "admin.tickets.statuses.update_success",
          "value": "Status updated successfully"
        },
        {
          "key": "admin.tickets.statuses.update_error",
          "value": "Failed to update status"
        },
        {
          "key": "admin.tickets.statuses.delete_confirm",
          "value": "Are you sure you want to delete this status?"
        },
        {
          "key": "admin.tickets.messages.delete_confirm",
          "value": "Are you sure you want to delete this ticket?"
        },
        {
          "key": "admin.tickets.statuses.delete_success",
          "value": "Status deleted successfully"
        },
        {
          "key": "admin.tickets.statuses.delete_error",
          "value": "Failed to delete status"
        },
        {
          "key": "admin.tickets.statuses.reorderSuccess",
          "value": "Status order updated"
        },
        {
          "key": "admin.tickets.statuses.reorderError",
          "value": "Failed to update status order"
        },
        {
          "key": "admin.tickets.statuses.form.name",
          "value": "Name"
        },
        {
          "key": "admin.tickets.statuses.form.sortOrder",
          "value": "Level"
        },
        {
          "key": "admin.tickets.statuses.form.sortOrderDescription",
          "value": "Lower numbers appear first in lists. New tickets use the status marked as default."
        },
        {
          "key": "admin.tickets.statuses.form.color",
          "value": "Color"
        },
        {
          "key": "admin.tickets.statuses.form.isDefault",
          "value": "Default status for new tickets"
        },
        {
          "key": "admin.tickets.statuses.form.isDefaultDescription",
          "value": "Only one status can be the default. Reopened tickets also return to this status."
        },
        {
          "key": "admin.tickets.statuses.create",
          "value": "Create Status"
        },
        {
          "key": "admin.tickets.statuses.search_placeholder",
          "value": "Search statuses..."
        },
        {
          "key": "admin.tickets.statuses.no_results",
          "value": "No statuses found"
        },
        {
          "key": "admin.tickets.statuses.levelLabel",
          "value": "Level {level}"
        },
        {
          "key": "admin.tickets.statuses.defaultBadge",
          "value": "Default for new tickets"
        },
        {
          "key": "admin.tickets.statuses.moveUp",
          "value": "Move up"
        },
        {
          "key": "admin.tickets.statuses.moveDown",
          "value": "Move down"
        },
        {
          "key": "common.create",
          "value": "Create"
        },
        {
          "key": "admin.tickets.statuses.edit",
          "value": "Edit Status"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.tickets.statuses.help.workflow.title",
          "value": "State Management"
        },
        {
          "key": "admin.tickets.statuses.help.workflow.description",
          "value": "Statuses define the lifecycle of a ticket. Typical workflows include Open, In Progress, Resolved, and Closed."
        },
        {
          "key": "admin.tickets.statuses.help.tracking.title",
          "value": "Progress Tracking"
        },
        {
          "key": "admin.tickets.statuses.help.tracking.description",
          "value": "Clear status labels help both users and staff understand the current progress of any support request."
        },
        {
          "key": "admin.tickets.statuses.help.states.title",
          "value": "Custom States"
        },
        {
          "key": "admin.tickets.statuses.help.states.description",
          "value": "You can create custom statuses like 'Awaiting User' or 'Pending Third Party'."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/tickets/statuses"
      ],
      "summary": "**Ticket Statuses** Manage ticket statuses to track progress Requires permission `admin.ticket.statuses.view`. Key UI: Status created successfully; Failed to create status; Status updated successfully; Failed to update status; Are you sure you want to delete this status?; Are you sure you want to delete this ticket?.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Ticket Statuses**.\n3. Direct URL: `/admin/tickets/statuses`.\n4. User needs permission `admin.ticket.statuses.view` (or `admin.root`)."
    },
    {
      "route": "/admin/translations",
      "area": "admin",
      "file_slug": "admin-translations",
      "source": "src/app/(app)/admin/translations/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Translations",
      "description": "Manage translation files for your system.",
      "title_key": "admin.translations.title",
      "description_key": "admin.translations.subtitle",
      "component": "TranslationsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-translations",
        "title": "Translations",
        "title_key": "navigation.items.translations",
        "permission": "admin.root",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/translations",
        "inherited": false
      },
      "widget_slugs": [
        "admin-translations"
      ],
      "sections": [
        "What are Translations?",
        "Translation Fallback"
      ],
      "features": [
        "Create Translation File",
        "Upload Translation File",
        "Edit Translation File",
        "Create a new translation file."
      ],
      "ui_labels": [
        {
          "key": "admin.translations.messages.delete_confirm",
          "value": "Are you sure you want to delete this translation file? This action cannot be undone."
        },
        {
          "key": "admin.translations.create",
          "value": "Create Translation File"
        },
        {
          "key": "admin.translations.upload",
          "value": "Upload Translation File"
        },
        {
          "key": "admin.translations.help.what_is.title",
          "value": "What are Translations?"
        },
        {
          "key": "admin.translations.help.what_is.description",
          "value": "Translation files allow you to provide your panel in multiple languages. Backend translations take priority over frontend translations."
        },
        {
          "key": "admin.translations.help.fallback.title",
          "value": "Translation Fallback"
        },
        {
          "key": "admin.translations.help.fallback.description",
          "value": "If a translation key is missing in a language file, it will fallback to English, and then to frontend translations if still missing."
        },
        {
          "key": "admin.translations.form.edit_title",
          "value": "Edit Translation File"
        },
        {
          "key": "admin.translations.form.edit_description",
          "value": "Edit translations for {lang}"
        },
        {
          "key": "admin.translations.form.create_title",
          "value": "Create Translation File"
        },
        {
          "key": "admin.translations.form.create_description",
          "value": "Create a new translation file."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useTheme"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/translations",
        "/api/admin/translations/upload"
      ],
      "summary": "**Translations** Manage translation files for your system. Requires permission `admin.root`. Key UI: Create Translation File; Upload Translation File; Edit Translation File; Create a new translation file..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Translations**.\n3. Direct URL: `/admin/translations`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/updates",
      "area": "admin",
      "file_slug": "admin-updates",
      "source": "src/app/(app)/admin/updates/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "System Updates",
      "description": "Manage and apply updates for your panel, wings nodes, and plugins.",
      "title_key": "admin_updates.title",
      "description_key": "admin_updates.description",
      "component": "AdminUpdatesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-updates",
        "title": "System Updates",
        "title_key": "navigation.items.updates",
        "permission": "admin.root",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/updates",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [
        "FeatherPanel",
        "Plugins",
        "Wings Nodes"
      ],
      "features": [
        "No downloadable release found.",
        "Panel",
        "Checking…",
        "Plugins",
        "Store unavailable",
        "Up to date",
        "Wings",
        "Installed plugins match the latest Mythic releases we could resolve.",
        "Update",
        "No match",
        "Monitor and update Wings daemon across your infrastructure."
      ],
      "ui_labels": [
        {
          "key": "admin.marketplace.plugins.toasts.no_release",
          "value": "No downloadable release found."
        },
        {
          "key": "admin.marketplace.plugins.toasts.updated",
          "value": "Updated {name} to v{version}"
        },
        {
          "key": "admin_updates.overview.panel",
          "value": "Panel"
        },
        {
          "key": "admin_updates.overview.update_to",
          "value": "Update to {version}"
        },
        {
          "key": "admin_updates.overview.up_to_date_version",
          "value": "Up to date · {version}"
        },
        {
          "key": "admin_updates.overview.checking",
          "value": "Checking…"
        },
        {
          "key": "admin_updates.overview.plugins",
          "value": "Plugins"
        },
        {
          "key": "admin_updates.overview.store_unavailable",
          "value": "Store unavailable"
        },
        {
          "key": "admin_updates.overview.up_to_date",
          "value": "Up to date"
        },
        {
          "key": "admin_updates.overview.wings",
          "value": "Wings"
        },
        {
          "key": "admin_updates.panel.title",
          "value": "FeatherPanel"
        },
        {
          "key": "admin_updates.plugins.title",
          "value": "Plugins"
        },
        {
          "key": "admin_updates.plugins.up_to_date_description",
          "value": "Installed plugins match the latest Mythic releases we could resolve."
        },
        {
          "key": "admin_updates.plugins.update",
          "value": "Update"
        },
        {
          "key": "admin_updates.plugins.status_up_to_date",
          "value": "Up to date"
        },
        {
          "key": "admin_updates.plugins.status_no_match",
          "value": "No match"
        },
        {
          "key": "admin_updates.wings.title",
          "value": "Wings Nodes"
        },
        {
          "key": "admin_updates.wings.description",
          "value": "Monitor and update Wings daemon across your infrastructure."
        }
      ],
      "hooks": [
        "useAdminDashboard"
      ],
      "api_modules": [
        "admin-settings-api"
      ],
      "api_paths": [
        "/api/admin/cloud/data/store",
        "/api/admin/plugins",
        "/api/admin/plugins/online/install"
      ],
      "summary": "**System Updates** Manage and apply updates for your panel, wings nodes, and plugins. Requires permission `admin.root`. Key UI: No downloadable release found.; Panel; Checking…; Plugins; Store unavailable; Up to date.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **System Updates**.\n3. Direct URL: `/admin/updates`.\n4. User needs permission `admin.root`."
    },
    {
      "route": "/admin/users",
      "area": "admin",
      "file_slug": "admin-users",
      "source": "src/app/(app)/admin/users/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Users",
      "description": "Manage all users in your system",
      "title_key": "admin.users.title",
      "description_key": "admin.users.subtitle",
      "component": "UsersPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-users",
        "title": "Users",
        "title_key": "navigation.items.users",
        "permission": "admin.users.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/users",
        "inherited": false
      },
      "widget_slugs": [
        "admin-users"
      ],
      "sections": [
        "Create User",
        "Managing Users",
        "Roles & Permissions",
        "Security Actions"
      ],
      "features": [
        "Any Status",
        "Only active users",
        "Only banned users",
        "Any email status",
        "Force verify email"
      ],
      "ui_labels": [
        {
          "key": "admin.users.messages.delete_confirm",
          "value": "Are you sure you want to delete user {username}?"
        },
        {
          "key": "admin.users.messages.force_verify_email_confirm",
          "value": "Force verify {username}'s email address? This lets the user log in without using their verification link."
        },
        {
          "key": "admin.users.clear_all_devices_confirm",
          "value": "Clear every browser/device fingerprint record in the panel? This resets alt detection and registration device limits until users browse again."
        },
        {
          "key": "admin.users.create.title",
          "value": "Create User"
        },
        {
          "key": "admin.users.filters.any_status",
          "value": "Any Status"
        },
        {
          "key": "admin.users.filters.status_active",
          "value": "Only active users"
        },
        {
          "key": "admin.users.filters.status_banned",
          "value": "Only banned users"
        },
        {
          "key": "admin.users.filters.any_email_status",
          "value": "Any email status"
        },
        {
          "key": "admin.users.actions.force_verify_email",
          "value": "Force verify email"
        },
        {
          "key": "admin.users.help.managing.title",
          "value": "Managing Users"
        },
        {
          "key": "admin.users.help.managing.description",
          "value": "View, create, and edit accounts. Use the search to quickly find users by username, email, or role. Pagination and column visibility are customizable."
        },
        {
          "key": "admin.users.help.roles.title",
          "value": "Roles & Permissions"
        },
        {
          "key": "admin.users.help.roles.description",
          "value": "Assign roles to control access and capabilities. Role badges reflect the assigned role, and colors help you spot important roles at a glance."
        },
        {
          "key": "admin.users.help.security.title",
          "value": "Security Actions"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/devices",
        "/api/admin/users"
      ],
      "summary": "**Users** Manage all users in your system Requires permission `admin.users.view`. Key UI: Any Status; Only active users; Only banned users; Any email status; Force verify email.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Users**.\n3. Direct URL: `/admin/users`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/users/create",
      "area": "admin",
      "file_slug": "admin-users-create",
      "source": "src/app/(app)/admin/users/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create User",
      "description": "Fill in the details to create a new user",
      "title_key": "admin.users.create.title",
      "description_key": "admin.users.create.description",
      "component": "CreateUserPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-users",
        "title": "Users",
        "title_key": "navigation.items.users",
        "permission": "admin.users.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/users",
        "inherited": true
      },
      "widget_slugs": [
        "admin-users-create"
      ],
      "sections": [
        "User Details"
      ],
      "features": [
        "Quick Tips",
        "Security"
      ],
      "ui_labels": [
        {
          "key": "admin.users.create.form.title",
          "value": "User Details"
        },
        {
          "key": "admin.users.create.help.tips_title",
          "value": "Quick Tips"
        },
        {
          "key": "admin.users.create.help.security_title",
          "value": "Security"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/roles",
        "/api/admin/users"
      ],
      "summary": "**Create User** Fill in the details to create a new user Under sidebar item “Users”. Requires permission `admin.users.view`. Key UI: Quick Tips; Security.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Users** (parent nav item), then **Create User**.\n3. Direct URL: `/admin/users/create`.\n4. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/vds-nodes",
      "area": "admin",
      "file_slug": "admin-vds-nodes",
      "source": "src/app/(app)/admin/vds-nodes/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Nodes (VDS)",
      "description": "Connect and manage Proxmox nodes for VPS / VDS virtualization.",
      "title_key": "admin.vdsNodes.title",
      "description_key": "admin.vdsNodes.description",
      "component": "VdsNodesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-vds-nodes",
        "title": "Nodes (VDS)",
        "title_key": "navigation.items.vdsNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/vds-nodes",
        "inherited": false
      },
      "widget_slugs": [
        "admin-vm-nodes"
      ],
      "sections": [
        "What are VDS Nodes?",
        "How are they used?",
        "VPS Locations",
        "Proxmox Integration"
      ],
      "features": [
        "Test connection",
        "Edit VDS node",
        "Confirm delete",
        "Cancel",
        "Delete VDS node"
      ],
      "ui_labels": [
        {
          "key": "admin.vdsNodes.actions.test_connection",
          "value": "Test connection"
        },
        {
          "key": "admin.vdsNodes.actions.edit",
          "value": "Edit VDS node"
        },
        {
          "key": "admin.vdsNodes.actions.confirm_delete",
          "value": "Confirm delete"
        },
        {
          "key": "admin.vdsNodes.actions.cancel_delete",
          "value": "Cancel"
        },
        {
          "key": "admin.vdsNodes.actions.delete",
          "value": "Delete VDS node"
        },
        {
          "key": "admin.vdsNodes.help.what.title",
          "value": "What are VDS Nodes?"
        },
        {
          "key": "admin.vdsNodes.help.what.description",
          "value": "VDS nodes in FeatherPanel map to your Proxmox hypervisors and allow you to provision and manage virtual machines."
        },
        {
          "key": "admin.vdsNodes.help.utility.title",
          "value": "How are they used?"
        },
        {
          "key": "admin.vdsNodes.help.locations.title",
          "value": "VPS Locations"
        },
        {
          "key": "admin.vdsNodes.help.locations.description",
          "value": "Only locations marked as type \"VPS\" can be used for VDS nodes to keep game and VPS capacity clearly separated."
        },
        {
          "key": "admin.vdsNodes.help.proxmox.title",
          "value": "Proxmox Integration"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/vm-nodes"
      ],
      "summary": "**Nodes (VDS)** Connect and manage Proxmox nodes for VPS / VDS virtualization. Requires permission `admin.nodes.view`. Key UI: Test connection; Edit VDS node; Confirm delete; Cancel; Delete VDS node.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Nodes (VDS)**.\n3. Direct URL: `/admin/vds-nodes`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/vds-nodes/create",
      "area": "admin",
      "file_slug": "admin-vds-nodes-create",
      "source": "src/app/(app)/admin/vds-nodes/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create VDS Node",
      "description": "Connect a new Proxmox hypervisor to FeatherPanel using a PVE API token.",
      "title_key": "admin.vdsNodes.form.create_title",
      "description_key": "admin.vdsNodes.form.create_description",
      "component": "CreateVdsNodePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-vds-nodes",
        "title": "Nodes (VDS)",
        "title_key": "navigation.items.vdsNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/vds-nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-vds-nodes-create"
      ],
      "sections": [],
      "features": [
        "Description",
        "Optional description for this VDS node"
      ],
      "ui_labels": [
        {
          "key": "admin.vdsNodes.form.description",
          "value": "Description"
        },
        {
          "key": "admin.vdsNodes.form.description_placeholder",
          "value": "Optional description for this VDS node"
        },
        {
          "key": "admin.vdsNodes.form.select_location_sheet_description",
          "value": "Only locations of type VPS can be used for VDS nodes. Total locations: {total}"
        },
        {
          "key": "admin.locations.form.description",
          "value": "Description"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/vm-nodes",
        "/api/system/country-codes"
      ],
      "summary": "**Create VDS Node** Connect a new Proxmox hypervisor to FeatherPanel using a PVE API token. Under sidebar item “Nodes (VDS)”. Requires permission `admin.nodes.view`. Key UI: Description; Optional description for this VDS node.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes (VDS)** (parent nav item), then **Create VDS Node**.\n3. Direct URL: `/admin/vds-nodes/create`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/vm-instances",
      "area": "admin",
      "file_slug": "admin-vm-instances",
      "source": "src/app/(app)/admin/vm-instances/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "VDS Instances",
      "description": "Manage all VDS/VPS instances in your system.",
      "title_key": "admin.vmInstances.title",
      "description_key": "admin.vmInstances.description",
      "component": "VmInstancesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-vm-instances",
        "title": "Virtual Servers (VDS)",
        "title_key": "navigation.items.virtualServersVds",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/vm-instances",
        "inherited": false
      },
      "widget_slugs": [
        "admin-vm-instances"
      ],
      "sections": [
        "Managing VDS Instances",
        "Resources & Configuration",
        "Tips",
        "VDS Instance Details"
      ],
      "features": [
        "Create VDS Instance",
        "Create your first VDS instance to get started",
        "View details",
        "Edit",
        "Delete",
        "VMID:",
        "Hostname:",
        "IP Address:",
        "Status:",
        "Created:",
        "Owner:",
        "Owner Email:"
      ],
      "ui_labels": [
        {
          "key": "admin.vmInstances.create",
          "value": "Create VDS Instance"
        },
        {
          "key": "admin.vmInstances.empty_desc",
          "value": "Create your first VDS instance to get started"
        },
        {
          "key": "admin.servers.actions.view",
          "value": "View details"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.vmInstances.help.managing.title",
          "value": "Managing VDS Instances"
        },
        {
          "key": "admin.vmInstances.help.managing.description",
          "value": "View, create, edit, and delete VDS instances. Use search and filters to quickly navigate your virtual infrastructure."
        },
        {
          "key": "admin.vmInstances.help.resources.title",
          "value": "Resources & Configuration"
        },
        {
          "key": "admin.vmInstances.help.resources.description",
          "value": "Each VDS instance has configurable CPU, memory, disk, and network resources managed through Proxmox VE."
        },
        {
          "key": "admin.vmInstances.help.tips.title",
          "value": "Tips"
        },
        {
          "key": "admin.vmInstances.details.title",
          "value": "VDS Instance Details"
        },
        {
          "key": "admin.vmInstances.details.subtitle",
          "value": "Viewing details for {name}"
        },
        {
          "key": "admin.vmInstances.details.labels.vmid",
          "value": "VMID:"
        },
        {
          "key": "admin.vmInstances.details.labels.hostname",
          "value": "Hostname:"
        },
        {
          "key": "admin.vmInstances.details.labels.ip_address",
          "value": "IP Address:"
        },
        {
          "key": "admin.vmInstances.details.labels.status",
          "value": "Status:"
        },
        {
          "key": "admin.vmInstances.details.labels.created",
          "value": "Created:"
        },
        {
          "key": "admin.vmInstances.details.labels.owner",
          "value": "Owner:"
        },
        {
          "key": "admin.vmInstances.details.labels.owner_email",
          "value": "Owner Email:"
        },
        {
          "key": "admin.vmInstances.details.labels.node",
          "value": "Node:"
        },
        {
          "key": "admin.vmInstances.details.labels.plan",
          "value": "Plan:"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/users",
        "/api/admin/vm-instances",
        "/api/admin/vm-nodes"
      ],
      "summary": "**VDS Instances** Manage all VDS/VPS instances in your system. Sidebar label: “Virtual Servers (VDS)”. Requires permission `admin.nodes.view`. Key UI: Create VDS Instance; Create your first VDS instance to get started; View details; Edit; Delete; VMID:.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Virtual Servers (VDS)**, then **VDS Instances**.\n3. Direct URL: `/admin/vm-instances`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/vm-instances/create",
      "area": "admin",
      "file_slug": "admin-vm-instances-create",
      "source": "src/app/(app)/admin/vm-instances/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create VDS Instance",
      "description": "Provision a new VPS from a node, template, and resources.",
      "title_key": "admin.vmInstances.create",
      "description_key": "admin.vmInstances.create_desc",
      "component": "VmInstancesCreatePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-vm-instances",
        "title": "Virtual Servers (VDS)",
        "title_key": "navigation.items.virtualServersVds",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/vm-instances",
        "inherited": true
      },
      "widget_slugs": [
        "admin-vm-instances-create"
      ],
      "sections": [],
      "features": [
        "Node & template",
        "Choose a node and template",
        "Resources",
        "CPU, memory, disk, and network",
        "Details & owner",
        "Hostname and assign owner",
        "Review & create",
        "Confirm the configuration before creating the VDS",
        "Backup retention",
        "Backup limit",
        "Cloud-init user",
        "Cloud-init password"
      ],
      "ui_labels": [
        {
          "key": "admin.vmInstances.wizard.step1_title",
          "value": "Node & template"
        },
        {
          "key": "admin.vmInstances.wizard.step1_subtitle",
          "value": "Choose a node and template"
        },
        {
          "key": "admin.vmInstances.wizard.step2_title",
          "value": "Resources"
        },
        {
          "key": "admin.vmInstances.wizard.step2_subtitle",
          "value": "CPU, memory, disk, and network"
        },
        {
          "key": "admin.vmInstances.wizard.step3_title",
          "value": "Details & owner"
        },
        {
          "key": "admin.vmInstances.wizard.step3_subtitle",
          "value": "Hostname and assign owner"
        },
        {
          "key": "admin.vmInstances.wizard.step4_title",
          "value": "Review & create"
        },
        {
          "key": "admin.vmInstances.wizard.step4_subtitle",
          "value": "Confirm the configuration before creating the VDS"
        },
        {
          "key": "admin.vmInstances.backups.retention_label_create",
          "value": "Backup retention"
        },
        {
          "key": "admin.vmInstances.backups.limit_label_create",
          "value": "Backup limit"
        },
        {
          "key": "admin.vmInstances.ci_user_label",
          "value": "Cloud-init user"
        },
        {
          "key": "admin.vmInstances.ci_password_label",
          "value": "Cloud-init password"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/users",
        "/api/admin/vm-instances",
        "/api/admin/vm-nodes"
      ],
      "summary": "**Create VDS Instance** Provision a new VPS from a node, template, and resources. Under sidebar item “Virtual Servers (VDS)”. Requires permission `admin.nodes.view`. Key UI: Node & template; Choose a node and template; Resources; CPU, memory, disk, and network; Details & owner; Hostname and assign owner.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Virtual Servers (VDS)** (parent nav item), then **Create VDS Instance**.\n3. Direct URL: `/admin/vm-instances/create`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/web-nodes",
      "area": "admin",
      "file_slug": "admin-web-nodes",
      "source": "src/app/(app)/admin/web-nodes/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Nodes (Web)",
      "description": "Connect and manage FeatherQuilld nodes for web hosting.",
      "title_key": "admin.webNodes.title",
      "description_key": "admin.webNodes.description",
      "component": "WebNodesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-web-nodes",
        "title": "Nodes (Web)",
        "title_key": "navigation.items.webNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/web-nodes",
        "inherited": false
      },
      "widget_slugs": [
        "admin-web-nodes"
      ],
      "sections": [
        "What are Web Nodes?",
        "What can Web Nodes do?",
        "Web Nodes and Locations"
      ],
      "features": [
        "Check health",
        "Create Web Node",
        "Online",
        "Offline",
        "Checking…",
        "Edit web node",
        "Confirm Delete",
        "Cancel",
        "Delete web node"
      ],
      "ui_labels": [
        {
          "key": "admin.webNodes.status.check_health",
          "value": "Check health"
        },
        {
          "key": "admin.webNodes.create",
          "value": "Create Web Node"
        },
        {
          "key": "admin.webNodes.status.online",
          "value": "Online"
        },
        {
          "key": "admin.webNodes.status.offline",
          "value": "Offline"
        },
        {
          "key": "admin.webNodes.status.checking",
          "value": "Checking…"
        },
        {
          "key": "admin.webNodes.actions.edit",
          "value": "Edit web node"
        },
        {
          "key": "admin.webNodes.actions.confirm_delete",
          "value": "Confirm Delete"
        },
        {
          "key": "admin.webNodes.actions.cancel_delete",
          "value": "Cancel"
        },
        {
          "key": "admin.webNodes.actions.delete",
          "value": "Delete web node"
        },
        {
          "key": "admin.webNodes.help.what.title",
          "value": "What are Web Nodes?"
        },
        {
          "key": "admin.webNodes.help.what.description",
          "value": "Web nodes are machines that run FeatherQuilld, the daemon that manages web hosting accounts for FeatherPanel."
        },
        {
          "key": "admin.webNodes.help.utility.title",
          "value": "What can Web Nodes do?"
        },
        {
          "key": "admin.webNodes.help.locations.title",
          "value": "Web Nodes and Locations"
        },
        {
          "key": "admin.webNodes.help.locations.description",
          "value": "Each web node must belong to a location with type Web Hosting. Location type is permanent after creation."
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/web-nodes"
      ],
      "summary": "**Nodes (Web)** Connect and manage FeatherQuilld nodes for web hosting. Requires permission `admin.nodes.view`. Key UI: Check health; Create Web Node; Online; Offline; Checking…; Edit web node.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Nodes (Web)**.\n3. Direct URL: `/admin/web-nodes`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/web-nodes/create",
      "area": "admin",
      "file_slug": "admin-web-nodes-create",
      "source": "src/app/(app)/admin/web-nodes/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create Web Node",
      "description": "Register a FeatherQuilld daemon node for web hosting.",
      "title_key": "admin.webNodes.form.create_title",
      "description_key": "admin.webNodes.form.create_description",
      "component": "CreateWebNodePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-web-nodes",
        "title": "Nodes (Web)",
        "title_key": "navigation.items.webNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/web-nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-web-nodes-create"
      ],
      "sections": [],
      "features": [
        "Available immediately after the node is created.",
        "Description"
      ],
      "ui_labels": [
        {
          "key": "admin.webNodes.form.create_validation_failed_tab",
          "value": "Check the {tab} tab and fix the highlighted fields."
        },
        {
          "key": "admin.webNodes.form.card_quilld_after_create_description",
          "value": "Available immediately after the node is created."
        },
        {
          "key": "admin.webNodes.form.select_location_description",
          "value": "Select a web hosting location for this node. Total locations: {total}"
        },
        {
          "key": "admin.locations.form.description",
          "value": "Description"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations",
        "/api/admin/web-nodes",
        "/api/system/country-codes"
      ],
      "summary": "**Create Web Node** Register a FeatherQuilld daemon node for web hosting. Under sidebar item “Nodes (Web)”. Requires permission `admin.nodes.view`. Key UI: Available immediately after the node is created.; Description.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes (Web)** (parent nav item), then **Create Web Node**.\n3. Direct URL: `/admin/web-nodes/create`.\n4. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webplates",
      "area": "admin",
      "file_slug": "admin-webplates",
      "source": "src/app/(app)/admin/webplates/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "WebPlates",
      "description": "Manage web hosting templates for FeatherQuilld",
      "title_key": "admin.webPlates.title",
      "description_key": "admin.webPlates.subtitle",
      "component": "WebPlatesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webplates",
        "title": "WebPlates",
        "title_key": "navigation.items.webPlates",
        "permission": "admin.webplates.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webplates",
        "inherited": false
      },
      "widget_slugs": [
        "admin-webplates"
      ],
      "sections": [
        "WebPlates vs Spells",
        "What are WebPlates?",
        "How you use them",
        "Under the hood",
        "Sources & schedules"
      ],
      "features": [
        "Create WebPlate",
        "No description",
        "Edit",
        "Delete",
        "Delete WebPlate?",
        "WebSpaces using this WebPlate must be removed first. This cannot be undone."
      ],
      "ui_labels": [
        {
          "key": "admin.webPlates.create",
          "value": "Create WebPlate"
        },
        {
          "key": "admin.webPlates.no_description",
          "value": "No description"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.webPlates.help.cross_compatible.title",
          "value": "WebPlates vs Spells"
        },
        {
          "key": "admin.webPlates.help.what_are_webplates.title",
          "value": "What are WebPlates?"
        },
        {
          "key": "admin.webPlates.help.what_are_webplates.description",
          "value": "WebPlates are templates that define how a site is installed and run: runtime (PHP, Node, static, …), Docker image, document root, startup, and install scripts."
        },
        {
          "key": "admin.webPlates.help.how_to_use.title",
          "value": "How you use them"
        },
        {
          "key": "admin.webPlates.help.how_to_use.description",
          "value": "Create or edit a WebPlate, then pick it when provisioning a WebSpace. Default schedules on the plate are copied onto each new site."
        },
        {
          "key": "admin.webPlates.help.under_the_hood.title",
          "value": "Under the hood"
        },
        {
          "key": "admin.webPlates.help.under_the_hood.description",
          "value": "Runtime image, container port, document root, install container/entry/script, and optional startup commands define how FeatherQuilld builds and serves the site."
        },
        {
          "key": "admin.webPlates.help.sources.title",
          "value": "Sources & schedules"
        },
        {
          "key": "admin.webPlates.delete_confirm_title",
          "value": "Delete WebPlate?"
        },
        {
          "key": "admin.webPlates.delete_confirm_desc",
          "value": "WebSpaces using this WebPlate must be removed first. This cannot be undone."
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/webplates"
      ],
      "summary": "**WebPlates** Manage web hosting templates for FeatherQuilld Requires permission `admin.webplates.view`. Key UI: Create WebPlate; No description; Edit; Delete; Delete WebPlate?; WebSpaces using this WebPlate must be removed first. This cannot be undone..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **WebPlates**.\n3. Direct URL: `/admin/webplates`.\n4. User needs permission `admin.webplates.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webplates/create",
      "area": "admin",
      "file_slug": "admin-webplates-create",
      "source": "src/app/(app)/admin/webplates/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create WebPlate",
      "description": "Fill in the details to create a new web hosting template",
      "title_key": "admin.webPlates.form.create_title",
      "description_key": "admin.webPlates.form.create_description",
      "component": "CreateWebPlatePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webplates",
        "title": "WebPlates",
        "title_key": "navigation.items.webPlates",
        "permission": "admin.webplates.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webplates",
        "inherited": true
      },
      "widget_slugs": [
        "admin-webplates-create"
      ],
      "sections": [],
      "features": [
        "Runtime",
        "Install script",
        "Default schedules",
        "Description"
      ],
      "ui_labels": [
        {
          "key": "admin.webPlates.form.runtime_section",
          "value": "Runtime"
        },
        {
          "key": "admin.webPlates.form.install_section",
          "value": "Install script"
        },
        {
          "key": "admin.webPlates.form.schedules_section",
          "value": "Default schedules"
        },
        {
          "key": "admin.webPlates.form.description",
          "value": "Description"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useSaveShortcut"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/webplates"
      ],
      "summary": "**Create WebPlate** Fill in the details to create a new web hosting template Under sidebar item “WebPlates”. Requires permission `admin.webplates.view`. Key UI: Runtime; Install script; Default schedules; Description.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **WebPlates** (parent nav item), then **Create WebPlate**.\n3. Direct URL: `/admin/webplates/create`.\n4. User needs permission `admin.webplates.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webspaces",
      "area": "admin",
      "file_slug": "admin-webspaces",
      "source": "src/app/(app)/admin/webspaces/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "WebSpaces",
      "description": "Hosted websites on FeatherQuilld nodes, built from WebPlates.",
      "title_key": "admin.webSpaces.title",
      "description_key": "admin.webSpaces.description",
      "component": "WebSpacesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webspaces",
        "inherited": false
      },
      "widget_slugs": [
        "admin-webspaces"
      ],
      "sections": [
        "Managing WebSpaces",
        "Resources & configuration",
        "Tips"
      ],
      "features": [
        "Create WebSpace",
        "Create your first WebSpace to get started",
        "View details",
        "Edit",
        "Delete",
        "Delete WebSpace?",
        "This removes the WebSpace from the panel and the daemon. This cannot be undone.",
        "Status"
      ],
      "ui_labels": [
        {
          "key": "admin.webSpaces.create",
          "value": "Create WebSpace"
        },
        {
          "key": "admin.webSpaces.empty_desc",
          "value": "Create your first WebSpace to get started"
        },
        {
          "key": "admin.servers.actions.view",
          "value": "View details"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "admin.webSpaces.help.managing.title",
          "value": "Managing WebSpaces"
        },
        {
          "key": "admin.webSpaces.help.managing.description",
          "value": "View, create, edit, and delete hosted sites. Use search and filters to find WebSpaces by owner, node, name, or domain."
        },
        {
          "key": "admin.webSpaces.help.resources.title",
          "value": "Resources & configuration"
        },
        {
          "key": "admin.webSpaces.help.resources.description",
          "value": "Each WebSpace has disk limits, domains, SSL, and a WebPlate runtime managed through FeatherQuilld."
        },
        {
          "key": "admin.webSpaces.help.tips.title",
          "value": "Tips"
        },
        {
          "key": "admin.webSpaces.delete_confirm_title",
          "value": "Delete WebSpace?"
        },
        {
          "key": "admin.webSpaces.delete_confirm_desc",
          "value": "This removes the WebSpace from the panel and the daemon. This cannot be undone."
        },
        {
          "key": "common.status",
          "value": "Status"
        }
      ],
      "hooks": [
        "usePersistedListFilters",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/users",
        "/api/admin/web-nodes",
        "/api/admin/webspaces"
      ],
      "summary": "**WebSpaces** Hosted websites on FeatherQuilld nodes, built from WebPlates. Requires permission `admin.webspaces.view`. Key UI: Create WebSpace; Create your first WebSpace to get started; View details; Edit; Delete; Delete WebSpace?.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **WebSpaces**.\n3. Direct URL: `/admin/webspaces`.\n4. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webspaces/create",
      "area": "admin",
      "file_slug": "admin-webspaces-create",
      "source": "src/app/(app)/admin/webspaces/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create WebSpace",
      "description": "Pick a web node and WebPlate, then sync to FeatherQuilld.",
      "title_key": "admin.webSpaces.form.create_title",
      "description_key": "admin.webSpaces.form.create_description",
      "component": "CreateWebSpacePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webspaces",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Node & WebPlate",
        "Choose where and how to host",
        "Resources & domains",
        "Disk limits, databases, and domains",
        "Details & owner",
        "Name, options, and assign owner",
        "Review & create",
        "Confirm the site configuration before syncing",
        "Database limit",
        "Description",
        "Hosting not ready on this node",
        "Create WebPlate"
      ],
      "ui_labels": [
        {
          "key": "admin.webSpaces.wizard.step1_title",
          "value": "Node & WebPlate"
        },
        {
          "key": "admin.webSpaces.wizard.step1_subtitle",
          "value": "Choose where and how to host"
        },
        {
          "key": "admin.webSpaces.wizard.step2_title",
          "value": "Resources & domains"
        },
        {
          "key": "admin.webSpaces.wizard.step2_subtitle",
          "value": "Disk limits, databases, and domains"
        },
        {
          "key": "admin.webSpaces.wizard.step3_title",
          "value": "Details & owner"
        },
        {
          "key": "admin.webSpaces.wizard.step3_subtitle",
          "value": "Name, options, and assign owner"
        },
        {
          "key": "admin.webSpaces.wizard.step4_title",
          "value": "Review & create"
        },
        {
          "key": "admin.webSpaces.wizard.step4_subtitle",
          "value": "Confirm the site configuration before syncing"
        },
        {
          "key": "admin.webSpaces.database_limit",
          "value": "Database limit"
        },
        {
          "key": "admin.webSpaces.form.description",
          "value": "Description"
        },
        {
          "key": "admin.webSpaces.form.blocking_checks_title",
          "value": "Hosting not ready on this node"
        },
        {
          "key": "admin.webPlates.create",
          "value": "Create WebPlate"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        }
      ],
      "hooks": [
        "useWebSpaceInfrastructure"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/hosting-packages",
        "/api/admin/users",
        "/api/admin/web-nodes",
        "/api/admin/webplates",
        "/api/admin/webspaces"
      ],
      "summary": "**Create WebSpace** Pick a web node and WebPlate, then sync to FeatherQuilld. Under sidebar item “WebSpaces”. Requires permission `admin.webspaces.view`. Key UI: Node & WebPlate; Choose where and how to host; Resources & domains; Disk limits, databases, and domains; Details & owner; Name, options, and assign owner.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **WebSpaces** (parent nav item), then **Create WebSpace**.\n3. Direct URL: `/admin/webspaces/create`.\n4. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/wings-backups",
      "area": "admin",
      "file_slug": "admin-wings-backups",
      "source": "src/app/(app)/admin/wings-backups/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Wings Backups",
      "description": "Back up Wings nodes to SFTP or S3, with schedules, mirrors, and retention.",
      "title_key": "adminWingsBackups.title",
      "description_key": "adminWingsBackups.description",
      "component": "AdminWingsBackupsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-wings-backups",
        "title": "Wings Backups",
        "title_key": "navigation.items.wingsBackups",
        "permission": "admin.wings.backups.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/wings-backups",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [
        "How Wings backups work",
        "Retention",
        "Tips"
      ],
      "features": [
        "Policies",
        "Destinations",
        "No Wings backup policies",
        "Create a policy to schedule node-level backups to SFTP or S3.",
        "Edit",
        "Delete",
        "No destinations",
        "Add an SFTP or S3 destination for Wings node archives."
      ],
      "ui_labels": [
        {
          "key": "adminWingsBackups.deletePolicyConfirm",
          "value": "Delete policy \"{name}\"?"
        },
        {
          "key": "adminWingsBackups.deleteDestinationConfirm",
          "value": "Delete destination \"{name}\"?"
        },
        {
          "key": "adminWingsBackups.tabPolicies",
          "value": "Policies"
        },
        {
          "key": "adminWingsBackups.tabDestinations",
          "value": "Destinations"
        },
        {
          "key": "adminWingsBackups.emptyPoliciesTitle",
          "value": "No Wings backup policies"
        },
        {
          "key": "adminWingsBackups.emptyPoliciesDescription",
          "value": "Create a policy to schedule node-level backups to SFTP or S3."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "adminWingsBackups.emptyDestinationsTitle",
          "value": "No destinations"
        },
        {
          "key": "adminWingsBackups.emptyDestinationsDescription",
          "value": "Add an SFTP or S3 destination for Wings node archives."
        },
        {
          "key": "adminWingsBackups.help.how.title",
          "value": "How Wings backups work"
        },
        {
          "key": "adminWingsBackups.help.retention.title",
          "value": "Retention"
        },
        {
          "key": "adminWingsBackups.help.tips.title",
          "value": "Tips"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/wings-backups/destinations",
        "/api/admin/wings-backups/policies"
      ],
      "summary": "**Wings Backups** Back up Wings nodes to SFTP or S3, with schedules, mirrors, and retention. Requires permission `admin.wings.backups.view`. Key UI: Policies; Destinations; No Wings backup policies; Create a policy to schedule node-level backups to SFTP or S3.; Edit; Delete.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Wings Backups**.\n3. Direct URL: `/admin/wings-backups`.\n4. User needs permission `admin.wings.backups.view` (or `admin.root`)."
    },
    {
      "route": "/admin/wings-backups/destinations/new",
      "area": "admin",
      "file_slug": "admin-wings-backups-destinations-new",
      "source": "src/app/(app)/admin/wings-backups/destinations/new/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "New destination",
      "description": "SFTP or S3-compatible storage for Wings node archives.",
      "title_key": "adminWingsBackups.destinationCreateTitle",
      "description_key": "adminWingsBackups.destinationCreateDescription",
      "component": "NewWingsBackupDestinationPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-wings-backups",
        "title": "Wings Backups",
        "title_key": "navigation.items.wingsBackups",
        "permission": "admin.wings.backups.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/wings-backups",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/wings-backups/destinations"
      ],
      "summary": "**New destination** SFTP or S3-compatible storage for Wings node archives. Under sidebar item “Wings Backups”. Requires permission `admin.wings.backups.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Wings Backups** (parent nav item), then **New destination**.\n3. Direct URL: `/admin/wings-backups/destinations/new`.\n4. User needs permission `admin.wings.backups.view` (or `admin.root`)."
    },
    {
      "route": "/admin/wings-backups/policies/new",
      "area": "admin",
      "file_slug": "admin-wings-backups-policies-new",
      "source": "src/app/(app)/admin/wings-backups/policies/new/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "New Wings backup policy",
      "description": "Schedule node-level backups to SFTP/S3 with optional mirrors.",
      "title_key": "adminWingsBackups.policyCreateTitle",
      "description_key": "adminWingsBackups.policyCreateDescription",
      "component": "NewWingsBackupPolicyPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-wings-backups",
        "title": "Wings Backups",
        "title_key": "navigation.items.wingsBackups",
        "permission": "admin.wings.backups.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/wings-backups",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "useUserTimezone"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/wings-backups/policies"
      ],
      "summary": "**New Wings backup policy** Schedule node-level backups to SFTP/S3 with optional mirrors. Under sidebar item “Wings Backups”. Requires permission `admin.wings.backups.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Wings Backups** (parent nav item), then **New Wings backup policy**.\n3. Direct URL: `/admin/wings-backups/policies/new`.\n4. User needs permission `admin.wings.backups.view` (or `admin.root`)."
    },
    {
      "route": "/admin/[...pluginPath]",
      "area": "admin",
      "file_slug": "admin-splat-pluginPath",
      "source": "src/app/(app)/admin/[...pluginPath]/page.tsx",
      "dynamic": true,
      "params": [
        "pluginPath"
      ],
      "title": "Admin",
      "description": "Plugin-provided UI route inside the admin area. The path after the resource id is owned by an installed plugin.",
      "title_key": null,
      "description_key": null,
      "component": "AdminPluginPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [
        "admin-plugin-page"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Admin** Plugin-provided UI route inside the admin area. The path after the resource id is owned by an installed plugin.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Admin**.\n3. Direct URL: `/admin/[...pluginPath]`.\n4. Replace path params `pluginPath` with the real resource id(s)."
    },
    {
      "route": "/admin/backup-schedules/[id]/edit",
      "area": "admin",
      "file_slug": "admin-backup-schedules-param-id-edit",
      "source": "src/app/(app)/admin/backup-schedules/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit backup schedule",
      "description": "Edit form for an existing resource. Related to: Backup Schedules.",
      "title_key": "adminBackupSchedules.editTitle",
      "description_key": null,
      "component": "EditBackupSchedulePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-backup-schedules",
        "title": "Backup Schedules",
        "title_key": "navigation.items.backupSchedules",
        "permission": "admin.backup.schedules.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/backup-schedules",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Save"
      ],
      "ui_labels": [
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit backup schedule** Edit form for an existing resource. Related to: Backup Schedules. Under sidebar item “Backup Schedules”. Requires permission `admin.backup.schedules.view`. Key UI: Save.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Backup Schedules** (parent nav item), then **Edit backup schedule**.\n3. Direct URL: `/admin/backup-schedules/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.backup.schedules.view` (or `admin.root`)."
    },
    {
      "route": "/admin/backup-schedules/[id]/runs",
      "area": "admin",
      "file_slug": "admin-backup-schedules-param-id-runs",
      "source": "src/app/(app)/admin/backup-schedules/[id]/runs/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Backup schedule history",
      "description": "Backup Schedules screen in FeatherPanel (admin area). Use this page to manage backup schedules.",
      "title_key": "adminBackupSchedules.historyTitle",
      "description_key": null,
      "component": "BackupScheduleRunsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-backup-schedules",
        "title": "Backup Schedules",
        "title_key": "navigation.items.backupSchedules",
        "permission": "admin.backup.schedules.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/backup-schedules",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "No runs yet",
        "Runs appear after the schedule executes or you click Run now."
      ],
      "ui_labels": [
        {
          "key": "adminBackupSchedules.noRunsTitle",
          "value": "No runs yet"
        },
        {
          "key": "adminBackupSchedules.noRunsDescription",
          "value": "Runs appear after the schedule executes or you click Run now."
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Backup schedule history** Backup Schedules screen in FeatherPanel (admin area). Use this page to manage backup schedules. Under sidebar item “Backup Schedules”. Requires permission `admin.backup.schedules.view`. Key UI: No runs yet; Runs appear after the schedule executes or you click Run now..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Backup Schedules** (parent nav item), then **Backup schedule history**.\n3. Direct URL: `/admin/backup-schedules/[id]/runs`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.backup.schedules.view` (or `admin.root`)."
    },
    {
      "route": "/admin/dev/plugins/[identifier]/edit",
      "area": "admin",
      "file_slug": "admin-dev-plugins-param-identifier-edit",
      "source": "src/app/(app)/admin/dev/plugins/[identifier]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "identifier"
      ],
      "title": "Edit Plugin",
      "description": "Edit plugin configuration",
      "title_key": "admin.dev.plugins.edit.title",
      "description_key": "admin.dev.plugins.edit.description",
      "component": "EditPluginPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-dev-plugins",
        "title": "Dev Plugins",
        "title_key": "navigation.items.devPlugins",
        "permission": "admin.root",
        "group": "developer",
        "category": "admin",
        "matched_url": "/admin/dev/plugins",
        "inherited": true
      },
      "widget_slugs": [
        "admin-dev-plugins-edit"
      ],
      "sections": [],
      "features": [
        "Description",
        "A brief description of what this plugin does...",
        "Describe what this configuration field is used for..."
      ],
      "ui_labels": [
        {
          "key": "admin.dev.developerModeDescription",
          "value": "Developer mode must be enabled in settings to access developer tools. Please enable it in Admin Settings to continue."
        },
        {
          "key": "admin.dev.plugins.create.description",
          "value": "Description"
        },
        {
          "key": "admin.dev.plugins.create.description_placeholder",
          "value": "A brief description of what this plugin does..."
        },
        {
          "key": "admin.dev.plugins.create.config_description_placeholder",
          "value": "Describe what this configuration field is used for..."
        }
      ],
      "hooks": [
        "useDeveloperMode",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit Plugin** Edit plugin configuration Under sidebar item “Dev Plugins”. Requires permission `admin.root`. Key UI: Description; A brief description of what this plugin does...; Describe what this configuration field is used for....",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Dev Plugins** (parent nav item), then **Edit Plugin**.\n3. Direct URL: `/admin/dev/plugins/[identifier]/edit`.\n4. Replace path params `identifier` with the real resource id(s).\n5. User needs permission `admin.root`."
    },
    {
      "route": "/admin/feathercloud/products/[slug]",
      "area": "admin",
      "file_slug": "admin-feathercloud-products-param-slug",
      "source": "src/app/(app)/admin/feathercloud/products/[slug]/page.tsx",
      "dynamic": true,
      "params": [
        "slug"
      ],
      "title": "Feathercloud · Products",
      "description": "FeatherCloud product detail page for a store listing (slug param).",
      "title_key": null,
      "description_key": null,
      "component": "ProductDetailPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "This product cannot be installed from the panel.",
        "This plugin is already up to date.",
        "No downloadable release found.",
        "Update failed",
        "Install failed",
        "Plugin",
        "Mythic marketplace plugin details",
        "Installed",
        "Install",
        "Product not found",
        "This plugin could not be loaded from the Mythic store.",
        "Free"
      ],
      "ui_labels": [
        {
          "key": "admin.marketplace.plugins.toasts.cannot_install",
          "value": "This product cannot be installed from the panel."
        },
        {
          "key": "admin.marketplace.plugins.toasts.already_up_to_date",
          "value": "This plugin is already up to date."
        },
        {
          "key": "admin.marketplace.plugins.toasts.no_release",
          "value": "No downloadable release found."
        },
        {
          "key": "admin.marketplace.plugins.toasts.updated",
          "value": "Updated {name} to v{version}"
        },
        {
          "key": "admin.marketplace.plugins.toasts.installed",
          "value": "Installed {name}"
        },
        {
          "key": "admin.marketplace.plugins.toasts.update_failed",
          "value": "Update failed"
        },
        {
          "key": "admin.marketplace.plugins.toasts.install_failed",
          "value": "Install failed"
        },
        {
          "key": "admin.marketplace.plugins.detail.fallback_title",
          "value": "Plugin"
        },
        {
          "key": "admin.marketplace.plugins.detail.fallback_description",
          "value": "Mythic marketplace plugin details"
        },
        {
          "key": "admin.marketplace.plugins.actions.update_to",
          "value": "Update to v{version}"
        },
        {
          "key": "admin.marketplace.plugins.labels.installed",
          "value": "Installed"
        },
        {
          "key": "admin.marketplace.plugins.actions.install",
          "value": "Install"
        },
        {
          "key": "admin.marketplace.plugins.detail.not_found_title",
          "value": "Product not found"
        },
        {
          "key": "admin.marketplace.plugins.detail.not_found_description",
          "value": "This plugin could not be loaded from the Mythic store."
        },
        {
          "key": "admin.marketplace.plugins.labels.free",
          "value": "Free"
        },
        {
          "key": "admin.marketplace.plugins.labels.empty_price",
          "value": "N/A"
        },
        {
          "key": "admin.marketplace.plugins.labels.store_version",
          "value": "Store v{version}"
        },
        {
          "key": "admin.marketplace.plugins.labels.installed_version",
          "value": "Installed v{version}"
        },
        {
          "key": "admin.marketplace.plugins.labels.update_available",
          "value": "Update available"
        },
        {
          "key": "admin.marketplace.plugins.labels.owned",
          "value": "Owned"
        },
        {
          "key": "admin.marketplace.plugins.labels.by_author",
          "value": "by {author}"
        },
        {
          "key": "admin.marketplace.plugins.detail.tabs.overview",
          "value": "Overview"
        },
        {
          "key": "admin.marketplace.plugins.detail.tabs.versions",
          "value": "Versions"
        },
        {
          "key": "admin.marketplace.plugins.detail.tabs.reviews",
          "value": "Reviews"
        },
        {
          "key": "admin.marketplace.plugins.detail.tabs.questions",
          "value": "Q&A"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/plugins"
      ],
      "summary": "**Feathercloud · Products** FeatherCloud product detail page for a store listing (slug param). Key UI: This product cannot be installed from the panel.; This plugin is already up to date.; No downloadable release found.; Update failed; Install failed; Plugin.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Feathercloud · Products**.\n3. Direct URL: `/admin/feathercloud/products/[slug]`.\n4. Replace path params `slug` with the real resource id(s)."
    },
    {
      "route": "/admin/knowledgebase/articles/[id]/edit",
      "area": "admin",
      "file_slug": "admin-knowledgebase-articles-param-id-edit",
      "source": "src/app/(app)/admin/knowledgebase/articles/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit Article",
      "description": "Edit knowledgebase article: title",
      "title_key": "admin.knowledgebase.edit.title",
      "description_key": "admin.knowledgebase.edit.subtitle",
      "component": "ArticleEditPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": null,
      "widget_slugs": [
        "admin-knowledgebase-article-edit"
      ],
      "sections": [
        "Title",
        "Attachments",
        "Tags",
        "Knowledge Management",
        "Rich Content",
        "Assets & Tags",
        "Reorder Articles"
      ],
      "features": [
        "Are you sure you want to perform this action?",
        "Save Changes",
        "Content",
        "Attachments",
        "Tags",
        "Edit",
        "Upload any file for this article (max 50MB)",
        "Upload File",
        "Attach files and tags so articles are easier to find.",
        "Status",
        "Draft",
        "Published"
      ],
      "ui_labels": [
        {
          "key": "common.confirm_action",
          "value": "Are you sure you want to perform this action?"
        },
        {
          "key": "admin.knowledgebase.edit.form.save",
          "value": "Save Changes"
        },
        {
          "key": "admin.knowledgebase.edit.tabs.content",
          "value": "Content"
        },
        {
          "key": "admin.knowledgebase.edit.tabs.attachments",
          "value": "Attachments"
        },
        {
          "key": "admin.knowledgebase.edit.tabs.tags",
          "value": "Tags"
        },
        {
          "key": "admin.knowledgebase.articles.form.edit",
          "value": "Edit"
        },
        {
          "key": "admin.knowledgebase.articles.form.title",
          "value": "Title"
        },
        {
          "key": "admin.knowledgebase.edit.attachments.title",
          "value": "Attachments"
        },
        {
          "key": "admin.knowledgebase.edit.attachments.description",
          "value": "Upload any file for this article (max 50MB)"
        },
        {
          "key": "admin.knowledgebase.edit.attachments.upload",
          "value": "Upload File"
        },
        {
          "key": "admin.knowledgebase.edit.tags.title",
          "value": "Tags"
        },
        {
          "key": "admin.knowledgebase.help.attachments.description",
          "value": "Attach files and tags so articles are easier to find."
        },
        {
          "key": "admin.knowledgebase.help.managing.title",
          "value": "Knowledge Management"
        },
        {
          "key": "admin.knowledgebase.help.managing.description",
          "value": "Organize your documentation into categories. Each category can have many articles to help your users find what they need."
        },
        {
          "key": "admin.knowledgebase.help.content.title",
          "value": "Rich Content"
        },
        {
          "key": "admin.knowledgebase.help.content.description",
          "value": "Articles support Markdown, allowing you to use formatting, images, and code blocks for clear and helpful guides."
        },
        {
          "key": "admin.knowledgebase.articles.form.status",
          "value": "Status"
        },
        {
          "key": "admin.knowledgebase.articles.status.draft",
          "value": "Draft"
        },
        {
          "key": "admin.knowledgebase.articles.status.published",
          "value": "Published"
        },
        {
          "key": "admin.knowledgebase.articles.status.archived",
          "value": "Archived"
        },
        {
          "key": "admin.knowledgebase.help.attachments.title",
          "value": "Assets & Tags"
        },
        {
          "key": "admin.knowledgebase.order.title",
          "value": "Reorder Articles"
        },
        {
          "key": "admin.knowledgebase.order.subtitle",
          "value": "Drag and drop articles to change their display order"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.knowledgebase.edit.tags.add_dialog_title",
          "value": "Add Tags"
        },
        {
          "key": "admin.knowledgebase.edit.tags.add_dialog_description",
          "value": "Enter tag names separated by commas (e.g., tutorial, guide, faq)"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/knowledgebase/articles",
        "/api/admin/knowledgebase/articles/reorder",
        "/api/admin/knowledgebase/categories",
        "/api/admin/knowledgebase/upload-icon"
      ],
      "summary": "**Edit Article** Edit knowledgebase article: title Key UI: Are you sure you want to perform this action?; Save Changes; Content; Attachments; Tags; Edit.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Edit Article**.\n3. Direct URL: `/admin/knowledgebase/articles/[id]/edit`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/admin/knowledgebase/categories/[id]/articles",
      "area": "admin",
      "file_slug": "admin-knowledgebase-categories-param-id-articles",
      "source": "src/app/(app)/admin/knowledgebase/categories/[id]/articles/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Manage articles in category: name",
      "description": "Manage articles in category: name",
      "title_key": "admin.knowledgebase.articles.subtitle",
      "description_key": "admin.knowledgebase.articles.subtitle",
      "component": "CategoryArticlesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-knowledgebase",
        "title": "Knowledge Base",
        "title_key": "navigation.items.knowledgebase",
        "permission": "admin.knowledgebase.categories.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/knowledgebase/categories",
        "inherited": true
      },
      "widget_slugs": [
        "admin-knowledgebase-category-articles"
      ],
      "sections": [
        "Reorder Articles",
        "Knowledge Management",
        "Rich Content",
        "Assets & Tags",
        "Title"
      ],
      "features": [
        "Create Article",
        "Save",
        "Attach files and tags so articles are easier to find.",
        "Fill in the details to create a new knowledgebase article.",
        "Upload File",
        "Status",
        "Draft",
        "Published",
        "Archived",
        "Created"
      ],
      "ui_labels": [
        {
          "key": "admin.knowledgebase.articles.messages.delete_confirm",
          "value": "Are you sure you want to delete article {title}?"
        },
        {
          "key": "admin.knowledgebase.order.title",
          "value": "Reorder Articles"
        },
        {
          "key": "admin.knowledgebase.articles.create",
          "value": "Create Article"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.knowledgebase.order.subtitle",
          "value": "Drag and drop articles to change their display order"
        },
        {
          "key": "admin.knowledgebase.help.managing.title",
          "value": "Knowledge Management"
        },
        {
          "key": "admin.knowledgebase.help.managing.description",
          "value": "Organize your documentation into categories. Each category can have many articles to help your users find what they need."
        },
        {
          "key": "admin.knowledgebase.help.content.title",
          "value": "Rich Content"
        },
        {
          "key": "admin.knowledgebase.help.content.description",
          "value": "Articles support Markdown, allowing you to use formatting, images, and code blocks for clear and helpful guides."
        },
        {
          "key": "admin.knowledgebase.help.attachments.title",
          "value": "Assets & Tags"
        },
        {
          "key": "admin.knowledgebase.help.attachments.description",
          "value": "Attach files and tags so articles are easier to find."
        },
        {
          "key": "admin.knowledgebase.articles.form.create_title",
          "value": "Create Article"
        },
        {
          "key": "admin.knowledgebase.articles.form.create_description",
          "value": "Fill in the details to create a new knowledgebase article."
        },
        {
          "key": "admin.knowledgebase.articles.form.title",
          "value": "Title"
        },
        {
          "key": "admin.knowledgebase.edit.attachments.upload",
          "value": "Upload File"
        },
        {
          "key": "admin.knowledgebase.articles.form.status",
          "value": "Status"
        },
        {
          "key": "admin.knowledgebase.articles.status.draft",
          "value": "Draft"
        },
        {
          "key": "admin.knowledgebase.articles.status.published",
          "value": "Published"
        },
        {
          "key": "admin.knowledgebase.articles.status.archived",
          "value": "Archived"
        },
        {
          "key": "admin.roles.labels.created",
          "value": "Created"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/knowledgebase/articles",
        "/api/admin/knowledgebase/articles/reorder",
        "/api/admin/knowledgebase/upload-icon"
      ],
      "summary": "**Manage articles in category: name** Manage articles in category: name Under sidebar item “Knowledge Base”. Requires permission `admin.knowledgebase.categories.view`. Key UI: Create Article; Save; Attach files and tags so articles are easier to find.; Fill in the details to create a new knowledgebase article.; Upload File; Status.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Knowledge Base** (parent nav item), then **Manage articles in category: name**.\n3. Direct URL: `/admin/knowledgebase/categories/[id]/articles`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.knowledgebase.categories.view` (or `admin.root`)."
    },
    {
      "route": "/admin/nodes/[id]/databases",
      "area": "admin",
      "file_slug": "admin-nodes-param-id-databases",
      "source": "src/app/(app)/admin/nodes/[id]/databases/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Nodes · Databases",
      "description": "Nodes screen in FeatherPanel (admin area). Use this page to manage nodes.",
      "title_key": null,
      "description_key": null,
      "component": "NodeDatabasesPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-nodes",
        "title": "Nodes",
        "title_key": "navigation.items.nodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-node-databases-id"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Nodes · Databases** Nodes screen in FeatherPanel (admin area). Use this page to manage nodes. Under sidebar item “Nodes”. Requires permission `admin.nodes.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes** (parent nav item), then **Nodes · Databases**.\n3. Direct URL: `/admin/nodes/[id]/databases`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/nodes/[id]/edit",
      "area": "admin",
      "file_slug": "admin-nodes-param-id-edit",
      "source": "src/app/(app)/admin/nodes/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit Node",
      "description": "Edit the selected node.",
      "title_key": "admin.node.form.edit_title",
      "description_key": "admin.node.form.edit_description",
      "component": "EditNodePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-nodes",
        "title": "Nodes",
        "title_key": "navigation.items.nodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-nodes-edit"
      ],
      "sections": [
        "Allocations",
        "Wings Terminal",
        "Remote Wings Config",
        "Wings Modules",
        "Resource Utilization",
        "Docker Management",
        "System Information",
        "Diagnostics",
        "Wings Self-Update"
      ],
      "features": [
        "Mass move servers"
      ],
      "ui_labels": [
        {
          "key": "admin.node.allocations.title",
          "value": "Allocations"
        },
        {
          "key": "admin.node.view.terminal.title",
          "value": "Wings Terminal"
        },
        {
          "key": "admin.node.view.config.title",
          "value": "Remote Wings Config"
        },
        {
          "key": "admin.node.view.modules.title",
          "value": "Wings Modules"
        },
        {
          "key": "admin.node.view.utilization.title",
          "value": "Resource Utilization"
        },
        {
          "key": "admin.node.view.docker.title",
          "value": "Docker Management"
        },
        {
          "key": "admin.node.view.system.title",
          "value": "System Information"
        },
        {
          "key": "admin.node.view.diagnostics.title",
          "value": "Diagnostics"
        },
        {
          "key": "admin.node.view.self_update.title",
          "value": "Wings Self-Update"
        },
        {
          "key": "admin.node.mass_transfer.button",
          "value": "Mass move servers"
        },
        {
          "key": "admin.node.form.select_location_description",
          "value": "Select a location for this node. Total locations: {total}"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations"
      ],
      "summary": "**Edit Node** Edit the selected node. Under sidebar item “Nodes”. Requires permission `admin.nodes.view`. Key UI: Mass move servers.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes** (parent nav item), then **Edit Node**.\n3. Direct URL: `/admin/nodes/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/plugins/[identifier]",
      "area": "admin",
      "file_slug": "admin-plugins-param-identifier",
      "source": "src/app/(app)/admin/plugins/[identifier]/page.tsx",
      "dynamic": true,
      "params": [
        "identifier"
      ],
      "title": "Frontend Visibility",
      "description": "Hide plugin sidebar items, routes, pages, widgets, and UI-pack entries without editing plugin files.",
      "title_key": "admin.plugins.drawers.config.visibility.title",
      "description_key": "admin.plugins.drawers.config.visibility.description",
      "component": "PluginDetailPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-plugins",
        "title": "Plugins",
        "title_key": "navigation.items.plugins",
        "permission": "admin.plugins.view",
        "group": "overview",
        "category": "admin",
        "matched_url": "/admin/plugins",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [
        "Server Sidebar Spell Restrictions"
      ],
      "features": [
        "No description available",
        "Refresh",
        "Resync Assets",
        "Status",
        "Overview",
        "Settings",
        "Visibility",
        "Spells",
        "Actions",
        "Visit",
        "Plugin Settings",
        "Manage the plugin's required and optional configuration values."
      ],
      "ui_labels": [
        {
          "key": "admin.plugins.grid.no_description",
          "value": "No description available"
        },
        {
          "key": "admin.plugins.actions.refresh",
          "value": "Refresh"
        },
        {
          "key": "admin.plugins.detail.actions.resync_assets",
          "value": "Resync Assets"
        },
        {
          "key": "admin.plugins.detail.status",
          "value": "Status"
        },
        {
          "key": "admin.plugins.detail.tabs.overview",
          "value": "Overview"
        },
        {
          "key": "admin.plugins.detail.tabs.settings",
          "value": "Settings"
        },
        {
          "key": "admin.plugins.detail.tabs.visibility",
          "value": "Visibility"
        },
        {
          "key": "admin.plugins.detail.tabs.spells",
          "value": "Spells"
        },
        {
          "key": "admin.plugins.detail.tabs.actions",
          "value": "Actions"
        },
        {
          "key": "admin.plugins.grid.visit_action",
          "value": "Visit"
        },
        {
          "key": "admin.plugins.drawers.config.settings_title",
          "value": "Plugin Settings"
        },
        {
          "key": "admin.plugins.detail.settings_description",
          "value": "Manage the plugin's required and optional configuration values."
        },
        {
          "key": "admin.plugins.actions.save_settings",
          "value": "Save All Settings"
        },
        {
          "key": "admin.plugins.drawers.config.visibility.empty",
          "value": "No frontend items found for this plugin."
        },
        {
          "key": "admin.plugins.drawers.config.spell_restrictions.title",
          "value": "Server Sidebar Spell Restrictions"
        },
        {
          "key": "admin.plugins.drawers.config.spell_restrictions.save",
          "value": "Save Spell Restrictions"
        }
      ],
      "hooks": [
        "usePluginRoutes",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/spells"
      ],
      "summary": "**Frontend Visibility** Hide plugin sidebar items, routes, pages, widgets, and UI-pack entries without editing plugin files. Under sidebar item “Plugins”. Requires permission `admin.plugins.view`. Key UI: No description available; Refresh; Resync Assets; Status; Overview; Settings.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Plugins** (parent nav item), then **Frontend Visibility**.\n3. Direct URL: `/admin/plugins/[identifier]`.\n4. Replace path params `identifier` with the real resource id(s).\n5. User needs permission `admin.plugins.view` (or `admin.root`)."
    },
    {
      "route": "/admin/roles/[id]/edit",
      "area": "admin",
      "file_slug": "admin-roles-param-id-edit",
      "source": "src/app/(app)/admin/roles/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Roles · Edit",
      "description": "Edit form for an existing resource. Related to: Roles.",
      "title_key": null,
      "description_key": null,
      "component": "EditRolePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-roles",
        "title": "Roles",
        "title_key": "navigation.items.roles",
        "permission": "admin.roles.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/roles",
        "inherited": true
      },
      "widget_slugs": [
        "admin-roles-edit"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets",
        "useRoleEditor"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Roles · Edit** Edit form for an existing resource. Related to: Roles. Under sidebar item “Roles”. Requires permission `admin.roles.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Roles** (parent nav item), then **Roles · Edit**.\n3. Direct URL: `/admin/roles/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.roles.view` (or `admin.root`)."
    },
    {
      "route": "/admin/servers/[id]/edit",
      "area": "admin",
      "file_slug": "admin-servers-param-id-edit",
      "source": "src/app/(app)/admin/servers/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit Server",
      "description": "Modify configuration for name",
      "title_key": "admin.servers.edit.title",
      "description_key": "admin.servers.edit.description",
      "component": "EditServerPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-servers-parent",
        "title": "Servers",
        "title_key": "navigation.items.servers",
        "permission": "admin.servers.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/servers",
        "inherited": true
      },
      "widget_slugs": [
        "admin-servers-edit"
      ],
      "sections": [],
      "features": [
        "Details",
        "Resources",
        "Application",
        "Limits",
        "Startup",
        "Mounts",
        "Allocations",
        "Actions",
        "Save Changes"
      ],
      "ui_labels": [
        {
          "key": "admin.servers.edit.tabs.details",
          "value": "Details"
        },
        {
          "key": "admin.servers.edit.tabs.resources",
          "value": "Resources"
        },
        {
          "key": "admin.servers.edit.tabs.application",
          "value": "Application"
        },
        {
          "key": "admin.servers.edit.tabs.limits",
          "value": "Limits"
        },
        {
          "key": "admin.servers.edit.tabs.startup",
          "value": "Startup"
        },
        {
          "key": "admin.servers.edit.tabs.mounts",
          "value": "Mounts"
        },
        {
          "key": "admin.servers.edit.tabs.allocations",
          "value": "Allocations"
        },
        {
          "key": "admin.servers.edit.tabs.actions",
          "value": "Actions"
        },
        {
          "key": "admin.servers.edit.save",
          "value": "Save Changes"
        },
        {
          "key": "admin.servers.form.select_owner_description",
          "value": "Select a user to assign as the server owner. Total users: {total}"
        },
        {
          "key": "admin.servers.form.select_realm_description",
          "value": "Select a realm for this server. Total realms: {total}"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/allocations",
        "/api/admin/locations",
        "/api/admin/realms",
        "/api/admin/spells",
        "/api/admin/users"
      ],
      "summary": "**Edit Server** Modify configuration for name Under sidebar item “Servers”. Requires permission `admin.servers.view`. Key UI: Details; Resources; Application; Limits; Startup; Mounts.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Servers** (parent nav item), then **Edit Server**.\n3. Direct URL: `/admin/servers/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.servers.view` (or `admin.root`)."
    },
    {
      "route": "/admin/spells/[id]/edit",
      "area": "admin",
      "file_slug": "admin-spells-param-id-edit",
      "source": "src/app/(app)/admin/spells/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit Spell",
      "description": "Edit details for spell: name",
      "title_key": "admin.spells.form.edit_title",
      "description_key": "admin.spells.form.edit_description",
      "component": "EditSpellPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-spells",
        "title": "Spells (Eggs)",
        "title_key": "navigation.items.spells",
        "permission": "admin.realms.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/spells",
        "inherited": true
      },
      "widget_slugs": [
        "admin-spells-edit"
      ],
      "sections": [
        "Variables"
      ],
      "features": [
        "General",
        "Docker",
        "Features",
        "Config",
        "Script",
        "Variables",
        "Description",
        "Configure environment variables for this spell",
        "New Variable",
        "User Editable"
      ],
      "ui_labels": [
        {
          "key": "admin.spells.tabs.general",
          "value": "General"
        },
        {
          "key": "admin.spells.tabs.docker",
          "value": "Docker"
        },
        {
          "key": "admin.spells.tabs.features",
          "value": "Features"
        },
        {
          "key": "admin.spells.tabs.config",
          "value": "Config"
        },
        {
          "key": "admin.spells.tabs.script",
          "value": "Script"
        },
        {
          "key": "admin.spells.tabs.variables",
          "value": "Variables"
        },
        {
          "key": "admin.spells.form.description",
          "value": "Description"
        },
        {
          "key": "admin.spells.variables.title",
          "value": "Variables"
        },
        {
          "key": "admin.spells.variables.description",
          "value": "Configure environment variables for this spell"
        },
        {
          "key": "admin.spells.variables.new",
          "value": "New Variable"
        },
        {
          "key": "admin.spells.variables.description_label",
          "value": "Description"
        },
        {
          "key": "admin.spells.variables.user_editable",
          "value": "User Editable"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit Spell** Edit details for spell: name Under sidebar item “Spells (Eggs)”. Requires permission `admin.realms.view`. Key UI: General; Docker; Features; Config; Script; Variables.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Spells (Eggs)** (parent nav item), then **Edit Spell**.\n3. Direct URL: `/admin/spells/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.realms.view` (or `admin.root`)."
    },
    {
      "route": "/admin/tickets/[uuid]",
      "area": "admin",
      "file_slug": "admin-tickets-param-uuid",
      "source": "src/app/(app)/admin/tickets/[uuid]/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Title",
      "description": "Admin view of a single support ticket thread.",
      "title_key": "admin.tickets.table.title",
      "description_key": "admin.tickets.table.description",
      "component": "TicketViewPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-tickets",
        "title": "Support Tickets",
        "title_key": "navigation.items.tickets",
        "permission": "admin.tickets.view",
        "group": "content",
        "category": "admin",
        "matched_url": "/admin/tickets",
        "inherited": true
      },
      "widget_slugs": [
        "admin-tickets-view"
      ],
      "sections": [],
      "features": [
        "Are you sure you want to delete this ticket?",
        "Edit Ticket",
        "Update ticket metadata and basic information",
        "Category",
        "Priority",
        "Status",
        "Save",
        "Email Preview"
      ],
      "ui_labels": [
        {
          "key": "admin.tickets.messages.delete_confirm",
          "value": "Are you sure you want to delete this ticket?"
        },
        {
          "key": "admin.tickets.view.edit",
          "value": "Edit Ticket"
        },
        {
          "key": "admin.tickets.view.edit_description",
          "value": "Update ticket metadata and basic information"
        },
        {
          "key": "admin.tickets.table.category",
          "value": "Category"
        },
        {
          "key": "admin.tickets.table.priority",
          "value": "Priority"
        },
        {
          "key": "admin.tickets.table.status",
          "value": "Status"
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "admin.tickets.view.mail_preview_title",
          "value": "Email Preview"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/tickets",
        "/api/admin/tickets/categories",
        "/api/admin/tickets/priorities",
        "/api/admin/tickets/statuses"
      ],
      "summary": "**Title** Admin view of a single support ticket thread. Under sidebar item “Support Tickets”. Requires permission `admin.tickets.view`. Key UI: Are you sure you want to delete this ticket?; Edit Ticket; Update ticket metadata and basic information; Category; Priority; Status.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Support Tickets** (parent nav item), then **Title**.\n3. Direct URL: `/admin/tickets/[uuid]`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.tickets.view` (or `admin.root`)."
    },
    {
      "route": "/admin/users/[uuid]",
      "area": "admin",
      "file_slug": "admin-users-param-uuid",
      "source": "src/app/(app)/admin/users/[uuid]/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Users",
      "description": "Manage all users in your system",
      "title_key": "admin.users.title",
      "description_key": "admin.users.subtitle",
      "component": "AdminUserProfilePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-users",
        "title": "Users",
        "title_key": "navigation.items.users",
        "permission": "admin.users.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/users",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Users** Manage all users in your system Requires permission `admin.users.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Go to **Users**.\n3. Direct URL: `/admin/users/[uuid]`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/users/[uuid]/edit",
      "area": "admin",
      "file_slug": "admin-users-param-uuid-edit",
      "source": "src/app/(app)/admin/users/[uuid]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Edit User",
      "description": "Edit user details and permissions.",
      "title_key": "admin.users.edit.title",
      "description_key": "admin.users.edit.description",
      "component": "UserEditPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-users",
        "title": "Users",
        "title_key": "navigation.items.users",
        "permission": "admin.users.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/users",
        "inherited": true
      },
      "widget_slugs": [
        "admin-users-edit"
      ],
      "sections": [
        "User Details",
        "Account Information",
        "Actions",
        "Single Sign-On",
        "Direct Email",
        "Servers",
        "Activities",
        "Potential Alt Accounts",
        "Owned VDS",
        "Mails"
      ],
      "features": [
        "Are you sure you want to unban this user?",
        "Are you sure you want to unlink Discord from this user?",
        "Save Changes",
        "Account ban active",
        "Generate SSO Link",
        "Compose email",
        "Servers",
        "Activities",
        "Potential Alts",
        "VDS",
        "Mails",
        "Status"
      ],
      "ui_labels": [
        {
          "key": "admin.users.edit.potential_alts.clear_user_confirm",
          "value": "Clear all browser/device fingerprint records for {{username}}? They can register again from the same device after this."
        },
        {
          "key": "admin.users.messages.unban_confirm",
          "value": "Are you sure you want to unban this user?"
        },
        {
          "key": "admin.users.messages.discord_confirm",
          "value": "Are you sure you want to unlink Discord from this user?"
        },
        {
          "key": "admin.users.edit.form.title",
          "value": "User Details"
        },
        {
          "key": "admin.users.edit.form.save",
          "value": "Save Changes"
        },
        {
          "key": "admin.users.edit.account_info.title",
          "value": "Account Information"
        },
        {
          "key": "admin.users.edit.actions.title",
          "value": "Actions"
        },
        {
          "key": "admin.moderation.user_banned_title",
          "value": "Account ban active"
        },
        {
          "key": "admin.users.edit.actions.sso.title",
          "value": "Single Sign-On"
        },
        {
          "key": "admin.users.edit.actions.sso.generate",
          "value": "Generate SSO Link"
        },
        {
          "key": "admin.users.edit.actions.email.title",
          "value": "Direct Email"
        },
        {
          "key": "admin.users.edit.actions.email.compose",
          "value": "Compose email"
        },
        {
          "key": "admin.users.edit.tabs.servers",
          "value": "Servers"
        },
        {
          "key": "admin.users.edit.tabs.activities",
          "value": "Activities"
        },
        {
          "key": "admin.users.edit.tabs.potential_alts",
          "value": "Potential Alts"
        },
        {
          "key": "admin.users.edit.tabs.vds",
          "value": "VDS"
        },
        {
          "key": "admin.users.edit.tabs.mails",
          "value": "Mails"
        },
        {
          "key": "admin.users.edit.servers.title",
          "value": "Servers"
        },
        {
          "key": "admin.users.edit.servers.status",
          "value": "Status"
        },
        {
          "key": "admin.users.edit.servers.actions",
          "value": "Actions"
        },
        {
          "key": "admin.users.edit.activities.title",
          "value": "Activities"
        },
        {
          "key": "admin.users.edit.potential_alts.title",
          "value": "Potential Alt Accounts"
        },
        {
          "key": "admin.users.edit.potential_alts.actions",
          "value": "Actions"
        },
        {
          "key": "admin.users.edit.potential_alts.empty",
          "value": "No other users share IP addresses or browser sync IDs with this account."
        },
        {
          "key": "admin.users.edit.vds.title",
          "value": "Owned VDS"
        },
        {
          "key": "admin.users.edit.vds.status",
          "value": "Status"
        },
        {
          "key": "admin.users.edit.vds.actions",
          "value": "Actions"
        },
        {
          "key": "admin.users.edit.vds.empty",
          "value": "This user does not own any VDS."
        },
        {
          "key": "vds.console.status.suspended",
          "value": "Suspended"
        },
        {
          "key": "vds.console.status.unknown",
          "value": "Unknown"
        },
        {
          "key": "admin.users.edit.mails.title",
          "value": "Mails"
        },
        {
          "key": "admin.users.edit.mails.status",
          "value": "Status"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/blocked-ips",
        "/api/admin/roles"
      ],
      "summary": "**Edit User** Edit user details and permissions. Under sidebar item “Users”. Requires permission `admin.users.view`. Key UI: Are you sure you want to unban this user?; Are you sure you want to unlink Discord from this user?; Save Changes; Account ban active; Generate SSO Link; Compose email.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Users** (parent nav item), then **Edit User**.\n3. Direct URL: `/admin/users/[uuid]/edit`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/users/[uuid]/servers",
      "area": "admin",
      "file_slug": "admin-users-param-uuid-servers",
      "source": "src/app/(app)/admin/users/[uuid]/servers/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "User Servers",
      "description": "Servers owned by {username}",
      "title_key": "admin.users.servers.title",
      "description_key": "admin.users.servers.description",
      "component": "UserServersPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-users",
        "title": "Users",
        "title_key": "navigation.items.users",
        "permission": "admin.users.view",
        "group": "users",
        "category": "admin",
        "matched_url": "/admin/users",
        "inherited": true
      },
      "widget_slugs": [
        "admin-users-servers"
      ],
      "sections": [],
      "features": [
        "Servers owned by this user",
        "This user does not own any servers.",
        "View details",
        "Edit server",
        "Owned VDS",
        "This user does not own any VDS instances."
      ],
      "ui_labels": [
        {
          "key": "admin.users.servers.descriptionGeneric",
          "value": "Servers owned by this user"
        },
        {
          "key": "admin.users.servers.noServersDescription",
          "value": "This user does not own any servers."
        },
        {
          "key": "admin.servers.actions.view",
          "value": "View details"
        },
        {
          "key": "admin.servers.actions.edit",
          "value": "Edit server"
        },
        {
          "key": "admin.users.servers.vdsTitle",
          "value": "Owned VDS"
        },
        {
          "key": "admin.users.servers.noVdsDescription",
          "value": "This user does not own any VDS instances."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**User Servers** Servers owned by {username} Under sidebar item “Users”. Requires permission `admin.users.view`. Key UI: Servers owned by this user; This user does not own any servers.; View details; Edit server; Owned VDS; This user does not own any VDS instances..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Users** (parent nav item), then **User Servers**.\n3. Direct URL: `/admin/users/[uuid]/servers`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.users.view` (or `admin.root`)."
    },
    {
      "route": "/admin/vds-nodes/[id]/edit",
      "area": "admin",
      "file_slug": "admin-vds-nodes-param-id-edit",
      "source": "src/app/(app)/admin/vds-nodes/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit VDS Node",
      "description": "Update Proxmox connection details, location and IP pool.",
      "title_key": "admin.vdsNodes.edit.title",
      "description_key": "admin.vdsNodes.edit.description",
      "component": "EditVdsNodePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-vds-nodes",
        "title": "Nodes (VDS)",
        "title_key": "navigation.items.vdsNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/vds-nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-vds-node-edit"
      ],
      "sections": [],
      "features": [
        "Details",
        "Connection",
        "Advanced",
        "Storage Configuration",
        "IP Pool",
        "Templates",
        "DHCP Agent",
        "Firewall",
        "Info",
        "Test Connection",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "admin.vdsNodes.tabs.details",
          "value": "Details"
        },
        {
          "key": "admin.vdsNodes.tabs.connection",
          "value": "Connection"
        },
        {
          "key": "admin.vdsNodes.tabs.advanced",
          "value": "Advanced"
        },
        {
          "key": "admin.vdsNodes.tabs.storage",
          "value": "Storage Configuration"
        },
        {
          "key": "admin.vdsNodes.tabs.ip_pool",
          "value": "IP Pool"
        },
        {
          "key": "admin.vdsNodes.tabs.templates",
          "value": "Templates"
        },
        {
          "key": "admin.vdsNodes.tabs.dhcp",
          "value": "DHCP Agent"
        },
        {
          "key": "admin.vdsNodes.tabs.firewall",
          "value": "Firewall"
        },
        {
          "key": "admin.vdsNodes.tabs.info",
          "value": "Info"
        },
        {
          "key": "admin.vdsNodes.connection.test_button",
          "value": "Test Connection"
        },
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations"
      ],
      "summary": "**Edit VDS Node** Update Proxmox connection details, location and IP pool. Under sidebar item “Nodes (VDS)”. Requires permission `admin.nodes.view`. Key UI: Details; Connection; Advanced; Storage Configuration; IP Pool; Templates.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes (VDS)** (parent nav item), then **Edit VDS Node**.\n3. Direct URL: `/admin/vds-nodes/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/vm-instances/[id]/edit",
      "area": "admin",
      "file_slug": "admin-vm-instances-param-id-edit",
      "source": "src/app/(app)/admin/vm-instances/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit instance",
      "description": "Update hostname, notes, owner, IP, resources, and disks.",
      "title_key": "admin.vmInstances.edit",
      "description_key": "admin.vmInstances.edit_desc",
      "component": "VmInstanceEditPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-vm-instances",
        "title": "Virtual Servers (VDS)",
        "title_key": "navigation.items.virtualServersVds",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/vm-instances",
        "inherited": true
      },
      "widget_slugs": [
        "admin-vm-instance-edit"
      ],
      "sections": [],
      "features": [
        "Details",
        "Network",
        "Resources",
        "Disks",
        "Task history",
        "VDS suspension active",
        "Suspend VDS instance?"
      ],
      "ui_labels": [
        {
          "key": "admin.vmInstances.edit_tabs.details",
          "value": "Details"
        },
        {
          "key": "admin.vmInstances.edit_tabs.network",
          "value": "Network"
        },
        {
          "key": "admin.vmInstances.edit_tabs.resources",
          "value": "Resources"
        },
        {
          "key": "admin.vmInstances.edit_tabs.disks",
          "value": "Disks"
        },
        {
          "key": "admin.vmInstances.edit_tabs.history",
          "value": "Task history"
        },
        {
          "key": "admin.moderation.vds_suspended_title",
          "value": "VDS suspension active"
        },
        {
          "key": "admin.vmInstances.suspend_confirm_title",
          "value": "Suspend VDS instance?"
        },
        {
          "key": "admin.vmInstances.suspend_confirm_description",
          "value": "Provide a reason for staff before suspending {hostname}. The owner will be notified by email."
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/users"
      ],
      "summary": "**Edit instance** Update hostname, notes, owner, IP, resources, and disks. Under sidebar item “Virtual Servers (VDS)”. Requires permission `admin.nodes.view`. Key UI: Details; Network; Resources; Disks; Task history; VDS suspension active.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Virtual Servers (VDS)** (parent nav item), then **Edit instance**.\n3. Direct URL: `/admin/vm-instances/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/web-nodes/[id]",
      "area": "admin",
      "file_slug": "admin-web-nodes-param-id",
      "source": "src/app/(app)/admin/web-nodes/[id]/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Admin · Web Nodes",
      "description": "Nodes (Web) screen in FeatherPanel (admin area). Use this page to manage nodes (web).",
      "title_key": null,
      "description_key": null,
      "component": "WebNodeRedirectPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-web-nodes",
        "title": "Nodes (Web)",
        "title_key": "navigation.items.webNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/web-nodes",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Admin · Web Nodes** Nodes (Web) screen in FeatherPanel (admin area). Use this page to manage nodes (web). Under sidebar item “Nodes (Web)”. Requires permission `admin.nodes.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes (Web)** (parent nav item), then **Admin · Web Nodes**.\n3. Direct URL: `/admin/web-nodes/[id]`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/web-nodes/[id]/edit",
      "area": "admin",
      "file_slug": "admin-web-nodes-param-id-edit",
      "source": "src/app/(app)/admin/web-nodes/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Web Nodes · Edit",
      "description": "Edit form for an existing resource. Related to: Nodes (Web).",
      "title_key": null,
      "description_key": null,
      "component": "EditWebNodePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-web-nodes",
        "title": "Nodes (Web)",
        "title_key": "navigation.items.webNodes",
        "permission": "admin.nodes.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/web-nodes",
        "inherited": true
      },
      "widget_slugs": [
        "admin-web-node-edit"
      ],
      "sections": [],
      "features": [
        "Status",
        "Diagnostics",
        "Package manager",
        "Self-update",
        "Hosting setup",
        "Edit Web Node",
        "Update this FeatherQuilld web hosting node."
      ],
      "ui_labels": [
        {
          "key": "admin.webNodes.status.tab",
          "value": "Status"
        },
        {
          "key": "admin.webNodes.diagnostics.tab",
          "value": "Diagnostics"
        },
        {
          "key": "admin.webNodes.packages.tab",
          "value": "Package manager"
        },
        {
          "key": "admin.webNodes.selfUpdate.tab",
          "value": "Self-update"
        },
        {
          "key": "admin.webNodes.hostingSetup.tab",
          "value": "Hosting setup"
        },
        {
          "key": "admin.webNodes.form.save_validation_failed_tab",
          "value": "Check the {tab} tab and fix the highlighted fields before saving."
        },
        {
          "key": "admin.webNodes.form.edit_title",
          "value": "Edit Web Node"
        },
        {
          "key": "admin.webNodes.form.edit_description",
          "value": "Update this FeatherQuilld web hosting node."
        },
        {
          "key": "admin.webNodes.form.select_location_description",
          "value": "Select a web hosting location for this node. Total locations: {total}"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/admin/locations"
      ],
      "summary": "**Web Nodes · Edit** Edit form for an existing resource. Related to: Nodes (Web). Under sidebar item “Nodes (Web)”. Requires permission `admin.nodes.view`. Key UI: Status; Diagnostics; Package manager; Self-update; Hosting setup; Edit Web Node.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Nodes (Web)** (parent nav item), then **Web Nodes · Edit**.\n3. Direct URL: `/admin/web-nodes/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.nodes.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webplates/[id]/edit",
      "area": "admin",
      "file_slug": "admin-webplates-param-id-edit",
      "source": "src/app/(app)/admin/webplates/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit WebPlate",
      "description": "Edit details for this web hosting template",
      "title_key": "admin.webPlates.form.edit_title",
      "description_key": "admin.webPlates.form.edit_description",
      "component": "EditWebPlatePage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webplates",
        "title": "WebPlates",
        "title_key": "navigation.items.webPlates",
        "permission": "admin.webplates.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webplates",
        "inherited": true
      },
      "widget_slugs": [
        "admin-webplates-edit"
      ],
      "sections": [],
      "features": [
        "Runtime",
        "Install script",
        "Default schedules",
        "Description"
      ],
      "ui_labels": [
        {
          "key": "admin.webPlates.form.runtime_section",
          "value": "Runtime"
        },
        {
          "key": "admin.webPlates.form.install_section",
          "value": "Install script"
        },
        {
          "key": "admin.webPlates.form.schedules_section",
          "value": "Default schedules"
        },
        {
          "key": "admin.webPlates.form.description",
          "value": "Description"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useSaveShortcut"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit WebPlate** Edit details for this web hosting template Under sidebar item “WebPlates”. Requires permission `admin.webplates.view`. Key UI: Runtime; Install script; Default schedules; Description.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **WebPlates** (parent nav item), then **Edit WebPlate**.\n3. Direct URL: `/admin/webplates/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.webplates.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webspaces/[uuid]",
      "area": "admin",
      "file_slug": "admin-webspaces-param-uuid",
      "source": "src/app/(app)/admin/webspaces/[uuid]/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Website access",
      "description": "node · plate · uuid",
      "title_key": "webSpaces.access.title",
      "description_key": "admin.webSpaces.detail.header_meta",
      "component": "AdminWebSpaceDetailPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webspaces",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Reinstall this WebSpace?",
        "Recreate the runtime container? The site may be briefly unavailable.",
        "Restore this backup? Current files will be overwritten.",
        "Delete this backup?",
        "Suspend this WebSpace? The site will be stopped.",
        "This WebSpace is suspended. Contact an administrator for assistance.",
        "Edit",
        "Status",
        "Create backup",
        "No backups yet.",
        "Download",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "admin.webSpaces.messages.reinstall_confirm",
          "value": "Reinstall this WebSpace?"
        },
        {
          "key": "admin.webSpaces.messages.recreate_runtime_confirm",
          "value": "Recreate the runtime container? The site may be briefly unavailable."
        },
        {
          "key": "admin.webSpaces.messages.restore_confirm",
          "value": "Restore this backup? Current files will be overwritten."
        },
        {
          "key": "admin.webSpaces.messages.delete_backup_confirm",
          "value": "Delete this backup?"
        },
        {
          "key": "admin.webSpaces.messages.suspend_confirm",
          "value": "Suspend this WebSpace? The site will be stopped."
        },
        {
          "key": "webSpaces.suspended.description",
          "value": "This WebSpace is suspended. Contact an administrator for assistance."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.status",
          "value": "Status"
        },
        {
          "key": "admin.webSpaces.backups_ui.create",
          "value": "Create backup"
        },
        {
          "key": "admin.webSpaces.backups_ui.empty",
          "value": "No backups yet."
        },
        {
          "key": "admin.webSpaces.backups_ui.download",
          "value": "Download"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Website access** node · plate · uuid Under sidebar item “WebSpaces”. Requires permission `admin.webspaces.view`. Key UI: Reinstall this WebSpace?; Recreate the runtime container? The site may be briefly unavailable.; Restore this backup? Current files will be overwritten.; Delete this backup?; Suspend this WebSpace? The site will be stopped.; This WebSpace is suspended. Contact an administrator for assistance..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **WebSpaces** (parent nav item), then **Website access**.\n3. Direct URL: `/admin/webspaces/[uuid]`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webspaces/[uuid]/edit",
      "area": "admin",
      "file_slug": "admin-webspaces-param-uuid-edit",
      "source": "src/app/(app)/admin/webspaces/[uuid]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Edit WebSpace",
      "description": "Edit form for an existing resource. Related to: WebSpaces.",
      "title_key": "admin.webSpaces.edit_title",
      "description_key": null,
      "component": "AdminWebSpaceEditPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webspaces",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Remove the custom certificate and use automatic ACME again?",
        "Description",
        "Database limit",
        "Custom SSL certificate",
        "Recreate runtime?",
        "Save & recreate"
      ],
      "ui_labels": [
        {
          "key": "admin.webSpaces.form.custom_ssl_remove_confirm",
          "value": "Remove the custom certificate and use automatic ACME again?"
        },
        {
          "key": "admin.webSpaces.form.description",
          "value": "Description"
        },
        {
          "key": "admin.webSpaces.database_limit",
          "value": "Database limit"
        },
        {
          "key": "webSpaces.settings.customSslTitle",
          "value": "Custom SSL certificate"
        },
        {
          "key": "admin.webSpaces.form.webplate_change_title",
          "value": "Recreate runtime?"
        },
        {
          "key": "admin.webSpaces.form.webplate_change_confirm",
          "value": "Save & recreate"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/webplates"
      ],
      "summary": "**Edit WebSpace** Edit form for an existing resource. Related to: WebSpaces. Under sidebar item “WebSpaces”. Requires permission `admin.webspaces.view`. Key UI: Remove the custom certificate and use automatic ACME again?; Description; Database limit; Custom SSL certificate; Recreate runtime?; Save & recreate.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **WebSpaces** (parent nav item), then **Edit WebSpace**.\n3. Direct URL: `/admin/webspaces/[uuid]/edit`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/webspaces/[uuid]/install",
      "area": "admin",
      "file_slug": "admin-webspaces-param-uuid-install",
      "source": "src/app/(app)/admin/webspaces/[uuid]/install/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Webspaces · Install",
      "description": "WebSpaces screen in FeatherPanel (admin area). Use this page to manage webspaces.",
      "title_key": null,
      "description_key": null,
      "component": "AdminWebSpaceInstallPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": "admin.webspaces.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/webspaces",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Webspaces · Install** WebSpaces screen in FeatherPanel (admin area). Use this page to manage webspaces. Under sidebar item “WebSpaces”. Requires permission `admin.webspaces.view`.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **WebSpaces** (parent nav item), then **Webspaces · Install**.\n3. Direct URL: `/admin/webspaces/[uuid]/install`.\n4. Replace path params `uuid` with the real resource id(s).\n5. User needs permission `admin.webspaces.view` (or `admin.root`)."
    },
    {
      "route": "/admin/wings-backups/destinations/[id]/edit",
      "area": "admin",
      "file_slug": "admin-wings-backups-destinations-param-id-edit",
      "source": "src/app/(app)/admin/wings-backups/destinations/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit destination",
      "description": "Destination #id",
      "title_key": "adminWingsBackups.destinationEditTitle",
      "description_key": "adminWingsBackups.destinationEditDescription",
      "component": "EditWingsBackupDestinationPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-wings-backups",
        "title": "Wings Backups",
        "title_key": "navigation.items.wingsBackups",
        "permission": "admin.wings.backups.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/wings-backups",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Save"
      ],
      "ui_labels": [
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [
        "/api/admin/wings-backups/destinations"
      ],
      "summary": "**Edit destination** Destination #id Under sidebar item “Wings Backups”. Requires permission `admin.wings.backups.view`. Key UI: Save.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Wings Backups** (parent nav item), then **Edit destination**.\n3. Direct URL: `/admin/wings-backups/destinations/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.wings.backups.view` (or `admin.root`)."
    },
    {
      "route": "/admin/wings-backups/policies/[id]/edit",
      "area": "admin",
      "file_slug": "admin-wings-backups-policies-param-id-edit",
      "source": "src/app/(app)/admin/wings-backups/policies/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Edit Wings backup policy",
      "description": "Policy #id",
      "title_key": "adminWingsBackups.policyEditTitle",
      "description_key": "adminWingsBackups.policyEditDescription",
      "component": "EditWingsBackupPolicyPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-wings-backups",
        "title": "Wings Backups",
        "title_key": "navigation.items.wingsBackups",
        "permission": "admin.wings.backups.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/wings-backups",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Save"
      ],
      "ui_labels": [
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit Wings backup policy** Policy #id Under sidebar item “Wings Backups”. Requires permission `admin.wings.backups.view`. Key UI: Save.",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Wings Backups** (parent nav item), then **Edit Wings backup policy**.\n3. Direct URL: `/admin/wings-backups/policies/[id]/edit`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.wings.backups.view` (or `admin.root`)."
    },
    {
      "route": "/admin/wings-backups/policies/[id]/runs",
      "area": "admin",
      "file_slug": "admin-wings-backups-policies-param-id-runs",
      "source": "src/app/(app)/admin/wings-backups/policies/[id]/runs/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Policy runs",
      "description": "History for policy #id",
      "title_key": "adminWingsBackups.runsTitle",
      "description_key": "adminWingsBackups.runsDescription",
      "component": "WingsBackupPolicyRunsPage",
      "audience": "Panel administrators (requires admin permissions)",
      "nav": {
        "id": "admin-wings-backups",
        "title": "Wings Backups",
        "title_key": "navigation.items.wingsBackups",
        "permission": "admin.wings.backups.view",
        "group": "infrastructure",
        "category": "admin",
        "matched_url": "/admin/wings-backups",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "No runs yet",
        "Runs appear after the policy executes or you click Run now."
      ],
      "ui_labels": [
        {
          "key": "adminWingsBackups.noRunsTitle",
          "value": "No runs yet"
        },
        {
          "key": "adminWingsBackups.noRunsDescription",
          "value": "Runs appear after the policy executes or you click Run now."
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Policy runs** History for policy #id Under sidebar item “Wings Backups”. Requires permission `admin.wings.backups.view`. Key UI: No runs yet; Runs appear after the policy executes or you click Run now..",
      "how_to_guide_users": "1. Open Admin sidebar.\n2. Open **Wings Backups** (parent nav item), then **Policy runs**.\n3. Direct URL: `/admin/wings-backups/policies/[id]/runs`.\n4. Replace path params `id` with the real resource id(s).\n5. User needs permission `admin.wings.backups.view` (or `admin.root`)."
    },
    {
      "route": "/auth/forgot-password",
      "area": "auth",
      "file_slug": "auth-forgot-password",
      "source": "src/app/(app)/auth/forgot-password/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Reset your password",
      "description": "Enter your email and we'll send you a reset link",
      "title_key": "auth.forgot_password.title",
      "description_key": "auth.forgot_password.subtitle",
      "component": "ForgotPasswordPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Reset your password** Enter your email and we'll send you a reset link",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Reset your password**.\n3. Direct URL: `/auth/forgot-password`."
    },
    {
      "route": "/auth/login",
      "area": "auth",
      "file_slug": "auth-login",
      "source": "src/app/(app)/auth/login/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Welcome back!",
      "description": "We're so excited to see you again!",
      "title_key": "auth.login.title",
      "description_key": "auth.login.subtitle",
      "component": "LoginPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Welcome back!** We're so excited to see you again!",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Welcome back!**.\n3. Direct URL: `/auth/login`."
    },
    {
      "route": "/auth/logout",
      "area": "auth",
      "file_slug": "auth-logout",
      "source": "src/app/(app)/auth/logout/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Logging out...",
      "description": "Please wait while we securely log you out and clean up your session.",
      "title_key": "auth.logout.title",
      "description_key": "auth.logout.subtitle",
      "component": "LogoutPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Logging out...** Please wait while we securely log you out and clean up your session.",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Logging out...**.\n3. Direct URL: `/auth/logout`."
    },
    {
      "route": "/auth/qr",
      "area": "auth",
      "file_slug": "auth-qr",
      "source": "src/app/(app)/auth/qr/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Log in with QR Code",
      "description": "Scan with a phone that is already logged in to FeatherPanel.",
      "title_key": "auth.qr.title",
      "description_key": "auth.qr.subtitle",
      "component": "QrLoginPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Sign-in approved",
        "You can close this page. The other device should finish signing in shortly.",
        "Sign-in denied",
        "The other device will not be signed in.",
        "Sign-in expired",
        "Approve this login?",
        "Only approve if you started this sign-in on another device."
      ],
      "ui_labels": [
        {
          "key": "auth.qr.approvedTitle",
          "value": "Sign-in approved"
        },
        {
          "key": "auth.qr.approvedDescription",
          "value": "You can close this page. The other device should finish signing in shortly."
        },
        {
          "key": "auth.qr.deniedTitle",
          "value": "Sign-in denied"
        },
        {
          "key": "auth.qr.deniedDescription",
          "value": "The other device will not be signed in."
        },
        {
          "key": "auth.qr.expiredTitle",
          "value": "Sign-in expired"
        },
        {
          "key": "auth.qr.expiredDescription",
          "value": "This login request timed out. Scan a new QR code or enter a fresh code from the other device."
        },
        {
          "key": "auth.qr.approveTitle",
          "value": "Approve this login?"
        },
        {
          "key": "auth.qr.approveSubtitle",
          "value": "Only approve if you started this sign-in on another device."
        }
      ],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Log in with QR Code** Scan with a phone that is already logged in to FeatherPanel. Key UI: Sign-in approved; You can close this page. The other device should finish signing in shortly.; Sign-in denied; The other device will not be signed in.; Sign-in expired; Approve this login?.",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Log in with QR Code**.\n3. Direct URL: `/auth/qr`."
    },
    {
      "route": "/auth/register",
      "area": "auth",
      "file_slug": "auth-register",
      "source": "src/app/(app)/auth/register/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Create an account",
      "description": "Get started with us today",
      "title_key": "auth.register.title",
      "description_key": "auth.register.subtitle",
      "component": "RegisterPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create an account** Get started with us today",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Create an account**.\n3. Direct URL: `/auth/register`."
    },
    {
      "route": "/auth/reset-password",
      "area": "auth",
      "file_slug": "auth-reset-password",
      "source": "src/app/(app)/auth/reset-password/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Set new password",
      "description": "Choose a strong password for your account",
      "title_key": "auth.reset_password.title",
      "description_key": "auth.reset_password.subtitle",
      "component": "ResetPasswordPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Set new password** Choose a strong password for your account",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Set new password**.\n3. Direct URL: `/auth/reset-password`."
    },
    {
      "route": "/auth/setup-2fa",
      "area": "auth",
      "file_slug": "auth-setup-2fa",
      "source": "src/app/(app)/auth/setup-2fa/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Setup 2FA",
      "description": "Scan the QR code with your authenticator app",
      "title_key": "auth.setup_2fa.title",
      "description_key": "auth.setup_2fa.subtitle",
      "component": "SetupTwoFactorPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Setup 2FA** Scan the QR code with your authenticator app",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Setup 2FA**.\n3. Direct URL: `/auth/setup-2fa`."
    },
    {
      "route": "/auth/verify-2fa",
      "area": "auth",
      "file_slug": "auth-verify-2fa",
      "source": "src/app/(app)/auth/verify-2fa/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Two-Factor Authentication",
      "description": "Enter the 6-digit code from your authenticator app",
      "title_key": "auth.verify_2fa.title",
      "description_key": "auth.verify_2fa.subtitle",
      "component": "VerifyTwoFactorPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Two-Factor Authentication** Enter the 6-digit code from your authenticator app",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Two-Factor Authentication**.\n3. Direct URL: `/auth/verify-2fa`."
    },
    {
      "route": "/auth/verify-email",
      "area": "auth",
      "file_slug": "auth-verify-email",
      "source": "src/app/(app)/auth/verify-email/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Auth · Verify Email",
      "description": "Email verification screen. Related to: Auth.",
      "title_key": null,
      "description_key": null,
      "component": "VerifyEmailPage",
      "audience": "Unauthenticated or authenticating visitors",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Auth · Verify Email** Email verification screen. Related to: Auth.",
      "how_to_guide_users": "1. Open Auth screens (login/register/etc.).\n2. Go to **Auth · Verify Email**.\n3. Direct URL: `/auth/verify-email`."
    },
    {
      "route": "/dashboard",
      "area": "dashboard",
      "file_slug": "dashboard",
      "source": "src/app/(app)/dashboard/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Resources",
      "description": "Monitor your infrastructure and manage your services.",
      "title_key": "dashboard.resources.title",
      "description_key": "dashboard.subtitle",
      "component": "DashboardPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "user-dashboard",
        "title": "User Dashboard",
        "title_key": "navigation.items.userDashboard",
        "permission": null,
        "group": "overview",
        "category": "admin",
        "matched_url": "/dashboard",
        "inherited": false
      },
      "widget_slugs": [
        "dashboard"
      ],
      "sections": [
        "Favorite servers",
        "Recent Activity"
      ],
      "features": [
        "Welcome banner"
      ],
      "ui_labels": [
        {
          "key": "dashboard.favorite_servers.title",
          "value": "Favorite servers"
        },
        {
          "key": "dashboard.layout.block_labels.hero",
          "value": "Welcome banner"
        },
        {
          "key": "dashboard.activity.title",
          "value": "Recent Activity"
        }
      ],
      "hooks": [
        "useDashboardLayout",
        "useDateFormatOptions",
        "useFavoriteServerUuids",
        "usePluginWidgets",
        "useServersWebSocket",
        "useSession",
        "useSettings"
      ],
      "api_modules": [
        "servers-api",
        "vms-api"
      ],
      "api_paths": [
        "/api/user/webspaces"
      ],
      "summary": "**Resources** Monitor your infrastructure and manage your services. Sidebar label: “User Dashboard”. Key UI: Welcome banner.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **User Dashboard**, then **Resources**.\n3. Direct URL: `/dashboard`."
    },
    {
      "route": "/dashboard/account",
      "area": "dashboard",
      "file_slug": "dashboard-account",
      "source": "src/app/(app)/dashboard/account/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "SSH Keys",
      "description": "Account screen in FeatherPanel (dashboard area). Use this page to manage account.",
      "title_key": "account.sshKeys.title",
      "description_key": null,
      "component": "AccountPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "account",
        "title": "Account",
        "title_key": "navigation.items.account",
        "permission": null,
        "group": "account",
        "category": "main",
        "matched_url": "/dashboard/account",
        "inherited": false
      },
      "widget_slugs": [
        "dashboard-account"
      ],
      "sections": [
        "API Keys",
        "MCP",
        "Activity Log",
        "Mail List"
      ],
      "features": [],
      "ui_labels": [
        {
          "key": "account.apiKeys.title",
          "value": "API Keys"
        },
        {
          "key": "account.mcp.title",
          "value": "MCP"
        },
        {
          "key": "account.activity.title",
          "value": "Activity Log"
        },
        {
          "key": "account.mail.title",
          "value": "Mail List"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**SSH Keys** Account screen in FeatherPanel (dashboard area). Use this page to manage account. Sidebar label: “Account”.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Account**, then **SSH Keys**.\n3. Direct URL: `/dashboard/account`."
    },
    {
      "route": "/dashboard/account/login-device",
      "area": "dashboard",
      "file_slug": "dashboard-account-login-device",
      "source": "src/app/(app)/dashboard/account/login-device/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Sign in another device",
      "description": "Enter the code shown on the other device’s login screen. Works even if you signed in with Discord or SSO.",
      "title_key": "account.loginDevice.title",
      "description_key": "account.loginDevice.subtitle",
      "component": "LoginDevicePage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "account",
        "title": "Account",
        "title_key": "navigation.items.account",
        "permission": null,
        "group": "account",
        "category": "main",
        "matched_url": "/dashboard/account",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Sign-in approved",
        "The other device should finish signing in shortly.",
        "Sign-in denied",
        "The other device will not be signed in.",
        "Sign-in expired",
        "Approve this login?",
        "Only approve if you started this sign-in on another device.",
        "Sign-in code"
      ],
      "ui_labels": [
        {
          "key": "auth.qr.expiredDescription",
          "value": "This login request timed out. Scan a new QR code or enter a fresh code from the other device."
        },
        {
          "key": "account.loginDevice.approvedTitle",
          "value": "Sign-in approved"
        },
        {
          "key": "account.loginDevice.approvedDescription",
          "value": "The other device should finish signing in shortly."
        },
        {
          "key": "account.loginDevice.deniedTitle",
          "value": "Sign-in denied"
        },
        {
          "key": "account.loginDevice.deniedDescription",
          "value": "The other device will not be signed in."
        },
        {
          "key": "auth.qr.expiredTitle",
          "value": "Sign-in expired"
        },
        {
          "key": "auth.qr.approveTitle",
          "value": "Approve this login?"
        },
        {
          "key": "auth.qr.approveSubtitle",
          "value": "Only approve if you started this sign-in on another device."
        },
        {
          "key": "account.loginDevice.codeLabel",
          "value": "Sign-in code"
        }
      ],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Sign in another device** Enter the code shown on the other device’s login screen. Works even if you signed in with Discord or SSO. Under sidebar item “Account”. Key UI: Sign-in approved; The other device should finish signing in shortly.; Sign-in denied; The other device will not be signed in.; Sign-in expired; Approve this login?.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Account** (parent nav item), then **Sign in another device**.\n3. Direct URL: `/dashboard/account/login-device`."
    },
    {
      "route": "/dashboard/account/oauth2/api/device",
      "area": "dashboard",
      "file_slug": "dashboard-account-oauth2-api-device",
      "source": "src/app/(app)/dashboard/account/oauth2/api/device/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Api · Device",
      "description": "Account screen in FeatherPanel (dashboard area). Use this page to manage account.",
      "title_key": null,
      "description_key": null,
      "component": "OAuth2DeviceAuthorizePage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "account",
        "title": "Account",
        "title_key": "navigation.items.account",
        "permission": null,
        "group": "account",
        "category": "main",
        "matched_url": "/dashboard/account",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Device authorized",
        "Authorization denied",
        "Connect a device",
        "wants to connect to your account."
      ],
      "ui_labels": [
        {
          "key": "account.apiKeys.oauth2.deviceAuthorizedTitle",
          "value": "Device authorized"
        },
        {
          "key": "account.apiKeys.oauth2.deviceDeniedTitle",
          "value": "Authorization denied"
        },
        {
          "key": "account.apiKeys.oauth2.deviceEnterTitle",
          "value": "Connect a device"
        },
        {
          "key": "account.apiKeys.oauth2.deviceEnterDescription",
          "value": "Enter the code shown by your app or CLI to authorize access without a callback URL."
        },
        {
          "key": "account.apiKeys.oauth2.authorizeSubtitle",
          "value": "wants to connect to your account."
        }
      ],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/api-clients/oauth2/authorize/approve",
        "/api/user/api-clients/oauth2/authorize/deny",
        "/api/user/api-clients/oauth2/device/claim"
      ],
      "summary": "**Api · Device** Account screen in FeatherPanel (dashboard area). Use this page to manage account. Under sidebar item “Account”. Key UI: Device authorized; Authorization denied; Connect a device; wants to connect to your account..",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Account** (parent nav item), then **Api · Device**.\n3. Direct URL: `/dashboard/account/oauth2/api/device`."
    },
    {
      "route": "/dashboard/account/oauth2/api/new",
      "area": "dashboard",
      "file_slug": "dashboard-account-oauth2-api-new",
      "source": "src/app/(app)/dashboard/account/oauth2/api/new/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Api · New",
      "description": "Create form for a new resource. Related to: Account.",
      "title_key": null,
      "description_key": null,
      "component": "OAuth2ApiAuthorizePage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "account",
        "title": "Account",
        "title_key": "navigation.items.account",
        "permission": null,
        "group": "account",
        "category": "main",
        "matched_url": "/dashboard/account",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Application authorized",
        "The app has been authorized successfully. Return to the app to continue.",
        "OAuth2 API Consent",
        "Open this page through an authorization URL from a third-party app.",
        "No authorization request was provided.",
        "Authorization failed",
        "wants to connect to your account."
      ],
      "ui_labels": [
        {
          "key": "account.apiKeys.oauth2.serverAuthorizedTitle",
          "value": "Application authorized"
        },
        {
          "key": "account.apiKeys.oauth2.serverAuthorizedDescription",
          "value": "The app has been authorized successfully. Return to the app to continue."
        },
        {
          "key": "account.apiKeys.oauth2.noRequestTitle",
          "value": "OAuth2 API Consent"
        },
        {
          "key": "account.apiKeys.oauth2.noRequestDescription",
          "value": "Open this page through an authorization URL from a third-party app."
        },
        {
          "key": "account.apiKeys.oauth2.noRequestWarningTitle",
          "value": "No authorization request was provided."
        },
        {
          "key": "account.apiKeys.oauth2.initFailedTitle",
          "value": "Authorization failed"
        },
        {
          "key": "account.apiKeys.oauth2.authorizeSubtitle",
          "value": "wants to connect to your account."
        }
      ],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/api-clients/oauth2/authorize",
        "/api/user/api-clients/oauth2/authorize/approve",
        "/api/user/api-clients/oauth2/authorize/deny"
      ],
      "summary": "**Api · New** Create form for a new resource. Related to: Account. Under sidebar item “Account”. Key UI: Application authorized; The app has been authorized successfully. Return to the app to continue.; OAuth2 API Consent; Open this page through an authorization URL from a third-party app.; No authorization request was provided.; Authorization failed.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Account** (parent nav item), then **Api · New**.\n3. Direct URL: `/dashboard/account/oauth2/api/new`."
    },
    {
      "route": "/dashboard/knowledgebase",
      "area": "dashboard",
      "file_slug": "dashboard-knowledgebase",
      "source": "src/app/(app)/dashboard/knowledgebase/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Knowledge Base",
      "description": "Knowledge Base screen in FeatherPanel (dashboard area). Use this page to manage knowledge base.",
      "title_key": "dashboard.knowledgebase.title",
      "description_key": null,
      "component": "KnowledgeBasePage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "knowledgebase",
        "title": "Knowledge Base",
        "title_key": "navigation.items.knowledgebase",
        "permission": null,
        "group": "support",
        "category": "main",
        "matched_url": "/dashboard/knowledgebase",
        "inherited": false
      },
      "widget_slugs": [
        "dashboard-knowledgebase"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/knowledgebase/categories"
      ],
      "summary": "**Knowledge Base** Knowledge Base screen in FeatherPanel (dashboard area). Use this page to manage knowledge base.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Knowledge Base**.\n3. Direct URL: `/dashboard/knowledgebase`."
    },
    {
      "route": "/dashboard/preferences",
      "area": "dashboard",
      "file_slug": "dashboard-preferences",
      "source": "src/app/(app)/dashboard/preferences/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Appearance",
      "description": "Customize the look of the panel: theme, backgrounds, typography, and layout.",
      "title_key": "appearance.settingsMenuTitle",
      "description_key": "appearance.settingsMenuSubtitle",
      "component": "DashboardPreferencesPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "preferences",
        "title": "Appearance",
        "title_key": "appearance.settingsMenuTitle",
        "permission": null,
        "group": "account",
        "category": "main",
        "matched_url": "/dashboard/preferences",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Appearance** Customize the look of the panel: theme, backgrounds, typography, and layout.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Appearance**.\n3. Direct URL: `/dashboard/preferences`."
    },
    {
      "route": "/dashboard/servers",
      "area": "dashboard",
      "file_slug": "dashboard-servers",
      "source": "src/app/(app)/dashboard/servers/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Servers",
      "description": "Manage your game server infrastructure",
      "title_key": "servers.title",
      "description_key": "servers.description",
      "component": "ServersPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "servers",
        "title": "Servers",
        "title_key": "navigation.items.servers",
        "permission": null,
        "group": "overview",
        "category": "main",
        "matched_url": "/dashboard/servers",
        "inherited": false
      },
      "widget_slugs": [
        "dashboard-servers"
      ],
      "sections": [],
      "features": [
        "Status",
        "List",
        "Are you sure you want to delete this folder?",
        "Failed to load servers"
      ],
      "ui_labels": [
        {
          "key": "servers.sort.status",
          "value": "Status"
        },
        {
          "key": "servers.layout.list",
          "value": "List"
        },
        {
          "key": "servers.confirmDeleteFolder",
          "value": "Are you sure you want to delete this folder?"
        },
        {
          "key": "servers.errorTitle",
          "value": "Failed to load servers"
        }
      ],
      "hooks": [
        "useFavoriteServerUuids",
        "useFolders",
        "usePluginWidgets",
        "useServersState",
        "useServersWebSocket",
        "useSession"
      ],
      "api_modules": [
        "servers-api"
      ],
      "api_paths": [],
      "summary": "**Servers** Manage your game server infrastructure Key UI: Status; List; Are you sure you want to delete this folder?; Failed to load servers.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Servers**.\n3. Direct URL: `/dashboard/servers`."
    },
    {
      "route": "/dashboard/status",
      "area": "dashboard",
      "file_slug": "dashboard-status",
      "source": "src/app/(app)/dashboard/status/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Infrastructure Status",
      "description": "Real-time health and resource monitoring of our infrastructure.",
      "title_key": "dashboard.status.title",
      "description_key": "dashboard.status.description",
      "component": "StatusPage",
      "audience": "Logged-in end users",
      "nav": null,
      "widget_slugs": [
        "dashboard-status"
      ],
      "sections": [],
      "features": [
        "CPU Usage",
        "core",
        "cores",
        "Memory",
        "Disk",
        "Players Online",
        "View in Admin",
        "Status information updated successfully",
        "Loading status information...",
        "Status Page Disabled",
        "The public infrastructure status page has been disabled by the administrator.",
        "Critical Error"
      ],
      "ui_labels": [
        {
          "key": "dashboard.status.cpuUsage",
          "value": "CPU Usage"
        },
        {
          "key": "dashboard.status.core",
          "value": "core"
        },
        {
          "key": "dashboard.status.cores",
          "value": "cores"
        },
        {
          "key": "dashboard.status.memory",
          "value": "Memory"
        },
        {
          "key": "dashboard.status.disk",
          "value": "Disk"
        },
        {
          "key": "dashboard.status.playersOnline",
          "value": "Players Online"
        },
        {
          "key": "dashboard.status.viewInAdmin",
          "value": "View in Admin"
        },
        {
          "key": "dashboard.status.statusRefreshed",
          "value": "Status information updated successfully"
        },
        {
          "key": "dashboard.status.loading",
          "value": "Loading status information..."
        },
        {
          "key": "dashboard.status.statusPageDisabled",
          "value": "Status Page Disabled"
        },
        {
          "key": "dashboard.status.statusPageDisabledDescription",
          "value": "The public infrastructure status page has been disabled by the administrator."
        },
        {
          "key": "dashboard.status.failedToLoadStatus",
          "value": "Critical Error"
        },
        {
          "key": "dashboard.status.tryAgain",
          "value": "Try Again"
        },
        {
          "key": "dashboard.status.refreshing",
          "value": "Refreshing..."
        },
        {
          "key": "dashboard.status.refresh",
          "value": "Refresh"
        },
        {
          "key": "dashboard.status.totalNodes",
          "value": "Total Nodes"
        },
        {
          "key": "dashboard.status.healthyNodes",
          "value": "Healthy Nodes"
        },
        {
          "key": "dashboard.status.totalServers",
          "value": "Total Servers"
        },
        {
          "key": "dashboard.status.avgCpuUsage",
          "value": "Average CPU Usage"
        },
        {
          "key": "dashboard.status.individualNodes",
          "value": "Individual Nodes Status"
        },
        {
          "key": "dashboard.status.searchPlaceholder",
          "value": "Search nodes..."
        },
        {
          "key": "dashboard.status.online",
          "value": "Online"
        },
        {
          "key": "dashboard.status.offline",
          "value": "Offline"
        },
        {
          "key": "dashboard.status.cpuShort",
          "value": "CPU"
        },
        {
          "key": "dashboard.status.ramShort",
          "value": "RAM"
        },
        {
          "key": "dashboard.status.diskShort",
          "value": "DISK"
        },
        {
          "key": "dashboard.status.noNodesFound",
          "value": "No nodes found"
        },
        {
          "key": "dashboard.status.globalMemoryUsage",
          "value": "Global Memory Usage"
        },
        {
          "key": "dashboard.status.globalDiskUsage",
          "value": "Global Disk Usage"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/status",
        "/api/user/status"
      ],
      "summary": "**Infrastructure Status** Real-time health and resource monitoring of our infrastructure. Key UI: CPU Usage; core; cores; Memory; Disk; Players Online.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Infrastructure Status**.\n3. Direct URL: `/dashboard/status`."
    },
    {
      "route": "/dashboard/tickets",
      "area": "dashboard",
      "file_slug": "dashboard-tickets",
      "source": "src/app/(app)/dashboard/tickets/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Support Tickets",
      "description": "Support Tickets screen in FeatherPanel (dashboard area). Use this page to manage support tickets.",
      "title_key": "tickets.title",
      "description_key": null,
      "component": "TicketsPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "tickets",
        "title": "Support Tickets",
        "title_key": "navigation.items.tickets",
        "permission": null,
        "group": "support",
        "category": "main",
        "matched_url": "/dashboard/tickets",
        "inherited": false
      },
      "widget_slugs": [
        "dashboard-tickets-list"
      ],
      "sections": [],
      "features": [
        "All Statuses",
        "Delete Ticket",
        "Are you sure you want to delete this ticket?"
      ],
      "ui_labels": [
        {
          "key": "tickets.allStatuses",
          "value": "All Statuses"
        },
        {
          "key": "tickets.deleteTicketTitle",
          "value": "Delete Ticket"
        },
        {
          "key": "tickets.deleteTicketConfirm",
          "value": "Are you sure you want to delete this ticket?"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/tickets",
        "/api/user/tickets/categories",
        "/api/user/tickets/statuses"
      ],
      "summary": "**Support Tickets** Support Tickets screen in FeatherPanel (dashboard area). Use this page to manage support tickets. Key UI: All Statuses; Delete Ticket; Are you sure you want to delete this ticket?.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Support Tickets**.\n3. Direct URL: `/dashboard/tickets`."
    },
    {
      "route": "/dashboard/tickets/create",
      "area": "dashboard",
      "file_slug": "dashboard-tickets-create",
      "source": "src/app/(app)/dashboard/tickets/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Support Tickets",
      "description": "Create form for a new resource. Related to: Support Tickets.",
      "title_key": "tickets.title",
      "description_key": null,
      "component": "CreateTicketPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "tickets",
        "title": "Support Tickets",
        "title_key": "navigation.items.tickets",
        "permission": null,
        "group": "support",
        "category": "main",
        "matched_url": "/dashboard/tickets",
        "inherited": true
      },
      "widget_slugs": [
        "dashboard-tickets-create"
      ],
      "sections": [],
      "features": [
        "Fill out the form below to create a new support ticket",
        "Title",
        "Brief summary of the issue",
        "Category",
        "Select the category that best describes your issue.",
        "Priority",
        "Choose the urgency of your request.",
        "Description",
        "Detailed description of your issue...",
        "Related Server",
        "Create Ticket"
      ],
      "ui_labels": [
        {
          "key": "tickets.createTicketDescription",
          "value": "Fill out the form below to create a new support ticket"
        },
        {
          "key": "tickets.titleLabel",
          "value": "Title"
        },
        {
          "key": "tickets.titleDescription",
          "value": "Brief summary of the issue"
        },
        {
          "key": "tickets.titlePlaceholder",
          "value": "Brief summary of the issue"
        },
        {
          "key": "tickets.categoryLabel",
          "value": "Category"
        },
        {
          "key": "tickets.categoryDescription",
          "value": "Select the category that best describes your issue."
        },
        {
          "key": "tickets.priorityLabel",
          "value": "Priority"
        },
        {
          "key": "tickets.priorityDescription",
          "value": "Choose the urgency of your request."
        },
        {
          "key": "tickets.descriptionLabel",
          "value": "Description"
        },
        {
          "key": "tickets.descriptionDetail",
          "value": "Detailed description of your issue..."
        },
        {
          "key": "tickets.descriptionPlaceholder",
          "value": "Detailed description of your issue..."
        },
        {
          "key": "tickets.serverLabel",
          "value": "Related Server"
        },
        {
          "key": "tickets.createTicketButton",
          "value": "Create Ticket"
        }
      ],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/tickets",
        "/api/user/tickets/categories",
        "/api/user/tickets/priorities",
        "/api/user/tickets/servers"
      ],
      "summary": "**Support Tickets** Create form for a new resource. Related to: Support Tickets. Key UI: Fill out the form below to create a new support ticket; Title; Brief summary of the issue; Category; Select the category that best describes your issue.; Priority.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Support Tickets**.\n3. Direct URL: `/dashboard/tickets/create`."
    },
    {
      "route": "/dashboard/vms",
      "area": "dashboard",
      "file_slug": "dashboard-vms",
      "source": "src/app/(app)/dashboard/vms/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Virtual Machines",
      "description": "Manage your virtual machines and infrastructure",
      "title_key": "vms.title",
      "description_key": "vms.description",
      "component": "VmsPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "vms",
        "title": "Virtual Servers (VDS)",
        "title_key": "navigation.items.virtualServersVds",
        "permission": null,
        "group": "overview",
        "category": "main",
        "matched_url": "/dashboard/vms",
        "inherited": false
      },
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Status",
        "List",
        "Error Loading VMs"
      ],
      "ui_labels": [
        {
          "key": "servers.sort.status",
          "value": "Status"
        },
        {
          "key": "servers.layout.list",
          "value": "List"
        },
        {
          "key": "vms.errorTitle",
          "value": "Error Loading VMs"
        }
      ],
      "hooks": [
        "useVmsState"
      ],
      "api_modules": [
        "vms-api"
      ],
      "api_paths": [],
      "summary": "**Virtual Machines** Manage your virtual machines and infrastructure Sidebar label: “Virtual Servers (VDS)”. Key UI: Status; List; Error Loading VMs.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Virtual Servers (VDS)**, then **Virtual Machines**.\n3. Direct URL: `/dashboard/vms`."
    },
    {
      "route": "/dashboard/webspaces",
      "area": "dashboard",
      "file_slug": "dashboard-webspaces",
      "source": "src/app/(app)/dashboard/webspaces/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "WebSpaces",
      "description": "Manage your hosted websites",
      "title_key": "webSpaces.title",
      "description_key": "webSpaces.description",
      "component": "WebSpacesDashboardPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": null,
        "group": "overview",
        "category": "main",
        "matched_url": "/dashboard/webspaces",
        "inherited": false
      },
      "widget_slugs": [
        "dashboard-webspaces"
      ],
      "sections": [],
      "features": [
        "Status",
        "List",
        "Error Loading WebSpaces"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.sort.status",
          "value": "Status"
        },
        {
          "key": "servers.layout.list",
          "value": "List"
        },
        {
          "key": "webSpaces.errorTitle",
          "value": "Error Loading WebSpaces"
        }
      ],
      "hooks": [
        "useFavoriteWebSpaceUuids",
        "usePluginWidgets",
        "useWebSpacesState"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/webspaces"
      ],
      "summary": "**WebSpaces** Manage your hosted websites Key UI: Status; List; Error Loading WebSpaces.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **WebSpaces**.\n3. Direct URL: `/dashboard/webspaces`."
    },
    {
      "route": "/dashboard/webspaces/create",
      "area": "dashboard",
      "file_slug": "dashboard-webspaces-create",
      "source": "src/app/(app)/dashboard/webspaces/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Webspaces · Create",
      "description": "Create form for a new resource. Related to: WebSpaces.",
      "title_key": null,
      "description_key": null,
      "component": "ClientWebSpaceCreateRedirect",
      "audience": "Logged-in end users",
      "nav": {
        "id": "webspaces",
        "title": "WebSpaces",
        "title_key": "navigation.items.webSpaces",
        "permission": null,
        "group": "overview",
        "category": "main",
        "matched_url": "/dashboard/webspaces",
        "inherited": true
      },
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Webspaces · Create** Create form for a new resource. Related to: WebSpaces. Under sidebar item “WebSpaces”.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **WebSpaces** (parent nav item), then **Webspaces · Create**.\n3. Direct URL: `/dashboard/webspaces/create`."
    },
    {
      "route": "/dashboard/[...pluginPath]",
      "area": "dashboard",
      "file_slug": "dashboard-splat-pluginPath",
      "source": "src/app/(app)/dashboard/[...pluginPath]/page.tsx",
      "dynamic": true,
      "params": [
        "pluginPath"
      ],
      "title": "Dashboard",
      "description": "Monitor your infrastructure and manage your services.",
      "title_key": "dashboard.title",
      "description_key": "dashboard.subtitle",
      "component": "DashboardPluginPage",
      "audience": "Logged-in end users",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Dashboard** Monitor your infrastructure and manage your services.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Dashboard**.\n3. Direct URL: `/dashboard/[...pluginPath]`.\n4. Replace path params `pluginPath` with the real resource id(s)."
    },
    {
      "route": "/dashboard/knowledgebase/article/[id]",
      "area": "dashboard",
      "file_slug": "dashboard-knowledgebase-article-param-id",
      "source": "src/app/(app)/dashboard/knowledgebase/article/[id]/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Knowledgebase · Article",
      "description": "Knowledge Base screen in FeatherPanel (dashboard area). Use this page to manage knowledge base.",
      "title_key": null,
      "description_key": null,
      "component": "ArticlePage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "knowledgebase",
        "title": "Knowledge Base",
        "title_key": "navigation.items.knowledgebase",
        "permission": null,
        "group": "support",
        "category": "main",
        "matched_url": "/dashboard/knowledgebase",
        "inherited": true
      },
      "widget_slugs": [
        "dashboard-knowledgebase-article"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Knowledgebase · Article** Knowledge Base screen in FeatherPanel (dashboard area). Use this page to manage knowledge base. Under sidebar item “Knowledge Base”.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Knowledge Base** (parent nav item), then **Knowledgebase · Article**.\n3. Direct URL: `/dashboard/knowledgebase/article/[id]`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/dashboard/knowledgebase/category/[id]",
      "area": "dashboard",
      "file_slug": "dashboard-knowledgebase-category-param-id",
      "source": "src/app/(app)/dashboard/knowledgebase/category/[id]/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Knowledgebase · Category",
      "description": "Knowledge Base screen in FeatherPanel (dashboard area). Use this page to manage knowledge base.",
      "title_key": null,
      "description_key": null,
      "component": "CategoryArticlesPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "knowledgebase",
        "title": "Knowledge Base",
        "title_key": "navigation.items.knowledgebase",
        "permission": null,
        "group": "support",
        "category": "main",
        "matched_url": "/dashboard/knowledgebase",
        "inherited": true
      },
      "widget_slugs": [
        "dashboard-knowledgebase-category"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Knowledgebase · Category** Knowledge Base screen in FeatherPanel (dashboard area). Use this page to manage knowledge base. Under sidebar item “Knowledge Base”.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Open **Knowledge Base** (parent nav item), then **Knowledgebase · Category**.\n3. Direct URL: `/dashboard/knowledgebase/category/[id]`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/dashboard/tickets/[uuid]",
      "area": "dashboard",
      "file_slug": "dashboard-tickets-param-uuid",
      "source": "src/app/(app)/dashboard/tickets/[uuid]/page.tsx",
      "dynamic": true,
      "params": [
        "uuid"
      ],
      "title": "Support Tickets",
      "description": "Support Tickets screen in FeatherPanel (dashboard area). Use this page to manage support tickets.",
      "title_key": "tickets.title",
      "description_key": null,
      "component": "TicketViewPage",
      "audience": "Logged-in end users",
      "nav": {
        "id": "tickets",
        "title": "Support Tickets",
        "title_key": "navigation.items.tickets",
        "permission": null,
        "group": "support",
        "category": "main",
        "matched_url": "/dashboard/tickets",
        "inherited": true
      },
      "widget_slugs": [
        "dashboard-tickets-view"
      ],
      "sections": [],
      "features": [
        "Are you sure you want to delete this message?",
        "Status"
      ],
      "ui_labels": [
        {
          "key": "tickets.deleteMessageConfirm",
          "value": "Are you sure you want to delete this message?"
        },
        {
          "key": "tickets.statusLabel",
          "value": "Status"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Support Tickets** Support Tickets screen in FeatherPanel (dashboard area). Use this page to manage support tickets. Key UI: Are you sure you want to delete this message?; Status.",
      "how_to_guide_users": "1. Open User dashboard.\n2. Go to **Support Tickets**.\n3. Direct URL: `/dashboard/tickets/[uuid]`.\n4. Replace path params `uuid` with the real resource id(s)."
    },
    {
      "route": "/knowledgebase",
      "area": "knowledgebase",
      "file_slug": "knowledgebase",
      "source": "src/app/(app)/knowledgebase/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Knowledgebase",
      "description": "Knowledgebase help center for browsing categories and articles.",
      "title_key": null,
      "description_key": null,
      "component": null,
      "audience": "Users (and optionally public visitors) reading help articles",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Knowledgebase** Knowledgebase help center for browsing categories and articles.",
      "how_to_guide_users": "1. Open Knowledgebase.\n2. Go to **Knowledgebase**.\n3. Direct URL: `/knowledgebase`."
    },
    {
      "route": "/knowledgebase/article/[id]",
      "area": "knowledgebase",
      "file_slug": "knowledgebase-article-param-id",
      "source": "src/app/(app)/knowledgebase/article/[id]/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Knowledgebase · Article",
      "description": "Knowledgebase help center for browsing categories and articles.",
      "title_key": null,
      "description_key": null,
      "component": null,
      "audience": "Users (and optionally public visitors) reading help articles",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Knowledgebase · Article** Knowledgebase help center for browsing categories and articles.",
      "how_to_guide_users": "1. Open Knowledgebase.\n2. Go to **Knowledgebase · Article**.\n3. Direct URL: `/knowledgebase/article/[id]`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/knowledgebase/category/[id]",
      "area": "knowledgebase",
      "file_slug": "knowledgebase-category-param-id",
      "source": "src/app/(app)/knowledgebase/category/[id]/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Knowledgebase · Category",
      "description": "Knowledgebase help center for browsing categories and articles.",
      "title_key": null,
      "description_key": null,
      "component": null,
      "audience": "Users (and optionally public visitors) reading help articles",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Knowledgebase · Category** Knowledgebase help center for browsing categories and articles.",
      "how_to_guide_users": "1. Open Knowledgebase.\n2. Go to **Knowledgebase · Category**.\n3. Direct URL: `/knowledgebase/category/[id]`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/maintenance",
      "area": "other",
      "file_slug": "maintenance",
      "source": "src/app/(app)/maintenance/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "System Maintenance",
      "description": "Shown when the panel is in maintenance mode; blocks normal user access.",
      "title_key": "maintenance.title",
      "description_key": null,
      "component": "MaintenancePage",
      "audience": "Panel users",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "In Progress"
      ],
      "ui_labels": [
        {
          "key": "maintenance.status",
          "value": "In Progress"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**System Maintenance** Shown when the panel is in maintenance mode; blocks normal user access. Key UI: In Progress.",
      "how_to_guide_users": "1. Open Panel UI.\n2. Go to **System Maintenance**.\n3. Direct URL: `/maintenance`."
    },
    {
      "route": "/preferences",
      "area": "other",
      "file_slug": "preferences",
      "source": "src/app/(app)/preferences/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Preferences",
      "description": "User appearance and preference settings (theme, locale, accent, etc.).",
      "title_key": null,
      "description_key": null,
      "component": "PreferencesRedirectPage",
      "audience": "Panel users",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Preferences** User appearance and preference settings (theme, locale, accent, etc.).",
      "how_to_guide_users": "1. Open Panel UI.\n2. Go to **Preferences**.\n3. Direct URL: `/preferences`."
    },
    {
      "route": "/status",
      "area": "other",
      "file_slug": "status",
      "source": "src/app/(app)/status/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Status",
      "description": "Public/user status page for infrastructure health (controlled by status_page_* settings).",
      "title_key": null,
      "description_key": null,
      "component": null,
      "audience": "Panel users",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Status** Public/user status page for infrastructure health (controlled by status_page_* settings).",
      "how_to_guide_users": "1. Open Panel UI.\n2. Go to **Status**.\n3. Direct URL: `/status`."
    },
    {
      "route": "/[...publicPluginPath]",
      "area": "other",
      "file_slug": "splat-publicPluginPath",
      "source": "src/app/(app)/[...publicPluginPath]/page.tsx",
      "dynamic": true,
      "params": [
        "publicPluginPath"
      ],
      "title": "publicPluginPath",
      "description": "Catch-all public route for plugin pages that do not require a server/webspace context.",
      "title_key": null,
      "description_key": null,
      "component": "PublicPluginCatchAllPage",
      "audience": "Panel users",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**publicPluginPath** Catch-all public route for plugin pages that do not require a server/webspace context.",
      "how_to_guide_users": "1. Open Panel UI.\n2. Go to **publicPluginPath**.\n3. Direct URL: `/[...publicPluginPath]`.\n4. Replace path params `publicPluginPath` with the real resource id(s)."
    },
    {
      "route": "/",
      "area": "root",
      "file_slug": "root",
      "source": "src/app/(app)/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Home",
      "description": "App root / landing redirect into the dashboard or auth flow depending on session.",
      "title_key": null,
      "description_key": null,
      "component": "Home",
      "audience": "Panel users",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Home** App root / landing redirect into the dashboard or auth flow depending on session.",
      "how_to_guide_users": "1. Open Panel UI.\n2. Go to **Home**.\n3. Direct URL: `/`."
    },
    {
      "route": "/server/[uuidShort]/[[...pluginPath]]",
      "area": "server",
      "file_slug": "server-param-uuidShort-catch-pluginPath",
      "source": "src/app/(app)/server/[uuidShort]/[[...pluginPath]]/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "pluginPath"
      ],
      "title": "Server",
      "description": "Plugin-provided UI route inside the server area. The path after the resource id is owned by an installed plugin.",
      "title_key": null,
      "description_key": null,
      "component": "ServerPluginPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-plugin-page"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Server** Plugin-provided UI route inside the server area. The path after the resource id is owned by an installed plugin.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Server**.\n3. Direct URL: `/server/[uuidShort]/[[...pluginPath]]`.\n4. Replace path params `uuidShort`, `pluginPath` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/activities",
      "area": "server",
      "file_slug": "server-param-uuidShort-activities",
      "source": "src/app/(app)/server/[uuidShort]/activities/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Server Activity",
      "description": "View the audit logs for this server.",
      "title_key": "serverActivities.title",
      "description_key": "serverActivities.description",
      "component": "ServerActivityPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-activities"
      ],
      "sections": [],
      "features": [
        "Database",
        "Try adjusting your search query or filters to find what you are looking for.",
        "This server has no recorded activity yet.",
        "Detailed information about this server event."
      ],
      "ui_labels": [
        {
          "key": "serverActivities.filterNames.database",
          "value": "Database"
        },
        {
          "key": "serverActivities.noActivitiesSearchDescription",
          "value": "Try adjusting your search query or filters to find what you are looking for."
        },
        {
          "key": "serverActivities.noActivitiesDescription",
          "value": "This server has no recorded activity yet."
        },
        {
          "key": "serverActivities.details.description",
          "value": "Detailed information about this server event."
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Server Activity** View the audit logs for this server. Key UI: Database; Try adjusting your search query or filters to find what you are looking for.; This server has no recorded activity yet.; Detailed information about this server event..",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Server Activity**.\n3. Direct URL: `/server/[uuidShort]/activities`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/allocations",
      "area": "server",
      "file_slug": "server-param-uuidShort-allocations",
      "source": "src/app/(app)/server/[uuidShort]/allocations/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Allocations",
      "description": "Manage your server's network allocations and ports.",
      "title_key": "serverAllocations.title",
      "description_key": "serverAllocations.description",
      "component": "ServerAllocationsPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-allocations"
      ],
      "sections": [],
      "features": [
        "Delete",
        "Delete Allocation",
        "Are you sure you want to delete this allocation? This action cannot be undone.",
        "Set Primary Allocation",
        "Set Primary",
        "Choose a specific allocation to assign, or select \"Auto\" to randomly assign one."
      ],
      "ui_labels": [
        {
          "key": "serverAllocations.allocationStatusDescription",
          "value": "You are currently using {current} of {limit} allowed allocations for this server."
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "serverAllocations.confirmDeleteTitle",
          "value": "Delete Allocation"
        },
        {
          "key": "serverAllocations.confirmDeleteDescription",
          "value": "Are you sure you want to delete this allocation? This action cannot be undone."
        },
        {
          "key": "serverAllocations.confirmDelete",
          "value": "Delete"
        },
        {
          "key": "serverAllocations.confirmSetPrimaryTitle",
          "value": "Set Primary Allocation"
        },
        {
          "key": "serverAllocations.confirmSetPrimaryDescription",
          "value": "Are you sure you want to set this allocation as primary? This will become the main connection for your server."
        },
        {
          "key": "serverAllocations.confirmSetPrimary",
          "value": "Set Primary"
        },
        {
          "key": "serverAllocations.selectAllocationDescription",
          "value": "Choose a specific allocation to assign, or select \"Auto\" to randomly assign one."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Allocations** Manage your server's network allocations and ports. Key UI: Delete; Delete Allocation; Are you sure you want to delete this allocation? This action cannot be undone.; Set Primary Allocation; Set Primary; Choose a specific allocation to assign, or select \"Auto\" to randomly assign one..",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Allocations**.\n3. Direct URL: `/server/[uuidShort]/allocations`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/backups",
      "area": "server",
      "file_slug": "server-param-uuidShort-backups",
      "source": "src/app/(app)/server/[uuidShort]/backups/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Backups",
      "description": "Manage Wings file backups and database SQL dumps",
      "title_key": "serverBackups.title",
      "description_key": "serverBackups.description",
      "component": "ServerBackupsPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-backups"
      ],
      "sections": [],
      "features": [
        "Recover stalled backup status?",
        "Delete Backup",
        "Are you sure you want to delete this backup? This action cannot be undone.",
        "Delete selected backups",
        "Delete all backups",
        "Lock Backup",
        "Unlock Backup",
        "Server backups",
        "Database dumps",
        "FIFO rolling backups enabled",
        "Create your first backup to protect your server data",
        "Completed"
      ],
      "ui_labels": [
        {
          "key": "serverBackups.recoverTitle",
          "value": "Recover stalled backup status?"
        },
        {
          "key": "serverBackups.confirmDeleteTitle",
          "value": "Delete Backup"
        },
        {
          "key": "serverBackups.deleteConfirm",
          "value": "Are you sure you want to delete this backup? This action cannot be undone."
        },
        {
          "key": "serverBackups.confirmBulkDeleteTitle",
          "value": "Delete selected backups"
        },
        {
          "key": "serverBackups.confirmBulkDeleteDescription",
          "value": "Are you sure you want to delete {count} backup(s)? Locked backups will be skipped. This action cannot be undone."
        },
        {
          "key": "serverBackups.confirmDeleteAllTitle",
          "value": "Delete all backups"
        },
        {
          "key": "serverBackups.confirmDeleteAllDescription",
          "value": "Are you sure you want to delete all unlocked backups for this server? Locked backups will be kept. This action cannot be undone."
        },
        {
          "key": "serverBackups.confirmLockTitle",
          "value": "Lock Backup"
        },
        {
          "key": "serverBackups.confirmUnlockTitle",
          "value": "Unlock Backup"
        },
        {
          "key": "serverBackups.lockConfirm",
          "value": "Are you sure you want to lock this backup? Locked backups cannot be deleted or restored."
        },
        {
          "key": "serverBackups.unlockConfirm",
          "value": "Are you sure you want to unlock this backup? This will allow deletion and restoration."
        },
        {
          "key": "serverBackups.tabFiles",
          "value": "Server backups"
        },
        {
          "key": "serverBackups.tabDatabases",
          "value": "Database dumps"
        },
        {
          "key": "serverBackups.fifoRollingTitle",
          "value": "FIFO rolling backups enabled"
        },
        {
          "key": "serverBackups.backupLimitReachedDescription",
          "value": "You have reached the maximum number of backups for this server (limit: {limit}). Please delete some backups to create a new one."
        },
        {
          "key": "serverBackups.noBackupsDescription",
          "value": "Create your first backup to protect your server data"
        },
        {
          "key": "serverBackups.statusSuccessful",
          "value": "Completed"
        },
        {
          "key": "serverBackups.statusFailed",
          "value": "Failed"
        },
        {
          "key": "serverBackups.statusLocked",
          "value": "Locked"
        },
        {
          "key": "serverBackups.download",
          "value": "Download"
        },
        {
          "key": "serverBackups.recoverAction",
          "value": "Mark as interrupted"
        },
        {
          "key": "serverBackups.delete",
          "value": "Delete"
        },
        {
          "key": "serverBackups.confirmRestoreTitle",
          "value": "Restore Backup"
        },
        {
          "key": "serverBackups.restoreBackupDescription",
          "value": "Restore your server from this backup. This will overwrite existing files."
        },
        {
          "key": "serverBackups.truncateDirectoryDescription",
          "value": "This will clear the server folder before restoring"
        },
        {
          "key": "serverBackups.confirmRestore",
          "value": "Confirm Restore"
        },
        {
          "key": "common.confirm",
          "value": "Confirm"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Backups** Manage Wings file backups and database SQL dumps Key UI: Recover stalled backup status?; Delete Backup; Are you sure you want to delete this backup? This action cannot be undone.; Delete selected backups; Delete all backups; Lock Backup.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Backups**.\n3. Direct URL: `/server/[uuidShort]/backups`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/backups/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-backups-new",
      "source": "src/app/(app)/server/[uuidShort]/backups/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Backup",
      "description": "Choose server files, databases, or a full server backup.",
      "title_key": "serverBackups.createBackup",
      "description_key": "serverBackups.createBackupDescription",
      "component": "CreateBackupPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-backups-new"
      ],
      "sections": [],
      "features": [
        "Select at least one database.",
        "Create Backup",
        "Databases",
        "Databases & metadata"
      ],
      "ui_labels": [
        {
          "key": "serverTasks.selectAtLeastOneDatabase",
          "value": "Select at least one database."
        },
        {
          "key": "serverBackups.databaseBackupSuccess",
          "value": "Created {count} database dump(s) in {directory}"
        },
        {
          "key": "serverBackups.create",
          "value": "Create Backup"
        },
        {
          "key": "serverTasks.backupTypeDatabases",
          "value": "Databases"
        },
        {
          "key": "serverBackups.databaseBackupTypeHelp",
          "value": "MySQL/MariaDB SQL dumps saved on the server filesystem. Unlimited by the Wings backup quota."
        },
        {
          "key": "serverBackups.databaseBackupHint",
          "value": "Writes SQL dumps to /.featherpanel-database-backups on the server. They appear under Database dumps, not as Wings backup slots."
        },
        {
          "key": "serverBackups.backupLimitReachedDescription",
          "value": "You have reached the maximum number of backups for this server (limit: {limit}). Please delete some backups to create a new one."
        },
        {
          "key": "serverTasks.fullMetadataSection",
          "value": "Databases & metadata"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Backup** Choose server files, databases, or a full server backup. Key UI: Select at least one database.; Create Backup; Databases; Databases & metadata.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Create Backup**.\n3. Direct URL: `/server/[uuidShort]/backups/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/databases",
      "area": "server",
      "file_slug": "server-param-uuidShort-databases",
      "source": "src/app/(app)/server/[uuidShort]/databases/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Databases",
      "description": "Manage databases and database users for this server",
      "title_key": "serverDatabases.title",
      "description_key": "serverDatabases.description",
      "component": "ServerDatabasesPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-databases"
      ],
      "sections": [],
      "features": [
        "You do not have permission to manage server databases.",
        "Database deleted successfully",
        "Delete selected databases",
        "Delete all databases",
        "Opening phpMyAdmin...",
        "Please provide SQL content to import",
        "Please enter a query to run",
        "Create Database",
        "Refresh",
        "Database limit reached",
        "Search databases...",
        "Delete all"
      ],
      "ui_labels": [
        {
          "key": "serverDatabases.noDatabasePermission",
          "value": "You do not have permission to manage server databases."
        },
        {
          "key": "serverDatabases.deleteSuccess",
          "value": "Database deleted successfully"
        },
        {
          "key": "serverDatabases.bulkDeletePartial",
          "value": "Deleted {deleted} database(s). Failed {failed}."
        },
        {
          "key": "serverDatabases.bulkDeleteSuccess",
          "value": "Deleted {count} database(s)"
        },
        {
          "key": "serverDatabases.confirmBulkDeleteTitle",
          "value": "Delete selected databases"
        },
        {
          "key": "serverDatabases.confirmBulkDeleteDescription",
          "value": "Are you sure you want to delete {count} database(s)? This cannot be undone and will remove all data."
        },
        {
          "key": "serverDatabases.confirmDeleteAllTitle",
          "value": "Delete all databases"
        },
        {
          "key": "serverDatabases.confirmDeleteAllDescription",
          "value": "Are you sure you want to delete all databases for this server? This cannot be undone and will remove all data."
        },
        {
          "key": "serverDatabases.openingPhpMyAdmin",
          "value": "Opening phpMyAdmin..."
        },
        {
          "key": "serverDatabases.exportSuccess",
          "value": "Exported {count} table(s)"
        },
        {
          "key": "serverDatabases.importEmptyPayload",
          "value": "Please provide SQL content to import"
        },
        {
          "key": "serverDatabases.importSuccess",
          "value": "Imported {count} statement(s) successfully"
        },
        {
          "key": "serverDatabases.importCompleteWithErrors",
          "value": "Completed with {count} error(s)"
        },
        {
          "key": "serverDatabases.queryEmptyPayload",
          "value": "Please enter a query to run"
        },
        {
          "key": "serverDatabases.createDatabase",
          "value": "Create Database"
        },
        {
          "key": "serverDatabases.refresh",
          "value": "Refresh"
        },
        {
          "key": "serverDatabases.databaseLimitReached",
          "value": "Database limit reached"
        },
        {
          "key": "serverDatabases.databaseLimitReachedDescription",
          "value": "You have reached the maximum number of databases for this server (limit: {limit}). Please delete some databases to create a new one."
        },
        {
          "key": "serverDatabases.searchPlaceholder",
          "value": "Search databases..."
        },
        {
          "key": "serverDatabases.deleteAll",
          "value": "Delete all"
        },
        {
          "key": "serverDatabases.selectAll",
          "value": "Select all"
        },
        {
          "key": "serverDatabases.selectedCount",
          "value": "{count} selected"
        },
        {
          "key": "serverDatabases.deleteSelected",
          "value": "Delete selected"
        },
        {
          "key": "serverDatabases.noDatabases",
          "value": "No Databases Found"
        },
        {
          "key": "serverDatabases.noDatabasesNoLimit",
          "value": "This server does not have database access enabled"
        },
        {
          "key": "serverDatabases.noDatabasesDescription",
          "value": "Create your first database to start storing and managing your data"
        },
        {
          "key": "serverDatabases.allHosts",
          "value": "All Hosts"
        },
        {
          "key": "serverDatabases.view",
          "value": "View"
        },
        {
          "key": "serverDatabases.exportSql",
          "value": "Export SQL"
        },
        {
          "key": "serverDatabases.importSql",
          "value": "Import SQL"
        },
        {
          "key": "serverDatabases.runQuery",
          "value": "Run Query"
        },
        {
          "key": "serverDatabases.confirmDelete",
          "value": "Delete Database"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Databases** Manage databases and database users for this server Key UI: You do not have permission to manage server databases.; Database deleted successfully; Delete selected databases; Delete all databases; Opening phpMyAdmin...; Please provide SQL content to import.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Databases**.\n3. Direct URL: `/server/[uuidShort]/databases`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/databases/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-databases-new",
      "source": "src/app/(app)/server/[uuidShort]/databases/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Database",
      "description": "Create a new database and user on a database host",
      "title_key": "serverDatabases.createDatabase",
      "description_key": "serverDatabases.createDatabaseDescription",
      "component": "CreateDatabasePage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-databases-new"
      ],
      "sections": [],
      "features": [
        "This server does not have database access enabled",
        "Database limit reached",
        "Please select a database host",
        "Database name is required",
        "Database created successfully",
        "Create",
        "Database Host",
        "No database hosts available",
        "Database Credentials",
        "Database Name",
        "Enter database name",
        "The name of the database to create"
      ],
      "ui_labels": [
        {
          "key": "serverDatabases.noDatabasesNoLimit",
          "value": "This server does not have database access enabled"
        },
        {
          "key": "serverDatabases.databaseLimitReached",
          "value": "Database limit reached"
        },
        {
          "key": "serverDatabases.noHostSelected",
          "value": "Please select a database host"
        },
        {
          "key": "serverDatabases.databaseNameRequired",
          "value": "Database name is required"
        },
        {
          "key": "serverDatabases.createSuccess",
          "value": "Database created successfully"
        },
        {
          "key": "serverDatabases.create",
          "value": "Create"
        },
        {
          "key": "serverDatabases.databaseLimitReachedDescription",
          "value": "You have reached the maximum number of databases for this server (limit: {limit}). Please delete some databases to create a new one."
        },
        {
          "key": "serverDatabases.databaseHost",
          "value": "Database Host"
        },
        {
          "key": "serverDatabases.noDatabaseHosts",
          "value": "No database hosts available"
        },
        {
          "key": "serverDatabases.selectDatabaseHost",
          "value": "Please select a database host"
        },
        {
          "key": "serverDatabases.noDatabaseHostsDescription",
          "value": "No database hosts are configured. Please contact an administrator to set up database hosts."
        },
        {
          "key": "serverDatabases.databaseCredentials",
          "value": "Database Credentials"
        },
        {
          "key": "serverDatabases.databaseName",
          "value": "Database Name"
        },
        {
          "key": "serverDatabases.databaseNamePlaceholder",
          "value": "Enter database name"
        },
        {
          "key": "serverDatabases.databaseNameHelp",
          "value": "The name of the database to create"
        },
        {
          "key": "serverDatabases.remoteAccess",
          "value": "Remote Access"
        },
        {
          "key": "serverDatabases.remoteAccessHelp",
          "value": "Host pattern for remote access (e.g., % for any host)"
        },
        {
          "key": "serverDatabases.maxConnections",
          "value": "Max Connections"
        },
        {
          "key": "serverDatabases.maxConnectionsHelp",
          "value": "Maximum number of concurrent connections (0 for unlimited)"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Database** Create a new database and user on a database host Key UI: This server does not have database access enabled; Database limit reached; Please select a database host; Database name is required; Database created successfully; Create.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Create Database**.\n3. Direct URL: `/server/[uuidShort]/databases/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/fastdl",
      "area": "server",
      "file_slug": "server-param-uuidShort-fastdl",
      "source": "src/app/(app)/server/[uuidShort]/fastdl/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "FastDL",
      "description": "Configure Fast Download (FastDL) to serve files directly from your Wings node via nginx for faster download speeds.",
      "title_key": "serverFastDl.title",
      "description_key": "serverFastDl.description",
      "component": "ServerFastDlPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-fastdl"
      ],
      "sections": [],
      "features": [
        "Configure FastDL settings for your server.",
        "FastDL Status"
      ],
      "ui_labels": [
        {
          "key": "serverFastDl.featureDisabledDescription",
          "value": "FastDL management has been disabled by the administrator. Please contact support if you need this feature enabled."
        },
        {
          "key": "serverFastDl.configurationDescription",
          "value": "Configure FastDL settings for your server."
        },
        {
          "key": "serverFastDl.status",
          "value": "FastDL Status"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**FastDL** Configure Fast Download (FastDL) to serve files directly from your Wings node via nginx for faster download speeds. Key UI: Configure FastDL settings for your server.; FastDL Status.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **FastDL**.\n3. Direct URL: `/server/[uuidShort]/fastdl`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/files",
      "area": "server",
      "file_slug": "server-param-uuidShort-files",
      "source": "src/app/(app)/server/[uuidShort]/files/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "File Manager",
      "description": "Manage files in the current directory",
      "title_key": "files.title",
      "description_key": "files.manage_description",
      "component": "ServerFilesPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-files"
      ],
      "sections": [
        "Search Files"
      ],
      "features": [
        "Wings Connection Unavailable. Please contact the support team.",
        "Upload",
        "Release your files to start uploading to",
        "Include Path Patterns",
        "Exclude Path Patterns",
        "Search File Content",
        "Max File Size for Content Scan",
        "File Size Range"
      ],
      "ui_labels": [
        {
          "key": "files.messages.wings_connection_unavailable",
          "value": "Wings Connection Unavailable. Please contact the support team."
        },
        {
          "key": "files.toolbar.upload",
          "value": "Upload"
        },
        {
          "key": "files.messages.drop_description",
          "value": "Release your files to start uploading to"
        },
        {
          "key": "files.search.advanced.title",
          "value": "Search Files"
        },
        {
          "key": "files.search.advanced.subtitle",
          "value": "Use advanced filters to narrow results quickly."
        },
        {
          "key": "files.search.advanced.include_label",
          "value": "Include Path Patterns"
        },
        {
          "key": "files.search.advanced.exclude_label",
          "value": "Exclude Path Patterns"
        },
        {
          "key": "files.search.advanced.search_text_label",
          "value": "Search File Content"
        },
        {
          "key": "files.search.advanced.max_file_size_label",
          "value": "Max File Size for Content Scan"
        },
        {
          "key": "files.search.advanced.file_size_label",
          "value": "File Size Range"
        }
      ],
      "hooks": [
        "useFileManager",
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [
        "files-api"
      ],
      "api_paths": [],
      "summary": "**File Manager** Manage files in the current directory Key UI: Wings Connection Unavailable. Please contact the support team.; Upload; Release your files to start uploading to; Include Path Patterns; Exclude Path Patterns; Search File Content.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **File Manager**.\n3. Direct URL: `/server/[uuidShort]/files`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/files/edit",
      "area": "server",
      "file_slug": "server-param-uuidShort-files-edit",
      "source": "src/app/(app)/server/[uuidShort]/files/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Editing: file",
      "description": "Editing file at the file path",
      "title_key": "files.editor.title",
      "description_key": "files.editor.description",
      "component": "FileEditorPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-file-editor"
      ],
      "sections": [],
      "features": [
        "Loading File...",
        "Please wait while the file content is loaded"
      ],
      "ui_labels": [
        {
          "key": "files.editor.loading_title",
          "value": "Loading File..."
        },
        {
          "key": "files.editor.loading_description",
          "value": "Please wait while the file content is loaded"
        }
      ],
      "hooks": [
        "useBannedIpsEditor",
        "useBannedPlayersEditor",
        "useBukkitEditor",
        "useCommandsEditor",
        "useFileEditorEngine",
        "useGui",
        "useMinecraftEditor",
        "useOpsEditor",
        "usePluginWidgets",
        "useRawEditor",
        "useSaveShortcut",
        "useServerPermissions",
        "useSpigotEditor",
        "useTheme",
        "useWhitelistEditor"
      ],
      "api_modules": [
        "files-api"
      ],
      "api_paths": [],
      "summary": "**Editing: file** Editing file at the file path Key UI: Loading File...; Please wait while the file content is loaded.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Editing: file**.\n3. Direct URL: `/server/[uuidShort]/files/edit`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/files/ide",
      "area": "server",
      "file_slug": "server-param-uuidShort-files-ide",
      "source": "src/app/(app)/server/[uuidShort]/files/ide/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "File Manager",
      "description": "Full-screen code IDE for server files. Related to: Server · Files.",
      "title_key": "files.title",
      "description_key": null,
      "component": "ServerFilesIDEPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-file-editor"
      ],
      "sections": [],
      "features": [
        "This directory is empty.",
        "File Editor",
        "No Files Found",
        "Loading File...",
        "Edit",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "files.list.empty_description",
          "value": "This directory is empty."
        },
        {
          "key": "files.editor.window_title",
          "value": "File Editor"
        },
        {
          "key": "files.list.empty_title",
          "value": "No Files Found"
        },
        {
          "key": "files.editor.loading_title",
          "value": "Loading File..."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete_confirm_description",
          "value": "This action cannot be undone and will permanently remove the record from our system."
        },
        {
          "key": "files.dialogs.delete.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useSaveShortcut",
        "useServerPermissions",
        "useSettings",
        "useTheme"
      ],
      "api_modules": [
        "files-api"
      ],
      "api_paths": [],
      "summary": "**File Manager** Full-screen code IDE for server files. Related to: Server · Files. Key UI: This directory is empty.; File Editor; No Files Found; Loading File...; Edit; Delete.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **File Manager**.\n3. Direct URL: `/server/[uuidShort]/files/ide`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/files/trash",
      "area": "server",
      "file_slug": "server-param-uuidShort-files-trash",
      "source": "src/app/(app)/server/[uuidShort]/files/trash/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Trash",
      "description": "The file trash bin is disabled by your administrator.",
      "title_key": "files.trash.title",
      "description_key": "files.trash.disabled",
      "component": "ServerTrashPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Deleted files from the file manager will appear here until restored or purged."
      ],
      "ui_labels": [
        {
          "key": "files.trash.empty",
          "value": "Deleted files from the file manager will appear here until restored or purged."
        },
        {
          "key": "files.trash.description",
          "value": "{count} item(s) using {size} in trash"
        }
      ],
      "hooks": [
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [
        "files-api"
      ],
      "api_paths": [],
      "summary": "**Trash** The file trash bin is disabled by your administrator. Key UI: Deleted files from the file manager will appear here until restored or purged..",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Trash**.\n3. Direct URL: `/server/[uuidShort]/files/trash`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/firewall",
      "area": "server",
      "file_slug": "server-param-uuidShort-firewall",
      "source": "src/app/(app)/server/[uuidShort]/firewall/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Firewall",
      "description": "Manage incoming connections to your server.",
      "title_key": "serverFirewall.title",
      "description_key": "serverFirewall.description",
      "component": "ServerFirewallPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-firewall"
      ],
      "sections": [],
      "features": [
        "Firewall management has been disabled by the administrator.",
        "Firewall Rules",
        "No Firewall Rules",
        "Get started by creating your first firewall rule to secure your server.",
        "Edit",
        "Delete",
        "Configure firewall rule details.",
        "Save",
        "Delete Rule"
      ],
      "ui_labels": [
        {
          "key": "serverFirewall.featureDisabledDescription",
          "value": "Firewall management has been disabled by the administrator."
        },
        {
          "key": "serverFirewall.rulesInfoTitle",
          "value": "Firewall Rules"
        },
        {
          "key": "serverFirewall.rulesInfoDescription",
          "value": "Control traffic to your server by creating allow or block rules based on IP addresses."
        },
        {
          "key": "serverFirewall.noRulesTitle",
          "value": "No Firewall Rules"
        },
        {
          "key": "serverFirewall.noRulesDescription",
          "value": "Get started by creating your first firewall rule to secure your server."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "serverFirewall.drawerDescription",
          "value": "Configure firewall rule details."
        },
        {
          "key": "common.save",
          "value": "Save"
        },
        {
          "key": "serverFirewall.confirmDeleteTitle",
          "value": "Delete Rule"
        },
        {
          "key": "serverFirewall.confirmDeleteDescription",
          "value": "Are you sure you want to delete this firewall rule? This action cannot be undone."
        },
        {
          "key": "serverFirewall.confirmDelete",
          "value": "Delete Rule"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Firewall** Manage incoming connections to your server. Key UI: Firewall management has been disabled by the administrator.; Firewall Rules; No Firewall Rules; Get started by creating your first firewall rule to secure your server.; Edit; Delete.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Firewall**.\n3. Direct URL: `/server/[uuidShort]/firewall`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/import",
      "area": "server",
      "file_slug": "server-param-uuidShort-import",
      "source": "src/app/(app)/server/[uuidShort]/import/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Server Import",
      "description": "Import server files from remote SFTP or FTP servers. The server must be offline for imports to work.",
      "title_key": "serverImport.title",
      "description_key": "serverImport.description",
      "component": "ServerImportPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-import"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [
        {
          "key": "serverImport.featureDisabledDescription",
          "value": "Server import has been disabled by the administrator. Please contact support if you need to import files from remote servers."
        },
        {
          "key": "serverImport.noImportsDescription",
          "value": "Get started by importing files from a remote SFTP or FTP server. The server will be automatically stopped during the import process."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Server Import** Import server files from remote SFTP or FTP servers. The server must be offline for imports to work.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Server Import**.\n3. Direct URL: `/server/[uuidShort]/import`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/import/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-import-new",
      "source": "src/app/(app)/server/[uuidShort]/import/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Start Import",
      "description": "Configure the import settings to transfer files from a remote server.",
      "title_key": "serverImport.createImport",
      "description_key": "serverImport.drawerDescription",
      "component": "CreateServerImportPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-import-new"
      ],
      "sections": [],
      "features": [
        "Import Server Files"
      ],
      "ui_labels": [
        {
          "key": "serverImport.featureDisabledDescription",
          "value": "Server import has been disabled by the administrator. Please contact support if you need to import files from remote servers."
        },
        {
          "key": "serverImport.infoTitle",
          "value": "Import Server Files"
        },
        {
          "key": "serverImport.infoDescription",
          "value": "Import files from a remote SFTP or FTP server to your server. The server must be stopped before importing. Large imports may take a significant amount of time."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Start Import** Configure the import settings to transfer files from a remote server. Key UI: Import Server Files.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Start Import**.\n3. Direct URL: `/server/[uuidShort]/import/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/lifecycle-hooks",
      "area": "server",
      "file_slug": "server-param-uuidShort-lifecycle-hooks",
      "source": "src/app/(app)/server/[uuidShort]/lifecycle-hooks/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Lifecycle Hooks",
      "description": "Configure pre-start, post-start, pre-stop, post-stop, and server-crash pipelines.",
      "title_key": "lifecycleHooks.title",
      "description_key": "lifecycleHooks.description",
      "component": "ServerLifecycleHooksPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-lifecycle-hooks"
      ],
      "sections": [],
      "features": [
        "Payload unavailable",
        "No plain message content",
        "Databases",
        "All databases",
        "Specific databases",
        "Lifecycle hooks are disabled",
        "Active pipeline",
        "Add your first step to this hook pipeline.",
        "Edit",
        "Delete",
        "Delete lifecycle step",
        "This action cannot be undone."
      ],
      "ui_labels": [
        {
          "key": "lifecycleHooks.payloadUnavailable",
          "value": "Payload unavailable"
        },
        {
          "key": "lifecycleHooks.discord.contentEmpty",
          "value": "No plain message content"
        },
        {
          "key": "serverTasks.backupTypeDatabases",
          "value": "Databases"
        },
        {
          "key": "serverTasks.databaseScopeAll",
          "value": "All databases"
        },
        {
          "key": "serverTasks.databaseScopeSpecific",
          "value": "Specific databases"
        },
        {
          "key": "lifecycleHooks.featureDisabledTitle",
          "value": "Lifecycle hooks are disabled"
        },
        {
          "key": "lifecycleHooks.pipelineLabel",
          "value": "Active pipeline"
        },
        {
          "key": "lifecycleHooks.noStepsDescription",
          "value": "Add your first step to this hook pipeline."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "lifecycleHooks.deleteModalTitle",
          "value": "Delete lifecycle step"
        },
        {
          "key": "lifecycleHooks.deleteModalDescription",
          "value": "This action cannot be undone."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Lifecycle Hooks** Configure pre-start, post-start, pre-stop, post-stop, and server-crash pipelines. Key UI: Payload unavailable; No plain message content; Databases; All databases; Specific databases; Lifecycle hooks are disabled.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Lifecycle Hooks**.\n3. Direct URL: `/server/[uuidShort]/lifecycle-hooks`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/lifecycle-hooks/step/[stepId]/edit",
      "area": "server",
      "file_slug": "server-param-uuidShort-lifecycle-hooks-step-param-stepId-edit",
      "source": "src/app/(app)/server/[uuidShort]/lifecycle-hooks/step/[stepId]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "stepId"
      ],
      "title": "Step not found",
      "description": "This step may have been removed or the link is invalid.",
      "title_key": "lifecycleHooks.stepEdit.notFoundTitle",
      "description_key": "lifecycleHooks.stepEdit.notFoundDescription",
      "component": "EditLifecycleHookStepPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-lifecycle-step-edit"
      ],
      "sections": [
        "Edit {hookType} step"
      ],
      "features": [
        "Update this step. Changes apply the next time Wings reports a server crash.",
        "Update this step. Changes apply the next time the server is detected as running.",
        "Update this step. Changes apply the next time the server has stopped.",
        "Update this step. Changes apply on the next power action that uses this hook.",
        "Select at least one database.",
        "Lifecycle hooks are disabled",
        "Step configuration",
        "Adjust task type, payload, and failure behavior as needed."
      ],
      "ui_labels": [
        {
          "key": "lifecycleHooks.stepEdit.descriptionCrash",
          "value": "Update this step. Changes apply the next time Wings reports a server crash."
        },
        {
          "key": "lifecycleHooks.stepEdit.descriptionPostStart",
          "value": "Update this step. Changes apply the next time the server is detected as running."
        },
        {
          "key": "lifecycleHooks.stepEdit.descriptionPostStop",
          "value": "Update this step. Changes apply the next time the server has stopped."
        },
        {
          "key": "lifecycleHooks.stepEdit.description",
          "value": "Update this step. Changes apply on the next power action that uses this hook."
        },
        {
          "key": "serverTasks.selectAtLeastOneDatabase",
          "value": "Select at least one database."
        },
        {
          "key": "lifecycleHooks.stepEdit.title",
          "value": "Edit {hookType} step"
        },
        {
          "key": "lifecycleHooks.featureDisabledTitle",
          "value": "Lifecycle hooks are disabled"
        },
        {
          "key": "lifecycleHooks.stepEdit.formSectionTitle",
          "value": "Step configuration"
        },
        {
          "key": "lifecycleHooks.stepEdit.formSectionDescription",
          "value": "Adjust task type, payload, and failure behavior as needed."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerDatabases",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Step not found** This step may have been removed or the link is invalid. Key UI: Update this step. Changes apply the next time Wings reports a server crash.; Update this step. Changes apply the next time the server is detected as running.; Update this step. Changes apply the next time the server has stopped.; Update this step. Changes apply on the next power action that uses this hook.; Select at least one database.; Lifecycle hooks are disabled.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Step not found**.\n3. Direct URL: `/server/[uuidShort]/lifecycle-hooks/step/[stepId]/edit`.\n4. Replace path params `uuidShort`, `stepId` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/lifecycle-hooks/step/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-lifecycle-hooks-step-new",
      "source": "src/app/(app)/server/[uuidShort]/lifecycle-hooks/step/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Add hookType step",
      "description": "Configure one action to run in this hook pipeline.",
      "title_key": "lifecycleHooks.stepNew.title",
      "description_key": "lifecycleHooks.stepNew.description",
      "component": "NewLifecycleHookStepPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-lifecycle-step-create"
      ],
      "sections": [],
      "features": [
        "Configure one action to run when Wings reports the server has crashed.",
        "Configure one action to run when the server is detected as running.",
        "Select at least one database.",
        "Lifecycle hooks are disabled",
        "Step configuration",
        "Choose a task type and fill in the details. Validation runs when you save."
      ],
      "ui_labels": [
        {
          "key": "lifecycleHooks.stepNew.descriptionCrash",
          "value": "Configure one action to run when Wings reports the server has crashed."
        },
        {
          "key": "lifecycleHooks.stepNew.descriptionPostStart",
          "value": "Configure one action to run when the server is detected as running."
        },
        {
          "key": "lifecycleHooks.stepNew.descriptionPostStop",
          "value": "Configure one action to run after the server has stopped. Container steps are not available because the container is no longer running."
        },
        {
          "key": "serverTasks.selectAtLeastOneDatabase",
          "value": "Select at least one database."
        },
        {
          "key": "lifecycleHooks.featureDisabledTitle",
          "value": "Lifecycle hooks are disabled"
        },
        {
          "key": "lifecycleHooks.stepNew.formSectionTitle",
          "value": "Step configuration"
        },
        {
          "key": "lifecycleHooks.stepNew.formSectionDescription",
          "value": "Choose a task type and fill in the details. Validation runs when you save."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerDatabases",
        "useServerPermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Add hookType step** Configure one action to run in this hook pipeline. Key UI: Configure one action to run when Wings reports the server has crashed.; Configure one action to run when the server is detected as running.; Select at least one database.; Lifecycle hooks are disabled; Step configuration; Choose a task type and fill in the details. Validation runs when you save..",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Add hookType step**.\n3. Direct URL: `/server/[uuidShort]/lifecycle-hooks/step/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/proxy",
      "area": "server",
      "file_slug": "server-param-uuidShort-proxy",
      "source": "src/app/(app)/server/[uuidShort]/proxy/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Reverse Proxy",
      "description": "Configure domains to point to your server ports.",
      "title_key": "serverProxy.title",
      "description_key": "serverProxy.description",
      "component": "ServerProxyPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-proxy"
      ],
      "sections": [],
      "features": [
        "The reverse proxy feature has been disabled by the administrator.",
        "Reverse Proxy Configuration",
        "No Proxies Configured",
        "Create your first reverse proxy to connect valid domains to your server ports.",
        "Delete Proxy"
      ],
      "ui_labels": [
        {
          "key": "serverProxy.featureDisabledDescription",
          "value": "The reverse proxy feature has been disabled by the administrator."
        },
        {
          "key": "serverProxy.infoTitle",
          "value": "Reverse Proxy Configuration"
        },
        {
          "key": "serverProxy.noProxiesTitle",
          "value": "No Proxies Configured"
        },
        {
          "key": "serverProxy.noProxiesDescription",
          "value": "Create your first reverse proxy to connect valid domains to your server ports."
        },
        {
          "key": "serverProxy.deleteModalTitle",
          "value": "Delete Proxy"
        },
        {
          "key": "serverProxy.deleteModalDescription",
          "value": "Are you sure you want to delete the proxy for {domain}?"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Reverse Proxy** Configure domains to point to your server ports. Key UI: The reverse proxy feature has been disabled by the administrator.; Reverse Proxy Configuration; No Proxies Configured; Create your first reverse proxy to connect valid domains to your server ports.; Delete Proxy.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Reverse Proxy**.\n3. Direct URL: `/server/[uuidShort]/proxy`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/proxy/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-proxy-new",
      "source": "src/app/(app)/server/[uuidShort]/proxy/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Proxy",
      "description": "Configure a new reverse proxy domain.",
      "title_key": "serverProxy.createProxy",
      "description_key": "serverProxy.createModalDescription",
      "component": "CreateProxyPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-proxy-new"
      ],
      "sections": [],
      "features": [
        "The reverse proxy feature has been disabled by the administrator.",
        "The domain name you want to use for this proxy.",
        "Reverse Proxy Configuration"
      ],
      "ui_labels": [
        {
          "key": "serverProxy.featureDisabledDescription",
          "value": "The reverse proxy feature has been disabled by the administrator."
        },
        {
          "key": "serverProxy.domainDescription",
          "value": "The domain name you want to use for this proxy."
        },
        {
          "key": "serverProxy.infoTitle",
          "value": "Reverse Proxy Configuration"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Proxy** Configure a new reverse proxy domain. Key UI: The reverse proxy feature has been disabled by the administrator.; The domain name you want to use for this proxy.; Reverse Proxy Configuration.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Create Proxy**.\n3. Direct URL: `/server/[uuidShort]/proxy/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/schedules",
      "area": "server",
      "file_slug": "server-param-uuidShort-schedules",
      "source": "src/app/(app)/server/[uuidShort]/schedules/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Schedules",
      "description": "Manage automated tasks for your server.",
      "title_key": "serverSchedules.title",
      "description_key": "serverSchedules.description",
      "component": "ServerSchedulesPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-schedules"
      ],
      "sections": [],
      "features": [
        "Please provide a JSON payload to import",
        "Processing",
        "Active",
        "Inactive",
        "Create your first schedule to automate server tasks.",
        "Edit",
        "Delete",
        "Delete Schedule",
        "Import Schedule",
        "Upload a previously exported schedule JSON file or paste the JSON directly."
      ],
      "ui_labels": [
        {
          "key": "serverSchedules.importEmptyPayload",
          "value": "Please provide a JSON payload to import"
        },
        {
          "key": "serverSchedules.statusProcessing",
          "value": "Processing"
        },
        {
          "key": "serverSchedules.statusActive",
          "value": "Active"
        },
        {
          "key": "serverSchedules.statusInactive",
          "value": "Inactive"
        },
        {
          "key": "serverSchedules.featureDisabledDescription",
          "value": "The schedules feature has been disabled by the administrator. Please contact support if you need to automate server tasks."
        },
        {
          "key": "serverSchedules.noSchedulesDescription",
          "value": "Create your first schedule to automate server tasks."
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "serverSchedules.confirmDeleteTitle",
          "value": "Delete Schedule"
        },
        {
          "key": "serverSchedules.confirmDeleteDescription",
          "value": "Are you sure you want to delete '{scheduleName}'? This action cannot be undone."
        },
        {
          "key": "serverSchedules.importScheduleTitle",
          "value": "Import Schedule"
        },
        {
          "key": "serverSchedules.importScheduleDescription",
          "value": "Upload a previously exported schedule JSON file or paste the JSON directly."
        },
        {
          "key": "serverSchedules.importScheduleButton",
          "value": "Import Schedule"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Schedules** Manage automated tasks for your server. Key UI: Please provide a JSON payload to import; Processing; Active; Inactive; Create your first schedule to automate server tasks.; Edit.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Schedules**.\n3. Direct URL: `/server/[uuidShort]/schedules`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/schedules/[id]/edit",
      "area": "server",
      "file_slug": "server-param-uuidShort-schedules-param-id-edit",
      "source": "src/app/(app)/server/[uuidShort]/schedules/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "id"
      ],
      "title": "Edit Schedule",
      "description": "Update the schedule configuration.",
      "title_key": "serverSchedules.editSchedule",
      "description_key": "serverSchedules.editScheduleDescription",
      "component": "EditSchedulePage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-schedules-edit"
      ],
      "sections": [],
      "features": [
        "Update"
      ],
      "ui_labels": [
        {
          "key": "serverSchedules.update",
          "value": "Update"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings",
        "useUserTimezone"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit Schedule** Update the schedule configuration. Key UI: Update.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Edit Schedule**.\n3. Direct URL: `/server/[uuidShort]/schedules/[id]/edit`.\n4. Replace path params `uuidShort`, `id` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/schedules/[id]/tasks",
      "area": "server",
      "file_slug": "server-param-uuidShort-schedules-param-id-tasks",
      "source": "src/app/(app)/server/[uuidShort]/schedules/[id]/tasks/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "id"
      ],
      "title": "Schedule Tasks",
      "description": "Manage tasks for scheduleName",
      "title_key": "serverTasks.title",
      "description_key": "serverTasks.description",
      "component": "ServerTasksPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-tasks"
      ],
      "sections": [],
      "features": [
        "Power",
        "Backup",
        "Command",
        "Container Shell (docker exec)",
        "Databases",
        "All databases",
        "Specific databases",
        "Create your first task for this schedule.",
        "Delete Task"
      ],
      "ui_labels": [
        {
          "key": "serverTasks.actionPower",
          "value": "Power"
        },
        {
          "key": "serverTasks.actionBackup",
          "value": "Backup"
        },
        {
          "key": "serverTasks.actionCommand",
          "value": "Command"
        },
        {
          "key": "serverTasks.actionContainerShell",
          "value": "Container Shell (docker exec)"
        },
        {
          "key": "serverTasks.backupTypeDatabases",
          "value": "Databases"
        },
        {
          "key": "serverTasks.databaseScopeAll",
          "value": "All databases"
        },
        {
          "key": "serverTasks.databaseScopeSpecific",
          "value": "Specific databases"
        },
        {
          "key": "serverTasks.noTasksDescription",
          "value": "Create your first task for this schedule."
        },
        {
          "key": "serverTasks.confirmDeleteTitle",
          "value": "Delete Task"
        },
        {
          "key": "serverTasks.confirmDeleteDescription",
          "value": "Are you sure you want to delete the {action} task ({payload})? This action cannot be undone."
        },
        {
          "key": "serverTasks.confirmDelete",
          "value": "Delete Task"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Schedule Tasks** Manage tasks for scheduleName Key UI: Power; Backup; Command; Container Shell (docker exec); Databases; All databases.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Schedule Tasks**.\n3. Direct URL: `/server/[uuidShort]/schedules/[id]/tasks`.\n4. Replace path params `uuidShort`, `id` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/schedules/[id]/tasks/[taskId]/edit",
      "area": "server",
      "file_slug": "server-param-uuidShort-schedules-param-id-tasks-param-taskId-edit",
      "source": "src/app/(app)/server/[uuidShort]/schedules/[id]/tasks/[taskId]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "id",
        "taskId"
      ],
      "title": "Edit Task",
      "description": "Update the task configuration.",
      "title_key": "serverTasks.editTask",
      "description_key": "serverTasks.editTaskDescription",
      "component": "EditTaskPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-tasks-edit"
      ],
      "sections": [],
      "features": [
        "Power",
        "Backup",
        "Command",
        "Container Shell (docker exec)",
        "Select at least one database.",
        "Update",
        "Action",
        "The type of action this task will perform."
      ],
      "ui_labels": [
        {
          "key": "serverTasks.actionPower",
          "value": "Power"
        },
        {
          "key": "serverTasks.actionBackup",
          "value": "Backup"
        },
        {
          "key": "serverTasks.actionCommand",
          "value": "Command"
        },
        {
          "key": "serverTasks.actionContainerShell",
          "value": "Container Shell (docker exec)"
        },
        {
          "key": "serverTasks.selectAtLeastOneDatabase",
          "value": "Select at least one database."
        },
        {
          "key": "serverTasks.update",
          "value": "Update"
        },
        {
          "key": "serverTasks.action",
          "value": "Action"
        },
        {
          "key": "serverTasks.actionHelp",
          "value": "The type of action this task will perform."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit Task** Update the task configuration. Key UI: Power; Backup; Command; Container Shell (docker exec); Select at least one database.; Update.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Edit Task**.\n3. Direct URL: `/server/[uuidShort]/schedules/[id]/tasks/[taskId]/edit`.\n4. Replace path params `uuidShort`, `id`, `taskId` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/schedules/[id]/tasks/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-schedules-param-id-tasks-new",
      "source": "src/app/(app)/server/[uuidShort]/schedules/[id]/tasks/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "id"
      ],
      "title": "Create Task",
      "description": "Add a new task to this schedule.",
      "title_key": "serverTasks.createTask",
      "description_key": "serverTasks.createTaskDescription",
      "component": "CreateTaskPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-tasks-new"
      ],
      "sections": [],
      "features": [
        "Power",
        "Backup",
        "Command",
        "Container Shell (docker exec)",
        "Select at least one database.",
        "Create",
        "Action",
        "The type of action this task will perform.",
        "Select action type...",
        "Select power action...",
        "Choose the power action to perform."
      ],
      "ui_labels": [
        {
          "key": "serverTasks.actionPower",
          "value": "Power"
        },
        {
          "key": "serverTasks.actionBackup",
          "value": "Backup"
        },
        {
          "key": "serverTasks.actionCommand",
          "value": "Command"
        },
        {
          "key": "serverTasks.actionContainerShell",
          "value": "Container Shell (docker exec)"
        },
        {
          "key": "serverTasks.selectAtLeastOneDatabase",
          "value": "Select at least one database."
        },
        {
          "key": "serverTasks.create",
          "value": "Create"
        },
        {
          "key": "serverTasks.action",
          "value": "Action"
        },
        {
          "key": "serverTasks.actionHelp",
          "value": "The type of action this task will perform."
        },
        {
          "key": "serverTasks.selectActionType",
          "value": "Select action type..."
        },
        {
          "key": "serverTasks.selectPowerAction",
          "value": "Select power action..."
        },
        {
          "key": "serverTasks.selectPowerActionHelp",
          "value": "Choose the power action to perform."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Task** Add a new task to this schedule. Key UI: Power; Backup; Command; Container Shell (docker exec); Select at least one database.; Create.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Create Task**.\n3. Direct URL: `/server/[uuidShort]/schedules/[id]/tasks/new`.\n4. Replace path params `uuidShort`, `id` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/schedules/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-schedules-new",
      "source": "src/app/(app)/server/[uuidShort]/schedules/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Schedule",
      "description": "Create a new automated task schedule.",
      "title_key": "serverSchedules.createSchedule",
      "description_key": "serverSchedules.createScheduleDescription",
      "component": "CreateSchedulePage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-schedules-new"
      ],
      "sections": [],
      "features": [
        "Create"
      ],
      "ui_labels": [
        {
          "key": "serverSchedules.create",
          "value": "Create"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings",
        "useUserTimezone"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Schedule** Create a new automated task schedule. Key UI: Create.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Create Schedule**.\n3. Direct URL: `/server/[uuidShort]/schedules/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/settings",
      "area": "server",
      "file_slug": "server-param-uuidShort-settings",
      "source": "src/app/(app)/server/[uuidShort]/settings/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Server Settings",
      "description": "Manage your server configuration, SFTP details, and perform administrative actions.",
      "title_key": "serverSettings.title",
      "description_key": "serverSettings.description",
      "component": "ServerSettingsPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-settings"
      ],
      "sections": [],
      "features": [
        "Update the identifying details for this server.",
        "Description",
        "Backup policy",
        "Maximum backups (host limit)",
        "Auto Start",
        "Start after node reconnect",
        "Extra delay (seconds)",
        "Details for connecting to your server via SFTP.",
        "How to connect?",
        "Stop the install or reinstall currently running on this server.",
        "Permanently delete this server and all associated data.",
        "Confirm Reinstallation"
      ],
      "ui_labels": [
        {
          "key": "serverSettings.serverInformationDescription",
          "value": "Update the identifying details for this server."
        },
        {
          "key": "serverSettings.serverDescription",
          "value": "Description"
        },
        {
          "key": "serverSettings.backupPolicyTitle",
          "value": "Backup policy"
        },
        {
          "key": "serverSettings.backupLimitReadOnlyLabel",
          "value": "Maximum backups (host limit)"
        },
        {
          "key": "serverSettings.autoStartTitle",
          "value": "Auto Start"
        },
        {
          "key": "serverSettings.autoStartDescription",
          "value": "Start this server automatically after the game node reboots or reconnects. Manually stopped and suspended servers are never auto-started."
        },
        {
          "key": "serverSettings.autoStartLabel",
          "value": "Start after node reconnect"
        },
        {
          "key": "serverSettings.autoStartDelayLabel",
          "value": "Extra delay (seconds)"
        },
        {
          "key": "serverSettings.sftpDetailsDescription",
          "value": "Details for connecting to your server via SFTP."
        },
        {
          "key": "serverSettings.sftpInfoTitle",
          "value": "How to connect?"
        },
        {
          "key": "serverSettings.sftpInfoDescription",
          "value": "Use an SFTP client like FileZilla or WinSCP. Enter the host, port, your username, and your account password."
        },
        {
          "key": "serverSettings.abortInstallDescription",
          "value": "Stop the install or reinstall currently running on this server."
        },
        {
          "key": "serverSettings.deleteServerDescription",
          "value": "Permanently delete this server and all associated data."
        },
        {
          "key": "serverSettings.confirmReinstall",
          "value": "Confirm Reinstallation"
        },
        {
          "key": "serverSettings.reinstallConfirmation",
          "value": "Are you sure you want to reinstall this server?"
        },
        {
          "key": "serverSettings.confirmText",
          "value": "Type 'REINSTALL' to confirm"
        },
        {
          "key": "serverSettings.confirmTextPlaceholder",
          "value": "REINSTALL"
        },
        {
          "key": "serverSettings.typeReinstallToConfirm",
          "value": "Please type 'REINSTALL' to proceed."
        },
        {
          "key": "serverSettings.deleteServerStep1Title",
          "value": "Warning: Irreversible Action"
        },
        {
          "key": "serverSettings.deleteServerStep1Description",
          "value": "Deleting this server will remove all data, files, and configurations locally and remotely. This cannot be undone."
        },
        {
          "key": "serverSettings.deleteServerStep2Description",
          "value": "Please acknowledge that this action is irreversible."
        },
        {
          "key": "serverSettings.deleteServerStep2Confirm",
          "value": "I understand this action is irreversible"
        },
        {
          "key": "serverSettings.deleteServerStep3Description",
          "value": "Please solve this simple math problem to verify you are human."
        },
        {
          "key": "serverSettings.deleteServerStep4Description",
          "value": "To confirm, please type the name of the server."
        },
        {
          "key": "serverSettings.deleteServerConfirm",
          "value": "Confirm Delete"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [
        "files-api"
      ],
      "api_paths": [],
      "summary": "**Server Settings** Manage your server configuration, SFTP details, and perform administrative actions. Key UI: Update the identifying details for this server.; Description; Backup policy; Maximum backups (host limit); Auto Start; Start after node reconnect.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Server Settings**.\n3. Direct URL: `/server/[uuidShort]/settings`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/startup",
      "area": "server",
      "file_slug": "server-param-uuidShort-startup",
      "source": "src/app/(app)/server/[uuidShort]/startup/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Server Startup",
      "description": "Control your server's startup command, Docker image, and environment variables.",
      "title_key": "serverStartup.title",
      "description_key": "serverStartup.description",
      "component": "ServerStartupPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-startup"
      ],
      "sections": [
        "Custom environment variables"
      ],
      "features": [
        "Added directly to this server and synced without a transfer.",
        "Software Transfer",
        "Transfer your server to another software environment."
      ],
      "ui_labels": [
        {
          "key": "serverStartup.customEnv.title",
          "value": "Custom environment variables"
        },
        {
          "key": "serverStartup.customEnv.description",
          "value": "Added directly to this server and synced without a transfer."
        },
        {
          "key": "navigation.items.transferSpell",
          "value": "Software Transfer"
        },
        {
          "key": "serverStartup.transferDescription",
          "value": "Transfer your server to another software environment."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Server Startup** Control your server's startup command, Docker image, and environment variables. Key UI: Added directly to this server and synced without a transfer.; Software Transfer; Transfer your server to another software environment..",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Server Startup**.\n3. Direct URL: `/server/[uuidShort]/startup`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/startup/transfer/spell",
      "area": "server",
      "file_slug": "server-param-uuidShort-startup-transfer-spell",
      "source": "src/app/(app)/server/[uuidShort]/startup/transfer/spell/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Software Transfer",
      "description": "Change your server software and configuration.",
      "title_key": "navigation.items.transferSpell",
      "description_key": "serverStartup.spellSelectionHelp",
      "component": "ServerTransferSpellPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-startup-transfer-spell"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [
        {
          "key": "serverStartup.stepLabel",
          "value": "Step {step}"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/realms",
        "/api/user/spells"
      ],
      "summary": "**Software Transfer** Change your server software and configuration.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Software Transfer**.\n3. Direct URL: `/server/[uuidShort]/startup/transfer/spell`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/subdomains",
      "area": "server",
      "file_slug": "server-param-uuidShort-subdomains",
      "source": "src/app/(app)/server/[uuidShort]/subdomains/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Subdomains",
      "description": "Manage subdomains assigned to your server.",
      "title_key": "serverSubdomains.title",
      "description_key": "serverSubdomains.description",
      "component": "ServerSubdomainsPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-subdomains"
      ],
      "sections": [],
      "features": [
        "Create Subdomain",
        "Create a subdomain to easily access your server.",
        "Delete Subdomain",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "serverSubdomains.createButton",
          "value": "Create Subdomain"
        },
        {
          "key": "serverSubdomains.limitReachedDescription",
          "value": "You have reached the maximum of {limit} subdomains for this server."
        },
        {
          "key": "serverSubdomains.noSubdomainsDescription",
          "value": "Create a subdomain to easily access your server."
        },
        {
          "key": "serverSubdomains.deleteTitle",
          "value": "Delete Subdomain"
        },
        {
          "key": "serverSubdomains.deleteDescription",
          "value": "Are you sure you want to delete {subdomain}? This action cannot be undone."
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Subdomains** Manage subdomains assigned to your server. Key UI: Create Subdomain; Create a subdomain to easily access your server.; Delete Subdomain; Delete.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Subdomains**.\n3. Direct URL: `/server/[uuidShort]/subdomains`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/subdomains/new",
      "area": "server",
      "file_slug": "server-param-uuidShort-subdomains-new",
      "source": "src/app/(app)/server/[uuidShort]/subdomains/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Subdomain",
      "description": "Create a new subdomain for your server.",
      "title_key": "serverSubdomains.createButton",
      "description_key": "serverSubdomains.newSubdomainDescription",
      "component": "CreateSubdomainPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-subdomains-new"
      ],
      "sections": [],
      "features": [
        "Domain",
        "Subdomain",
        "Create a subdomain to easily access your server."
      ],
      "ui_labels": [
        {
          "key": "serverSubdomains.limitReachedDescription",
          "value": "You have reached the maximum of {limit} subdomains for this server."
        },
        {
          "key": "serverSubdomains.domainLabel",
          "value": "Domain"
        },
        {
          "key": "serverSubdomains.subdomainLabel",
          "value": "Subdomain"
        },
        {
          "key": "serverSubdomains.noSubdomainsDescription",
          "value": "Create a subdomain to easily access your server."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Subdomain** Create a new subdomain for your server. Key UI: Domain; Subdomain; Create a subdomain to easily access your server..",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Create Subdomain**.\n3. Direct URL: `/server/[uuidShort]/subdomains/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/server/[uuidShort]/users",
      "area": "server",
      "file_slug": "server-param-uuidShort-users",
      "source": "src/app/(app)/server/[uuidShort]/users/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Subusers",
      "description": "Manage subusers and their permissions for this server",
      "title_key": "serverSubusers.title",
      "description_key": "serverSubusers.description",
      "component": "ServerSubusersPage",
      "audience": "Server owners / subusers with the relevant server permission",
      "nav": null,
      "widget_slugs": [
        "server-users"
      ],
      "sections": [],
      "features": [
        "No subusers have been added to this server yet. Add one to get started.",
        "No subusers match your search criteria.",
        "Enter the email address of the user you want to add",
        "Email",
        "Delete Subuser",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "serverSubusers.featureDisabledDescription",
          "value": "Subuser management has been disabled by the administrator. Please contact the server owner if you need to manage access."
        },
        {
          "key": "serverSubusers.noSubusersDescription",
          "value": "No subusers have been added to this server yet. Add one to get started."
        },
        {
          "key": "serverSubusers.noResultsDescription",
          "value": "No subusers match your search criteria."
        },
        {
          "key": "serverSubusers.addSubuserDialogDescription",
          "value": "Enter the email address of the user you want to add"
        },
        {
          "key": "serverSubusers.emailLabel",
          "value": "Email"
        },
        {
          "key": "serverSubusers.confirmDeleteTitle",
          "value": "Delete Subuser"
        },
        {
          "key": "serverSubusers.confirmDeleteDescription",
          "value": "Are you sure you want to remove {email} from this server? This action cannot be undone."
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "serverSubusers.managePermissionsDescription",
          "value": "Select the specific permissions this subuser should have access to. Choose individual permissions or select all to grant full access."
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useServerPermissions",
        "useSettings"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Subusers** Manage subusers and their permissions for this server Key UI: No subusers have been added to this server yet. Add one to get started.; No subusers match your search criteria.; Enter the email address of the user you want to add; Email; Delete Subuser; Delete.",
      "how_to_guide_users": "1. Open Server sidebar (open a server first).\n2. Go to **Subusers**.\n3. Direct URL: `/server/[uuidShort]/users`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/vds/[id]/[[...pluginPath]]",
      "area": "vds",
      "file_slug": "vds-param-id-catch-pluginPath",
      "source": "src/app/(app)/vds/[id]/[[...pluginPath]]/page.tsx",
      "dynamic": true,
      "params": [
        "id",
        "pluginPath"
      ],
      "title": "Vds",
      "description": "Plugin-provided UI route inside the vds area. The path after the resource id is owned by an installed plugin.",
      "title_key": null,
      "description_key": null,
      "component": "VdsPluginPage",
      "audience": "VDS / virtual machine owners",
      "nav": null,
      "widget_slugs": [
        "vds-plugin-page"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Vds** Plugin-provided UI route inside the vds area. The path after the resource id is owned by an installed plugin.",
      "how_to_guide_users": "1. Open VDS sidebar (open a VDS first).\n2. Go to **Vds**.\n3. Direct URL: `/vds/[id]/[[...pluginPath]]`.\n4. Replace path params `id`, `pluginPath` with the real resource id(s)."
    },
    {
      "route": "/vds/[id]/activities",
      "area": "vds",
      "file_slug": "vds-param-id-activities",
      "source": "src/app/(app)/vds/[id]/activities/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Activities",
      "description": "All power, subuser and console actions for this VDS instance.",
      "title_key": "navigation.items.activities",
      "description_key": "vds.activities.description",
      "component": "VdsActivitiesPage",
      "audience": "VDS / virtual machine owners",
      "nav": null,
      "widget_slugs": [
        "vds-activities"
      ],
      "sections": [
        "Filter & view options"
      ],
      "features": [
        "VDS Not Found",
        "Try adjusting your search query or filters to find what you are looking for.",
        "This server has no recorded activity yet."
      ],
      "ui_labels": [
        {
          "key": "vds.console.not_found_title",
          "value": "VDS Not Found"
        },
        {
          "key": "serverActivities.noActivitiesSearchDescription",
          "value": "Try adjusting your search query or filters to find what you are looking for."
        },
        {
          "key": "serverActivities.noActivitiesDescription",
          "value": "This server has no recorded activity yet."
        },
        {
          "key": "serverActivities.filterDialog.title",
          "value": "Filter & view options"
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useVmInstance"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Activities** All power, subuser and console actions for this VDS instance. Key UI: VDS Not Found; Try adjusting your search query or filters to find what you are looking for.; This server has no recorded activity yet..",
      "how_to_guide_users": "1. Open VDS sidebar (open a VDS first).\n2. Go to **Activities**.\n3. Direct URL: `/vds/[id]/activities`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/vds/[id]/backups",
      "area": "vds",
      "file_slug": "vds-param-id-backups",
      "source": "src/app/(app)/vds/[id]/backups/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Backups",
      "description": "Manage Wings file backups and database SQL dumps",
      "title_key": "serverBackups.title",
      "description_key": "serverBackups.description",
      "component": "VdsBackupsPage",
      "audience": "VDS / virtual machine owners",
      "nav": null,
      "widget_slugs": [
        "vds-backups"
      ],
      "sections": [],
      "features": [
        "FIFO rolling backups enabled",
        "Recheck backup status",
        "Create your first backup to protect your server data",
        "Mark as interrupted",
        "Delete",
        "Recover stalled backup status?",
        "Choose server files, databases, or a full server backup.",
        "Create Backup",
        "Delete Backup",
        "Are you sure you want to delete this backup? This action cannot be undone.",
        "Restore Backup"
      ],
      "ui_labels": [
        {
          "key": "serverBackups.backupLimitReachedDescription",
          "value": "You have reached the maximum number of backups for this server (limit: {limit}). Please delete some backups to create a new one."
        },
        {
          "key": "serverBackups.fifoRollingTitle",
          "value": "FIFO rolling backups enabled"
        },
        {
          "key": "serverBackups.recheckAction",
          "value": "Recheck backup status"
        },
        {
          "key": "serverBackups.noBackupsDescription",
          "value": "Create your first backup to protect your server data"
        },
        {
          "key": "serverBackups.recoverAction",
          "value": "Mark as interrupted"
        },
        {
          "key": "serverBackups.delete",
          "value": "Delete"
        },
        {
          "key": "serverBackups.recoverTitle",
          "value": "Recover stalled backup status?"
        },
        {
          "key": "serverBackups.createBackupDescription",
          "value": "Choose server files, databases, or a full server backup."
        },
        {
          "key": "serverBackups.create",
          "value": "Create Backup"
        },
        {
          "key": "serverBackups.confirmDeleteTitle",
          "value": "Delete Backup"
        },
        {
          "key": "serverBackups.deleteConfirm",
          "value": "Are you sure you want to delete this backup? This action cannot be undone."
        },
        {
          "key": "serverBackups.confirmRestoreTitle",
          "value": "Restore Backup"
        },
        {
          "key": "serverBackups.restoreConfirm",
          "value": "The VM will be stopped and restored to the state of this backup. All current data will be replaced. This action cannot be undone."
        }
      ],
      "hooks": [
        "useDateFormatOptions",
        "usePluginWidgets",
        "useVmInstance"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Backups** Manage Wings file backups and database SQL dumps Key UI: FIFO rolling backups enabled; Recheck backup status; Create your first backup to protect your server data; Mark as interrupted; Delete; Recover stalled backup status?.",
      "how_to_guide_users": "1. Open VDS sidebar (open a VDS first).\n2. Go to **Backups**.\n3. Direct URL: `/vds/[id]/backups`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/vds/[id]/network",
      "area": "vds",
      "file_slug": "vds-param-id-network",
      "source": "src/app/(app)/vds/[id]/network/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Networking",
      "description": "View assigned IPs, interfaces, and DNS settings.",
      "title_key": "vds.networking.title",
      "description_key": "vds.networking.description",
      "component": "VdsNetworkingPage",
      "audience": "VDS / virtual machine owners",
      "nav": null,
      "widget_slugs": [
        "vds-network"
      ],
      "sections": [
        "Assigned IPs",
        "DNS",
        "How It Works"
      ],
      "features": [
        "VDS Not Found",
        "This VDS instance does not exist or you do not have access.",
        "Refresh",
        "These addresses are currently attached to your VDS instance.",
        "No assigned IPs were found for this VDS.",
        "Nameserver and search domain settings for this instance.",
        "Nameserver",
        "Search domain",
        "Primary IP",
        "Apply"
      ],
      "ui_labels": [
        {
          "key": "vds.console.not_found_title",
          "value": "VDS Not Found"
        },
        {
          "key": "vds.console.not_found_description",
          "value": "This VDS instance does not exist or you do not have access."
        },
        {
          "key": "navigation.items.refresh",
          "value": "Refresh"
        },
        {
          "key": "vds.networking.assigned_ips.title",
          "value": "Assigned IPs"
        },
        {
          "key": "vds.networking.assigned_ips.description",
          "value": "These addresses are currently attached to your VDS instance."
        },
        {
          "key": "vds.networking.assigned_ips.empty",
          "value": "No assigned IPs were found for this VDS."
        },
        {
          "key": "vds.networking.dns.title",
          "value": "DNS"
        },
        {
          "key": "vds.networking.dns.description",
          "value": "Nameserver and search domain settings for this instance."
        },
        {
          "key": "vds.networking.dns.nameserver_label",
          "value": "Nameserver"
        },
        {
          "key": "vds.networking.dns.searchdomain_label",
          "value": "Search domain"
        },
        {
          "key": "vds.networking.primary_ip_label",
          "value": "Primary IP"
        },
        {
          "key": "vds.networking.dns.apply_button",
          "value": "Apply"
        },
        {
          "key": "vds.networking.notes.title",
          "value": "How It Works"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useVmInstance"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Networking** View assigned IPs, interfaces, and DNS settings. Key UI: VDS Not Found; This VDS instance does not exist or you do not have access.; Refresh; These addresses are currently attached to your VDS instance.; No assigned IPs were found for this VDS.; Nameserver and search domain settings for this instance..",
      "how_to_guide_users": "1. Open VDS sidebar (open a VDS first).\n2. Go to **Networking**.\n3. Direct URL: `/vds/[id]/network`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/vds/[id]/settings",
      "area": "vds",
      "file_slug": "vds-param-id-settings",
      "source": "src/app/(app)/vds/[id]/settings/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "VDS Settings",
      "description": "Manage your VDS instance settings and reinstall options.",
      "title_key": "vds.settings.title",
      "description_key": "vds.settings.description",
      "component": "VdsSettingsPage",
      "audience": "VDS / virtual machine owners",
      "nav": null,
      "widget_slugs": [
        "vds-settings"
      ],
      "sections": [
        "Instance Info",
        "QEMU Hardware (EFI / TPM)",
        "ISO Mount",
        "Reinstall Operating System"
      ],
      "features": [
        "ISO unmounted successfully.",
        "ISO fetch queued.",
        "ISO mounted successfully.",
        "Reboot the VM to boot from the ISO.",
        "VDS Not Found",
        "Enable UEFI (EFI disk) and TPM 2.0 state disk for this QEMU VM.",
        "BIOS / Firmware",
        "Enable EFI disk",
        "Enable TPM 2.0",
        "Disable serial port (Windows)",
        "Apply",
        "Current ISO"
      ],
      "ui_labels": [
        {
          "key": "vds.settings.iso.toast_unmounted",
          "value": "ISO unmounted successfully."
        },
        {
          "key": "vds.settings.iso.toast_fetch_queued",
          "value": "ISO fetch queued."
        },
        {
          "key": "vds.settings.iso.toast_mounted",
          "value": "ISO mounted successfully."
        },
        {
          "key": "vds.settings.iso.toast_reboot_hint",
          "value": "Reboot the VM to boot from the ISO."
        },
        {
          "key": "vds.console.not_found_title",
          "value": "VDS Not Found"
        },
        {
          "key": "vds.settings.instance_info.title",
          "value": "Instance Info"
        },
        {
          "key": "vds.settings.hardware.title",
          "value": "QEMU Hardware (EFI / TPM)"
        },
        {
          "key": "vds.settings.hardware.description",
          "value": "Enable UEFI (EFI disk) and TPM 2.0 state disk for this QEMU VM."
        },
        {
          "key": "vds.settings.hardware.bios_label",
          "value": "BIOS / Firmware"
        },
        {
          "key": "vds.settings.hardware.efi_label",
          "value": "Enable EFI disk"
        },
        {
          "key": "vds.settings.hardware.tpm_label",
          "value": "Enable TPM 2.0"
        },
        {
          "key": "vds.settings.hardware.disable_serial_label",
          "value": "Disable serial port (Windows)"
        },
        {
          "key": "vds.settings.hardware.apply_button",
          "value": "Apply"
        },
        {
          "key": "vds.settings.iso.title",
          "value": "ISO Mount"
        },
        {
          "key": "vds.settings.iso.description",
          "value": "Upload an ISO (browser -> panel -> Proxmox) or use ISO URL (Proxmox downloads directly), then boot this VM from it."
        },
        {
          "key": "vds.settings.iso.current_label",
          "value": "Current ISO"
        },
        {
          "key": "vds.settings.iso.unmount_button",
          "value": "Unmount ISO"
        },
        {
          "key": "vds.settings.iso.storage_label",
          "value": "ISO Storage"
        },
        {
          "key": "vds.settings.iso.url_label",
          "value": "ISO URL"
        },
        {
          "key": "vds.settings.iso.fetch_button",
          "value": "Fetch & Mount"
        },
        {
          "key": "vds.settings.reinstall.title",
          "value": "Reinstall Operating System"
        },
        {
          "key": "vds.settings.reinstall.description",
          "value": "This will permanently wipe the current OS and reinstall from a chosen template. All data on the VDS will be lost."
        },
        {
          "key": "vds.settings.reinstall.button",
          "value": "Begin Reinstall"
        },
        {
          "key": "vds.settings.reinstall.confirm_title",
          "value": "Confirm Reinstall"
        },
        {
          "key": "vds.settings.reinstall.confirm_desc",
          "value": "This action is irreversible. All data on this VDS will be destroyed."
        },
        {
          "key": "vds.settings.reinstall.confirm_body_prefix",
          "value": "You are about to reinstall "
        },
        {
          "key": "vds.settings.reinstall.confirm_body_on",
          "value": " on "
        },
        {
          "key": "vds.settings.reinstall.confirm_body_after_hostname",
          "value": ". All existing data will be permanently erased."
        },
        {
          "key": "vds.settings.reinstall.cloud_init.username_label",
          "value": "Username"
        },
        {
          "key": "vds.settings.reinstall.cloud_init.password_label",
          "value": "Password"
        },
        {
          "key": "vds.settings.reinstall.cloud_init.ssh_keys_label",
          "value": "SSH Public Keys"
        },
        {
          "key": "vds.settings.reinstall.cancel_button",
          "value": "Cancel"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useVmInstance"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**VDS Settings** Manage your VDS instance settings and reinstall options. Key UI: ISO unmounted successfully.; ISO fetch queued.; ISO mounted successfully.; Reboot the VM to boot from the ISO.; VDS Not Found; Enable UEFI (EFI disk) and TPM 2.0 state disk for this QEMU VM..",
      "how_to_guide_users": "1. Open VDS sidebar (open a VDS first).\n2. Go to **VDS Settings**.\n3. Direct URL: `/vds/[id]/settings`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/vds/[id]/users",
      "area": "vds",
      "file_slug": "vds-param-id-users",
      "source": "src/app/(app)/vds/[id]/users/page.tsx",
      "dynamic": true,
      "params": [
        "id"
      ],
      "title": "Users",
      "description": "Manage user access and permissions for this VDS instance.",
      "title_key": "navigation.items.users",
      "description_key": "vds.subusers.description",
      "component": "VdsSubusersPage",
      "audience": "VDS / virtual machine owners",
      "nav": null,
      "widget_slugs": [
        "vds-users"
      ],
      "sections": [
        "Subuser Management"
      ],
      "features": [
        "VDS Not Found",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "vds.console.not_found_title",
          "value": "VDS Not Found"
        },
        {
          "key": "vds.subusers.title",
          "value": "Subuser Management"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "usePluginWidgets",
        "useVmInstance"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Users** Manage user access and permissions for this VDS instance. Key UI: VDS Not Found; Delete.",
      "how_to_guide_users": "1. Open VDS sidebar (open a VDS first).\n2. Go to **Users**.\n3. Direct URL: `/vds/[id]/users`.\n4. Replace path params `id` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/[[...pluginPath]]",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-catch-pluginPath",
      "source": "src/app/(app)/webspace/[uuidShort]/[[...pluginPath]]/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "pluginPath"
      ],
      "title": "Webspace",
      "description": "Plugin-provided UI route inside the webspace area. The path after the resource id is owned by an installed plugin.",
      "title_key": null,
      "description_key": null,
      "component": "WebSpacePluginPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-plugin-page"
      ],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [
        "usePluginWidgets"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Webspace** Plugin-provided UI route inside the webspace area. The path after the resource id is owned by an installed plugin.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Webspace**.\n3. Direct URL: `/webspace/[uuidShort]/[[...pluginPath]]`.\n4. Replace path params `uuidShort`, `pluginPath` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/access",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-access",
      "source": "src/app/(app)/webspace/[uuidShort]/access/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "File access",
      "description": "SFTP and classic FTP connection details and extra accounts.",
      "title_key": "webSpaces.accessPage.title",
      "description_key": "webSpaces.accessPage.description",
      "component": "WebSpaceAccessPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-access"
      ],
      "sections": [],
      "features": [
        "Delete this SFTP account?",
        "File access unavailable",
        "You need SFTP permission to view file access credentials.",
        "SFTP access",
        "Extra SFTP accounts",
        "Delete",
        "Classic FTP"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.settings.sftpAccountDeleteConfirm",
          "value": "Delete this SFTP account?"
        },
        {
          "key": "webSpaces.accessPage.noPermissionTitle",
          "value": "File access unavailable"
        },
        {
          "key": "webSpaces.accessPage.noPermissionDescription",
          "value": "You need SFTP permission to view file access credentials."
        },
        {
          "key": "webSpaces.settings.sftpTitle",
          "value": "SFTP access"
        },
        {
          "key": "webSpaces.settings.sftpAccountsTitle",
          "value": "Extra SFTP accounts"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "webSpaces.settings.ftpTitle",
          "value": "Classic FTP"
        }
      ],
      "hooks": [
        "useSession",
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**File access** SFTP and classic FTP connection details and extra accounts. Key UI: Delete this SFTP account?; File access unavailable; You need SFTP permission to view file access credentials.; SFTP access; Extra SFTP accounts; Delete.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **File access**.\n3. Direct URL: `/webspace/[uuidShort]/access`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/activities",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-activities",
      "source": "src/app/(app)/webspace/[uuidShort]/activities/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Activity",
      "description": "Recent actions on this WebSpace.",
      "title_key": "webSpaces.activities.title",
      "description_key": "webSpaces.activities.description",
      "component": "WebSpaceActivitiesPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-activities"
      ],
      "sections": [],
      "features": [
        "No activity yet",
        "Try adjusting your search query or filters to find what you are looking for.",
        "Actions on this WebSpace will appear here."
      ],
      "ui_labels": [
        {
          "key": "webSpaces.activities.empty",
          "value": "No activity yet"
        },
        {
          "key": "serverActivities.noActivitiesSearchDescription",
          "value": "Try adjusting your search query or filters to find what you are looking for."
        },
        {
          "key": "webSpaces.activities.emptyHelp",
          "value": "Actions on this WebSpace will appear here."
        }
      ],
      "hooks": [
        "useDateFormatOptions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Activity** Recent actions on this WebSpace. Key UI: No activity yet; Try adjusting your search query or filters to find what you are looking for.; Actions on this WebSpace will appear here..",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Activity**.\n3. Direct URL: `/webspace/[uuidShort]/activities`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/analytics",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-analytics",
      "source": "src/app/(app)/webspace/[uuidShort]/analytics/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Analytics",
      "description": "HTTP traffic from the reverse proxy and panel activity for this WebSpace.",
      "title_key": "webSpaces.analytics.title",
      "description_key": "webSpaces.analytics.description",
      "component": "WebSpaceAnalyticsPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-analytics"
      ],
      "sections": [],
      "features": [
        "Traffic data unavailable",
        "Web traffic",
        "No traffic yet",
        "Response families",
        "Status codes",
        "Panel activity"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.analytics.trafficUnavailable",
          "value": "Traffic data unavailable"
        },
        {
          "key": "webSpaces.analytics.trafficSection",
          "value": "Web traffic"
        },
        {
          "key": "webSpaces.analytics.noTrafficTitle",
          "value": "No traffic yet"
        },
        {
          "key": "webSpaces.analytics.noTrafficDescription",
          "value": "Once visitors hit your domains through the web node proxy, daily request and bandwidth stats will show up here."
        },
        {
          "key": "webSpaces.analytics.statusGroups",
          "value": "Response families"
        },
        {
          "key": "webSpaces.analytics.statusCodes",
          "value": "Status codes"
        },
        {
          "key": "webSpaces.analytics.activitySection",
          "value": "Panel activity"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Analytics** HTTP traffic from the reverse proxy and panel activity for this WebSpace. Key UI: Traffic data unavailable; Web traffic; No traffic yet; Response families; Status codes; Panel activity.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Analytics**.\n3. Direct URL: `/webspace/[uuidShort]/analytics`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/apps",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-apps",
      "source": "src/app/(app)/webspace/[uuidShort]/apps/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Apps",
      "description": "Install software into this WebSpace.",
      "title_key": "webSpaces.apps.title",
      "description_key": "webSpaces.apps.description",
      "component": "WebSpaceAppsPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-apps"
      ],
      "sections": [],
      "features": [
        "No apps for this runtime",
        "WordPress",
        "Site title",
        "Laravel",
        "Joomla",
        "Drupal",
        "PrestaShop",
        "Magento",
        "Ghost",
        "Node.js starter",
        "Python starter",
        "Git deploy"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.apps.unavailableTitle",
          "value": "No apps for this runtime"
        },
        {
          "key": "webSpaces.apps.unavailableHelp",
          "value": "Apps are only available for container runtimes (PHP, Node.js, Python). Static sites use the file manager instead."
        },
        {
          "key": "webSpaces.apps.wordpressTitle",
          "value": "WordPress"
        },
        {
          "key": "webSpaces.apps.siteTitle",
          "value": "Site title"
        },
        {
          "key": "webSpaces.apps.laravelTitle",
          "value": "Laravel"
        },
        {
          "key": "webSpaces.apps.joomlaTitle",
          "value": "Joomla"
        },
        {
          "key": "webSpaces.apps.drupalTitle",
          "value": "Drupal"
        },
        {
          "key": "webSpaces.apps.prestashopTitle",
          "value": "PrestaShop"
        },
        {
          "key": "webSpaces.apps.magentoTitle",
          "value": "Magento"
        },
        {
          "key": "webSpaces.apps.ghostTitle",
          "value": "Ghost"
        },
        {
          "key": "webSpaces.apps.nodeStarterTitle",
          "value": "Node.js starter"
        },
        {
          "key": "webSpaces.apps.pythonStarterTitle",
          "value": "Python starter"
        },
        {
          "key": "webSpaces.apps.gitTitle",
          "value": "Git deploy"
        }
      ],
      "hooks": [
        "useWebSpace"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Apps** Install software into this WebSpace. Key UI: No apps for this runtime; WordPress; Site title; Laravel; Joomla; Drupal.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Apps**.\n3. Direct URL: `/webspace/[uuidShort]/apps`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/backups",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-backups",
      "source": "src/app/(app)/webspace/[uuidShort]/backups/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Backups",
      "description": "Local archives on the web node.",
      "title_key": "webSpaces.backups.title",
      "description_key": "webSpaces.backups.description",
      "component": "WebSpaceBackupsPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-backups"
      ],
      "sections": [],
      "features": [
        "Restore this backup? Current files will be overwritten.",
        "Delete this backup?",
        "Recheck backup status",
        "Create backup",
        "No backups yet.",
        "Download",
        "Delete"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.backups.restoreConfirm",
          "value": "Restore this backup? Current files will be overwritten."
        },
        {
          "key": "webSpaces.backups.deleteConfirm",
          "value": "Delete this backup?"
        },
        {
          "key": "serverBackups.recheckAction",
          "value": "Recheck backup status"
        },
        {
          "key": "webSpaces.backups.create",
          "value": "Create backup"
        },
        {
          "key": "webSpaces.backups.empty",
          "value": "No backups yet."
        },
        {
          "key": "webSpaces.backups.download",
          "value": "Download"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        }
      ],
      "hooks": [
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Backups** Local archives on the web node. Key UI: Restore this backup? Current files will be overwritten.; Delete this backup?; Recheck backup status; Create backup; No backups yet.; Download.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Backups**.\n3. Direct URL: `/webspace/[uuidShort]/backups`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/databases",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-databases",
      "source": "src/app/(app)/webspace/[uuidShort]/databases/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Databases",
      "description": "Manage databases for this WebSpace",
      "title_key": "webSpaces.databases.title",
      "description_key": "webSpaces.databases.description",
      "component": "WebSpaceDatabasesPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-databases"
      ],
      "sections": [],
      "features": [
        "You do not have permission to view databases.",
        "Database deleted",
        "Database dump downloaded",
        "Database restored",
        "Password reset",
        "Opening phpMyAdmin...",
        "Opening phpPgAdmin…",
        "Create Database",
        "Refresh",
        "Database limit reached",
        "Search databases...",
        "No Databases"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.databases.noDatabasePermission",
          "value": "You do not have permission to view databases."
        },
        {
          "key": "webSpaces.databases.deleted",
          "value": "Database deleted"
        },
        {
          "key": "webSpaces.databases.dumpOk",
          "value": "Database dump downloaded"
        },
        {
          "key": "webSpaces.databases.restoreOk",
          "value": "Database restored"
        },
        {
          "key": "webSpaces.databases.passwordReset",
          "value": "Password reset"
        },
        {
          "key": "webSpaces.databases.newPassword",
          "value": "New password: {password}"
        },
        {
          "key": "serverDatabases.openingPhpMyAdmin",
          "value": "Opening phpMyAdmin..."
        },
        {
          "key": "webSpaces.databases.openingPhpPgAdmin",
          "value": "Opening phpPgAdmin…"
        },
        {
          "key": "webSpaces.databases.createDatabase",
          "value": "Create Database"
        },
        {
          "key": "webSpaces.databases.refresh",
          "value": "Refresh"
        },
        {
          "key": "webSpaces.databases.databaseLimitReached",
          "value": "Database limit reached"
        },
        {
          "key": "webSpaces.databases.databaseLimitReachedDescription",
          "value": "This WebSpace can have at most {limit} database(s)."
        },
        {
          "key": "webSpaces.databases.searchPlaceholder",
          "value": "Search databases..."
        },
        {
          "key": "webSpaces.databases.noDatabases",
          "value": "No Databases"
        },
        {
          "key": "webSpaces.databases.noHosts",
          "value": "No database hosts configured for this WebSpace."
        },
        {
          "key": "webSpaces.databases.noDatabasesDescription",
          "value": "Create a database to get started."
        },
        {
          "key": "serverDatabases.allHosts",
          "value": "All Hosts"
        },
        {
          "key": "webSpaces.databases.view",
          "value": "View"
        },
        {
          "key": "webSpaces.databases.dump",
          "value": "Download SQL dump"
        },
        {
          "key": "webSpaces.databases.restore",
          "value": "Restore from SQL"
        },
        {
          "key": "webSpaces.databases.resetPassword",
          "value": "Reset password"
        },
        {
          "key": "webSpaces.databases.deleteConfirm",
          "value": "Delete this database? This cannot be undone."
        },
        {
          "key": "serverDatabases.sensitiveInfoWarning",
          "value": "Sensitive Information Warning"
        },
        {
          "key": "serverDatabases.sensitiveInfoDescription",
          "value": "This dialog shows database credentials, including passwords. Only continue somewhere private."
        },
        {
          "key": "serverDatabases.rememberChoice",
          "value": "Remember my choice and do not show this warning again"
        },
        {
          "key": "serverDatabases.skipWarningInFuture",
          "value": "Skip this warning in the future"
        },
        {
          "key": "serverDatabases.viewDatabase",
          "value": "View Database"
        },
        {
          "key": "serverDatabases.databaseCredentials",
          "value": "Database Credentials"
        },
        {
          "key": "serverDatabases.connectionDetails",
          "value": "Connection Details"
        },
        {
          "key": "serverDatabases.host",
          "value": "Host"
        },
        {
          "key": "serverDatabases.port",
          "value": "Port"
        },
        {
          "key": "serverDatabases.type",
          "value": "Type"
        }
      ],
      "hooks": [
        "useSettings",
        "useWebSpace",
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Databases** Manage databases for this WebSpace Key UI: You do not have permission to view databases.; Database deleted; Database dump downloaded; Database restored; Password reset; Opening phpMyAdmin....",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Databases**.\n3. Direct URL: `/webspace/[uuidShort]/databases`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/databases/new",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-databases-new",
      "source": "src/app/(app)/webspace/[uuidShort]/databases/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Database",
      "description": "Provision a new database on an available host.",
      "title_key": "webSpaces.databases.createDatabase",
      "description_key": "webSpaces.databases.createDatabaseDescription",
      "component": "CreateWebSpaceDatabasePage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-databases-new"
      ],
      "sections": [],
      "features": [
        "No database hosts configured for this WebSpace.",
        "Database limit reached",
        "Select a host and enter a database name",
        "Database created",
        "Create",
        "Database host",
        "No database hosts available",
        "Select a database host",
        "Ask an administrator to attach a database host to this web node.",
        "Database Credentials",
        "Database name",
        "database_name"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.databases.noHosts",
          "value": "No database hosts configured for this WebSpace."
        },
        {
          "key": "webSpaces.databases.databaseLimitReached",
          "value": "Database limit reached"
        },
        {
          "key": "webSpaces.databases.selectHostAndName",
          "value": "Select a host and enter a database name"
        },
        {
          "key": "webSpaces.databases.created",
          "value": "Database created"
        },
        {
          "key": "webSpaces.databases.passwordToast",
          "value": "Password: {password}"
        },
        {
          "key": "webSpaces.databases.create",
          "value": "Create"
        },
        {
          "key": "webSpaces.databases.databaseLimitReachedDescription",
          "value": "This WebSpace can have at most {limit} database(s)."
        },
        {
          "key": "webSpaces.databases.databaseHost",
          "value": "Database host"
        },
        {
          "key": "webSpaces.databases.noDatabaseHosts",
          "value": "No database hosts available"
        },
        {
          "key": "webSpaces.databases.selectDatabaseHost",
          "value": "Select a database host"
        },
        {
          "key": "webSpaces.databases.noDatabaseHostsDescription",
          "value": "Ask an administrator to attach a database host to this web node."
        },
        {
          "key": "serverDatabases.databaseCredentials",
          "value": "Database Credentials"
        },
        {
          "key": "webSpaces.databases.databaseName",
          "value": "Database name"
        },
        {
          "key": "webSpaces.databases.namePlaceholder",
          "value": "database_name"
        },
        {
          "key": "webSpaces.databases.databaseNameHelp",
          "value": "Letters, numbers, and underscores only. Prefixed automatically."
        },
        {
          "key": "serverDatabases.remoteAccess",
          "value": "Remote Access"
        },
        {
          "key": "serverDatabases.remoteAccessHelp",
          "value": "Host pattern for remote access (e.g., % for any host)"
        },
        {
          "key": "serverDatabases.maxConnections",
          "value": "Max Connections"
        }
      ],
      "hooks": [
        "useWebSpace",
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Database** Provision a new database on an available host. Key UI: No database hosts configured for this WebSpace.; Database limit reached; Select a host and enter a database name; Database created; Create; Database host.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Create Database**.\n3. Direct URL: `/webspace/[uuidShort]/databases/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/domains",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-domains",
      "source": "src/app/(app)/webspace/[uuidShort]/domains/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Domains & SSL",
      "description": "Manage domain routes, HTTPS, DNS records, and certificates.",
      "title_key": "webSpaces.domainsPage.title",
      "description_key": "webSpaces.domainsPage.description",
      "component": "WebSpaceDomainsPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-domains"
      ],
      "sections": [],
      "features": [
        "Force renew SSL certificates for all domains?",
        "Remove the custom SSL certificate and return to automatic certificates?",
        "Domains",
        "SSL & DNS",
        "DNS status:",
        "Custom SSL certificate"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.settings.forceRenewConfirm",
          "value": "Force renew SSL certificates for all domains?"
        },
        {
          "key": "webSpaces.settings.customSslRemoveConfirm",
          "value": "Remove the custom SSL certificate and return to automatic certificates?"
        },
        {
          "key": "webSpaces.settings.domainsTitle",
          "value": "Domains"
        },
        {
          "key": "webSpaces.settings.sslDnsTitle",
          "value": "SSL & DNS"
        },
        {
          "key": "webSpaces.settings.dnsStatus",
          "value": "DNS status:"
        },
        {
          "key": "webSpaces.settings.customSslTitle",
          "value": "Custom SSL certificate"
        }
      ],
      "hooks": [
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Domains & SSL** Manage domain routes, HTTPS, DNS records, and certificates. Key UI: Force renew SSL certificates for all domains?; Remove the custom SSL certificate and return to automatic certificates?; Domains; SSL & DNS; DNS status:; Custom SSL certificate.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Domains & SSL**.\n3. Direct URL: `/webspace/[uuidShort]/domains`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/email",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-email",
      "source": "src/app/(app)/webspace/[uuidShort]/email/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Email",
      "description": "Mailboxes for this WebSpace.",
      "title_key": "webSpaces.email.title",
      "description_key": "webSpaces.email.description",
      "component": "WebSpaceEmailPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-email"
      ],
      "sections": [
        "Deliverability"
      ],
      "features": [
        "Mail DNS records provisioned",
        "Delete this mailbox? This cannot be undone.",
        "Delete this mailing list?",
        "Delete this forwarder?",
        "No mailboxes yet.",
        "Autorespond",
        "Delete",
        "Forwarders & catch-all",
        "Mailing lists",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.email.dnsProvisionedToast",
          "value": "Mail DNS records provisioned"
        },
        {
          "key": "webSpaces.email.passwordLabel",
          "value": "Password: {password}"
        },
        {
          "key": "webSpaces.email.deleteMailboxConfirm",
          "value": "Delete this mailbox? This cannot be undone."
        },
        {
          "key": "webSpaces.email.deleteMailingListConfirm",
          "value": "Delete this mailing list?"
        },
        {
          "key": "webSpaces.email.deleteForwarderConfirm",
          "value": "Delete this forwarder?"
        },
        {
          "key": "webSpaces.email.empty",
          "value": "No mailboxes yet."
        },
        {
          "key": "webSpaces.email.autorespondTitle",
          "value": "Autorespond"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "webSpaces.email.forwardersTitle",
          "value": "Forwarders & catch-all"
        },
        {
          "key": "webSpaces.email.mailingListsTitle",
          "value": "Mailing lists"
        },
        {
          "key": "webSpaces.email.deliverability.title",
          "value": "Deliverability"
        },
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [
        "useWebSpace",
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Email** Mailboxes for this WebSpace. Key UI: Mail DNS records provisioned; Delete this mailbox? This cannot be undone.; Delete this mailing list?; Delete this forwarder?; No mailboxes yet.; Autorespond.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Email**.\n3. Direct URL: `/webspace/[uuidShort]/email`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/email/webmail",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-email-webmail",
      "source": "src/app/(app)/webspace/[uuidShort]/email/webmail/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Webmail",
      "description": "Read mail in your browser. Panel Roundcube uses secure SSO; node webmail opens in a new tab when configured.",
      "title_key": "webSpaces.email.webmail",
      "description_key": "webSpaces.email.webmailEmbedHelp",
      "component": "WebSpaceWebmailPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Webmail** Read mail in your browser. Panel Roundcube uses secure SSO; node webmail opens in a new tab when configured.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Webmail**.\n3. Direct URL: `/webspace/[uuidShort]/email/webmail`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/files",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-files",
      "source": "src/app/(app)/webspace/[uuidShort]/files/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "File Manager",
      "description": "Manage files in the current directory",
      "title_key": "files.title",
      "description_key": "files.manage_description",
      "component": "WebSpaceFilesPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-files"
      ],
      "sections": [
        "Search Files"
      ],
      "features": [
        "Upload",
        "Include Path Patterns",
        "Exclude Path Patterns",
        "Search File Content",
        "File Size Range"
      ],
      "ui_labels": [
        {
          "key": "files.toolbar.upload",
          "value": "Upload"
        },
        {
          "key": "files.search.advanced.title",
          "value": "Search Files"
        },
        {
          "key": "files.search.advanced.subtitle",
          "value": "Use advanced filters to narrow results quickly."
        },
        {
          "key": "files.search.advanced.include_label",
          "value": "Include Path Patterns"
        },
        {
          "key": "files.search.advanced.exclude_label",
          "value": "Exclude Path Patterns"
        },
        {
          "key": "files.search.advanced.search_text_label",
          "value": "Search File Content"
        },
        {
          "key": "files.search.advanced.file_size_label",
          "value": "File Size Range"
        }
      ],
      "hooks": [
        "useFileManagerApi",
        "useSettings",
        "useWebSpacePermissions"
      ],
      "api_modules": [
        "files-api",
        "webspace-files-api"
      ],
      "api_paths": [],
      "summary": "**File Manager** Manage files in the current directory Key UI: Upload; Include Path Patterns; Exclude Path Patterns; Search File Content; File Size Range.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **File Manager**.\n3. Direct URL: `/webspace/[uuidShort]/files`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/files/edit",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-files-edit",
      "source": "src/app/(app)/webspace/[uuidShort]/files/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Editing: file",
      "description": "Editing file at the file path",
      "title_key": "files.editor.title",
      "description_key": "files.editor.description",
      "component": "WebSpaceFileEditorPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-file-editor"
      ],
      "sections": [],
      "features": [
        "Please wait while the file content is loaded"
      ],
      "ui_labels": [
        {
          "key": "files.editor.loading_description",
          "value": "Please wait while the file content is loaded"
        }
      ],
      "hooks": [
        "useFileEditorEngine",
        "useFileManagerApi",
        "useSaveShortcut",
        "useTheme",
        "useWebSpacePermissions"
      ],
      "api_modules": [
        "files-api",
        "webspace-files-api"
      ],
      "api_paths": [],
      "summary": "**Editing: file** Editing file at the file path Key UI: Please wait while the file content is loaded.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Editing: file**.\n3. Direct URL: `/webspace/[uuidShort]/files/edit`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/files/trash",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-files-trash",
      "source": "src/app/(app)/webspace/[uuidShort]/files/trash/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Trash",
      "description": "The file trash bin is disabled by your administrator.",
      "title_key": "files.trash.title",
      "description_key": "files.trash.disabled",
      "component": "WebSpaceTrashPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-files-trash"
      ],
      "sections": [],
      "features": [
        "Deleted files from the file manager will appear here until restored or purged."
      ],
      "ui_labels": [
        {
          "key": "files.trash.empty",
          "value": "Deleted files from the file manager will appear here until restored or purged."
        },
        {
          "key": "files.trash.description",
          "value": "{count} item(s) using {size} in trash"
        }
      ],
      "hooks": [
        "useSettings",
        "useWebSpacePermissions"
      ],
      "api_modules": [
        "webspace-files-api"
      ],
      "api_paths": [],
      "summary": "**Trash** The file trash bin is disabled by your administrator. Key UI: Deleted files from the file manager will appear here until restored or purged..",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Trash**.\n3. Direct URL: `/webspace/[uuidShort]/files/trash`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/logs",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-logs",
      "source": "src/app/(app)/webspace/[uuidShort]/logs/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Logs",
      "description": "Access, error, runtime, and install logs for this WebSpace.",
      "title_key": "webSpaces.logs.title",
      "description_key": "webSpaces.logs.description",
      "component": "WebSpaceLogsPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-logs"
      ],
      "sections": [],
      "features": [
        "No log output.",
        "Install",
        "Rotate log files?",
        "Archives current log files and starts fresh ones on the web node.",
        "Rotate now"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.logs.empty",
          "value": "No log output."
        },
        {
          "key": "webSpaces.logs.install",
          "value": "Install"
        },
        {
          "key": "webSpaces.logs.rotateTitle",
          "value": "Rotate log files?"
        },
        {
          "key": "webSpaces.logs.rotateDescription",
          "value": "Archives current log files and starts fresh ones on the web node."
        },
        {
          "key": "webSpaces.logs.rotateConfirm",
          "value": "Rotate now"
        }
      ],
      "hooks": [
        "useQuilldWebSocket",
        "useRegex"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Logs** Access, error, runtime, and install logs for this WebSpace. Key UI: No log output.; Install; Rotate log files?; Archives current log files and starts fresh ones on the web node.; Rotate now.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Logs**.\n3. Direct URL: `/webspace/[uuidShort]/logs`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/malware",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-malware",
      "source": "src/app/(app)/webspace/[uuidShort]/malware/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Malware scan",
      "description": "Scan site files with ClamAV and schedule weekly scans.",
      "title_key": "webSpaces.malwarePage.title",
      "description_key": "webSpaces.malwarePage.description",
      "component": "WebSpaceMalwarePage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-malware"
      ],
      "sections": [],
      "features": [
        "Malware scan",
        "ClamAV is not installed on this web node."
      ],
      "ui_labels": [
        {
          "key": "webSpaces.settings.malwareTitle",
          "value": "Malware scan"
        },
        {
          "key": "webSpaces.settings.malwareUnavailable",
          "value": "ClamAV is not installed on this web node."
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Malware scan** Scan site files with ClamAV and schedule weekly scans. Key UI: Malware scan; ClamAV is not installed on this web node..",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Malware scan**.\n3. Direct URL: `/webspace/[uuidShort]/malware`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/schedules",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-schedules",
      "source": "src/app/(app)/webspace/[uuidShort]/schedules/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Schedules",
      "description": "Manage automated tasks for your server.",
      "title_key": "serverSchedules.title",
      "description_key": "serverSchedules.description",
      "component": "WebSpaceSchedulesPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-schedules"
      ],
      "sections": [],
      "features": [
        "Create your first schedule to automate server tasks.",
        "Run command",
        "Processing",
        "Active",
        "Inactive",
        "Edit",
        "Delete",
        "Delete Schedule"
      ],
      "ui_labels": [
        {
          "key": "serverSchedules.noSchedulesDescription",
          "value": "Create your first schedule to automate server tasks."
        },
        {
          "key": "webSpaces.schedules.actions.command",
          "value": "Run command"
        },
        {
          "key": "serverSchedules.statusProcessing",
          "value": "Processing"
        },
        {
          "key": "serverSchedules.statusActive",
          "value": "Active"
        },
        {
          "key": "serverSchedules.statusInactive",
          "value": "Inactive"
        },
        {
          "key": "common.edit",
          "value": "Edit"
        },
        {
          "key": "common.delete",
          "value": "Delete"
        },
        {
          "key": "serverSchedules.confirmDeleteTitle",
          "value": "Delete Schedule"
        },
        {
          "key": "serverSchedules.confirmDeleteDescription",
          "value": "Are you sure you want to delete '{scheduleName}'? This action cannot be undone."
        }
      ],
      "hooks": [
        "useDateFormatOptions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Schedules** Manage automated tasks for your server. Key UI: Create your first schedule to automate server tasks.; Run command; Processing; Active; Inactive; Edit.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Schedules**.\n3. Direct URL: `/webspace/[uuidShort]/schedules`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/schedules/[id]/edit",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-schedules-param-id-edit",
      "source": "src/app/(app)/webspace/[uuidShort]/schedules/[id]/edit/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort",
        "id"
      ],
      "title": "Edit Schedule",
      "description": "Update schedule timing and the ordered task list.",
      "title_key": "serverSchedules.editSchedule",
      "description_key": "webSpaces.schedules.editDescription",
      "component": "WebSpaceScheduleEditPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Update"
      ],
      "ui_labels": [
        {
          "key": "serverSchedules.update",
          "value": "Update"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Edit Schedule** Update schedule timing and the ordered task list. Key UI: Update.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Edit Schedule**.\n3. Direct URL: `/webspace/[uuidShort]/schedules/[id]/edit`.\n4. Replace path params `uuidShort`, `id` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/schedules/new",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-schedules-new",
      "source": "src/app/(app)/webspace/[uuidShort]/schedules/new/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Create Schedule",
      "description": "Create a cron schedule with one or more tasks. Use presets for WordPress, WHMCS, Laravel, or backups.",
      "title_key": "serverSchedules.createSchedule",
      "description_key": "webSpaces.schedules.createDescription",
      "component": "WebSpaceScheduleNewPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [
        "Create",
        "Quick preset"
      ],
      "ui_labels": [
        {
          "key": "serverSchedules.create",
          "value": "Create"
        },
        {
          "key": "webSpaces.schedules.presets.label",
          "value": "Quick preset"
        }
      ],
      "hooks": [
        "useUserTimezone"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Create Schedule** Create a cron schedule with one or more tasks. Use presets for WordPress, WHMCS, Laravel, or backups. Key UI: Create; Quick preset.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Create Schedule**.\n3. Direct URL: `/webspace/[uuidShort]/schedules/new`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/settings",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-settings",
      "source": "src/app/(app)/webspace/[uuidShort]/settings/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Settings",
      "description": "WebSpace settings",
      "title_key": "webSpaces.settings.title",
      "description_key": "webSpaces.settings.description",
      "component": "WebSpaceSettingsPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-settings"
      ],
      "sections": [
        "Website access"
      ],
      "features": [
        "Reinstall started",
        "Name, description, and resource limits.",
        "Description",
        "Monthly HTTP bandwidth quota exceeded",
        "PHP",
        "Redis",
        "Danger zone",
        "Reinstall WebSpace",
        "Reinstall this WebSpace? Files may be wiped."
      ],
      "ui_labels": [
        {
          "key": "webSpaces.overview.reinstallStarted",
          "value": "Reinstall started"
        },
        {
          "key": "webSpaces.settings.informationDescription",
          "value": "Name, description, and resource limits."
        },
        {
          "key": "webSpaces.settings.descriptionLabel",
          "value": "Description"
        },
        {
          "key": "webSpaces.overview.bandwidthOverQuota",
          "value": "Monthly HTTP bandwidth quota exceeded"
        },
        {
          "key": "webSpaces.settings.phpTitle",
          "value": "PHP"
        },
        {
          "key": "webSpaces.settings.redisTitle",
          "value": "Redis"
        },
        {
          "key": "webSpaces.access.title",
          "value": "Website access"
        },
        {
          "key": "webSpaces.overview.dangerZone",
          "value": "Danger zone"
        },
        {
          "key": "webSpaces.overview.reinstall",
          "value": "Reinstall WebSpace"
        },
        {
          "key": "webSpaces.overview.reinstallConfirm",
          "value": "Reinstall this WebSpace? Files may be wiped."
        }
      ],
      "hooks": [
        "useSession"
      ],
      "api_modules": [],
      "api_paths": [
        "/api/user/webspaces/catalog"
      ],
      "summary": "**Settings** WebSpace settings Key UI: Reinstall started; Name, description, and resource limits.; Description; Monthly HTTP bandwidth quota exceeded; PHP; Redis.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Settings**.\n3. Direct URL: `/webspace/[uuidShort]/settings`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/users",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-users",
      "source": "src/app/(app)/webspace/[uuidShort]/users/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Users",
      "description": "Manage WebSpace subusers",
      "title_key": "webSpaces.users.title",
      "description_key": "webSpaces.users.description",
      "component": "WebSpaceUsersPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-users"
      ],
      "sections": [],
      "features": [
        "Remove this subuser?",
        "No subusers yet.",
        "Save"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.users.removeConfirm",
          "value": "Remove this subuser?"
        },
        {
          "key": "webSpaces.users.empty",
          "value": "No subusers yet."
        },
        {
          "key": "common.save",
          "value": "Save"
        }
      ],
      "hooks": [
        "useWebSpacePermissions"
      ],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Users** Manage WebSpace subusers Key UI: Remove this subuser?; No subusers yet.; Save.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Users**.\n3. Direct URL: `/webspace/[uuidShort]/users`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspace/[uuidShort]/waf",
      "area": "webspace",
      "file_slug": "webspace-param-uuidShort-waf",
      "source": "src/app/(app)/webspace/[uuidShort]/waf/page.tsx",
      "dynamic": true,
      "params": [
        "uuidShort"
      ],
      "title": "Web application firewall",
      "description": "Configure WAF rules, IP blocks, and path denylists.",
      "title_key": "webSpaces.wafPage.title",
      "description_key": "webSpaces.wafPage.description",
      "component": "WebSpaceWafPage",
      "audience": "WebSpace owners / users with webspace access",
      "nav": null,
      "widget_slugs": [
        "webspace-waf"
      ],
      "sections": [],
      "features": [
        "Web application firewall"
      ],
      "ui_labels": [
        {
          "key": "webSpaces.settings.wafTitle",
          "value": "Web application firewall"
        }
      ],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Web application firewall** Configure WAF rules, IP blocks, and path denylists. Key UI: Web application firewall.",
      "how_to_guide_users": "1. Open WebSpace sidebar (open a webspace first).\n2. Go to **Web application firewall**.\n3. Direct URL: `/webspace/[uuidShort]/waf`.\n4. Replace path params `uuidShort` with the real resource id(s)."
    },
    {
      "route": "/webspaces",
      "area": "webspaces",
      "file_slug": "webspaces",
      "source": "src/app/(app)/webspaces/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Webspaces",
      "description": "FeatherPanel webspaces UI page at `/webspaces`.",
      "title_key": null,
      "description_key": null,
      "component": "LegacyWebSpacesRedirect",
      "audience": "Users managing WebSpaces from the dashboard",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Webspaces** FeatherPanel webspaces UI page at `/webspaces`.",
      "how_to_guide_users": "1. Open Dashboard → WebSpaces.\n2. Go to **Webspaces**.\n3. Direct URL: `/webspaces`."
    },
    {
      "route": "/webspaces/create",
      "area": "webspaces",
      "file_slug": "webspaces-create",
      "source": "src/app/(app)/webspaces/create/page.tsx",
      "dynamic": false,
      "params": [],
      "title": "Webspaces · Create",
      "description": "Create form for a new resource. Related to: Webspaces.",
      "title_key": null,
      "description_key": null,
      "component": "LegacyWebSpacesCreateRedirect",
      "audience": "Users managing WebSpaces from the dashboard",
      "nav": null,
      "widget_slugs": [],
      "sections": [],
      "features": [],
      "ui_labels": [],
      "hooks": [],
      "api_modules": [],
      "api_paths": [],
      "summary": "**Webspaces · Create** Create form for a new resource. Related to: Webspaces.",
      "how_to_guide_users": "1. Open Dashboard → WebSpaces.\n2. Go to **Webspaces · Create**.\n3. Direct URL: `/webspaces/create`."
    }
  ]
}
