[ { "id": "fake-profile-themes-and-effects", "name": "FakeProfileThemesAndEffects", "description": "Profile theming and profile effects without Nitro, by hiding the color/effect data in your About Me using invisible zero-width characters.", "authors": [ "everestmcarthur", "ryan", "シグマ siguma" ], "category": "Identity", "status": "revived", "accent": "#EB459E", "tagline": "Profile theming and profile effects without Nitro.", "note": "Fork of shipwr3ckd's FPTE. Previously crashed every time you opened the profile editor - confirmed via on-device diagnostics that several color tokens it referenced (HEADER_SECONDARY, BACKGROUND_PRIMARY, BACKGROUND_FLOATING, TEXT_NORMAL) no longer exist on current Discord builds. Rebuilt with a fallback chain of real, currently-valid token names instead of a single hardcoded one. A second, separate bug (an unguarded lookup that crashed the whole plugin bundle before it could even load) is also fixed.", "howItWorks": "Encodes your chosen primary color, accent color, and profile effect into invisible zero-width characters appended to your About Me - other people running a compatible plugin (this one, or the original) decode and render it as if you had real Nitro profile theming, without Discord's servers ever knowing. The builder UI for picking colors/effects lives right in the profile editor. Only the two files that were actually confirmed crashing were investigated and fixed; the rest of this plugin's original patches (Nitro upsell card, purchase checks, profile data fetching) are carried over as-is, now with crash isolation so any other latent issue only disables that one patch instead of the whole plugin.", "features": [ "Pick a primary color, accent color, and profile effect from the profile editor", "No Nitro required - works purely by encoding data into your bio", "Crash isolation per patch, so one broken surface doesn't take down the rest" ], "commands": [], "limitations": "Only the confirmed profile-editor crash was root-caused and fixed with real on-device data. The plugin's other patches (Nitro upsell card, purchase/profile data fetching) weren't individually re-audited - crash isolation means a problem there disables just that patch rather than the whole plugin, but hasn't been proven bug-free the way the color-resolution fix has.", "pageUrl": "https://rp.jarviscli.dev/fake-profile-themes-and-effects/", "installUrl": "https://rp.jarviscli.dev/fake-profile-themes-and-effects/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/fake-profile-themes-and-effects", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BFakeProfileThemesAndEffects%5D%20" }, { "id": "pronoun-db", "name": "PronounDB", "description": "Shows a user's pronouns in their profile, if they've set them at pronoundb.org - see the plugin settings for details.", "authors": [ "everestmcarthur" ], "category": "Identity", "status": "revived", "accent": "#9B59B6", "tagline": "Shows a user's pronouns in their profile, pulled from pronoundb.org.", "note": "Previously broken because PronounDB shut down the API it used (HTTP 410) - migrated to their current v2 API. Also fixed the profile-page lookup itself: Discord renamed the top-level profile component to UserProfileContent and the bio card to UserProfileAboutMeCard (confirmed against decompiled current-build source), so both the new and old names are checked. Requires people to have set pronouns at pronoundb.org; nothing to configure in the plugin itself.", "howItWorks": "PronounDB is a separate, independent service (not run by Discord or Revenge) where people manually set their own pronouns once and link the profile to their Discord account. This plugin adds a \"Pronouns\" section near the bio on anyone's profile who has done that. Lookups are batched and cached client-side, so opening a profile for the first time may take a moment while it fetches, and re-opening the same profile later is instant.", "features": [ "Adds a native-feeling \"Pronouns\" section to profiles", "Batches and caches lookups so scrolling through many profiles doesn't spam requests", "Nothing to configure - no API key, no toggle" ], "commands": [], "limitations": "Only shows pronouns for people who have actually created a PronounDB profile and linked their Discord account. If nobody you interact with has set one, you'll never see the section - that's expected, not a bug.", "pageUrl": "https://rp.jarviscli.dev/pronoun-db/", "installUrl": "https://rp.jarviscli.dev/pronoun-db/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/pronoun-db", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BPronounDB%5D%20" }, { "id": "better-timestamps", "name": "BetterTimestamps", "description": "Replace message and day-divider timestamps with calendar-relative, fully relative, ISO 8601, or a custom moment.js format.", "authors": [ "everestmcarthur", "nexpid" ], "category": "Moderation & Appearance", "status": "revived", "accent": "#EB459E", "tagline": "Calendar-relative, fully relative, ISO 8601, or your own custom timestamp format.", "note": "Previously broken (unguarded RowManager lookup). Rebuilt with the same crash-isolation pattern as the rest of this repo.", "howItWorks": "Replaces both message timestamps and the \"day divider\" text in chat with your choice of format: calendar-relative (\"Yesterday at 3:04 PM\"), fully relative (\"2 hours ago\"), ISO 8601, or a fully custom moment.js format string. There's also a toggle to always show the name/avatar/timestamp on every message instead of Discord's default grouping of consecutive messages.", "features": [ "Four built-in formats plus a custom moment.js format string", "Live preview of each format in the settings screen", "Applies to both message timestamps and day dividers", "Optional: always show name/avatar/timestamp per message" ], "commands": [], "limitations": "", "pageUrl": "https://rp.jarviscli.dev/better-timestamps/", "installUrl": "https://rp.jarviscli.dev/better-timestamps/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/better-timestamps", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BBetterTimestamps%5D%20" }, { "id": "copy-role-color", "name": "CopyRoleColor", "description": "Long-press a role pill (member list, role list) to copy its color as hex.", "authors": [ "everestmcarthur", "MSMA" ], "category": "Moderation & Appearance", "status": "revived", "accent": "#1ABC9C", "tagline": "Long-press a role pill to copy its color as hex.", "note": "Previously broken - the component was renamed from ThemedRolePill to just RolePill (confirmed against decompiled current-build Discord source), so the old lookup never found anything. Now checks both names, with defensive checks throughout so a shape mismatch never crashes.", "howItWorks": "Long-press a role pill - in the member list, a role list, wherever Discord renders one as its own element - and the color gets copied to your clipboard as a hex code. Useful for designers, bot builders, or staff matching embed colors to a role.", "features": [ "Works on any rendered role pill, not just one specific screen", "Copies a ready-to-paste hex code (e.g. #5865F2)" ], "commands": [], "limitations": "Depends on Discord's internal role pill component keeping a similar shape - guarded so a mismatch just means no long-press handler gets added, not a crash.", "pageUrl": "https://rp.jarviscli.dev/copy-role-color/", "installUrl": "https://rp.jarviscli.dev/copy-role-color/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/copy-role-color", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BCopyRoleColor%5D%20" }, { "id": "role-color-everywhere", "name": "RoleColorEverywhere", "description": "Displays a member's top role color in more places: mentions, the typing indicator, voice channel participant names, member list role headers, and optionally message text.", "authors": [ "everestmcarthur" ], "category": "Moderation & Appearance", "status": "revived", "accent": "#5865F2", "tagline": "A member's role color, applied everywhere Discord doesn't already show it.", "note": "Previously broken. Ported from the original source and hardened with the same crash-isolation fix as Staff Tags.", "howItWorks": "Discord already colors a message author's name by their top role - this extends that same color into places Discord leaves plain: @mentions inside message text, the \"X is typing...\" indicator, voice channel participant lists, and the role section headers in the member list. There's also an optional (off by default) mode that tints the message text itself toward the author's color, though that comes with a real tradeoff: it disables text selection on tinted messages, since the coloring works by wrapping the text in a link-style element.", "features": [ "Colored @mentions in chat", "Colored typing indicator", "Colored voice channel participant names", "Colored member list role section headers", "Optional message-text tinting with an adjustable strength slider (0-100)", "Every surface can be toggled independently" ], "commands": [], "limitations": "The member list header coloring works by patching a generic, unnamed internal component (there's no dedicated \"RoleHeader\" component to target), which makes it the single most fragile surface in this plugin. If a future Discord update breaks it, the other four surfaces are unaffected.", "pageUrl": "https://rp.jarviscli.dev/role-color-everywhere/", "installUrl": "https://rp.jarviscli.dev/role-color-everywhere/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/role-color-everywhere", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BRoleColorEverywhere%5D%20" }, { "id": "server-drawer", "name": "ServerDrawer", "description": "Replaces the Quest Dock with a server grid drawer above the YouBar - tap to expand, long-press a server for its context menu, plus a one-tap create/join button.", "authors": [ "everestmcarthur", "kmmiio99o", "fres" ], "category": "Moderation & Appearance", "status": "revived", "accent": "#F97316", "tagline": "Turns the Quest Dock into an expandable server grid, with smarter folders.", "note": "Fork of kmmiio99o's ServerDrawer. One lookup (useMobileQuestDock) was missing an optional-chaining guard - if that lookup came back empty, the whole onLoad threw and every patch after it in the sequence never got applied, not just that one surface. Fixed, plus every patch call is now wrapped so a single bad lookup only skips its own surface. Folder options (auto-collapse, hide preview icons) are adapted from fres621's BetterFolders - its icon-hiding half patched a \"GuildContainer\" component that no longer exists anywhere in current Discord builds (confirmed against decompiled source), and only applied to the native server rail anyway, which this plugin already replaces - so it's been rebuilt as a feature of the drawer's own folders instead.", "howItWorks": "Hijacks the Quest Dock - the strip Discord normally uses for daily quests, right above the tab bar - and puts a grid of your servers there instead. Tap it to expand, tap a server to jump to it, long-press for the usual context menu (mark as read, notification settings, leave, etc). A + button opens Discord's own create/join-server modal. Optionally hides the left server rail down to a single DMs icon, since your servers now live in the drawer instead.", "features": [ "Tap-to-expand server grid with folders, unread badges, and mention counts", "Long-press a server for its real context menu, not a rebuilt one", "One-tap create/join through Discord's native modal", "Optional: collapse the left server rail to a single DMs icon", "Toggle unread badges independently", "Auto-collapse other open folders when you open a new one", "Optional plain folder icon instead of the 4-server preview when collapsed" ], "commands": [], "limitations": "Depends on several internal Quest Dock lookups (11 in total) - each is individually guarded, so a future Discord rename degrades one surface at a time instead of breaking the whole plugin. Drawer position (left/right/top) is planned but not in this build yet - it currently only replaces the Quest Dock's native bottom position.", "pageUrl": "https://rp.jarviscli.dev/server-drawer/", "installUrl": "https://rp.jarviscli.dev/server-drawer/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/server-drawer", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BServerDrawer%5D%20" }, { "id": "staff-tags", "name": "Staff Tags", "description": "Adds customizable tags (OWNER, ADMIN, STAFF, MOD, and more) next to members based on their server permissions. Supports per-tag colors, gradients, custom text, and visibility toggles.", "authors": [ "everestmcarthur" ], "category": "Moderation & Appearance", "status": "rebuilt", "accent": "#F23F42", "tagline": "OWNER/ADMIN/STAFF/MOD tags, computed from real permissions - not role names.", "note": "Previously broken. Rebuilt with per-patch crash isolation, plus new customization: per-tag text, colors, gradients, and visibility.", "howItWorks": "Staff Tags looks at what a member can actually do in a server - Administrator, Manage Server, Manage Messages, Kick/Ban, and so on - and shows a small colored tag next to their name based on the highest-matching tier. It doesn't care what a role is named, so a role called \"Cool Person\" with Manage Messages still shows MOD. Tags appear in chat messages, the member list, the profile popout, and channel headers.\n\nThe old version of this plugin patched four separate Discord UI surfaces, and if Discord renamed even one internal component, the whole plugin's setup would throw and every tag everywhere would silently disappear. This rebuild wraps each of the four patches in its own guard, so a single broken surface degrades gracefully instead of taking the other three down with it.", "features": [ "Seven built-in tiers: Webhook, Owner, Admin, Staff, Mod, VC Mod, Chat Mod", "Per-tag show/hide toggle", "Custom tag text (rename \"MOD\" to whatever you want)", "Custom solid colors with a swatch picker", "Gradient tags in the member list and profile (chat tags stay solid - platform limitation, explained below)", "\"Use top role color\" fallback when no custom color is set" ], "commands": [], "limitations": "Gradient colors only render in the member list and profile popout. Chat message tags are built from plain data passed to Discord's native row renderer, not a patchable React element, so there's no element to swap in a gradient view - they always fall back to a solid color there.", "pageUrl": "https://rp.jarviscli.dev/staff-tags/", "installUrl": "https://rp.jarviscli.dev/staff-tags/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/staff-tags", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BStaff%20Tags%5D%20" }, { "id": "you-bar-plus", "name": "YouBar+", "description": "Adds up to 2 configurable buttons (Direct Messages, Settings, or none) to the YouBar, in whatever order you pick.", "authors": [ "everestmcarthur", "Purple_Ξye™" ], "category": "Moderation & Appearance", "status": "revived", "accent": "#5865F2", "tagline": "Configurable buttons on the YouBar - up to 2 at a time, in your chosen order.", "note": "Fork of Purple-EyeZ's YouBar+. Fixed a startup race condition: the original did a single one-shot component lookup during onLoad and silently gave up for the rest of the session if it ran before the target had registered in Metro yet (a real risk on a cold app start) - restarting Discord just got lucky on a re-roll. This port polls for the component instead of looking it up once. Also replaced the original's two independent on/off toggles with a real slot-based system: 2 ordered slots, each set to None, Direct Messages, or Settings.", "howItWorks": "The YouBar is the row near your avatar/status at the top of the app. This plugin patches its notification button area to also render up to 2 extra icon buttons, each pulled from one of 2 configurable slots. Each slot cycles between None, Direct Messages (jumps to your DMs), and Settings (opens user settings) - tap a slot in the plugin's settings to cycle it. Slot order controls left-to-right button order, and each slot is independent, so you can run just one button, both, or neither. Both slots default to Direct Messages then Settings, matching the original plugin's default look.", "features": [ "Up to 2 buttons on the YouBar, each independently configurable", "Choices per slot: None, Direct Messages, Settings", "Slot order controls left-to-right button order", "Settings changes apply immediately, no restart needed", "Startup race condition fixed - polls for the target component instead of a single one-shot lookup" ], "commands": [], "limitations": "Only wires up to actions with a confirmed, still-working lookup (jump to DMs, open Settings) - no additional slot choices were added beyond what could be verified against a real findByProps target.", "pageUrl": "https://rp.jarviscli.dev/you-bar-plus/", "installUrl": "https://rp.jarviscli.dev/you-bar-plus/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/you-bar-plus", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BYouBar%2B%5D%20" }, { "id": "message-snippets", "name": "Message Snippets", "description": "Save reusable text and send it with /snippet . Manage snippets from the plugin settings, or with /snippet-save, /snippet-delete, /snippet-list.", "authors": [ "everestmcarthur" ], "category": "Productivity", "status": "new", "accent": "#23A55A", "tagline": "Save reusable text once, send it anywhere with a slash command.", "note": "Didn't exist in the Revenge/Vendetta plugin ecosystem before.", "howItWorks": "Save a name and a block of text once - server rules, an FAQ answer, your PayPal, whatever you type often - then send it in any server or DM with a single command instead of retyping or copy-pasting from notes. Snippets are stored locally on your device and sync with nothing external. Built entirely on Revenge's built-in command API rather than patching Discord's UI internals, so it doesn't carry the \"might silently break on a Discord update\" risk that UI-patching plugins do.", "features": [ "/snippet sends the saved text as a real message", "Manage everything from the plugin's settings screen: add, preview, and delete", "Slash-command management too: /snippet-save, /snippet-delete, /snippet-list", "No character limit beyond Discord's own message limit" ], "commands": [ { "cmd": "/snippet ", "desc": "Sends the saved snippet as a message in the current channel" }, { "cmd": "/snippet-save ", "desc": "Saves or overwrites a snippet" }, { "cmd": "/snippet-delete ", "desc": "Deletes a saved snippet" }, { "cmd": "/snippet-list", "desc": "Shows your saved snippet names as a toast (not posted publicly)" } ], "limitations": "", "pageUrl": "https://rp.jarviscli.dev/message-snippets/", "installUrl": "https://rp.jarviscli.dev/message-snippets/install/", "sourceUrl": "https://github.com/everestmcarthur/revenge-plugins/tree/main/plugins/message-snippets", "issueUrl": "https://github.com/everestmcarthur/revenge-plugins/issues/new?title=%5BMessage%20Snippets%5D%20" }, { "id": "reminders", "name": "Reminders", "description": "Set quick reminders with /remind