10110 Commits
Author SHA1 Message Date
Tom MoorandGitHub ade792f709 feat: Add ability to duplicate collection (#13197)
* feat: Add ability to duplicate collection

* Add confirmation dialog
2026-07-29 21:28:59 -04:00
Tom MoorandGitHub f228714c7a fix: googletagmanager not included in CSP unless enabled through env (#13195)
* fix: googletagmanager not incuded in CSP unless enabled through ENV

* Remove other points of CSP surgery, hey it proves the value of the refactor
2026-07-29 20:48:37 -04:00
Tom MoorandGitHub 97964071f2 fix: Cannot duplicate document from read-only collection (#13198)
* fix: Cannot duplicate document from read-only collection

* Improve validation
2026-07-29 20:48:32 -04:00
Tom MoorandGitHub f78f285ec0 feat: Improve keyboard shortcuts guide ally (#13193)
* fix: Ally for keyboard shortcut guide

* Remove translations

* feedback
2026-07-29 19:17:11 -04:00
Tom MoorandGitHub f84ca3b9c3 Display model title in dialog header (#13196)
* Display model title in dialogs

* feedback
2026-07-29 19:12:24 -04:00
Tom MoorandGitHub 4c78dd8ade fix: Memory leak in cancan cache (#13194) 2026-07-29 18:20:47 -04:00
Tom MoorandGitHub a9d31d3882 feat: Add color swatch hover card (#13192)
* feat: Add color swatch hover card

* refactor
2026-07-29 18:09:17 -04:00
Tom MoorandGitHub f8ccdf143c fix: urls.unfurl does not correctly treat as internal on FQD (#13189) 2026-07-28 21:54:17 -04:00
Tom MoorandGitHub 7bc6a3ca79 Add rubber-banding to sidebar resize (#13188)
* Add rubber-banding to sidebar resize

* refactor
2026-07-28 21:08:09 -04:00
c1ae5aa86e fix: Button elements in DocumentMeta incorrectly rendered as links (#13187)
* fix: Button elements in DocumentMeta rendered as links

* fix: Expose comments sidebar state on toggle button

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-28 20:53:52 -04:00
Tom MoorandGitHub 2ad5762523 fix: Crash on open share menu when receiving group membership over wss (#13186) 2026-07-28 18:22:51 -04:00
Tom MoorandGitHub 1fba97f8b6 fix: Mangled class names cause x is not a function in prod (#13184)
* fix: Mangled class names cause 'is not a function' in prod

* feedback, switch to WeakMap
2026-07-28 18:18:29 -04:00
Tom MoorandGitHub 71e9f1a5df Remove cache mutation in unfurl (#13183) 2026-07-28 17:59:58 -04:00
82419bbb0f fix: Don't report failed dimension loading to Sentry (#13185)
Image and video dimension loading failures now warn and resolve undefined
rather than rejecting, which surfaced as unhandled errors in Sentry.

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-28 17:59:18 -04:00
Tom MoorandGitHub 31374d4099 perf: Adds a short-lived cache for nested policies (#13172)
* perf: Adds a short-lived cache for recursive policies

* Freeze default object

* Add additional tests

* Refactor to use ALS

* Remove redundant depth
2026-07-28 17:44:47 -04:00
Tom MoorandGitHub 9b03db016c fix: Recalculate memberships in the same transaction when moving doc (#13182)
closes #13181
2026-07-28 17:44:16 -04:00
5ff3020318 fix: Crash when two mermaid diagrams are adjacent (#13173)
* fix: Crash when two mermaid diagrams are adjacent

A diagram's widget decoration sits at the end of its code block, which is
also the start position of the following block. When the next block is also
a mermaid diagram and has no decoration of its own yet, it adopted the
preceding diagram's renderer — and so its single DOM element — leaving two
widget decorations sharing one node and crashing prosemirror-view.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enter with mermaid selection deletes node

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-28 08:58:01 -04:00
Tom MoorandGitHub c5f9646337 Icon picker glow-up (#13177)
* Icon panel glow-up

* Move colorPalette to shared/constants
2026-07-28 08:47:09 -04:00
Tom MoorandGitHub b377c2cf96 Allow pasting on images to replace in editor (#13178)
* Allow pasting on images to replace in editor

* feedback
2026-07-28 08:20:33 -04:00
Tom MoorandGitHub de032c01c1 fix: colon in query (#13176)
* fix: colon in query

* iteration
2026-07-27 22:37:15 -04:00
Tom MoorandGitHub f97523f0b0 Add days until expiry to export email (#13175) 2026-07-27 21:43:35 -04:00
Tom MoorandGitHub 023bda8c1b Hide comment gutter icons on mobile (#13174) 2026-07-27 21:15:57 -04:00
Tom MoorandGitHub b0ed00fef4 fix: Cannot view past 25 archived collections (#13171) 2026-07-27 20:41:52 -04:00
Tom MoorandGitHub d0900e7277 fix: relationships.list drafts (#13170) 2026-07-27 19:25:50 -04:00
Tom MoorandGitHub 7b751ab04b perf: Attach output stream before adding zip entries (#13167)
* perf: Attach output stream before adding zip entries

* fix: Handle failure
2026-07-27 19:13:18 -04:00
Tom MoorandGitHub 715694684c chore: Encyrpted.test.ts flaky test (#13169) 2026-07-27 18:50:23 -04:00
Tom MoorandGitHub 8cdd2895a3 chore: Refactor get+post combos to register (#13168) 2026-07-27 18:39:20 -04:00
Tom MoorandGitHub 9ae7517efb fix: Re-check file operation permissions at download (#13148)
* fix: Re-check file operation permissions at download

* feedback

* Address feedback and copy across to other findByPk overrides
2026-07-27 18:32:17 -04:00
Tom MoorandGitHub 5befd94fb8 perf: Fix streaming file outputs passthrough (#13153)
* perf: Fix streaming file outputs passthrough correctly

* test
2026-07-27 18:23:51 -04:00
Tom MoorandGitHub 8a375991a7 chore: Update brace-expansion (#13166) 2026-07-27 18:23:45 -04:00
Tom MoorandGitHub 854db75995 fix: Crash opening comment sidebar in Lightbox on public share (#13164) 2026-07-27 18:15:57 -04:00
Tom MoorandGitHub 3260153f9c fix: Suppress 499 error reporting (#13165) 2026-07-27 18:15:50 -04:00
dependabot[bot]GitHubClaudedependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Tom Moor
7e6499e71f chore(deps): bump ioredis from 5.10.1 to 5.11.1 (#13159)
* chore(deps): bump ioredis from 5.10.1 to 5.11.1

Bumps [ioredis](https://github.com/luin/ioredis) from 5.10.1 to 5.11.1.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/redis/ioredis/blob/main/CHANGELOG.md)
- [Commits](https://github.com/luin/ioredis/compare/v5.10.1...v5.11.1)

---
updated-dependencies:
- dependency-name: ioredis
  dependency-version: 5.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): dedupe ioredis so bull shares the hoisted copy

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tom Moor <tom@getoutline.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-27 18:13:07 -04:00
Tom MoorandGitHub 3c53f4c75b fix: Evaluate of undefined in useKeyDown (#13163) 2026-07-27 17:58:43 -04:00
6b60858226 fix: Never downgrade Node.js in update workflow (#13154)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-27 17:44:32 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fe4aea0c00 chore(deps): bump vite from 8.0.16 to 8.1.5 (#13161)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.16 to 8.1.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 17:44:16 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2a1c0fd2af chore(deps): bump dd-trace from 5.115.0 to 5.117.0 (#13160)
Bumps [dd-trace](https://github.com/DataDog/dd-trace-js) from 5.115.0 to 5.117.0.
- [Release notes](https://github.com/DataDog/dd-trace-js/releases)
- [Commits](https://github.com/DataDog/dd-trace-js/compare/v5.115.0...v5.117.0)

---
updated-dependencies:
- dependency-name: dd-trace
  dependency-version: 5.117.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 17:44:05 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1bd800b714 chore(deps-dev): bump @types/readable-stream from 4.0.23 to 4.0.24 (#13158)
Bumps [@types/readable-stream](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/readable-stream) from 4.0.23 to 4.0.24.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/readable-stream)

---
updated-dependencies:
- dependency-name: "@types/readable-stream"
  dependency-version: 4.0.24
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 17:43:56 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
758bc89a35 chore(deps): bump the sentry group with 2 updates (#13157)
Bumps the sentry group with 2 updates: [@sentry/node](https://github.com/getsentry/sentry-javascript) and [@sentry/react](https://github.com/getsentry/sentry-javascript).


Updates `@sentry/node` from 10.65.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.65.0...10.68.0)

Updates `@sentry/react` from 10.65.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.65.0...10.68.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-version: 10.68.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: sentry
- dependency-name: "@sentry/react"
  dependency-version: 10.68.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: sentry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 17:43:24 -04:00
Tom MoorandGitHub 86335325e8 fix: attachments.redirect should be considered in read scope. (#13155)
closes #13152
2026-07-27 17:43:06 -04:00
053a3fd438 fix: Respect move policy in sidebar drag and drop (#13150)
Drop targets that reorder or reparent an item now require the `move`
ability on the dragged item, so no drop cursor or highlight appears
where the move would be rejected by the server.

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-26 18:51:54 -04:00
17452bda5b Move socket management from client -> server (#13120)
* Move socket management from client -> server

* feedback

* fix: Reconcile collection rooms on visibility change

Handle collections.update transitions between private and team-visible by
joining or rebuilding the collection channel, route collection events through
the members channel so guests are excluded, and use removeData for the
collection ids cache invalidation.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-26 17:47:34 -04:00
Tom MoorandGitHub fc40988891 fix: Lock contention on documents.create (#13149)
* wip

* fix: Lock contention on documents.create

* revert
2026-07-26 17:35:15 -04:00
Tom MoorandGitHub 84c4cbc431 fix: Narrow validation on relationships.list (#13147) 2026-07-26 16:49:24 -04:00
Tom MoorandGitHub 6190684d59 fix: collaboratorIds async/distributed nature should not guard persistence (#13145)
* fix: collaboratorIds async/distributed should not guard persistence

* feedback
2026-07-26 11:41:55 -04:00
Tom MoorandGitHub 6268bc149a fix: Add missing zod schema check for incoming document.text (#13143)
* fix: Add missing zod schema check for incoming document.text

* feedback

* test
2026-07-26 08:25:25 -04:00
Tom MoorandGitHub 22cb3f1baf chore: Tighten rate limits on document mutations (#13142) 2026-07-26 08:18:01 -04:00
Tom MoorandGitHub 9d066c2a92 fix: Avoid user serialization on public share response (#13144)
* fix: Avoid user serialization on public share response

* fix: shares.list does not return shares from deleted users
2026-07-26 08:17:09 -04:00
44b1529b3d chore: Remove redundant fast-uri resolution (#13146)
The `fast-uri@npm:^3.0.1` resolution was redundant. The ^3.0.1 range
naturally resolves to 3.1.4 without the resolution override, so removing
it produces identical yarn.lock output and does not introduce any new
vulnerabilities per `yarn npm audit --severity high --recursive
--environment production`.

All other resolutions remain necessary either to prevent lower/vulnerable
versions from being installed transitively or to enforce a single package
version required for TypeScript type consistency (React, Koa,
prosemirror-transform, markdown-it types).

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-26 07:57:43 -04:00
Tom MoorandGitHub 42cd66f79f Reorder search in command menu, remove Fuse workers (#13137) 2026-07-25 14:21:46 -04:00