feat: update/add functions based on InRoute Reverse#22
Merged
Conversation
Add content script providers for 4 new platforms: - kahoot.js: MCQ support with anti-detect typing simulation - classtime.js: MCQ + categorization DND support - miyklas.js: DND + MathML/MathJax math extraction - lcloud.js: MCQ, T/F, text input, matching, DND support Update manifest.common.json with match patterns and content scripts for all new platforms.
Add support for additional Naurok question types: - True/False detection (правда/неправда/так/ні options) - Text input fields (input[type=text], textarea, .answer-text-input) - Multi-question batch processing for multi-quiz pages - Pass correct questionType to AI for specialized prompting
- Add collectCategorization() for drag-and-drop items into categories - Wire categorization into premium format dispatch (type 10 + heuristic fallback) - Add applyCategorization() with DnD event simulation + click fallback - Add specialized categorization prompt to request.js - Update premiumQuestionType mapping and CUSTOM_APPLIER_FORMATS Closes #3
Replace simple single-question scan with batch processing: - extractOptions() and extractImages() helpers - processSingleQuestion() for individual question handling - processBatchQuestions() collects all questions and sends combined text - Support one-click and normal modes
- Global anti-detect: blur/focus bypass, visibilityState spoofing, Document.prototype.hasFocus()=true, performance.now() jitter - Platform-specific bypasses for vseosvita fullscreen, naurok/kahoot logging - Remove timestopper reference from comments
Add newly supported platforms to site tables: - Kahoot!, Classtime, MiyKlas, LCloud - Mark all platforms (including NaUrok) as beta status
…w-up requests Ensure the tools field is explicitly removed from the request body copy before conditionally re-adding it on the first stream round. Some gateways reject tool definitions on subsequent turns after tool calls have already been executed, causing 400 errors. Also removes the non-standard is_error field from Anthropic tool_result blocks to improve compatibility with strict gateway implementations.
Strip any tools array added by buildRequestBody before conditionally re-inserting it only on the first tool loop. Prevents 400 errors on gateways that reject tool definitions on follow-up turns. Also removes the non-standard is_error field from Anthropic tool_result blocks for better gateway compatibility.
Expand README.md and README-en.md with: - Complete supported platforms matrix (9 sites with auto-answer, disabler, silent mode status) - Built-in AI providers overview (OpenAI, Anthropic, Gemini, OpenCode Zen) - Feature sections for disabler, silent modes, consensus, web search - Compatibility indicators (✅/⚠️ /❌) for quick reference
- Merge separate chrome.runtime.onMessage listeners in background.js to prevent the port from closing before the fetch handler can respond. - Add 'sent' guard to blob FileReader callbacks to prevent double sendResponse calls. - Add 25s timeout to makeRequest to prevent indefinite hangs. - Ensure all content-script onMessage listeners return true for async compatibility (oneclick.js, gforms.js, msforms.js). Closes #23
Add an isProcessingAI check before invoking processQuestion to prevent race conditions where multiple question scans trigger overlapping AI requests on the same page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reverse-engineered InRoute extension features and ported to xdAnswers. Adds 4 new platform providers, enhances 3 existing ones, expands anti-detect disabler to all platforms, and removes the timestopper exploit.
Closes #21
New Platforms
providers/kahoot.jsproviders/classtime.jsproviders/miyklas.jsproviders/lcloud.jsEnhanced Providers
Anti-Detect & Disabler
disabler-page.jsfrom vseosvita-only to all platformsvisibilityStatespoofing (always "visible"),Document.prototype.hasFocus()=true,performance.now()jitterRemoved
timestopper.js,timestopper-page.js) — unreliable, removed from UI, settings, manifest, and i18nDocumentation
README.mdandREADME-en.mdwith all 9 supported platforms