977 lines
58 KiB
HTML
977 lines
58 KiB
HTML
<div id="rpg-companion-panel" class="rpg-panel">
|
||
<!-- Collapse/Expand Toggle Button -->
|
||
<button class="rpg-collapse-toggle" id="rpg-collapse-toggle" title="Collapse/Expand Panel">
|
||
<i class="fa-solid fa-chevron-right"></i>
|
||
</button>
|
||
|
||
<!-- Main Game Panel -->
|
||
<div class="rpg-game-container">
|
||
<!-- Header with Controls -->
|
||
<div class="rpg-panel-header">
|
||
<h3>
|
||
<i class="fa-solid fa-dice-d20"></i>
|
||
<span id="rpg-panel-title" data-i18n-key="template.mainPanel.title">RPG Companion</span>
|
||
</h3>
|
||
</div>
|
||
|
||
<div id="rpg-panel-content">
|
||
<!-- Dice Roll Display -->
|
||
<div id="rpg-dice-display" class="rpg-dice-display">
|
||
<i class="fa-solid fa-dice"></i>
|
||
<span id="rpg-last-roll-text"></span>
|
||
<button id="rpg-clear-dice" class="rpg-clear-dice-btn">×</button>
|
||
</div>
|
||
|
||
<!-- Unified Game Content Box -->
|
||
<div class="rpg-content-box">
|
||
<!-- User Stats Section with Portrait -->
|
||
<div id="rpg-user-stats" class="rpg-section rpg-stats-section">
|
||
<!-- Content will be populated by JavaScript -->
|
||
</div>
|
||
|
||
<!-- Divider after User Stats -->
|
||
<div id="rpg-divider-stats" class="rpg-divider"></div>
|
||
|
||
<!-- Info Box Section -->
|
||
<div id="rpg-info-box" class="rpg-section rpg-info-section">
|
||
<!-- Content will be populated by JavaScript -->
|
||
</div>
|
||
|
||
<!-- Divider after Info Box -->
|
||
<div id="rpg-divider-info" class="rpg-divider"></div>
|
||
|
||
<!-- Character Thoughts Section -->
|
||
<div id="rpg-thoughts" class="rpg-section rpg-thoughts-section">
|
||
<!-- Content will be populated by JavaScript -->
|
||
</div>
|
||
|
||
<!-- Divider after Thoughts -->
|
||
<div id="rpg-divider-thoughts" class="rpg-divider"></div>
|
||
|
||
<!-- Inventory Section -->
|
||
<div id="rpg-inventory" class="rpg-section rpg-inventory-section">
|
||
<!-- Content will be populated by JavaScript -->
|
||
</div>
|
||
|
||
<!-- Divider after Inventory -->
|
||
<div id="rpg-divider-inventory" class="rpg-divider"></div>
|
||
|
||
<!-- Quests Section -->
|
||
<div id="rpg-quests" class="rpg-section rpg-quests-section">
|
||
<!-- Content will be populated by JavaScript -->
|
||
</div>
|
||
|
||
<!-- Divider after Quests -->
|
||
<div id="rpg-divider-quests" class="rpg-divider"></div>
|
||
|
||
<!-- Music Player Section -->
|
||
<div id="rpg-music-player" class="rpg-section rpg-music-section">
|
||
<!-- Content will be populated by JavaScript -->
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Feature Toggles Row -->
|
||
<div class="rpg-features-row" id="rpg-features-row">
|
||
<!-- HTML Prompt Toggle -->
|
||
<div class="rpg-toggle-container rpg-feature-col" id="rpg-html-toggle-wrapper">
|
||
<label class="rpg-toggle-label" title="Immersive HTML">
|
||
<input type="checkbox" id="rpg-toggle-html-prompt">
|
||
<i class="fa-solid fa-code"></i>
|
||
<span class="rpg-toggle-text" data-i18n-key="template.mainPanel.immersiveHtml">Immersive HTML</span>
|
||
</label>
|
||
</div>
|
||
|
||
<!-- Dialogue Coloring Toggle -->
|
||
<div class="rpg-toggle-container rpg-feature-col" id="rpg-dialogue-coloring-toggle-wrapper">
|
||
<label class="rpg-toggle-label" title="Colored Dialogues">
|
||
<input type="checkbox" id="rpg-toggle-dialogue-coloring">
|
||
<i class="fa-solid fa-palette"></i>
|
||
<span class="rpg-toggle-text" data-i18n-key="template.mainPanel.coloredDialogues">Colored Dialogues</span>
|
||
</label>
|
||
</div>
|
||
|
||
<!-- Spotify Music Toggle -->
|
||
<div class="rpg-toggle-container rpg-feature-col" id="rpg-spotify-toggle-wrapper">
|
||
<label class="rpg-toggle-label" title="Spotify Music">
|
||
<input type="checkbox" id="rpg-toggle-spotify-music">
|
||
<i class="fa-brands fa-spotify"></i>
|
||
<span class="rpg-toggle-text" data-i18n-key="template.mainPanel.spotifyMusic">Spotify Music</span>
|
||
</label>
|
||
</div>
|
||
|
||
<!-- Dynamic Weather Toggle -->
|
||
<div class="rpg-toggle-container rpg-feature-col" id="rpg-dynamic-weather-toggle-wrapper">
|
||
<label class="rpg-toggle-label" title="Dynamic Weather Effects">
|
||
<input type="checkbox" id="rpg-toggle-dynamic-weather">
|
||
<i class="fa-solid fa-cloud-sun-rain"></i>
|
||
<span class="rpg-toggle-text" data-i18n-key="template.mainPanel.dynamicWeatherEffects">Dynamic Weather</span>
|
||
</label>
|
||
</div>
|
||
<!-- Narrator Mode Toggle -->
|
||
<div class="rpg-toggle-container rpg-feature-col" id="rpg-narrator-toggle-wrapper">
|
||
<label class="rpg-toggle-label" title="Narrator Mode">
|
||
<input type="checkbox" id="rpg-toggle-narrator">
|
||
<i class="fa-solid fa-book-open"></i>
|
||
<span class="rpg-toggle-text" data-i18n-key="template.mainPanel.narratorMode">Narrator Mode</span>
|
||
</label>
|
||
</div>
|
||
<!-- Auto-generate Avatars Toggle -->
|
||
<div class="rpg-toggle-container rpg-feature-col" id="rpg-auto-avatars-toggle-wrapper">
|
||
<label class="rpg-toggle-label" title="Auto-generate Avatars">
|
||
<input type="checkbox" id="rpg-toggle-auto-avatars-panel">
|
||
<i class="fa-solid fa-user-plus"></i>
|
||
<span class="rpg-toggle-text" data-i18n-key="template.mainPanel.autoAvatars">Auto Avatars</span>
|
||
</label>
|
||
</div> </div>
|
||
|
||
<!-- Manual Update Button -->
|
||
<button id="rpg-manual-update" class="rpg-btn-primary rpg-manual-update-btn">
|
||
<i class="fa-solid fa-sync"></i> <span data-i18n-key="template.mainPanel.refreshRpgInfo">Refresh RPG
|
||
Info</span>
|
||
</button>
|
||
|
||
<!-- Settings and Edit Trackers Buttons Row -->
|
||
<div class="rpg-settings-buttons-row">
|
||
<button id="rpg-open-tracker-editor" class="rpg-btn-settings rpg-btn-half">
|
||
<i class="fa-solid fa-sliders"></i> <span data-i18n-key="template.mainPanel.editTrackersButton">Edit
|
||
Trackers</span>
|
||
</button>
|
||
<button id="rpg-open-settings" class="rpg-btn-settings rpg-btn-half">
|
||
<i class="fa-solid fa-gear"></i> <span
|
||
data-i18n-key="template.mainPanel.settingsButton">Settings</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Settings Modal -->
|
||
<div id="rpg-settings-popup" class="rpg-settings-popup" role="dialog" aria-modal="true"
|
||
aria-labelledby="rpg-settings-title">
|
||
<div class="rpg-settings-popup-content">
|
||
<header class="rpg-settings-popup-header">
|
||
<h3 id="rpg-settings-title">
|
||
<i class="fa-solid fa-gear" aria-hidden="true"></i>
|
||
<span data-i18n-key="template.settingsTitle">RPG Companion Settings</span>
|
||
</h3>
|
||
<button id="rpg-close-settings" class="rpg-popup-close" type="button"
|
||
aria-label="Close settings">×</button>
|
||
</header>
|
||
<div class="rpg-settings-popup-body">
|
||
<div class="rpg-settings-group">
|
||
<h4 data-i18n-key="template.settingsModal.themeTitle"><i class="fa-solid fa-palette"
|
||
aria-hidden="true"></i> Theme</h4>
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-theme-select" data-i18n-key="template.settingsModal.themeLabel">Visual
|
||
Theme:</label>
|
||
<select id="rpg-theme-select" class="rpg-select">
|
||
<option value="default" data-i18n-key="template.settingsModal.themeOptions.default">Default
|
||
</option>
|
||
<option value="sci-fi" data-i18n-key="template.settingsModal.themeOptions.sciFi">Sci-Fi
|
||
(Synthwave)</option>
|
||
<option value="fantasy" data-i18n-key="template.settingsModal.themeOptions.fantasy">Fantasy
|
||
(Rustic Parchment)</option>
|
||
<option value="cyberpunk" data-i18n-key="template.settingsModal.themeOptions.cyberpunk">
|
||
Cyberpunk (Neon Grid)</option>
|
||
<option value="custom" data-i18n-key="template.settingsModal.themeOptions.custom">Custom
|
||
</option>
|
||
</select>
|
||
</div>
|
||
|
||
<!-- Custom Theme Colors (Hidden by default) -->
|
||
<div id="rpg-custom-colors" class="rpg-custom-colors" style="display: none;">
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-custom-bg"
|
||
data-i18n-key="template.settingsModal.themeOptions.custom.background">Background:</label>
|
||
<input type="color" id="rpg-custom-bg" value="#1a1a2e" />
|
||
</div>
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-custom-accent"
|
||
data-i18n-key="template.settingsModal.themeOptions.custom.accent">Accent:</label>
|
||
<input type="color" id="rpg-custom-accent" value="#16213e" />
|
||
</div>
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-custom-text"
|
||
data-i18n-key="template.settingsModal.themeOptions.custom.text">Text:</label>
|
||
<input type="color" id="rpg-custom-text" value="#eaeaea" />
|
||
</div>
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-custom-highlight"
|
||
data-i18n-key="template.settingsModal.themeOptions.custom.highlight">Highlight:</label>
|
||
<input type="color" id="rpg-custom-highlight" value="#e94560" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-stat-bar-color-low" data-i18n-key="template.settingsModal.theme.statBarLow">Stat Bar
|
||
Color (Low):</label>
|
||
<input type="color" id="rpg-stat-bar-color-low" value="#cc3333" />
|
||
<small data-i18n-key="template.settingsModal.theme.statBarLowNote">Color when stats are at
|
||
0%.</small>
|
||
</div>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-stat-bar-color-high" data-i18n-key="template.settingsModal.theme.statBarHigh">Stat
|
||
Bar Color (High):</label>
|
||
<input type="color" id="rpg-stat-bar-color-high" value="#33cc66" />
|
||
<small data-i18n-key="template.settingsModal.theme.statBarHighNote">Color when stats are at
|
||
100%.</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="rpg-settings-group">
|
||
<h4 data-i18n-key="template.settingsModal.displayTitle"><i class="fa-solid fa-toggle-on"
|
||
aria-hidden="true"></i> Display Options</h4>
|
||
<small class="notes" style="display: block; margin-bottom: 10px;"
|
||
data-i18n-key="template.settingsModal.displayNote">
|
||
<i class="fa-solid fa-info-circle" aria-hidden="true"></i> Use the Extensions tab to enable/disable
|
||
the RPG Companion extension entirely
|
||
</small>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-position-select" data-i18n-key="template.settingsModal.display.panelPosition">Panel
|
||
Position:</label>
|
||
<select id="rpg-position-select" class="rpg-select">
|
||
<option value="right" data-i18n-key="template.settingsModal.display.panelPositionOptions.right">
|
||
Right Sidebar</option>
|
||
<option value="left" data-i18n-key="template.settingsModal.display.panelPositionOptions.left">
|
||
Left Sidebar</option>
|
||
</select>
|
||
</div>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-user-stats" />
|
||
<span data-i18n-key="template.settingsModal.display.showUserStats">Show User Stats</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showUserStatsNote">
|
||
Enable User Stats that track your persona's statistics, mood, attributes, skills, etc.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-info-box" />
|
||
<span data-i18n-key="template.settingsModal.display.showInfoBox">Show Info Box</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showInfoBoxNote">
|
||
Display location, time, weather, and recent events.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-thoughts" />
|
||
<span data-i18n-key="template.settingsModal.display.showPresentCharacters">Show Present
|
||
Characters</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showPresentCharactersNote">
|
||
Display character portraits with their current thoughts and status.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-thoughts-in-chat" />
|
||
<span data-i18n-key="template.settingsModal.display.showThoughtsInChat">Show Thoughts</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showThoughtsInChatNote">
|
||
Display character thoughts as overlay bubbles next to their messages.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-inventory" />
|
||
<span data-i18n-key="template.settingsModal.display.showInventory">Show Inventory</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showInventoryNote">
|
||
Track items carried, clothing worn, stored items, and assets.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-quests" />
|
||
<span data-i18n-key="template.settingsModal.display.showQuests">Show Quests</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showQuestsNote">
|
||
Manage main and optional quests with objectives.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-lock-icons" />
|
||
<span data-i18n-key="template.settingsModal.display.showLockIcons">Show Locking/Unlocking Trackers</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showLockIconsNote">
|
||
Display lock/unlock icons on tracker items to prevent AI from modifying them.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-show-html-toggle" />
|
||
<span data-i18n-key="template.settingsModal.display.showImmersiveHtmlToggle">Show Immersive HTML</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showImmersiveHtmlToggleNote">
|
||
Display a toggle button to enable/disable HTML formatting in messages.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-show-dialogue-coloring-toggle" />
|
||
<span data-i18n-key="template.settingsModal.display.showDialogueColoringToggle">Show Colored Dialogues</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showDialogueColoringToggleNote">
|
||
Display a toggle button to enable/disable colored dialogue formatting.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-show-spotify-toggle" />
|
||
<span data-i18n-key="template.settingsModal.display.showSpotifyMusicToggle">Show Spotify Music</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showSpotifyMusicToggleNote">
|
||
Display Spotify music player with AI-suggested scene-appropriate tracks.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-show-dynamic-weather-toggle" />
|
||
<span data-i18n-key="template.settingsModal.display.showDynamicWeatherToggle">Show Dynamic Weather Effects</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showDynamicWeatherToggleNote">
|
||
Display a toggle button to enable/disable animated weather effects.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-show-narrator-mode" />
|
||
<span data-i18n-key="template.settingsModal.display.showNarratorMode">Show Narrator Mode</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showNarratorModeNote">
|
||
Display a toggle button to enable/disable narrator mode (infer characters from context).
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-show-auto-avatars" />
|
||
<span data-i18n-key="template.settingsModal.display.showAutoAvatars">Show Auto-generate Avatars</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showAutoAvatarsNote">
|
||
Display a toggle button to automatically generate avatars for characters without images.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-randomized-plot" />
|
||
<span data-i18n-key="template.settingsModal.display.showRandomizedPlot">Show Randomized Plot Progression</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showRandomizedPlotNote">
|
||
Display button for AI-generated random plot progression prompts.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-natural-plot" />
|
||
<span data-i18n-key="template.settingsModal.display.showNaturalPlot">Show Natural Plot Progression</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showNaturalPlotNote">
|
||
Display button for context-aware narrative continuation prompts.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-encounters" />
|
||
<span data-i18n-key="template.settingsModal.display.showStartEncounter">Show Start Encounter</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showStartEncounterNote">
|
||
Display button to initiate interactive combat encounters.
|
||
</small>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-dice-display" />
|
||
<span data-i18n-key="template.settingsModal.display.showDiceDisplay">Show Dice Roll Display</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.showDiceDisplayNote">
|
||
Display the "Last Roll" indicator in the panel
|
||
</small>
|
||
|
||
</div>
|
||
|
||
<div class="rpg-settings-group">
|
||
<h4 data-i18n-key="template.settingsModal.advancedTitle"><i class="fa-solid fa-sliders"
|
||
aria-hidden="true"></i> Advanced</h4>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-generation-mode"
|
||
data-i18n-key="template.settingsModal.advanced.generationMode">Generation Mode:</label>
|
||
<select id="rpg-generation-mode" class="rpg-select">
|
||
<option value="together"
|
||
data-i18n-key="template.settingsModal.advanced.generationModeOptions.together">Together with
|
||
Main Generation</option>
|
||
<option value="separate"
|
||
data-i18n-key="template.settingsModal.advanced.generationModeOptions.separate">Separate
|
||
Generation</option>
|
||
<option value="external"
|
||
data-i18n-key="template.settingsModal.advanced.generationModeOptions.external">External API
|
||
</option>
|
||
</select>
|
||
<small data-i18n-key="template.settingsModal.advanced.generationModeNote">Together: Adds RPG
|
||
tracking to main roleplay. Separate: Generates RPG data separately (manual or auto).</small>
|
||
</div>
|
||
|
||
<!-- External API Settings (shown only when External API mode is selected) -->
|
||
<div id="rpg-external-api-settings" class="rpg-external-api-settings"
|
||
style="display: none; padding: 12px; border-left: 2px solid var(--SmartThemeBorderColor); margin-top: 8px;">
|
||
<h5 style="margin-top: 0; margin-bottom: 12px; color: var(--SmartThemeBodyColor);">
|
||
<i class="fa-solid fa-cloud" aria-hidden="true"></i>
|
||
<span data-i18n-key="template.settingsModal.advanced.externalApi.title">External API
|
||
Configuration</span>
|
||
</h5>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-external-base-url"
|
||
data-i18n-key="template.settingsModal.advanced.externalApi.baseUrl">API Base URL:</label>
|
||
<input type="text" id="rpg-external-base-url" class="rpg-input"
|
||
placeholder="https://api.openai.com/v1" style="width: 100%;" />
|
||
<small data-i18n-key="template.settingsModal.advanced.externalApi.baseUrlNote">OpenAI-compatible
|
||
endpoint (e.g., OpenAI, OpenRouter, local LLM server)</small>
|
||
</div>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-external-api-key"
|
||
data-i18n-key="template.settingsModal.advanced.externalApi.apiKey">API Key:</label>
|
||
<div style="display: flex; gap: 8px; width: 100%;">
|
||
<input type="password" id="rpg-external-api-key" class="rpg-input" placeholder="sk-..."
|
||
style="flex: 1;" />
|
||
<button id="rpg-toggle-api-key-visibility" class="menu_button" type="button"
|
||
title="Show/Hide API Key" style="padding: 4px 8px;">
|
||
<i class="fa-solid fa-eye"></i>
|
||
</button>
|
||
</div>
|
||
<small data-i18n-key="template.settingsModal.advanced.externalApi.apiKeyNote">Your API key for
|
||
the external service</small>
|
||
</div>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-external-model"
|
||
data-i18n-key="template.settingsModal.advanced.externalApi.model">Model:</label>
|
||
<input type="text" id="rpg-external-model" class="rpg-input" placeholder="gpt-4o-mini"
|
||
style="width: 100%;" />
|
||
<small data-i18n-key="template.settingsModal.advanced.externalApi.modelNote">Model identifier
|
||
(e.g., gpt-4o-mini, claude-3-haiku, mistral-7b)</small>
|
||
</div>
|
||
|
||
<div class="rpg-setting-row" style="display: flex; gap: 16px;">
|
||
<div style="flex: 1;">
|
||
<label for="rpg-external-max-tokens"
|
||
data-i18n-key="template.settingsModal.advanced.externalApi.maxTokens">Max
|
||
Tokens:</label>
|
||
<input type="number" id="rpg-external-max-tokens" class="rpg-input" min="256" max="16384"
|
||
value="8192" style="width: 100%;" />
|
||
</div>
|
||
<div style="flex: 1;">
|
||
<label for="rpg-external-temperature"
|
||
data-i18n-key="template.settingsModal.advanced.externalApi.temperature">Temperature:</label>
|
||
<input type="number" id="rpg-external-temperature" class="rpg-input" min="0" max="2"
|
||
step="0.1" value="0.7" style="width: 100%;" />
|
||
</div>
|
||
</div>
|
||
|
||
<div style="margin-top: 12px;">
|
||
<button id="rpg-test-external-api" class="menu_button" type="button" style="width: 100%; display: flex; align-items: center; gap: 8px;">
|
||
<i class="fa-solid fa-plug"></i>
|
||
<span data-i18n-key="template.settingsModal.advanced.externalApi.testConnection">Test
|
||
Connection</span>
|
||
</button>
|
||
<div id="rpg-external-api-test-result"
|
||
style="margin-top: 8px; padding: 8px; border-radius: 4px; display: none;"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="rpg-separate-mode-settings">
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-update-depth"
|
||
data-i18n-key="template.settingsModal.advanced.contextMessages">Context Messages:</label>
|
||
<input type="number" id="rpg-update-depth" min="1" max="20" value="4" class="rpg-input" />
|
||
<small data-i18n-key="template.settingsModal.advanced.contextMessagesNote">Number of recent messages
|
||
to include (Separate mode only)</small>
|
||
</div>
|
||
</div>
|
||
|
||
<label class="checkbox_label" id="rpg-auto-update-container" style="margin-top: 16px;">
|
||
<input type="checkbox" id="rpg-toggle-auto-update" />
|
||
<span data-i18n-key="template.settingsModal.display.toggleAutoUpdate">Auto-update after
|
||
messages</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.display.toggleAutoUpdateNote">
|
||
Automatically refresh RPG info after each message.
|
||
</small>
|
||
|
||
<label class="checkbox_label" style="margin-top: 16px;">
|
||
<input type="checkbox" id="rpg-save-tracker-history" />
|
||
<span data-i18n-key="template.settingsModal.advanced.saveTrackerHistory">Save Tracker History in
|
||
Chat</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.advanced.saveTrackerHistoryNote">
|
||
When enabled, tracker data is saved in chat history for each message. In Together mode, trackers
|
||
appear in <trackers> XML tags (hidden from display). In Separate mode, tracker data is stored
|
||
in message metadata. When disabled, only the most recent trackers are kept.
|
||
</small>
|
||
|
||
<div class="rpg-setting-row">
|
||
<label for="rpg-encounter-history-depth" data-i18n-key="template.settingsModal.advanced.encounterHistoryDepth">Chat History Depth For Encounters:</label>
|
||
<input type="number" id="rpg-encounter-history-depth" min="1" max="20" value="8"
|
||
class="rpg-input" />
|
||
<small data-i18n-key="template.settingsModal.advanced.encounterHistoryDepthNote">Number of recent messages to include in combat initialization.</small>
|
||
</div>
|
||
|
||
<label class="checkbox_label">
|
||
<input type="checkbox" id="rpg-toggle-autosave-logs" />
|
||
<span data-i18n-key="template.settingsModal.advanced.autoSaveCombatLogs">Auto-save Combat Logs</span>
|
||
</label>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.advanced.autoSaveCombatLogsNote">
|
||
Save detailed combat logs to file for future reference and analysis.
|
||
</small>
|
||
|
||
<div class="rpg-setting-row" style="margin-top: 16px;">
|
||
<label for="rpg-skip-guided-mode"
|
||
data-i18n-key="template.settingsModal.advanced.skipInjections">Skip Injections during Guided
|
||
Generations:</label>
|
||
<select id="rpg-skip-guided-mode" class="rpg-select">
|
||
<option value="none" data-i18n-key="template.settingsModal.advanced.skipInjectionsOptions.none">
|
||
Never skip</option>
|
||
<option value="impersonation"
|
||
data-i18n-key="template.settingsModal.advanced.skipInjectionsOptions.impersonation">Only on
|
||
impersonation requests</option>
|
||
<option value="guided"
|
||
data-i18n-key="template.settingsModal.advanced.skipInjectionsOptions.guided">Always for
|
||
guided or quiet prompts</option>
|
||
</select>
|
||
</div>
|
||
<small style="display: block; margin-left: 24px; margin-top: -8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.advanced.skipInjectionsNote">
|
||
When set, the extension will not inject tracker prompts, examples, or HTML instructions according to
|
||
the selected mode when a guided generation (via `instruct` or `quiet_prompt`) is detected. Useful
|
||
when using GuidedGenerations or similar extensions.
|
||
</small>
|
||
|
||
<!-- Customize Prompts Button -->
|
||
<div style="margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--rpg-border);">
|
||
<button id="rpg-open-prompts-editor" class="rpg-btn-customize-prompts">
|
||
<i class="fa-solid fa-file-lines" aria-hidden="true"></i> <span>Customize Prompts</span>
|
||
</button>
|
||
<small style="display: block; margin-top: 8px; color: #888; font-size: 11px;">
|
||
Edit all AI prompts used for generation, plot progression, and combat encounters.
|
||
</small>
|
||
</div>
|
||
|
||
<!-- Reset FAB Positions Button -->
|
||
<div style="margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--rpg-border);">
|
||
<button id="rpg-reset-fab-positions" class="rpg-btn-reset-fab">
|
||
<i class="fa-solid fa-arrows-rotate" aria-hidden="true"></i> <span
|
||
data-i18n-key="template.settingsModal.advanced.resetFabPositions">Reset Button
|
||
Positions</span>
|
||
</button>
|
||
<small style="display: block; margin-top: 8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.advanced.resetFabPositionsNote">
|
||
Resets all floating action buttons (toggle, refresh) to default top-left positions.
|
||
Useful if buttons are off-screen.
|
||
</small>
|
||
</div>
|
||
|
||
<!-- Clear Cache Button -->
|
||
<div style="margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--rpg-border);">
|
||
<button id="rpg-clear-cache" class="rpg-btn-clear-cache">
|
||
<i class="fa-solid fa-trash" aria-hidden="true"></i> <span
|
||
data-i18n-key="template.settingsModal.advanced.clearCache">Clear Extension Cache</span>
|
||
</button>
|
||
<small style="display: block; margin-top: 8px; color: #888; font-size: 11px;"
|
||
data-i18n-key="template.settingsModal.advanced.clearCacheNote">
|
||
Clears all cached data including tracker history and temporary files.
|
||
</small>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Dice Roll Modal -->
|
||
<div id="rpg-dice-popup" class="rpg-dice-popup" role="dialog" aria-modal="true" aria-labelledby="rpg-dice-title">
|
||
<div class="rpg-dice-popup-content">
|
||
<header class="rpg-dice-popup-header">
|
||
<h3 id="rpg-dice-title">
|
||
<i class="fa-solid fa-dice-d20" aria-hidden="true"></i>
|
||
<span>Roll Dice</span>
|
||
</h3>
|
||
<button id="rpg-dice-popup-close" class="rpg-btn-icon" type="button" aria-label="Close dialog">
|
||
<i class="fa-solid fa-times" aria-hidden="true"></i>
|
||
</button>
|
||
</header>
|
||
|
||
<div class="rpg-dice-popup-body">
|
||
<div class="rpg-dice-selector-container">
|
||
<div class="rpg-dice-selector">
|
||
<div class="rpg-dice-input-group">
|
||
<label for="rpg-dice-count">Number of Dice:</label>
|
||
<input type="number" id="rpg-dice-count" name="dice-count" min="1" max="20" value="1"
|
||
class="rpg-input" />
|
||
</div>
|
||
<div class="rpg-dice-input-group">
|
||
<label for="rpg-dice-sides">Dice Type:</label>
|
||
<select id="rpg-dice-sides" name="dice-sides" class="rpg-select">
|
||
<option value="4">d4</option>
|
||
<option value="6">d6</option>
|
||
<option value="8">d8</option>
|
||
<option value="10">d10</option>
|
||
<option value="12">d12</option>
|
||
<option value="20" selected>d20</option>
|
||
<option value="100">d100</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<button id="rpg-dice-roll-btn" class="rpg-btn-primary" type="button">
|
||
<i class="fa-solid fa-dice" aria-hidden="true"></i>
|
||
<span>Roll Dice</span>
|
||
</button>
|
||
</div>
|
||
|
||
<div id="rpg-dice-animation" class="rpg-dice-animation" hidden aria-live="polite" aria-busy="true">
|
||
<div class="rpg-dice-rolling">
|
||
<i class="fa-solid fa-dice-d20 fa-spin" aria-hidden="true"></i>
|
||
</div>
|
||
<div class="rpg-dice-rolling-text">Rolling...</div>
|
||
</div>
|
||
|
||
<div id="rpg-dice-result" class="rpg-dice-result" hidden aria-live="polite">
|
||
<div class="rpg-dice-result-label">Result:</div>
|
||
<output id="rpg-dice-result-value" class="rpg-dice-result-value"
|
||
for="rpg-dice-count rpg-dice-sides">0</output>
|
||
<div id="rpg-dice-result-details" class="rpg-dice-result-details" role="status"></div>
|
||
<button id="rpg-dice-save-btn" class="rpg-btn-primary rpg-dice-save-btn" type="button">
|
||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||
<span>Save Roll</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Tracker Editor Modal -->
|
||
<div id="rpg-tracker-editor-popup" class="rpg-settings-popup" role="dialog" aria-modal="true"
|
||
aria-labelledby="rpg-editor-title" style="display: none;">
|
||
<div class="rpg-settings-popup-content">
|
||
<header class="rpg-settings-popup-header">
|
||
<h3 id="rpg-editor-title">
|
||
<i class="fa-solid fa-sliders" aria-hidden="true"></i>
|
||
<span data-i18n-key="template.trackerEditorModal.title">Edit Trackers</span>
|
||
</h3>
|
||
<button id="rpg-close-tracker-editor" class="rpg-popup-close" type="button"
|
||
aria-label="Close tracker editor">×</button>
|
||
</header>
|
||
|
||
<!-- Tabs -->
|
||
<div class="rpg-editor-tabs">
|
||
<button class="rpg-editor-tab active" data-tab="userStats">
|
||
<i class="fa-solid fa-heart-pulse"></i> <span
|
||
data-i18n-key="template.trackerEditorModal.tabs.userStats">User Stats</span>
|
||
</button>
|
||
<button class="rpg-editor-tab" data-tab="infoBox">
|
||
<i class="fa-solid fa-info-circle"></i> <span
|
||
data-i18n-key="template.trackerEditorModal.tabs.infoBox">Info Box</span>
|
||
</button>
|
||
<button class="rpg-editor-tab" data-tab="presentCharacters">
|
||
<i class="fa-solid fa-users"></i> <span
|
||
data-i18n-key="template.trackerEditorModal.tabs.presentCharacters">Present Characters</span>
|
||
</button>
|
||
</div>
|
||
|
||
<div class="rpg-settings-popup-body">
|
||
<!-- Tab contents will be rendered by JavaScript -->
|
||
<div id="rpg-editor-tab-userStats" class="rpg-editor-tab-content"></div>
|
||
<div id="rpg-editor-tab-infoBox" class="rpg-editor-tab-content" style="display: none;"></div>
|
||
<div id="rpg-editor-tab-presentCharacters" class="rpg-editor-tab-content" style="display: none;"></div>
|
||
</div>
|
||
|
||
<footer class="rpg-settings-popup-footer">
|
||
<div class="rpg-footer-left">
|
||
<button id="rpg-editor-reset" class="rpg-btn-secondary" type="button">
|
||
<i class="fa-solid fa-rotate-left"></i> <span
|
||
data-i18n-key="template.trackerEditorModal.buttons.reset">Reset to Defaults</span>
|
||
</button>
|
||
<button id="rpg-editor-export" class="rpg-btn-secondary" type="button">
|
||
<i class="fa-solid fa-file-export"></i> <span
|
||
data-i18n-key="template.trackerEditorModal.buttons.export">Export Preset</span>
|
||
</button>
|
||
<button id="rpg-editor-import" class="rpg-btn-secondary" type="button">
|
||
<i class="fa-solid fa-file-import"></i> <span
|
||
data-i18n-key="template.trackerEditorModal.buttons.import">Import Preset</span>
|
||
</button>
|
||
</div>
|
||
<div class="rpg-footer-right">
|
||
<button id="rpg-editor-cancel" class="rpg-btn-secondary" type="button"
|
||
data-i18n-key="template.trackerEditorModal.buttons.cancel">Cancel</button>
|
||
<button id="rpg-editor-save" class="rpg-btn-primary" type="button">
|
||
<i class="fa-solid fa-save"></i> <span data-i18n-key="template.trackerEditorModal.buttons.save">Save
|
||
& Apply</span>
|
||
</button>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
<!-- Prompts Editor Modal -->
|
||
<div id="rpg-prompts-editor-popup" class="rpg-settings-popup" role="dialog" aria-modal="true"
|
||
aria-labelledby="rpg-prompts-editor-title" style="display: none;">
|
||
<div class="rpg-settings-popup-content">
|
||
<header class="rpg-settings-popup-header">
|
||
<h3 id="rpg-prompts-editor-title">
|
||
<i class="fa-solid fa-file-lines" aria-hidden="true"></i>
|
||
<span>Customize Prompts</span>
|
||
</h3>
|
||
<button id="rpg-close-prompts-editor" class="rpg-popup-close" type="button"
|
||
aria-label="Close prompts editor">×</button>
|
||
</header>
|
||
|
||
<div class="rpg-settings-popup-body">
|
||
<small class="notes" style="display: block; margin-bottom: 16px;">
|
||
Customize the AI prompts used throughout the extension. Leave fields empty to use defaults.
|
||
</small>
|
||
|
||
<!-- HTML Prompt -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-html" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-code"></i> HTML Prompt
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Injected when "Enable Immersive HTML" is enabled. Affects all generation modes.
|
||
</small>
|
||
<textarea id="rpg-prompt-html" class="rpg-prompt-textarea" rows="4"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="html" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Dialogue Coloring Prompt -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-dialogue-coloring" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-palette"></i> Dialogue Coloring Prompt
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Injected when "Enable Dialogue Coloring" is enabled. Affects all generation modes.
|
||
</small>
|
||
<textarea id="rpg-prompt-dialogue-coloring" class="rpg-prompt-textarea" rows="4"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="dialogue-coloring" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Spotify Music Prompt -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-spotify" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-brands fa-spotify"></i> Spotify Music Prompt
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Injected when "Enable Spotify Music" is enabled. Asks AI to suggest appropriate music for the scene.
|
||
</small>
|
||
<textarea id="rpg-prompt-spotify" class="rpg-prompt-textarea" rows="4"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="spotify" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Narrator Mode Prompt -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-narrator" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-book-open"></i> Narrator Mode Prompt
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Injected when "Narrator Mode" is enabled. Instructs AI to infer characters from context.
|
||
</small>
|
||
<textarea id="rpg-prompt-narrator" class="rpg-prompt-textarea" rows="3"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="narrator" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Random Plot Progression Prompt -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-plot-random" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-dice"></i> Random Plot Progression Prompt
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Injected when the "Randomized Plot" button is clicked. Introduces random elements to the story.
|
||
</small>
|
||
<textarea id="rpg-prompt-plot-random" class="rpg-prompt-textarea" rows="6"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="plotRandom" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Natural Plot Progression Prompt -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-plot-natural" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-forward"></i> Natural Plot Progression Prompt
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Injected when the "Natural Plot" button is clicked. Progresses the story naturally.
|
||
</small>
|
||
<textarea id="rpg-prompt-plot-natural" class="rpg-prompt-textarea" rows="4"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="plotNatural" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Avatar Generation Instruction -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-avatar" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-user-circle"></i> Avatar Generation Instruction
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Instructions for LLM when generating avatar image prompts. Used by Auto-generate Missing Avatars feature.
|
||
</small>
|
||
<textarea id="rpg-prompt-avatar" class="rpg-prompt-textarea" rows="3"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="avatar" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Tracker Instructions -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-tracker-instructions" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-list-check"></i> Tracker Instructions
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Instruction portion only (format specification is hardcoded). {userName} will be replaced with the user's name.
|
||
</small>
|
||
<textarea id="rpg-prompt-tracker-instructions" class="rpg-prompt-textarea" rows="4"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="trackerInstructions" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Tracker Continuation Instruction -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-tracker-continuation" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-arrow-right"></i> Tracker Continuation Instruction
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Instructions added after tracker format specifications, telling the AI how to continue the narrative.
|
||
</small>
|
||
<textarea id="rpg-prompt-tracker-continuation" class="rpg-prompt-textarea" rows="4"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="trackerContinuation" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Combat Narrative Style Instruction -->
|
||
<div class="rpg-prompt-editor-section">
|
||
<label for="rpg-prompt-combat-narrative" style="display: block; margin-bottom: 8px; font-weight: 600;">
|
||
<i class="fa-solid fa-fire"></i> Combat Narrative Style Instruction
|
||
</label>
|
||
<small style="display: block; margin-bottom: 8px; color: #888; font-size: 11px;">
|
||
Writing style instructions for combat encounters. Includes prose quality guidelines and anti-repetition rules. {userName} will be replaced with the user's name.
|
||
</small>
|
||
<textarea id="rpg-prompt-combat-narrative" class="rpg-prompt-textarea" rows="6"></textarea>
|
||
<button class="menu_button rpg-restore-prompt-btn" data-prompt="combatNarrative" style="margin-top: 8px;">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore Default
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<footer class="rpg-settings-popup-footer">
|
||
<button id="rpg-prompts-restore-all" class="rpg-btn-secondary" type="button">
|
||
<i class="fa-solid fa-rotate-left"></i> Restore All To Default
|
||
</button>
|
||
<div class="rpg-footer-right">
|
||
<button id="rpg-prompts-cancel" class="rpg-btn-secondary" type="button">Cancel</button>
|
||
<button id="rpg-prompts-save" class="rpg-btn-primary" type="button">
|
||
<i class="fa-solid fa-save"></i> Save Changes
|
||
</button>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Welcome Modal for v3.0 -->
|
||
<div id="rpg-welcome-modal" class="rpg-settings-popup" role="dialog" aria-modal="true"
|
||
aria-labelledby="rpg-welcome-title" style="display: none;">
|
||
<div class="rpg-settings-popup-content" style="max-width: 600px;">
|
||
<header class="rpg-settings-popup-header">
|
||
<h3 id="rpg-welcome-title">
|
||
<i class="fa-solid fa-stars"></i>
|
||
Welcome to RPG Companion v.3.0.0!
|
||
</h3>
|
||
<button id="rpg-welcome-close" class="rpg-popup-close" type="button"
|
||
aria-label="Close Welcome">
|
||
<i class="fa-solid fa-times"></i>
|
||
</button>
|
||
</header>
|
||
<div class="rpg-settings-popup-body" style="max-height: 500px; overflow-y: auto; padding: 20px;">
|
||
<div style="background: rgba(255, 165, 0, 0.1); border-left: 3px solid orange; padding: 12px; margin-bottom: 20px;">
|
||
<strong style="color: orange;">⚠️ Important:</strong> Due to a change in the tracker format, we recommend that you use <strong>Clear Extension Cache</strong> in the Settings before you start using this version!
|
||
</div>
|
||
|
||
<h4 style="margin-top: 20px; margin-bottom: 10px;"><strong>What's new?</strong></h4>
|
||
<ul style="line-height: 1.6; margin-left: 20px;">
|
||
<li>Switched to the JSON format for the trackers.</li>
|
||
<li>You can now lock/unlock trackers that you don't want the model to change between generations.</li>
|
||
<li>Removed features that were half-baked or didn't work.</li>
|
||
<li>Organized Settings and Edit Trackers windows.</li>
|
||
<li>All features of the extension are now accessible from the main panel view.</li>
|
||
<li>Added Colored Dialogues option that makes the model color dialogue lines differently depending on the speaker.</li>
|
||
<li>Introduced Dynamic Weather Effects that add visual effects to your SillyTavern window depending on the current weather from the trackers.</li>
|
||
<li>All prompts used for the extension's features are now editable.</li>
|
||
<li>Made the user's level optional in the Edit Trackers.</li>
|
||
</ul>
|
||
|
||
<h4 style="margin-top: 20px; margin-bottom: 10px;"><strong>Bug Fixes:</strong></h4>
|
||
<ul style="line-height: 1.6; margin-left: 20px;">
|
||
<li>Fixed tracker logic in Together generation mode.</li>
|
||
<li>Fixed various UI bugs (too many to count).</li>
|
||
<li>Upgraded mobile view.</li>
|
||
<li>Spotify Music widget is more visible now, plus it works in the mobile view.</li>
|
||
<li>Auto-update after messages option is now available for External API generation mode.</li>
|
||
<li>Fixed the display of the thoughts window and its mobile display.</li>
|
||
<li>Fixed smaller bugs.</li>
|
||
</ul>
|
||
|
||
<h4 style="margin-top: 20px; margin-bottom: 10px;"><strong data-i18n="settings.recommendedModels.title">Recommended Models:</strong></h4>
|
||
<p style="margin-left: 20px; line-height: 1.6;" data-i18n="settings.recommendedModels.description">
|
||
For the extension to work properly, **it is not recommended to use any models below 20B, especially if they're old.** It works best with the SOTA models such as Deepseek, Claude, GPT, or Gemini.
|
||
</p>
|
||
|
||
<h4 style="margin-top: 20px; margin-bottom: 10px;"><strong>Special thanks to all the other contributors for this project:</strong></h4>
|
||
<p style="margin-left: 20px; line-height: 1.6;">
|
||
Paperboygold, Munimunigamer, Subarashimo, Lilminzyu, Claude (???), IDeathByte, Chungchandev, Joenunezb, and Amauragis.
|
||
</p>
|
||
|
||
<div style="margin-top: 20px; text-align: center;">
|
||
<p style="margin-bottom: 10px;">Join our Discord server to share your feedback, report bugs, or request new features!</p>
|
||
<a href="https://discord.com/invite/KdAkTg94ME" target="_blank" class="menu_button" style="display: inline-block; margin: 5px;">
|
||
<i class="fa-brands fa-discord"></i> Discord Server
|
||
</a>
|
||
</div>
|
||
|
||
<div style="margin-top: 20px; text-align: center;">
|
||
<p style="margin-bottom: 10px;">And don't forget to consider supporting me if you enjoy my work. Thank you!</p>
|
||
<a href="https://ko-fi.com/marinara_spaghetti" target="_blank" class="menu_button" style="display: inline-block; margin: 5px;">
|
||
<i class="fa-solid fa-heart"></i> Support on Ko-fi
|
||
</a>
|
||
</div>
|
||
|
||
<div style="margin-top: 30px; text-align: center; font-size: 18px; font-style: italic;">
|
||
<strong>Happy gooning!</strong>
|
||
</div>
|
||
|
||
<div style="margin-top: 10px; text-align: right; color: #888; font-style: italic;">
|
||
~ Marinara
|
||
</div>
|
||
</div>
|
||
<footer class="rpg-settings-popup-footer">
|
||
<button id="rpg-welcome-got-it" class="rpg-btn-primary" type="button" style="width: 100%;">
|
||
<i class="fa-solid fa-check"></i> Got it!
|
||
</button>
|
||
</footer>
|
||
</div>
|
||
</div>
|