Commit Graph
28878 Commits
Author SHA1 Message Date
yu-i-i d59885e4e7 Track changes: Fix import after upstream converted DocumentUpdaterHandler and CollaboratorsGetter to ESM 2026-09-22 02:41:37 +02:00
yu-i-i eb16c6680d Authentication: Fix import after upstream converted AuthenticationController to ESM 2026-09-22 02:41:37 +02:00
yu-i-i a28e6445dd Authentication: Fix import after upstream converted PermissionsManager, RateLimiterMiddleware, UserCreator and SAMLIdentityManager to ESM 2026-09-22 02:41:36 +02:00
yu-i-i 80f7ad1f31 Track changes: Fix import after upstream converted ChatManager, UserInfoManager and UserInfoController to ESM 2026-09-22 02:41:36 +02:00
Rudy ERCEK f4f0e13630 Add MAX_UPLOAD_SIZE environment variable 2026-09-22 02:41:36 +02:00
yu-i-i 0e54cc56d5 Fix import after upstream converted AuthorizationMiddleware to ESM 2026-09-22 02:41:36 +02:00
yu-i-i 886014d466 Track changes: Use getProjectRanges introduced in the upstream 2026-09-22 02:41:36 +02:00
yu-i-i c7af64b81c Rename @node-saml/node-saml patch for v5.1.0 2026-09-22 02:41:36 +02:00
yu-i-i 89d73ac7a7 Fix imports after upstream converted UserController and CaptchaMiddleware to ESM 2026-09-22 02:41:36 +02:00
yu-i-i 64529664ca Fix import after upstream converted ErrorController to ESM 2026-09-22 02:41:36 +02:00
yu-i-i 3eca3de988 Bring back deleteFile removed upstream 2026-09-22 02:41:36 +02:00
yu-i-i 8f8f8992f0 Symbol palette: ui components were moved to shared folder 2026-09-22 02:41:36 +02:00
yu-i-i 7e2224dd70 Move Sympol Palette code to modules, closes #63 2026-09-22 02:41:36 +02:00
yu-i-i f60d5db8c2 passport-saml was updated to v5.1.0 2026-09-22 02:41:35 +02:00
yu-i-i c83f53d0b6 Fix: always include repository prefix in sandboxed compiles image name 2026-09-22 02:41:35 +02:00
yu-i-i 361b03b44b Remove LDAP admin check via group search in ldap-passport 2026-09-22 02:41:35 +02:00
yu-i-i a9bf9f7f63 toggleSymbolPalette now in useEditorPropertiesContext 2026-09-22 02:41:35 +02:00
yu-i-i 8d05573e96 Set use-ai capability to false 2026-09-22 02:41:35 +02:00
yu-i-i 8d6dbd1aab Track changes: convert to mjs 2026-09-22 02:41:35 +02:00
yu-i-i 3f1e136d50 Track changes: use getTrackedChangesUserIds introduced in the mainstream 2026-09-22 02:41:35 +02:00
yu-i-i 9e7209fd31 Remove OVERLEAF_OIDC_DISABLE_JIT_ACCOUNT_CREATION in favor of OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS 2026-09-22 02:41:35 +02:00
Synésio Neto dce0c52f1b Introduce an environment variable to allow JIT OIDC users creation based on their email address domain. 2026-09-22 02:41:35 +02:00
yu-i-i 40a45e6dc9 Introduce an environment variable to control user creation in OIDC authentication, closes #47 2026-09-22 02:41:35 +02:00
yu-i-i 44c25117d4 Avoid DEP0174 by removing async from callback-based getGroupPolicyForUser 2026-09-22 02:41:35 +02:00
yu-i-i a4d443f9f3 Fix login page 2026-09-22 02:41:34 +02:00
yu-i-i 0f428c3eb1 Symbol Palette: make close button visible 2026-09-22 02:41:34 +02:00
yu-i-i 119258ea95 Refactor Sandboxed Compiles 2026-09-22 02:41:34 +02:00
yu-i-i 63e1c74a8d Symbol Palette: improve keyboard input experience 2026-09-22 02:41:34 +02:00
yu-i-i 6487e204e5 Symbol Palette: get rid of @reach/tabs 2026-09-22 02:41:34 +02:00
yu-i-i 8c6109a90d Add 'poll' to clsi seccomp profile, fixes minted. Thanks, David. 2026-09-22 02:41:34 +02:00
yu-i-i 59b9cc740a Template Gallery: add support
Make Template Gallery optional; rename environment variables
Refactor Template Gallery; resolves #38 and #39:
  - replace free-text license input with a select box
  - improve visual presentation of modals and enhance keyboard interaction
Template Gallery: replace markdown-it with marked
Fix template publishing to align with upstream project context changes
Template gallery: ui components were moved to shared folder
Fix style of Templates button in navbar
Template gallery: Fix `OLModal` usage (see upstream commit 19b3834)
Template gallery: Fix import after upstream converted `CompileManager`, `ClsiManager` and `RateLimiterMiddleware` to ESM
Template gallery: Fix import after upstream converted `AuthenticationController`, `ProjectGetter`, ProjectLocator` and `DocumentUpdaterHandler` to ESM
Template Gallery: migration to 6.1.0
  - enable menu for editor redisign
  - move frontend code to modules
Template gallery: add template management authorization middleware
  - middleware to enforce template access rules
  - introduce template manager role
  - fix minor issues
Template Gallery: fix for 6.2.0
Template Gallery: fix for 6.3.0 and show language in the details
2026-09-22 02:38:49 +02:00
yu-i-i 870bf7c3a7 Track changes / comments: update backend to support frontend changes 2026-09-18 23:10:17 +02:00
yu-i-i b102d1e401 Allow EXTERNAL_AUTH to be undefined, fixes #26 2026-09-18 23:09:13 +02:00
yu-i-i 1d8e5fb92e Symbol palette: switch to 'OL' UI components and apply minor cosmetic changes 2026-09-18 23:09:13 +02:00
yu-i-i 0c8d307575 Make OVERLEAF_OIDC_USER_ID_FIELD support 'email' as a value 2026-09-18 23:09:13 +02:00
yu-i-i f3e5ca9e26 See upstream commit 42ee56e 2026-09-18 23:09:13 +02:00
yu-i-i f793a3965a Fix glitches in symbol palette after switching to Bootstrap 5 2026-09-18 23:09:13 +02:00
yu-i-i 48c4af7545 Whitelist /oidc/login endpoint, fixes #21 2026-09-18 23:09:12 +02:00
yu-i-i 5e4965e784 Add ENV variables to control SAML signature validation 2026-09-18 23:09:12 +02:00
yu-i-i 51e1c3e08b Re-export doLogout (was removed from exports in commit b9fb636). 2026-09-18 23:09:12 +02:00
yu-i-i f3d4a51e79 Refactor authentication code; add OIDC support 2026-09-18 23:02:41 +02:00
yu-i-i 54440bdb58 Allow adding extra flags to LaTeX compiler through environment variable 2026-09-18 20:56:25 +02:00
yu-i-i 6097d93c90 Enable LDAP and SAML authentication support 2026-09-18 20:48:52 +02:00
yu-i-i 3a8ef14900 Enable Symbol Palette 2026-09-18 20:42:16 +02:00
yu-i-i 79c2579d3b Allow selecting a TeX Live image for a project 2026-09-18 20:42:00 +02:00
Sam Van den Vonder e76dc99a6f Enable Sandboxed Compiles feature 2026-09-18 20:41:44 +02:00
yu-i-i 236f577974 Enable track changes and comments feature 2026-09-18 20:41:26 +02:00
yu-i-i 65ca4000b9 Redirect non-existing links to Overleaf page 2026-09-18 20:41:15 +02:00
e039ad26c5 [editor-core] extract logic for determining root doc from snapshot (#37043)
* [editor-core] hold the one threshold that decides which store owns the file tree

HISTORY_FILE_TREE_STAGE is five literals across the services that consume this
library -- web backend, web editor, real-time, third-party-datastore,
github-sync -- linked by comments saying which other copies they are aligned
with. What the docstring here says is what goes wrong: this is the single thing
that decides which storage is authoritative, a project crosses it once with no
way back, and a copy that drifts sends a whole service's writes to the store
nothing reads any more. Silently, and for good.

overleaf-editor-core is where it goes: every one of the five already depends on
it, the editor included, and the library that defines what a file tree is can say
where one lives. The consumers adopt it separately; this is the definition they
adopt.

historyIsSourceOfTruth goes with it, and refuses a stage that is neither absent
nor a number rather than reading it as low -- web's copy coerced, which turned a
corrupt stage into a permanent mongo write. Absent stays "below the gate": a
project that never migrated has no stage.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [editor-core] hold which doc a project opens on

History records it as `main: true` on the file, and nothing derives it: every
writer that creates a project has to record it, or the project compiles nothing
until the user picks a file. So the rule for choosing one, and the operations
that record it, go where a file tree is defined rather than with any one writer.

The rule is the one web has always applied, over a snapshot instead of a mongo
tree: of the docs that declare a document class, the one nearest the project
root, alphabetically among equals, so that the same files always give the same
answer. A project that already records a root doc keeps it -- that is a user's
choice and not something to re-derive.

Whether a doc could be the one is asked of content rather than of a store to read
it from: a writer creating a project has each doc's content in its hands as it
stores it, so reading them back would be a second read of every one. The choice
is then made from the pathnames alone.

The extension list joins the others in text_file_defaults for the reason they are
there: a writer holding a shorter copy leaves a project with nothing to compile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [editor-core] say why a store built for a consumer does not need getBlob

ReadWriteBlobStore is BlobStore without the lookup by hash, and the type said so
without saying why a consumer can do without it. getBlob is reached only for a
file stored as a bare hash, and one of those does not leave history-v1:
chunk_store's lazyLoadHistoryFiles attaches blob metadata to every snapshot and
change it serves, so a file arrives already knowing its own lengths.

That is what the contract rests on, and a store that reimplemented the
classification rule to answer the lookup anyway would be a second opinion on
whether a file is editable. The reasoning was what was missing, rather than the
type.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [editor-core] say what makes a doc a root doc candidate

The sentence naming the two halves of the check had lost the first one, and read
"named as a root doc may be named". It is the extension that is tested: one of
DEFAULT_ROOT_DOC_EXTENSIONS, and a document class declared in the content.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [editor-core] hold the doc flags a file's metadata can carry in one place

`main` is not the only flag a doc carries -- `mainBibliography` marks the file
references are added to -- and both live in the same metadata, which
SetFileMetadataOperation replaces wholesale rather than merges. So every writer
that sets one has to write the others out again, and every reader that asks
whether a file is a doc has to know the whole list.

root_doc was spelling all three of those for itself against `main` alone: it
tested the key by hand, refused a file whose metadata held anything else, and
cleared the metadata to `{}` when moving the root doc elsewhere. Against a file
that is also the main bibliography, the first two refuse a legitimate root doc
and the third silently drops the bibliography.

The helpers answer it once: which keys are doc flags, whether metadata holds only
those, and what metadata with one flag changed looks like. root_doc uses them
throughout, and the schema takes both flags on one file.

Co-Authored-By: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [editor-core] ask the snapshot which doc carries a flag

Finding the file a doc flag is set on is the same search whichever flag is being
asked about, and it belongs to the snapshot rather than to the caller: it walks
the snapshot's own pathnames, and it is the snapshot that knows a file's
metadata without its content being loaded.

root_doc's mainPathname is that search for `main`, and now delegates. It gains
the check it was missing: a file whose metadata holds anything besides doc flags
came from outside the editor, so a stale `main` on it does not make it the root
doc -- which is already what setMainPathnameOperations refuses to write.

Co-Authored-By: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [editor-core] drop mainPathname for the snapshot method behind it

It became a second name for `snapshot.getPathnameWithDocFlag('main')` and nothing
in the library was left calling it but chooseRootDoc, which asks the snapshot
directly now. Its two tests go with it: Snapshot's own cover the same two answers,
and more of them.

Callers outside the library ask the snapshot too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: b3f503aa3e94ea8b6524d83f910fe33dc381c0a5
v6.3.0
2026-09-17 12:08:31 +00:00
Eric Mc Sween 0ec99c7e3e Merge pull request #37028 from overleaf/em-bibtex-stream-parser
[web] add a streaming bibtex parser

GitOrigin-RevId: 5397ba546a3d5b3436a80eab0467244969b280d0
2026-09-17 12:08:28 +00:00