diff --git a/plugins-data.json b/plugins-data.json
index aee9517..4d10f61 100644
--- a/plugins-data.json
+++ b/plugins-data.json
@@ -187,6 +187,34 @@
"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",
diff --git a/you-bar-plus/index.html b/you-bar-plus/index.html
new file mode 100644
index 0000000..d3dce5e
--- /dev/null
+++ b/you-bar-plus/index.html
@@ -0,0 +1,736 @@
+
+
+
+
+
+revenge-plugins
+
+
+
+
+
+
+
+
+
+
+
+
+ Revenge Plugins
+
+
Discord, your way.
+
A hand-built collection of plugins for Revenge, the Discord Android client mod - rebuilt from scratch where the old ecosystem broke, and net-new where nothing existed yet.
+
+
+
+
diff --git a/you-bar-plus/install/11d89273b5bd6cc6.png b/you-bar-plus/install/11d89273b5bd6cc6.png
new file mode 100644
index 0000000..323afc3
Binary files /dev/null and b/you-bar-plus/install/11d89273b5bd6cc6.png differ
diff --git a/you-bar-plus/install/3a73d84a21043a5e.png b/you-bar-plus/install/3a73d84a21043a5e.png
new file mode 100644
index 0000000..6beb211
Binary files /dev/null and b/you-bar-plus/install/3a73d84a21043a5e.png differ
diff --git a/you-bar-plus/install/4d1aef97fe869aaf.png b/you-bar-plus/install/4d1aef97fe869aaf.png
new file mode 100644
index 0000000..8a5e8af
Binary files /dev/null and b/you-bar-plus/install/4d1aef97fe869aaf.png differ
diff --git a/you-bar-plus/install/88eacd3588829ded.png b/you-bar-plus/install/88eacd3588829ded.png
new file mode 100644
index 0000000..752ed54
Binary files /dev/null and b/you-bar-plus/install/88eacd3588829ded.png differ
diff --git a/you-bar-plus/install/8b628d7e3fc05957.png b/you-bar-plus/install/8b628d7e3fc05957.png
new file mode 100644
index 0000000..6441795
Binary files /dev/null and b/you-bar-plus/install/8b628d7e3fc05957.png differ
diff --git a/you-bar-plus/install/9901722947705011.png b/you-bar-plus/install/9901722947705011.png
new file mode 100644
index 0000000..e2485b5
Binary files /dev/null and b/you-bar-plus/install/9901722947705011.png differ
diff --git a/you-bar-plus/install/a738efc867a225ee.png b/you-bar-plus/install/a738efc867a225ee.png
new file mode 100644
index 0000000..10c32ee
Binary files /dev/null and b/you-bar-plus/install/a738efc867a225ee.png differ
diff --git a/you-bar-plus/install/b0d124bd12658047.png b/you-bar-plus/install/b0d124bd12658047.png
new file mode 100644
index 0000000..f6346dc
Binary files /dev/null and b/you-bar-plus/install/b0d124bd12658047.png differ
diff --git a/you-bar-plus/install/cb7a2c9b3fb9561c.png b/you-bar-plus/install/cb7a2c9b3fb9561c.png
new file mode 100644
index 0000000..e582452
Binary files /dev/null and b/you-bar-plus/install/cb7a2c9b3fb9561c.png differ
diff --git a/you-bar-plus/install/cb8b45023e70bb61.png b/you-bar-plus/install/cb8b45023e70bb61.png
new file mode 100644
index 0000000..48151f6
Binary files /dev/null and b/you-bar-plus/install/cb8b45023e70bb61.png differ
diff --git a/you-bar-plus/install/cba17334eeaf3198.png b/you-bar-plus/install/cba17334eeaf3198.png
new file mode 100644
index 0000000..1715494
Binary files /dev/null and b/you-bar-plus/install/cba17334eeaf3198.png differ
diff --git a/you-bar-plus/install/d170a10bd3781e4a.png b/you-bar-plus/install/d170a10bd3781e4a.png
new file mode 100644
index 0000000..5397356
Binary files /dev/null and b/you-bar-plus/install/d170a10bd3781e4a.png differ
diff --git a/you-bar-plus/install/d6a4e512cdcf1078.png b/you-bar-plus/install/d6a4e512cdcf1078.png
new file mode 100644
index 0000000..07b9916
Binary files /dev/null and b/you-bar-plus/install/d6a4e512cdcf1078.png differ
diff --git a/you-bar-plus/install/ea31146eb15fdde7.png b/you-bar-plus/install/ea31146eb15fdde7.png
new file mode 100644
index 0000000..5d31eab
Binary files /dev/null and b/you-bar-plus/install/ea31146eb15fdde7.png differ
diff --git a/you-bar-plus/install/f47fd463dcaac61e.png b/you-bar-plus/install/f47fd463dcaac61e.png
new file mode 100644
index 0000000..21fd500
Binary files /dev/null and b/you-bar-plus/install/f47fd463dcaac61e.png differ
diff --git a/you-bar-plus/install/f944dbd033a60207.png b/you-bar-plus/install/f944dbd033a60207.png
new file mode 100644
index 0000000..c691abc
Binary files /dev/null and b/you-bar-plus/install/f944dbd033a60207.png differ
diff --git a/you-bar-plus/install/fead9e69933db668.png b/you-bar-plus/install/fead9e69933db668.png
new file mode 100644
index 0000000..d9aa794
Binary files /dev/null and b/you-bar-plus/install/fead9e69933db668.png differ
diff --git a/you-bar-plus/install/index.js b/you-bar-plus/install/index.js
new file mode 100644
index 0000000..d37fe3c
--- /dev/null
+++ b/you-bar-plus/install/index.js
@@ -0,0 +1 @@
+(function(f,b,c,d,e,v,g,E,S){"use strict";function w(t,n,r,o){try{return r()}catch(a){return o.error(`[${t}] Failed to apply the "${n}" patch, that surface will be skipped: ${a}`),function(){}}}function N(t,n,r){const o=Object.entries(r).map(function([a,s]){return w(t,a,s,n)});return function(){return o.forEach(function(a){return a()})}}function P(t,n,r=100){let o=!1,a;const s=t();return s?(n(s),{cancel(){}}):(a=setInterval(function(){if(o)return;const i=t();i&&(o=!0,clearInterval(a),n(i))},r),{cancel(){o=!0,a&&clearInterval(a)}})}const p=["none","dms","settings"],I={none:"None",dms:"Direct Messages",settings:"Settings"};let h=function(){};function T(){let t=function(){};const n=P(function(){return d.findByTypeName("YouBarNotificationsButton")},function(r){t=Y(r)});return function(){n.cancel(),t()}}function Y(t){const n=d.findByProps("openUserSettings"),r=d.findByProps("transitionToGuild"),o={dms:g.getAssetIDByName("ChatIcon"),settings:g.getAssetIDByName("SettingsIcon")},a=function(s){s==="dms"?r?.transitionToGuild?.("@me"):s==="settings"&&n?.openUserSettings?.()};return v.instead("type",t,function(s,i){try{const[,D]=e.React.useReducer(function(l){return~l},0);h=function(){return D()};const u=i(...s);if(!u?.props?.children)return u;const L=u.props.children.type,B=u.props.children.props,m=[c.storage.slot1,c.storage.slot2];return e.React.createElement(e.React.Fragment,null,m.map(function(l,H){return l==="none"?null:e.React.createElement(L,{key:`you-bar-plus-${H}`,variant:B?.variant||"tertiary",size:B?.size||"sm",icon:o[l],onPress:function(){return a(l)}})}),u)}catch{return i(...s)}})}const{ScrollView:F,View:O}=e.ReactNative;function U({children:t}){return e.React.createElement(F,{style:{flex:1}},t,e.React.createElement(O,{style:{height:24}}))}const{View:_,Text:A}=e.ReactNative;function V({children:t,style:n}){return e.React.createElement(_,{style:[{marginHorizontal:16,marginVertical:8,padding:10,borderRadius:8,borderWidth:1,borderColor:"rgba(128,128,128,0.25)"},n]},e.React.createElement(A,{style:{fontSize:12.5,lineHeight:18,opacity:.75}},t))}const{FormSection:$,FormRow:k}=S.Forms;function x(t){const n=p.indexOf(t);return p[(n+1)%p.length]}function y({label:t,slotKey:n}){const r=c.storage[n];return e.React.createElement(k,{label:t,subLabel:I[r],onPress:function(){c.storage[n]=x(r),h()}})}function z(){return E.useProxy(c.storage),e.React.useEffect(function(){return function(){return h()}},[]),e.React.createElement(U,null,e.React.createElement(V,null,"YouBar+ adds up to 2 buttons to the YouBar - the row with your avatar and status near the top of the app. Tap a slot below to cycle it through None, Direct Messages, and Settings; the first slot renders on the left. Fork of Purple-EyeZ's YouBar+, ported to Revenge's Vendetta-compat API with a fix for a startup race that could silently skip the button patch for an entire session."),e.React.createElement($,{title:"Buttons"},e.React.createElement(y,{label:"First button",slotKey:"slot1"}),e.React.createElement(y,{label:"Second button",slotKey:"slot2"})))}let R=function(){};var C={onLoad:function(){c.storage.slot1??="dms",c.storage.slot2??="settings",R=N("YouBar+",b.logger,{"YouBar buttons":T})},onUnload:function(){return R()},settings:z};return f.default=C,Object.defineProperty(f,"__esModule",{value:!0}),f})({},vendetta,vendetta.plugin,vendetta.metro,vendetta.metro.common,vendetta.patcher,vendetta.ui.assets,vendetta.storage,vendetta.ui.components);
diff --git a/you-bar-plus/install/manifest.json b/you-bar-plus/install/manifest.json
new file mode 100644
index 0000000..48f314e
--- /dev/null
+++ b/you-bar-plus/install/manifest.json
@@ -0,0 +1 @@
+{"name":"YouBar+","description":"Adds up to 2 configurable buttons (Direct Messages, Settings, or none) to the YouBar, in whatever order you pick.","authors":[{"name":"everestmcarthur"},{"name":"Purple_Ξye™"}],"main":"index.js","hash":"0732a112d0498fa94fd83b7336564c149f03e957ed6d2164920e8d0b3a6e9fe7"}
\ No newline at end of file