diff --git a/backend/src/api/docs.ts b/backend/src/api/docs.ts index cee346a0..8bc1b049 100644 --- a/backend/src/api/docs.ts +++ b/backend/src/api/docs.ts @@ -98,13 +98,13 @@ function formatZodConfigSchema(schema: z.ZodTypeAny) { } export function initDocs(router: express.Router) { - const docsPluginNames = Object.keys(guildPluginInfo).filter((k) => guildPluginInfo[k].showInDocs); + const docsPluginNames = Object.keys(guildPluginInfo).filter((k) => guildPluginInfo[k].type === "stable" || guildPluginInfo[k].type === "legacy"); router.get("/docs/plugins", (req: express.Request, res: express.Response) => { res.json( docsPluginNames.map((pluginName) => { - const info = guildPluginInfo[pluginName]; - const thinInfo = info ? { prettyName: info.prettyName, legacy: info.legacy ?? false } : {}; + const info = guildPluginInfo[pluginName]!; + const thinInfo = { prettyName: info.prettyName, type: info.type }; return { name: pluginName, info: thinInfo, diff --git a/backend/src/plugins/AutoDelete/info.ts b/backend/src/plugins/AutoDelete/info.ts index dc4ac730..36c95fd5 100644 --- a/backend/src/plugins/AutoDelete/info.ts +++ b/backend/src/plugins/AutoDelete/info.ts @@ -2,7 +2,7 @@ import { ZeppelinPluginInfo } from "../../types.js"; import { zAutoDeleteConfig } from "./types.js"; export const autoDeletePluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Auto-delete", description: "Allows Zeppelin to auto-delete messages from a channel after a delay", configurationGuide: "Maximum deletion delay is currently 5 minutes", diff --git a/backend/src/plugins/AutoReactions/info.ts b/backend/src/plugins/AutoReactions/info.ts index a2817502..60ff9504 100644 --- a/backend/src/plugins/AutoReactions/info.ts +++ b/backend/src/plugins/AutoReactions/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zAutoReactionsConfig } from "./types.js"; export const autoReactionsInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Auto-reactions", description: trimPluginDescription(` Allows setting up automatic reactions to all new messages on a channel diff --git a/backend/src/plugins/Automod/info.ts b/backend/src/plugins/Automod/info.ts index 5c3efeaf..8d83e23b 100644 --- a/backend/src/plugins/Automod/info.ts +++ b/backend/src/plugins/Automod/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zAutomodConfig } from "./types.js"; export const automodPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Automod", configSchema: zAutomodConfig, description: trimPluginDescription(` diff --git a/backend/src/plugins/Cases/info.ts b/backend/src/plugins/Cases/info.ts index 4cda78db..c30abb29 100644 --- a/backend/src/plugins/Cases/info.ts +++ b/backend/src/plugins/Cases/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zCasesConfig } from "./types.js"; export const casesPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Cases", configSchema: zCasesConfig, description: trimPluginDescription(` diff --git a/backend/src/plugins/Censor/info.ts b/backend/src/plugins/Censor/info.ts index 3cb0cc5f..abe70c10 100644 --- a/backend/src/plugins/Censor/info.ts +++ b/backend/src/plugins/Censor/info.ts @@ -3,8 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zCensorConfig } from "./types.js"; export const censorPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, - legacy: true, + type: "legacy", prettyName: "Censor", configSchema: zCensorConfig, description: trimPluginDescription(` diff --git a/backend/src/plugins/CompanionChannels/info.ts b/backend/src/plugins/CompanionChannels/info.ts index d4fb7860..59b5c487 100644 --- a/backend/src/plugins/CompanionChannels/info.ts +++ b/backend/src/plugins/CompanionChannels/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zCompanionChannelsConfig } from "./types.js"; export const companionChannelsPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Companion channels", configSchema: zCompanionChannelsConfig, description: trimPluginDescription(` diff --git a/backend/src/plugins/ContextMenus/info.ts b/backend/src/plugins/ContextMenus/info.ts index 508ca811..8922d705 100644 --- a/backend/src/plugins/ContextMenus/info.ts +++ b/backend/src/plugins/ContextMenus/info.ts @@ -2,7 +2,7 @@ import { ZeppelinPluginInfo } from "../../types.js"; import { zContextMenusConfig } from "./types.js"; export const contextMenuPluginInfo: ZeppelinPluginInfo = { - showInDocs: false, + type: "stable", prettyName: "Context menu", configSchema: zContextMenusConfig, }; diff --git a/backend/src/plugins/Counters/info.ts b/backend/src/plugins/Counters/info.ts index abf07c70..a0aa90af 100644 --- a/backend/src/plugins/Counters/info.ts +++ b/backend/src/plugins/Counters/info.ts @@ -3,7 +3,7 @@ import { zCountersConfig } from "./types.js"; export const countersPluginInfo: ZeppelinPluginInfo = { prettyName: "Counters", - showInDocs: true, + type: "stable", description: "Keep track of per-user, per-channel, or global numbers and trigger specific actions based on this number", configurationGuide: "See Counters setup guide", diff --git a/backend/src/plugins/CustomEvents/info.ts b/backend/src/plugins/CustomEvents/info.ts index f9a8cec0..82aae5a7 100644 --- a/backend/src/plugins/CustomEvents/info.ts +++ b/backend/src/plugins/CustomEvents/info.ts @@ -3,6 +3,6 @@ import { zCustomEventsConfig } from "./types.js"; export const customEventsPluginInfo: ZeppelinPluginInfo = { prettyName: "Custom events", - showInDocs: false, + type: "internal", configSchema: zCustomEventsConfig, }; diff --git a/backend/src/plugins/GuildConfigReloader/info.ts b/backend/src/plugins/GuildConfigReloader/info.ts index 00aaa653..36d4309c 100644 --- a/backend/src/plugins/GuildConfigReloader/info.ts +++ b/backend/src/plugins/GuildConfigReloader/info.ts @@ -3,6 +3,6 @@ import { zGuildConfigReloaderPlugin } from "./types.js"; export const guildConfigReloaderPluginInfo: ZeppelinPluginInfo = { prettyName: "Guild config reloader", - showInDocs: false, + type: "internal", configSchema: zGuildConfigReloaderPlugin, }; diff --git a/backend/src/plugins/GuildInfoSaver/info.ts b/backend/src/plugins/GuildInfoSaver/info.ts index 7256e8cc..1ea148d5 100644 --- a/backend/src/plugins/GuildInfoSaver/info.ts +++ b/backend/src/plugins/GuildInfoSaver/info.ts @@ -3,6 +3,6 @@ import { zGuildInfoSaverConfig } from "./types.js"; export const guildInfoSaverPluginInfo: ZeppelinPluginInfo = { prettyName: "Guild info saver", - showInDocs: false, + type: "internal", configSchema: zGuildInfoSaverConfig, }; diff --git a/backend/src/plugins/GuildMemberCache/info.ts b/backend/src/plugins/GuildMemberCache/info.ts index 8b2da421..dc8857c0 100644 --- a/backend/src/plugins/GuildMemberCache/info.ts +++ b/backend/src/plugins/GuildMemberCache/info.ts @@ -3,6 +3,6 @@ import { zGuildMemberCacheConfig } from "./types.js"; export const guildMemberCachePluginInfo: ZeppelinPluginInfo = { prettyName: "Guild member cache", - showInDocs: false, + type: "internal", configSchema: zGuildMemberCacheConfig, }; diff --git a/backend/src/plugins/InternalPoster/info.ts b/backend/src/plugins/InternalPoster/info.ts index 35870b23..33d33168 100644 --- a/backend/src/plugins/InternalPoster/info.ts +++ b/backend/src/plugins/InternalPoster/info.ts @@ -3,6 +3,6 @@ import { zInternalPosterConfig } from "./types.js"; export const internalPosterPluginInfo: ZeppelinPluginInfo = { prettyName: "Internal poster", - showInDocs: false, + type: "internal", configSchema: zInternalPosterConfig, }; diff --git a/backend/src/plugins/LocateUser/info.ts b/backend/src/plugins/LocateUser/info.ts index ee7cc3f7..e7b06582 100644 --- a/backend/src/plugins/LocateUser/info.ts +++ b/backend/src/plugins/LocateUser/info.ts @@ -4,11 +4,11 @@ import { zLocateUserConfig } from "./types.js"; export const locateUserPluginInfo: ZeppelinPluginInfo = { prettyName: "Locate user", + type: "stable", description: trimPluginDescription(` This plugin allows users with access to the commands the following: * Instantly receive an invite to the voice channel of a user * Be notified as soon as a user switches or joins a voice channel `), configSchema: zLocateUserConfig, - showInDocs: true, }; diff --git a/backend/src/plugins/Logs/info.ts b/backend/src/plugins/Logs/info.ts index 6d9f200a..f16862ba 100644 --- a/backend/src/plugins/Logs/info.ts +++ b/backend/src/plugins/Logs/info.ts @@ -4,5 +4,5 @@ import { zLogsConfig } from "./types.js"; export const logsPluginInfo: ZeppelinPluginInfo = { prettyName: "Logs", configSchema: zLogsConfig, - showInDocs: true, + type: "stable", }; diff --git a/backend/src/plugins/MessageSaver/info.ts b/backend/src/plugins/MessageSaver/info.ts index 7d62a72a..3402a22c 100644 --- a/backend/src/plugins/MessageSaver/info.ts +++ b/backend/src/plugins/MessageSaver/info.ts @@ -3,6 +3,6 @@ import { zMessageSaverConfig } from "./types.js"; export const messageSaverPluginInfo: ZeppelinPluginInfo = { prettyName: "Message saver", - showInDocs: false, + type: "internal", configSchema: zMessageSaverConfig, }; diff --git a/backend/src/plugins/ModActions/info.ts b/backend/src/plugins/ModActions/info.ts index 736de0ce..c293ce07 100644 --- a/backend/src/plugins/ModActions/info.ts +++ b/backend/src/plugins/ModActions/info.ts @@ -4,7 +4,7 @@ import { zModActionsConfig } from "./types.js"; export const modActionsPluginInfo: ZeppelinPluginInfo = { prettyName: "Mod actions", - showInDocs: true, + type: "stable", description: trimPluginDescription(` This plugin contains the 'typical' mod actions such as warning, muting, kicking, banning, etc. `), diff --git a/backend/src/plugins/Mutes/info.ts b/backend/src/plugins/Mutes/info.ts index 6654afed..7bfda480 100644 --- a/backend/src/plugins/Mutes/info.ts +++ b/backend/src/plugins/Mutes/info.ts @@ -3,6 +3,6 @@ import { zMutesConfig } from "./types.js"; export const mutesPluginInfo: ZeppelinPluginInfo = { prettyName: "Mutes", - showInDocs: true, + type: "stable", configSchema: zMutesConfig, }; diff --git a/backend/src/plugins/NameHistory/info.ts b/backend/src/plugins/NameHistory/info.ts index 985652dd..aafae4be 100644 --- a/backend/src/plugins/NameHistory/info.ts +++ b/backend/src/plugins/NameHistory/info.ts @@ -3,6 +3,6 @@ import { zNameHistoryConfig } from "./types.js"; export const nameHistoryPluginInfo: ZeppelinPluginInfo = { prettyName: "Name history", - showInDocs: false, + type: "internal", configSchema: zNameHistoryConfig, }; diff --git a/backend/src/plugins/Persist/info.ts b/backend/src/plugins/Persist/info.ts index 122b3eeb..da406eff 100644 --- a/backend/src/plugins/Persist/info.ts +++ b/backend/src/plugins/Persist/info.ts @@ -9,5 +9,5 @@ export const persistPluginInfo: ZeppelinPluginInfo = { Mute roles are re-applied automatically, this plugin is not required for that. `), configSchema: zPersistConfig, - showInDocs: true, + type: "stable", }; diff --git a/backend/src/plugins/Phisherman/info.ts b/backend/src/plugins/Phisherman/info.ts index 88922112..a1231959 100644 --- a/backend/src/plugins/Phisherman/info.ts +++ b/backend/src/plugins/Phisherman/info.ts @@ -4,6 +4,7 @@ import { zPhishermanConfig } from "./types.js"; export const phishermanPluginInfo: ZeppelinPluginInfo = { prettyName: "Phisherman", + type: "stable", description: trimPluginDescription(` Match scam/phishing links using the Phisherman API. See https://phisherman.gg/ for more details! `), @@ -40,5 +41,4 @@ export const phishermanPluginInfo: ZeppelinPluginInfo = { ~~~ `), configSchema: zPhishermanConfig, - showInDocs: true, }; diff --git a/backend/src/plugins/PingableRoles/info.ts b/backend/src/plugins/PingableRoles/info.ts index f0823fc8..bd7f4237 100644 --- a/backend/src/plugins/PingableRoles/info.ts +++ b/backend/src/plugins/PingableRoles/info.ts @@ -4,5 +4,5 @@ import { zPingableRolesConfig } from "./types.js"; export const pingableRolesPluginInfo: ZeppelinPluginInfo = { prettyName: "Pingable roles", configSchema: zPingableRolesConfig, - showInDocs: true, + type: "stable", }; diff --git a/backend/src/plugins/Post/info.ts b/backend/src/plugins/Post/info.ts index 94b30941..9a9dc9a9 100644 --- a/backend/src/plugins/Post/info.ts +++ b/backend/src/plugins/Post/info.ts @@ -4,5 +4,5 @@ import { zPostConfig } from "./types.js"; export const postPluginInfo: ZeppelinPluginInfo = { prettyName: "Post", configSchema: zPostConfig, - showInDocs: true, + type: "stable", }; diff --git a/backend/src/plugins/ReactionRoles/info.ts b/backend/src/plugins/ReactionRoles/info.ts index 6cc21dd3..a89bbcd3 100644 --- a/backend/src/plugins/ReactionRoles/info.ts +++ b/backend/src/plugins/ReactionRoles/info.ts @@ -4,7 +4,6 @@ import { zReactionRolesConfig } from "./types.js"; export const reactionRolesPluginInfo: ZeppelinPluginInfo = { prettyName: "Reaction roles", description: "Consider using the [Role buttons](https://zeppelin.gg/docs/plugins/role_buttons) plugin instead.", - legacy: true, + type: "legacy", configSchema: zReactionRolesConfig, - showInDocs: true, }; diff --git a/backend/src/plugins/Reminders/info.ts b/backend/src/plugins/Reminders/info.ts index 02f04cac..c010791c 100644 --- a/backend/src/plugins/Reminders/info.ts +++ b/backend/src/plugins/Reminders/info.ts @@ -4,5 +4,5 @@ import { zRemindersConfig } from "./types.js"; export const remindersPluginInfo: ZeppelinPluginInfo = { prettyName: "Reminders", configSchema: zRemindersConfig, - showInDocs: true, + type: "stable", }; diff --git a/backend/src/plugins/RoleButtons/info.ts b/backend/src/plugins/RoleButtons/info.ts index 7eaedaba..14a13931 100644 --- a/backend/src/plugins/RoleButtons/info.ts +++ b/backend/src/plugins/RoleButtons/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zRoleButtonsConfig } from "./types.js"; export const roleButtonsPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Role buttons", description: trimPluginDescription(` Allow users to pick roles by clicking on buttons diff --git a/backend/src/plugins/RoleManager/info.ts b/backend/src/plugins/RoleManager/info.ts index 9b532990..b1da2150 100644 --- a/backend/src/plugins/RoleManager/info.ts +++ b/backend/src/plugins/RoleManager/info.ts @@ -3,6 +3,6 @@ import { zRoleManagerConfig } from "./types.js"; export const roleManagerPluginInfo: ZeppelinPluginInfo = { prettyName: "Role manager", - showInDocs: false, + type: "internal", configSchema: zRoleManagerConfig, }; diff --git a/backend/src/plugins/Roles/info.ts b/backend/src/plugins/Roles/info.ts index d946bf4f..808c843a 100644 --- a/backend/src/plugins/Roles/info.ts +++ b/backend/src/plugins/Roles/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zRolesConfig } from "./types.js"; export const rolesPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Roles", description: trimPluginDescription(` Enables authorised users to add and remove whitelisted roles with a command. diff --git a/backend/src/plugins/SelfGrantableRoles/info.ts b/backend/src/plugins/SelfGrantableRoles/info.ts index 40b6d451..c9c8b6f0 100644 --- a/backend/src/plugins/SelfGrantableRoles/info.ts +++ b/backend/src/plugins/SelfGrantableRoles/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zSelfGrantableRolesConfig } from "./types.js"; export const selfGrantableRolesPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Self-grantable roles", description: trimPluginDescription(` Allows users to grant themselves roles via a command diff --git a/backend/src/plugins/Slowmode/info.ts b/backend/src/plugins/Slowmode/info.ts index b223b39c..3e303b56 100644 --- a/backend/src/plugins/Slowmode/info.ts +++ b/backend/src/plugins/Slowmode/info.ts @@ -2,7 +2,7 @@ import { ZeppelinPluginInfo } from "../../types.js"; import { zSlowmodeConfig } from "./types.js"; export const slowmodePluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Slowmode", configSchema: zSlowmodeConfig, }; diff --git a/backend/src/plugins/Spam/info.ts b/backend/src/plugins/Spam/info.ts index 7b3bac6a..f5b02651 100644 --- a/backend/src/plugins/Spam/info.ts +++ b/backend/src/plugins/Spam/info.ts @@ -3,12 +3,11 @@ import { trimPluginDescription } from "../../utils.js"; import { zSpamConfig } from "./types.js"; export const spamPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "legacy", prettyName: "Spam protection", description: trimPluginDescription(` Basic spam detection and auto-muting. For more advanced spam filtering, check out the Automod plugin! `), - legacy: true, configSchema: zSpamConfig, }; diff --git a/backend/src/plugins/Starboard/info.ts b/backend/src/plugins/Starboard/info.ts index bc51d961..aea2929c 100644 --- a/backend/src/plugins/Starboard/info.ts +++ b/backend/src/plugins/Starboard/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zStarboardConfig } from "./types.js"; export const starboardPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Starboard", description: trimPluginDescription(` This plugin allows you to set up starboards on your server. Starboards are like user voted pins where messages with enough reactions get immortalized on a "starboard" channel. diff --git a/backend/src/plugins/Tags/info.ts b/backend/src/plugins/Tags/info.ts index 0b7b7b12..6ee8f4c3 100644 --- a/backend/src/plugins/Tags/info.ts +++ b/backend/src/plugins/Tags/info.ts @@ -4,7 +4,7 @@ import { TemplateFunctions } from "./templateFunctions.js"; import { TemplateFunction, zTagsConfig } from "./types.js"; export const tagsPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Tags", description: "Tags are a way to store and reuse information.", configurationGuide: trimPluginDescription(` diff --git a/backend/src/plugins/TimeAndDate/info.ts b/backend/src/plugins/TimeAndDate/info.ts index 3ce217e6..a7388fee 100644 --- a/backend/src/plugins/TimeAndDate/info.ts +++ b/backend/src/plugins/TimeAndDate/info.ts @@ -3,7 +3,7 @@ import { trimPluginDescription } from "../../utils.js"; import { zTimeAndDateConfig } from "./types.js"; export const timeAndDatePluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Time and date", description: trimPluginDescription(` Allows controlling the displayed time/date formats and timezones diff --git a/backend/src/plugins/UsernameSaver/info.ts b/backend/src/plugins/UsernameSaver/info.ts index 68a65f31..898909da 100644 --- a/backend/src/plugins/UsernameSaver/info.ts +++ b/backend/src/plugins/UsernameSaver/info.ts @@ -2,7 +2,7 @@ import { ZeppelinPluginInfo } from "../../types.js"; import { zUsernameSaverConfig } from "./types.js"; export const usernameSaverPluginInfo: ZeppelinPluginInfo = { - showInDocs: false, + type: "internal", prettyName: "Username saver", configSchema: zUsernameSaverConfig, }; diff --git a/backend/src/plugins/Utility/info.ts b/backend/src/plugins/Utility/info.ts index 9fea0438..f7a562c1 100644 --- a/backend/src/plugins/Utility/info.ts +++ b/backend/src/plugins/Utility/info.ts @@ -2,7 +2,7 @@ import { ZeppelinPluginInfo } from "../../types.js"; import { zUtilityConfig } from "./types.js"; export const utilityPluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Utility", configSchema: zUtilityConfig, }; diff --git a/backend/src/plugins/WelcomeMessage/info.ts b/backend/src/plugins/WelcomeMessage/info.ts index a8a4c339..f3e529b2 100644 --- a/backend/src/plugins/WelcomeMessage/info.ts +++ b/backend/src/plugins/WelcomeMessage/info.ts @@ -2,7 +2,7 @@ import { ZeppelinPluginInfo } from "../../types.js"; import { zWelcomeMessageConfig } from "./types.js"; export const welcomeMessagePluginInfo: ZeppelinPluginInfo = { - showInDocs: true, + type: "stable", prettyName: "Welcome message", configSchema: zWelcomeMessageConfig, }; diff --git a/backend/src/types.ts b/backend/src/types.ts index 25319889..522ec812 100644 --- a/backend/src/types.ts +++ b/backend/src/types.ts @@ -33,14 +33,15 @@ export type TZeppelinKnub = Knub; */ export type TMarkdown = string; +export type ZeppelinPluginType = "stable" | "legacy" | "internal"; + export interface ZeppelinPluginInfo { - showInDocs: boolean; + type: ZeppelinPluginType; prettyName: string; configSchema: ZodTypeAny; description?: TMarkdown; usageGuide?: TMarkdown; configurationGuide?: TMarkdown; - legacy?: boolean; } export interface CommandInfo { diff --git a/dashboard/src/components/docs/DocsLayout.vue b/dashboard/src/components/docs/DocsLayout.vue index be7e8e5e..838f05be 100644 --- a/dashboard/src/components/docs/DocsLayout.vue +++ b/dashboard/src/components/docs/DocsLayout.vue @@ -156,14 +156,14 @@ ...menu, { label: 'Plugins', - items: this.plugins.filter(plugin => !plugin.info.legacy).map(plugin => ({ + items: this.plugins.filter(plugin => plugin.info.type === "stable").map(plugin => ({ label: plugin.info.prettyName || plugin.name, to: `/docs/plugins/${plugin.name}`, })), }, { label: "Legacy Plugins", - items: this.plugins.filter(plugin => plugin.info.legacy).map(plugin => ({ + items: this.plugins.filter(plugin => plugin.info.type === "legacy").map(plugin => ({ label: plugin.info.prettyName || plugin.name, to: `/docs/plugins/${plugin.name}`, })), diff --git a/dashboard/src/components/docs/Plugin.vue b/dashboard/src/components/docs/Plugin.vue index 4023ebab..2bfdcfb2 100644 --- a/dashboard/src/components/docs/Plugin.vue +++ b/dashboard/src/components/docs/Plugin.vue @@ -8,16 +8,13 @@ -
+
Note! This is a legacy plugin which is no longer actively maintained and may be removed in a future update. -
- -