Add model config presets and ignore agent artifacts

- Add model switcher component for chat input with progress display
- Enhance model config store with active preset/model retrieval
- Show agent progress as ghost text in chat input placeholder
- Add agent artifact patterns to .gitignore
This commit is contained in:
TerminallyLazy 2026-03-28 11:10:52 -04:00
parent 4cbb320587
commit a2547f12a1
7 changed files with 148 additions and 24 deletions

View file

@ -8,9 +8,10 @@
<body>
<div id="progress-bar-box" x-data>
<x-extension id="chat-input-progress-start"></x-extension>
<h4 id="progress-bar-h">
<span id="progress-bar-i">|></span><span id="progress-bar"></span>
</h4>
<!-- Hidden legacy progress-bar element (keeps JS updater happy, not displayed) -->
<span id="progress-bar" style="display:none;"></span>
<div id="progress-bar-right">
<h4 id="progress-bar-stop-speech" x-data x-cloak x-show="$store.speech.isSpeaking">
<span id="stop-speech" @click="$store.speech.stop()" style="cursor: pointer" title="Stop Speech" aria-label="Stop Speech">
@ -38,12 +39,10 @@
<style>
#progress-bar-box { background-color: var(--color-panel); padding: var(--spacing-sm) var(--spacing-md) var(--spacing-xs) var(--spacing-md); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; z-index: 1001; gap: var(--spacing-sm); }
#progress-bar-box { background-color: var(--color-panel); padding: var(--spacing-xs) var(--spacing-md) 0 var(--spacing-md); display: flex; flex-wrap: nowrap; justify-content: flex-start; align-items: center; z-index: 1001; gap: var(--spacing-sm); min-height: 0; }
#progress-bar-box > x-extension { display: contents; }
#progress-bar-box h4 { margin: 0 1.2em 0 0; }
#progress-bar-h { color: var(--color-primary); display: flex; align-items: left; justify-content: flex-start; height: 1.2em; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-weight: normal; }
#progress-bar-i { font-weight: bold; padding-right: 0.5em; color: var(--color-secondary); }
#progress-bar-right { display: flex; align-items: center; gap: var(--spacing-sm); flex-shrink: 0; }
#progress-bar-box h4 { margin: 0; }
#progress-bar-right { display: flex; align-items: center; gap: var(--spacing-sm); flex-shrink: 0; margin-left: auto; margin-right: calc(5.5rem + var(--spacing-xs)); }
#progress-bar-right > x-extension { display: contents; }
#chat-nav-buttons { display: flex; align-items: center; gap: 2px; opacity: 0.85; }
#chat-nav-buttons .btn-icon-action { padding: var(--spacing-xs); }
@ -52,8 +51,6 @@
}
.shiny-text { background: linear-gradient(to right, var(--color-primary-dark) 20%, var(--color-text) 40%, var(--color-text) 60%, var(--color-primary-dark) 60%); background-size: 200% auto; color: transparent; -webkit-background-clip: text; background-clip: text; animation: shine 1s linear infinite; }
@keyframes shine { to { background-position: -200% center; } }
.light-mode #progress-bar-i { color: var(--color-border-dark); opacity: 0.5; }
</style>
</body>
</html>