feat(hermes): restore localStorage for model and voice settings

- Save selected voice to localStorage and restore on modal open
- Improve model selection restoration from localStorage
- Save settings panel open/close state
- Add console logging for settings changes
- Maintain user preferences across sessions
This commit is contained in:
Russell Ballestrini 2025-07-02 09:56:24 -04:00
parent de112973e6
commit 76e168cecf

View file

@ -772,9 +772,20 @@ async function openHermesModalNew() {
modelSelect.appendChild(option);
});
// Set current selected model if available
// Load saved model from localStorage or use current selection
const savedModel = localStorage.getItem('selectedModel');
const savedEndpoint = localStorage.getItem('selectedEndpoint');
const currentModel = getSelectedModel();
if (currentModel) {
if (savedModel && savedEndpoint) {
const savedOption = Array.from(modelSelect.options).find(opt =>
opt.textContent.includes(savedModel) && opt.textContent.includes(savedEndpoint)
);
if (savedOption) {
modelSelect.value = savedOption.value;
console.log("Restored saved model:", savedModel, "from endpoint:", savedEndpoint);
}
} else if (currentModel) {
const currentOption = Array.from(modelSelect.options).find(opt =>
opt.textContent.includes(currentModel)
);
@ -836,10 +847,19 @@ async function openHermesModalNew() {
const option = document.createElement("option");
option.value = voice;
option.textContent = voice.charAt(0).toUpperCase() + voice.slice(1);
if (index === 0) option.selected = true; // Set alloy as default
voiceSelect.appendChild(option);
});
console.log("Voices loaded:", voices.length, "voices");
// Load saved voice from localStorage or default to alloy
const savedVoice = localStorage.getItem('selectedVoice') || 'alloy';
voiceSelect.value = savedVoice;
console.log("Voices loaded:", voices.length, "voices, selected:", savedVoice);
// Save voice selection to localStorage when changed
voiceSelect.onchange = () => {
localStorage.setItem('selectedVoice', voiceSelect.value);
console.log("Voice changed to:", voiceSelect.value);
};
voiceSection.appendChild(voiceLabel);
voiceSection.appendChild(voiceSelect);
@ -919,12 +939,16 @@ async function openHermesModalNew() {
settingsPanel.appendChild(actionsSection);
settingsPanel.appendChild(fileInput);
// Toggle settings panel
let settingsOpen = false;
// Load and save settings panel state
let settingsOpen = localStorage.getItem('hermesSettingsOpen') === 'true';
settingsPanel.style.display = settingsOpen ? 'block' : 'none';
menuBtn.style.background = settingsOpen ? 'rgba(255,255,255,0.3)' : 'rgba(255,255,255,0.2)';
menuBtn.onclick = () => {
settingsOpen = !settingsOpen;
settingsPanel.style.display = settingsOpen ? 'block' : 'none';
menuBtn.style.background = settingsOpen ? 'rgba(255,255,255,0.3)' : 'rgba(255,255,255,0.2)';
localStorage.setItem('hermesSettingsOpen', settingsOpen.toString());
};
// Quick action buttons