Philip Okugbe
33895b0607
bug fixes ( #2250 )
...
* util
* fix page position collation
* support fixed toolbar in templates editor
* date localization
* fix clipped emoji in templates editor
* fix page updated time object
* fix flickers
* fix: remove redundant breadcrumb from destination modal
2026-05-28 16:20:37 +01:00
Philip Okugbe
6cf8101ab3
feat(ee): templates ( #2215 )
...
* feat(ee): templates
* fix tree
* fix
2026-05-19 02:41:52 +01:00
Peter Tripp
932c1ad5b7
Better trash ( #2190 )
...
* Better trash
I recently lost a bunch of time editing and searching for pages that were actually in the Trash. Docmost intentionally tries to not link to Trashed pages, but the url of that Trashed page and any inbound links still work. This makes it clearer when a page you are interacting with is in the Trash.
- /trash
- Refactored banner into `trash-banner.tsx`
- Refactored "Restore" modal into `use-restore-page-modal.tsx`
- Page (when isDeleted)
- Add: `trash-banner.tsx`
- Add breadcrumbs: `Parent / Child / Page (Deleted)`
- Change: Deleted Pages are read-only
- Replace "Move to Trash" with "Restore" in page menu (invokes `use-restore-page-modal`)
I tried very hard to keep this simple and re-use existing translation strings wherever possible.
* cleanup
---------
Co-authored-by: Philipinho <16838612+Philipinho@users.noreply.github.com >
2026-05-14 14:41:10 +01:00
Philip Okugbe
f758091b2a
perf(permissions): cache space role and page edit lookups ( #2208 )
2026-05-14 13:11:28 +01:00
Philip Okugbe
a689cca7a0
feat: page labels/tags ( #2188 )
...
* feat: labels (WIP)
* full implementation
2026-05-10 18:14:15 +01:00
Philip Okugbe
537e45bc11
feat: page details section and backlinks ( #2186 )
...
* feat: page details section and backlinks
2026-05-09 17:03:08 +01:00
Philip Okugbe
de60aa7e61
feat: synced blocks (transclusion) ( #2163 )
...
* feat: synced blocks (transclusion)
* fix:remove name
* make placeholders smaller
* feat: enforce strict transclusion schema
* fix: scope synced blocks to workspace, gate unsync on edit permission
* fix collab module error
2026-05-08 13:23:16 +01:00
Philip Okugbe
641ce142df
feat(ee): SCIM ( #1347 )
...
* SCIM - init (EE)
* accept db transaction
* sync
* Content parser support for scim+json
* patch scimmy
* sync
* return early if userIds is empty
* sync
* SCIM db table
* fixes
* scim tokens
* backfill
* feat(audit): add scim token events
* rename scim migration
* fix
* fix translation
* cleanup
2026-05-01 14:53:30 +01:00
Philip Okugbe
a6a7e4370a
feat(ee): PDF export api ( #2112 )
...
* feat(ee): server side PDF export
* feat: pdf export queue
* sync
* sync
2026-04-14 16:26:54 +01:00
Philip Okugbe
cc00e77dfb
fix: space overview favorites ( #2110 )
2026-04-14 02:58:24 +01:00
Philip Okugbe
4056bd0104
feat: enhancements ( #2107 )
...
* refactor
* fix
* update packages
2026-04-13 23:34:40 +01:00
Philip Okugbe
bd68e47e03
feat(ee): page verification workflow ( #2102 )
...
* feat: page verification workflow
* feat: refactor page-verification
* sync
* fix type
* fix
* fix
* notification icon
* use full word
* accept .license file
* - update templates
- update migration and notification
* fix copy
* update audit labels
* sync
* add space name
2026-04-13 20:20:34 +01:00
Philip Okugbe
d42091ccb1
feat: favorites ( #2103 )
...
* feat: favorites and templates(ee)
* rename migrations
* fix sidebar
* cleanup tabs
* fix
* turn off templates
* cleanup
* uuid validation
2026-04-12 22:06:25 +01:00
Philip Okugbe
57efb91bd3
feat(ee): ai chat ( #2098 )
...
* feat: ai chat
* feat: ai chat
* sync
* cleanup
* view space button
2026-04-10 19:23:47 +01:00
Philip Okugbe
da9b43681e
feat: watch space ( #2096 )
2026-04-09 00:37:51 +01:00
Philip Okugbe
879aa2c3d8
feat: page update notifications ( #2074 )
...
* feat: watchers notification and email preferences
* fix: email copy
* digests
* clean up
* fix
* clean up
* move backlinks queue-up to history processor
* fix
* fix keys
* feat: group notifications
* filter
* adjust email digest window
2026-03-31 16:03:59 +01:00
Philip Okugbe
cbd0dd4a0b
feat: indexes ( #2071 )
2026-03-29 20:29:12 +01:00
Philip Okugbe
3829b6cbef
feat(ee): viewer comments ( #2060 )
2026-03-28 19:32:52 +00:00
Philip Okugbe
803f1f0b81
feat: user session management ( #2056 )
...
* user session management
* WIP
* cleanup
* license
* cleanup
* don't cache index
* rename current device property
* fix
2026-03-26 20:00:04 +00:00
Philipinho
90c190df78
fix: space members view enhancement
2026-03-02 21:33:15 +00:00
Philipinho
17ec2f4ac5
lists sorting
2026-03-02 21:07:47 +00:00
Philipinho
616d9297eb
sync
2026-03-02 04:08:59 +00:00
Philip Okugbe
2309d1434b
feat: support cross-space page mentions ( #1979 )
2026-03-01 17:14:10 +00:00
Philip Okugbe
69d7532c6c
feat(ee): audit logs ( #1977 )
...
feat: clickhouse driver
* sync
* updates
2026-03-01 01:29:03 +00:00
Philip Okugbe
59e945562d
feat(ee): page-level access/permissions ( #1971 )
...
* Add page_hierarchy table
* feat(ee): page-level permissions
* pagination
* rename migration
fixes
* fix
* tabs
* fix theme
* cleanup
* sync
* page permissions notification
* other fixes
* sharing disbled
* fix column nodes
* toggle error handling
2026-02-26 19:49:10 +00:00
Philipinho
873c963043
fix db types duplication
2026-02-19 22:34:07 +00:00
Philip Okugbe
05b3c65b0f
feat: notifications ( #1947 )
...
* feat: notifications
* feat: watchers
* improvements
* handle page move for watchers
* make watchers non-blocking
* more
2026-02-14 20:00:38 -08:00
Philipinho
ab7999a946
v0.25.3
2026-02-09 18:27:55 -08:00
Philip Okugbe
0f02261ee6
feat: page version history improvements ( #1925 )
...
* Refactor: use queue for page history
* feat: save multiple version contributors
* display contributor avatars in history list
* fix interval
2026-02-09 18:25:35 -08:00
Philip Okugbe
1ad53c2581
feat(ee): public sharing controls ( #1910 )
...
* feat(ee): public sharing controls
* lint
2026-02-06 10:35:36 -08:00
Philip Okugbe
5506eb194b
feat: page history diff ( #1891 )
...
* Show actual history changes
* V2 - WIP
* feat: page history diff
* fix: exclude content from history listing
---------
Co-authored-by: Jason Norwood-Young <jason@10layer.com >
2026-02-03 11:55:20 -08:00
Philip Okugbe
78b1c1a453
feat: switch to cursor pagination ( #1884 )
...
* add cursor pagination function
* support custom order modifier
* refactor returned object
* feat(db): migrate paginated endpoints to cursor-based pagination
* sync
* support hasPrevPage boolean
* feat(client): migrate pagination from offset to cursor-based
* support beforeCursor/prevCursor
* wrap search results in items array for API consistency
2026-01-30 19:28:54 +00:00
Philipinho
3523600f40
add timestamps
2026-01-27 16:49:22 +00:00
Philip Okugbe
aa143ad79c
refactor(db): migrate from node-postgres to postgres.js ( #1846 )
...
* refactor(db): migrate from node-postgres to postgres.js
* ignore schema param
2026-01-21 18:12:16 +00:00
Philip Okugbe
47097969a0
fix: use subquery ( #1833 )
...
- enhance file tasks list endpoint
2026-01-13 15:58:26 +00:00
Philip Okugbe
9fb16bc842
feat(EE): AI vector search ( #1691 )
...
* WIP
* AI module - init
* WIP
* sync
* WIP
* refactor naming
* new columns
* sync
* sync
* fix search bug
* stream response
* WIP
* feat embeddings sync
* refine
* Add workspaceId to page events
* refine
* WIP
* add translation string
* sync
* reset ai answer on query change
* hide AI search in cloud
* capture streaming error
* sync
2025-12-01 11:50:25 +00:00
Philip Okugbe
3164b6981c
feat: api keys management (EE) ( #1665 )
...
* feat: api keys (EE)
* improvements
* fix table
* fix route
* remove token suffix
* api settings
* Fix
* fix
* fix
* fix
2025-10-07 21:05:13 +01:00
Philip Okugbe
bf8cf6254f
feat: Typesense search driver (EE) ( #1664 )
...
* feat: typesense driver (EE) - WIP
* feat: typesense driver (EE) - WIP
* feat: typesense
* sync
* fix
2025-10-07 17:34:32 +01:00
Philip Okugbe
f12866cf42
feat(EE): full-text search in attachments ( #1502 )
...
* feat(EE): fulltext search in attachments
* feat: global search
- search filters
- attachments search ui
- and more
* fix import
* fix import
* rename migration
* add GIN index
* fix table name
* sanitize
2025-09-02 05:27:01 +01:00
Philip Okugbe
dcbb65d799
feat(EE): LDAP integration ( #1515 )
...
* LDAP - WIP
* WIP
* add hasGeneratedPassword
* fix jotai atom
* - don't require password confirmation for MFA is user has auto generated password (LDAP)
- cleanups
* fix
* reorder
* update migration
* update default
* fix type error
2025-09-02 04:59:01 +01:00
Philip Okugbe
74cd890bdd
feat(EE): implement SSO group sync for SAML and OIDC ( #1452 )
...
* feat: implement SSO group synchronization for SAML and OIDC
- Add group_sync column to auth_providers table
- Extract groups from SAML attributes (memberOf, groups, roles)
- Extract groups from OIDC claims (groups, roles)
- Implement case-insensitive group matching with auto-creation
- Sync user groups on each SSO login
- Ensure only one provider can have group sync enabled at a time
- Add group sync toggle to SAML and OIDC configuration forms
* rename column
2025-08-31 20:33:37 +01:00
Philipinho
509622af54
ignore type error
2025-08-31 12:20:40 -07:00
Philip Okugbe
aa58e272d6
fix: exclude deleted pages ( #1494 )
2025-08-31 09:11:33 +01:00
Philip Okugbe
1cb2535de3
fix trash in search ( #1439 )
...
- delete share if page is trashed
2025-08-02 00:14:00 +01:00
Philipinho
ec0ed5c630
fix import
2025-07-29 14:50:59 -07:00
Philipinho
77b334ea37
reorder migration
2025-07-29 14:49:19 -07:00
Philip Okugbe
5da92a538a
feat: add unaccent support for accent-insensitive search ( #1402 )
...
- Add PostgreSQL unaccent and pg_trgm extensions
- Create immutable f_unaccent wrapper function for performance
- Update all search queries to use f_unaccent for accent-insensitive matching
- Add 1MB limit to tsvector content to prevent errors on large documents
- Update full-text search trigger to use f_unaccent
- Fix MultiSelect client-side filtering to show server results properly
2025-07-29 22:47:13 +01:00
Philip Okugbe
ca9558b246
feat(EE): resolve comments ( #1420 )
...
* feat: resolve comment (EE)
* Add resolve to comment mark in editor (EE)
* comment ui permissions
* sticky comment state tabs (EE)
* cleanup
* feat: add space_id to comments and allow space admins to delete any comment
- Add space_id column to comments table with data migration from pages
- Add last_edited_by_id, resolved_by_id, and updated_at columns to comments
- Update comment deletion permissions to allow space admins to delete any comment
- Backfill space_id on old comments
* fix foreign keys
2025-07-29 21:36:48 +01:00
Eddy Oyieko
ec12e80423
feat: trash for deleted pages in space ( #325 )
...
* initial commit
* added recycle bin modal, updated api routes
* updated page service & controller, recycle bin modal
* updated page-query.ts, use-tree-mutation.ts, recycled-pages.ts
* removed quotes from openRestorePageModal prompt
* Updated page.repo.ts
* move button to space menu
* fix react issues
* opted to reload to enact changes in the client
* lint
* hide deleted pages in recents, handle restore child page
* fix null check
* WIP
* WIP
* feat: implement dedicated trash page
- Replace modal-based trash view with dedicated route `/s/:spaceSlug/trash`
- Add pagination support for deleted pages
- Other improvements
* fix translation
* trash cleanup cron
* cleanup
---------
Co-authored-by: Philipinho <16838612+Philipinho@users.noreply.github.com >
2025-07-29 21:20:49 +01:00
Philip Okugbe
662460252f
feat(EE): MFA implementation ( #1381 )
...
* feat(EE): MFA implementation for enterprise edition
- Add TOTP-based two-factor authentication
- Add backup codes support
- Add MFA enforcement at workspace level
- Add MFA setup and challenge UI pages
- Support MFA for login and password reset flows
- Add MFA validation for secure pages
* fix types
* remove unused object
* sync
* remove unused type
* sync
* refactor: rename MFA enabled field to is_enabled
* sync
2025-07-25 00:18:53 +01:00