Philipinho
9cec9b64c6
feat(bases): allow updateRow to set position atomically
2026-05-24 12:31:36 +01:00
Philipinho
911bf53924
Merge branch 'main' into base-formula
2026-05-24 01:47:59 +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
Philipinho
adae526627
fix type
2026-04-27 02:12:34 +01:00
Philipinho
19821d3aeb
feat(base): page renderer dispatches to base view when page.isBase
...
- Add isBase to page repo baseFields so it is always selected
- Add isBase to sidebar pages query select list
- Add isBase to client IPage type
- In PageContent, render <BaseTable pageId={page.id} /> when page.isBase
is true instead of the TipTap editor path
2026-04-27 01:49:54 +01:00
Philipinho
2b4a9b8a00
refactor(base): rename baseId methods to pageId in repos and BasePropertyService
2026-04-27 01:18:32 +01:00
Philipinho
ccdf2343f2
refactor(base): rename baseId to pageId in BaseViewRepo
2026-04-27 01:10:56 +01:00
Philipinho
cbed118c11
refactor(base): rename baseId to pageId in BaseRowRepo
2026-04-27 01:10:29 +01:00
Philipinho
0f9dee4b28
refactor(base): rename baseId to pageId in BasePropertyRepo
2026-04-27 01:08:59 +01:00
Philipinho
0257f03003
refactor(base): rewrite BaseRepo over pages (is_base + base_schema_version)
2026-04-27 01:06:19 +01:00
Philipinho
731fa45672
chore(db): drop Base entity type aliases (table no longer exists)
2026-04-27 01:04:05 +01:00
Philipinho
2b05d1520b
chore(db): regenerate Kysely types after bases-as-pages migration
2026-04-27 01:01:41 +01:00
Philipinho
24a70e48da
fix(db): add pending_type columns to recreated base_properties table
2026-04-27 00:59:36 +01:00
Philipinho
a847c2121c
feat(db): add is_base flag to pages, drop bases table, recreate base_* with page_id
2026-04-27 00:53:44 +01:00
Philipinho
89ee3714ac
feat(base): add /bases/rows/count with estimate and capped-exact modes
...
Row-count display on a filtered view shouldn't force a full COUNT(*) on
every list fetch. New endpoint returns either an EXPLAIN-plan estimate
(default, ~1ms, no execution) or a LIMIT-capped exact count that short-
circuits to `{ capped: true }` once the match set passes EXACT_COUNT_CAP.
Clients call it in parallel with the rows query so the grid still paints
at its own pace.
- DTO + repo.countEstimate/countExact reusing the list predicate shape
- service picks the mode; controller mirrors the list Read ability check
- client hook keyed by filter/search/exact so a "show exact" toggle
doesn't clobber the estimate cache
2026-04-24 12:11:29 +01:00
Philipinho
f7ea6e8fd3
fix(base): hide soft-deleted properties from base info payload
...
The withProperties subquery hydrating /bases/info was missing a
`deleted_at IS NULL` filter, so after a delete the socket-echo
invalidation refetched and the just-deleted column rehydrated on the
originating client and never dropped on others.
2026-04-24 12:10:22 +01:00
Philipinho
464bd701ba
feat(base): enforce unique property names per base
2026-04-24 02:34:38 +01:00
Philipinho
c67ae19c39
feat(base): add migration marker for formula property type
2026-04-24 00:06:13 +01:00
Philipinho
1466d95078
feat(base): add findByIds and softDeleteMany to base-row repo
2026-04-18 16:28:39 +01:00
Philipinho
da49ffc332
fix orderBy
2026-04-18 15:17:20 +01:00
Philipinho
f5b19316af
Base WIP
2026-04-18 13:13:53 +01:00
Philipinho
081bb67239
Merge branch 'main' into base
2026-04-17 13:48:49 +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
4ff13cef62
sort cursor pagination
2026-03-08 04:00:44 +00:00
Philipinho
674b0ec64a
filter/sort, file, person
2026-03-08 03:15:49 +00:00
Philipinho
ac03a54ae6
make recent
2026-03-08 02:36:00 +00:00
Philipinho
2cf7958dac
Merge branch 'main' into base
2026-03-08 01:57:17 +00:00
Philipinho
94ee1e80fb
feat: bases - WIP
2026-03-08 00:56:24 +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