- Add public/src/unsandbox.js browser SDK with HMAC-SHA256 auth
- Add settings UI for unsandbox public/secret keys in modal
- Refactor code-execution.js to use SDK when keys configured
- Falls back to unauthenticated endpoint when not configured
- Add English translations for new settings
- Add system prompt as last assistant message in chat history
- Support UNCLOSEAI_SYSTEM_PROMPT_REPLACE flag for custom prompts
- Use configured voice preference in page-reader TTS
- Disable code execution button (sandbox not running)
- Add 'Our Crawler' link to left sidebar navigation after Text-to-Speech on all HTML pages
- Fix missing Text-to-Speech link in inference.html navigation
- Update Discord bot link in crawler.html to point to Git repo instead of domain
Created /crawler.html page explaining:
- Our user agent (uncloseai.com/1.42)
- What we use the crawler for (research, Q&A, content aggregation)
- Ethical practices (robots.txt, crawl delays, caching, smart depth)
- How to block the crawler
- Link to Discord bot
Added crawler link to sidebar navigation in inference.html
This provides transparency for webmasters and explains our ethical
crawling practices in human-friendly terms.
Add --enable-auto-tool-choice and --tool-call-parser hermes flags to the
vLLM server command. These flags are required for Hermes 3 to support
function calling via the OpenAI-compatible API.
- Remove redundant newlines in fmt.Println calls (go/http/uncloseai.go)
- Update Go version to 1.19 for compatibility across all modules
- Add go.mod for examples directory with proper module replacement
- Add go.mod for uncloseai library package
- Run go mod tidy to resolve openai SDK dependencies
Integrated code.ai.unturf.com code execution service into uncloseai.js modal:
- Added CODE_EXEC_URL to config.js
- Created code-execution.js module with executeCode() and result display
- Modified addCodeBlockCopyButtons() to add ▶ Run button next to 📋 Copy
- Auto-detects language from code block class (defaults to Python)
- Uses async job polling with exponential backoff
- Shows execution output, errors, and allows cancellation for long-running jobs
- Results displayed inline below code blocks with monospace formatting
Code blocks in AI responses now have both Copy and Run buttons.
Added detailed console logging to help diagnose why download buttons don't appear after TTS generation. Logs include:
- TTS result object inspection
- Download button DOM query verification
- Display style changes before/after
- Computed style verification
- Error logging when button not found
This will help identify whether the issue is:
1. TTS not completing successfully
2. Download button not being found in DOM
3. Display style not being applied correctly
4. CSS overriding the display property
Users with old cached voice data need to see the new models (tts-1-silero,
tts-1-kokoro). Added a cache version system that automatically invalidates
old cache when we update the voice models.
Changes:
- Added cacheVersionKey to track cache format version
- Set currentVersion to '2' (increment when voice models change)
- Cache is invalidated if version doesn't match
- Old cache entries are cleaned up automatically
- Users will automatically fetch fresh voice data on next modal open
- Added text-to-speech link in navigation after Inference Setup link
- Updated inference.html TTS section to link to text-to-speech page
- Removed redundant openedai-speech references from inference page
- Applied changes to 18 public HTML pages for consistent navigation