34f6bb5d0f
Update README.md
2026-09-14 20:06:04 +02:00
Joakim Svensson
1e2e22d238
Docker file och compose
2026-09-14 20:06:04 +02:00
Joakim Svensson
734171ded4
Docker file och compose
2026-09-14 20:06:04 +02:00
Joakim Svensson
0482e5b3c0
Add Invite Agent action to editor menu and allow CSP connect-src
2026-09-14 20:06:04 +02:00
Erik Michelson
b933504071
chore(release): bump version numbers, authors, etc
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 23:40:50 +02:00
renovate[bot]
47a7cdf3f3
chore(deps): lock file maintenance
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 22:37:37 +02:00
renovate[bot]
43f414adc4
fix(deps): update dependency markdown-it to v14.3.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 22:27:02 +02:00
Erik Michelson
02c6c08bd3
fix(upload): invalid check for upload content
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 22:25:12 +02:00
Erik Michelson
0e24145095
chore(deps): upgrade uuid to 14.0.2
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 22:25:12 +02:00
Erik Michelson
486fcfef67
chore(deps): upgrade archiver to 8.0.0
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 22:25:12 +02:00
Erik Michelson
dddd3a7ed5
fix(renderer): upgrade styles and API of highlight.js
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 22:06:36 +02:00
renovate[bot]
95ba7f6fb5
chore(deps): update dependency highlight.js to v11
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 22:06:36 +02:00
Philip Molares
788676aba4
refactor: umzug
...
allow umzug v3 to work with the umzug v2 migrations
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-08-21 20:30:00 +02:00
renovate[bot]
dcdf30b4c4
fix(deps): update dependency umzug to v3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 20:30:00 +02:00
Erik Michelson
074f7251e9
fix(deps): update scrypt import to ESM
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 20:05:02 +02:00
renovate[bot]
6ea80ef636
fix(deps): update dependency scrypt-kdf to v4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 20:05:02 +02:00
renovate[bot]
c66f4c2ec2
chore(deps): update dependency pymdown-extensions to v11
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 19:34:09 +02:00
renovate[bot]
10dd207ff4
chore(deps): update dependency remark-preset-lint-markdown-style-guide to v6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 19:15:25 +02:00
renovate[bot]
9a91b286ea
chore(deps): update dependency globals to v17
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 19:10:33 +02:00
Philip Molares
65b39de212
refactor: formidable usage
...
Instead of a single image or an array formidable now always returns an array of files.
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-08-21 18:31:13 +02:00
renovate[bot]
f2b50dd290
fix(deps): update dependency formidable to v3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 18:31:13 +02:00
Erik Michelson
b7c46b0a90
fix(image-upload): make imageRouter ESM ready
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 18:09:35 +02:00
renovate[bot]
01e1b6bd4d
fix(deps): update dependency is-svg to v6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 18:09:35 +02:00
renovate[bot]
d62e095553
fix(deps): update dependency mariadb to v3.5.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 18:06:53 +02:00
Erik Michelson
8340e3f3a2
fix: update imports for updated markdown-it-plugins
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 17:48:11 +02:00
renovate[bot]
286add5d0d
fix(deps): update dependency markdown-it-emoji to v3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 17:48:11 +02:00
renovate[bot]
5504ac52b2
fix(deps): update dependency cheerio to v1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 17:30:43 +02:00
renovate[bot]
9b008ccbab
fix(deps): update dependency markdown-it to v14 [security]
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 17:15:31 +02:00
Philip Molares
37b23c86c5
ci: drop node 18
...
node 18 is deprecated and we already announce that HedgeDoc won't work with it anymore.
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-08-21 16:34:00 +02:00
renovate[bot]
07d5997bb4
fix(deps): update dependency pg to v8.23.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:33:08 +02:00
renovate[bot]
03314ae9c4
chore(deps): update dependency mocha to v11.8.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:31:40 +02:00
renovate[bot]
a83e074ab1
chore(deps): update dependency less to v4.9.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:31:02 +02:00
Andreas Boesen
1464fc87cf
update docs/content/setup/manual-setup.md: node 18 -> 20
...
The changelog 1.10.1 2025-02-02 deprecates Node 18 and says that future
releases will require Node 20.
<c02dc05bec/public/docs/release-notes.md (-1101--2025-02-02) >
Signed-off-by: Andreas Boesen <boesen@belwue.de >
2026-08-21 16:29:43 +02:00
renovate[bot]
f181334990
chore(deps): update dependency abcjs to v6.7.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:29:31 +02:00
renovate[bot]
28e8e34c79
fix(deps): update dependency nanoid to v3.3.18
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:24:07 +02:00
renovate[bot]
d9e2e6674b
fix(deps): update dependency mysql2 to v3.23.4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:20:06 +02:00
renovate[bot]
9586121695
fix(deps): update dependency js-yaml to v4.3.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 16:19:07 +02:00
renovate[bot]
66732eff2d
fix(deps): update dependency express-rate-limit to v8.6.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 15:59:06 +02:00
renovate[bot]
b2cb53143a
fix(deps): update dependency dompurify to v3.4.14
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 13:25:14 +02:00
Erik Michelson
766d00c4d9
fix(realtime): proper reconnect handling for socket.io
...
Socket.IO seems to include an own reconnect mechanism for some time.
HedgeDoc however built an own reconnect mechanism on top of that.
Since the 'reconnect' event was dropped for socket.io 4.x, the
reconnect-cleanup code didn't run anymore.
This commit fixes this by:
- removing the manual reconnect interval,
- putting the reconnect handler into the correct place,
- setting reconnection options on the server side
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 13:22:17 +02:00
Erik Michelson
d1ad8d71fe
fix(socket.io): remove deprecated cookie option from server-side
...
See docs at: https://socket.io/docs/v4/server-options/#cookie
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 13:22:17 +02:00
Erik Michelson
da2c065e59
fix(realtime): check for online users before clearing note
...
The disconnect handler for the realtime connection checks whether the
disconnecting socket was the last user for that note. If that's the
case and the note had unsaved changes, it persists them to the database
which is an async progress. In the callback of this async progress, the
note and all its pending changes (should be empty) are deleted.
However, when the user reconnects quickly because of a flaky
connection, it could happen that they create new pending changes before
the database saving finished. As there was no additional "no-users"
check before clearing the note, this could lead to content loss.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-08-21 13:22:17 +02:00
Tony Chau
ffcf79ef07
fix: open links in new tab
...
The addition of external link warning has changed the behavior of
opening links from opening in a new tab to opening in the same tab.
This restores the old behavior and opens all links in a new tab.
Signed-off-by: Tony Chau <90050474+fo5for@users.noreply.github.com >
2026-08-21 12:20:11 +02:00
Lars Kiesow
d05cfe4e9f
feat: add auto login to skip sign-in method chooser
...
If you combine OIDC with local accounts or if your OIDC provider is an
external company (Facebook, GitHub, …) it makes sense for HedgeDoc to
show a additional login modal so users know that they will leave the
page.
However, if OAuth2/OIDC is a deployment's primary sign-in method and a
local OIDC provider is being used, users expect the common SSO method
being used, and he "Choose method" modal is a redundant extra click.
Essentially, you may have to click login thrice:
- Click login -> modal opens
- Click Login with provider -> provider login opens
- Log in (unless you are logged in already)
This simple patch adds an auto-login configuration, which makes the Sign
In button link straight to the provider's OAuth2 flow, improving the UX
of tHedgeDoc's login.
Signed-off-by: Lars Kiesow <lkiesow@uos.de >
2026-08-21 10:33:25 +02:00
Andy Piper
ed7f374434
docs: change mastodon color to brand purple
2026-07-31 20:10:05 +00:00
Philip Molares
16dd9a9faf
docs: extend release-checklist from 1.11.1 release
...
We just released 1.11.1 and noticed some things that need to be changed in the release checklist.
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-07-24 21:58:08 +02:00
Erik Michelson
0dda149c7f
fix(permissions): ignore unknown permission values
...
The permission checks did not check for unknown permission values
submitted to the server. This allowed bypassing permission checks
under certain circumstances. However, this is not as critical as
it might sound at first, since checks guard that only the owner
can modify note permissions and the owner already has always
full permission to their note.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-24 21:39:28 +02:00
Erik Michelson
0a7fc28d8b
chore(release): bump version and adapt release notes for 1.11.1
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-24 21:39:28 +02:00
renovate[bot]
95660a6665
chore(deps): lock file maintenance
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 22:23:42 +02:00
renovate[bot]
efcb6d472a
fix(deps): update dependency mysql2 to v3.23.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:44:15 +02:00
renovate[bot]
a16f574283
chore(deps): update actions/setup-node action to v7
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:43:45 +02:00
renovate[bot]
3aae6316a7
fix(deps): update dependency helmet to v8.3.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:43:16 +02:00
renovate[bot]
88e73180fd
fix(deps): update dependency express-rate-limit to v8.6.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:42:40 +02:00
renovate[bot]
7ee513b0cc
chore(deps): update dependency less to v4.8.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:41:56 +02:00
renovate[bot]
c0cc5ff0bb
fix(deps): update dependency nanoid to v3.3.16
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:36:22 +02:00
renovate[bot]
5e112e96df
fix(deps): update dependency dompurify to v3.4.12
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:35:47 +02:00
Erik Michelson
9c1b36df95
fix(slide-preview): list items in correct order
...
This change fixes the displaying of (nested) list items in the preview
pane of the editor. Previously, list items were all treated as inline
blocks and therefore nested list items were placed next to the previous
item instead of below it. Now they align properly as expected.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-23 21:35:24 +02:00
renovate[bot]
844c390bbc
chore(deps): update linters
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:35:13 +02:00
renovate[bot]
297f30ecba
chore(deps): update dependency mkdocs-material to v9.7.7
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:34:28 +02:00
renovate[bot]
de588c19be
chore(deps): update dependency abcjs to v6.6.4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:33:49 +02:00
renovate[bot]
44beea5d54
chore(deps): update actions/checkout action to v7.0.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-23 21:31:48 +02:00
Erik Michelson
2391e406cb
chore(config): remove unused allowOrigin config option
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-22 22:54:36 +02:00
Philip Molares
b03489859a
chore(changelog): explain Temp removal
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-07-22 22:54:36 +02:00
Philip Molares
cda70628fa
refactor: remove wurl dependency
...
This was mainly used in now removed code, any other uses were fixed with the URL constructor
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-07-22 22:54:36 +02:00
Philip Molares
0749c31100
refactor: remove Temp
...
This was a very old way of migrating the history and is no longer needed.
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-07-22 22:54:36 +02:00
Philip Molares
3f50054609
refactor(xssWhitelist): remove unnecessary whitelist entries
...
All the deleted entries are in the default white contained and don't need to be added another time.
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-07-22 20:20:54 +02:00
Philip Molares
1a7c27470e
fix(externalLinks): make external link warning work with subpaths
2026-07-22 20:14:44 +02:00
Erik Michelson
c77d64ad6e
refactor: wildcard and strict host link whitelisting
...
The previously contributed config option for whitelisting domains
treated all entries like wildcard entries and matched subdomains
too. Since some users don't want this behaviour, this changes the
config option to differentiate between wildcard entries like
"*.example.com" and strict host entries like "example.com".
Since this config option was not released yet, it is safe to
change it without breaking user setups.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-19 14:40:36 +02:00
Erik Michelson
0ebf0dbc6b
feat: add config option to disable external link warning
...
Since it is heavily requested by users, this adds a new config option
to disable the previously introduced external link warning.
Be aware however, that disabling this config option weakens the
security of your HedgeDoc instance and is therefore only recommended
for closed trustworthy user groups.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-19 14:40:36 +02:00
Andre Julius
d20619315e
docs: Update Arch Linux package link (community -> extra) ( #6576 )
...
Signed-off-by: Andre Julius <noromoron@gmail.com >
2026-07-19 14:34:54 +02:00
Shivam Shukla
a741859060
fix(editor): restore native browser zoom keyboard shortcuts
...
Signed-off-by: Shivam Shukla <lucifer84670@gmail.com >
2026-07-15 08:59:14 +02:00
Shivam Shukla
f6c1feb26f
docs: clarify CMD_PORT is used for URL generation with CMD_PATH
...
The docs claimed that host and port are completely ignored when a
UNIX domain socket path is configured. However, the port is still
used for URL generation when urlAddPort is enabled.
Closes #6515
Signed-off-by: Shivam Shukla <lucifer84670@gmail.com >
2026-07-14 23:17:24 +02:00
odpay
2c5b38e3bd
docs: add Zenith Hosting deploy option
...
Signed-off-by: odpay <odpay@odpay.net >
2026-07-10 16:27:37 +02:00
renovate[bot]
a48df18d9a
fix(deps): update dependency pg to v8.22.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-04 23:53:46 +02:00
renovate[bot]
3c37dcfa26
fix(deps): update dependency js-yaml to v4.3.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-04 23:53:12 +02:00
renovate[bot]
7215f75624
fix(deps): update dependency nanoid to v3.3.15
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-04 23:52:42 +02:00
renovate[bot]
3889b84ac6
chore(deps): update dependency less to v4.6.7
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-04 23:50:44 +02:00
renovate[bot]
1a4ce7a33a
chore(deps): update actions/cache action to v6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-04 23:49:44 +02:00
Erik Michelson
c02dc05bec
docs: add CVE numbers to release-notes
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-07-04 22:27:16 +02:00
Tobias Dillig
1e75f7462d
feat: add 'image/webp' to allowed upload MIME types
...
Signed-off-by: Tobias Dillig <tobias.dillig@frachtwerk.de >
2026-07-04 22:25:43 +02:00
Tobi
e4d5124211
feat(external-links): add whitelist to bypass redirect page ( #6548 )
...
Signed-off-by: Tobias Dillig <tobias.dillig@frachtwerk.de >
Signed-off-by: Tobi <tldev-de@users.noreply.github.com >
2026-06-25 17:16:27 +02:00
Will Hawkins
179719473c
Minor Typos in Configuration Documentation
...
Fix minor typos in Configuration documentation to improve readability.
Signed-off-by: Will Hawkins <whh8b@obs.cr >
2026-06-23 00:13:32 +02:00
Philip Molares
e0351704c9
docs(release-checklist): add improvments from the 1.11.0 release
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-19 00:13:47 +02:00
Erik Michelson
f115b2d084
fix(views): fail-safe opengraph tag HTML rendering
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:56:45 +02:00
Erik Michelson
4007201575
chore(deps): update lockfile
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:56:45 +02:00
Erik Michelson
fe15adaf31
chore(release): bump version, update release notes, update authors
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:56:45 +02:00
Erik Michelson
c489497e45
refactor(frontmatter): constrain frontmatter object after parsing
...
This change removes the meta-marked dependency which solely was
used for extracting the frontmatter, which is possible as well
with one function. Furthermore, this introduces constraints to
objects resulting from frontmatter parsing and enforces them in
order to prevent attacks like a yaml bomb (massive alias expansion).
This change should resolve a possible DoS attack.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:56:45 +02:00
Erik Michelson
fbd7307f16
fix(gist-export): validate OAuth2 state and redirect URI
...
The state of the OAuth2 response was not verified.
In theory an attacker could use this to extract the contents of a note.
Co-authored-by: Philip Molares <philip.molares@udo.edu >
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:56:45 +02:00
Erik Michelson
dd40a6c04b
fix(auth): sanitize email addresses
...
Previously, maliciously crafted email addresses
could be used to sneak HTML code into the HedgeDoc
editor, since HedgeDoc uses the local part of the
address as a display name for users.
We're now sanitizing this using DOMPurify.
Co-authored-by: Philip Molares <philip.molares@udo.edu >
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:56:45 +02:00
renovate[bot]
291b9d592d
chore(deps): update linters to v7.3.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 23:10:06 +02:00
renovate[bot]
16d426704f
chore(deps): update test packages to v11.7.6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 23:09:32 +02:00
renovate[bot]
209391c7fc
chore(deps): pin dependencies
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 23:01:54 +02:00
Erik Michelson
e9a2c514dd
fix(ci): include node version in yarn cache
...
The dependency set may differ between node versions.
This fixed caching makes it harder for version-specific deps and
might introduce bugs therefore. We now include the node version
in the cache key.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 23:00:01 +02:00
Erik Michelson
6676d640ba
revert: chore(deps): update yarn monorepo to v4.17.0"
...
This reverts commit 71a4d19a83 .
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-18 22:54:54 +02:00
renovate[bot]
71a4d19a83
chore(deps): update yarn monorepo to v4.17.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 22:13:45 +02:00
renovate[bot]
d80f26be9a
fix(deps): update dependency helmet to v8.2.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 22:00:52 +02:00
renovate[bot]
1851f34d3f
fix(deps): update dependency body-parser to v2.3.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:58:14 +02:00
renovate[bot]
32b433fa62
chore(deps): update dependency esbuild-loader to v4.5.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:57:16 +02:00
renovate[bot]
865e5b4180
fix(deps): update dependency pg to v8.21.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:51:05 +02:00
renovate[bot]
b940b52e71
chore(deps): update actions/checkout action to v7
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:50:25 +02:00
renovate[bot]
f443e5bbd4
chore(deps): update dependency pymdown-extensions to v10.21.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:50:12 +02:00
renovate[bot]
be6273ec8f
fix(deps): update dependency dompurify to v3.4.11
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:49:36 +02:00
renovate[bot]
528530ebf3
fix(deps): update dependency morgan to v1.11.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:48:22 +02:00
renovate[bot]
0de5c5c1a9
fix(deps): update dependency express to v4.22.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:47:17 +02:00
renovate[bot]
86e20c9c48
fix(deps): update dependency nanoid to v3.3.13
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:44:01 +02:00
renovate[bot]
8046666943
fix(deps): update dependency uuid to v11.1.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:41:15 +02:00
renovate[bot]
7783aa7cc5
fix(deps): update dependency express-rate-limit to v8.5.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:40:46 +02:00
renovate[bot]
8b9463358d
chore(deps): update dependency less to v4.6.6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:36:00 +02:00
renovate[bot]
72b3696af5
chore(deps): update dependency js-cookie to v3.0.8
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:31:06 +02:00
renovate[bot]
07505cdd61
chore(deps): update actions/checkout action to v6.0.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:30:19 +02:00
Philip Molares
8891d75baa
feat(rate-limit): add more config options
...
Allow the admin to specify the rate-limits for user signup / login
Allow the admin to specify if Cloudflare specific rate-limit functionality should be used or not
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-17 21:08:07 +02:00
Philip Molares
d7c1e45814
refactor(docs): fix links
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-17 19:35:24 +02:00
Philip Molares
523cb8ea1f
chore(changelog): changes to config.json.example
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-17 19:35:24 +02:00
Philip Molares
1fb904a137
feat(docs): add production ready page
...
This page explains what you need to consider and configure to make your HedgeDoc instance production ready.
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-17 19:35:24 +02:00
Philip Molares
c77676faee
refactor(config): improve config.json.example
...
Remove all the unnecessary config options, we know have a docs website for quite some time, we don't need this to document options.
Add some sane defaults in regard to anonymous usage and stats
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-17 19:35:24 +02:00
Philip Molares
f1070734b1
refactor(docs): move media guides
...
The media guides should also live in their own folder like the auth guides do as well
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-06-17 19:35:24 +02:00
Erik Michelson
814271dc0b
feat(editor): add external link warning page
...
A malicious user could modify a valid looking link (for example of the editor UI)
to point to a malicous site, by using overlays and CSS. Since CSS should stay
enabled, we need to make the user aware of possible risks when leaving the
HedgeDoc instance, in order to protect them from credential-theft.
This commit adds a new interstitial page for external links, that shows the
target URL and asks the user, whether they really want to continue.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-06-10 20:15:09 +02:00
renovate[bot]
fa00e34635
chore(deps): update dependency abcjs to v6.6.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-09 19:30:55 +02:00
renovate[bot]
c145549af4
fix(deps): update dependency mysql2 to v3.22.5
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-09 11:41:01 +02:00
지지 ᚠד (Jiji Freya Daniel) Maslowski
193446daed
docs(setup): note that the FreeBSD port is unmaintained
...
Signed-off-by: 지지 ᚠד (Jiji Freya Daniel) Maslowski <info@orangecms.org >
2026-05-30 11:10:30 +02:00
renovate[bot]
cc9194bfca
fix(deps): update dependency dompurify to v3.4.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-05 14:15:41 +02:00
renovate[bot]
2abfdb9628
chore(deps): update actions/setup-node action to v6.4.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-29 19:12:50 +02:00
Mathias Kende
03775f0f80
docs(auth): update authelia configuration guide ( #6465 )
2026-04-16 10:24:58 +02:00
Erik Michelson
f0f0b3a3b4
docs(release): update checklist with minor fixes
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-04-16 10:21:45 +02:00
Erik Michelson
b09975a3ba
chore(build): success message + executable bit for ot build script
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-04-15 21:35:05 +02:00
Erik Michelson
8b00b6419c
chore(release): update AUTHORS and release notes
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-04-15 21:35:05 +02:00
Erik Michelson
20de73bb65
chore(release): bump version to 1.10.8
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-04-15 21:35:05 +02:00
renovate[bot]
bb32d61a7e
chore(deps): lock file maintenance
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:32:54 +02:00
renovate[bot]
325c659e4b
chore(deps): update actions/cache action to v5.0.5
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:23:40 +02:00
renovate[bot]
0b27277612
chore(deps): update dependency turndown to v7.2.4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:23:29 +02:00
renovate[bot]
5123f3b57d
fix(deps): update dependency connect-session-sequelize to v8.0.6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:22:01 +02:00
renovate[bot]
ba91457a51
chore(deps): update dependency esbuild-loader to v4.4.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:20:42 +02:00
renovate[bot]
31933a9f7d
fix(deps): update dependency file-type to v21.3.4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:20:09 +02:00
renovate[bot]
fbd2cdbc2f
chore(deps): update dependency pymdown-extensions to v10.21.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:19:39 +02:00
renovate[bot]
0432642231
chore(deps): update dependency less to v4.6.4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:17:03 +02:00
renovate[bot]
451ae33f0d
fix(deps): update dependency validator to v13.15.35
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:14:09 +02:00
renovate[bot]
8d10830dc4
fix(deps): update dependency sanitize-filename to v1.6.4
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:12:44 +02:00
renovate[bot]
954d84129d
fix(deps): update dependency lodash to v4.18.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:12:20 +02:00
renovate[bot]
779682d35f
chore(deps): update yarn to v4.13.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:09:03 +02:00
renovate[bot]
254c1227d2
fix(deps): update dependency dompurify to v3.4.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 20:08:45 +02:00
renovate[bot]
e1c28c46e6
fix(deps): update dependency mysql2 to v3.22.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 19:56:47 +02:00
renovate[bot]
7ca140d9a7
fix(deps): update dependency express-rate-limit to v8.3.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 19:55:53 +02:00
renovate[bot]
78ff6fc49f
chore(deps): update dependency mkdocs-redirects to v1.2.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 19:53:21 +02:00
Erik Michelson
ca31580db5
fix(ot): add minified updated OT library and build:ot script
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-03-24 21:12:41 +01:00
Erik Michelson
5a5e12a693
fix(ot): keep pendingOps in StaleWithBuffer during applyClient
...
Co-authored-by: Philip Molares <philip.molares@udo.edu >
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-03-24 21:12:41 +01:00
Erik Michelson
c4841575c9
fix(ot): use default color constant for hex2rgb fallback
...
Co-authored-by: Philip Molares <philip.molares@udo.edu >
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-03-24 21:12:41 +01:00
bxff
65bf11554a
fix: buffer operations in Stale/StaleWithBuffer instead of throwing ( #6342 )
...
When 5+ users edit concurrently, revision gaps trigger the Stale state
which throws 'Ignored server-side change.' on incoming operations. This
causes document divergence, silent data corruption, and eventually
force-resets that discard local edits.
Changes:
- Stale/StaleWithBuffer.applyServer: buffer incoming operations instead
of throwing, apply them sequentially after missing ops arrive
- Stale.applyClient: carry pendingOps to StaleWithBuffer on transition
- editor-socketio-server: retry-based force-reset (3 failures) instead
of immediate nuclear reset on any OT error
- hex2rgb: defensive null checks for old non-hex color records
Signed-off-by: bxff <51504045+bxff@users.noreply.github.com >
2026-03-24 21:12:41 +01:00
renovate[bot]
f51f8dcc19
chore(deps): update linters
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 13:09:58 +01:00
renovate[bot]
ee1435748f
chore(deps): update actions/upload-artifact action to v7
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 13:07:52 +01:00
renovate[bot]
cbed25c170
chore(deps): update dependency mkdocs-material to v9.7.6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 13:04:30 +01:00
renovate[bot]
90febd954e
fix(deps): update dependency mysql2 to v3.20.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 13:03:35 +01:00
renovate[bot]
f7642f37f9
fix(deps): update dependency pg to v8.20.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 13:02:46 +01:00
renovate[bot]
32f119f7ac
fix(deps): update dependency rimraf to v6.1.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 12:59:41 +01:00
renovate[bot]
f5fceed8e2
fix(deps): update dependency minio to v8.0.7
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 12:58:16 +01:00
renovate[bot]
c75b02bc66
fix(deps): update dependency file-type to v21.3.2 [security]
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 12:56:44 +01:00
renovate[bot]
8ffea9963a
fix(deps): update dependency dompurify to v3.3.2 [security]
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 12:56:17 +01:00
renovate[bot]
11b299d186
chore(deps): update actions/setup-node action to v6.3.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 12:24:05 +01:00
renovate[bot]
2adc315f13
chore(deps): update dependency abcjs to v6.6.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 14:55:43 +01:00
renovate[bot]
6c91a8728e
chore(deps): update dependency abcjs to v6.6.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 14:52:00 +01:00
Philip Molares
cdedc8df33
chore(dependency): fix pymdown-extensions version
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-02-24 20:41:39 +01:00
Philip Molares
f0c0200eb9
docs(release-notes): add section about 1.10.7
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-02-24 20:24:44 +01:00
Erik Michelson
5cefc3cfe1
fix(cli): do not silently drop errors in manage_users CLI
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-24 20:24:44 +01:00
Philip Molares
5d00de9892
chore(release): bump version to 1.10.7
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-02-24 20:24:44 +01:00
Philip Molares
5603af245c
docs: add changelog entry
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-02-21 23:47:53 +01:00
Philip Molares
7e2a783161
fix(realtime): aboard finishConnection if user is missing
...
This can happen if the user disconnects during connection creation.
See #6101
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-02-21 23:47:53 +01:00
renovate[bot]
edf1f62b2e
chore(deps): update dependency pymdown-extensions to v10.21.1
2026-02-21 20:48:08 +01:00
renovate[bot]
6a4ab2bc5b
chore(deps): update actions/setup-node action to v6.2.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-21 20:44:01 +01:00
Erik Michelson
fd4d5bfbd1
fix(editor): always use random hex colors
...
chance.color() can output all valid CSS
values for colors, including rgba() syntax and predefined color
names. Due to the usage of hex2rgb and other methods, this can
break the editor. This commit ensures that all randomly generated
colors are specified in hex format.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-18 19:43:33 +01:00
xenein
7408217b6a
docs(features): clarification on locations for light/dark mode ( #6355 )
...
Signed-off-by: xenein <76600392+xenein@users.noreply.github.com >
2026-02-15 21:07:54 +01:00
Erik Michelson
2e66e4d5ec
fix(docs): update release checklist
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-04 21:34:39 +01:00
Erik Michelson
145e3ee318
chore(release): bump versions and release notes
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-04 20:27:41 +01:00
Erik Michelson
f910000d2b
feat(security): sanitize SVG files on upload
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-04 20:27:41 +01:00
Erik Michelson
b930fe04ce
fix(security): increase CSP policy by explicitly sandboxing uploads
...
Adding the sandbox attribute tells browsers to apply stricter
restrictions like preventing execution of plugins and scripts.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-04 20:27:41 +01:00
Erik Michelson
74daa0e7a1
fix(security): headers were not applied to uploads
...
Due to express static overriding the response, applying the extra headers
like CSP and Content-Disposition did not work for files served under the
/uploads route. By reordering, the code this works now.
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-04 20:27:41 +01:00
Erik Michelson
6fc411d17f
chore(deps): update lockfile
...
renovate was tired, so I did it manually
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-03 20:48:50 +01:00
Erik Michelson
0e9e2177cf
chore(deps): update dependencies
...
renovate was tired, so I did it manually
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-02-03 20:44:27 +01:00
renovate[bot]
f529214660
chore(deps): update actions/cache action to v5.0.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 20:19:26 +01:00
renovate[bot]
ebf98130d7
chore(deps): update actions/checkout action to v6.0.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 20:18:58 +01:00
renovate[bot]
d2dd6762a7
chore(deps): update dependency jquery-ui to v1.14.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 20:16:19 +01:00
renovate[bot]
14edc1a7a5
fix(deps): update dependency connect-session-sequelize to v8.0.5
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 20:13:31 +01:00
renovate[bot]
58d436c924
fix(deps): update dependency mysql2 to v3.16.3
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 20:13:01 +01:00
renovate[bot]
a3b49a6e24
chore(deps): update dependency esbuild-loader to v4.4.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 19:56:20 +01:00
renovate[bot]
a96e9cbdf9
fix(deps): update dependency lodash to v4.17.23 [security]
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 19:55:09 +01:00
renovate[bot]
a2da69ede5
chore(deps): update dependency eslint-plugin-n to v17.23.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 19:53:31 +01:00
renovate[bot]
8725196df6
chore(deps): update dependency utf-8-validate to v6.0.6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 19:51:43 +01:00
renovate[bot]
7c9d1ec712
fix(deps): update dependency body-parser to v2.2.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 19:51:12 +01:00
Erik Michelson
092e4d428d
docs: permissions page in the docs references
...
Signed-off-by: Erik Michelson <github@erik.michelson.eu >
2026-01-28 20:26:25 +01:00
Philip Molares
67b1917467
docs: fix number of permissions HD1 has
...
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2026-01-28 20:08:25 +01:00
renovate[bot]
e7055b43a4
chore(deps): update dependency mkdocs-material to v9.7.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-21 19:18:55 +01:00
renovate[bot]
eba2b2d711
chore(deps): update actions/cache action to v5.0.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-21 19:18:10 +01:00
xenein
cb7588d6fa
docs: Add speaker view and speaker notes to slide-options.md ( #6322 )
2026-01-15 13:12:10 +01:00
renovate[bot]
48a207571b
chore(deps): update actions/upload-artifact action to v6
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:31:28 +01:00
renovate[bot]
b76f397983
chore(deps): update actions/cache action to v5
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:27:48 +01:00
renovate[bot]
e77b9ced58
fix(deps): update dependency mysql2 to v3.16.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:17:17 +01:00
renovate[bot]
98e9e6cefc
chore(deps): update dependency pymdown-extensions to v10.19.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:13:50 +01:00
renovate[bot]
35f0b44906
chore(deps): update dependency less to v4.5.1
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:08:47 +01:00
renovate[bot]
92efa38948
chore(deps): update linters to v9.39.2
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:00:12 +01:00
renovate[bot]
4df25c436b
fix(deps): update dependency aws-sdk to v2.1693.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 22:02:02 +01:00
renovate[bot]
72e38c6bfd
chore(deps): update dependency pymdown-extensions to v10.18
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 21:21:31 +01:00
renovate[bot]
b0911e4434
fix(deps): update dependency winston to v3.19.0
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-08 11:00:20 +01:00
Philip Molares
9cb00262f6
docs: update release-checklist
...
Add the missings tests that lead to the problem with
HedgeDoc 1.10.4
Signed-off-by: Philip Molares <philip.molares@udo.edu >
2025-12-07 16:37:16 +01:00