From f323a45fef6bc3dbb906f10ebe9cd7e35d7cb41e Mon Sep 17 00:00:00 2001 From: William Mantly Date: Thu, 16 Jul 2026 16:00:59 -0400 Subject: [PATCH] Add CHANGELOG.md, serve it in-app at /docs/changelog (closes theta42/theta-env#43) GitHub Releases already carried real changelog notes per tag, but those require internet access to view -- exactly what the /docs route exists to avoid. CHANGELOG.md is a committed, Keep-a-Changelog style file (backfilled from the v1.1.0/v1.1.1/v1.1.2 release notes), linked from README and served at /docs/changelog alongside the rest of the project's docs. --- .dockerignore | 1 + CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ Dockerfile.openldap | 1 + README.md | 3 +++ nodejs/routes/docs.js | 1 + 5 files changed, 41 insertions(+) create mode 100644 CHANGELOG.md diff --git a/.dockerignore b/.dockerignore index 083ca37..718cd06 100644 --- a/.dockerignore +++ b/.dockerignore @@ -14,6 +14,7 @@ # context. !README.md !tos.md +!CHANGELOG.md !DEPLOYMENT.md !API.md !directory_spec.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bd9b93b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,35 @@ +# Changelog + +All notable changes to this project are documented here. Format loosely +follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions +correspond to git tags (`vX.Y.Z`) and `nodejs/package.json`'s `version`. + +## [Unreleased] + +## [1.1.2] - 2026-07-16 + +### Fixed +- Removed a dead IE<9-only `html5shim` script tag pointing at a domain that no longer resolves. + +### Added +- **In-app documentation**: `GET /docs` and `GET /docs/:slug` render this project's own README, DEPLOYMENT, API.md, `docs/{ldap,oauth,configuration}.md`, and `directory_spec.md` server-side — readable from the running app with no dependency on GitHub Pages, which requires internet access to view. Public, no auth, rate-limited. + +## [1.1.1] - 2026-07-16 + +### Added +- **Terms of Service is now editable at runtime by admins.** `tos.md` used to be baked into the repo and read once at startup, requiring a code change and deploy to update. It's now a Redis-backed singleton, editable from a new "Terms of Service" card on the admin Dashboard, with the bundled `tos.md` used only as a one-time seed for new deployments. Admins can optionally require all users to re-accept the terms after a substantive edit. Closes [#39](https://github.com/theta42/sso-manager-node/issues/39). ([#62](https://github.com/theta42/sso-manager-node/pull/62)) + +## [1.1.0] - 2026-07-16 + +First tagged release. Establishes the `vX.Y.Z` tag convention that the in-app update-check banner polls against going forward. + +### Added +- Standalone backup script (`ops/backup.sh`) — snapshots LDAP (`slapcat`), Redis, and `./config`, with retention. +- Admin-only in-app banner that checks GitHub releases every 24h and surfaces available updates. +- Unix/POSIX and LDAP bind-only service account support, distinct from real-person accounts. +- Merged OAuth Apps + LDAP Info into a single Integrations page. + +[Unreleased]: https://github.com/theta42/sso-manager-node/compare/v1.1.2...HEAD +[1.1.2]: https://github.com/theta42/sso-manager-node/compare/v1.1.1...v1.1.2 +[1.1.1]: https://github.com/theta42/sso-manager-node/compare/v1.1.0...v1.1.1 +[1.1.0]: https://github.com/theta42/sso-manager-node/releases/tag/v1.1.0 diff --git a/Dockerfile.openldap b/Dockerfile.openldap index 22857f9..10e90ad 100644 --- a/Dockerfile.openldap +++ b/Dockerfile.openldap @@ -98,6 +98,7 @@ COPY tos.md /tos.md # Documentation, served in-app at /docs (routes/docs.js) so it's readable # without internet access. Same flattened-path convention as tos.md above. COPY README.md /README.md +COPY CHANGELOG.md /CHANGELOG.md COPY DEPLOYMENT.md /DEPLOYMENT.md COPY API.md /API.md COPY directory_spec.md /directory_spec.md diff --git a/README.md b/README.md index 6441550..4af0d8c 100755 --- a/README.md +++ b/README.md @@ -161,6 +161,9 @@ required groups, LDAPS/TLS, direct-bind service accounts) live in: - [docs/](docs/) (GitHub Pages) — the same content broken into [deployment](docs/deployment.md), [configuration](docs/configuration.md), [OAuth/OIDC](docs/oauth.md), and [LDAP](docs/ldap.md). +- [CHANGELOG.md](CHANGELOG.md) — what changed in each release. +- All of the above is also readable from the running app itself at `/docs` — + no internet access required. If you are pointing the app at your own existing LDAP server, see *LDAP requirements* in [DEPLOYMENT.md](DEPLOYMENT.md) — the directory needs the diff --git a/nodejs/routes/docs.js b/nodejs/routes/docs.js index 98cae6c..67d5d96 100644 --- a/nodejs/routes/docs.js +++ b/nodejs/routes/docs.js @@ -25,6 +25,7 @@ const values = { // already covered by the "deployment" entry. const DOCS = { overview: {title: 'Overview', file: path.join(__dirname, '../../README.md')}, + changelog: {title: 'Changelog', file: path.join(__dirname, '../../CHANGELOG.md')}, deployment: {title: 'Deployment', file: path.join(__dirname, '../../DEPLOYMENT.md')}, api: {title: 'API Reference', file: path.join(__dirname, '../../API.md')}, ldap: {title: 'LDAP', file: path.join(__dirname, '../../docs/ldap.md')},