7094 Commits

Author SHA1 Message Date
renovate[bot] 1f6eeecaaa fix(deps): update dependency @dicebear/identicon to v9.4.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 01:33:51 +01:00
renovate[bot] 536d782ff2 fix(deps): update dependency i18next-browser-languagedetector to v8.2.1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 01:33:38 +01:00
renovate[bot] b758343fad fix(deps): update dependency mysql2 to v3.18.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 01:32:25 +01:00
renovate[bot] 2531dac28c chore(deps): update dependency @dicebear/converter to v9.4.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 01:27:56 +01:00
renovate[bot] 687d3b9bf4 fix(deps): update dependency @dicebear/core to v9.4.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 01:27:22 +01:00
renovate[bot] e5833cf04b fix(deps): update dependency ws to v8.19.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:43:22 +01:00
renovate[bot] 11195f0186 fix(deps): update dependency pg to v8.19.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:42:36 +01:00
renovate[bot] af360d8f48 chore(deps): update dependency @tsconfig/node24 to v24.0.4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:41:30 +01:00
renovate[bot] 3c04f16e39 chore(deps): update dependency @lezer/common to v1.5.1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:40:34 +01:00
renovate[bot] 7cef4e8ec3 chore(deps): update dependency pymdown-extensions to v10.21
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:39:41 +01:00
renovate[bot] 858c872934 fix(deps): update dependency nest-knexjs to v0.0.34
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:38:32 +01:00
renovate[bot] e2d1e3e28c fix(deps): update dependency sass to v1.97.3
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:29:37 +01:00
renovate[bot] a81add03dc chore(deps): update dependency markdownlint-cli2 to v0.21.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:29:07 +01:00
renovate[bot] ad020357a2 chore(deps): update dependency turbo to v2.8.13
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:28:00 +01:00
renovate[bot] 1445f7f6a7 chore(deps): update postgres docker tag to v16.13
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:23:26 +01:00
renovate[bot] e6d432ce6b fix(deps): update dependency abcjs to v6.6.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:23:03 +01:00
renovate[bot] f149045b85 chore(deps): update node.js to v24.14.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:21:52 +01:00
renovate[bot] 0db43b10c9 fix(deps): update dependency emoji-picker-element to v1.29.1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:20:46 +01:00
renovate[bot] 431c218c01 chore(deps): update docker/build-push-action action to v6.19.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:20:02 +01:00
renovate[bot] 863e28015f chore(deps): update docker/setup-buildx-action action to v3.12.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:19:16 +01:00
renovate[bot] 350d4bffc1 chore(deps): update node.js to v24.14.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:18:00 +01:00
renovate[bot] 5cd6c29d84 chore(deps): update docker/login-action action to v3.7.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:17:35 +01:00
renovate[bot] 85a9071d37 chore(deps): update github/codeql-action action to v3.32.5
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:16:16 +01:00
renovate[bot] 9f9ec59596 chore(deps): update actions/setup-node action to v6.2.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:13:08 +01:00
renovate[bot] 74fc58d63c chore(deps): update postgres:16.11 docker digest to 468e1f1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:04:18 +01:00
renovate[bot] a819f60eda chore(deps): update actions/cache action to v5.0.3
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:03:50 +01:00
renovate[bot] 78ced938ac chore(deps): update actions/checkout action to v6.0.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:03:06 +01:00
renovate[bot] 1a238411a6 chore(deps): update dependency mkdocs-material to v9.7.4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:02:29 +01:00
renovate[bot] 2bc1d05d77 chore(deps): update mariadb docker tag to v11.8.6
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:01:16 +01:00
renovate[bot] 35056110ef fix(deps): update dependency @orama/orama to v3.1.18
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:00:51 +01:00
renovate[bot] 15f1807808 fix(deps): update dependency better-sqlite3 to v12.6.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 23:59:11 +01:00
renovate[bot] 3aad984644 fix(deps): update dependency katex to v0.16.33
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 23:58:29 +01:00
renovate[bot] e7376aa05d chore(deps): update mariadb:11.8.5 docker digest to 345fa26
Docker / build-and-push (backend) (push) Has been cancelled
Docker / build-and-push (frontend) (push) Has been cancelled
E2E Tests / backend-sqlite (push) Has been cancelled
E2E Tests / backend-mariadb (push) Has been cancelled
E2E Tests / backend-postgres (push) Has been cancelled
Lint and check format / Lint files and check formatting (push) Has been cancelled
REUSE Compliance Check / reuse (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
Static Analysis / Njsscan code scanning (push) Has been cancelled
Static Analysis / CodeQL analysis (javascript) (push) Has been cancelled
Run tests & build / Test and build with NodeJS 24 (push) Has been cancelled
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 16:33:58 +01:00
renovate[bot] 4995f1bfa3 fix(deps): update dependency @nestjs/platform-fastify to v11.1.14 [security]
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 15:34:07 +01:00
renovate[bot] 89dcf618a7 chore(config): migrate config renovate.json 2026-03-03 15:32:58 +01:00
Erik Michelson aeba980ff5 fix(backend): expose backend port for non-localhost
E2E Tests / backend-sqlite (push) Has been cancelled
Docker / build-and-push (backend) (push) Has been cancelled
Docker / build-and-push (frontend) (push) Has been cancelled
Deploy HD2 docs to Netlify / Deploys to netlify (push) Has been cancelled
REUSE Compliance Check / reuse (push) Has been cancelled
E2E Tests / backend-mariadb (push) Has been cancelled
E2E Tests / backend-postgres (push) Has been cancelled
Lint and check format / Lint files and check formatting (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
Static Analysis / Njsscan code scanning (push) Has been cancelled
Static Analysis / CodeQL analysis (javascript) (push) Has been cancelled
Run tests & build / Test and build with NodeJS 24 (push) Has been cancelled
The current implementation restricts the backend port binding
to 127.0.0.1, since this is the default of fastify. This is a
reasonable default from a security standpoint. However, in
certain contexts like docker network, this won't work.
The new configuration option HD_BACKEND_BIND_IP allows to set
a custom IP address to which fastify binds, or setting
0.0.0.0 to bind to all interfaces.
At the same time this fix extends the Dockerfile to announce
port 3000 to be available to the docker daemon.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-20 19:28:38 +01:00
Erik Michelson 34e4172cb9 feat(editor): scroll to heading/element linked in URL fragment
Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-18 23:19:32 +01:00
Philip Molares 7e071ef6bf fix(revision): change query generation
To prevent DB errors change the query so that it works

Signed-off-by: Philip Molares <philip.molares@udo.edu>
2026-02-18 23:17:45 +01:00
Erik Michelson f57e12b85f feat(editor): add own undo/redo stack per user
This uses the yjs undo-manager and some keybindings for
CodeMirror to call that manager. The undo-manager ensures
to only undo or redo changes of the current user.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-18 19:37:08 +01:00
Erik Michelson 6d964c33d2 fix(database): ensure Knex reconnects after losing connection
This commit adds pooling to Knex since this seems the only reliable way to reconnect
the database after a lost connection. The pooling is only applied to MariaDB and
PostgreSQL since it makes no sense for SQLite.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-06 09:00:48 +01:00
Erik Michelson d585c37c7a feat(monitoring): add health check endpoint
Since the monitoring endpoints should be accessible without
requiring an API token, the token guard was removed.
For the detailed monitoring information, we might want to add
some extra monitoring token later on, or make that endpoint
dependent on some admin flag set for the user account trying
to access the endpoints.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-06 09:00:48 +01:00
Erik Michelson fe0b06064b chore(lint): fix some linting issues
Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 22:13:07 +01:00
Erik Michelson 6b18635924 fix(test): ignore error code for ts-jest message about isolatedModules
Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 22:13:07 +01:00
Erik Michelson a99f99d6ac feat(security): add rate limiting
This adds rate-limiting using the @fastify/rate-limit module with sane
default values, configuration options, the possibility to disable limits
and differentiation between logged-in users and unauthenticated requests.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 22:13:07 +01:00
Erik Michelson 66d052d611 feat(security): add CSRF protection to private API endpoints
This adds a new endpoint /api/private/csrf/token which serves a CSRF-token that
is stored in the user's session. Following requests with POST, PUT, PATCH or DELETE
request methods, need to provide this token in the CSRF-Token header. Since this
is not possible to do via HTML forms or other cross-site effects, this prevents
cross-site attacks. The frontend loads the CSRF token on app initialization and
stores it in the redux. It keeps using the token for up to one hour and then
updates the stored token from the API endpoint again.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 21:36:52 +01:00
Erik Michelson f0095cd8ec feat(config): make max upload size configurable
Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 21:36:52 +01:00
Erik Michelson a326939f70 fix(config): ensure session secret is always min 32 bytes long
Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 21:36:52 +01:00
Erik Michelson ac2255579f refactor(backend): switch from express to fastify
Fastify is a more modern web framework than express. Although it
shares almost the same API it has a way better performance and
supports more modern features. Several modules like csurf for
CSRF-protection aren't maintained for express anymore but there
is a Fastify replacement.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2026-02-04 21:36:52 +01:00
Philip Molares bb89f89af7 chore: fix types for diff
As diff uses its own types now, we need to adapt the code to use those

Signed-off-by: Philip Molares <philip.molares@udo.edu>
2026-01-22 00:39:47 +01:00
Philip Molares c2300c09ea chore: remove @types/diff
As diff brings it own types now we don't need @types/diff not anymore

Signed-off-by: Philip Molares <philip.molares@udo.edu>
2026-01-22 00:39:47 +01:00