dsh: multiline textarea + Send below; collapsible Model & tools panel; tidy todo.txt
This commit is contained in:
@@ -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 @@
|
||||
<div class="chat-col">
|
||||
<main id="log" class="log" aria-live="polite"></main>
|
||||
|
||||
<div class="modelrow" style="padding:6px 12px 2px;gap:8px">
|
||||
<label for="modelSel">Model:</label>
|
||||
<select id="modelSel"></select>
|
||||
</div>
|
||||
<form id="chat" class="composer" autocomplete="off">
|
||||
<input id="input" type="text" placeholder="Type your message…" autofocus />
|
||||
<button type="submit">Send</button>
|
||||
<input type="file" id="imgIn" accept="image/*" title="Attach an image" style="max-width:150px;font-size:12px">
|
||||
<textarea id="input" rows="2" placeholder="Type your message…" autofocus></textarea>
|
||||
<div class="send-row"><button type="submit" id="sendBtn">Send</button></div>
|
||||
</form>
|
||||
<div class="composer" style="display:flex;gap:8px;flex-wrap:wrap">
|
||||
<input id="urlInput" type="text" placeholder="Paste a URL to summarise…" style="flex:2;min-width:220px;border:1px solid #ddd;border-radius:8px;padding:6px 10px" />
|
||||
<button type="button" id="sumWeb" style="border:1px solid #ddd;border-radius:8px;padding:6px 10px;cursor:pointer">Summarise page</button>
|
||||
<input id="fileInput" type="text" placeholder="Workspace file (e.g. notes.md)…" style="flex:2;min-width:180px;border:1px solid #ddd;border-radius:8px;padding:6px 10px" />
|
||||
<button type="button" id="sumDocs" style="border:1px solid #ddd;border-radius:8px;padding:6px 10px;cursor:pointer">Summarise file</button>
|
||||
<input id="genInput" type="text" placeholder="Describe an image to generate…" style="flex:2;min-width:200px;border:1px solid #ddd;border-radius:8px;padding:6px 10px" />
|
||||
<button type="button" id="genImg" style="border:1px solid #ddd;border-radius:8px;padding:6px 10px;cursor:pointer">Generate image</button>
|
||||
<input type="file" id="vidIn" accept="video/*" title="Analyze a video / screen recording (GLM multimodal)" style="flex:1;min-width:150px;border:1px solid #ddd;border-radius:8px;padding:6px;">
|
||||
<button type="button" id="genVid" style="border:1px solid #ddd;border-radius:8px;padding:6px 10px;cursor:pointer">Analyze video</button>
|
||||
<div id="toolsPanel">
|
||||
<button type="button" id="toolsToggle"><span id="toolsArrow">▾</span> Model & tools</button>
|
||||
<div id="toolsBody">
|
||||
<div class="modelrow"><label for="modelSel">Model:</label><select id="modelSel"></select></div>
|
||||
<div class="tools-row">
|
||||
<input id="urlInput" type="text" placeholder="Paste a URL to summarise…">
|
||||
<button type="button" id="sumWeb">Summarise page</button>
|
||||
<input id="fileInput" type="text" placeholder="Workspace file (e.g. notes.md)…">
|
||||
<button type="button" id="sumDocs">Summarise file</button>
|
||||
<input id="genInput" type="text" placeholder="Describe an image to generate…">
|
||||
<button type="button" id="genImg">Generate image</button>
|
||||
<input type="file" id="imgIn" accept="image/*" title="Attach an image">
|
||||
<input type="file" id="vidIn" accept="video/*" title="Analyze a video / screen recording (GLM)">
|
||||
<button type="button" id="genVid">Analyze video</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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); });
|
||||
|
||||
|
||||
10
todo.txt
10
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
|
||||
|
||||
Reference in New Issue
Block a user