From db5fd20107ded24dbef7369cdf6a7792dff353bb Mon Sep 17 00:00:00 2001 From: everestmcarthur Date: Sat, 1 Aug 2026 14:22:29 +0000 Subject: [PATCH] deploy: 85d6375faef4db378014000eb07391cbc0aaea9b --- .nojekyll | 0 404.html | 411 ++++++++++++++++++++++++++++ 404.md | 52 ---- README.md | 47 ---- index.html | 411 ++++++++++++++++++++++++++++ message-snippets/index.js | 1 + message-snippets/manifest.json | 1 + plugins-data.json | 72 +++++ pronoun-db/index.js | 1 + pronoun-db/manifest.json | 1 + reminders/index.js | 1 + reminders/manifest.json | 1 + role-color-everywhere/index.js | 1 + role-color-everywhere/manifest.json | 1 + 14 files changed, 902 insertions(+), 99 deletions(-) create mode 100644 .nojekyll create mode 100644 404.html delete mode 100644 404.md delete mode 100644 README.md create mode 100644 index.html create mode 100644 message-snippets/index.js create mode 100644 message-snippets/manifest.json create mode 100644 plugins-data.json create mode 100644 pronoun-db/index.js create mode 100644 pronoun-db/manifest.json create mode 100644 reminders/index.js create mode 100644 reminders/manifest.json create mode 100644 role-color-everywhere/index.js create mode 100644 role-color-everywhere/manifest.json diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..8eca61a --- /dev/null +++ b/404.html @@ -0,0 +1,411 @@ + + + + + +revenge-plugins + + + + + +
+
+
👊 REVENGE PLUGINS
+

Plugins for Revenge

+

An actively maintained collection of plugins for Revenge, the Discord Android client mod. Tap Install to copy a plugin's link, then paste it into Revenge's plugin browser.

+ + +
+
+ +
+
+ +
+
+ +
+

+
+ +
+
+ + + +
+ + + + diff --git a/404.md b/404.md deleted file mode 100644 index d29f09f..0000000 --- a/404.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -permalink: /404.html ---- -> **Note:** You accessed a link that returned a 404, probably by clicking one of the plugin links. You're supposed to copy the link address and add it into Revenge. - -# revenge-plugins - -A small collection of plugins for [Revenge](https://github.com/revenge-mod/revenge-bundle), the Discord Android client mod. - -## Installing a plugin - -1. Open Discord with Revenge installed, go to **Settings → Plugins**. -2. Tap the `+` button and paste the plugin's install link (see below). -3. Enable it. - -| Plugin | Description | Install link | -| --- | --- | --- | -| Staff Tags | Adds OWNER/ADMIN/STAFF/MOD-style tags next to members, based on their actual server permissions. Fully customizable: per-tag text, colors, gradients, and visibility. | `https://everestmcarthur.github.io/revenge-plugins/staff-tags/` | - -## About Staff Tags - -This is a rebuilt version of the old `staff-tags` plugin, which stopped working after Discord renamed some of the -internal components it depended on (`DisplayName`, `HeaderName`, `getTagProperties`) - when any one of those lookups -came back empty, the entire plugin used to fail to load, taking every tag down with it, everywhere. - -This version isolates each patch (chat tags, member list, profile, channel header) so that if Discord changes one of -them again in the future, only that specific surface stops showing tags instead of the whole plugin breaking. It also -adds: - -- Per-tag show/hide toggles -- Custom tag text -- Custom solid colors -- Gradient tags (member list & profile only - chat message tags are rendered from data rather than a - patchable element, so they always use a solid color) -- "Use top role color" as a fallback when no custom color is set - -Tags are computed from the built-in `computePermissions` API against real permission bits (Administrator, Manage -Server, Manage Messages, Kick/Ban, etc.), the same as the original plugin, not from role names. - -## Building locally - -```sh -npm install -npm run build -``` - -Output is written to `dist//`. - -## Contributing - -Issues and PRs are welcome, especially if a Discord update breaks a lookup a plugin relies on - `findByName` / -`findByProps` targets can and do change without notice. diff --git a/README.md b/README.md deleted file mode 100644 index bd82aad..0000000 --- a/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# revenge-plugins - -A small collection of plugins for [Revenge](https://github.com/revenge-mod/revenge-bundle), the Discord Android client mod. - -## Installing a plugin - -1. Open Discord with Revenge installed, go to **Settings → Plugins**. -2. Tap the `+` button and paste the plugin's install link (see below). -3. Enable it. - -| Plugin | Description | Install link | -| --- | --- | --- | -| Staff Tags | Adds OWNER/ADMIN/STAFF/MOD-style tags next to members, based on their actual server permissions. Fully customizable: per-tag text, colors, gradients, and visibility. | `https://everestmcarthur.github.io/revenge-plugins/staff-tags/` | - -## About Staff Tags - -This is a rebuilt version of the old `staff-tags` plugin, which stopped working after Discord renamed some of the -internal components it depended on (`DisplayName`, `HeaderName`, `getTagProperties`) - when any one of those lookups -came back empty, the entire plugin used to fail to load, taking every tag down with it, everywhere. - -This version isolates each patch (chat tags, member list, profile, channel header) so that if Discord changes one of -them again in the future, only that specific surface stops showing tags instead of the whole plugin breaking. It also -adds: - -- Per-tag show/hide toggles -- Custom tag text -- Custom solid colors -- Gradient tags (member list & profile only - chat message tags are rendered from data rather than a - patchable element, so they always use a solid color) -- "Use top role color" as a fallback when no custom color is set - -Tags are computed from the built-in `computePermissions` API against real permission bits (Administrator, Manage -Server, Manage Messages, Kick/Ban, etc.), the same as the original plugin, not from role names. - -## Building locally - -```sh -npm install -npm run build -``` - -Output is written to `dist//`. - -## Contributing - -Issues and PRs are welcome, especially if a Discord update breaks a lookup a plugin relies on - `findByName` / -`findByProps` targets can and do change without notice. diff --git a/index.html b/index.html new file mode 100644 index 0000000..8eca61a --- /dev/null +++ b/index.html @@ -0,0 +1,411 @@ + + + + + +revenge-plugins + + + + + +
+
+
👊 REVENGE PLUGINS
+

Plugins for Revenge

+

An actively maintained collection of plugins for Revenge, the Discord Android client mod. Tap Install to copy a plugin's link, then paste it into Revenge's plugin browser.

+ + +
+
+ +
+
+ +
+
+ +
+

+
+ +
+
+ +
+
+

Built with revenge-plugins · not affiliated with Discord or the Revenge project · install links point to this site

+
+
+ +
+ + + + diff --git a/message-snippets/index.js b/message-snippets/index.js new file mode 100644 index 0000000..a624c42 --- /dev/null +++ b/message-snippets/index.js @@ -0,0 +1 @@ +(function(m,c,u,v,t,f,E){"use strict";function o(){return v.storage.snippets??={},v.storage.snippets}function g(e,r){o()[e.trim()]=r}function y(e){delete o()[e]}const d=3;function b(){const e=c.registerCommand({name:"snippet",description:"Send a saved text snippet",options:[{name:"name",description:"Snippet name",type:d,required:!0}],execute:function(n){const a=n.find(function(p){return p.name==="name"})?.value,s=a?o()[a]:void 0;if(!s){u.showToast(`No snippet named "${a}"`,void 0);return}return{content:s}}}),r=c.registerCommand({name:"snippet-save",description:"Save a text snippet",options:[{name:"name",description:"Snippet name",type:d,required:!0},{name:"text",description:"Snippet content",type:d,required:!0}],execute:function(n){const a=n.find(function(p){return p.name==="name"})?.value,s=n.find(function(p){return p.name==="text"})?.value;!a||!s||(g(a,s),u.showToast(`Saved snippet "${a}"`,void 0))}}),i=c.registerCommand({name:"snippet-delete",description:"Delete a saved text snippet",options:[{name:"name",description:"Snippet name",type:d,required:!0}],execute:function(n){const a=n.find(function(s){return s.name==="name"})?.value;a&&(y(a),u.showToast(`Deleted snippet "${a}"`,void 0))}}),l=c.registerCommand({name:"snippet-list",description:"List your saved snippet names",options:[],execute:function(){const n=Object.keys(o());u.showToast(n.length?n.join(", "):"No snippets saved yet",void 0)}});return[e,r,i,l]}const{ScrollView:w,View:T,TouchableOpacity:C}=t.ReactNative,{FormSection:h,FormRow:F,FormInput:S,FormText:R}=E.Forms;function $(){const[e,r]=t.React.useState(""),[i,l]=t.React.useState(""),n=!!e.trim()&&!!i.trim();return t.React.createElement(T,{style:{paddingHorizontal:16,paddingBottom:12}},t.React.createElement(S,{title:"Name",placeholder:"e.g. rules",value:e,onChange:r}),t.React.createElement(S,{title:"Text",placeholder:"What /snippet should send",value:i,onChange:l,multiline:!0}),t.React.createElement(C,{disabled:!n,onPress:function(){g(e.trim(),i),r(""),l("")},style:{marginTop:8,backgroundColor:"#5865F2",borderRadius:8,padding:10,alignItems:"center",opacity:n?1:.5}},t.React.createElement(R,{style:{color:"white"}},"Save snippet")))}function N(){f.useProxy(v.storage);const e=o();f.useProxy(e);const r=Object.keys(e);return t.React.createElement(w,{style:{flex:1}},t.React.createElement(h,{title:"Add a snippet"},t.React.createElement($,null)),t.React.createElement(h,{title:"Saved snippets"},r.length===0&&t.React.createElement(R,{style:{marginHorizontal:16,marginVertical:8}},"None yet. Add one above, then send it anywhere with /snippet name."),r.map(function(i){return t.React.createElement(F,{key:i,label:i,subLabel:`${e[i].slice(0,60)}${e[i].length>60?"\u2026":""} \u2022 Tap to delete`,onPress:function(){return y(i)}})})))}let x=[];var P={onLoad:function(){x=b()},onUnload:function(){return x.forEach(function(e){return e()})},settings:N};return m.default=P,Object.defineProperty(m,"__esModule",{value:!0}),m})({},vendetta.commands,vendetta.ui.toasts,vendetta.plugin,vendetta.metro.common,vendetta.storage,vendetta.ui.components); diff --git a/message-snippets/manifest.json b/message-snippets/manifest.json new file mode 100644 index 0000000..299e88b --- /dev/null +++ b/message-snippets/manifest.json @@ -0,0 +1 @@ +{"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":[{"name":"everestmcarthur"}],"main":"index.js","hash":"52df1423fc1e2ed548a6b3160bce59ca996baf0f93a497d62787054bd6a3b9de"} \ No newline at end of file diff --git a/plugins-data.json b/plugins-data.json new file mode 100644 index 0000000..ed922bb --- /dev/null +++ b/plugins-data.json @@ -0,0 +1,72 @@ +[ + { + "id": "pronoun-db", + "name": "PronounDB", + "description": "Shows a user's pronouns (from pronoundb.org) in their profile.", + "authors": [ + "everestmcarthur" + ], + "category": "Identity", + "status": "revived", + "note": "Previously broken because PronounDB shut down the API it used (HTTP 410). Migrated to PronounDB's current v2 API.", + "installUrl": "https://everestmcarthur.github.io/revenge-plugins/pronoun-db/", + "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": "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", + "note": "Previously broken. Ported from the original source and hardened with the same crash-isolation fix as Staff Tags.", + "installUrl": "https://everestmcarthur.github.io/revenge-plugins/role-color-everywhere/", + "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": "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", + "note": "Previously broken. Rebuilt with per-patch crash isolation, plus new customization: per-tag text, colors, gradients, and visibility.", + "installUrl": "https://everestmcarthur.github.io/revenge-plugins/staff-tags/", + "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": "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", + "note": "Didn't exist in the Revenge/Vendetta plugin ecosystem before.", + "installUrl": "https://everestmcarthur.github.io/revenge-plugins/message-snippets/", + "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