Commit Graph
100 Commits
Author SHA1 Message Date
KristinaandJimmy Domagala-Tang 44910202f3 [web] open comments and changes via url (#36546)
* [web] open a comment from a URL

* [web] add "View comment" button to digest email

* [web] open a tracked change from a URL

* [web] add "View suggestion" button to digest email

* [web] open the review panel from an open=review-panel URL

* [web] drop the digest email CTA and collapse the deep links to t=review

* [web] add an Open project button to the section overflow row and plain-text view links

* [web] validate the comment and change deep-link ids as object ids

* [web] collapse the deep-link resolvers into a single DeepLink component

* fix: scrolling into view when below the fold

* fix: address claude review

* fix: style adjustments

* fix: updating types to accomodate accepted/rejected changes

---------

Co-authored-by: Jimmy Domagala-Tang <jimmy.domagala-tang@overleaf.com>
GitOrigin-RevId: dab535591a93e1c3849a6b2a0dcc3e3934354385
2026-09-17 12:07:22 +00:00
KristinaandJimmy Domagala-Tang 9c005e4e54 [web/document-updater] display preview for accepted/rejected tracked changes (#36240)
* [web] add preview payload to track-change notification types

* [doc-updater] pass accepted/rejected change data through to web for previews

* [web] snapshot change preview onto accepted/rejected notifications

* [web] render resolved change previews instead of accepted/rejected count lines

* [web] add unit coverage for accepted/rejected change preview flow

* fix: notification carries multiple previews per accept/reject batch; extract shared group helper

* fix: one preview per accept/reject action, drop adjacency grouping

* fix: move buildResolvedChangePreviews out of the email builder class

* fix: type error, make tests more explicit

* fix: render resolver below preview

* fix: overflow text, alignment

* fix: test error

* fix: resolved count

* [document-updater/web] send sparse change preview instead of full doc lines

* fix: store sparse preview, hydrate at render, drop CE gate

* fix: advance slice cursor past tracked-delete text in sparse preview

* fix: inline buildChangeGroupPreview

* fix: changePreviewBuilder -> sparseChangePreview

* fix: rm change_contributors

* fix: copilot flagged testing issues

* fix: hydrate and truncate change preview at write time

* fix: avoid materializing full doc text when slicing preview window

* fix: update reject preview test to hydrated shape

* fix: accepted delete removing context

* [document-updater/web] split resolved change previews into one per change cluster

* fix: narrow cluster userIds to string[] for typecheck

* feat: updating to use zod schema for previews

---------

Co-authored-by: Jimmy Domagala-Tang <jimmy.domagala-tang@overleaf.com>
GitOrigin-RevId: 0740713c715a61a220180f353e497b27da6a5b0f
2026-09-17 11:58:14 +00:00
Kristina 42f441b498 [web] disable editor tabs in review panel tests (#36504)
GitOrigin-RevId: baefd7028b89c1a157a7f279452c953843031f08
2026-09-17 11:54:12 +00:00
Kristina 3e11985e59 [web] prevent dangling comments by using the thread's doc id in operations (#36423)
GitOrigin-RevId: 9f3ddf282a058e92419e772b583169ac8bfe4af9
2026-09-17 11:54:06 +00:00
Kristina 00b594a14f [web] block idle connection-restored events (#36425)
GitOrigin-RevId: 74b142f72f7982e6df9e0208965d8372e23afc74
2026-09-17 11:52:55 +00:00
Kristina c628d82f07 [web] rm 30s filter for connection-restored events (#36315)
* rm 30s filter for `connection-restored` events
* rm unnecessary lastOutageRef
* stop sending idle events

GitOrigin-RevId: 6ff228c878496ad25bc8cc4c1acb4da5a88dce15
2026-09-17 11:50:51 +00:00
Kristina 2e1a313ccd [web] resize mentions dropdown styles (#36172)
GitOrigin-RevId: e0f4ff0d51f168569ad54fa896ab25c399278ebb
2026-09-17 11:48:53 +00:00
Kristina c5f3726eda [web] update comment placeholder for mentions (#36167)
GitOrigin-RevId: c702e00004d8dfcf243425503459f558973a657b
2026-09-17 11:48:50 +00:00
Kristina f179e89c0c [web] add analytics for @mentions (#36144)
GitOrigin-RevId: 9fb1447166eb5ee82867466abc9af2207c886f8b
2026-09-17 11:47:22 +00:00
Kristina 20a4144cf9 [web] add events for out of sync modals (#36132)
GitOrigin-RevId: f9673defab0d06d8e814bf2d43cbb7e19eb249a7
2026-09-17 11:47:19 +00:00
Kristina b53bfbe8a4 [web] analytics for flaky connections (#35916)
* emit connection-restored events
* emit post-offline sync success/failure events

GitOrigin-RevId: 3fce5f328d726aeb5edf39f14239ef6e5bda2f99
2026-09-17 11:44:19 +00:00
Kristina 68dafe202c [web] remove beta icon from notifications settings & survey links (#34989)
GitOrigin-RevId: bdd19ccf117be8aa051c02dfa50665fdbc874da2
2026-09-17 11:43:56 +00:00
Kristina 20027166fb [web] recover tracked changes after going offline (#35961)
GitOrigin-RevId: 8d34eb879de91a3b348fc1230eb3ce4d532194e0
2026-09-17 11:41:17 +00:00
Kristina 1f97dbc789 [web] do not show the cannot sync modal if still offline (#35939)
GitOrigin-RevId: 20c6f138e05fb8459b27f8ea9b376c21c7820799
2026-09-17 11:41:13 +00:00
Kristina b624adf885 [web] trigger post-offline sync result treatments (#35854)
* 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
2026-09-17 11:39:03 +00:00
Kristina 6af1d79cd6 [web] reset all css variables impacting the comment field (#35681)
GitOrigin-RevId: b66f612e186434208a658d64ccc6346c37f23182
2026-09-17 11:37:54 +00:00
Kristina 6f8a1be171 [web] emit mention notifications (#35611)
GitOrigin-RevId: 4852c217a8bf7f1fe71696604acbb0f7434d3f2a
2026-09-17 11:36:42 +00:00
Kristina 4e2840e247 [web] remove mentions from chat message editing (#35761)
GitOrigin-RevId: 6cd27490485196b82a9c4d9ffa19ba5d8e10922d
2026-09-17 11:36:38 +00:00
Kristina 4d1e9677e1 [web] set up types for mentions (#35609)
GitOrigin-RevId: 70ebe11659072a7df09be916d7a01cfd87b73c81
2026-09-17 11:34:37 +00:00
Kristina 5cde47d3d5 [web] revert adding mentions to chat (#35592)
GitOrigin-RevId: 9765993318e0467a97b7ced695fab55df29146a2
2026-09-17 11:33:08 +00:00
Kristina 74d7a649c8 [web] fix comment input in visual mode (#35665)
GitOrigin-RevId: 7aced47d90a856fe9ebcb07f8148c4987b3583c8
2026-09-17 11:33:05 +00:00
Kristina 76e004b3e2 [web] save doc to sessionStorage while editing offline (#35519)
* 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
2026-09-17 11:30:42 +00:00
Kristina dfd816801d [web] add disconnected state to offline indicator (#35378)
GitOrigin-RevId: 692dc16cee738a8b05353717044a4063c3dd8e8a
2026-09-17 11:28:30 +00:00
Kristina 3700cf5968 [web] fix lint error in unsaved-docs.spec.tsx (#35460)
GitOrigin-RevId: 4c12b5906acff9b6d81a06726d97553d2efcda0a
2026-09-17 11:26:39 +00:00
Kristina 0b06fda437 [web] adjust global notifications link in settings modal (#35455)
GitOrigin-RevId: 49e91736fc6cb69329ad19421f208cc220d582ac
2026-09-17 11:26:26 +00:00
Kristina 26f12a6366 [web] hide all toasts when offline (#35400)
GitOrigin-RevId: cf179bf7a761ddaae56f3e5bab6327b0f3625fb5
2026-09-17 11:26:23 +00:00
Kristina 6f55a97262 [web] hide online collaborators when offline (#35403)
GitOrigin-RevId: bea77d919c63740e0049467327720036876f64ee
2026-09-17 11:26:19 +00:00
Kristina 8741846df8 [doc-updater] fix unbounded Redis key growth in project notifications cron (#35425)
* delete timestamp notification keys for solo projects
* add fallback 7d TTL for keys

GitOrigin-RevId: e0493e74b14b861863afc1d4ef5fa181432ad450
2026-09-17 11:25:41 +00:00
Kristina 7fe05140b0 [doc-updater] add mongo logging to project notifications cron (#35421)
GitOrigin-RevId: db8a84f2079c57b5d5f1ae5447f8526dfb0a6d67
2026-09-17 11:25:37 +00:00
Kristina 77ce277a8b [web] Add offline indicator to toolbar (#35368)
GitOrigin-RevId: 81127bff21afb6aadcf175ba1767a2629f01d747
2026-09-17 11:23:02 +00:00
Kristina d3920e76d3 [document-updater] log duration ms for project-notifications job (#35238)
GitOrigin-RevId: 6a654e4140a6640298d97fdff4f260d6a1be0d99
2026-09-17 11:22:59 +00:00
Kristina 1765f6be51 Merge pull request #35223 from overleaf/lg-linkify-it-security-upgrade
[Security upgrade] bump linkify-it to patched version via resolutions

GitOrigin-RevId: a3e689de7d4842c00b2d6d5ac7631224ce76ad1a
2026-09-17 11:20:41 +00:00
Kristina c2ba7955dc [web] adjust styles in notifications settings (#35143)
GitOrigin-RevId: 5867072acd6e38c1a00a252b13e4ef4169ef7b79
2026-09-17 11:17:01 +00:00
Kristina 4622848a19 [web] optimize process notifications and add monitoring metrics (#34699)
GitOrigin-RevId: 411355cbdbb25d871b9cfb2afbb0ad235041337f
2026-09-17 11:12:59 +00:00
Kristina 28ad3b03b7 [web] add email notifications dry run split test (#34653)
GitOrigin-RevId: 62f73ce3850b994bf2a4a054edd6fa62134213a9
2026-06-26 08:08:18 +00:00
Kristina a53b164b45 [web] email content previews for notification emails (#34576)
* add content previews to notification emails
* add fetcher for doc lines
* gate content previews behind a split test
* make composable blocks for rendering

GitOrigin-RevId: c8df384d55a301084b98df76fd3edd6dde6ea50c
2026-06-22 08:06:25 +00:00
Kristina eb031f4c3c [web] parse mentions in comments (#34055)
GitOrigin-RevId: 185485a3ac9670c46d0e7c43bf281a5ffee3f784
2026-06-09 08:05:58 +00:00
Kristina dce6bce9fa [web] update notification preferences on ownership transfer (#33854)
GitOrigin-RevId: c20c7f992d9dbdd6e9f80feafc7b53587c122dd7
2026-06-09 08:05:53 +00:00
Kristina 6d8e4e4c5b [web] ship updated email templates (#34180)
GitOrigin-RevId: fa04ff132ec898efdb4e2d35df8b8a0b09219d5e
2026-06-09 08:05:45 +00:00
Kristina 5f7e81aafc [web] add stats to process_notifications cron (#34049)
GitOrigin-RevId: ea6890f2726cba268f1e5eead0643d03757b8dff
2026-05-29 08:05:42 +00:00
Kristina 78dd0a8681 [web] update email base templates (#33791)
* update email template design
* gate email template on split test

GitOrigin-RevId: 2e0a1d9abf11a0c3f16e103511191d43d542b8a4
2026-05-28 08:05:59 +00:00
KristinaandDomagoj Kriskovic 577ff63eca [document-updater] batch collaborator lookups in project_notifications.mts (#33974)
* Refactor project collaborator check to handle multiple project IDs and optimize Redis caching
* Batch mongo queries and use promiseMapWithLimit

---------

Co-authored-by: Domagoj Kriskovic <dom.kriskovic@overleaf.com>
GitOrigin-RevId: 7d568b4b05894465c930595ebd3f214ebc5c72c0
2026-05-27 08:07:35 +00:00
Kristina 3bd908d963 [document-updater] update logging in project_notifications script (#33924)
* reduce logs for project_notifications script
* include cache hit/miss stats

GitOrigin-RevId: 6aac74a18f2ad352b0e8609f0ad2b6c831bd9da5
2026-05-25 08:05:57 +00:00
Kristina 88eb599d4e [document-updater] increase scanStream COUNT for project notifications (#33833)
* increase scanStream COUNT for project notifications
* fix Bull queue.add delay option being ignored
* parse timestamp to number before adding to notification queue
* fix outdated comments in project_notifications script

GitOrigin-RevId: 98bb638228550b2f6f2de90280a06c47e022cf96
2026-05-22 08:06:03 +00:00
Kristina 2f5d838e0f Merge pull request #33704 from overleaf/kh-add-reject-change-preference-check
[web] add reject tracked change preference check

GitOrigin-RevId: b55dba21b3d4f42e68528d2b5906862c57794cd1
2026-05-18 08:06:57 +00:00
Kristina d8df893593 [web] rm unnecessary webpack configuration (#33587)
GitOrigin-RevId: d9f305e59af2585db096a83c4cbd41ba5f785184
2026-05-14 08:05:39 +00:00
Kristina b3beca0e8d [web] isolate cypress webpack caches (#33516)
GitOrigin-RevId: 65f8bf162df4fa3b67c8ac19f36fd578251e88f4
2026-05-12 08:05:24 +00:00
Kristina bd604063e6 [web] add preferences to control all implemented notifications (#33320)
* feat: add granular controls for other features
* feat: add filtering to notifications that were missing them
* refactor: rm duplicate thread fetches
* fix: reduce permissions to fit spec (all === new comments/tracked changes, replies === only if also a participant)
* fix: include mentions in types

GitOrigin-RevId: b4a09ef59e5cf4de2e07d5b9a13c31fc1cf81a31
2026-05-08 08:08:30 +00:00
Kristina 40954ae2dc Merge pull request #32949 from overleaf/kh-default-invitees-to-replies-only
[web] default invitees to replies only

GitOrigin-RevId: e3198403917e2679e49e27aaa87ae111675dc974
2026-05-08 08:08:17 +00:00
Kristina fdc939fe0a [web] emit project:membership:changed when removing self from project (#33143)
GitOrigin-RevId: 5a101add69e0077f667f98f5b95c2476ad3085d4
2026-05-05 08:05:34 +00:00
Kristina a6ac7bdd41 [web] catch failed requests to project/doc metadata endpoints (#33139)
Unhandled promise rejections from these fire-and-forget calls were
surfacing in Sentry. Add .catch(debugConsole.error) to suppress them.

GitOrigin-RevId: a14cd0a3956a2b551210723ad56e7ec5e354a7a7
2026-05-05 08:05:26 +00:00
Kristina d73e2b063a [web] add email notification surveys (#33063)
* feat: update survey link in settings modal
* feat: add survey link to email footer

GitOrigin-RevId: acd22281931bb98eebafa7072dca1c54d48cd972
2026-05-05 08:05:21 +00:00
Kristina 9a670805c4 [scripts] handle creating custom prices (#32607)
GitOrigin-RevId: 3950698ca21de5d8ee87d0531e1e9f562aeb76f8
2026-05-04 08:05:46 +00:00
Kristina a46ca0705f [web] update refund policy in zh-CN from 30 days to 14 days (#33236)
GitOrigin-RevId: 27f6b116b2cc344449417e7e32f7b93784919977
2026-04-30 08:05:18 +00:00
Kristina b556fd40b5 [web] support email sender customization for email notifications (#33035)
GitOrigin-RevId: 9aa298c233c1f314ef3bdb381c20692bd0d4e212
2026-04-27 08:06:35 +00:00
Kristina 4db3982c08 [web] rename BaseWithHeaderEmailLayout -> BaseEmailLayout (#33026)
GitOrigin-RevId: 16967d34d5128a34ec9ddf382eb664e5a8e45065
2026-04-27 08:06:31 +00:00
Kristina b6ec7945f4 [web] update copy in email notifications (#32912)
* add footerMessage to base email template
* add customized subject line and CTA
* add _getBundledActivityList

GitOrigin-RevId: e70c0955485b0892f31e20daa0430faef80b0d64
2026-04-23 08:07:01 +00:00
Kristina a64d1bbb6a [web] display global off treatment in settings modal (#32942)
* display global disabled state
* show loading indicator while project notification preferences load

GitOrigin-RevId: d7e905aaa3fc7b15b54bf99caeabf60c1e5d8050
2026-04-23 08:06:56 +00:00
Kristina 9a129e7cab Merge pull request #32939 from overleaf/kh-update-settings-modal-language
[web] update copy & layout for notifications settings

GitOrigin-RevId: 13b6b78b0b2bddd9d0137362a14bfdbdba9d7d20
2026-04-23 08:06:47 +00:00
Kristina 5c92f85d51 [web] track email notification settings interactions (#32719)
* send setting-changed event
* emit event for global mute notifications

GitOrigin-RevId: 0705ffc331185e0f49fa1103e856040548d4f8bf
2026-04-16 08:05:45 +00:00
Kristina a1ddb69247 [web] track email notification sent and email link clicked (#32715)
* emit email-notification-sent event
* use UTM tags to track email link clicks
* do not include utm_id on session at registration

GitOrigin-RevId: 24091bf8923fa11b8ba5ebfc63a0cea5c0f9f40c
2026-04-16 08:05:40 +00:00
Kristina 21ea6ab989 [web] open project notification settings from URL (#32689)
GitOrigin-RevId: 8d6e1c2d7cb63c1597d952d546121f030b79d126
2026-04-16 08:05:36 +00:00
Kristina 8dce78cd97 [web] rename notifications env variable (#32654)
GitOrigin-RevId: f319fbae7da4c85d21e6c100bb2f6e6ef7c472b3
2026-04-09 08:07:07 +00:00
ad853d661a [migration] fix issues found in finalization script during stage 3b (#32472)
* accept taxInfoPending as tax id comparison point
* convert recurly unit amount to minor units correctly for no cent currencies
* Use original subscription currency in finalization check
* make it easier to spot migrated with tax info pending

---------

Co-authored-by: John Lees-Miller <jdleesmiller@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: d3c74032bc06369fcf6bafb4cfaff85c49a3cfef
2026-03-30 08:05:28 +00:00
Kristina e4e4193d55 [web] update webhook handler to include cancel_at (#32165)
* update webhook handler to include cancel_at
* guard against accidentally marking subscription event as canceled
* fix cancellation edgecase (reactivating a subscription that was canceled from Stripe Dashboard and also has a non-migration schedule)

GitOrigin-RevId: a872e91afa19094d4ae859293fc9669ea3e528f2
2026-03-26 09:06:32 +00:00
Kristina fe7dad5644 [migration scripts] detect account drift between Recurly and Stripe (#32315)
* add a script to detect drift between recurly and stripe
* only flag when Recurly updated since subscription created in Stripe
* add --comparison-date option instead of stripe subscription created time
* reduce API calls by checking Recurly update time earlier

GitOrigin-RevId: f0ecb5644f7445603da020a46e32622fcd2eebf4
2026-03-25 09:05:43 +00:00
Kristina d6ec60017e [web] update scripts to release migration schedules once migrated (#32150)
GitOrigin-RevId: 2fcf773649d2f87764c0cb93bb5623a17647b07c
2026-03-18 09:06:48 +00:00
Kristina d0124862d8 [web] log metrics for mandate.updated Stripe webhook (#32160)
GitOrigin-RevId: ebe83b64f4335b92d5a4d24e1748d7c335c06307
2026-03-18 09:06:43 +00:00
KristinaandJohn Lees-Miller 6c6c807ca0 [web] add script for checking tax estimations (#31404)
* add script to query taxes
* Use full address to determine tax
* use all applied taxes
* include status in tax script output
* add warning to the script
* only normalize US and CA
* default to RoW if no countries specified
* use RateLimiter and pqueue
* only normalize US postal codes

---------

Co-authored-by: John Lees-Miller <jdleesmiller@gmail.com>
GitOrigin-RevId: 01ecc1b1461e955b6c6a798a3a568e5b5f6bbcdb
2026-03-11 09:06:02 +00:00
Kristina aa2ce6f675 [web] handle duplicate customer accounts better (#31677)
* [web] extract card comparison function

* [web] throw if more than 1 duplicate customer account

* [web] attempt to pick the pre-existing account

* [web] overwrite email of duplicate account

* Update services/web/scripts/helpers/migrate_recurly_customers_to_stripe.helpers.mjs

* [web] handle setting being undefined

* [web] allow other account to be reused if migrating account is using paypal

* [web] allow matching for customers with no payment method

GitOrigin-RevId: 7d8eeb4734a20c09ce3e0d73095e28696e212549
2026-03-06 09:07:40 +00:00
Kristina 820adf568e [web] add support for migrating paypal subscriptions (#31607)
* support Paypal for migration
* remove sensitive payment info in logging
* add `resolveStripeCustomer`

GitOrigin-RevId: a8fc7de4a4bf3971c5221a0dec3fc279d8d2f67d
2026-02-20 09:06:43 +00:00
Kristina 8872d851ec [web] rm unnecessary scripts (#31631)
GitOrigin-RevId: c6388685bd9cd43d8d22e38f25db4ee579def808
2026-02-19 09:06:45 +00:00
Kristina 85066c6cb3 [web] various migration script improvements (#31538)
* make warnings more eye catching in clean up dry run
* only increment processedCount after processing
* always rm recurlyAccountCode
* check if existing Stripe customer already has a subscription
* ensure no other customer accounts share the user id
* set recurly_to_stripe_migration_status to cancelled in cancel script
* add script for updating metadata of canceled migrations

GitOrigin-RevId: 3331de480e99774679ff2649b90d41e981a8fdef
2026-02-18 09:05:34 +00:00
Kristina 8ecb575d06 [web] apply runtime improvements to migration cleanup scripts (#31488)
GitOrigin-RevId: bfd7a34ecc5ab0b89a0aebae3f7bec995d490b31
2026-02-12 09:05:56 +00:00
Kristina 21ccf42ae8 [web] add script to bulk cancel subscription schedules (#31469)
GitOrigin-RevId: 1b037eb1335dd14a302bf478c3a4b71e219b074e
2026-02-12 09:05:19 +00:00
Kristina d6cda7f770 [web] throw an error if multiple active subscriptions found (#31458)
GitOrigin-RevId: e0c2fe9ab73b0f8800f419ac1a3ff78adce29c5c
2026-02-11 09:06:47 +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
Kristina f8d74187e1 [web] prefer mongo email when sending data to customerio (#31378)
GitOrigin-RevId: 33e137239d505e7feb6f6e1b2a00d7b5e60d0880
2026-02-10 09:06:08 +00:00
Kristina a184a0c32f [web] handle pending changes in finalization script (#31342)
GitOrigin-RevId: 3f17c32d897e818d0ae1b0e33e66350de8513a8a
2026-02-10 09:06:03 +00:00
Kristina 1f5fec628b [web] apply runtime improvements to the finalization script (#31360)
* extract RateLimiter
* remove unnecessary remapping and wrappers

GitOrigin-RevId: fda1cdefa15f2f3fa9a042346a5ba4243897b90a
2026-02-10 09:05:58 +00:00
Kristina 4decfd343d [web] update finalization scripts for phase 2 (#31293)
* handle group quantities & add-ons when detecting changes
* include analyticsId in output
* flag users in customer-io
* rely on customer metadata for tax info needing updating
* rollback customer.io data in rollback script
* refactor how we handle errors when migrating to avoid losing data for output

GitOrigin-RevId: f77430b0b366217ac85b72dde92e9364dc879023
2026-02-06 09:05:07 +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
Kristina 4bae5f406d [web] fix pending downgrade bug (#31235)
GitOrigin-RevId: a83f21b87abc8758f94900d6af151ea10928047d
2026-02-04 09:06:29 +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
Kristina 3000a9108d [web] fix source on analytics mapping in finalization script (#31143)
* fix source on analytics mapping in finalization script
* add script to redo mappings for finalized subscriptions

GitOrigin-RevId: a62af6c6c7ae11f9bea62ed643c8dfa7595ba99b
2026-01-30 09:06:17 +00:00
Kristina d6fbed2a74 [web] check end state before terminating (#31136)
* check and log unexpected end states before terminating Recurly subscriptions
* update finalize and rollback scripts to only postpone active subscriptions

GitOrigin-RevId: 7fe6ffa56cb8ddf19133eb0cb59e39fd783430b7
2026-01-30 09:06:12 +00:00
Kristina ac1a61cafa [web] remap customer.metadata.recurlyAccountCode in migration scripts (#31097)
* remap customer.metadata.recurlyAccountCode to customer.metadata.userId
* verify recurlyAccountCode is what we expect it to be before setting

GitOrigin-RevId: 8ab1d5e311dba34bb8c15d01096f6c31273a7506
2026-01-29 09:06:08 +00:00
Kristina c876bf2c5f [web] set default payment method based on recurly data (#31025)
GitOrigin-RevId: ad7ffe400748ace66aa7e4775eedb738028c8a0c
2026-01-27 09:06:45 +00:00
Kristina 49591a5190 [web] add scripts to finalize recurly -> stripe migration (#30925)
GitOrigin-RevId: 2149aa516a00b18927fea46e9241496b74478152
2026-01-26 09:06:33 +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
Kristina 29f5026dda [web] fix import products script when tax code is null (#30605)
GitOrigin-RevId: 32ca603376db7f186283514067178d27038a865d
2026-01-12 09:07:16 +00:00
Kristina 4acf79cd54 [web] only emit assistant-add-on-purchase for add-on purchases (#30288)
GitOrigin-RevId: 084e28f02d348fe5504a38f1405250ea2f7b67ce
2025-12-17 09:05:51 +00:00
Kristina c6fc921c11 [web] add script for updating prices for existing Stripe subscriptions (#30216)
GitOrigin-RevId: 8f20a6ba9c7a737bb304d8698c4fbcb06b6ddc8c
2025-12-12 09:06:32 +00:00
Kristina b9224ea11d [web] update recurly change prices script (#30006)
* update recurly change prices script
* write to /tmp/ and add an option to write to stdout
* add analytics events
* default script to renewal

GitOrigin-RevId: 5ebb17ee2c1ad70128391745a994ea6c74c739f9
2025-12-05 09:05:10 +00:00
Kristina eafef60b75 [web] update Stripe archive script to avoid archiving actively used prices (#29978)
* make Stripe export script only export active products and prices
* add a gitignore for the scripts/stripe/output

GitOrigin-RevId: 975d84077c3940d4f5af518e5f8292ea455e1c3a
2025-12-03 09:05:56 +00:00
Kristina 4a9b66627e [web] update pricing settings for Nov 2025 update (#29947)
* update pricing settings for Nov 2025 update
* update `StripeLookupKeyVersion` type
* update unit tests to match new Stripe version

GitOrigin-RevId: f5df5167b605b6667cc19edad09fb2c0f72a293b
2025-11-28 09:06:01 +00:00
Kristina 832068c6e6 [web] fix bad import in new Stripe scripts (#29914)
GitOrigin-RevId: de3be4782ae5e5d0ee5b97e25c7103b5d1e88c9f
2025-11-27 09:05:40 +00:00
Kristina 731bf1d8b6 [web] add scripts for updating Stripe prices (#29858)
* update generate recurly prices script to skip stripe-only prices
* add script for creating new Stripe prices from a CSV
* add script to archive Stripe prices by version key
* add script for exporting Stripe products and prices
* add script to import Stripe products

GitOrigin-RevId: 3c9cf8037d956b9532c3efed5fe8d63f8be53a93
2025-11-27 09:05:35 +00:00
Kristina 42fa9701e5 Merge pull request #29714 from overleaf/kh-rm-dead-sessions-code
[web] remove dead code from Stripe hosted checkout

GitOrigin-RevId: 47372e320dbcee44e04b3bd731a585633433a5c8
2025-11-19 09:06:14 +00:00
Kristina 4e4c6010db [web] rm unused SetupIntentSucceededWebhookEvent (#29708)
GitOrigin-RevId: 9c8cd77c84be66c2032d89b3b4c65ce999c9ccbe
2025-11-19 09:06:09 +00:00