In Compare each pane renders into a sandboxed <iframe>. A file dropped on a pane was handled by the iframe (browser default), so the browser loaded the file *inside* the pane — appearing 'behind' the app — instead of attaching it. The existing #chat-container drop handler never sees the event because drag events don't bubble out of an iframe. While a file drag is active in Compare, raise a single full-window drop shield above the panes/iframes so the drop lands on the parent document, then route the files into the shared composer (the same pending-files pipeline the file picker and paste already use). Scoped to Compare via the .compare-active class, so normal chat and the tool dropzones (gallery, RAG, document editor, …) are unaffected. Verified with a headless-Chromium integration test: synthetic file dragover raises the shield, drop attaches the file to the composer, and non-Compare mode is unaffected. Also ran node --check static/app.js.
172 KiB
172 KiB