If you have problems running the sample, take the following steps:
- Read the sys-status message.
- Check server status by clicking on the Py-Server indicator in the navbar - if online, it shows green.
- Close any open instances of Excel.
- Stop the Python server by pressing
Ctrl+Cin the terminal where it's running. - Check your configuration file - verify JSON syntax in
app.config.json. - Verify file paths - ensure all mapping reference files exist at the specified locations.
- Try running again.
Symptoms:
- Backend terminal shows no new logs
- Endpoints don't respond (e.g.,
/test-connection,/docshang forever) - Py-Server indicator stays red (offline)
- Browser requests never complete
Critical Diagnostic - Press Ctrl+C:
Press Ctrl+C in the backend terminal to flush buffered logs and reveal what's happening:
- If logs appear (especially
OPTIONS /test-connection HTTP/1.1requests): Server was stuck processing CORS preflight requests - If no logs appear: Server is completely hung during startup
Fix:
- Kill the hung process completely (press Ctrl+C multiple times if needed)
- Check for stale connections:
netstat -ano | findstr ":8000" - If port is still in use, kill the process:
taskkill /F /PID <pid> - Restart fresh with
start-server-py-LLMs.bat
Check what's using the port:
netstat -ano | findstr ":8000"Kill stale Python process:
# Find PID from netstat output, then:
taskkill /F /PID <pid>Symptom: After pressing Ctrl+C, you see many stuck OPTIONS requests:
INFO: 127.0.0.1:65086 - "OPTIONS /test-connection HTTP/1.1" 200 OK
INFO: 127.0.0.1:59464 - "OPTIONS /test-connection HTTP/1.1" 200 OK
Cause: Server has accumulated stale socket connections (CLOSE_WAIT state) that block new requests.
Fix: Restart server with clean state (see steps above).
Troubleshooting steps:
- Verify config file is valid JSON - check for syntax errors
- Check that workbook name in config matches exactly (case-sensitive)
- For external mapping files (not current workbook), you still need to Browse and select them manually due to browser security restrictions
- Check Matching Journal for any loading errors
Troubleshooting steps:
- Verify all mappings loaded successfully (thermometer step 3 complete)
- Check Py-Server indicator - if red, backend is offline (see Backend Server Issues above)
- Try toggling the tracking switch OFF then ON
- Check browser console (
F12in Excel task pane) for JavaScript errors
Symptoms:
- Add-in loads but buttons don't respond
- Missing UI elements compared to source code
- Strange behavior after switching between sideload and dev mode
Fix:
- Rebuild dist folder:
npm run build - Clear Excel cache:
- Close ALL Excel instances completely
- Clear Office add-in cache (varies by OS)
- Restart Excel and reload add-in
- For development: Use
npm start(dev mode) instead of sideload - it serves fresh files with hot reload
If the add-in UI doesn't match the latest code changes:
- Rebuild:
npm run build - Hard refresh in Excel task pane (if available)
- Or restart Excel completely
The backend supports multiple concurrent users with IP-based authentication. Stateless backend - each request is independent. No session management.
Add users - Edit backend-api/config/users.json:
{
"users": {
"admin": {
"email": "admin@company.com",
"allowed_ips": ["127.0.0.1", "192.168.1.134"]
},
"john": {
"email": "john@company.com",
"allowed_ips": ["10.0.0.100"]
}
}
}Stateless Architecture:
- Users authenticated by IP address (hot-reloaded from users.json)
- No backend sessions - each request is independent
- Frontend sends terms array with each LLM request
- Multiple users can make concurrent requests without interference
For production deployment:
-
Add users with their actual IPs in
backend-api/config/users.json -
Start network server:
python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reload
If browser shows "401.3 Unauthorized" when testing http://localhost:8080/taskpane.html:
- The files are in a user folder that IIS cannot access
- Solution: Deploy files to
C:\inetpub\wwwroot\termnorm\where IIS has full access (see INSTALLATION.md for PowerShell deployment commands)
- Verify manifest copied to
\\SERVERNAME\OfficeAddIns\ - Check users configured Trusted Catalog correctly
- Ensure network path is accessible to users
- Restart Excel after adding catalog
- Test the URL in browser:
http://SERVERNAME:8080/taskpane.html - Check IIS website is running (IIS Manager → Sites → TermNorm → State: Started)
- Verify firewall allows port 8080
- Ensure manifest URLs match server configuration
If Excel shows an old build (check build date in "About & Version Info") even after redeploying:
-
Close all Excel windows/processes (verify in Task Manager - no EXCEL.EXE running)
-
Clear Office add-in cache:
rd /s /q "%LOCALAPPDATA%\Microsoft\Office\16.0\Wef" rd /s /q "%LOCALAPPDATA%\Microsoft\Office\16.0\WEF"
-
Clear browser cache (Office uses Edge WebView):
rd /s /q "%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache"
-
Remove and re-add the add-in:
- Open Excel
- Insert → My Add-ins → Three dots menu → Remove TermNorm
- Close Excel completely
- Reopen Excel
- Insert → My Add-ins → SHARED FOLDER → Add TermNorm
-
Verify correct version loaded:
- Open TermNorm task pane
- Check "About & Version Info" → Build date should match deployment date
- Verify expected configuration changes appear
To use HTTPS instead of HTTP:
- Obtain SSL certificate for your server
- Bind certificate to IIS website (Port 443)
- Rebuild with HTTPS URL:
set DEPLOYMENT_URL=https://SERVERNAME/termnorm/ npm run build - Redeploy to IIS
If you still have problems, create a GitHub issue and we'll help you.