docs: refresh docs for 3.2.0 — correct stale content, document recent features#7888
docs: refresh docs for 3.2.0 — correct stale content, document recent features#7888JohnMcLear wants to merge 2 commits into
Conversation
… features The hand-maintained VitePress docs under doc/ had drifted behind a lot of recent work. They are authored prose (not generated from the OpenAPI spec), so they need manual upkeep. This pass corrects content that was actively wrong and documents features shipped since they were last touched. Corrections (was wrong / misleading): - cli.md: every command used `node bin/foo.js`, but the scripts are TypeScript run via pnpm — copy-paste failed. Rewrote to `pnpm run --filter bin <script>`, documented ~13 previously-undocumented operator tools, and split running-vs-stopped requirements. Registered the missing `compactStalePads` script in bin/package.json so the documented invocation actually works. - stats.md: described a pre-Prometheus world. Rewrote for the gated `/stats` (JSON) and `/stats/prometheus` endpoints, the live metric set, the opt-in `scalingDiveMetrics` instruments (ether#7756), and `measured-core`. - admin/updates.md: removed three false "SMTP not yet wired" claims (it is, via nodemailer + the `mail.*` block), documented the `node-engine-mismatch` preflight check and the rollback/preflight failure emails, and stripped obsolete "PR 1 / PR 2" staging language now that all tiers ship. - api/http_api.md: added the undocumented `anonymizeAuthor` (GDPR Art. 17) call, fixed copyPad/movePad version annotations (1.2.8 → 1.2.9), corrected getPadID's param name (readOnlyID → roID), and dropped a reference to a non-existent `getEtherpad` API call. - skins.md: colibris is the current default, not an "experimental" skin for a future 2.0. - localization.md: bare `window._('key')` is unbound and returns undefined; recommend `window.html10n.get(...)` / data-l10n-id instead. - README.md: bumped the v2.2.5 upgrade example to v3.2.0; fixed a docker.adoc link to docker.md. - docker.md: added MAIL_*, ENABLE_METRICS, GDPR_AUTHOR_ERASURE_ENABLED, PRIVACY_BANNER_*, PUBLIC_URL, AUTHENTICATION_METHOD, ENABLE_DARK_MODE, ENABLE_PAD_WIDE_SETTINGS; fixed the SOCKETIO_MAX_HTTP_BUFFER_SIZE default (50000 → 1000000). New documentation: - configuration.md (new): how settings + `${VAR:default}` substitution work, trustProxy, and — the previously-undocumented feature — running under a subpath/ingress via x-proxy-path / X-Forwarded-Prefix / X-Ingress-Path, with the sanitizer rules and Traefik/NGINX examples. Wired into the VitePress sidebar and the index hero. - hooks_server-side.md: ccRegisterBlockElements (the server-side companion plugin authors miss), exportConvert, exportHTMLSend, createServer, restartServer, and clientReady (marked deprecated). - hooks_client-side.md: aceDrop, acePaste, handleClientTimesliderMessage_<name>. VitePress build passes. The legacy .adoc set was intentionally left in place — it still feeds the per-version doc archives published to ether.github.com at release time (bin/release.ts), so it is not dead and is out of scope here. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
Review Summary by QodoRefresh documentation for 3.2.0: correct stale content and document recent features
WalkthroughsDescription• Corrected stale CLI documentation: rewrote commands from node bin/foo.js to `pnpm run --filter bin `, documented ~13 previously-undocumented operator tools, and registered missing compactStalePads script in bin/package.json • Rewrote stats documentation for Prometheus-era metrics: documented /stats (JSON) and /stats/prometheus endpoints, live metric set, opt-in scalingDiveMetrics instruments, and measured-core library • Corrected admin/updates documentation: removed three false "SMTP not yet wired" claims, documented mail.* SMTP block, node-engine-mismatch preflight check, and rollback/preflight failure emails • Added new configuration.md documenting settings substitution, trustProxy, and subpath/ingress support with Traefik/NGINX examples • Enhanced API documentation: added undocumented anonymizeAuthor (GDPR Art. 17) call, fixed copyPad/movePad version annotations, corrected getPadID parameter name, and removed reference to non-existent getEtherpad call • Documented previously-missing server-side hooks (ccRegisterBlockElements, exportConvert, exportHTMLSend, createServer, restartServer, clientReady) and client-side hooks (aceDrop, acePaste, handleClientTimesliderMessage_) • Updated Docker environment variables: added MAIL_*, ENABLE_METRICS, GDPR_AUTHOR_ERASURE_ENABLED, PRIVACY_BANNER_*, PUBLIC_URL, AUTHENTICATION_METHOD, ENABLE_DARK_MODE, ENABLE_PAD_WIDE_SETTINGS, and fixed SOCKETIO_MAX_HTTP_BUFFER_SIZE default (50000 → 1000000) • Fixed miscellaneous stale content: bumped upgrade example from v2.2.5 to v3.2.0, corrected docker.adoc link to docker.md, updated skins.md (colibris is current default), and fixed localization.md guidance on window._() binding issue Diagramflowchart LR
A["Hand-authored VitePress docs<br/>drifted behind recent work"] -->|"Corrections:<br/>CLI, stats, updates,<br/>API, skins, localization"| B["Accurate docs<br/>reflecting current state"]
A -->|"New pages:<br/>configuration.md<br/>with subpath/ingress"| C["Expanded documentation<br/>coverage"]
A -->|"New hooks:<br/>server-side & client-side"| D["Complete hook<br/>reference"]
A -->|"Docker env vars<br/>& settings"| E["Comprehensive<br/>deployment guide"]
B --> F["VitePress build passes<br/>with dead-link check"]
C --> F
D --> F
E --> F
File Changes2. bin/package.json
|
Code Review by Qodo
1.
|
…d and CLI help - configuration.md: the settings-override example referenced a nonexistent `node src/node/server.js`. Use the supported launcher instead (`bin/run.sh -s <file>`), and note the runtime is server.ts via tsx. - compactStalePads.ts / compactPad.ts / compactAllPads.ts: their header comments and runtime usage output still printed `node bin/*.js`, which points at files that don't exist. Switched to the documented `pnpm run --filter bin <script>` form so the --help text matches the docs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks @qodo — both addressed in 08808b2:
|
Why
The docs under
doc/are hand-authored VitePress markdown (not generated from the OpenAPI spec —openapi.tsonly builds the runtime Swagger definition and never reads/writesdoc/), so they need manual upkeep and had drifted behind a lot of recent work. This pass corrects content that was actively wrong and documents features shipped since the pages were last touched. Every change was verified against source.Corrections (was wrong / would mislead)
cli.md— every command saidnode bin/foo.js, but the scripts are TypeScript run via pnpm; copy-paste failed. Rewrote topnpm run --filter bin <script>, documented ~13 previously-undocumented operator tools, and split running-vs-stopped requirements. Registered the missingcompactStalePadsentry inbin/package.jsonso the documented command actually runs.stats.md— described a pre-Prometheus world. Rewrote for theenableMetrics-gated/stats(JSON) and/stats/prometheusendpoints, the live metric set, the opt-inscalingDiveMetricsinstruments (Performance: Look deeper into scaling N+ contributors per pad. #7756), and themeasured-corelibrary.admin/updates.md— removed three false "SMTP not yet wired / would send email" claims (it is wired via nodemailer + the newmail.*block), documented thenode-engine-mismatchpreflight check and the rollback/preflight failure emails, and stripped obsolete "PR 1 / PR 2" staging language now that all tiers ship.api/http_api.md— added the undocumentedanonymizeAuthor(GDPR Art. 17) call, fixedcopyPad/movePadversion annotations (1.2.8 → 1.2.9), correctedgetPadID's param name (readOnlyID→roID), and dropped a reference to a non-existentgetEtherpadAPI call.skins.md— colibris is the current default, not "experimental, will become default in 2.0".localization.md— barewindow._('key')is unbound and returnsundefined; recommendwindow.html10n.get(...)/data-l10n-id.README.md— bumped thev2.2.5upgrade example tov3.2.0; fixed adocker.adoclink todocker.md.docker.md— addedMAIL_*,ENABLE_METRICS,GDPR_AUTHOR_ERASURE_ENABLED,PRIVACY_BANNER_*,PUBLIC_URL,AUTHENTICATION_METHOD,ENABLE_DARK_MODE,ENABLE_PAD_WIDE_SETTINGS; fixed theSOCKETIO_MAX_HTTP_BUFFER_SIZEdefault (50000 → 1000000).New documentation
configuration.md(new) — how settings +${VAR:default}substitution work,trustProxy, and the previously-undocumented subpath / ingress support (x-proxy-path/X-Forwarded-Prefix/X-Ingress-Path), including the sanitizer rules and Traefik/NGINX examples. Wired into the sidebar and index hero.hooks_server-side.md—ccRegisterBlockElements(the server-side companion plugin authors miss),exportConvert,exportHTMLSend,createServer,restartServer,clientReady(deprecated).hooks_client-side.md—aceDrop,acePaste,handleClientTimesliderMessage_<name>.Notes / follow-ups (not in this PR)
.adocleft in place. It looked like a dead duplicate, butbin/release.tsstill runsmakeDocs(asciidoctor) and copies the output intoether.github.com/public/doc/v<version>— i.e. it feeds the per-version doc archives at release time. Deciding its fate (migrate the archive to VitePress vs keep) is a separate change.src/node/metrics.tsappears to be dead code (never imported/registered), so its gauges are intentionally not documented instats.md. Worth wiring up or removing in a follow-up.Test
VitePress build passes locally (
pnpm run docs:build), including the dead-link check.🤖 Generated with Claude Code