Repository navigation
What's Changed
A continued focus on server and client performance, see the separate section below. We're ensuring Outline maintains it's position as the fastest team knowledge base on the market.
Highlights
- A drag handle is now available on all root-level blocks in #12167
Alt+Up/Downnow moves to the previous or next document in the sidebar in #14034- Documents and collections can now record a reason for being archived or deleted in #13784
- Added Open Knowledge Format (OKF) import in #13580
- Groups can now optionally have an icon and color in #14011
- The desktop app now shows a toast with actions when a file download completes in #13769
MCP
- Skills are now exposed over MCP in #13989
- The MCP server and OAuth provider now follow the latest MCP spec guidance in #13961
Performance improvements
- Avoided an N+1 query in share subscription notifications in #13719
documentCollaborativeUpdaternow does its computation outside the transaction in #13720- The loading bar now animates with transform in #13755
- Placeholder candidates are now filtered before conditions are evaluated in #13760
- Editor decorations are now mapped through inline edits instead of rebuilt in #13759
- Document sidebar panels now stay mounted with React Activity in #13845
- Store filter methods are now memoized in #13870
- Simple read-only comments now render without an editor view in #13871
- Document row menus and tooltips are now deferred until interaction in #13869
- Removed redundant queries from document API routes in #13884
documentStructureis now excluded from thecollections.listquery in #13886- Reduced query cost and reparsing in the comments API in #13887
- Prosemirror parsing is now memoized in
DocumentHelperin #13892 - Templates are now loaded on demand in #13895
- The statement timeout is now sent in the same round trip as the transaction start in #13937
- The recently viewed documents query is faster in #13970
- Updating the collection structure no longer loads full subtrees in #13982
- Sidebar document trees are now virtualized in #13993
- Reduced editor mount cost in #14032
- Opening a document from the sidebar now uses less main-thread time in #14033
Other improvements
- Sidebar section headers now have menus in #13801
- The child document list now supports multi-select in #13782
- Users are now notified when added to or removed from a group in #13999
- Breadcrumbs are now shown in hovercards in #13876
- Line-height is now adjusted for Chinese, Japanese and Korean documents by @Tlntin in #13822
- Date mentions are now formatted per locale in #13969
- Gmail and Outlook links are now shown after an email sign-in request in #13761
- The export menu now shows file extensions and the print shortcut in #13778
- Maximum comment length has been increased to 10k characters in #13814
- A code block that is most of the document is no longer auto-collapsed in #13815
- The find panel on mobile now has a close button and a two-line layout in #13818
comments.updatenow accepts atextparam in #13854- Added a visible uncollapse sidebar button in the header in #13872
- Group descriptions are now synced, and groups are re-synced on SSO validation in #13889
- Root domain app links now redirect to the signed-in workspace in #13923
- The group members table now shows who added each member in #14000
- A security notice is now sent to the previous address when an account email changes in #13979
- Authentication requirements on account settings routes have been tightened in #13980
- The admin service is now prevented from running in production in #13758
- Collaboration service now validates awareness identity in #13804
- Generated team subdomains no longer include the top-level domain in #13816
- Analytics events are now sent through gtag, and WebMCP tool registration is tracked in #13792
Fixes
- Service worker is now served with a no-cache header in #13716
- Native image drag copies selected images by @UmbraCi in #13635
- Pinned document cards ignore clicks and trackpad taps by @misha-sunborn in #13708
- Editor node drags show the sidebar document ghost in #13723
- Checklist with multiple items corrupts neighbouring lists in #13724
- Crash when image caption blurs during node view teardown in #13731
- Lightbox flickers at the end of the close animation in #13730
- Show notice type for list selections in #13721
- Clarify missing OAuth state errors in #13734
- Scope authentication matching to the signing-in provider in #13737
- Temporary multipart upload files are not cleaned up in #13752
- Incorrect shared document preview links in #13756
- Source uploads not removed after imports in #13757
- Guests with edit rights cannot duplicate documents by @breken-ai in #13717
- GitLab webhook integration updates in #13764
- Validate share id on public share endpoints in #13766
- Selection lands after a newly inserted notice instead of inside it in #13768
- Backspace inside a notice orphans the emptied paragraph in Chrome in #13770
- Scrollbars visible on the suggestion menu in #13779
- Table of contents closes immediately on desktop when a header is narrow in #13781
- Gap between archived/deleted banner and document title too large in #13780
- Sidebar selection changes when a prompt blocks navigation in #13785
- Group description not stored on creation in #13791
- Validate custom theme colors in #13800
- Enforce
maxLengthfor all input paths inContentEditablein #13793 - Detect new subscriptions with xmax instead of timestamp comparison in #13803
- Permission select text color too dim in #13805
- Patch edit mode drops content spliced inside container blocks in #13794
- Crash when pasting code over a selection near the end of a document in #13807
- Imported attachment keys end in "null" when no name is set by @mturac in #13750
- Revisions sometimes attributed to the wrong user in collaborative edits in #13809
- Tab after a toggle block throws for non-paragraph blocks in #13825
- Document search trigger fails when tsvector exceeds size limit in #13832
- Language detection stores nothing for Chinese, Arabic, Persian and others in #13833
- Update loop in link editor search on focus in #13840
- Editor steals focus when opening a document that was never edited in #13847
- Attachments made public when S3 ACLs are disabled in #13867
Cmd+Enterdoes not submit a new comment in #13865- Lazy editor components fail to load after a deploy in #13868
- Event listener throws when browser dispatches events during render in #13880
- Line breaks lost in Markdown table cells in #13866
- Azure profile handling in #13883
- Group timestamp not updated when membership changes in #13888
- Role badges wrap in users table in #13893
- External groups with duplicate names sync inaccurately in #13894
- Table controls around merged cells in #13897
- Allow CloudFront origin in CSP
object-srcin #13909 - Re-authorize collaboration connections on document lifecycle events in #13899
- Handle sign out events consistently across realtime services in #13936
- Header buttons not clickable while find panel is open in #13938
- Header actions overlap the window scrollbar in #13919
- Improve collaboration connection lifecycle in #13949
- Consecutive floated images not aligned horizontally in #13900
- Attachment row not destroyed on failed upload in
files.createby @okxint in #13914 - Document and collection mentions on public shares navigate outside the share in #13920
- Mobile document options drawer visible when printing in #13971
- Editor crash on keydown events without a key in #13975
findByPkignoresrejectOnEmptyfor malformed ids in #13974- Lists in table cells lost on Markdown round-trip in #13978
- Unhandled rejection when Zapier stylesheet fails to load in #13981
- Guard node view positions after the view is destroyed in #13983
- "Created by me" tab lists documents the user collaborated on in #13988
- Custom workspace logo missing from link previews of app pages in #13986
- Shared documents and unplaced drafts missing from recently viewed in #13987
- Private-use URI schemes rejected for OAuth redirect URIs by @tahsinrefat22 in #13945
- Search results not revealed in paginated sidebar collections in #13786
- Events not emitted when deleting synced groups in #13998
- Lightbox stays open when editor document is replaced in #14003
- Viewing a document with URL mentions of documents creates revisions in #14004
- Table grips hidden behind add row and column controls in #13997
- Vertical movement of hover card on enter in #14008
- Select-all checkbox shown on empty tables in #14009
- Tighten document visibility in realtime and recent views in #14007
- Spelling, grammar, punctuation, and translation string errors in #14017
- Negative sign placed incorrectly after currency symbol when sorting tables in #14018
- Percent signs lost in exported file names in #14019
- Browser languages without a region not resolved to a supported locale in #14020
- Author names lost in template variables in #14021
- Previous team subdomains not all persisted in #14022
- Share custom slugs not matched exactly when looking up shares in #14025
- Heading number periods and full text color when not editing in #14026
- Model fields keyed by minified class name in #14027
- Tapping a sidebar icon on mobile opens the document instead of expanding it in #14029
- Table cells with invalid spans in #14028
- Divider selection color, border color, and drag handle alignment in #14030
- Emoji menu conflicts with
:::notice shortcut in #14031 - Notice toolbar shows on load when document starts with a notice in #14036
- Backspace does not delete RTL text in some table cells in #14054
- Consistent client authentication on OAuth token endpoint in #14055
New Contributors
- @misha-sunborn made their first contribution in #13708
- @breken-ai made their first contribution in #13717
- @Tlntin made their first contribution in #13822
- @tahsinrefat22 made their first contribution in #13945
- @hcker2000 made their first contribution in #13876
Full Changelog: v1.10.1...v1.11.0