- CLSI thumbnails: bump to 794px/q90 (matches preview quality) for
crisp display on 2x/3x phone screens
- Lumière filter chips → underline tab bar: single scrollable row with
teal active indicator, no more wrapping alignment issues; zoom buttons
separated by a vertical divider on the right
- Fix editor vertical split default on mobile: disable react-resizable-panels
autoSaveId on mobile to prevent a stale collapsed PDF pane from firing
onCollapse → changeLayout('flat') and overriding the verticalSplit
default set by getInitialLayout()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Mobile vertical layout: add key= based on direction so react-resizable-panels
remounts cleanly when switching between horizontal and vertical; also use
isVertical (not just pdfLayout) for the autoSaveId to avoid restoring a
mismatched layout from localStorage
- Language picker: replace stopPropagation pattern with a containment check on
the document click handler — more robust on React pages where Bootstrap JS or
React's event delegation can interfere with stopPropagation
- Presentation download dropdown: use popperConfig strategy:'fixed' so the menu
escapes overflow:hidden table cells; remove forced drop='up' and let Popper
choose; defer URL.revokeObjectURL by 10 s to give the browser time to start
the download before the blob URL is released
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
On mobile (< 768 px) the existing side-by-side layout automatically switches
to a vertical stack (editor on top, PDF/presentation on bottom) without
changing the stored layout preference.
A new "Top / bottom split" option is added to the layout menu so desktop
users can choose the same vertical split explicitly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* [web] extract PythonExecutionContext and PythonRunner to manage pyodide execution per file
* [web] define worker URL in python execution context in order to avoid breaking cjs-based tests
* [web] use null check for doc contents to allow running empty python files
* [web] flush buffered editor ops before refreshing snapshot for python execution
* [web] catch getExecutionContext errors in python runner to prevent unhandled rejections
* [web] add PythonRunner unit tests and extract shared WorkerMock
* refactor: rename snapshot to state in PythonRunner
* fix: remove unnecessary path normalization in PythonExecutionProvider
* fix cypress tests
GitOrigin-RevId: 9c55586d982fe8df5b90374227005c6b83e94d1f
* feat: integrate main layout, toolbar, and rail from redesign into main ide-react folder
* feat: remove additional files no longer used after ide redesign
GitOrigin-RevId: 8fd77f63cb9c67be91995a9dde13b0fe2376d80f
* Import changes from Hackathon
https://github.com/overleaf/internal/pull/24501
* Update compile status: allow errors
* Update favicons. Use the ones from Figma
* Optimize and reuse path from favicon.svg
* Clear status favicon after 5s on active tab
* Rename hook from useCompileNotification to useStatusFavicon
* Add tests
* Revert changes to favicon.svg
* Query favicon on document.head
GitOrigin-RevId: 3972b1981abaf6c80273e0ed5b1bc05eb51bd689
* Add overleaf assist paywall modal component in storybook
* update img alt
* remove data-action
* rename assistant -> assist
* use css var for blue color
* Open Overleaf assist paywall if in "overleaf-assist-bundle" split-test
* dont use optional planCode
* Open overleaf assist paywal via event listener
* rename to mainEditorLayoutModals
* call setAssistantUpgraded when modal is shown
* fix merge mistake
* fix lint error
* fix merge differences
GitOrigin-RevId: 0b3162a5c241d4dbe2773ae773c3e35f02c5c492
* add option to remove chat from backend
* make chat default to enabled
* Check chat is enabled in chat context
---------
Co-authored-by: mserranom <mserranom@gmail.com>
GitOrigin-RevId: 7dda09df4bb74007eb4b1272d4918155b5cddaf6
* Notify about unsaved changes
* Move system message components and types to shared folder
* Add system messages component
GitOrigin-RevId: ab81a24888847bd9a8a390fd1af6b58f471f7a4b
* Defer script loading
* Refactor loading
* Wait for project:joined
* Only mount IdePage once everything has connected
* Add useConnectionState hook and comments
* Remove placeholder components
* Move props into EditorAndSidebar
* Move props into MainLayout
* Tidy editor and sidebar components
* Lazy-load the symbol palette pane and separate the loading pane
GitOrigin-RevId: 4b721a06d6aba0ae0ec91768e6a6e29cf15e2083