100 Commits
Author SHA1 Message Date
Domagoj Kriskovic 48402647b9 [library-sync] List Zotero collections in a sync modal (#36884)
* [library-sync] Zotero collections sync modal

* Update COLLECTIONS_MAX_PAGES to improve request handling and clarify comments

GitOrigin-RevId: f689aa24ca1189b99ad322aa06885f5f969ed81f
2026-09-17 12:08:02 +00:00
Domagoj Kriskovic 79a14571a2 Extract userHasRefProviderFeature and rename refSyncState.synced to syncAvailable
GitOrigin-RevId: 330a7061e88a5179569a7d436f083a8761c472cd
2026-09-17 12:07:59 +00:00
Domagoj Kriskovic a9ad734cf4 [web] Delete library data when a deleted user expires (#36781)
* Delete library data when an expired deleted user is cleaned up

* Refactor MongoDB session handling

* Remove transaction handling from deleteAllLibraryDataForUser function

* use findUserIdsToKeep rather than filterDanglingUserIds

GitOrigin-RevId: 9e82f6bf943809b55a8b042d9240f99dbc635711
2026-09-17 12:05:57 +00:00
Domagoj Kriskovic 6c802c03a6 Fix dark-mode white flash when navigating between dashboard and library (#36785)
* Fix dark-mode white flash when navigating between dashboard and library

* Use userSettings object in layout-base.pug

* Move initial theme styles in a new file

* Sanitize data-initial-theme with a generic getInitialTheme helper

* Add getInitialTheme stub

GitOrigin-RevId: 80812093bbf75dc2a6f6f24710324a31a1930265
2026-09-17 12:04:10 +00:00
Domagoj Kriskovic a301363ece Move Library BibTeX export to a server-side endpoint (#36604)
* Move bulk bibtex download to a server-side streaming endpoint

* Wrap download fetch errors in FetchError and parse the error body

* Refactor library references download to use GET request and stream response

* Remove MAX_DOWNLOAD_IDS limit from downloadIdsSchema and related test

* fix merge conflict

GitOrigin-RevId: dee2bae8bfb982cd1b79bbd21c9f1b90e8cff1a4
2026-09-17 12:01:40 +00:00
Domagoj Kriskovic ce194c9752 Use named <a> in feedback link Trans and themed-links mixin
GitOrigin-RevId: 812beaa01376c8ce0a423ba4cf1ae25581396fbb
2026-09-17 11:58:36 +00:00
Domagoj Kriskovic d7b4ef33ed Add "New" badge to library nav link and a feedback link on the library page
GitOrigin-RevId: 6c936ca8168dd718c4eaf806f426d5c00078add8
2026-09-17 11:58:32 +00:00
Domagoj Kriskovic 0adf9ea45c [visual-markdown-editor] Support for images for in project files
GitOrigin-RevId: 488ebcfc6429cfa2ce4f919f8c736822c80fdca1
2026-09-17 11:56:36 +00:00
Domagoj Kriskovic 2ecbe6fb85 Zotero sync: treat the paged pull as a single snapshot (#35638)
* Zotero sync: treat the paged pull as a single snapshot

* fix zod after rebasing

* if extraHeaders, build a new client on each request

GitOrigin-RevId: b73829ad9fddaeb91753b3f9b80c5c5ae0cbfa50
2026-09-17 11:53:06 +00:00
Domagoj KriskovicandCopilot Autofix powered by AI 1ef6360fb9 comment typo
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: abb0bfda774dc278ae3256ee5a461240f5511461
2026-09-17 11:38:59 +00:00
Domagoj Kriskovic a71c8c24d9 Add migration for libraryReferences trashedAt indexes
GitOrigin-RevId: 4a850c11560df3ae3053fbc66048b083e750b8d3
2026-09-17 11:38:56 +00:00
Domagoj Kriskovic 0a913bba5e simplify health check comments
GitOrigin-RevId: cc31a6fd98a2c21b8163912e25542e5584d1794f
2026-09-17 11:37:03 +00:00
Domagoj Kriskovic 655034fb8e [git-bridge] Make liveness detect a dead service
GitOrigin-RevId: 266f6db044eec8b362b07bdfed45f892dd272413
2026-09-17 11:36:59 +00:00
Domagoj Kriskovic d8de261370 Add request validation to HistoryController endpoints (#35730)
* Add schemas for file restoration and label management in HistoryController

* Add request schemas for proxying to history API and resyncing project history

* prevent transforming version:null into version:0 with coerce

* move jsDoc comments above the handler

* check for undefined resyncProjectStructureOnly

* Add tests for restoreFileFromV2 and revertFile

* Set default value for resyncProjectStructureOnly in resyncProjectHistorySchema

GitOrigin-RevId: 7b8b8a4c3834b8c8a83f93052ab1f59e86c529a6
2026-09-17 11:34:33 +00:00
Domagoj Kriskovic 7f74e5b1d2 Add support for auxiliary MongoDB sessions in startSession function
GitOrigin-RevId: 3ea0acd9c78e837f8aaf7c1e5ac06f7befb80805
2026-09-17 11:31:05 +00:00
Domagoj Kriskovic 5df372186e Add auxiliary tag to library reference migration
GitOrigin-RevId: ecb9bf2101dc5e633ec702041b02698d9c912317
2026-09-17 11:31:02 +00:00
Domagoj Kriskovic 0ecf928249 Zotero sync: error handling & error UX (#35340)
* feat(zotero-sync): implement persistent sync state management and user notifications

* fix tests

* fix(sync): add accessOk flag to sync status recording

GitOrigin-RevId: 2da17038ad21691e7b184bb1494cf97fff8234f9
2026-09-17 11:24:50 +00:00
Domagoj Kriskovic e88cb2fd66 [web] add sync now button to library for syncing with zotero
GitOrigin-RevId: 6e848c148eead7a021a714cc90b2b023f64f15a7
2026-09-17 11:22:41 +00:00
Domagoj Kriskovic 6a736ecc62 refactor(third-party-references): replace simple-oauth2 with a custom OAuth2 client (#34917)
* [3rd-party-references] replace simple-oauth2 with openid-client

* Refactor OAuth2 handling: replace openid-client with custom OAuth2Client implementation

* Guard unconfigured OAuth2 providers with a controlled error

Providers whose client id/secret env vars are unset now stay registered
but without an OAuth2 client. Using one throws a controlled OError
("OAuth2 provider is not configured") from getOAuth2Client rather than a
TypeError from calling a method on undefined or sending "undefined"
credentials.

* Guard unconfigured OAuth2 providers with a controlled error

* Add clarification comments on OAuth 2.0 client ID and secret encoding requirements

* Add logging for invalid token expiration dates in parseToken function

GitOrigin-RevId: b17884ccba171ff4db8e6a698b3d4dcdca24e8ae
2026-09-17 11:21:13 +00:00
Domagoj Kriskovic a2712ce523 [web] Clean up boolean handling of track changes state in the frontend
GitOrigin-RevId: 640380219274e156d5bbac704d82e7ea75e1fee2
2026-09-17 11:17:51 +00:00
Domagoj Kriskovic 74609f74ed Add Cmd+Shift+X strikeout shortcut to the visual markdown editor
GitOrigin-RevId: d76fce965c0bffd393f5ca5176d3b61453ac2f93
2026-09-17 11:16:55 +00:00
Domagoj Kriskovic a8d888ea0c Toggle bold/italic off on Cmd+B / Cmd+I when already applied
In the visual markdown editor, Cmd+B (bold) and Cmd+I (italic) now remove
the markdown delimiters when the cursor or selection is already inside a
bold/italic span, instead of always adding another wrapper. Mirrors the
toggle behavior of the visual LaTeX editor.

Issue #34826

GitOrigin-RevId: d9ced8493dfaa28b61f3f0d51479d95f62e0bc4a
2026-09-17 11:16:51 +00:00
Domagoj Kriskovic 63a605484c Add support for rendering math in Markdown with MathJax
GitOrigin-RevId: dd1c1c72237a5364c642e46c66e08ea7a6977662
2026-06-22 08:05:40 +00:00
Domagoj Kriskovic 62c2523aec Add table support for visual markdown editor
GitOrigin-RevId: b36f575d40b19fdf32622c9923cecd5b47658d5d
2026-06-18 08:06:26 +00:00
Domagoj Kriskovic 0778a0e4d3 Revert "Add markdown link tooltip support to the visual editor"
This reverts commit 7ab4fd0793f057c86e4fc0307d81df376efe4d34.

GitOrigin-RevId: 625a5cbbb39832f6a32a26d2ad454669d0ed1846
2026-06-16 08:07:01 +00:00
Domagoj Kriskovic 8ccdc0fbc4 Add markdown link tooltip support to the visual editor
GitOrigin-RevId: 7ab4fd0793f057c86e4fc0307d81df376efe4d34
2026-06-16 08:05:46 +00:00
Domagoj Kriskovic 74fa4d95b2 Refactor visual editor extension handling
GitOrigin-RevId: e4571d33a36d786997e9de80a8413ca84e8ddf04
2026-06-15 08:06:33 +00:00
Domagoj Kriskovic 7b3692ce6f Module for loading per language visual editor extensions
GitOrigin-RevId: 5244e754337a1e48b8de63e881648b2397500b25
2026-06-15 08:06:28 +00:00
Domagoj Kriskovic 9cf1085fbb [web] use updateProject for saving trackChangesState
GitOrigin-RevId: eecb2b78ff18547e8b3653fdff2d380d295c367f
2026-06-04 08:06:14 +00:00
Domagoj Kriskovic ea57ae9125 Rename sourceEditorVisualExtensions to sourceEditorMarkdownExtensions
GitOrigin-RevId: a242742c3844cccb355d4a98eb27b74123ad107e
2026-06-04 08:06:09 +00:00
Domagoj Kriskovic 5cf1b43ce7 Add Markdown visual editor support
GitOrigin-RevId: 4ec2ffb276c729a58f82ccb26ed571f4187a4178
2026-06-04 08:06:04 +00:00
Domagoj Kriskovic 10ef1d0f34 [web] Fix empty lines being invisible in Python script output
GitOrigin-RevId: eb4b732cae74fa050384fd4cec6bd96a9caae152
2026-06-01 08:04:45 +00:00
Domagoj Kriskovic 987b3a1f71 Track script-runner-opened analytics event
GitOrigin-RevId: fb95aa2f5ad649061a6b8e9797789024a3345f3b
2026-06-01 08:04:41 +00:00
domagojk 270cbaf84e Move python labs icon next to run button
Closes #33892

GitOrigin-RevId: c48d920ee982ddd5e4295fc1279b0f70096820d1
2026-06-01 08:04:37 +00:00
Domagoj Kriskovic bf1dd6986f Record project notification timestamp in Redis on applyUpdate (reverted) (#30814)
* Revert "Revert "Record project notification timestamp in Redis on applyUpdate (#29509)""

This reverts commit 31c88ee836fb5e1ab3950da590c28e24b1397edb.

GitOrigin-RevId: fc012324f6035156585fab468aca72b900a9710b
2026-05-22 08:06:26 +00:00
Domagoj Kriskovic 803ba735ca Show toast when Python script saves output files to project
GitOrigin-RevId: 9ca5201645953f86c3ac8e83f545dfbcdac2b35c
2026-05-22 08:05:55 +00:00
Domagoj Kriskovic ff53705bfa Refactor Python output pane toolbar for improved layout and styling
GitOrigin-RevId: b6d838e5c9bd8023bf12df976dad0c50564a0b2f
2026-05-14 08:06:22 +00:00
Domagoj Kriskovic 11d35bd065 Test that pyodide package.json version matches fetch script
GitOrigin-RevId: e04ae191d2b1e5a08ba2e27518e61899d0e2d490
2026-05-11 08:05:39 +00:00
Domagoj Kriskovic 5d171066c2 Add analytics events for Python script runner
GitOrigin-RevId: 53f0fec09fc2a4ccdf1a6f77345741bed29d8a8b
2026-05-11 08:05:34 +00:00
Domagoj Kriskovic 8f0979d6a2 Trigger reject tracked changes notification from document-updater
GitOrigin-RevId: 9ac47490d052b3058931ca250f4090e6576f56b2
2026-05-07 08:06:57 +00:00
Domagoj Kriskovic ad58ec2c79 Consolidate duplicate Pyodide output limit tests
GitOrigin-RevId: 8ec631b740736158d6e1e75ccab90136813ffa15
2026-05-07 08:06:52 +00:00
Domagoj Kriskovic 672e01c703 Enforce output file count and size limits in the Pyodide worker
GitOrigin-RevId: 2cc61613381243d810a8cb9e1c2c32fa9e751da7
2026-05-07 08:06:46 +00:00
Domagoj Kriskovic 117a783f21 [web] Add .py to defaultTextExtensions
GitOrigin-RevId: 0880c01f6e3b4267f6cb790a44c6094738ab2229
2026-04-30 08:05:30 +00:00
Domagoj Kriskovic 9e677a2c1e Use overleaf CDN for loading pyodide packages
GitOrigin-RevId: e17ff3387166421a546a9519786d77ba12cdffc4
2026-04-30 08:05:23 +00:00
Domagoj Kriskovic 7eee5809bb [pyodide] collect output files from worker and include in RunCodeResult
GitOrigin-RevId: fa9d501933ee32729e3d083183cd2a14ff969e95
2026-04-28 08:07:16 +00:00
Domagoj Kriskovic 4e51eee4f8 scss: use content-info variable
GitOrigin-RevId: 925d1ea2dc3496194388b6a347d1c0ab41ced52b
2026-04-28 08:07:02 +00:00
Domagoj Kriskovic e3a1bce113 Add tests for stderr output handling and execution interruption in PythonOutputPane
GitOrigin-RevId: d383e90dffbabbb597a9cf793a6fabeeff9d6b1a
2026-04-28 08:06:57 +00:00
Domagoj Kriskovic 3a232c44eb Extract OutputStream type for python runner streams
GitOrigin-RevId: 9a26c847ec7daa4cd446e9fec0407e64e6f40916
2026-04-28 08:06:52 +00:00
Domagoj Kriskovic 09af91a936 info stream
GitOrigin-RevId: 5d4cb01c250768ca00e15368b9c616b467e4f9ba
2026-04-28 08:06:47 +00:00
Domagoj Kriskovic 4567ffea41 [web] error handling for BibTeX entry addition using \cite
GitOrigin-RevId: efdf39a959fda7d2f970860051e1fabd72474ab1
2026-04-21 08:05:54 +00:00
Domagoj Kriskovic 415db24ba4 [web] Add PythonExecutionContext with per-file output buffers (#32737)
* [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
2026-04-21 08:05:50 +00:00
Domagoj Kriskovic ecda482213 add JSDoc comments for FileWriter methods and promises
GitOrigin-RevId: a7b2229b12973a8ebf4a1d6b94159efbd63df02a
2026-04-20 08:04:58 +00:00
Domagoj Kriskovic d396c6d722 [ds-mobile-app] add support for file upload
GitOrigin-RevId: d874439a7a8a820324e0568fc2eec2c78d72cadc
2026-04-20 08:04:39 +00:00
Domagoj Kriskovic cb0f87282b fix: ensure original write method is correctly restored after code execution
GitOrigin-RevId: 0c1d40bbde58d04de362586103a50b522dc14c2a
2026-04-14 08:04:17 +00:00
Domagoj Kriskovic 7d032e73d6 [web] include output tracking in run-finished lifecycle event in pyodide
GitOrigin-RevId: 5c72abc35ea4045f9c6aa374a2c51490f8f6cd38
2026-04-14 08:04:13 +00:00
Domagoj Kriskovic e7b9a40c0e sort translations
GitOrigin-RevId: 9d254c3aefddaf8f77b5a7e626a9bd0d1847bfc1
2026-04-13 08:04:11 +00:00
Domagoj Kriskovic 19c8434653 [web] Add stop button for Python code execution via worker termination
GitOrigin-RevId: f44b429a1d85e66ce89719817efd7acbfc7c4540
2026-04-13 08:04:07 +00:00
Domagoj KriskovicandCopilot 332588826d [project-history] Fix for invalid range Error (#32198)
* [project-history] Invalid range Error WIP

* Clamp tracked deletes to retention range to prevent negative positions

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: 408da6fff99b6c413af3d18fa4c399d88ca5f2a2
2026-04-01 08:06:15 +00:00
Domagoj KriskovicandCopilot Autofix powered by AI 6486ef3e1e [web] Add deletedReason parameter to project deletion methods (#32221)
* [web] Add deletedReason parameter to project deletion methods

* revert sinon.match.any in ProjectDuplicator negative assertion

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: d1595eefe0e36150231ee9646fe5eba0786fd1f5
2026-03-23 09:06:04 +00:00
Domagoj Kriskovic f078929b25 Fix optional chaining for file extension retrieval in EditorSwitch
GitOrigin-RevId: 9aeee2f856c4f4dadc38affecc06179b61267af0
2026-03-16 11:56:48 +00:00
Domagoj Kriskovic a7621a99c4 Updated analytics event for visual bibtex editor
GitOrigin-RevId: ccca1ba7f60a7fa63a41866f780fbb73441b0c9a
2026-03-16 11:56:43 +00:00
Domagoj Kriskovic 684bbe9186 loadPyodide per run, use package types
GitOrigin-RevId: 0c2384ce676fde09459fbd8244c9ed675b30c954
2026-03-09 09:05:43 +00:00
Domagoj Kriskovic 3b17b0a46a feat: implement Overleaf Code experiment with Python execution support
GitOrigin-RevId: 54ca98525b2ae056fb34b3713320e868b8c19613
2026-03-09 09:05:39 +00:00
Domagoj Kriskovic 138f7f8023 feat: add Python support with Pyodide integration
GitOrigin-RevId: 382ce102c43050aace691dd89d825a94abf347a8
2026-03-09 09:05:34 +00:00
Domagoj Kriskovic 4603722288 [web] Add button style for copy to clipboard component
GitOrigin-RevId: e387f79c829c903660638d3781839c44da10db07
2026-02-19 09:05:37 +00:00
Domagoj Kriskovic 0d71cc18fd [web] linting errors for visual bibtex editor
GitOrigin-RevId: 8c527eb314e21233f6be648b1a1cdb039db8d9b1
2026-02-19 09:05:13 +00:00
Domagoj Kriskovic 5423c5c792 add threadDeleted event
GitOrigin-RevId: 98ebe9797121b2c2e38f10a53de6b0f6b45a9362
2026-02-09 09:06:25 +00:00
Domagoj Kriskovic c20be33e74 [web] add commentEdited and commentDeleted events for dsmp
GitOrigin-RevId: 6e43ffd2d782f35ef8202aeb5ef7edf25c0c3a88
2026-02-09 09:06:20 +00:00
Domagoj Kriskovic b10854f3e3 Use "tanstack/react-table" for visual bibtex editor
GitOrigin-RevId: 85c7ae2433de04a4d64d9d59af062646add3b473
2026-02-04 09:06:49 +00:00
Domagoj Kriskovic a991852c61 add max number of duplicate citation keys
GitOrigin-RevId: dd71cf7e5455d8cfdc60bab477c6b8c7f1af249a
2026-02-03 09:06:17 +00:00
Domagoj Kriskovic 9de3ac303d [web] add duplicate citation key detection and warning message in BibTex editor
GitOrigin-RevId: c126f05e0b9a0f7e37b5ff9e06833ba52fb9c34c
2026-02-03 09:06:12 +00:00
Domagoj Kriskovic 9028ec7b29 Use labs experiments for visual bibtex editor
GitOrigin-RevId: e616d42af0d54f9acdf40b24fbfcbed06f349266
2026-02-03 09:06:06 +00:00
Domagoj Kriskovic 9bd7171413 [project-history] update getProjectBlobSchema to accept numeric history_id
GitOrigin-RevId: b38d8c9e279e227975a12662d3f0c9e0d21cc1bd
2026-02-02 09:05:33 +00:00
Domagoj Kriskovic 4d6c1138c7 rename validateReq to parseReq
GitOrigin-RevId: 26d1a3adf0793a4f80a919707850477db5374b8d
2026-02-02 09:05:24 +00:00
Domagoj Kriskovic 859c21b4dd [project-history] update schemas to accept numeric project IDs
GitOrigin-RevId: 4dac763223f42eb772c30f34e0da0d22464055dd
2026-02-02 09:05:20 +00:00
Domagoj Kriskovic da9da896c2 Revert "Revert "[project-history] migrate from joi to zod (#30187)" (#30681)"
This reverts commit 8d66aa15a29216736755c3f86954a4d40aa20a6c.

GitOrigin-RevId: 9d56dafff3da5202204ead896bed30182cc2aceb
2026-02-02 09:05:15 +00:00
Domagoj Kriskovic a108552df6 [web] add schema validation for downloadZipOfVersion endpoint
GitOrigin-RevId: ec69b9aa09cf52b544283be6acf29f706807a4b4
2026-02-02 09:04:50 +00:00
Domagoj Kriskovic 3603bc5e25 [real-time] handle getDocument result in case of an error
GitOrigin-RevId: 592be03d7b93a3d1f86015e58d2de5d2f12d89f6
2026-01-28 09:08:09 +00:00
Domagoj Kriskovic 41b8ccc69f [real-time] Promisify DocumentUpdaterManager (#30322)
* move function outside of object

* convert flushProjectToMongoAndDelete function

* convert queueChange function

* install fetch utils, remove private fn from export

* promisify getDocument function

* fix unit tests

* preserve function order

* try parsing error body

* update tests on a new rebased file

* remove fetch-utils from devDependencies

GitOrigin-RevId: cc34d6f690b6b888214b32c2aee0efb6b585e159
2026-01-28 09:06:48 +00:00
Domagoj Kriskovic 6b575c9235 [web] remove scriptRunner from a cron job script (#30871)
* [web] remove scriptRunner from a cron job script

* disable eslint check

* fix logger params, add error description

GitOrigin-RevId: 60cfc32fc62d08283222bf7cdbe846b6c1d4796f
2026-01-22 09:06:13 +00:00
Domagoj Kriskovic 93eacab171 Add reference functionality for visual bibtex editor (#30846)
* Add reference functionality for visual bibtex editor

* Implement edit reference functionality in the BibTeX visual editor

* fix lint, sort locals

GitOrigin-RevId: 246009425d6f27a9d12fa21eaf6463df1fc95d1e
2026-01-22 09:06:09 +00:00
Domagoj Kriskovic e5a82e47ce [notifications] Add support for reopened comment notifications (#30679)
* [notifications] Refactor notification handling by using getProject utility function

* [notifications] Add support for reopened comment notifications

* rename to areNotificationsEnabled

* added comment explaining why we are getting users

GitOrigin-RevId: 7263d52e611c66baa39d8737d1d22740e592a3a0
2026-01-19 09:06:25 +00:00
Domagoj Kriskovic b39c7d8fe8 Add comment resolved hook for email notifications
GitOrigin-RevId: 426162e4ca03dbb8459c990ae56ff8d12ba2d8b4
2026-01-19 09:06:16 +00:00
Domagoj Kriskovic 6c76d1cd4c Check preferences for track changes before sending email
GitOrigin-RevId: 99206cf438b18d90bca2db9d6db2a6676008a72d
2026-01-15 09:05:17 +00:00
Domagoj KriskovicandEric Mc Sween 4e2ea44b61 [web] add BibTeX visual editor module (#30726)
* [web] add BibTeX visual editor module

* Make the visual editor hook open to extension

Instead of looking specifically for the bibtex visual editor, allow any
extension to provide a visual editor.

* Fix stylelint error

---------

Co-authored-by: Eric Mc Sween <5454374+emcsween@users.noreply.github.com>
GitOrigin-RevId: c85c27a2b119c826e3d00cbd475a2a21f1508091
2026-01-15 09:05:13 +00:00
Domagoj Kriskovic da7569e892 Revert "[project-history] migrate from joi to zod (#30187)" (#30681)
This reverts commit f8396a3caadd536edf64c6f971c77f4c941f000a.

GitOrigin-RevId: 8d66aa15a29216736755c3f86954a4d40aa20a6c
2026-01-13 09:07:22 +00:00
Domagoj Kriskovic 6d3dd3601a [project-history] migrate from joi to zod (#30187)
* Add @overleaf/validation-tools in project-history

* use error handler for zod

* Replace joi validations with zod schema

* fix unit tests

* remove Joi validation middleware

* remove optional when there is a default

* fix tests after checking for objectid

* ran build_scripts

* monorepo npm install

GitOrigin-RevId: f8396a3caadd536edf64c6f971c77f4c941f000a
2026-01-13 09:07:00 +00:00
Domagoj Kriskovic 0a84cefc96 Revert "Record project notification timestamp in Redis on applyUpdate (#29509)"
This reverts commit faa7a97fa929941cade5d62d2d680c6c3f34cdc8.

GitOrigin-RevId: 31c88ee836fb5e1ab3950da590c28e24b1397edb
2026-01-12 09:06:50 +00:00
Domagoj Kriskovic c461d4d8c3 Rename doc updater script to use .mts extension
GitOrigin-RevId: 43d84434ee91aa579cb049081a31cb3769844320
2026-01-12 09:06:12 +00:00
Domagoj Kriskovic 8bca2545ee Record project notification timestamp in Redis on applyUpdate (#29509)
* Record project notification timestamp in Redis on applyUpdate

* Refactor project notification timestamp recording in Redis

* Remove tests which are catching errors that are no longer used

GitOrigin-RevId: faa7a97fa929941cade5d62d2d680c6c3f34cdc8
2026-01-12 09:06:07 +00:00
Domagoj Kriskovic 6de0273d45 Process notifications by grouping them per project with caching (#30439)
* Add caching for project updates and file diffs in notifications processing

* Simplify filterNotificationsByPreferences function

* NotificationsEmailBuilder class

* fix cachedRecipient issue

* change processing to group per project

* remove updates cache

* clear cache after processing a project

* refactor: update sendNotificationsForProject to accept project as parameter

* fix unit tests

* apply review suggestions

* feat: add migration script for updating emailNotifications indexes

* refactor: update sendNotificationsForProject to accept projectId

* refactor: simplify fileTreeDiff result assigning

* fix tests

GitOrigin-RevId: bfed061864ba7314f85cf97b7adaeef62c8c5f00
2026-01-09 09:05:42 +00:00
Domagoj Kriskovic c30b348668 For editing/deleting chat messages ensure user is a message author
GitOrigin-RevId: d7d4f1bb9f004d8fed8644f0aabe621ed863437b
2025-12-18 09:05:22 +00:00
Domagoj Kriskovic 7b00e5d9f5 Add routes to save/get project notification preferences (#30114)
* Add routes to save/get project notification preferences

* update route url

* improve zod schema

* remove unused json response

* update schema and fix tests

* add jsdoc types to pass type-check

* remove using zod strict()

GitOrigin-RevId: f3ab5c88b58bd5af71e0504d0efbe03bdf9b243c
2025-12-16 09:07:07 +00:00
Domagoj Kriskovic 3f6e96f58e Add email notifications settings for redesigned editor
GitOrigin-RevId: d31f13bbc668d790564618e6b4a8a83fdf2d8780
2025-12-05 09:05:26 +00:00
Domagoj Kriskovic 580fc2bad6 [notifications] include tracked changes in email notifications
GitOrigin-RevId: 01011739ef183e0fca606a5d9cbf6c23eaa14644
2025-12-03 09:06:33 +00:00
Domagoj Kriskovic 3832c46f1c Skip projects that are already in new track_changes format
GitOrigin-RevId: 3162d15852664707e2072b5c7af6d3849f1d0677
2025-12-03 09:06:20 +00:00
Domagoj Kriskovic 6e2f999a11 Fix import from CollaboratorsHandler.js to CollaboratorsHandler.mjs (#29863)
GitOrigin-RevId: 35f7fd558a127c094b65104e0775c67dca4f96f6
2025-11-25 09:05:18 +00:00
Domagoj Kriskovic c84cfc815a Document updater script for notifying web on project updates (#29490)
* Document updater script for notifying web on project updates

* use lua script for deleting keys

* define jobId when adding to queue

* removeOnFail age

* mongo check if collaborator exists

GitOrigin-RevId: f67a79c890a03ccf44fd84243c9a3f380e7afb43
2025-11-11 09:06:04 +00:00
Domagoj Kriskovic 23fc714d93 Replace dependency on "mmmagic" (#29272)
* Replace dependency on "mmmagic"

* Refactor file type checks in OpenInOverleafHelper

GitOrigin-RevId: fc5876b75955cb4981f084df777caa294907c8f9
2025-11-04 09:05:00 +00:00
Domagoj Kriskovic 48a3d6a10a Function for processing notification queue (#29072)
* Function for processing notification queue

* update collection name

GitOrigin-RevId: 5de5d1d056acee4257fcdc930ad995345f5e0367
2025-10-20 08:05:25 +00:00