Files
miku-discord/readmes/WEB_UI_LANGUAGE_INTEGRATION.md

191 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

# 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:**
```html
<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:**
```html
<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()`
```javascript
async function refreshLanguageStatus() {
// Fetches current language mode from /language endpoint
// Updates UI elements with current language and model
}
```
#### `toggleLanguageMode()`
```javascript
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:**
```javascript
document.addEventListener('DOMContentLoaded', function() {
loadStatus();
loadServers();
loadLastPrompt();
loadLogs();
checkEvilModeStatus();
checkBipolarModeStatus();
checkGPUStatus();
refreshFigurineSubscribers();
loadProfilePictureMetadata();
...
});
```
**After:**
```javascript
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`
```json
{
"language_mode": "english",
"available_languages": ["english", "japanese"],
"current_model": "llama3.1"
}
```
### POST `/language/toggle`
```json
{
"status": "ok",
"language_mode": "japanese",
"model_now_using": "swallow",
"message": "Miku is now speaking in JAPANESE!"
}
```
## User Experience Flow
1. **Page Load** → Language status is automatically fetched and displayed
2. **User Clicks Toggle** → Language switches (English ↔ Japanese)
3. **UI Updates** → Display shows new language and model
4. **Notification Appears** → "Miku is now speaking in [LANGUAGE]!"
5. **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
1. **Per-Server Language Settings** - Store language preference per server
2. **Language Indicator in Status** - Show current language in status tab
3. **Language-Specific Emojis** - Different emojis for each language
4. **Auto-Switch on User Language** - Detect and auto-switch based on user messages
5. **Language History** - Show which language was used for each conversation