diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 41eaff7..f205cb7 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -6,14 +6,14 @@ run-name: Publishing convertapi-js ${{ github.event.release.tag_name }} to npm
# publishes it to npm with provenance. npm versions are public and permanent - a published version can be
# deprecated but never replaced - so nothing here retries, overwrites or skips a duplicate.
#
-# gh release create v1.1.10 --target main --generate-notes -> convertapi-js 1.1.10 (module)
+# gh release create v1.1.12 --target main --generate-notes -> convertapi-js 1.1.12 (latest)
# gh release create v1.2.0-beta.1 --target main --prerelease ... -> convertapi-js 1.2.0-beta.1 (next)
#
-# The npm dist-tag `latest` is deliberately left on 1.0.8, the last non-module (script tag) build from the
-# `last_nonmodule` git tag, and the ES module line (1.1.x, this branch) is published under the dist-tag
-# `module`; the README installs it with `npm i convertapi-js@~1.1`. Moving `latest` to the module line would
-# change what `npm i convertapi-js` and unversioned CDN URLs serve, so it is a separate, deliberate step
-# (`npm dist-tag add convertapi-js@X.Y.Z latest`), not something a release does.
+# A stable release takes the npm dist-tag `latest`, so `npm i convertapi-js` and unversioned CDN URLs get the
+# ES module build that the README and convertapi.com document. Releases up to 1.1.11 went to the dist-tag
+# `module` instead, which stays on 1.1.11, while `latest` was kept on 1.0.8, the last non-module (script tag)
+# build from the `last_nonmodule` git tag. A page that still loads that build with a script tag must pin it:
+# https://unpkg.com/convertapi-js@1.0.8/lib/convertapi.js
#
# A stable version must be a commit on main. A pre-release may be any commit, so a branch can be tried
# out as a preview package before it is merged.
@@ -30,7 +30,7 @@ env:
# admins create v* tags) and the npm environment, which accepts only v* tags.
PUBLISHER: tomasr78
PACKAGE: convertapi-js
- STABLE_DIST_TAG: module
+ STABLE_DIST_TAG: latest
CONVERT_API_HOST: stag-v2.convertapi.com
jobs:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 80de909..de85088 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,12 +1,22 @@
# Changelog
All notable changes to the `convertapi-js` npm package. Versions follow [Semantic Versioning](https://semver.org/);
-from 1.1.10 on each one is a GitHub Release `v{version}` (see [RELEASING.md](RELEASING.md)). Stable 1.1.x
-versions are published under the npm dist-tag `module`; `latest` stays on the non-module 1.0.8.
+from 1.1.10 on each one is a GitHub Release `v{version}` (see [RELEASING.md](RELEASING.md)). Stable
+versions are published under the npm dist-tag `latest`; up to 1.1.11 they went to the dist-tag `module`,
+and `latest` stayed on the non-module 1.0.8.
-## 1.1.10 - 2026-10-20
+## Unreleased
+
+- Stable releases take the npm dist-tag `latest` instead of `module`, so `npm i convertapi-js` and
+ unversioned CDN URLs get the ES module build. `latest` was moved from 1.0.8 to 1.1.11 on 2026-11-12
+ (`npm dist-tag add`). `module` stays on 1.1.11. A page that loads the non-module
+ 1.0.8 with an unversioned script tag must pin it: https://unpkg.com/convertapi-js@1.0.8/lib/convertapi.js
+
+## 1.1.11 - 2026-10-20
- No change to the library code.
+- The GitHub Release v1.1.10 did not reach npm (its publish step failed, fixed in
+ https://github.com/ConvertAPI/convertapi-library-js/pull/28), so npm has no 1.1.10; 1.1.11 is the same code.
- `package.json` points at the renamed repository, https://github.com/ConvertAPI/convertapi-library-js,
and names the type declarations (`types`).
- The README's remote-file example uses a file that exists
@@ -25,5 +35,5 @@ versions are published under the npm dist-tag `module`; `latest` stays on the no
## 1.0.8 - 2022-06-21
-- Last non-module build (git tag `last_nonmodule`), still the npm dist-tag `latest`. Authenticates with
- the retired secret or API key and token in the query string.
+- Last non-module build (git tag `last_nonmodule`). It kept the npm dist-tag `latest` until the ES module
+ line took it over. Authenticates with the retired secret or API key and token in the query string.
diff --git a/README.md b/README.md
index 156b86b..3a04c67 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@ The ConvertAPI-JS library makes it easier to use the Convert API from your web p
You can get your token at https://www.convertapi.com/a/authentication
If you are interested in our old version of **non-module** JavaScript library you can [find it here](https://github.com/ConvertAPI/convertapi-library-js/tree/last_nonmodule).
+To load it with a script tag, pin its version: ``.
## Try it online
diff --git a/RELEASING.md b/RELEASING.md
index 4fadbbe..ed59a36 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -18,7 +18,7 @@ CONVERT_API_SECRET= CONVERT_API_HOST=stag-v2.convertapi.com npm t
A release is a **GitHub Release** whose tag is the version, published by `tomasr78`:
```bash
-gh release create v1.1.10 --repo ConvertAPI/convertapi-library-js --target main --title v1.1.10 --generate-notes
+gh release create v1.1.12 --repo ConvertAPI/convertapi-library-js --target main --title v1.1.12 --generate-notes
```
That runs `.github/workflows/publish.yml` in the `npm` environment (deployable from `v*` tags only), which:
@@ -40,15 +40,21 @@ GitHub Actions, organization or user `ConvertAPI`, repository `convertapi-librar
| Dist-tag | Gets | Installed with |
|---|---|---|
-| `latest` | `1.0.8`, the last **non-module** build (git tag `last_nonmodule`), kept on purpose | `npm i convertapi-js` |
-| `module` | stable releases from `main` (the ES module line, `1.1.x`) | `npm i convertapi-js@~1.1` (as the README says) |
+| `latest` | stable releases from `main` (the ES module line, `1.1.x`) | `npm i convertapi-js`, or `npm i convertapi-js@~1.1` as the README says |
| `next` | pre-releases | `npm i convertapi-js@next` |
-| `maintenance` | a stable version lower than the current `module` one | `npm i convertapi-js@maintenance` |
+| `maintenance` | a stable version lower than the current `latest` one | `npm i convertapi-js@maintenance` |
+| `module` | `1.1.11`, no longer moved: stable releases up to 1.1.11 were published here | `npm i convertapi-js@module` |
-A release never moves `latest`. Moving it to the module line changes what `npm i convertapi-js` and
-unversioned CDN URLs (for example https://cdn.jsdelivr.net/npm/convertapi-js) serve, which breaks pages
-that load the non-module build with a script tag, so it is a separate decision:
-`npm dist-tag add convertapi-js@1.1.10 latest`.
+Until 2026-11-12, `latest` was kept on `1.0.8`, the last **non-module** build (git tag `last_nonmodule`), so
+that pages loading it with an unversioned script tag kept working. On that day it was moved to `1.1.11` with
+`npm dist-tag add convertapi-js@1.1.11 latest`. Now that `latest` is the ES module line,
+unversioned CDN URLs (for example https://unpkg.com/convertapi-js/lib/convertapi.js or
+https://cdn.jsdelivr.net/npm/convertapi-js) resolve to a version that has no `lib/` and is not a classic
+script, so a page that still uses the non-module build must pin it:
+
+```html
+
+```
**Pre-releases** work the same way and may come from any branch: