Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
532a8b3
ci: force qodo to check PR desc (#7346)
JohnMcLear Mar 4, 2026
4d80659
docs: add AGENTS.MD for AI and developer guidance (#7348)
JohnMcLear Mar 4, 2026
3482c5b
build(deps): bump docker/login-action from 3 to 4 (#7352)
dependabot[bot] Mar 5, 2026
7938f69
build(deps): bump docker/build-push-action from 6 to 7 (#7356)
dependabot[bot] Mar 6, 2026
c2b28ae
build(deps): bump docker/metadata-action from 5 to 6 (#7355)
dependabot[bot] Mar 6, 2026
47280d6
build(deps): bump docker/setup-buildx-action from 3 to 4 (#7354)
dependabot[bot] Mar 8, 2026
7a7c382
build(deps): bump express-rate-limit from 8.2.1 to 8.2.2 (#7357)
dependabot[bot] Mar 8, 2026
ffd96eb
build(deps): bump docker/setup-qemu-action from 3 to 4 (#7351)
dependabot[bot] Mar 8, 2026
ed4f606
Localisation updates from https://translatewiki.net.
translatewiki Mar 12, 2026
8bf610c
build(deps-dev): bump the dev-dependencies group with 16 updates (#7358)
dependabot[bot] Mar 12, 2026
731d9a0
build(deps): bump openapi-backend from 5.15.0 to 5.16.1 (#7361)
dependabot[bot] Mar 12, 2026
06690c1
build(deps): bump jose from 6.1.3 to 6.2.1 (#7364)
dependabot[bot] Mar 12, 2026
4fd1d73
build(deps): bump ejs from 4.0.1 to 5.0.1 (#7362)
dependabot[bot] Mar 12, 2026
f34cdf0
build(deps): bump oidc-provider from 9.6.1 to 9.7.0 (#7363)
dependabot[bot] Mar 12, 2026
c5d5f5d
build(deps): bump axios from 1.13.5 to 1.13.6 (#7360)
dependabot[bot] Mar 12, 2026
14c4f47
build(deps-dev): bump the dev-dependencies group with 7 updates (#7366)
dependabot[bot] Mar 12, 2026
1b3b23b
build(deps): bump actions/upload-artifact from 6 to 7 (#7339)
dependabot[bot] Mar 13, 2026
4d32bd6
build(deps): bump esbuild from 0.27.3 to 0.27.4 (#7367)
dependabot[bot] Mar 13, 2026
7bd7102
build(deps): bump express-rate-limit from 8.2.2 to 8.3.1 (#7359)
dependabot[bot] Mar 13, 2026
d3c3418
build(deps-dev): bump the dev-dependencies group with 3 updates (#7368)
dependabot[bot] Mar 14, 2026
7e37441
Localisation updates from https://translatewiki.net.
translatewiki Mar 16, 2026
de6d13d
build(deps): bump rate-limiter-flexible from 9.1.1 to 10.0.1 (#7374)
dependabot[bot] Mar 16, 2026
2a81604
build(deps): bump jsdom from 28.1.0 to 29.0.0 (#7372)
dependabot[bot] Mar 16, 2026
6bdfd9f
build(deps-dev): bump the dev-dependencies group with 2 updates (#7371)
dependabot[bot] Mar 16, 2026
00dc6db
build(deps): bump reitzig/actions-asciidoctor from 2.0.3 to 2.0.4 (#7…
dependabot[bot] Mar 16, 2026
e165ceb
build(deps): bump lru-cache from 11.2.6 to 11.2.7 (#7373)
dependabot[bot] Mar 16, 2026
773ed30
build(deps-dev): bump the dev-dependencies group with 2 updates (#7376)
dependabot[bot] Mar 18, 2026
532c8d1
build(deps): bump oidc-provider from 9.7.0 to 9.7.1 (#7378)
dependabot[bot] Mar 19, 2026
e17890a
build(deps-dev): bump the dev-dependencies group with 2 updates (#7381)
dependabot[bot] Mar 19, 2026
6a0f932
build(deps): bump jose from 6.2.1 to 6.2.2 (#7382)
dependabot[bot] Mar 19, 2026
29ad3d9
chore: catch all errors that can occur and log the error (#7375)
SamTV12345 Mar 19, 2026
a99ddb6
build(deps-dev): bump the dev-dependencies group with 2 updates (#7384)
dependabot[bot] Mar 20, 2026
9a92295
build(deps): bump jsdom from 29.0.0 to 29.0.1 (#7385)
dependabot[bot] Mar 20, 2026
43e831b
build(deps-dev): bump the dev-dependencies group with 10 updates (#7386)
dependabot[bot] Mar 24, 2026
d3f085b
Localisation updates from https://translatewiki.net.
translatewiki Mar 30, 2026
737f673
build(deps): bump axios from 1.13.6 to 1.14.0 (#7394)
dependabot[bot] Mar 30, 2026
20fb7a3
build(deps): bump actions/configure-pages from 5 to 6 (#7393)
dependabot[bot] Mar 30, 2026
039f045
build(deps): bump actions/deploy-pages from 4 to 5 (#7391)
dependabot[bot] Mar 30, 2026
7484d9e
Update deprecated GitHub Actions in plugin workflow templates (#7395)
JohnMcLear Mar 30, 2026
892c52b
Fix plugin backend-tests workflow pnpm 10 symlink error (#7396)
JohnMcLear Mar 30, 2026
45fe8a3
Fix backend-tests find path for plugin test discovery (#7397)
JohnMcLear Mar 30, 2026
e97e203
Fix backend-tests find pattern for versioned plugin paths (#7398)
JohnMcLear Mar 30, 2026
0423477
Fix/plugin workflow templates clean (#7399)
JohnMcLear Mar 31, 2026
561ee64
Improve AGENTS.MD with practical details (#7400)
JohnMcLear Mar 31, 2026
a6d283a
Fix plugin frontend-tests template: use dev mode not prod (#7402)
JohnMcLear Mar 31, 2026
09df1ce
Add pnpm update step to checkPlugin for dependency updates (#7404)
JohnMcLear Mar 31, 2026
f9798cf
Add scheduled workflow to update all plugins daily (#7406)
JohnMcLear Mar 31, 2026
2358a05
Improve update-plugins workflow resilience and add summary (#7407)
JohnMcLear Mar 31, 2026
264bab5
Fix webkit frontend tests silently passing when they fail (#7408)
JohnMcLear Mar 31, 2026
cd65f30
Enable nice-select on Safari/WebKit (#7413)
JohnMcLear Mar 31, 2026
c048d0a
Disable Playwright test retries to surface real failures (#7415)
JohnMcLear Mar 31, 2026
0a76256
Enable globstar in plugin backend-tests template (#7414)
JohnMcLear Mar 31, 2026
1814718
Fix frontend test failures across all browsers (#7416)
JohnMcLear Apr 1, 2026
b5d4452
Fix flaky unordered_list and undo frontend tests (#7418)
JohnMcLear Apr 1, 2026
fd97532
Fix ESM/CJS interop for Settings module breaking plugin compatibility…
JohnMcLear Apr 1, 2026
3a8242c
Fix flaky tests, admin restart, and broken plugin search (#7422)
JohnMcLear Apr 1, 2026
d9ac279
Increase timeout for admin settings textarea to load (#7423)
JohnMcLear Apr 1, 2026
0e556ec
Move load test to daily schedule instead of every push (#7425)
JohnMcLear Apr 1, 2026
4d7646a
build(deps): bump actions/setup-node from 4 to 6 (#7409)
dependabot[bot] Apr 1, 2026
09d782f
Enforce 2-space indentation across codebase (#7426)
JohnMcLear Apr 1, 2026
e0ba5ee
build(deps): bump pnpm/action-setup from 3 to 5 (#7410)
dependabot[bot] Apr 1, 2026
3239320
build(deps): bump actions/checkout from 4 to 6 (#7411)
dependabot[bot] Apr 1, 2026
72a41b2
build(deps): bump express-rate-limit from 8.3.1 to 8.3.2 (#7412)
dependabot[bot] Apr 1, 2026
32d9c89
Bump dev dependencies including TypeScript 5→6 with compatibility fix…
JohnMcLear Apr 1, 2026
290a2b2
build(deps-dev): bump the dev-dependencies group with 8 updates (#7429)
dependabot[bot] Apr 1, 2026
a324b1e
fix: stabilize frontend tests and drop webkit from CI (#7433)
JohnMcLear Apr 1, 2026
2f8e378
fix: prevent crash when pasting bare <li> without parent list element…
JohnMcLear Apr 3, 2026
a42e072
fix: wait for server confirmation before navigating after pad delete …
JohnMcLear Apr 3, 2026
4c70991
fix: reset list numbering when switching from unordered to ordered li…
JohnMcLear Apr 3, 2026
d5acbb3
fix: filter already-deleted sessions when deleting a group (#7435)
JohnMcLear Apr 3, 2026
4ce2a1a
build(deps): bump esbuild from 0.27.4 to 0.27.5 (#7440)
dependabot[bot] Apr 3, 2026
712bfe6
fix: PageDown now advances caret by a full page of lines (#7437)
JohnMcLear Apr 3, 2026
bd60279
build(deps): bump esbuild from 0.27.5 to 0.28.0 (#7444)
dependabot[bot] Apr 3, 2026
6200230
build(deps-dev): bump the dev-dependencies group with 4 updates (#7443)
dependabot[bot] Apr 3, 2026
fd6b351
docs: add local test running guide to AGENTS.md (#7442)
JohnMcLear Apr 3, 2026
5199319
fix: secure-by-default error sanitization with dedup and regression t…
JohnMcLear Apr 3, 2026
8b7155b
fix: createDiffHTML API fails with "Not a changeset: undefined" (#7445)
JohnMcLear Apr 4, 2026
f186ea9
fix: skip identity changesets during timeslider playback (#7438)
JohnMcLear Apr 4, 2026
928eef8
fix: consecutive numbering fails after indented sub-bullets (#7447)
JohnMcLear Apr 4, 2026
f7e4100
fix: appendText API now attributes text to the specified author (#7446)
JohnMcLear Apr 4, 2026
4896b52
fix: add padId to padUpdate/padCreate hook context (#7452)
JohnMcLear Apr 4, 2026
66249b5
fix: correct numConnectedUsers count for joining user (#7453)
JohnMcLear Apr 4, 2026
2c0c4df
chore: show individual test names in CI Playwright output (#7462)
JohnMcLear Apr 5, 2026
502a3b9
fix: accessibility — keyboard trap, screen reader support, aria-live …
JohnMcLear Apr 5, 2026
f0b84cc
fix: list bugs — indent export, renumber performance, and batching (#…
JohnMcLear Apr 5, 2026
474918a
feat: make cookie names configurable with prefix setting (#7450)
JohnMcLear Apr 5, 2026
36d61b2
fix: locale issues — custom strings caching, lang race, and window._(…
JohnMcLear Apr 5, 2026
af03259
fix: POST API requests with JSON body no longer time out (#7455)
JohnMcLear Apr 5, 2026
93c1791
fix: ignore errors from browser extensions in error handler and edito…
JohnMcLear Apr 5, 2026
833561a
fix: popup notification fits small screens (#7457)
JohnMcLear Apr 5, 2026
e55914d
fix: dead key / compose key no longer eats preceding space (#7459)
JohnMcLear Apr 5, 2026
72dc94f
fix: bold text retains formatting after copy-paste (#7460)
JohnMcLear Apr 5, 2026
bd73785
fix: preserve line attributes on neighboring lines during drag-and-dr…
JohnMcLear Apr 5, 2026
f8e6b20
chore: reduce CI matrix for PRs to prevent runner exhaustion (#7463)
JohnMcLear Apr 5, 2026
da9f5ac
fix: add periodic cleanup of expired/stale sessions from database (#7…
JohnMcLear Apr 5, 2026
605ad28
fix: prevent race condition in session cleanup timeout (#7471)
JohnMcLear Apr 6, 2026
ad21409
fix: handle git submodule in Docker build (#7469)
JohnMcLear Apr 6, 2026
220ae82
fix: use pnpm instead of npm in updatePlugins.sh (#7468)
JohnMcLear Apr 6, 2026
24fd1b1
fix: correct readFileSync calls in LinkInstaller to fix plugin instal…
JohnMcLear Apr 6, 2026
ef0b257
fix: RTL URL parameter rtl=false now correctly disables RTL mode (#7464)
JohnMcLear Apr 6, 2026
ac118cf
fix: preserve ordered list numbering across bullet interruptions in e…
JohnMcLear Apr 6, 2026
5320d56
Localisation updates from https://translatewiki.net.
translatewiki Apr 6, 2026
6a3094b
fix: sort language dropdown alphabetically by native name (#7477)
JohnMcLear Apr 6, 2026
7ce8b16
fix: numbered list wrapped lines now indent correctly (#7476)
JohnMcLear Apr 6, 2026
e488a43
fix: use correct path for connection diagnostics POST (#7475)
JohnMcLear Apr 6, 2026
270e3c6
fix: very old .etherpad imports could break import due to lack of aut…
JohnMcLear Apr 6, 2026
2814e5b
fix: dev mode entrypoint paths respect x-proxy-path header (#7472)
JohnMcLear Apr 6, 2026
29faec4
fix: increase max socket.io message size to 10MB for large pastes (#7…
JohnMcLear Apr 6, 2026
8c1b8b0
fix: add setters to CJS compatibility layer in Settings (#7481)
JohnMcLear Apr 6, 2026
b6f2828
build(deps): bump rate-limiter-flexible from 10.0.1 to 11.0.0 (#7484)
dependabot[bot] Apr 6, 2026
8764ae0
build(deps): bump lru-cache from 11.2.7 to 11.3.0 (#7483)
dependabot[bot] Apr 6, 2026
7011961
build(deps-dev): bump the dev-dependencies group with 2 updates (#7482)
dependabot[bot] Apr 6, 2026
301ae4d
feat: add one-line installer script (#7466) (#7485)
JohnMcLear Apr 7, 2026
d6ee322
build(deps-dev): bump vitest in the dev-dependencies group (#7486)
dependabot[bot] Apr 7, 2026
b00d9d6
build(deps): bump oidc-provider from 9.7.1 to 9.8.0 (#7487)
dependabot[bot] Apr 7, 2026
65c3fd3
build(deps): bump lru-cache from 11.3.0 to 11.3.2 (#7488)
dependabot[bot] Apr 7, 2026
ef1a8d9
build(deps): bump jsdom from 29.0.1 to 29.0.2 (#7489)
dependabot[bot] Apr 7, 2026
7c38378
feat: migrate npm publish to OIDC trusted publishing (#7401) (#7490)
JohnMcLear Apr 7, 2026
31e0a61
fix: capture head revision atomically with atext to prevent mismatche…
JohnMcLear Apr 7, 2026
7b6109e
ci: auto-merge clean Dependabot PRs on plugin repos in update-plugins…
JohnMcLear Apr 8, 2026
b57b25a
fix: setup-trusted-publishers.sh works with real npm trust CLI (#7491)
JohnMcLear Apr 8, 2026
aee356a
fix: use atomic git push in plugin npmpublish workflow (#7494)
JohnMcLear Apr 8, 2026
2761c4a
build(deps): bump ueberdb2 from 5.0.23 to 5.0.33 (#7497)
dependabot[bot] Apr 9, 2026
b6df192
build(deps-dev): bump the dev-dependencies group across 1 directory w…
dependabot[bot] Apr 12, 2026
8f16851
Update versions in markdown files (#7465)
Gared Apr 12, 2026
5df6355
build(deps): bump ueberdb2 from 5.0.33 to 5.0.34 (#7507)
dependabot[bot] Apr 13, 2026
a908c1a
build(deps): bump softprops/action-gh-release from 2 to 3 (#7501)
dependabot[bot] Apr 13, 2026
18c735c
build(deps-dev): bump sinon in the dev-dependencies group (#7503)
dependabot[bot] Apr 13, 2026
28db7a3
build(deps): bump axios from 1.14.0 to 1.15.0 (#7498)
dependabot[bot] Apr 13, 2026
bc43105
build(deps): bump ejs from 5.0.1 to 5.0.2 (#7506)
dependabot[bot] Apr 13, 2026
0eb444a
build(deps): bump lru-cache from 11.3.2 to 11.3.5 (#7505)
dependabot[bot] Apr 13, 2026
555ccbe
build(deps): bump pnpm/action-setup from 5 to 6 (#7502)
dependabot[bot] Apr 13, 2026
55f1124
Add aceRegisterLineAttributes hook for line attribute preservation on…
JohnMcLear Apr 14, 2026
2622fed
Bump ueberdb2 to ^5.0.40 — fixes Docker CI crash (#7511)
JohnMcLear Apr 14, 2026
df13779
Bump ueberdb2 to ^5.0.41 and update lockfile (#7513)
JohnMcLear Apr 14, 2026
5e0602c
Fix Docker build: use production-only workspace config (#7514)
JohnMcLear Apr 14, 2026
649f960
Add docs for aceRegisterLineAttributes hook (#7512)
JohnMcLear Apr 14, 2026
f4dde52
Bump ueberdb2 to ^5.0.42 — production dependencies for db drivers (#7…
JohnMcLear Apr 14, 2026
6ba51d6
build(deps): bump actions/upload-pages-artifact from 4 to 5 (#7517)
dependabot[bot] Apr 14, 2026
7a535d7
build(deps): bump resolve from 1.22.11 to 1.22.12 (#7504)
dependabot[bot] Apr 14, 2026
269ea71
build(deps-dev): bump the dev-dependencies group across 1 directory w…
dependabot[bot] Apr 15, 2026
36af9ef
build(deps): bump ueberdb2 from 5.0.34 to 5.0.45 (#7520)
dependabot[bot] Apr 15, 2026
2f632e5
fix: remove scarf telemetry and unused swc from approved build scripts
JohnMcLear Apr 15, 2026
9542052
fix: explicitly ignore scarf build scripts to fix bin install CI (#7523)
JohnMcLear Apr 16, 2026
2a264ea
fix(tests): stabilize flaky list_wrap_indent frontend test (#7522)
JohnMcLear Apr 16, 2026
58c8e26
fix: also declare pnpm build-script policy in package.json (#7525)
JohnMcLear Apr 16, 2026
372ea3b
fix: downgrade ERR_PNPM_IGNORED_BUILDS to a warning (#7527)
JohnMcLear Apr 16, 2026
3ef99bb
fix: flush pending changesets immediately after reconnect (#7458)
JohnMcLear Apr 16, 2026
252e198
build(deps): bump oidc-provider from 9.8.0 to 9.8.1 (#7530)
dependabot[bot] Apr 16, 2026
32d5d90
chore: remove dead root files (.travis.yml, .lgtm.yml, *.bat) (#7531)
JohnMcLear Apr 16, 2026
706dd4b
docs(readme): lead with positioning, not feature description (#7526)
JohnMcLear Apr 17, 2026
aed5424
fix: use hardlink package-import-method so the Docker build works on …
JohnMcLear Apr 17, 2026
e8adc4d
build(deps-dev): bump the dev-dependencies group with 5 updates (#7536)
dependabot[bot] Apr 17, 2026
d62ab65
build(deps): bump oidc-provider from 9.8.1 to 9.8.2 (#7537)
dependabot[bot] Apr 18, 2026
0206e04
checkPlugin: flag absolute /static/plugins/ asset paths in templates …
JohnMcLear Apr 18, 2026
66f49bb
docs(openapi): document apikey auth in openapi.json (#7534)
JohnMcLear Apr 18, 2026
7ec581a
feat!: replace Abiword with LibreOffice and add DOCX export (#7539)
JohnMcLear Apr 19, 2026
84060fb
feat: add timeslider playback speed setting (#7541)
JohnMcLear Apr 19, 2026
4137109
fix: allow undo of clear authorship colors without disconnect (#7430)
JohnMcLear Apr 19, 2026
2f0b5b0
fix: warn when a pending edit is not accepted (#7540)
JohnMcLear Apr 19, 2026
e0ccdb4
Add creator-owned pad settings defaults (#7545)
JohnMcLear Apr 19, 2026
e58dfa4
feat: add timeslider line numbers (#7542)
JohnMcLear Apr 19, 2026
c4add02
test: regression tests for Settings CJS compat (#7543) (#7551)
JohnMcLear Apr 19, 2026
e8c9efb
chore: Rename some occurences of etherpad-lite to etherpad (#7552)
Gared Apr 19, 2026
f3f6829
chore(deps): pin transitive deps to patched versions for 33 Dependabo…
JohnMcLear Apr 19, 2026
3ccf0b1
ci(security): restrict GITHUB_TOKEN permissions in update-plugins wor…
JohnMcLear Apr 19, 2026
c2e6938
ci: publish Docker images to GHCR alongside Docker Hub (#7569)
JohnMcLear Apr 20, 2026
f553cdf
Localisation updates from https://translatewiki.net.
translatewiki Apr 20, 2026
053f6d8
fix(#7570): bundle DB drivers, add regression CI (#7572)
JohnMcLear Apr 20, 2026
a6acfe6
build(deps): bump ueberdb2 from 5.0.45 to 5.0.48 (#7576)
dependabot[bot] Apr 21, 2026
9db0def
build(deps): bump axios from 1.15.0 to 1.15.1 (#7575)
dependabot[bot] Apr 21, 2026
da140a0
build(deps): bump rate-limiter-flexible from 11.0.0 to 11.0.1 (#7574)
dependabot[bot] Apr 21, 2026
41e5cb2
chore: added release notes for 2.7.0
SamTV12345 Apr 22, 2026
6d92d90
Merge branch 'develop'
Apr 22, 2026
3005f2a
bump version
Apr 22, 2026
2a4f51c
Merge branch 'master' into develop
Apr 22, 2026
fe6a373
feat: Remove paths from plugin packages (#7580)
Gared Apr 22, 2026
97b9c3b
build(deps): bump axios from 1.15.1 to 1.15.2 (#7581)
dependabot[bot] Apr 22, 2026
b45d89c
build(deps-dev): bump the dev-dependencies group across 1 directory w…
dependabot[bot] Apr 22, 2026
bd762a2
build(deps): bump mysql2 from 3.22.1 to 3.22.2 (#7578)
dependabot[bot] Apr 22, 2026
6bb879e
feat(packaging): add Debian (.deb) build via nfpm with systemd unit (…
JohnMcLear Apr 22, 2026
de5feb2
Revert "feat(packaging): add Debian (.deb) build via nfpm with system…
JohnMcLear Apr 22, 2026
67e542d
fix(editor): preserve U+00A0 non-breaking space (#3037) (#7585)
JohnMcLear Apr 23, 2026
9e352ca
fix(clientVars): stop mutating the shared plugin registry during sani…
JohnMcLear Apr 23, 2026
5074bf7
fix(a11y): negotiate lang/dir per request and set on <html>
JohnMcLear Apr 23, 2026
aa1a0ed
fix(a11y): dialog semantics on popups; fix aria-role typo on userlist
JohnMcLear Apr 23, 2026
aa5dd2f
fix(a11y): focus management and Escape-to-close for popups
JohnMcLear Apr 23, 2026
8432643
fix(a11y): make chaticon and chat header controls real buttons
JohnMcLear Apr 23, 2026
515ba19
fix(a11y): accessible names for icon-only toolbar/export controls
JohnMcLear Apr 23, 2026
68a0761
test(a11y): cover dialog semantics, html lang, icon button labels
JohnMcLear Apr 23, 2026
c89444c
fix(a11y): address Qodo review feedback from PR #7584
JohnMcLear Apr 23, 2026
f8548b2
fix(a11y): close popups with no focusable content; unbreak chat-icon …
JohnMcLear Apr 23, 2026
c2062fe
fix(a11y): only stash _lastTrigger for dropdown-opening buttons
JohnMcLear Apr 23, 2026
59b7ee3
fix(a11y): address Qodo review round 4 for PR #7584
JohnMcLear Apr 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!--

1. If you haven't already, please read https://github.com/ether/etherpad-lite/blob/master/CONTRIBUTING.md#pull-requests .
2. Run all the tests, both front-end and back-end. (see https://github.com/ether/etherpad-lite/blob/master/CONTRIBUTING.md#testing)
1. If you haven't already, please read https://github.com/ether/etherpad/blob/master/CONTRIBUTING.md#pull-requests .
2. Run all the tests, both front-end and back-end. (see https://github.com/ether/etherpad/blob/master/CONTRIBUTING.md#testing)
3. Keep business logic and validation on the server-side.
4. Update documentation.
5. Write `fixes #XXXX` in your comment to auto-close an issue.
Expand Down
24 changes: 8 additions & 16 deletions .github/workflows/backend-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ jobs:
strategy:
fail-fast: false
matrix:
node: [">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"]
# PRs: test on latest Node only. Push to develop: full matrix.
node: ${{ github.event_name == 'pull_request' && fromJSON('[">=24.0.0 <25.0.0"]') || fromJSON('[">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"]') }}
steps:
-
name: Checkout repository
Expand Down Expand Up @@ -83,7 +84,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node: [">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"]
node: ${{ github.event_name == 'pull_request' && fromJSON('[">=24.0.0 <25.0.0"]') || fromJSON('[">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"]') }}
steps:
-
name: Checkout repository
Expand Down Expand Up @@ -124,29 +125,26 @@ jobs:
ep_author_hover
ep_cursortrace
ep_font_size
ep_hash_auth
ep_headings2
ep_markdown
ep_readonly_guest
ep_set_title_on_pad
ep_spellcheck
ep_subscript_and_superscript
ep_table_of_contents --runtimeVersion="${{ matrix.node }}"
ep_table_of_contents
-
name: Run the backend tests
run: gnpm test --runtimeVersion="${{ matrix.node }}"
- name: Run the new vitest tests
working-directory: src
run: gnpm run test:vitest --runtimeVersion="${{ matrix.node }}"

# Windows tests only run on push to develop/master, not on PRs
withoutpluginsWindows:
env:
PNPM_HOME: ~\\.pnpm-store
# run on pushes to any branch
# run on PRs from external forks
if: |
(github.event_name != 'pull_request')
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
github.event_name != 'pull_request'
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -194,11 +192,8 @@ jobs:
withpluginsWindows:
env:
PNPM_HOME: ~\\.pnpm-store
# run on pushes to any branch
# run on PRs from external forks
if: |
(github.event_name != 'pull_request')
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
github.event_name != 'pull_request'
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -232,22 +227,19 @@ jobs:
run: gnpm build --runtimeVersion="${{ matrix.node }}"
-
name: Install Etherpad plugins
# The --legacy-peer-deps flag is required to work around a bug in npm
# v7: https://github.com/npm/cli/issues/2199
run: >
gnpm install --workspace-root
ep_align
ep_author_hover
ep_cursortrace
ep_font_size
ep_hash_auth
ep_headings2
ep_markdown
ep_readonly_guest
ep_set_title_on_pad
ep_spellcheck
ep_subscript_and_superscript
ep_table_of_contents --runtimeVersion="${{ matrix.node }}"
ep_table_of_contents
# Etherpad core dependencies must be installed after installing the
# plugin's dependencies, otherwise npm will try to hoist common
# dependencies by removing them from src/node_modules and installing them
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build-and-deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
with:
version: 0.0.12
- name: Setup Pages
uses: actions/configure-pages@v5
uses: actions/configure-pages@v6
- name: Install dependencies
run: gnpm install
- name: Build app
Expand All @@ -59,10 +59,10 @@ jobs:
env:
COMMIT_REF: ${{ github.sha }}
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
uses: actions/upload-pages-artifact@v5
with:
# Upload entire repository
path: './doc/.vitepress/dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
181 changes: 164 additions & 17 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@ on:
- 'v?[0-9]+.[0-9]+.[0-9]+'
env:
TEST_TAG: etherpad/etherpad:test

permissions:
contents: read

jobs:
docker:
build-test:
runs-on: ubuntu-latest
permissions:
contents: read
env:
PNPM_HOME: ~/.pnpm-store
steps:
Expand All @@ -26,17 +29,12 @@ jobs:
uses: actions/checkout@v6
with:
path: etherpad

-
name: Set up QEMU
if: github.event_name == 'push'
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
-
name: Build and export to Docker
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
context: ./etherpad
target: production
Expand Down Expand Up @@ -78,37 +76,186 @@ jobs:
done
(cd src && gnpm run test-container)
git clean -dxf .

build-test-db-drivers:
runs-on: ubuntu-latest
permissions:
contents: read
services:
mysql:
image: mysql:8
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: etherpad
MYSQL_USER: etherpad
MYSQL_PASSWORD: password
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -ppassword"
--health-interval=5s
--health-timeout=5s
--health-retries=20
postgres:
image: postgres:16
env:
POSTGRES_DB: etherpad
POSTGRES_USER: etherpad
POSTGRES_PASSWORD: password
ports:
- 5432:5432
options: >-
--health-cmd="pg_isready -U etherpad -d etherpad"
--health-interval=5s
--health-timeout=5s
--health-retries=20
steps:
-
name: Check out
uses: actions/checkout@v6
with:
path: etherpad
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
-
name: Build production image
uses: docker/build-push-action@v7
with:
context: ./etherpad
target: production
load: true
tags: ${{ env.TEST_TAG }}
cache-from: type=gha
cache-to: type=gha,mode=max
-
name: Driver presence test (all 10 ueberdb2 drivers must resolve)
run: |
docker run --rm -w /opt/etherpad-lite/src "$TEST_TAG" node -e "
const mods = [
'@elastic/elasticsearch','cassandra-driver','mongodb','mssql',
'mysql2','nano','pg','redis','rethinkdb','surrealdb'
];
let fail = false;
for (const m of mods) {
try { require(m); console.log('ok', m); }
catch (e) { console.error('MISSING', m, e.message); fail = true; }
}
if (fail) process.exit(1);
"
-
name: MySQL smoke — start Etherpad against mysql service
run: |
docker run --rm -d \
--network host \
-e NODE_ENV=production \
-e ADMIN_PASSWORD=admin \
-e DB_TYPE=mysql \
-e DB_HOST=127.0.0.1 \
-e DB_PORT=3306 \
-e DB_NAME=etherpad \
-e DB_USER=etherpad \
-e DB_PASS=password \
-e DB_CHARSET=utf8mb4 \
-e DEFAULT_PAD_TEXT="Test " \
--name et-mysql "$TEST_TAG"
for i in $(seq 1 60); do
if curl -sf http://127.0.0.1:9001/ >/dev/null; then
echo "mysql smoke: Etherpad is serving /"
docker rm -f et-mysql
exit 0
fi
sleep 2
done
echo "mysql smoke: timed out waiting for Etherpad"
docker logs et-mysql || true
docker rm -f et-mysql || true
exit 1
-
name: Postgres smoke — start Etherpad against postgres service
run: |
docker run --rm -d \
--network host \
-e NODE_ENV=production \
-e ADMIN_PASSWORD=admin \
-e DB_TYPE=postgres \
-e DB_HOST=127.0.0.1 \
-e DB_PORT=5432 \
-e DB_NAME=etherpad \
-e DB_USER=etherpad \
-e DB_PASS=password \
-e DEFAULT_PAD_TEXT="Test " \
--name et-postgres "$TEST_TAG"
for i in $(seq 1 60); do
if curl -sf http://127.0.0.1:9001/ >/dev/null; then
echo "postgres smoke: Etherpad is serving /"
docker rm -f et-postgres
exit 0
fi
sleep 2
done
echo "postgres smoke: timed out waiting for Etherpad"
docker logs et-postgres || true
docker rm -f et-postgres || true
exit 1

publish:
needs: [build-test, build-test-db-drivers]
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
-
name: Check out
uses: actions/checkout@v6
with:
path: etherpad
-
name: Set up QEMU
uses: docker/setup-qemu-action@v4
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
-
name: Docker meta
if: github.event_name == 'push'
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: etherpad/etherpad
images: |
etherpad/etherpad
ghcr.io/ether/etherpad
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
-
name: Log in to Docker Hub
if: github.event_name == 'push'
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Log in to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
id: build-docker
if: github.event_name == 'push'
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
context: ./etherpad
target: production
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
- name: Update repo description
uses: peter-evans/dockerhub-description@v5
if: github.ref == 'refs/heads/master'
Expand All @@ -118,8 +265,8 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: etherpad/etherpad
enable-url-completion: true
- name: Check out
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
- name: Check out ether-charts
if: github.ref == 'refs/heads/develop'
uses: actions/checkout@v6
with:
path: ether-charts
Expand Down
Loading
Loading