You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`trackcolor` / `bartrackcolor` / `barbackground`| Bar track color. |
72
73
|`noliquid`| Disables the animated liquid/bar effect. |
@@ -99,6 +100,7 @@ Hype mode:
99
100
|`hidecompletions`| Hides completion count in hype mode. |
100
101
|`completiondelay`| Delay before rollover/reset display. |
101
102
|`levelsize` / `increment`| Repeating level size for level/band goals. |
103
+
|`rollinggoal` / `cumulativegoal`, `goalstep` / `goalincrement`| Keeps the total cumulative and advances the displayed target to the next goal step, e.g. `$60 / $100` after passing a `$50` goal. |
102
104
|`celebration`|`hearts`, `confetti`, `fireworks`, or `none`. |
103
105
104
106
## Tip Jar Commands
@@ -228,6 +230,7 @@ Support rule: credits needs the page open while messages arrive, unless `persist
228
230
|`persistcredits`| Saves users to localStorage by session. |
229
231
|`donationpriority`| Groups/sorts donors first, then members, then participants. |
230
232
|`onlydonors`| Ignores users without donation payloads. |
233
+
|`onlysupporters`| Ignores regular chat-only users and keeps donors plus members/subscribers. |
231
234
|`hidecategories`| Hides category headers. |
232
235
|`showavatar` / `showavatars`| Shows avatar images when available. |
233
236
|`showamounts`| Shows donation totals next to donors. |
Copy file name to clipboardExpand all lines: docs/agents/08-platform-sources/popout-chat-only-sources.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,7 +48,7 @@ That source is a chat-only/popout capture. Open the exact supported chat URL, ke
48
48
| Mixcloud Live |`https://www.mixcloud.com/live/*/chat/`| Live chat rows with `data-testid="chatline"` or older `.mixcloud-live-chat-row-link` selectors | Extracts username from profile link; subscription rows can populate `hasDonation`; dedupes repeated JSON payloads | Selector paths support multiple layouts and need live validation. |
49
49
| Nimo.TV |`https://www.nimo.tv/popout/chat/*`, `https://dashboard.nimo.tv/popout/chat/*`|`.nimo-room__chatroom__message-item`, `.nm-message-nickname`, `.content`| Badge images from level/decoration selectors; donation placeholder is inactive in inspected source | Uses popout chat; donation bits are not active in the inspected code. |
50
50
| Odysee |`https://odysee.com/$/popout/*`| Main content mutations, author, livestream comment text, avatar | Rant/donation code is present only as commented-out notes in the inspected source | Treat as rendered chat capture; do not promise rants/donations from this pass. |
51
-
| Parti |`https://parti.com/popout-chat?id=*`|Popout chatrows with `span.username`, avatar, badges, text | Tip parsing around `.bi-coin`; viewer count heartbeat every 60 seconds when `showviewercount` or `hypemode` is enabled | Viewer count requires `id` query parameter and platform heartbeat response; source sends no verified chat-back path. |
51
+
| Parti |`https://parti.com/popout-chat?id=*`|Current `.creator-chat-stream > .ccs-row`rows with fallback support for older `span.username` rows | Tip rows emit `event: "donation"` with `hasDonation`, structured `meta.amount` / `meta.currency` when parsable, and USD `donoValue`; viewer count heartbeat uses a stable per-window token when `showviewercount` or `hypemode` is enabled | Viewer count requires `id` query parameter and platform heartbeat response; source sends no verified chat-back path. |
52
52
| Picarto.tv |`https://picarto.tv/chatpopout/*`, `https://www.picarto.tv/chatpopout/*`| Chat popout rows with styled channel display name, message span, avatar | Handles image emotes inside message spans | Generated class names and two message-row layouts need live validation. |
53
53
| Piczel.tv |`https://piczel.tv/chat/*`|`#PiczelChat` rows, buttons/avatar, `Message_` content | Handles inline images/emotes; focuses CodeMirror line for chat input | DOM traversal uses deep child-node indexing and is fragile. |
54
54
| RokFin |`https://*.rokfin.com/popout/chat/*`, `https://rokfin.com/popout/chat/*`| Ant Design comment rows, author, badges, avatar, message body | Tip rows using `.ant-space-item mark` can set `hasDonation`| Requires popout chat URL; badges can be image or SVG descriptors. |
Copy file name to clipboardExpand all lines: docs/agents/08-platform-sources/special-case-platform-and-helper-sources.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,7 +47,7 @@ This includes:
47
47
48
48
| Source | Manifest/Load Path | What It Captures Or Does | Source Identity | Support Notes |
49
49
| --- | --- | --- | --- | --- |
50
-
| Joystick DOM chat |`sources/joystick.js` on `https://joystick.tv/u/*/chat`| Watches `#chat-messages` for new `.chat-message` rows. Extracts name, message, streamer badge, notice rows, bot rows, and focuses `input[flow-id="chat-message-text-input"]`. | Payload `type: "joystick"` and `getSource` returns `joystick`. | This is rendered-page capture. Joystick bot Gateway/OAuth/send-back belongs to `sources/websocket/joystick.*` and `websocket-source-pages.md`. |
50
+
| Joystick DOM chat |`sources/joystick.js` on `https://joystick.tv/u/*/chat`| Watches `#chat-messages` for new `.chat-message` rows. Extracts name, message, streamer badge, notice rows, bot rows, and focuses `input[flow-id="chat-message-text-input"]`. | Payload `type: "joystick"` and `getSource` returns `joystick`. | This is rendered-page capture and can fail before parsing if Joystick/Cloudflare blocks the app session. Joystick bot Gateway/OAuth/send-back belongs to `sources/websocket/joystick.*` and `websocket-source-pages.md`. |
51
51
| Velora rendered site |`sources/velora.js` on `https://velora.tv/*`| Watches rendered chat rows, extracts badges before the username button, messages, name color, donation/Volts text, channel-points style "says" events, subscription rows, and viewer counts when viewer-count/hype settings are enabled. | Payload `type: "velora"` and `getSource` returns `velora`. | This DOM path is separate from the Velora OAuth/API source page. Do not promise send-back from the DOM script; send-back belongs to the source-page API path. |
52
52
| Vercel demo launcher |`sources/vercel.js` on `https://maestro-launcher.vercel.app/`| Requests the current SSN stream/session ID from the extension, prompts the user unless `sharestreamid` is already allowed, writes the ID into `#roomId`, and calls the page's `updatedChatID` hook if present. | No chat payload source. | Treat as a demo/helper bridge for session access. It is not chat capture and not a supported social platform parser. |
53
53
| Vertical Pixel Zone |`sources/verticalpixelzone.js` on `https://verticalpixelzone.com/*`| Attempts to watch a rendered chat container and extracts avatar, `.message-username`, and `.message-text-inner` content. Focuses `.input > input[type="text"][name^="chat_"]`. |`getSource` returns `verticalpixelzone`, but emitted payload `type` is `arena` in the inspected file. | Source identity mismatch is important for filters and support answers. The active observer selector looks fragile and needs live validation before promising current support. |
@@ -85,7 +85,8 @@ For support answers, ask which mode the user is using before troubleshooting. A
85
85
86
86
| Question | Short Answer |
87
87
| --- | --- |
88
-
| "Joystick works on the website but not the WebSocket source page." | Separate the modes. `sources/joystick.js` is rendered chat capture; `sources/websocket/joystick.*` needs bot credentials/OAuth and GatewayChannel connection. |
88
+
| "Joystick works in Chrome but not the desktop app." | The rendered DOM path depends on a logged-in Joystick page and can be blocked by Joystick/Cloudflare in the app; use the Joystick Bot WebSocket source page when bot credentials are available. |
89
+
| "Joystick works on the website but not the WebSocket source page." | Separate the modes. `sources/joystick.js` is rendered chat capture; `sources/websocket/joystick.*` needs bot credentials/OAuth and GatewayChannel connection through `api.joystick.tv`. |
89
90
| "Velora chat appears but I cannot send replies." | The DOM source captures rendered rows. Reply/send-back is a Velora source-page/API feature and depends on OAuth, token state, and channel permissions. |
90
91
| "VPZone duplicates messages." | Check whether `sources/inject/vpzone-ws.js` is active and whether `sources/vpzone.js` suppresses DOM rows after the first intercepted WebSocket frame. |
91
92
| "Vertical Pixel Zone says source verticalpixelzone but filters see arena." | The inspected file returns `verticalpixelzone` for `getSource` but emits payload `type: "arena"`. Source filters and overlays can see the payload type. |
Copy file name to clipboardExpand all lines: docs/agents/08-platform-sources/websocket-source-pages.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,7 +57,7 @@ Do not infer send-chat support from the page existing. Confirm the page has `SEN
57
57
| --- | --- | --- | --- | --- |
58
58
|`bilibili.html` / `bilibili.js`| Bilibili room ID; optional cookie/auth for sending | Chat, gifts, super chat, user-enter, follower updates, live/offline status | Yes, via `SEND_BILIBILI_MESSAGE` when credentials/session allow it | Uses Bilibili room APIs, socket packets, and a content-script bridge. If receive works but send fails, check cookie/auth and platform-side permission first. |
59
59
|`irc.html` / `irc.js`| IRC server/channel/user fields in the page | IRC messages normalized through `IRCMessage`| Yes, via `SEND_IRC_MESSAGE`|`getSource` returns `irc`; `focusChat` targets `messageInput`. Useful for custom IRC-style workflows. |
60
-
|`joystick.html` / `joystick.js`| Joystick bot client ID/secret, OAuth or external app auth, channel slug/ID | Chat messages, user presence, stream online/offline, follows, token/tip style donation events | Yes, when socket is connected/subscribed and channel ID is known | Requires bot credentials for the gateway socket. OAuth token storage/refresh is local to the source page. |
60
+
|`joystick.html` / `joystick.js`| Joystick bot client ID/secret, OAuth or external app auth, channel slug/ID | Chat messages, user presence, stream online/offline, follows, token/tip style donation events | Yes, when socket is connected/subscribed and channel ID is known | Requires bot credentials for the gateway socket. Authorize starts on `joystick.tv`; token, REST, and cable use `api.joystick.tv`. Token/REST calls should use the extension background fetch or desktop `window.ninjafy.fetchJoystickJson` bridge because normal hosted-page fetch can hit CORS. Stream settings can hydrate channel ID, source name/image, live state, and follower count, but current Joystick docs do not expose live viewer count. OAuth token storage/refresh is local to the source page. |
61
61
|`nostr.html` / `nostr.js`| Nostr relay/filter setup in the page | Nostr events forwarded as source messages | No documented send-back in the bridge |`getSource` deliberately returns false and `focusChat` returns false. Treat it as read-only unless source-checking proves otherwise. |
62
62
|`socialstreamchat.html` / `socialstreamchat.js`| Social Stream chat room ID and optional token | Chat/event envelopes from `chat.socialstream.ninja`| Page has local send logic, but the extension bridge does not advertise `SEND_MESSAGE` handling in the inspected script | Internal/custom source path. It can mint a guest token for rooms that allow it; auth failures usually mean room token/permission setup, not overlay failure. |
63
63
|`stageten.html` / `stageten.js`| StageTEN channel ID | PubNub chat messages from public chat access credentials | Page has local send logic; extension `SEND_MESSAGE` handling was not present in the inspected bridge | Fetches public chat access from StageTEN's plugin-service GraphQL endpoint and refreshes PubNub tokens. CORS failures are a known page-level setup issue. |
0 commit comments