Skip to content

Commit 21e721d

Browse files
authored
Merge branch 'suitenumerique:main' into move_email_to_celery
2 parents f11cf9e + 21ee38c commit 21e721d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+802
-357
lines changed

.github/workflows/crowdin_upload.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ jobs:
2323
uses: actions/checkout@v4
2424
# Backend i18n
2525
- name: Install Python
26-
uses: actions/setup-python@v3
26+
uses: actions/setup-python@v5
2727
with:
2828
python-version: "3.13.3"
29+
cache: "pip"
2930
- name: Upgrade pip and setuptools
3031
run: pip install --upgrade pip setuptools
3132
- name: Install development dependencies

.github/workflows/impress-frontend.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,53 @@ jobs:
136136
name: playwright-other-report
137137
path: src/frontend/apps/e2e/report/
138138
retention-days: 7
139+
140+
bundle-size-check:
141+
runs-on: ubuntu-latest
142+
needs: install-dependencies
143+
if: github.event_name == 'pull_request'
144+
permissions:
145+
contents: read
146+
pull-requests: write
147+
issues: write
148+
steps:
149+
- name: Checkout repository
150+
uses: actions/checkout@v4
151+
152+
- name: Detect relevant changes
153+
id: changes
154+
uses: dorny/paths-filter@v2
155+
with:
156+
filters: |
157+
lock:
158+
- 'src/frontend/**/yarn.lock'
159+
app:
160+
- 'src/frontend/apps/impress/**'
161+
162+
- name: Restore the frontend cache
163+
uses: actions/cache@v4
164+
with:
165+
path: "src/frontend/**/node_modules"
166+
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
167+
fail-on-cache-miss: true
168+
169+
- name: Setup Node.js
170+
if: steps.changes.outputs.lock == 'true' || steps.changes.outputs.app == 'true'
171+
uses: actions/setup-node@v4
172+
with:
173+
node-version: "22.x"
174+
175+
- name: Check bundle size changes
176+
if: steps.changes.outputs.lock == 'true' || steps.changes.outputs.app == 'true'
177+
uses: preactjs/compressed-size-action@v2
178+
with:
179+
repo-token: "${{ secrets.GITHUB_TOKEN }}"
180+
build-script: "build"
181+
pattern: "./out/**/*.{css,js,html}"
182+
exclude: "{**/*.map,**/node_modules/**}"
183+
minimum-change-threshold: 500
184+
compression: "gzip"
185+
cwd: "./src/frontend/apps/impress"
186+
show-total: true
187+
strip-hash: "\\b\\w+\\."
188+
omit-unchanged: true

.github/workflows/impress.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,10 @@ jobs:
8989
- name: Checkout repository
9090
uses: actions/checkout@v2
9191
- name: Install Python
92-
uses: actions/setup-python@v3
92+
uses: actions/setup-python@v5
9393
with:
9494
python-version: "3.13.3"
95+
cache: "pip"
9596
- name: Upgrade pip and setuptools
9697
run: pip install --upgrade pip setuptools
9798
- name: Install development dependencies
@@ -184,9 +185,10 @@ jobs:
184185
mc version enable impress/impress-media-storage"
185186
186187
- name: Install Python
187-
uses: actions/setup-python@v3
188+
uses: actions/setup-python@v5
188189
with:
189190
python-version: "3.13.3"
191+
cache: "pip"
190192

191193
- name: Install development dependencies
192194
run: pip install --user .[dev]

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@ and this project adheres to
88

99
## [Unreleased]
1010

11+
### Added
12+
13+
- 👷(CI) add bundle size check job #1268
14+
1115
### Changed
1216

17+
- ♻️(docs-app) Switch from Jest tests to Vitest #1269
1318
- ⚡️(frontend) improve accessibility:
1419
- #1248
1520
- #1235
@@ -19,11 +24,14 @@ and this project adheres to
1924
- #1244
2025
- #1270
2126
- #1282
27+
- ♻️(backend) fallback to email identifier when no name #1298
28+
- 🐛(backend) allow ASCII characters in user sub field #1295
2229

2330
### Fixed
2431

2532
- 🐛(makefile) Windows compatibility fix for Docker volume mounting #1264
2633
- 🐛(minio) fix user permission error with Minio and Windows #1264
34+
- 🐛(frontend) fix export when quote block and inline code #1319
2735

2836
## [3.5.0] - 2025-07-31
2937

Makefile

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,77 @@ post-bootstrap: \
9393
mails-build
9494
.PHONY: post-bootstrap
9595

96+
pre-beautiful-bootstrap: ## Display a welcome message before bootstrap
97+
ifeq ($(OS),Windows_NT)
98+
@echo ""
99+
@echo "================================================================================"
100+
@echo ""
101+
@echo " Welcome to Docs - Collaborative Text Editing from La Suite!"
102+
@echo ""
103+
@echo " This will set up your development environment with:"
104+
@echo " - Docker containers for all services"
105+
@echo " - Database migrations and static files"
106+
@echo " - Frontend dependencies and build"
107+
@echo " - Environment configuration files"
108+
@echo ""
109+
@echo " Services will be available at:"
110+
@echo " - Frontend: http://localhost:3000"
111+
@echo " - API: http://localhost:8071"
112+
@echo " - Admin: http://localhost:8071/admin"
113+
@echo ""
114+
@echo "================================================================================"
115+
@echo ""
116+
@echo "Starting bootstrap process..."
117+
else
118+
@echo "$(BOLD)"
119+
@echo "╔══════════════════════════════════════════════════════════════════════════════╗"
120+
@echo "║ ║"
121+
@echo "║ 🚀 Welcome to Docs - Collaborative Text Editing from La Suite ! 🚀 ║"
122+
@echo "║ ║"
123+
@echo "║ This will set up your development environment with : ║"
124+
@echo "║ • Docker containers for all services ║"
125+
@echo "║ • Database migrations and static files ║"
126+
@echo "║ • Frontend dependencies and build ║"
127+
@echo "║ • Environment configuration files ║"
128+
@echo "║ ║"
129+
@echo "║ Services will be available at: ║"
130+
@echo "║ • Frontend: http://localhost:3000 ║"
131+
@echo "║ • API: http://localhost:8071 ║"
132+
@echo "║ • Admin: http://localhost:8071/admin ║"
133+
@echo "║ ║"
134+
@echo "╚══════════════════════════════════════════════════════════════════════════════╝"
135+
@echo "$(RESET)"
136+
@echo "$(GREEN)Starting bootstrap process...$(RESET)"
137+
endif
138+
@echo ""
139+
.PHONY: pre-beautiful-bootstrap
140+
141+
post-beautiful-bootstrap: ## Display a success message after bootstrap
142+
@echo ""
143+
ifeq ($(OS),Windows_NT)
144+
@echo "Bootstrap completed successfully!"
145+
@echo ""
146+
@echo "Next steps:"
147+
@echo " - Visit http://localhost:3000 to access the application"
148+
@echo " - Run 'make help' to see all available commands"
149+
else
150+
@echo "$(GREEN)🎉 Bootstrap completed successfully!$(RESET)"
151+
@echo ""
152+
@echo "$(BOLD)Next steps:$(RESET)"
153+
@echo " • Visit http://localhost:3000 to access the application"
154+
@echo " • Run 'make help' to see all available commands"
155+
endif
156+
@echo ""
157+
.PHONY: post-beautiful-bootstrap
96158

97-
bootstrap: ## Prepare Docker developmentimages for the project
159+
bootstrap: ## Prepare the project for local development
98160
bootstrap: \
161+
pre-beautiful-bootstrap \
99162
pre-bootstrap \
100163
build \
101164
post-bootstrap \
102-
run
165+
run \
166+
post-beautiful-bootstrap
103167
.PHONY: bootstrap
104168

105169
bootstrap-e2e: ## Prepare Docker production images to be used for e2e tests

README.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,23 @@ Docs is a collaborative text editor designed to address common challenges in kno
4949
* 📚 Turn your team's collaborative work into organized knowledge with Subpages.
5050

5151
### Self-host
52-
🚀 Docs is easy to install on your own servers
5352

54-
Available methods: Helm chart, Nix package
55-
56-
In the works: Docker Compose, YunoHost
57-
58-
⚠️ For some advanced features (ex: Export as PDF) Docs relies on XL packages from BlockNote. These are licenced under AGPL-3.0 and are not MIT compatible. You can perfectly use Docs without these packages by setting the environment variable `PUBLISH_AS_MIT` to true. That way you'll build an image of the application without the features that are not MIT compatible. Read the [environment variables documentation](/docs/env.md) for more information.
53+
#### 🚀 Docs is easy to install on your own servers
54+
We use Kubernetes for our [production instance](https://docs.numerique.gouv.fr/) but also support Docker Compose. The community contributed a couple other methods (Nix, YunoHost etc.) check out the [docs](/docs/installation/README.md) to get detailed instructions and examples.
55+
56+
#### 🌍 Known instances
57+
We hope to see many more, here is an incomplete list of public Docs instances (urls listed in alphabetical order). Feel free to make a PR to add ones that are not listed below🙏
58+
59+
| | | |
60+
| --- | --- | ------- |
61+
| Url | Org | Public |
62+
| docs.numerique.gouv.fr | DINUM | French public agents working for the central administration and the extended public sphere. ProConnect is required to login in or sign up|
63+
| docs.suite.anct.gouv.fr | ANCT | French public agents working for the territorial administration and the extended public sphere. ProConnect is required to login in or sign up|
64+
| notes.demo.opendesk.eu | ZenDiS | Demo instance of OpenDesk. Request access to get credentials |
65+
| notes.liiib.re | lasuite.coop | Free and open demo to all. Content and accounts are reset after one month |
66+
67+
#### ⚠️ Advanced features
68+
For some advanced features (ex: Export as PDF) Docs relies on XL packages from BlockNote. These are licenced under GPL and are not MIT compatible. You can perfectly use Docs without these packages by setting the environment variable `PUBLISH_AS_MIT` to true. That way you'll build an image of the application without the features that are not MIT compatible. Read the [environment variables documentation](/docs/env.md) for more information.
5969

6070
## Getting started 🔧
6171

docs/env.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ NODE_ENV=production NEXT_PUBLIC_PUBLISH_AS_MIT=false yarn build
135135
| PUBLISH_AS_MIT | Removes packages whose licences are incompatible with the MIT licence (see below) | true |
136136

137137
Packages with licences incompatible with the MIT licence:
138-
* `xl-docx-exporter`: [AGPL-3.0](https://github.com/TypeCellOS/BlockNote/blob/main/packages/xl-docx-exporter/LICENSE),
139-
* `xl-pdf-exporter`: [AGPL-3.0](https://github.com/TypeCellOS/BlockNote/blob/main/packages/xl-pdf-exporter/LICENSE),
140-
* `xl-multi-column`: [AGPL-3.0](https://github.com/TypeCellOS/BlockNote/blob/main/packages/xl-multi-column/LICENSE).
138+
* `xl-docx-exporter`: [GPL](https://github.com/TypeCellOS/BlockNote/blob/main/packages/xl-docx-exporter/LICENSE),
139+
* `xl-pdf-exporter`: [GPL](https://github.com/TypeCellOS/BlockNote/blob/main/packages/xl-pdf-exporter/LICENSE),
140+
* `xl-multi-column`: [GPL](https://github.com/TypeCellOS/BlockNote/blob/main/packages/xl-multi-column/LICENSE).
141141

142142
In `.env.development`, `PUBLISH_AS_MIT` is set to `false`, allowing developers to test Docs with all its features.
143143

docs/examples/helm/impress.values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ backend:
2727
OIDC_OP_AUTHORIZATION_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/auth
2828
OIDC_OP_TOKEN_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/token
2929
OIDC_OP_USER_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/userinfo
30-
OIDC_OP_LOGOUT_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/session/end
30+
OIDC_OP_LOGOUT_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/logout
3131
OIDC_RP_CLIENT_ID: impress
3232
OIDC_RP_CLIENT_SECRET: ThisIsAnExampleKeyForDevPurposeOnly
3333
OIDC_RP_SIGN_ALGO: RS256

docs/installation/README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Installation
2+
If you want to install Docs you've come to the right place.
3+
Here are a bunch of resources to help you install the project.
4+
5+
## Kubernetes
6+
We (Docs maintainers) are only using the Kubernetes deployment method in production. We can only provide advanced support for this method.
7+
Please follow the instructions laid out [here](/docs/installation/kubernetes.md).
8+
9+
## Docker Compose
10+
We are aware that not everyone has Kubernetes Cluster laying around 😆.
11+
We also provide [Docker images](https://hub.docker.com/u/lasuite?page=1&search=impress) that you can deploy using Compose.
12+
Please follow the instructions [here](/docs/installation/compose.md).
13+
⚠️ Please keep in mind that we do not use it ourselves in production. Let us know in the issues if you run into troubles, we'll try to help.
14+
15+
## Other ways to install Docs
16+
Community members have contributed several other ways to install Docs. While we owe them a big thanks 🙏, please keep in mind we (Docs maintainers) can't provide support on these installation methods as we don't use them ourselves and there are two many options out there for us to keep track of. Of course you can contact the contributors and the broader community for assistance.
17+
18+
Here is the list of other methods in alphabetical order:
19+
- Coop-Cloud: [code](https://git.coopcloud.tech/coop-cloud/lasuite-docs)
20+
- Nix: [Packages](https://search.nixos.org/packages?channel=unstable&query=lasuite-docs), ⚠️ unstable
21+
- Podman: [code][https://codeberg.org/philo/lasuite-docs-podman], ⚠️ experimental
22+
- YunoHost: [code](https://github.com/YunoHost-Apps/lasuite-docs_ynh), [app store](https://apps.yunohost.org/app/lasuite-docs)
23+
24+
Feel free to make a PR to add ones that are not listed above 🙏
25+
26+
## Cloud providers
27+
Some cloud providers are making it easy to deploy Docs on their infrastructure.
28+
29+
Here is the list in alphabetical order:
30+
- Clever Cloud 🇫🇷 : [market place][https://www.clever-cloud.com/product/docs/], [technical doc](https://www.clever.cloud/developers/guides/docs/#deploy-docs)
31+
32+
Feel free to make a PR to add ones that are not listed above 🙏

docs/installation/kubernetes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ OIDC_OP_JWKS_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol
124124
OIDC_OP_AUTHORIZATION_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/auth
125125
OIDC_OP_TOKEN_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/token
126126
OIDC_OP_USER_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/userinfo
127-
OIDC_OP_LOGOUT_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/session/end
127+
OIDC_OP_LOGOUT_ENDPOINT: https://keycloak.127.0.0.1.nip.io/realms/impress/protocol/openid-connect/logout
128128
OIDC_RP_CLIENT_ID: impress
129129
OIDC_RP_CLIENT_SECRET: ThisIsAnExampleKeyForDevPurposeOnly
130130
OIDC_RP_SIGN_ALGO: RS256

0 commit comments

Comments
 (0)