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
Copy file name to clipboardExpand all lines: AGENTS.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,11 @@ If you need more context on how Electron wiring differs from the extension boots
36
36
## Message Contracts
37
37
38
38
- Every outbound event follows the canonical structure referenced in `docs/event-reference.html`. Required fields (`platform`, `type`, `chatname`, `chatmessage`, etc.) must stay intact.
39
-
- Additional, non-standard details belong inside the top-level `meta` object. Populate `meta` with plain JSON values (no functions/classes) so downstream consumers can safely parse them.
39
+
-`textonly` applies only to `chatmessage`: `true` means render `chatmessage` as plain text, while `false` means `chatmessage` may contain sanitized/renderable HTML. Other normal fields are expected to be plain text; media fields such as `chatimg` and `contentimg` carry URLs/data.
40
+
- Donation-style chat rows should use `hasDonation` and optional `donoValue`. Do not set `event: "donation"` just because a normal chat/tip row has a donation value; `event` changes routing/filter behavior and should only be used for true normalized platform actions or paid item types.
41
+
- Prefer specific event names over generic donation names when a platform exposes distinct paid support types. For example, YouTube Super Chat uses `event: "superchat"`, Super Sticker uses `event: "supersticker"`, and Jewels/Gifts use `event: "jeweldonation"`.
42
+
- Use existing payload fields first. Only populate `meta` when there is additional structured data that downstream consumers actually need and no existing field handles it well.
43
+
- Additional, non-standard details that truly need to be transmitted belong inside the top-level `meta` object. Populate `meta` with plain JSON values (no functions/classes) so downstream consumers can safely parse them.
40
44
- Avoid emitting ad-hoc top-level keys—coordinate changes through the event reference doc before shipping.
Copy file name to clipboardExpand all lines: README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -203,6 +203,7 @@ Much more than just an overlay - Social Stream Ninja is a complete chat ecosyste
203
203
- bigo.tv (no pop out)
204
204
- circle.so (and community domains like community.talkinghealthtech.com or members.firstinfam.com)
205
205
- sooplive.com (pop out the chat to use; supports https://play.sooplive.com/*?vtype=chat)
206
+
- flextv.co.kr (open the live channel page with chat visible)
206
207
- on24.com ( Q&A - questions supported)
207
208
- meetme
208
209
- moonbeam.stream (no pop out)
@@ -879,7 +880,7 @@ The `voice` parameter works with partial matching, so you can use terms like "si
879
880
880
881
#### Premium TTS Options
881
882
882
-
Unlike the system TTS (free), all premium TTS options are fully supported by both the Social Stream Ninja app and OBS browser sources with direct audio capture capabilities. These options provide superior language support and much easier integration.
883
+
Unlike the system TTS (free), browser/provider TTS options are designed to play through the page, which makes OBS capture much easier when "Control audio via OBS" is enabled. Self-hosted local endpoints also work, but the endpoint still needs to be reachable from the page that is playing TTS; see the Local AI TTS Guide for localhost, CORS, and OBS browser-source setup notes.
883
884
884
885
##### Kokoro Premium FREE TTS
885
886
Social Stream Ninja now includes Kokoro TTS, a high-quality browser-based text-to-speech solution that runs directly in the browser. Benefits include:
0 commit comments