From 8009ad1eb3979946a58ddcc1c62755694f9c1705 Mon Sep 17 00:00:00 2001 From: aewing Date: Sun, 11 Jan 2026 02:38:28 +0000 Subject: [PATCH] recording working righ, but menu is not correct yet --- index.html | 83 ++------------------------------------------ logs/SESSION_LOG.txt | 74 --------------------------------------- 2 files changed, 3 insertions(+), 154 deletions(-) diff --git a/index.html b/index.html index 995c8a2..705ce2a 100644 --- a/index.html +++ b/index.html @@ -82,15 +82,9 @@
@@ -1627,99 +1621,32 @@ const panel = document.getElementById('notesAttachmentPreviewPanel'); const titleEl = document.getElementById('notesAttachmentPreviewTitle'); const contentEl = document.getElementById('notesAttachmentPreviewContent'); - const zoomInBtn = document.getElementById('notesAttachmentPreviewZoomIn'); - const zoomOutBtn = document.getElementById('notesAttachmentPreviewZoomOut'); - const zoomResetBtn = document.getElementById('notesAttachmentPreviewReset'); - const zoomLevel = document.getElementById('notesAttachmentPreviewZoomLevel'); - - // Reset zoom state - let currentZoom = 100; - let currentElement = null; - - function updateZoomUI() { - zoomLevel.textContent = `${currentZoom}%`; - zoomOutBtn.classList.toggle('hidden', currentZoom <= 100); - zoomResetBtn.classList.toggle('hidden', currentZoom === 100); - } - contentEl.innerHTML = ''; const match = findFirstAttachmentByKind(note._attachments || [], kind); if (!match) { titleEl.textContent = 'Attachment Preview'; contentEl.textContent = 'No matching attachment.'; - zoomInBtn.classList.add('hidden'); - zoomOutBtn.classList.add('hidden'); - zoomResetBtn.classList.add('hidden'); - zoomLevel.textContent = ''; panel.classList.remove('hidden'); return; } const { att, name: fileName, url } = match; titleEl.textContent = `Preview: ${kind}`; let node = null; - if (kind === 'image') { node = document.createElement('img'); node.src = url; - node.className = 'max-h-80 rounded border border-gray-200 cursor-zoom-in transition-transform origin-center'; + node.className = 'max-h-80 rounded border border-gray-200'; node.alt = fileName || 'image'; - node.style.transform = 'scale(1)'; - currentElement = node; - - // Add zoom handlers for images - zoomInBtn.classList.remove('hidden'); - zoomOutBtn.classList.add('hidden'); - zoomResetBtn.classList.add('hidden'); - updateZoomUI(); - - const applyZoom = () => { - const scale = currentZoom / 100; - node.style.transform = `scale(${scale})`; - node.style.cursor = currentZoom > 100 ? 'zoom-out' : 'zoom-in'; - updateZoomUI(); - }; - - zoomInBtn.onclick = () => { - currentZoom = Math.min(currentZoom + 25, 400); - applyZoom(); - }; - - zoomOutBtn.onclick = () => { - currentZoom = Math.max(currentZoom - 25, 100); - applyZoom(); - }; - - zoomResetBtn.onclick = () => { - currentZoom = 100; - applyZoom(); - }; - - node.addEventListener('click', () => { - if (currentZoom > 100) { - currentZoom = 100; - } else { - currentZoom = 150; - } - applyZoom(); - }); } else if (kind === 'video') { node = document.createElement('video'); node.src = url; node.controls = true; node.className = 'w-full max-h-80 rounded border border-gray-200 bg-black'; - zoomInBtn.classList.add('hidden'); - zoomOutBtn.classList.add('hidden'); - zoomResetBtn.classList.add('hidden'); - zoomLevel.textContent = ''; } else if (kind === 'audio') { node = document.createElement('audio'); node.src = url; node.controls = true; node.className = 'w-full'; - zoomInBtn.classList.add('hidden'); - zoomOutBtn.classList.add('hidden'); - zoomResetBtn.classList.add('hidden'); - zoomLevel.textContent = ''; } else { // Try inline preview for PDFs, otherwise provide a link const isPdf = (fileName || '').toLowerCase().endsWith('.pdf'); @@ -1737,10 +1664,6 @@ link.textContent = 'Open attachment'; node = link; } - zoomInBtn.classList.add('hidden'); - zoomOutBtn.classList.add('hidden'); - zoomResetBtn.classList.add('hidden'); - zoomLevel.textContent = ''; } contentEl.appendChild(node); panel.classList.remove('hidden'); diff --git a/logs/SESSION_LOG.txt b/logs/SESSION_LOG.txt index d949bba..2f59380 100644 --- a/logs/SESSION_LOG.txt +++ b/logs/SESSION_LOG.txt @@ -3,80 +3,6 @@ PRISM NOTES - SESSION LOG Project history, decisions, and architectural milestones ================================================================================ -[2026-01-10 22:30] MONICA SESSION: Menu-Driven Attachment System Complete -- Changes Applied: - * Replaced single file input with paper clip icon button + dropdown menu - * Menu offers 5 options: Attach Image, Attach Video, Attach File, Record Video, Take Picture - * Implemented video recording with MediaRecorder API - - Supports both camera input and microphone simultaneously - - Creates webm format video file with timestamp name - - Auto-stops after 5 minute limit (prevents excessive recordings) - - Click on status text to stop recording early - - Shows red "Recording..." indicator that user can click to stop - * Multiple file input interactions accumulate in pendingNoteAttachments array - * Implemented same menu system for conversation container - - Separate pendingConversationAttachments array for conversation files - - Same 5 menu options and video recording functionality - * Fixed CSS positioning: - - Wrapped menu button + summary in relative div - - Menu uses absolute positioning with top-full left-0 for proper alignment - - Menu closes on outside click automatically - - Menu closes when any option is selected - * Added renderConversationAttachmentsList() function for summary display - * Updated resetConversationForm() to clear all attachment inputs -- Result: Professional attachment system with rich file type support and video capture -- Features Working: - ✓ Attach images (multiple selection) - ✓ Attach videos (file picker) - ✓ Attach any file type (.pdf, .doc, .xlsx, etc.) - ✓ Record video directly from camera (NEW) - ✓ Take picture with device camera - ✓ Display selected file summary (count and names) - ✓ Clear all selected files at once -- Status: Implemented, tested, and committed (b889e48) -- Note: Conversation submission handler (submitConversation) not yet implemented - in backend - feature shell is ready for backend integration when needed - -[2026-01-10 21:45] MONICA SESSION: Mobile Layout & Scrolling Fixes -- Changes Applied: - * Kept button group beside Notes heading on all screen sizes (flex-row always) - * Removed graph status badges from form containers - * Added overflow-x-hidden to Notes and Conversations card containers - * Prevents horizontal scrolling/swiping that made cards feel "floating" - * Allows vertical scroll to remain responsive -- Result: Cards now stay stationary horizontally, only scroll up/down normally -- Status: Fixed and committed (4bb4e54 and 0dc0ffb) - -[2026-01-10 21:15] MONICA SESSION: Refined Notes List Header UI -- Changes Applied: - * Removed graph status badges from note/conversation form containers - * Made note/conversation form headers responsive (text-lg sm:text-2xl) - * Replaced "Refresh" text button with icon-only refresh button - * Scaled refresh icon to match button group visually - * Reduced "New Note" and "Conversations" button height (h-6 with leading-none) - * Made all three buttons the same height with flex centering - * Aligned button group to vertical middle of Notes header - * Adjusted responsive breakpoints for mobile-first design -- Result: Clean, minimal header with responsive button scaling and proper alignment -- Status: Fixed and committed (53bf74e) - -[2026-01-10 20:45] MONICA SESSION: UI Refinements & Polish -- Changes Applied: - * Centered all main containers (body: flex items-center justify-center) - * Reduced card spacing dramatically for compact dense layout - - Grid gap: gap-5 → gap-2 (between cards) - - Card padding: p-5 sm:p-6 → px-2 py-0.5 (internal spacing) - - Internal spacing: space-y-3 → space-y-0 (elements in cards) - * Improved attachment indicator icons with outline strokes instead of fills - - Image: mountain/landscape icon (clearer than grid pattern) - - Video: play button with frame (recognizable) - - Audio: speaker icon (listening/playback, not microphone which is for recording) - - File: document with corner fold (standard file representation) - * Fixed mobile view icon visibility by increasing size to 24px and adding flex-shrink-0 - * Replaced purple badges with subtle hover-on-gray style for icons -- Result: Cleaner, more compact UI with better visual hierarchy -- Status: Fixed and committed (a168fe2) - [2026-01-10 20:10] MONICA SESSION: Fixed Container Injection Bug - Issue: Refactor commit (cee9157) had CONTAINERS + initializeContainers() code but ALSO kept all old HTML in DOM, creating duplicates and preventing injection