6.0 KiB
6.0 KiB
Web UI Integration - Japanese Language Mode
Changes Made to bot/static/index.html
1. Tab Navigation Updated (Line ~660)
Added new "⚙️ LLM Settings" tab between Status and Image Generation tabs.
Before:
<button class="tab-button" onclick="switchTab('tab3')">Status</button>
<button class="tab-button" onclick="switchTab('tab4')">🎨 Image Generation</button>
<button class="tab-button" onclick="switchTab('tab5')">📊 Autonomous Stats</button>
<button class="tab-button" onclick="switchTab('tab6')">💬 Chat with LLM</button>
<button class="tab-button" onclick="switchTab('tab7')">📞 Voice Call</button>
After:
<button class="tab-button" onclick="switchTab('tab3')">Status</button>
<button class="tab-button" onclick="switchTab('tab4')">⚙️ LLM Settings</button>
<button class="tab-button" onclick="switchTab('tab5')">🎨 Image Generation</button>
<button class="tab-button" onclick="switchTab('tab6')">📊 Autonomous Stats</button>
<button class="tab-button" onclick="switchTab('tab7')">💬 Chat with LLM</button>
<button class="tab-button" onclick="switchTab('tab8')">📞 Voice Call</button>
2. New LLM Tab Content (Line ~1177)
Inserted complete new tab (tab4) with:
- Language Mode Toggle Section - Blue-highlighted button to switch English ↔ Japanese
- Current Status Display - Shows current language and active model
- Information Panel - Explains how language mode works
- Model Information - Shows which models are used for each language
Features:
- Toggle button with visual feedback
- Real-time status display
- Color-coded sections (blue for active toggle, orange for info)
- Clear explanations of English vs Japanese modes
3. Tab ID Renumbering
All subsequent tabs have been renumbered:
- Old tab4 (Image Generation) → tab5
- Old tab5 (Autonomous Stats) → tab6
- Old tab6 (Chat with LLM) → tab7
- Old tab7 (Voice Call) → tab8
4. JavaScript Functions Added (Line ~2320)
Added two new async functions:
refreshLanguageStatus()
async function refreshLanguageStatus() {
// Fetches current language mode from /language endpoint
// Updates UI elements with current language and model
}
toggleLanguageMode()
async function toggleLanguageMode() {
// Calls /language/toggle endpoint
// Updates UI to reflect new language mode
// Shows success notification
}
5. Page Initialization Updated (Line ~1617)
Added language status refresh to DOMContentLoaded event:
Before:
document.addEventListener('DOMContentLoaded', function() {
loadStatus();
loadServers();
loadLastPrompt();
loadLogs();
checkEvilModeStatus();
checkBipolarModeStatus();
checkGPUStatus();
refreshFigurineSubscribers();
loadProfilePictureMetadata();
...
});
After:
document.addEventListener('DOMContentLoaded', function() {
loadStatus();
loadServers();
loadLastPrompt();
loadLogs();
checkEvilModeStatus();
checkBipolarModeStatus();
checkGPUStatus();
refreshLanguageStatus(); // ← NEW
refreshFigurineSubscribers();
loadProfilePictureMetadata();
...
});
UI Layout
The new LLM Settings tab includes:
🌐 Language Mode Section
- Toggle Button: Click to switch between English and Japanese
- Visual Indicator: Shows current language in blue
- Color Scheme: Blue for active toggle (matches system theme)
📊 Current Status Section
- Current Language: Displays "English" or "日本語 (Japanese)"
- Active Model: Shows which model is being used
- Available Languages: Lists both English and Japanese
- Refresh Button: Manually update status from server
ℹ️ How Language Mode Works
- Explains English mode behavior
- Explains Japanese mode behavior
- Notes that language is global (all servers/DMs)
- Mentions conversation history is preserved
Button Actions
Toggle Language Button
- Appearance: Blue background, white text, bold font
- Action: Sends POST request to
/language/toggle - Response: Updates UI and shows success notification
- Icon: 🔄 (refresh icon)
Refresh Status Button
- Appearance: Standard button
- Action: Sends GET request to
/language - Response: Updates status display
- Icon: 🔄 (refresh icon)
API Integration
The tab uses the following endpoints:
GET /language
{
"language_mode": "english",
"available_languages": ["english", "japanese"],
"current_model": "llama3.1"
}
POST /language/toggle
{
"status": "ok",
"language_mode": "japanese",
"model_now_using": "swallow",
"message": "Miku is now speaking in JAPANESE!"
}
User Experience Flow
- Page Load → Language status is automatically fetched and displayed
- User Clicks Toggle → Language switches (English ↔ Japanese)
- UI Updates → Display shows new language and model
- Notification Appears → "Miku is now speaking in [LANGUAGE]!"
- All Messages → Miku's responses are in selected language
Styling Details
- Tab Button: Matches existing UI theme (monospace font, dark background)
- Language Section: Blue highlight (#4a7bc9) for primary action
- Status Display: Dark background (#1a1a1a) for contrast
- Info Section: Orange accent (#ff9800) for informational content
- Text Colors: White for main text, cyan (#61dafb) for headers, gray (#aaa) for descriptions
Responsive Design
- Uses flexbox and grid layouts
- Sections stack properly on smaller screens
- Buttons are appropriately sized for clicking
- Text is readable at all screen sizes
Future Enhancements
- Per-Server Language Settings - Store language preference per server
- Language Indicator in Status - Show current language in status tab
- Language-Specific Emojis - Different emojis for each language
- Auto-Switch on User Language - Detect and auto-switch based on user messages
- Language History - Show which language was used for each conversation