Add Zoom Web host automation userscript for automatic Multi-Pin grants#3
Add Zoom Web host automation userscript for automatic Multi-Pin grants#3
Conversation
|
Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information |
Co-authored-by: FriskyDevelopments <220081212+FriskyDevelopments@users.noreply.github.com>
|
Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information |
|
Here is a clean copy-paste follow-up comment you can leave on that PR: This is a strong first implementation. The userscript is well-structured, keeps selector logic centralized, and treats the working Multi-Pin flow as the primary feature instead of overreaching. What’s especially good here: • all DOM access goes through a resolver layer This is a solid prototype foundation. For the next pass, I’d suggest focusing on reliability and identity handling before adding more features:
Important constraints going forward:
Overall this is a very good Phase-1 userscript foundation. The next focus should be identity robustness, failure diagnostics, and making the working Multi-Pin path as reliable as possible in real host/co-host sessions. |
Implements a TamperMonkey userscript that runs under a Zoom Web host/co-host account and automatically grants Multi-Pin permission to any participant who raises their hand, along with scaffolding for camera-off detection and chat spam monitoring.
New files
scripts/zoom-host-tools.user.js— Main userscript (@match https://*.zoom.us/wc/*). Organized into discrete modules:resolve()/resolveAll()— selector resolver with primary→fallback strategy; all DOM lookups go through thisscanParticipants()— 2 s polling loop; raises-hand detection;processedParticipantsSet prevents double-processingneedsMultipin()+grantMultipin()— opens participant context menu, locates option via aria-label with text-content fallback (resolveMultipinOption()), clicks, retries once on failurecheckCameraStatus()— scaffold; logs camera-off state, TODO for chat remindermonitorChat()—MutationObserveron chat container detects spam URL patterns; bounded retry (max 60 s) for lazy-rendered chat panelDEBUG_MODEselectors/zoom-dom-selectors.json— Canonical selector config withprimary+fallbackfor every Zoom DOM element touched by the script. Update this file when Zoom changes its DOM; embeddedSELECTORSobject in the script mirrors it.docs/automation-design.md— Architecture, selector strategy, Multi-Pin logic flow, known limitations (name-collision inprocessedParticipants, host-privilege requirement), and extension points for camera-check and moderation hooks.docs/testing-checklist.md— 8-case manual QA checklist covering load, hand detection, auto-grant, idempotency, selector resilience, debug logging, spam detection, and camera scaffold.Original prompt
You are tasked with implementing a Zoom Web automation userscript that performs the following tasks when run under a host or co-host account on Zoom Web in a browser:\n\n1. Automatically grants Multi-Pin permission when participants raise their hand during the meeting.\n2. Implements the following in a modular, deployable, and resilient structure:\n\n## Implementation Details:\n\nSTEP 1: Project Structure\n- Files to be created:\n 1.
scripts/zoom-host-tools.user.js\n 2.selectors/zoom-dom-selectors.json\n 3.docs/automation-design.md\n 4.docs/testing-checklist.md\n\nSTEP 2: Selector Configurations:\n- Create a JSON objectzoom-dom-selectors.jsoncontaining all configurable selectors relevant to Zoom. \n - Include placeholders for following keys:\n 1. participantList\n 2. participantRow\n 3. participantName\n 4. raisedHandIcon\n 5. participantMenuButton \n 6. multipinMenuOption.\n\nSTEP 3: Processes in TamperMonkey Scripts: \n-Involve aspect:\n\n Implementation Takeaway/best write\n \tThe following is the prior conversation context from the user's chat exploration (may be truncated):
User: Review
Assistant: This pull request addresses multiple architectural weaknesses in the STIX MAGIC platform by focusing on async correctness, API security, database reliability, observability, and deployment.
Summary of Core Improvements:
Async Safety and Media Processing:
convert_to_sticker,convert_video_to_sticker, etc.) usingasyncio.run_in_executorto ensure the event loop is not blocked.async_*wrappers to maintain clean, testable sync APIs.error_handlerfor centralized error logging.API Enhancements:
X-Request-IDand a structured format for better tracing./statusAPI endpoint to check real-time statuses in Telegram.Database Improvements:
db_conn().packstable and introduces anevent_logfor analytics.Deployment & Documentation:
Dockerfilefor standardized deployment..env.examplefor environment setup andARCHITECTURE.mdto detail changes for developers.Review Highlights:
✅ Positives:
❗ Improvements Needed:
Inline Menu Definitions:
menus.pyremains to be updated. Ensure async compliance is verified and modern patterns are followed.Tests:
/statusAPIs.Security Considerations:
user_idwithout HMAC validation. This must be addressed before public deployment.📂 Changed Files: 7 files were modified with 109 deletions and 652 additions.
User: Check and review run testing
Assistant: I can't retrieve the file
scripts/zoom-host-automation.user.jsfrom the specified URL. It seems like there’s an issue with the file or access.Please verify:
copilot/design-tampermonkey-userscriptis publicly accessible.Let me know if there's anything specific you'd like me to check further!
User: Great. Here is the Implementation-Only Agent Prompt.
This version tells the Copilot agent exactly what files to create, in what order, and what each should contain so it can start coding immediately.
You can paste this directly into Copilot Agent Tasks.
⸻
:::writing{variant=“standard” id=“91842”}
IMPLEMENTATION AGENT PROMPT — ZOOM MULTIPIN AUTOMATION
You are a coding agent working inside this repository.
Your task is to implement a Zoom Web automation userscript that runs under a Host or Co-Host account and automatically grants Multi-Pin permission when participants raise their hand.
The system must be simple, reliable, and deployable quickly.
Do NOT introduce unnecessary architecture or dependencies.
The system must run entirely as a Tampermonkey userscript interacting with the Zoom Web DOM.
Assume the Zoom account running the script has co-host or host permissions.
⸻
STEP 1 — CREATE PROJECT STRUCTURE
Create the following files:
scripts/zoom-host-tools.user.js
selectors/zoom-dom-selectors.json...
This pull request was created from Copilot chat.
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.