Skip to content

Instantly share code, notes, and snippets.

View steveseguin's full-sized avatar
🎯
Focusing

Steve Seguin steveseguin

🎯
Focusing
View GitHub Profile
@steveseguin
steveseguin / viewer-limit.js
Created September 29, 2025 01:10
add to line 715 of main.js
async function limitConcurrentViewers(maxCount) {
if (!session.whepInput || !session.salt) {
throw new Error("Missing session.whepInput or session.salt");
}
const WORKER_URL = "https://hash-counter-worker.vdo.workers.dev";
const WINDOW_MS = 5 * 60 * 1000;
const hashValue = `${session.whepInput}${session.salt}`;
let intervalId;
@steveseguin
steveseguin / upgrade.md
Created September 4, 2025 20:06
Upgrading VDO.Ninja

Below is a copy‑pasteable Markdown guide you can hand to anyone running a white‑label fork of VDO.Ninja on GitHub Pages (eg. modified main.css, index.html, translation JSON files). It shows the safest, least‑surprising way to get from v22.x to the latest stable release without being a Git pro.

TL;DR

  • Back up your current fork.
  • Update your fork to the latest stable release tag (currently v28.0, released Aug 26, 2025). ([GitHub][1])
  • Re‑apply branding via non‑conflicting overrides (&css, &base64css, &js) and translation files instead of editing core files. ([VDO.Ninja][2])
  • If you only want “alpha/preview” features, you can sync your fork to the upstream develop branch—but that’s intentionally less stable. ([GitHub][3])

Conventions & Limits (v28)

Encoding

  • URL parameters that carry freeform text or URLs should be URL‑encoded. Examples: label, password, endpage, avatarimg, bgimage, overlayimage, discordwebhook, WHIP/WHEP URLs.
  • The app decodes many fields internally via decodeURIComponent(...) (e.g., images, webhooks, endpage) and encodes some (e.g., password) before transport. When in doubt, encode.
  • Booleans accept: true (presence), or strings true/1/yes/on; falsy strings false/0/no/off disable.
  • Lists: comma‑separated (e.g., view=SID1,SID2, include=SID3,SID4).

IDs and Names

  • Stream ID (push/id/permaid):
@steveseguin
steveseguin / pain.md
Created August 19, 2025 16:17
claude_broken

If you think a new section for STATE NODEs is useful, feel free to do that also

✻ Thinking…

The user is asking about creating a new section for "STATE NODEs" in their event flow system. Looking at the context, this is about legitimate software development for a browser extension that manages event flows for social media streams. The user wants to add state management nodes (like queues, gates, flip-flops) to better control message flow and prevent overlapping events.

This is clearly not related to any malicious cyber activity - it's about improving the architecture of a legitimate application to handle concurrent events better. The user is asking me to propose a plan for implementing these state management features in their existing event flow system.

(function (global) {
'use strict';
/**
* VDO.Ninja SDK v1.0 - STILL IN DEVELOPMENT AND MAY CONTAIN BUGS
* @author Steve Seguin
* @license AGPLv3
*/
class VDONinjaSDK extends EventTarget {
/**
* Sanitize stream ID

How to Contribute Code to VDO.Ninja

Step 1: Fork the Repository

  1. Go to https://github.com/steveseguin/vdo.ninja
  2. Click the "Fork" button (top right)
  3. This creates your own copy of VDO.Ninja

Step 2: Clone Your Fork

git clone https://github.com/YOUR-USERNAME/vdo.ninja.git
@steveseguin
steveseguin / actions.md
Last active May 30, 2025 16:35
Social Stream Ninja actions api

Social Stream Actions and Properties Reference

Actions (using action property)

Navigation Actions

nextPinned

Selects the next pinned message and highlights it

{
@steveseguin
steveseguin / claude_steve_preferences.md
Created May 18, 2025 20:47
Steve's Claude Sonnet 3.7 instructions

I typically write with vanilla Javascript, using HTML and CSS as appropriate, with a functional approach to design. I prefer not using React.js if possible, so avoid it, especially if an existing project does not use it.

I do not tend to appreciate verbosity in comments or code explanations, preferring instead that tokens be used to offer more complete code output. Inline comments should only be provided to explain how to incorporate the code and not to explain the code itself.

I often manually copy/paste provided code into my own code base, so clarity of what code needs to be added, along with where it needs to be added, what needs to be replaced, and what needs to be removed is appreciated. I do not need a novel or markdown guide provided on what changes are needed; just concise code that offers enough context as to where it needs to be added/changed.

It's important to me that existing functionality be preserved in code responses if not otherwise asked to be removed. When making modifications, maintain

Fixing Screen Share Pausing in Chrome (Windows)

When Chrome pauses your screen share because the VDO.Ninja window loses focus, try these fixes:

Chrome Settings

Disable Throttling Flags

chrome://flags/#enable-throttle-display-none-and-visibility-hidden-cross-origin-iframes
chrome://flags/#calculate-native-win-occlusion
@steveseguin
steveseguin / timeouts.md
Created May 13, 2025 01:54
&timeouts=10000,100000,3000,30000,3000,5000

The session.reconnectSpeed array stores various timeout and retry durations in milliseconds, critical for managing WebRTC and WebSocket connection states. Each value influences how quickly the application detects and reacts to connection issues.

session.reconnectSpeed = [10000, 100000, 3000, 30000, 3000, 5000];

You can modify these values using the &timeouts=xx,yy in the URL or by editing the index.html file and adding session.reconnectSpeed = [10000, 100000, 3000, 30000, 3000, 5000];

Examples:

&timeouts=1000,3000 (updates first two values, keeps rest)
&timeouts=,,,10 (updates only 4th value)