Skip to content

chore: release 1.6.0 - #11

Merged
ClaraVnk merged 1 commit into
mainfrom
chore/release-1.6.0
Jul 20, 2026
Merged

chore: release 1.6.0#11
ClaraVnk merged 1 commit into
mainfrom
chore/release-1.6.0

Conversation

@ClaraVnk

Copy link
Copy Markdown
Contributor

Contexte

Production still serves 1.5.0. Everything merged in #3 and #7–#10 is on main and absent from ghostbit.dev:

GET /             -> no meta description, no canonical, no <main>, footer.js still served
GET /sitemap.xml  -> 422  (the /{paste_id} catch-all rejecting it, i.e. old code)
GET /healthz      -> {"version":"1.5.0"}

All five Docker builds succeeded after each merge, but a push to main only publishes the edge and sha-* tags. The semver and latest tags β€” what a pinned deployment follows β€” come only from a v*.*.* git tag, and the last one is v1.5.0.

Note the version string alone does not prove staleness: main was still 1.5.0, so an edge deployment would report it too. The HTML is what proves it.

Changements

Version 1.5.0 β†’ 1.6.0 in pyproject.toml and cli/pyproject.toml. Minor rather than patch: this carries a new endpoint (/sitemap.xml) and a new setting (GITHUB_REPO). No breaking changes.

What merging this triggers

  1. release.yml (push to main touching cli/**) β€” tests, builds the wheel, creates tag v1.6.0, publishes ghostbit-cli to PyPI, cuts a GitHub Release.
  2. Tag v1.6.0 then triggers docker.yml, publishing the 1.6.0, 1.6, 1 and latest images.
  3. The running container still has to be pulled and restarted β€” that is on the deployment host, not here.

Tests

120 pass, ruff check / ruff format --check clean. The CLI wheel was built locally first so the PyPI step cannot fail on a build error:

Successfully built ghostbit_cli-1.6.0.tar.gz and ghostbit_cli-1.6.0-py3-none-any.whl

v1.6.0 confirmed absent from the remote β€” release.yml aborts if the tag already exists.

Risques

PyPI publication is irreversible. A version cannot be re-uploaded once published.

And it publishes code that did not change: git log v1.5.0..HEAD -- cli/ is empty. ghostbit-cli 1.6.0 will be functionally identical to 1.5.0, released purely because release.yml reads its version from cli/pyproject.toml and a server-only release cannot be cut without it. That coupling is worth breaking, as a separate change.

Nothing has shipped since v1.5.0: production still serves that build, so the
SEO, privacy, performance and accessibility work merged in #3 and #7-#10 is
present on main and absent from ghostbit.dev.

Pushes to main only publish the `edge` and `sha-*` image tags. The semver and
`latest` tags β€” which is what a pinned deployment follows β€” are produced only
by a v*.*.* git tag, and the last one predates all of it.

Server changes in this release:
  - meta description, canonical link, /sitemap.xml, noindex on paste pages
  - star count fetched server-side; no third-party call from the browser and
    connect-src back to 'self'
  - landing page 928 KB -> 336 KB, LCP 6.0s -> 3.0s; paste page 515 KB -> 307 KB
  - form controls labelled, <main> landmark, light-mode contrast fixed
  - dead static assets removed, including a source map misnamed .sha256

Note the CLI has no changes since v1.5.0, yet this publishes ghostbit-cli 1.6.0
to PyPI with identical code: release.yml reads its version from
cli/pyproject.toml, so a server-only release cannot be cut without it. Worth
decoupling.
@ClaraVnk
ClaraVnk merged commit c5ebd57 into main Jul 20, 2026
3 checks passed
@ClaraVnk
ClaraVnk deleted the chore/release-1.6.0 branch July 20, 2026 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant