* 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
* Add tooltip next to "Overleaf AI" row
* Add AI to features list
* Fix tests
* Revert changes which will be overwritten by https://github.com/overleaf/internal/pull/31993
* Add missing import (conflict with main)
GitOrigin-RevId: ce236670bd63701a3976a3eb84dc695ee0e928b1
Apply themed foreground color to .cm-vim-panel so the Vim command input inherits a readable color in mixed overall/editor theme combinations.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
GitOrigin-RevId: d31b09e64fc49fce551eee7ecead0d215aa206bc
* Initial working version of auto complete button component
* generalising button auto complete for use in bibtex entry form
* Adding optional fuzzy searching
* Restoring delete optional field
* Removing dropdown specific styling
* Updating item/group interface for autocomplete
* Auto complete allowing full keyboard nav functionality
* Custom class for dropdown-upward
* Adding error validation for duplicate name with standard field
* fixing type errors
* Replacing Fuse with MiniSearch
* Adding clear button and frontend tests for ol-autocomplete
* Adding fuzzysearch option to autocomplete story
* removing unused vars and noddy comment
* Fixing lint failure
* Updating fuzzy search threshold
* Using downshift natural highlight
* Required label for aria compliancy
* changing how create item is handled
* addressing review comments
* Using AutoExpandingTextArea for optional fields and hooking in validation
* Formatting
* Requiring items prop for ol-autocomplete
* Fixing type failure in test
GitOrigin-RevId: 9b8f719fbb2bdd75fc1d5a9076908559040a8a78
* fix: Add keyboard navigation for group member picker combobox
* Add role="presentation" to footer list item since not a selectable option
* Dispatch change event when selecting option via keyboard
* Sync aria-selected state with checked radio on selection
GitOrigin-RevId: c20c11a9ca063ca3121fda28944ad7f91eeac9e9
* merging ide-redesign/components/file-tree into features/file-tree
* moving ide-redesign/contexts/settings-modal-context to features/settings/contexts
* use-collapsible-file-tree.tsx → features/file-tree/hooks
* use-focus-on-setting.tsx → features/settings/hooks
* use-project-notification-preferences.ts → features/settings/hooks
* use-rail-overflow.tsx→ features/ide-react/hooks
* deleting use-switch-enable-new-editor-state.ts
* use-toolbar-menu-editor-commands.tsx → features/source-editor/hooks
* npm run extract-translations
* modifying the test to target correct buttons and removing a test for old component
* adding a test back and modifying it
* changing the test
GitOrigin-RevId: baa1e9a992c88b84313eea82161354d4958cf1ef
* 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
* [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
* Compute student discount from prices
* Add presentational discount in the checkout page
* Put student discount row behind feature flag
* Update code and tests to clarify that `currency` is always defined
* Introduce `usePlanPriceItems` to normalize the list
* Simplify `usePlanPriceItems`
Co-authored-by: Olzhas Askar <olzhas.askar@overleaf.com>
* Remove student discount percent
* Update Standard Monthly/Annual names in the checkout page
* Simplify `getRecommendedCurrency` mock
* Fix testid: price-summary-plan
* Add test on stripe-price-summary
* Add `Math.abs` on accessibility discounted info (!)
---------
Co-authored-by: Olzhas Askar <olzhas.askar@overleaf.com>
GitOrigin-RevId: f297eab4b6abd6a84842054667a3734cb33866fe
* 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