Table of Contents
- The stack
- Files more than one patch touches
- Per patch
- 0001-bases-date-time-picker.patch
- 0002-freenterprise-branding.patch
- 0003-formula-editor-dark-mode.patch
- 0004-dark-mode-default.patch
- 0005-base-row-pages-schema.patch
- 0006-sidebar-create-base-or-board.patch
- 0008-lock-externally-synced-groups.patch
- 0009-group-driven-workspace-roles.patch
- 0010-openapi-swagger.patch
- Maintaining them
Generated from the patch files in
patches/at commitf31ec6a. Regenerated on every publish; edits made here are overwritten.
The parent repository is upstream Docmost, kept pristine. Everything this
fork changes in core lives in the patches below, applied in order at build
time — inside the Docker image, or with scripts/apply-patches.sh for local
development. Why each one exists is on the Patches
page; this page is the mechanical inventory.
| Upstream pin | 7bef7b1a (from upstream.pin) |
| Patches | 9 |
| Generated at | f31ec6a |
The stack
| # | Patch | Files | Created | Lines |
|---|---|---|---|---|
| 0001 | 0001-bases-date-time-picker.patch |
2 | 0 | +176 / -45 |
| 0002 | 0002-freenterprise-branding.patch |
1 | 0 | +12 / -3 |
| 0003 | 0003-formula-editor-dark-mode.patch |
3 | 0 | +35 / -14 |
| 0004 | 0004-dark-mode-default.patch |
2 | 0 | +32 / -1 |
| 0005 | 0005-base-row-pages-schema.patch |
2 | 1 | +53 / -0 |
| 0006 | 0006-sidebar-create-base-or-board.patch |
5 | 1 | +152 / -28 |
| 0008 | 0008-lock-externally-synced-groups.patch |
7 | 0 | +112 / -11 |
| 0009 | 0009-group-driven-workspace-roles.patch |
14 | 1 | +365 / -12 |
| 0010 | 0010-openapi-swagger.patch |
4 | 0 | +25 / -1 |
Numbers are not contiguous: there is no 0007. The order is the filename
order, and it is load-bearing.
Files more than one patch touches
These are why the order matters. A later patch's context includes the
earlier patch's changes, so they only apply on top of each other — and
regenerating one with a plain git diff HEAD would capture both. Use
scripts/gen-patch.sh, which diffs
against the index with the lower patches staged.
| File | Patches |
|---|---|
apps/client/src/features/group/components/group-details.tsx |
0008, 0009 |
apps/client/src/features/group/components/group-list.tsx |
0008, 0009 |
apps/client/src/features/group/types/group.types.ts |
0008, 0009 |
apps/server/src/core/group/services/group-user.service.ts |
0008, 0009 |
apps/server/src/core/group/services/group.service.ts |
0008, 0009 |
apps/server/src/database/types/db.d.ts |
0005, 0009 |
Per patch
0001-bases-date-time-picker.patch
apps/client/src/ee/base/components/cells/cell-date.tsxapps/client/src/ee/base/components/row-detail-modal/fields/field-date.tsx
0002-freenterprise-branding.patch
apps/client/src/ee/licence/components/license-details.tsx
0003-formula-editor-dark-mode.patch
apps/client/src/ee/base/components/formula/formula-input.tsxapps/client/src/ee/base/components/formula/function-palette.tsxapps/client/src/ee/base/styles/formula.module.css
0004-dark-mode-default.patch
apps/client/index.htmlapps/client/src/main.tsx
0005-base-row-pages-schema.patch
apps/server/src/database/migrations/20260813T120000-base-row-pages.ts— createdapps/server/src/database/types/db.d.ts
0006-sidebar-create-base-or-board.patch
apps/client/src/ee/base/types/base.types.tsapps/client/src/features/page/tree/components/create-page-menu.tsx— createdapps/client/src/features/page/tree/components/space-tree-row.tsxapps/client/src/features/page/tree/hooks/use-tree-mutation.tsapps/client/src/features/space/components/sidebar/space-sidebar.tsx
0008-lock-externally-synced-groups.patch
apps/client/src/features/group/components/group-action-menu.tsxapps/client/src/features/group/components/group-details.tsxapps/client/src/features/group/components/group-list.tsxapps/client/src/features/group/components/group-members.tsxapps/client/src/features/group/types/group.types.tsapps/server/src/core/group/services/group-user.service.tsapps/server/src/core/group/services/group.service.ts
0009-group-driven-workspace-roles.patch
apps/client/src/features/group/components/group-details.tsxapps/client/src/features/group/components/group-list.tsxapps/client/src/features/group/queries/group-query.tsapps/client/src/features/group/services/group-service.tsapps/client/src/features/group/types/group.types.tsapps/client/src/features/user/types/user.types.tsapps/client/src/features/workspace/components/members/components/workspace-members-table.tsxapps/server/src/core/group/services/group-user.service.tsapps/server/src/core/group/services/group.service.tsapps/server/src/core/workspace/services/workspace.service.tsapps/server/src/database/migrations/20260814T090000-group-workspace-role.ts— createdapps/server/src/database/repos/group/group.repo.tsapps/server/src/database/repos/user/user.repo.tsapps/server/src/database/types/db.d.ts
0010-openapi-swagger.patch
apps/server/nest-cli.jsonapps/server/package.jsonapps/server/src/main.tspnpm-workspace.yaml
Maintaining them
| Script | Does |
|---|---|
scripts/check-upstream.sh |
The one entry point: pin invariant, the EE test suite, then patch verification |
scripts/verify-patches.sh |
Applies the stack the way the Docker build does, checks created files exist, typechecks server and client |
scripts/apply-patches.sh |
Applies (or --reverts) the stack in a working tree, for pnpm dev |
scripts/gen-patch.sh |
Regenerates one patch correctly: prepare, hand-edit, write |
CI runs the same checks as a gate: the image is only built and published if they pass.