Tom Moor
879d2b8198
fix: Allow connecting additional auth providers on custom domain ( #12364 )
...
* fix: Unable to link secondary auth provider on custom domain
* doc
* chore: Custom -> Apex transfer token
* Refactor, address security concerns
* Ensure OAuth intent is single-use
* Secure OAuth state actor binding
* Use scrypt for OAuth actor session binding
2026-05-16 19:56:21 -04:00
Salihu
b4cbb39f17
feat: request document access ( #10825 )
...
* feat: Request document access
Allow users without permission to a document to request access. Notifies
document managers via in-app notification and email; managers can grant
or dismiss the request.
- Adds AccessRequest model, migration, policy, presenter
- Adds accessRequests.create/info/approve/dismiss endpoints
- Adds DocumentAccessRequestNotificationsTask + email
- Adds Error403 request flow with loading state and pending indicator
- Auto-opens notifications popover via ?notifications=true (used in email)
- Adds SplitButton primitive for permission selection in notifications
- Refactors useConsumeQueryParam hook
* refactor
* fix: Make approve/dismiss idempotent on access requests
Return success when the access request has already been dismissed, or
when the user already has document membership at approve time, instead
of throwing 400. Avoids racy double-clicks on notification actions
producing user-visible errors.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* Minor fixes
---------
Co-authored-by: Tom Moor <tom@getoutline.com >
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-09 08:42:47 -04:00
Tom Moor
b2aad71cb4
chore: Move welcome email to processor ( #11939 )
...
* chore: Move welcome email to processor
* fix: Restore welcome email on invite acceptance
2026-04-02 20:16:47 -04:00
Copilot
36d555f3fb
Add Linear project unfurling support ( #11525 )
...
* Initial plan
* Add Project type and unfurl implementation for Linear projects
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
* Fix linter issues - remove unused import and rename unused parameter
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
* Make actor parameter optional in unfurl helper methods
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
* fix: Resolve type errors in Linear project unfurl
Use project.status (ProjectStatus object) instead of the deprecated
project.state (string) field, add satisfies constraint, and fix
exhaustive return in unfurl switch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* Determine mention type
* styling
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
Co-authored-by: Tom Moor <tom@getoutline.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 11:03:04 -04:00
Tom Moor
6a69990833
Attribute MCP mutations separately in audit log events ( #11533 )
2026-02-23 21:31:34 -05:00
Tom Moor
7be893f9a3
Refactor templates ( #11027 )
...
closes #8674
2026-02-20 18:53:00 -05:00
Tom Moor
1937043aed
feat: MCP Server ( #11464 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 20:14:18 -05:00
Tom Moor
957648a588
feat: OAuth dynamic client registration ( #11462 )
...
* feat: DCR first pass
* Add cleanup task, management endpoints
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* wip
* Combine migrations
* Self review
* fix: Guard OAuth policies
* fix: Application access list not updating on deletion
* feat: Add OAUTH_DISABLE_DCR env var to disable dynamic client registration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: Validate max length of redirect URIs in DCR schemas
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* Self review
* Use withCtx methods for correct event creation
* Remove incorrect scopes_supported
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 17:30:19 -05:00
Tom Moor
c758f0d93a
chore: Upgrade Zod to version 4 ( #11465 )
2026-02-15 22:54:50 -05:00
Hemachandar
5584089441
feat: Figma integration ( #11044 )
...
* OAuth
* store logo
* unfurl support
* refresh token
* support for list
* embed list
* mention menu for all embeds in a list
* multi-level list
* logo
* account level connection
* tsc
* Update Icon.tsx
* coderabbit feedback
* RFC 6749 suggestion
---------
Co-authored-by: Tom Moor <tom@getoutline.com >
2026-01-15 20:27:00 -05:00
Tom Moor
d9aec40313
chore: Store service in JWT ( #11136 )
...
* chore: Store service in JWT
* docs
* fix: Remove early return
2026-01-10 12:28:00 -05:00
Tom Moor
57b6e9aca4
feat: Passkey support ( #11065 )
...
closes #6930
2026-01-05 19:58:46 -05:00
Copilot
7cbd06541c
Upgrade Yarn to 4.11.0 ( #10865 )
...
* Initial plan
* Upgrade Yarn to 4.11.0 with node-modules linker and security settings
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
* Restore rolldown resolution to package.json resolutions
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
* Enable Corepack in CI workflow for Yarn 4.11.0 support
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
* test
* module resolution
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com >
Co-authored-by: Tom Moor <tom@getoutline.com >
2025-12-25 08:46:08 -05:00
Tom Moor
bf45e97641
chore: Enforce type import consistency ( #10968 )
...
* Update types
* fix circular dep
* type imports
* lint type imports and --fix
2025-12-19 23:07:02 -05:00
Hemachandar
142985c6d7
Move Document event writing to model layer ( #9790 )
...
* documents.restore, documents.unarchive
* documents.templatize
* documents.archive
* documents.unpublish
* documents.create, documents.update
* documents.title_change event
* documents.move
* documents.delete
* tsc, tests
* tsc
* Copilot feedback
---------
Co-authored-by: Tom Moor <tom@getoutline.com >
2025-11-23 20:40:45 +01:00
Hemachandar
04c3d81b1f
chore: Setup missing oxlint configs ( #9862 )
...
* shared
* server
* app
* remove vestigial eslintrc files
* update comment directives
2025-08-06 19:54:22 -04:00
Hemachandar
5db3df35f5
chore: Move Collection event writing to model layer ( #9663 )
...
* collections.create, collections.update, collections.delete API
* collections.archive, collections.restore
* collections.move
* file imports
* remove collectionDestroyer
* remove data field
* remove data field for collections.move
* remove data field for import flow
* use hook for permission_changed event
* simplify event type
* tiny
2025-07-19 13:38:22 -04:00
Hemachandar
c7231ffd8b
chore: Move Revision event writing to model layer ( #9650 )
2025-07-16 17:28:29 -04:00
Tom Moor
68f87f7254
perf: Move recalculation of memberships to async job ( #9567 )
...
* perf: Move recalculation of memberships to async job
* tsc
2025-07-08 18:01:18 -04:00
Hemachandar
a85fec57cc
chore: Cleanup unfurl temporary backward compatibility ( #9406 )
2025-06-08 09:24:32 -04:00
Tom Moor
0198b80b5d
fix: JSON import goes through MD serialization ( #9309 )
...
* fix: JSON import goes through MD serialization
* rm
* tsc
2025-05-26 08:48:57 -04:00
Tom Moor
a06671e8ce
OAuth provider ( #8884 )
...
This PR contains the necessary work to make Outline an OAuth provider including:
- OAuth app registration
- OAuth app management
- Private / public apps (Public in cloud only)
- Full OAuth 2.0 spec compatible authentication flow
- Granular scopes
- User token management screen in settings
- Associated API endpoints for programatic access
2025-05-03 19:40:18 -04:00
Hemachandar
d37b7fa31e
Transform issue and pull_request to unfurl shape in plugin ( #9006 )
...
* Transform issue and pull_request to unfurl shape in plugin
* better typings
* add todo
2025-04-22 07:00:44 -04:00
Hemachandar
5789d65bf5
Ensure iframely fallback is not executed for connected unfurl integration ( #8995 )
...
* Ensure iframely fallback is not executed for connected unfurl integration
* tsc
2025-04-16 18:22:51 -04:00
Hemachandar
6e98568e5b
API importer for Notion ( #8710 )
2025-03-23 12:19:13 -07:00
Hemachandar
7a90a909b3
Prevent duplicate emails when user has existing access to a document. ( #8263 )
...
* check user has higher access
* membershipId column
* handle document shared email
* fix and cleanup
* tests
* jsdoc
* event changeset
* check collection permission
* change date in migration filename
* review
* rename migration filename to today
* required group, jsdoc
2025-03-04 17:56:44 -08:00
Hemachandar
6a1f2399db
feat: Collection subscription ( #8392 )
...
* feat: Collection subscription
* refactor to use latest impl
* load subscriptions only once
* tests, type rename, migration index
* all users in publish flow
* tsc
* remove SubscriptionType.Collection enum
* review
2025-02-22 06:53:19 -08:00
Hemachandar
bef4292146
Enable dragging a document into drafts ( #8411 )
...
* Enable dragging a document into drafts
* unpublish by detaching from collection
* websocket events
2025-02-15 18:45:05 -08:00
Tom Moor
28aebc9fbf
feat: Upload remote-hosted images on paste ( #8301 )
...
* First pass
* fix
* tidy, tidy
* Determine dimensions
* docs
* test getFileNameFromUrl
* PR feedback
* tsc
2025-01-30 17:24:07 -08:00
Hemachandar
8e4844fd84
Convert UserMembership mutations ( #8285 )
...
* handle collections.add_user, collections.remove_user
* handle documents.add_user, documents.remove_user
* don't publish event in collection creation flow
2025-01-28 17:52:31 -08:00
Hemachandar
3c86b48533
Convert GroupMembership mutations ( #8242 )
...
* Convert 'GroupMembership' mutations
* cleanup collectionGroupMemberships
* remove duplicate data
2025-01-16 15:23:09 -08:00
Hemachandar
4a64a767e1
Convert GroupUser mutations ( #8187 )
...
* Convert 'GroupUser' mutations
* cleanup commands
2025-01-05 16:33:51 -08:00
Hemachandar
98fef1bb1f
Convert Share mutations ( #8177 )
...
* Convert 'Share' mutations
* createContext
* name override in share.revoke method
2025-01-02 12:06:02 -08:00
Tom Moor
1c179a3c6b
Move Group to model event writing ( #8179 )
...
* Move Group to model event writing
* cleanup type
2025-01-02 07:45:09 -05:00
Tom Moor
633e547d3e
Refactor of event insertion ( #5909 )
2024-11-10 16:26:20 -08:00
Hemachandar
de04d1c0c5
feat: Comment reactions ( #7790 )
...
Co-authored-by: Tom Moor <tom@getoutline.com >
2024-11-02 10:58:03 -07:00
Tom Moor
0e249951ab
chore: Event.createFromContext usage ( #7877 )
...
* revisions.create
* Automatically pass transaction in state to createFromContext
2024-11-02 10:16:15 -07:00
Apoorv Mishra
35ff70bf14
Archive collections ( #7266 )
...
Co-authored-by: Tom Moor <tom.moor@gmail.com >
2024-10-06 05:37:11 -07:00
Tom Moor
167cc1adbf
fix: Store group name against group events
2024-09-01 17:19:54 -04:00
Tom Moor
f61689abdc
feat: Invite groups to documents ( #7275 )
2024-09-01 06:51:52 -07:00
Apoorv Mishra
5374784df6
New Replace type utility ( #7476 )
...
* fix: Replace type
* trigger ci
2024-08-30 10:02:38 +05:30
Tom Moor
0642396264
perf: Policies refactor ( #7460 )
2024-08-28 06:10:38 -07:00
Apoorv Mishra
38b11b3f1e
Ignore documents.empty_trash for DeliverWebhookTask ( #7304 )
2024-07-24 16:46:11 -07:00
Tom Moor
f675a04735
chore: Rename GroupPermission -> GroupMembership ( #7214 )
...
* GroupPermission -> GroupMembership
* Add group membership source
* wip
2024-07-17 16:31:20 -07:00
Tom Moor
1711d17e25
fix: newMentionIds no longer always in event data
2024-07-03 17:58:15 -04:00
Tom Moor
8a8dad15ef
fix: newMentionIds no longer always in event data, closes #7186
2024-07-02 18:03:22 -04:00
Hemachandar
6fd3a0fa8a
feat: Unified icon picker ( #7038 )
2024-06-23 06:31:18 -07:00
Tom Moor
f103d73b48
Move collection description rendering to JSON ( #6944 )
...
* First pass, moving collection description rendering to JSON
* tsc
* docs
* refactor
* test
2024-05-25 15:17:19 -07:00
Apoorv Mishra
6a4628afef
Refactor unfurling related types ( #6730 )
...
* wip
* fix: refactor unfurl types
2024-04-03 07:28:30 +05:30
Apoorv Mishra
450d0d9355
Github integration ( #6414 )
...
Co-authored-by: Tom Moor <tom.moor@gmail.com >
2024-03-23 07:09:28 -07:00