# Troubleshooting Guide **Published version:** [docs.betterseqta.org/troubleshooting/](https://docs.betterseqta.org/troubleshooting/) Having issues with BetterSEQTA+ development? This guide covers the most common problems and their solutions. ## Table of Contents - [Installation Issues](#installation-issues) - [Development Server Issues](#development-server-issues) - [Browser Extension Issues](#browser-extension-issues) - [Plugin Development Issues](#plugin-development-issues) - [Build Issues](#build-issues) - [Still Stuck?](#still-stuck) ## Installation Issues ### ❌ "npm install" fails with peer dependency errors **Problem**: You see errors about peer dependencies or conflicting packages. **Solution**: ```bash rm -rf node_modules package-lock.json npm install --legacy-peer-deps ``` ### ❌ "Cannot find module" errors **Problem**: Node.js can't find required packages. **Solutions**: 1. **Clear and reinstall**: ```bash rm -rf node_modules npm install --legacy-peer-deps ``` 2. **Check Node.js version**: ```bash node --version # Should be v16 or higher ``` 3. **Try with npm cache clean**: ```bash npm cache clean --force npm install --legacy-peer-deps ``` ### ❌ Permission errors on macOS/Linux **Problem**: "EACCES" or permission denied errors. **Solution**: ```bash sudo chown -R $(whoami) ~/.npm sudo chown -R $(whoami) /usr/local/lib/node_modules ``` ## Development Server Issues ### ❌ "npm run dev" fails **Problem**: Development server won't start. **Solutions**: 1. **Check if port is in use**: ```bash lsof -i :5173 # Kill the process using the port ``` 2. **Clear dist folder**: ```bash rm -rf dist npm run dev ``` 3. **Check for TypeScript errors**: ```bash npx tsc --noEmit # Check for type errors ``` ### ❌ Changes not reflecting in browser **Problem**: You make code changes but don't see them in the browser. **Solutions**: 1. **Reload the extension**: - Go to `chrome://extensions` - Find BetterSEQTA+ and click the refresh icon - Refresh your SEQTA page 2. **Check if dev server is running**: - Look for "Build completed" in your terminal - If not, restart `npm run dev` 3. **Hard refresh the page**: - Press `Ctrl+Shift+R` (or `Cmd+Shift+R` on Mac) ## Browser Extension Issues ### ❌ Extension doesn't load in Chrome **Problem**: Extension appears in `chrome://extensions` but doesn't work. **Solutions**: 1. **Check for errors**: - Go to `chrome://extensions` - Click "Errors" button on BetterSEQTA+ - Fix any JavaScript errors shown 2. **Verify manifest**: - Check if `dist/manifest.json` exists - Ensure it has proper structure 3. **Check permissions**: - Extension needs permission to access SEQTA pages - Click "Details" → "Site access" → "On all sites" ### ❌ Extension doesn't appear on SEQTA pages **Problem**: Extension loads but doesn't modify SEQTA. **Solutions**: 1. **Check if you're on a SEQTA Learn page**: - URL should contain "seqta" or "learn" - Page title should include "SEQTA Learn" 2. **Check browser console**: - Press `F12` → Console tab - Look for "[BetterSEQTA+]" messages - If no messages, extension isn't running 3. **Verify page detection**: - Extension only runs on actual SEQTA Learn pages - Test on a real SEQTA instance ### ❌ Settings page won't open **Problem**: Clicking the extension icon doesn't open settings. **Solutions**: 1. **Check popup errors**: - Right-click extension icon → "Inspect popup" - Look for JavaScript errors 2. **Clear extension storage**: ```javascript // In browser console on any page: chrome.storage.local.clear() ``` 3. **Reload extension and try again** ## Plugin Development Issues ### ❌ My plugin doesn't appear in settings **Problem**: Created a plugin but it's not showing up. **Solutions**: 1. **Check plugin registration**: - Ensure your plugin is imported in `src/plugins/index.ts` - Verify `pluginManager.registerPlugin(yourPlugin)` is called 2. **Check plugin structure**: ```typescript // Ensure your plugin has all required fields const myPlugin: Plugin = { id: "unique-id", // Must be unique name: "Display Name", description: "What it does", version: "1.0.0", run: async (api) => { // Your code here } }; ``` 3. **Check for errors**: - Look in browser console for plugin loading errors ### ❌ Plugin settings not working **Problem**: Plugin settings don't save or load properly. **Solutions**: 1. **Check settings definition**: ```typescript import { defineSettings, booleanSetting } from "@/plugins/core/settingsHelpers"; const settings = defineSettings({ myOption: booleanSetting({ default: true, title: "My Option", description: "What this does" }) }); ``` 2. **Wait for settings to load**: ```typescript run: async (api) => { await api.settings.loaded; // Wait for settings to load console.log(api.settings.myOption); // Now you can use settings } ``` ### ❌ Plugin API functions not working **Problem**: `api.seqta.onMount()` or other API functions don't work. **Solutions**: 1. **Check selector specificity**: ```typescript // Be specific with selectors api.seqta.onMount(".home-page", (element) => { // Your code }); ``` 2. **Wait for elements**: ```typescript // Some elements load after page navigation api.seqta.onPageChange((page) => { if (page === "home") { api.seqta.onMount(".home-content", (element) => { // Now element should exist }); } }); ``` ## Build Issues ### ❌ "npm run build" fails **Problem**: Production build fails with errors. **Solutions**: 1. **Check TypeScript errors**: ```bash npx tsc --noEmit ``` 2. **Clear cache and rebuild**: ```bash rm -rf dist node_modules npm install --legacy-peer-deps npm run build ``` 3. **Check for import errors**: - Ensure all imports use correct paths - Check for missing files ### ❌ Built extension doesn't work **Problem**: `npm run build` succeeds but extension doesn't work. **Solutions**: 1. **Test the built extension**: - Load the `dist` folder as unpacked extension - Check console for errors 2. **Compare with dev version**: - If dev works but build doesn't, there might be a build configuration issue 3. **Check manifest generation**: - Verify `dist/manifest.json` looks correct - Compare with working version ## Common Error Messages ### "Cannot access contents of the URL" - **Cause**: Extension permissions issue - **Fix**: Go to `chrome://extensions` → BetterSEQTA+ → Details → Site access → "On all sites" ### "Extension context invalidated" - **Cause**: Extension was reloaded while page was open - **Fix**: Refresh the SEQTA page ### "Uncaught ReferenceError: browser is not defined" - **Cause**: Missing webextension-polyfill import - **Fix**: Add `import browser from "webextension-polyfill";` at top of file ### "Module not found: Can't resolve '@/...' " - **Cause**: TypeScript path mapping issue - **Fix**: Check `tsconfig.json` and `vite.config.ts` for path configuration ## Performance Issues ### Extension makes SEQTA slow 1. **Check for memory leaks**: - Use Chrome DevTools → Performance tab - Look for growing memory usage 2. **Optimize plugin code**: - Remove unnecessary listeners - Clean up intervals/timeouts - Use efficient selectors 3. **Profile your changes**: - Test with extension disabled vs enabled - Identify which plugin is causing issues ## Still Stuck? If none of these solutions work: 1. **🔍 Search existing issues**: [GitHub Issues](https://github.com/BetterSEQTA/BetterSEQTA-plus/issues) 2. **💬 Ask on Discord**: [Join our server](https://discord.gg/YzmbnCDkat) - fastest way to get help! 3. **📝 Create a new issue**: Include: - Your operating system - Node.js version (`node --version`) - Browser version - Exact error message - Steps to reproduce - What you've already tried 4. **📧 Email us**: betterseqta.plus@gmail.com for urgent issues ## Getting More Debug Info ### Enable verbose logging Add this to your plugin's `run` function: ```typescript console.log("[DEBUG] Plugin starting:", api); ``` ### Check extension background page 1. Go to `chrome://extensions` 2. Click "Details" on BetterSEQTA+ 3. Click "Inspect views: background page" 4. Check console for background script errors ### Export debug info Run this in browser console on a SEQTA page: ```javascript console.log("Extension info:", { version: chrome.runtime.getManifest().version, url: window.location.href, userAgent: navigator.userAgent, storage: await chrome.storage.local.get() }); ``` Remember: **Don't give up!** Every developer faces these issues. The community is here to help, and solving these problems makes you a better developer. 💪