A CI-only change is ci:, not fix(ci): #112

Merged
logan merged 1 commits from docs/ci-commit-type into main 2026-08-19 16:23:21 +00:00
Owner

Two commits touching nothing but .gitea/workflows/unclaim.yml were written fix(ci): and cut two real releases:

v0.2.1  23:05:38   fix(ci): run the unclaim step under bash
v0.2.2  23:30:31   fix(ci): give the unclaim step a CA bundle

.releaserc.yml's commit-analyzer reads the type and ignores the scope. fix is a patch whatever sits in the brackets, so fix(ci): releases and ci: does not.

CLAUDE.md already warned that "a mistyped feat ships a minor version". That was not enough, because this was not a mistyped type — fix was chosen deliberately, in the belief that the (ci) scope qualified it.

Why a paragraph and not a clause

The version bump is the small half. A merge to main starts two workflows; if release.yml finds a releasable commit it pushes a v* tag, and that tag push starts four more:

16982  ci.yml                check, e2e
16983  release.yml           release        ← cut the tag
16984  android-apk.yml       apk            ┐
16985  arch-package.yml      arch-package   │ all four keyed on v*
16986  desktop-assets.yml    linux          │
16987  homebrew-formula.yml  sync-formula   ┘

On a runner with capacity 1, where the APK build alone is tens of minutes and publishes a signed artifact to a public registry. So a mistyped type is six workflow runs, not an odd-looking changelog. make release-dry answers this before the merge and is cheaper than any one of them.

The releases are staying

v0.2.1 and v0.2.2 are already published to Arch, Homebrew and the APK registry. A version that vanishes is worse for whoever pulled it than a version that turns out to contain only CI changes, so neither is deleted or retracted. They are noise in the changelog and nothing worse.

This PR

docs:, which .releaserc.yml maps to release: false — so it ships nothing, which is the point. make release-dry cannot confirm that from a branch (it only evaluates main), so the config mapping is the evidence rather than a dry run.

Closes #111

Two commits touching nothing but `.gitea/workflows/unclaim.yml` were written `fix(ci):` and cut two real releases: ``` v0.2.1 23:05:38 fix(ci): run the unclaim step under bash v0.2.2 23:30:31 fix(ci): give the unclaim step a CA bundle ``` `.releaserc.yml`'s commit-analyzer reads the **type** and ignores the **scope**. `fix` is a patch whatever sits in the brackets, so `fix(ci):` releases and `ci:` does not. CLAUDE.md already warned that "a mistyped `feat` ships a minor version". That was not enough, because this was not a *mistyped* type — `fix` was chosen deliberately, in the belief that the `(ci)` scope qualified it. ## Why a paragraph and not a clause The version bump is the small half. A merge to `main` starts two workflows; if `release.yml` finds a releasable commit it pushes a `v*` tag, and **that tag push starts four more**: ``` 16982 ci.yml check, e2e 16983 release.yml release ← cut the tag 16984 android-apk.yml apk ┐ 16985 arch-package.yml arch-package │ all four keyed on v* 16986 desktop-assets.yml linux │ 16987 homebrew-formula.yml sync-formula ┘ ``` On a runner with capacity 1, where the APK build alone is tens of minutes and publishes a signed artifact to a public registry. So a mistyped type is six workflow runs, not an odd-looking changelog. `make release-dry` answers this before the merge and is cheaper than any one of them. ## The releases are staying `v0.2.1` and `v0.2.2` are already published to Arch, Homebrew and the APK registry. A version that vanishes is worse for whoever pulled it than a version that turns out to contain only CI changes, so neither is deleted or retracted. They are noise in the changelog and nothing worse. ## This PR `docs:`, which `.releaserc.yml` maps to `release: false` — so it ships nothing, which is the point. `make release-dry` cannot confirm that from a branch (it only evaluates `main`), so the config mapping is the evidence rather than a dry run. Closes #111
yonlu self-assigned this 2026-08-18 23:41:29 +00:00
logan approved these changes 2026-08-19 14:52:46 +00:00
logan left a comment
Collaborator

Reviewed and verified rather than read. Every factual claim in this holds:

  • .releaserc.yml's releaseRules match on type only — fixpatch,
    cifalse, docsfalse — so "the scope is decoration" is exactly
    right, and this PR's own docs: type ships nothing, which is the correct
    shape for the change.
  • v0.2.1 and v0.2.2 both trace to commits touching only
    .gitea/workflows/unclaim.yml (fix(ci): run the unclaim step under bash,
    fix(ci): give the unclaim step a CA bundle), and the earlier
    ci: drop the claim label when an issue closes on the same file correctly
    cut nothing. The contrast is the argument.
  • The paragraph lands in the right section (beside the existing "a mistyped
    feat ships a minor version" note), which is where someone about to pick a
    type would actually be reading.

The framing is the valuable part: the reason this deserves a paragraph is the
six workflow runs on a capacity-1 runner, not the version number. Agreed on
leaving the two releases in place — a version that vanishes is worse than one
that turns out to be empty.

Closes #111 is in the commit body, so it will actually take. Merging.

Reviewed and verified rather than read. Every factual claim in this holds: - `.releaserc.yml`'s `releaseRules` match on **type** only — `fix` → `patch`, `ci` → `false`, `docs` → `false` — so "the scope is decoration" is exactly right, and this PR's own `docs:` type ships nothing, which is the correct shape for the change. - `v0.2.1` and `v0.2.2` both trace to commits touching **only** `.gitea/workflows/unclaim.yml` (`fix(ci): run the unclaim step under bash`, `fix(ci): give the unclaim step a CA bundle`), and the earlier `ci: drop the claim label when an issue closes` on the same file correctly cut nothing. The contrast is the argument. - The paragraph lands in the right section (beside the existing "a mistyped `feat` ships a minor version" note), which is where someone about to pick a type would actually be reading. The framing is the valuable part: the reason this deserves a paragraph is the six workflow runs on a capacity-1 runner, not the version number. Agreed on leaving the two releases in place — a version that vanishes is worse than one that turns out to be empty. `Closes #111` is in the commit body, so it will actually take. Merging.
logan force-pushed docs/ci-commit-type from d414fdb2b6 to 2ada69a40f 2026-08-19 14:53:02 +00:00 Compare
logan force-pushed docs/ci-commit-type from 2ada69a40f to feab0c18ec 2026-08-19 14:54:20 +00:00 Compare
logan force-pushed docs/ci-commit-type from feab0c18ec to 35c0d83819 2026-08-19 15:23:16 +00:00 Compare
Collaborator

Reviewed and approved above — the e2e failure on 35c0d83 is not this PR.

album-dropdown.spec.ts:91 failed on chromium with Expected: 80, Received: 10, while WebKit passed in the same run, against a change that touches one
paragraph of CLAUDE.md. I chased it rather than re-running: the spec guards on
scrollHeight > clientHeight + 40 and then asserts it can scroll to 80, so
any range in 41–79 satisfies the precondition and cannot satisfy the assertion,
and the grid passes through that while it settles.

Filed as #133 with the measurements and fixed in #134 (0 failures in 10 runs,
against 2 in 9 on current main). My #132 is what made it reachable — the
queue panel's mode is measured rather than media-queried, so there is one more
layout pass at that width — so the fix is mine to land.

Once #134 is in I will rebase this and merge it. Sorry for the extra cycles on
your branch; the rebase-per-merge is the branch protection requiring an
up-to-date head, not anything about this change.

Reviewed and approved above — the e2e failure on `35c0d83` is **not** this PR. `album-dropdown.spec.ts:91` failed on chromium with `Expected: 80, Received: 10`, while WebKit passed in the same run, against a change that touches one paragraph of `CLAUDE.md`. I chased it rather than re-running: the spec guards on `scrollHeight > clientHeight + 40` and then asserts it can scroll to **80**, so any range in 41–79 satisfies the precondition and cannot satisfy the assertion, and the grid passes through that while it settles. Filed as #133 with the measurements and fixed in #134 (0 failures in 10 runs, against 2 in 9 on current `main`). My #132 is what made it reachable — the queue panel's mode is measured rather than media-queried, so there is one more layout pass at that width — so the fix is mine to land. Once #134 is in I will rebase this and merge it. Sorry for the extra cycles on your branch; the rebase-per-merge is the branch protection requiring an up-to-date head, not anything about this change.
logan added 1 commit 2026-08-19 16:03:39 +00:00
docs: a CI-only change is ci:, not fix(ci):
CI / check (push) Skipped
CI / e2e (push) Skipped
CI / e2e (pull_request) Successful in 6m41s
CI / check (pull_request) Successful in 2m28s
446380e3a9
The commit-analyzer reads the type and ignores the scope, so `fix` is a
patch whatever sits in the brackets. Two commits touching nothing but
.gitea/workflows/unclaim.yml were written `fix(ci):` and cut v0.2.1 and
v0.2.2 -- real releases, published to Arch, Homebrew and the APK
registry, containing no user-facing change.

CLAUDE.md already warned that a mistyped feat ships a minor version.
That was not enough, because this was not a mistyped type: `fix` was
chosen deliberately, in the belief that the (ci) scope qualified it.

The version bump is the small half, which is why this gets a paragraph
rather than a clause. A merge to main starts two workflows; if
release.yml then pushes a tag, that tag push starts four more --
arch-package, homebrew-formula, android-apk and desktop-assets -- on a
runner with capacity 1, where the APK build alone is tens of minutes
and publishes a signed artifact to a public registry. So a mistyped
type is six workflow runs, not an odd-looking changelog.

`make release-dry` answers this before the merge instead of after, and
is cheaper than any one of those runs.

The two releases are staying: they are already published, and a version
that vanishes is worse for whoever pulled it than one that turns out to
be empty.

Closes #111
logan force-pushed docs/ci-commit-type from 35c0d83819 to 446380e3a9 2026-08-19 16:03:39 +00:00 Compare
logan merged commit bb7dde1963 into main 2026-08-19 16:23:21 +00:00
logan deleted branch docs/ci-commit-type 2026-08-19 16:23:21 +00:00
Sign in to join this conversation.