Compare commits

..

6 Commits

Author SHA1 Message Date
dc9ed4fa88 Revert "switch to vite rolldown (#1048)"
This reverts commit 1a1b2c8682.
2025-04-22 20:00:14 +01:00
882f3093bd search space members by email (#1049) 2025-04-22 19:37:06 +01:00
1a1b2c8682 switch to vite rolldown (#1048)
* switch to vite rolldown

* update
2025-04-22 15:52:44 +01:00
10b67929ea Update README.md 2025-04-21 21:50:21 +01:00
5c957fda8d fix: nested tree open state 2025-04-21 19:24:25 +01:00
862f6d4820 use non-esm nanoid version (#1040) 2025-04-19 19:45:09 +01:00
7 changed files with 49 additions and 43 deletions

View File

@ -4,14 +4,15 @@
Open-source collaborative wiki and documentation software. Open-source collaborative wiki and documentation software.
<br /> <br />
<a href="https://docmost.com"><strong>Website</strong></a> | <a href="https://docmost.com"><strong>Website</strong></a> |
<a href="https://docmost.com/docs"><strong>Documentation</strong></a> <a href="https://docmost.com/docs"><strong>Documentation</strong></a> |
<a href="https://twitter.com/DocmostHQ"><strong>Twitter / X</strong></a>
</p> </p>
</div> </div>
<br /> <br />
## Getting started ## Getting started
To get started with Docmost, please refer to our [documentation](https://docmost.com/docs). To get started with Docmost, please refer to our [documentation](https://docmost.com/docs) or try our [cloud version](https://docmost.com/pricing) .
## Features ## Features
@ -46,3 +47,16 @@ All files in the following directories are licensed under the Docmost Enterprise
### Contributing ### Contributing
See the [development documentation](https://docmost.com/docs/self-hosting/development) See the [development documentation](https://docmost.com/docs/self-hosting/development)
## Thanks
Special thanks to;
<img width="100" alt="Crowdin" src="https://github.com/user-attachments/assets/a6c3d352-e41b-448d-b6cd-3fbca3109f07" />
[Crowdin](https://crowdin.com/) for providing access to their localization platform.
<img width="48" alt="Algolia-mark-square-white" src="https://github.com/user-attachments/assets/6ccad04a-9589-4965-b6a1-d5cb1f4f9e94" />
[Algolia](https://www.algolia.com/) for providing full-text search to the docs.

View File

@ -7,7 +7,7 @@ import {
usePageQuery, usePageQuery,
useUpdatePageMutation, useUpdatePageMutation,
} from "@/features/page/queries/page-query.ts"; } from "@/features/page/queries/page-query.ts";
import { useEffect, useRef } from "react"; import { useEffect, useRef, useState } from "react";
import { useNavigate, useParams } from "react-router-dom"; import { useNavigate, useParams } from "react-router-dom";
import classes from "@/features/page/tree/styles/tree.module.css"; import classes from "@/features/page/tree/styles/tree.module.css";
import { ActionIcon, Menu, rem } from "@mantine/core"; import { ActionIcon, Menu, rem } from "@mantine/core";
@ -84,7 +84,7 @@ export default function SpaceTree({ spaceId, readOnly }: SpaceTreeProps) {
const rootElement = useRef<HTMLDivElement>(); const rootElement = useRef<HTMLDivElement>();
const { ref: sizeRef, width, height } = useElementSize(); const { ref: sizeRef, width, height } = useElementSize();
const mergedRef = useMergedRef(rootElement, sizeRef); const mergedRef = useMergedRef(rootElement, sizeRef);
const isDataLoaded = useRef(false); const [isDataLoaded, setIsDataLoaded] = useState(false);
const { data: currentPage } = usePageQuery({ const { data: currentPage } = usePageQuery({
pageId: extractPageSlugId(pageSlug), pageId: extractPageSlugId(pageSlug),
}); });
@ -108,7 +108,7 @@ export default function SpaceTree({ spaceId, readOnly }: SpaceTreeProps) {
// and append root pages instead of resetting the entire tree // and append root pages instead of resetting the entire tree
// which looses async loaded children too // which looses async loaded children too
setData(treeData); setData(treeData);
isDataLoaded.current = true; setIsDataLoaded(true);
setOpenTreeNodes({}); setOpenTreeNodes({});
} }
} }
@ -116,7 +116,7 @@ export default function SpaceTree({ spaceId, readOnly }: SpaceTreeProps) {
useEffect(() => { useEffect(() => {
const fetchData = async () => { const fetchData = async () => {
if (isDataLoaded.current && currentPage) { if (isDataLoaded && currentPage) {
// check if pageId node is present in the tree // check if pageId node is present in the tree
const node = dfs(treeApiRef.current?.root, currentPage.id); const node = dfs(treeApiRef.current?.root, currentPage.id);
if (node) { if (node) {
@ -178,7 +178,7 @@ export default function SpaceTree({ spaceId, readOnly }: SpaceTreeProps) {
}; };
fetchData(); fetchData();
}, [isDataLoaded.current, currentPage?.id]); }, [isDataLoaded, currentPage?.id]);
useEffect(() => { useEffect(() => {
if (currentPage?.id) { if (currentPage?.id) {

View File

@ -65,7 +65,7 @@
"kysely": "^0.27.5", "kysely": "^0.27.5",
"kysely-migration-cli": "^0.4.2", "kysely-migration-cli": "^0.4.2",
"mime-types": "^2.1.35", "mime-types": "^2.1.35",
"nanoid": "^5.1.5", "nanoid": "3.3.11",
"nestjs-kysely": "^1.1.0", "nestjs-kysely": "^1.1.0",
"nodemailer": "^6.10.0", "nodemailer": "^6.10.0",
"openid-client": "^5.7.1", "openid-client": "^5.7.1",

View File

@ -119,11 +119,9 @@ export class SpaceMemberRepo {
if (pagination.query) { if (pagination.query) {
query = query.where((eb) => query = query.where((eb) =>
eb('users.name', 'ilike', `%${pagination.query}%`).or( eb('users.name', 'ilike', `%${pagination.query}%`)
'groups.name', .or('users.email', 'ilike', `%${pagination.query}%`)
'ilike', .or('groups.name', 'ilike', `%${pagination.query}%`),
`%${pagination.query}%`,
),
); );
} }

View File

@ -26,7 +26,8 @@ import {
import { PageRepo } from '@docmost/db/repos/page/page.repo'; import { PageRepo } from '@docmost/db/repos/page/page.repo';
import { Node } from '@tiptap/pm/model'; import { Node } from '@tiptap/pm/model';
import { EditorState } from '@tiptap/pm/state'; import { EditorState } from '@tiptap/pm/state';
import slugify from '@sindresorhus/slugify'; // eslint-disable-next-line @typescript-eslint/no-require-imports
import slugify = require('@sindresorhus/slugify');
import { EnvironmentService } from '../environment/environment.service'; import { EnvironmentService } from '../environment/environment.service';
@Injectable() @Injectable()

View File

@ -25,7 +25,7 @@
"@hocuspocus/transformer": "^2.15.2", "@hocuspocus/transformer": "^2.15.2",
"@joplin/turndown": "^4.0.74", "@joplin/turndown": "^4.0.74",
"@joplin/turndown-plugin-gfm": "^1.0.56", "@joplin/turndown-plugin-gfm": "^1.0.56",
"@sindresorhus/slugify": "2.2.1", "@sindresorhus/slugify": "1.1.0",
"@tiptap/core": "^2.10.3", "@tiptap/core": "^2.10.3",
"@tiptap/extension-code-block": "^2.10.3", "@tiptap/extension-code-block": "^2.10.3",
"@tiptap/extension-code-block-lowlight": "^2.10.3", "@tiptap/extension-code-block-lowlight": "^2.10.3",

49
pnpm-lock.yaml generated
View File

@ -38,8 +38,8 @@ importers:
specifier: ^1.0.56 specifier: ^1.0.56
version: 1.0.56 version: 1.0.56
'@sindresorhus/slugify': '@sindresorhus/slugify':
specifier: 2.2.1 specifier: 1.1.0
version: 2.2.1 version: 1.1.0
'@tiptap/core': '@tiptap/core':
specifier: ^2.10.3 specifier: ^2.10.3
version: 2.10.3(@tiptap/pm@2.10.3) version: 2.10.3(@tiptap/pm@2.10.3)
@ -505,8 +505,8 @@ importers:
specifier: ^2.1.35 specifier: ^2.1.35
version: 2.1.35 version: 2.1.35
nanoid: nanoid:
specifier: ^5.1.5 specifier: 3.3.11
version: 5.1.5 version: 3.3.11
nestjs-kysely: nestjs-kysely:
specifier: ^1.1.0 specifier: ^1.1.0
version: 1.1.0(@nestjs/common@11.0.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.0.10)(kysely@0.27.5)(reflect-metadata@0.2.2) version: 1.1.0(@nestjs/common@11.0.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.0.10)(kysely@0.27.5)(reflect-metadata@0.2.2)
@ -3265,13 +3265,13 @@ packages:
'@sinclair/typebox@0.27.8': '@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
'@sindresorhus/slugify@2.2.1': '@sindresorhus/slugify@1.1.0':
resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} resolution: {integrity: sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw==}
engines: {node: '>=12'} engines: {node: '>=10'}
'@sindresorhus/transliterate@1.6.0': '@sindresorhus/transliterate@0.1.2':
resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==}
engines: {node: '>=12'} engines: {node: '>=10'}
'@sinonjs/commons@3.0.1': '@sinonjs/commons@3.0.1':
resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
@ -5525,10 +5525,6 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'} engines: {node: '>=10'}
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
eslint-config-prettier@10.0.1: eslint-config-prettier@10.0.1:
resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==}
hasBin: true hasBin: true
@ -6704,6 +6700,9 @@ packages:
lodash.debounce@4.0.8: lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
lodash.deburr@4.1.0:
resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==}
lodash.defaults@4.2.0: lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
@ -6962,11 +6961,6 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true hasBin: true
nanoid@5.1.5:
resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==}
engines: {node: ^18 || >=20}
hasBin: true
natural-compare@1.4.0: natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@ -12205,14 +12199,15 @@ snapshots:
'@sinclair/typebox@0.27.8': {} '@sinclair/typebox@0.27.8': {}
'@sindresorhus/slugify@2.2.1': '@sindresorhus/slugify@1.1.0':
dependencies: dependencies:
'@sindresorhus/transliterate': 1.6.0 '@sindresorhus/transliterate': 0.1.2
escape-string-regexp: 5.0.0 escape-string-regexp: 4.0.0
'@sindresorhus/transliterate@1.6.0': '@sindresorhus/transliterate@0.1.2':
dependencies: dependencies:
escape-string-regexp: 5.0.0 escape-string-regexp: 2.0.0
lodash.deburr: 4.1.0
'@sinonjs/commons@3.0.1': '@sinonjs/commons@3.0.1':
dependencies: dependencies:
@ -14983,8 +14978,6 @@ snapshots:
escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {}
escape-string-regexp@5.0.0: {}
eslint-config-prettier@10.0.1(eslint@9.20.1(jiti@1.21.0)): eslint-config-prettier@10.0.1(eslint@9.20.1(jiti@1.21.0)):
dependencies: dependencies:
eslint: 9.20.1(jiti@1.21.0) eslint: 9.20.1(jiti@1.21.0)
@ -16468,6 +16461,8 @@ snapshots:
lodash.debounce@4.0.8: {} lodash.debounce@4.0.8: {}
lodash.deburr@4.1.0: {}
lodash.defaults@4.2.0: {} lodash.defaults@4.2.0: {}
lodash.flatten@4.4.0: {} lodash.flatten@4.4.0: {}
@ -16713,8 +16708,6 @@ snapshots:
nanoid@3.3.7: {} nanoid@3.3.7: {}
nanoid@5.1.5: {}
natural-compare@1.4.0: {} natural-compare@1.4.0: {}
needle@3.3.1: needle@3.3.1: