fix(frontend): legg til dispatchEvent for input i suggest()

This commit is contained in:
Chris Christiansen 2026-06-19 16:49:23 +00:00
parent 5333d31d39
commit 240caec499
2 changed files with 21 additions and 20 deletions

View File

@ -383,11 +383,12 @@ function handleKey(e) {
} }
} }
function suggest(btn) { function suggest(btn) {
input.value = btn.textContent.trim() input.value = btn.textContent.trim()
autoResize(input) input.dispatchEvent(new Event('input', { bubbles: true }))
sendBtn.disabled = false autoResize(input)
sendMessage() sendBtn.disabled = false
} sendMessage()
}
// ── Send ────────────────────────────────────────────────────────────────────── // ── Send ──────────────────────────────────────────────────────────────────────
let isSending = false let isSending = false

View File

@ -595,13 +595,13 @@
</div> </div>
<div class="docsbrowser-toolbar"> <div class="docsbrowser-toolbar">
<select id="docsbrowser-select" class="docsbrowser-select" onchange="docsBrowserSelect(this.value)"> <select id="docsbrowser-select" class="docsbrowser-select" onchange="docsBrowserSelect(this.value)">
<option value="docs/MASTERPLAN.md">🏛️ MASTERPLAN</option> <option value="MASTERPLAN.md">🏛️ MASTERPLAN</option>
<option value="docs/ROADMAP.md">🗺️ ROADMAP</option> <option value="ROADMAP.md">🗺️ ROADMAP</option>
<option value="docs/HANDOFF.md">🤝 HANDOFF</option> <option value="HANDOFF.md">🤝 HANDOFF</option>
<option value="docs/AGENT_RULEBOOK.md">📏 AGENT RULEBOOK</option> <option value="AGENT_RULEBOOK.md">📏 AGENT RULEBOOK</option>
<option value="docs/LEARNINGS.md">📚 LEARNINGS</option> <option value="LEARNINGS.md">📚 LEARNINGS</option>
<option value="docs/gemma/world.md">🌍 EMMA world.md</option> <option value="gemma/world.md">🌍 EMMA world.md</option>
<option value="docs/ARCHITECTURE.md">🏗️ ARCHITECTURE</option> <option value="ARCHITECTURE.md">🏗️ ARCHITECTURE</option>
<option value="AGENTS.md">🤖 AGENTS</option> <option value="AGENTS.md">🤖 AGENTS</option>
</select> </select>
<button class="docsbrowser-refresh" onclick="docsBrowserLoad()">Last inn →</button> <button class="docsbrowser-refresh" onclick="docsBrowserLoad()">Last inn →</button>
@ -627,13 +627,13 @@ const GH_BLOB = 'https://github.com/vauco-saas/OSVauco/blob/main/'
marked.setOptions({ gfm: true, breaks: true }) marked.setOptions({ gfm: true, breaks: true })
const MD_DOCS = [ const MD_DOCS = [
{ icon:'🏛️', name:'MASTERPLAN', path:'docs/MASTERPLAN.md', desc:'Autoritativ sannhet — vinner alltid ved konflikt', badge:'autoritativ', badgeCls:'auth' }, { icon:'🏛️', name:'MASTERPLAN', path:'MASTERPLAN.md', desc:'Autoritativ sannhet — vinner alltid ved konflikt', badge:'autoritativ', badgeCls:'auth' },
{ icon:'🗺️', name:'ROADMAP', path:'docs/ROADMAP.md', desc:'Hva som skjer akkurat nå — prioriteringer per sprint', badge:'aktiv', badgeCls:'' }, { icon:'🗺️', name:'ROADMAP', path:'ROADMAP.md', desc:'Hva som skjer akkurat nå — prioriteringer per sprint', badge:'aktiv', badgeCls:'' },
{ icon:'🤝', name:'HANDOFF', path:'docs/HANDOFF.md', desc:'Siste sesjonsstatus — overskrives hver sesjon', badge:'sesjon', badgeCls:'' }, { icon:'🤝', name:'HANDOFF', path:'HANDOFF.md', desc:'Siste sesjonsstatus — overskrives hver sesjon', badge:'sesjon', badgeCls:'' },
{ icon:'📏', name:'AGENT RULEBOOK',path:'docs/AGENT_RULEBOOK.md', desc:'Låste regler for alle agenter — R-01 til R-08', badge:'låst', badgeCls:'auth' }, { icon:'📏', name:'AGENT RULEBOOK',path:'AGENT_RULEBOOK.md', desc:'Låste regler for alle agenter — R-01 til R-08', badge:'låst', badgeCls:'auth' },
{ icon:'📚', name:'LEARNINGS', path:'docs/LEARNINGS.md', desc:'Append-only lærdom fra alle sesjoner', badge:'append-only', badgeCls:'append' }, { icon:'📚', name:'LEARNINGS', path:'LEARNINGS.md', desc:'Append-only lærdom fra alle sesjoner', badge:'append-only', badgeCls:'append' },
{ icon:'🌍', name:'EMMA world.md', path:'docs/gemma/world.md', desc:'Emmas kontekstpakke — leses ved oppstart', badge:'emma', badgeCls:'' }, { icon:'🌍', name:'EMMA world.md', path:'gemma/world.md', desc:'Emmas kontekstpakke — leses ved oppstart', badge:'emma', badgeCls:'' },
{ icon:'🏗️', name:'ARCHITECTURE', path:'docs/ARCHITECTURE.md', desc:'Teknisk arkitektur — tjenester, flows, infra', badge:'tech', badgeCls:'' }, { icon:'🏗️', name:'ARCHITECTURE', path:'ARCHITECTURE.md', desc:'Teknisk arkitektur — tjenester, flows, infra', badge:'tech', badgeCls:'' },
{ icon:'🤖', name:'AGENTS', path:'AGENTS.md', desc:'Agent-oversikt — roller, ML-faser, state store', badge:'ml-visjon', badgeCls:'' }, { icon:'🤖', name:'AGENTS', path:'AGENTS.md', desc:'Agent-oversikt — roller, ML-faser, state store', badge:'ml-visjon', badgeCls:'' },
] ]
@ -1088,7 +1088,7 @@ const inp=document.getElementById('msg-input'),sbtn=document.getElementById('sen
inp.addEventListener('input',()=>sbtn.disabled=!inp.value.trim()) inp.addEventListener('input',()=>sbtn.disabled=!inp.value.trim())
function autoResize(el){ el.style.height='auto';el.style.height=Math.min(el.scrollHeight,160)+'px' } function autoResize(el){ el.style.height='auto';el.style.height=Math.min(el.scrollHeight,160)+'px' }
function handleKey(e){ if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();if(!sbtn.disabled)sendMessage()} } function handleKey(e){ if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();if(!sbtn.disabled)sendMessage()} }
function suggest(btn){ inp.value=btn.textContent.trim();autoResize(inp);sbtn.disabled=false;sendMessage() } function suggest(btn){ inp.value=btn.textContent.trim();inp.dispatchEvent(new Event('input', { bubbles: true }));autoResize(inp);sbtn.disabled=false;sendMessage() }
let busy=false let busy=false
async function sendMessage(){ async function sendMessage(){