Commit Graph

2223 Commits

Author SHA1 Message Date
Copilot
27aac33259 Add .lean, .lean4, and .hs as editable/viewable file types (#31716)
GitOrigin-RevId: c3ee7592d0a1096ac96ca9514579c559d028b840
2026-03-09 09:05:48 +00:00
Jimmy Domagala-Tang
bb5d90a332 Add usage quota to Workbench (#31782)
* feat: adding usage rate limiting to workbench and aligning editor context values for suggestionsLeft

* feat: prepend word token to headers of token rate limiter to prevent confusion with usage rate limiter

* Shared AI paywalls (#31948)

* feat: renaming hasPremiumSuggestion and adding token limits to editor context and project load

* feat: adding new ai features paywall component

* feat: rename getRemainingFeatureUses to token based naming for token based limiter, removed checking for feature usage on anonymous users, and removed guard on null userId since we shouldnt be calling getRemainingFeatureUses on a nonexistent user

* feat: using token rate limit headers to set token rate values in editor context

* feat: update workbench to be available without refreshing if rate limit reset occurs within session

* fix: move paywall out of inert section

* Hide new paywalls behind FF and open plans page on upgrade attempt (#32023)

* feat: hide new paywalls behind FF

* feat: update ai paywall buttons to navigate to plans page post quota plans change release

* feat: showing a fair limit notificaiton pre-quota change, and updating paywall to not fire if user has premium already (#32056)

GitOrigin-RevId: 565fb128d55543fea34c383bc4abeaa3dd148d09
2026-03-06 09:17:52 +00:00
ilkin-overleaf
6539e26107 Merge pull request #31742 from overleaf/ii-project-sharing-join-project
[web] Join project page redesign

GitOrigin-RevId: d182ec4fb744f384f824c9e63b534da02a9f8e99
2026-03-06 09:17:16 +00:00
Jimmy Domagala-Tang
3fa5ce8b16 Add Shared Usage Quota to Writefull Functions (#31867)
* feat: moved error handling to controller, added config for each route, added usage rate limiter, and removed uneeded functions from manager

* feat: allow for 0 usage cost features in Writefull

* feat: update decrement to also use cost, and make cost optional, defaulting to 1

* feat: adding WF quota tests and updating tests for quota rate limiter (#31982)

* feat: adding WF quota tests and updating tests for quota rate limiter

* Apply suggestions from code review

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

---------

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: 281cb6b50b54c02f54a85a6492ca322ef8f00429
2026-03-06 09:14:46 +00:00
Jimmy Domagala-Tang
501e11a42a Move feature rate limiters to shared web folder (#31855)
* feat: remove old assist split test

* feat: moving featue rate limiters to main shared directory for use in multiple modules

* feat: base workbench rate limiter on a token specific base class

* feat: rename aiErrorAssistRateLimiter to AiFeatureUsageRateLimiter to better reflect its for our shared ai usage quota

GitOrigin-RevId: 89464d115b5904f6274756a7169e2b35945e2fc9
2026-03-06 09:13:40 +00:00
Jakob Ackermann
81b7121408 [clsi] initial implementation of compile from history (#31883)
* [clsi] initial implementation of compile from history

* [clsi] copy changes

* [saas-e2e] extend test case with nested folder

* [saas-e2e] add test case for tracked changes

* [web] fix accumulating changes from multiple chunks

* [web] optimize size check for compile request payload

* [clsi] deduplicate globalBlobs

* [clsi] add validation for request body details

* [clsi] add metrics for compile from history

* [clsi] download binary files concurrently

* [clsi] skip download of empty file blob

* [clsi] break down e2e compile time metric by compileFromHistory

GitOrigin-RevId: 0dadef93e89d8a172c35cb130a1042d9d1bec42a
2026-03-06 09:12:07 +00:00
Jakob Ackermann
da50aee52c [web] disable buffering when downloading large files (#31874)
* [web] disable buffering when downloading large files

* [web] fix unit tests

GitOrigin-RevId: c8b0381962814fa62425364f03457600daf287ef
2026-03-06 09:10:32 +00:00
Mathias Jakobsen
51afc7d85e Merge pull request #31862 from overleaf/mj-system-theme-split-test-dates
[web] Update dates for system theme split test

GitOrigin-RevId: 735b99e234d7613e057947d70ca8e2d8364e30aa
2026-03-06 09:10:07 +00:00
Jessica Lawshe
1efc67ae9b Merge pull request #31736 from overleaf/jel-find-group-only-if-domain-confirmed
[web] Only query group with domain capture if domain is confirmed

GitOrigin-RevId: 612a711730b1f090f3e47410fd4ad68df33eca93
2026-03-06 09:09:21 +00:00
ilkin-overleaf
20898db17f Merge pull request #31560 from overleaf/ii-domain-capture-multiple-groups
[web] Multiple captured domains

GitOrigin-RevId: c097688efed82a8de11233078134923ed23bf500
2026-03-06 09:07:30 +00:00
Andrew Rumble
87269f3084 Merge pull request #31663 from overleaf/ar-convert-exportshandler-to-fetch-utils
[web] convert ExportsHandler to fetch utils

GitOrigin-RevId: 96e74a1254e456b4ac8a6d3a2bd6330a806c8693
2026-03-06 09:07:21 +00:00
Jimmy Domagala-Tang
f96d37b7e3 Revert "Revert "[Web] Enable Quota System for AI Features"" (#31771)
* Revert "Revert "[Web] Enable Quota System for AI Features (#31544)" (#31767)"

This reverts commit f6589bdbf0ac7e71313739e3e3f4fb5bedd48c22.

* Update writefull entitlement syncing for commons (#31774)

* feat: update wf entitlement syncing logic

* feat: remove unused env variable, and parse quota tier as string for analytics

GitOrigin-RevId: 37ae7522a249501719a64327e2b6aaff01a3cc0b
2026-03-06 09:07:15 +00:00
Mathias Jakobsen
6c1003a852 Merge pull request #31609 from overleaf/mj-split-test-system-overall
[web] Add split test for defaulting to system theme

GitOrigin-RevId: 3f5301349074725c56f423ed51662064e52d6aeb
2026-03-06 09:06:38 +00:00
Jakob Ackermann
6c6e8d9a97 [monorepo] switch all output file reads to clsi-nginx (#31691)
* [monorepo] switch all output file reads to clsi-nginx

* [clsi-lb] allow gallery download requests

* [terraform] clsi: use nginx.conf from clsi service

* [clsi] fix flakey tests

* [clsi] replace alias with rewrite and root in nginx config

* [k8s] clsi-lb: expose download port on internal service

* [web] add explicit endpoint for downloading all output files

Serve the output.zip endpoint from clsi.

* [clsi] fix regex for latexqc submission ids

Previously, we only handled template submission ids.

GitOrigin-RevId: 6c3b21b01ec41ae767530b14aac31fbe3d640dd5
2026-02-24 09:07:12 +00:00
Jimmy Domagala-Tang
892047fcf6 Revert "[Web] Enable Quota System for AI Features (#31544)" (#31767)
This reverts commit 17763447965aae5777053b783d2601517bfe6b12.

GitOrigin-RevId: f6589bdbf0ac7e71313739e3e3f4fb5bedd48c22
2026-02-24 09:07:06 +00:00
Jimmy Domagala-Tang
92463fb3e2 [Web] Enable Quota System for AI Features (#31544)
* feat: migrate from aiErrorAssist naming for disabling AI features to aiFeatures.enabled to avoid confusion

feat: keep aiErrorAssistant as setting on user object until migration is run

* feat: migrate writefull.enabled unset to instead use promotionSet false

* feat: updating to use quota based system for AI usage

* feat: hide relevant sections of quota system behind split test

* feat: ship onAiFreeTrial instead of free quota amount to project meta

* fix: renaming splitTestEnabledForUser to featureFlagEnabledForUser

* fix: v1_personal should have free trial amount of ai quota

* fix: onAiFreeTrial in projectController should account for anonymous users with no features

* feat: fixing marketing exports for ai quotas

* feat: update features epoch

* feat: move to quota tiers, and map tier to numeric allowance within rateLimiters

GitOrigin-RevId: 17763447965aae5777053b783d2601517bfe6b12
2026-02-24 09:06:31 +00:00
roo hutton
8fb5b0ed05 Merge pull request #31678 from overleaf/rh-cio-subscription-status
Sync subscription type and features to customer.io

GitOrigin-RevId: 4c23a6b4ec9f103e73b26203b0d43f177e56bb6e
2026-02-24 09:06:22 +00:00
Kate Crichton
95efb60fb5 Merge pull request #31536 from overleaf/kc-add-batch-download-audit-log
Add logging for batch downloads

GitOrigin-RevId: b3d03ebd20657b571be0d894bc1d2b335844d1fa
2026-02-19 09:06:40 +00:00
Jakob Ackermann
cb0266035d [web] remove unnecessary filtering of rootFolder (#31585)
11 years ago, the db.projects collection was storing doc lines in the
file-tree/rootFolder. Any operations on the project that did not need
those lines were benefitting from excluding all those entries from the
file-tree. These days, the verbose exclusions are not useful anymore and
merely add load on mongo.

REF: 9805c6a9ff
GitOrigin-RevId: 89f544688934c1ed1ca98877ffbe8baefe66c126
2026-02-19 09:06:13 +00:00
Jimmy Domagala-Tang
793506c10f feat: removing recurly revert logic since we are sunsetting recurly (#31470)
GitOrigin-RevId: c165c7d14ec5d57fdbe3b0962bd65222182a9f48
2026-02-17 09:05:27 +00:00
Jakob Ackermann
ddeafa1d7c [web] fallback to clsi-cache from regular output file download (#31555)
* [web] fallback to clsi-cache from regular output file download

* [web] add comment on req.params assignment

GitOrigin-RevId: 9d0c2e0a8e12d322aa5754c732a38f19adeac716
2026-02-17 09:05:08 +00:00
Jakob Ackermann
7c70b749d4 [monorepo] remove PII and variables from error messages (#31508)
* [monorepo] remove PII and variables from error messages

Exclusions:
- scripts
- tests
- fuzzing
- SplitTestManager (messages are sent to admin frontend)
- Group setup (we may want an error per unique tuple)
- sharejs (unused types; text type errors are shadowed already)
- history-v1 error messages that are used by the ErrorRecorder
- errors that flag issues with configuration/call signatures

I've used these search terms for finding unwanted error messages:
- new Error(`
- new Error\(\n\s+` (regex search)
- new OError(`
- new OError\(\n\s+` (regex search)

* [web] throw NotFoundError from ProjectLocator

* [github-sync] fix OError.tag call in script

Co-authored-by: Jessica Lawshe <jessica.lawshe@overleaf.com>

* [templates] revert changes to test client

---------

Co-authored-by: Jessica Lawshe <jessica.lawshe@overleaf.com>
GitOrigin-RevId: 736857a4fc5d9bfb0f8cb03e0f004eda87e5a220
2026-02-17 09:05:04 +00:00
Miguel Serrano
05d04e864d [web] Project collaboration events for Group Audit Logs (#30055)
* [web] Project collaboration events for Group Audit Logs

* Using `role` instead of `privileges` for `(send|revoke)-invite` audit log

GitOrigin-RevId: 88961afcc0580243ba9c8ab661b8fc1ca127775e
2026-02-13 09:05:43 +00:00
Brian Gough
44ecee821d Fix temp file leaks in dumpFolder on both success and error paths (#31304)
GitOrigin-RevId: b5d8586a86030fb887cbd7dadd9bbb7cd64a788c
2026-02-11 09:06:27 +00:00
Mathias Jakobsen
ae2d28505b [web] Abstract AiErrorAssistantRateLimiter (#31176)
* [web] Abstract AiErrorAssistantRateLimiter

* [web] Remove AI error assist reference in FeatureUsageRateLimiter

GitOrigin-RevId: cb12ea8b7a5a06576087b937380652fbe1948e95
2026-02-10 09:06:25 +00:00
Kristina
a9ab247507 [web] add notification message to the dashboard for migrated subscriptions (#31429)
GitOrigin-RevId: 12c14020b9e43e6544bdbd363fd2bc0d4051c80b
2026-02-10 09:06:13 +00:00
Jessica Lawshe
487ffc2309 Merge pull request #31099 from overleaf/ii-domain-capture-member-limit-email
[web] Members limit email template changes

GitOrigin-RevId: 8c26adda9f748a22a2c99787a3166be706293de3
2026-02-06 09:06:04 +00:00
Simon Gardner
209c1cfbfb Add audit log entries for project-role-changed and group-role-changed
GitOrigin-RevId: 4c326dd922bede6f218a6d89e4f18c312a9abf98
2026-02-06 09:05:19 +00:00
Copilot
35906b4018 Deduplicate users in checkUserListPermissions to avoid redundant permission checks (#29461)
* Fix duplicate permission checks for same user

Deduplicate user list in checkUserListPermissions before running expensive checks.
Handles ObjectId vs string comparison by converting to string.
Adds tests to verify deduplication works correctly.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: thomas- <2176518+thomas-@users.noreply.github.com>
GitOrigin-RevId: 96eede1cbeb18b807deaca7d4c370aef5c48c4bc
2026-02-05 09:06:17 +00:00
Maria Florencia Besteiro Gonzalez
a76f0ee9f4 Merge pull request #31247 from overleaf/revert-31216-revert-30418-mfb-improve-handling-of-debug-copies-of-user-projects
Revert "Revert "Add isDebugCopyOf property to project, add Debug tag to debug project.""

GitOrigin-RevId: 2ed41ec4504ccd8b6ec9cb1d23a9d217079d4347
2026-02-04 09:06:44 +00:00
Kristina
0cabc81d46 Merge pull request #31218 from overleaf/kh-update-assistant-prices
* update Stripe AI assist prices
* add soft archive option to the archiving prices script

GitOrigin-RevId: 3f0b66cf227e31e03fb3337b3cb4c1b6a82bd1db
2026-02-04 09:06:34 +00:00
roo hutton
a0a621f727 Merge pull request #30788 from overleaf/rh-cio-sub-topics
Replace Mailchimp newsletter subscriptions with customer.io topic subscriptions

GitOrigin-RevId: de536fb7ef24ff44c494659b2ef5ede5b33cc977
2026-02-04 09:06:24 +00:00
Maria Florencia Besteiro Gonzalez
c790449196 Merge pull request #31216 from overleaf/revert-30418-mfb-improve-handling-of-debug-copies-of-user-projects
Revert "Add isDebugCopyOf property to project, add Debug tag to debug project."

GitOrigin-RevId: f0cf3f040ebe9b19d0836130df3df974ddef11f9
2026-02-03 09:06:31 +00:00
Kristina
4c5cdecffa [web] fix bug where pending downgrades are removed when subscriptions change (#30420)
* preserve pending changes when generating change requests
* re-apply pending term_end changes after immediate updates
* block changes when Stripe subscription has multiple phases
* handle MultiplePendingChangesError & rm PendingChangeError

GitOrigin-RevId: 0af11044766ff48e683d684ad6d62b732d17290c
2026-02-03 09:05:55 +00:00
Maria Florencia Besteiro Gonzalez
a591f2eb7a Merge pull request #30418 from overleaf/mfb-improve-handling-of-debug-copies-of-user-projects
Add isDebugCopyOf property to project, add Debug tag to debug project.

GitOrigin-RevId: e3d17de05c6f31db16b861d1adae333211dff018
2026-02-03 09:05:40 +00:00
Andrew Rumble
610398d099 Merge pull request #30323 from overleaf/ar/promisify-DocstoreManager
[web] promisify DocstoreManager

GitOrigin-RevId: 351b9868a1c29066b6c98d92e5b513e10f4f6764
2026-01-30 09:05:09 +00:00
roo hutton
77c66132b0 Merge pull request #29838 from overleaf/rh-cio-remove-limits
Enable customer.io for all users

GitOrigin-RevId: 74d8424924ec30ad3a6cb48c15e285cc696186fd
2026-01-29 09:05:59 +00:00
Mathias Jakobsen
2259c915e8 [web+ops+references] Remove references service code (#29699)
GitOrigin-RevId: 76656abe2e7b012355438d053a05e157bb719b0a
2026-01-28 09:06:34 +00:00
Jessica Lawshe
59dc237e53 Merge pull request #30835 from overleaf/ii-domain-capture-invite-token
[web] Create invite token when domain capture is disabled

GitOrigin-RevId: 193b5b8567c3b593c98f432568b47cc4e9e17339
2026-01-23 09:06:24 +00:00
Jessica Lawshe
a116175698 Merge pull request #30520 from overleaf/ii-flexible-group-licensing-upgrade-message
[web] Plan upgrade error message when subscription is manually collected

GitOrigin-RevId: 76bda80c81a5f934cbddfb6f24d29c4dd3d6da56
2026-01-23 09:06:19 +00:00
Olzhas Askar
a5b56c7579 Merge pull request #30826 from overleaf/oa-filter-out-once-coupons
[web] Filter out once coupons for Stripe

GitOrigin-RevId: 60aad9c557632c3a3a4b5e6d578d786feaa9508f
2026-01-21 09:05:46 +00:00
Davinder Singh
187ffbf108 Recurly Pending subscription bug fixes and display Notification Banner (#29811)
GitOrigin-RevId: 4eb6bb445f9911fcf74ff2f9bdcc01b420c7afaf
2026-01-20 09:06:42 +00:00
Kristina
1228eac81e [web] ensure Stripe & Recurly webhooks can handle a migrating subscription (#30787)
* return early from various event handlers if the subscription isn't controlled by the payment provider sending the event
* update `Subscription` type for webhook events

GitOrigin-RevId: f3fc345c37bbe134b7696ccde9d6d8c7608f8f12
2026-01-20 09:05:36 +00:00
Brian Gough
dbff5ae559 Merge pull request #30813 from overleaf/bg-fix-compile-from-redis
exclude buildId from project state hash

GitOrigin-RevId: da7424378422bec348adeaa5da0fe2d3581744d9
2026-01-19 09:07:04 +00:00
Anna Claire Fields
ff8f77d85c replace staff access with role based sytem (#30004)
- remove references to staff access

GitOrigin-RevId: 5d7df3ae8bc78aa02b65ec0dac0a323520c3df15
2026-01-19 09:06:59 +00:00
roo hutton
0315b79f9e Merge pull request #30745 from overleaf/rh-cio-rollout-props
Expose additional user properties to customer.io

GitOrigin-RevId: 109c2dab13613d590ebcf70d685b7f4fb2e8f4af
2026-01-19 09:06:39 +00:00
Antoine Clausse
9619ad52ea [web] Reapply: Promisify ProjectLocator again (#30319) (#30582)
* [web] Promisify ProjectLocator (#30319)

* Promisify ProjectLocator

* Update ProjectLocator unit tests

* Update unit test:

Add a subfolder to reproduce issue where `endOfBranch` is called before the search has ended.

* Add missing `else` to prevent additional call to `endOfBranch`

* Simplify conditions by moving `if (element != null)` higher

* Replace `endOfBranch` by check at end of `startSearch`

GitOrigin-RevId: 95dfb47bb549698a406315db1a4b58bce5de791e
2026-01-19 09:06:01 +00:00
Alf Eaton
03a3518aae Merge pull request #30703 from overleaf/ae-prettier
Upgrade Prettier to v3.7.4

GitOrigin-RevId: 0f4434019bc7d12f2d5b7ecbb833ee20570d0706
2026-01-16 09:56:07 +00:00
Jakob Ackermann
14a7e935b8 [web] override timeout for a specific template (#30711)
* [web] override timeout for a specific template

* [web] fix junit integration for vitest

* [web] consolidate on JUNIT_ROOT_SUITE_NAME

* [web] fix unit test

GitOrigin-RevId: 3ba865e4b9c090c7bf8e07dc3d81e9bcee20d821
2026-01-15 14:19:33 +00:00
Simon Gardner
bb7b8ee227 [web] Add audit log entries for project-history-version-restore and project-history-version-download
GitOrigin-RevId: 8cfe1fee733aa886cd6518d352abd95bd9da6f77
2026-01-14 10:17:40 +00:00