* trigger `UnableToSyncModal` on refresh
* trigger `UnableToSyncModal` without refresh
* show success toast when offline edits sync
* always show out of sync modal as the final backup
GitOrigin-RevId: 3ed300fef9e6d2ff81e17868309f80ffa40e0576
* save doc to session storage when offline
* scope offline doc backup key to user id
* clear offline doc backups on logout
* handle anonymous users
* include trackChanges
GitOrigin-RevId: 3fe6a1523cb10cf76a1fcf4ee46790f6673bd84f
* [web] add frontend tests for sharejs transform
* [web] extend tests for sharejs transform to flush eventually
* [web] full coverage for sharejs transform
* [web] add tests for sharejs events
* [web] add tests for sharejs callbacks
* [web] avoid sending empty sharejs op
* [web] add tests for resending after reconnecting
* [web] avoid resending of empty sharejs op after reconnecting
GitOrigin-RevId: 226fe47a7069cb877fd5a60454f86cc5855d9a0e
* [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
* Simplify paths in `buildImgPath`
* Move favicons from `public` to `public/img/favicons`
* Create links to favicons in `public` (`ln -s img/favicons/* .`)
* Import favicons dynamically in use-status-favicon.ts
* Update pug files with cdn favicon paths
* Update test
* Revert change in layout-no-js.pug
* Fetch web.sitemanifest from CDN
* Revert favicon move
* Fix favicon paths (use `buildBaseAssetPath`)
* Fixup web.sitemanifest path
* Format
* Update `buildImgPath` mock to be more realistic
* Revert web.sitemanifest link to local origin
* Revert "Revert web.sitemanifest link to local origin"
This reverts commit aa13431b743b55c2f536c33e736f657e1c0db598.
GitOrigin-RevId: fe278fec0f1eaae16de9fabc2b13da3e7a316463
* 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