From a347aefdff33daad66141d37a07afca02eeff358 Mon Sep 17 00:00:00 2001 From: Sam Rolfe Date: Sun, 30 Aug 2026 12:11:02 +1000 Subject: [PATCH] dsh: multiline textarea + Send below; collapsible Model & tools panel; tidy todo.txt --- dsh/templates/chat.html | 77 ++++++++++++++++++++++++++++++++--------- todo.txt | 10 +++--- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/dsh/templates/chat.html b/dsh/templates/chat.html index e3d5f35..efcdc6a 100644 --- a/dsh/templates/chat.html +++ b/dsh/templates/chat.html @@ -38,6 +38,28 @@ .modelrow label { font-size: 12px; color: #777; } + + .composer { display: flex; flex-direction: column; gap: 8px; padding: 8px 12px; } + #input { + width: 100%; min-height: 2.9em; padding: 9px 11px; box-sizing: border-box; + border: 1px solid #ddd; border-radius: 8px; + font: 15px/1.4 var(--font-family, sans-serif); resize: vertical; + } + .send-row { display: flex; justify-content: flex-end; } + #sendBtn { border: none; border-radius: 8px; padding: 9px 20px; cursor: pointer; background: var(--primary, #0075de); color: #fff; font-size: 14px; } + #toolsPanel { border-top: 1px solid var(--hairline, #e6e6e6); } + #toolsToggle { + width: 100%; text-align: left; background: none; border: none; cursor: pointer; + padding: 8px 12px; color: #666; font-size: 12px; display: flex; align-items: center; gap: 6px; + } + #toolsArrow { font-size: 11px; } + #toolsBody { padding: 0 12px 10px; } + #toolsBody.hidden { display: none; } + .tools-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 6px; } + .tools-row input[type=text], .tools-row input[type=file] { flex: 2 1 170px; border: 1px solid #ddd; border-radius: 8px; padding: 6px 10px; font-size: 13px; } + .tools-row button { flex: 0 0 auto; border: 1px solid #ddd; border-radius: 8px; padding: 6px 10px; cursor: pointer; background: #fff; } + .modelrow { display: flex; gap: 8px; align-items: center; } + .modelrow select { border: 1px solid #ddd; border-radius: 8px; padding: 5px 8px; font-size: 13px; } @media (max-width: 720px) { #menuBtn { display: inline-flex !important; } #sidebar { @@ -47,7 +69,9 @@ } #sidebar.open { transform: translateX(0); } .chat-col { flex: 1; min-width: 0; } - .composer input, .composer button, .modelrow select { flex: 1 1 100% !important; width: 100% !important; } + .tools-row { flex-direction: column; } + .tools-row input[type=text], .tools-row input[type=file], .tools-row button { flex: 1 1 100% !important; width: 100% !important; } + .send-row { justify-content: flex-end; } #input { font-size: 16px; } /* avoid iOS auto-zoom */ } @@ -71,24 +95,26 @@
-
- - -
- - - + +
-
- - - - - - - - +
+ +
+
+
+ + + + + + + + + +
+
@@ -232,6 +258,23 @@ logEl.scrollTop = logEl.scrollHeight; }); + // Ctrl/Cmd+Enter sends in the multiline box + input.addEventListener('keydown', (e) => { + if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) { e.preventDefault(); form.requestSubmit(); } + }); + + // collapsible model & tools panel (persisted) + const toolsBody = document.getElementById('toolsBody'); + const toolsArrow = document.getElementById('toolsArrow'); + const toolsToggle = document.getElementById('toolsToggle'); + function applyTools(open) { + if (open) { toolsBody.classList.remove('hidden'); toolsArrow.textContent = '▾'; } + else { toolsBody.classList.add('hidden'); toolsArrow.textContent = '▴'; } + localStorage.setItem('dshTools', open ? '1' : '0'); + } + applyTools(localStorage.getItem('dshTools') !== '0'); + toolsToggle.addEventListener('click', () => applyTools(toolsBody.classList.contains('hidden'))); + const imgIn = document.getElementById('imgIn'); window.__img = null; imgIn.addEventListener('change', () => { const f = imgIn.files[0]; if (!f) return; const r = new FileReader(); r.onload = () => { window.__img = r.result; imgIn.title = f.name + ' ✓'; }; r.readAsDataURL(f); }); diff --git a/todo.txt b/todo.txt index d6db85e..e6438ce 100644 --- a/todo.txt +++ b/todo.txt @@ -1,12 +1,12 @@ -(B) Add change-password page to portal +project:family-home-lab +agent:family_home_lab +x 2026-08-25 Add change-password page to portal +project:family-home-lab +agent:family_home_lab x 2026-08-25 DeepSeek Remember chats (persistent per-user history + Clear) +project:family-home-lab +agent:family_home_lab x 2026-08-25 dsh plugins Phase 1: web + doc summarise (test.md + example.com verified) +project:family-home-lab +agent:family_home_lab x 2026-08-25 dsh image INGEST + GENERATE done (OpenRouter gpt-5 vision + gpt-image-1); saved to workspace images/ +project:family-home-lab +agent:family_home_lab (C) BUY AMD 6600 GPU for docker in Nixos +project:family-home-lab +agent:family_home_lab x 2026-08-25 2026-08-25 Add extra links - .35 Docker, .13 Docker and Websites, make an option list +project:family-home-lab +agent:family_home_lab x 2026-08-26 2026-08-26 Admin Pi Dashboard view +project:family-home-lab +agent:family_home_lab -(B) Update obsidian websites and Docker containers notes +project:family-home-lab +agent:family_home_lab -x 2026-08-25 2026-08-25 Fonts and layout. Wrong font. Admin +project:family-home-lab +agent:fam uily_home_lab +x 2026-08-25 Update obsidian websites and Docker containers notes +project:family-home-lab +agent:family_home_lab +x 2026-08-25 2026-08-25 Fonts and layout. Wrong font. Admin +project:family-home-lab +agent:family_home_lab (B) Check apprise consumers still work after basic-auth: n8n + Go dashboard script on .13 need creds added to URL +project:family-home-lab +agent:family_home_lab x 2026-08-26 2026-08-26 Kitchen Owl: add AI feature (AI to kitchen/recipes) +project:family-home-lab +agent:family_home_lab (C) Fix abandoned websites: sams.home.lab, laravel, t3_react_app (Laravel+T3 part of Lora car-tracker site) +project:family-home-lab +agent:family_home_lab @@ -17,4 +17,6 @@ x 2026-08-25 Removed Heimdall + Homarr from console (redundant; user removing fr (C) AMD 6600 GPU -> .13: install NVIDIA-free AMD GPU in NixOS (for faster MuScriptor/BasicPitch/ML). NixOS driver config needed (amdgpu). +project:family-home-lab +agent:family_home_lab x 2026-08-25 dsh conversation sidebar: multi-session persistence + history UI (list/new/delete/switch, auto-named) +project:family-home-lab +agent:family_home_lab x 2026-08-26 2026-08-26 DS Harness - ensure no bash or local editing possible +project:family-home-lab +agent:family_home_lab -x 2026-08-26 2026-08-26 REmove Openweb ui - caddy, folder, docker +project:family-home-lab +agent:family_home_lab(A) Admin Pi Dashboard view +project:family-home-lab +agent:family_home_lab +x 2026-08-26 2026-08-26 Remove OpenWebUI - Caddy, folder, docker +project:family-home-lab +agent:family_home_lab +(B) Home dash: add a common 'Links' section with categories Media/Work/Family. Media: Spotify, Netflix. Work: mail.google.com, calendar.google.com, secure1.inmotionhosting.com/index/login, mxt.smsglobal.com/login/ +project:family-home-lab +agent:family_home_lab +(C) Sam admin dashboard panel: add router links — netcom router http://192.168.20.1:8079/login.html (may be in Caddy) and second router http://192.168.20.254/ +project:family-home-lab +agent:family_home_lab