Commit Graph
14682 Commits
Author SHA1 Message Date
evangelostsak 614d0e331c feat(glossary): read the mesh axis at a glance
A padlock and an open padlock differ by a few pixels in a job title, which
is where the axis is read most often. A tunnel and a road do not.

Every label derives from here, the plan table's own column header included,
so the two entries carry the change.
2026-10-05 12:00:06 +02:00
kevinveenbirkenbach 19cd3ceb41 Merge remote-tracking branch 'origin/main' into fix/sys-ctl-hlth-msmtp/empty-reply-is-transient/790 2026-10-05 11:45:00 +02:00
kevinveenbirkenbach 1d03c001ea Merge remote-tracking branch 'origin/main' into fix/sys-ctl-hlth-msmtp/empty-reply-is-transient/790 2026-10-05 11:45:00 +02:00
kevinveenbirkenbachandClaude Opus 5.5 b37cf2e9fe fix(mail): retry a connection the mail server drops before its greeting
Stalwart closes a connection that exceeds its per-IP connection budget
without a greeting. msmtp reports that as "the server sent an empty reply"
with exit 76, and the mail health check treated exit 76 as permanent. One
such drop, in a second in which Alertmanager flushed its notifications,
failed a deploy although the same path accepted a mail one second later.

The health check now retries exit 76 when msmtp names the empty reply,
within the ten attempts it already gives to exit 69, 75 and 124. Every
other protocol error still ends the check at once.

The alarm mail was sent once, so the alarm about a failed unit was lost to
the same drop. It now makes three attempts ten seconds apart for the
transient cases of the health check and still reports the last error.

The limit on the server is left alone. Exempting the node's own senders by
source address would also exempt Tor clients and, in swarm, every external
client. That question is tracked in #793.

Closes #790

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 11:44:58 +02:00
kevinveenbirkenbach 22129c2d5a Merge remote-tracking branch 'origin/main' into fix/ci-fork-image-wait/784 2026-10-05 11:18:43 +02:00
kevinveenbirkenbach b0588b8309 Merge pull request #796 from infinito-nexus/update/docker-image-versions-web-app-socialhome-20261005-f6d0a70
update(images): update Docker image versions (web-app-socialhome)
2026-10-05 11:00:11 +02:00
kevinveenbirkenbach 5e7fbd0d7d Merge pull request #775 from infinito-nexus/update/docker-image-versions-web-svc-collabora-20261002-09740fb
update(images): update Docker image versions (web-svc-collabora)
2026-10-05 10:58:01 +02:00
infinito-nexus-updater[bot] 3c23a5dbf7 update(images): update Docker image versions (web-app-stalwart) 2026-10-05 08:56:11 +00:00
kevinveenbirkenbach 9dc86c19fe Merge pull request #783 from kevinveenbirkenbach/fix/web-app-mobilizon/postgres-18-migrations/779
fix(web-app-mobilizon): patch four migrations for PostgreSQL 18
2026-10-05 10:55:42 +02:00
kevinveenbirkenbach e37969fe5d Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-05 10:44:00 +02:00
kevinveenbirkenbach 4971fd2610 Merge remote-tracking branch 'origin/main' into fix/ci-fork-image-wait/784 2026-10-05 10:43:30 +02:00
kevinveenbirkenbach df4ba6a2f6 Merge remote-tracking branch 'origin/main' into update/onlyoffice-nextcloud-connector 2026-10-05 10:43:21 +02:00
kevinveenbirkenbachandClaude Opus 5 9be786a23d fix(lint): repair the npm manifests a dependabot merge left unparseable
Merging the stylelint 17.16.0 and the globals 17.13.0 bump dropped the comma after stylelint and left a trailing one after globals, in package.json and package-lock.json alike. Neither file was JSON any more, so npm could not read the lock and npm ci refused with EUSAGE: 'can only install with an existing package-lock.json'. make lint died in install-lint before a single linter ran, which is the whole lint job on every branch that carries main.

The two entries move into the alphabetical order npm writes them in and the commas follow. No version changes: the lock already resolved stylelint 17.16.0 and globals 17.13.0, only the devDependencies block was malformed. npm ci --dry-run now resolves the tree instead of refusing it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-05 03:38:19 +02:00
kevinveenbirkenbach fcdda79369 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-05 03:14:05 +02:00
kevinveenbirkenbach 8e9fa797fe Merge remote-tracking branch 'origin/main' into fix/ci-fork-image-wait/784 2026-10-05 03:13:43 +02:00
kevinveenbirkenbach a306b225c3 Merge remote-tracking branch 'origin/main' into update/onlyoffice-nextcloud-connector 2026-10-05 03:13:35 +02:00
kevinveenbirkenbach fe6c1a9b37 Merge pull request #797 from infinito-nexus/dependabot/npm_and_yarn/stylelint-17.16.0
chore(deps-dev): bump stylelint from 17.15.0 to 17.16.0
2026-10-05 03:11:52 +02:00
kevinveenbirkenbach 3419acffae Merge branch 'main' into dependabot/npm_and_yarn/stylelint-17.16.0 2026-10-05 03:11:23 +02:00
kevinveenbirkenbach b5c157b232 Merge pull request #798 from infinito-nexus/dependabot/npm_and_yarn/globals-17.13.0
chore(deps-dev): bump globals from 17.12.0 to 17.13.0
2026-10-05 03:10:20 +02:00
kevinveenbirkenbach 87d333fe82 Merge pull request #799 from infinito-nexus/dependabot/pip/ruff-0.16.10
chore(deps-dev): bump ruff from 0.16.9 to 0.16.10
2026-10-05 03:10:05 +02:00
kevinveenbirkenbach f3fd3a4e46 Merge pull request #800 from infinito-nexus/fix/update-bot-dedupe-fork-prs/780
fix(ci): limit the fingerprint shortcut to branches of this repository
2026-10-05 03:09:45 +02:00
kevinveenbirkenbach d3eac737ae Merge remote-tracking branch 'origin/main' into fix/update-bot-dedupe-fork-prs/780 2026-10-05 03:06:58 +02:00
kevinveenbirkenbachandClaude Opus 5.5 69fceafb5d fix(ci): limit the fingerprint shortcut to branches of this repository
The duplicate check accepted any open PR whose head branch started with
the dedupe prefix and ended in the fingerprint of the fresh proposal. The
listing also returns PRs from forks, and the fingerprint can be derived
from public data, so a fork PR with such a branch name would have made the
bot skip its own update PR without carrying the change.

The shortcut now only applies to PRs whose head branch lives in this
repository, which only accounts with write access can create. A fork PR
is still compared by the content of its head, as before.

Raised by the CodeRabbit review of PR #781.

Refs #780

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 03:06:57 +02:00
kevinveenbirkenbach 073dfa0b9f Merge remote-tracking branch 'origin/main' into update/onlyoffice-nextcloud-connector 2026-10-05 02:54:08 +02:00
kevinveenbirkenbach d4607a40d2 Merge remote-tracking branch 'origin/main' into update/onlyoffice-nextcloud-connector 2026-10-05 02:50:49 +02:00
kevinveenbirkenbachandClaude Opus 5.5 739c78bad1 feat(update): bump addon pins through their declared source
The version-source updater only read meta/services.yml. An addon pinned in
meta/addons/<id>.yml stayed where it was: the ONLYOFFICE connector for
Nextcloud sat on v10.1.2, which does not install on Nextcloud 35, until
someone bumped it by hand.

The updater now reads addon files too. An addon declares its source in the
`update:` block it already has, beside monitored, catalog and upstream_id.
A monitored addon of the github-releases catalog needs nothing more: its
upstream_id names the repository whose tags are its versions. The
update-version-sources job opens the PRs, one per role.

Every pinned addon is wired:

- nextcloud onlyoffice carries its own version pin now. Its archive URL
  stays a literal that carries the pin, because
  test_pinned_addon_archives_available reads it as written
- wordpress mcp-adapter, moodle auth_oidc and jellyfin sso-authentication
  follow the tags of their repository, moodle within its v4.5 series
- the three xwiki extensions read their Maven metadata
- pretix-oidc reads the PyPI simple index. The JSON API answers 404 behind
  the package cache the test stack routes pypi.org through
- joomla's plugin is built here and jellyfin's ldap-authentication is bound
  to the md5 of its archive; both are opted out with that reason

A bump rewrites the pin and the config.archive line together, and an
archive that does not carry the pin fails test_version_keys, so the two
cannot drift apart again. test_version_pins_are_watched covers addon pins
as well: a new one without a source or a reasoned opt-out fails the lint.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 02:50:48 +02:00
kevinveenbirkenbach 91dcf4807d Merge pull request #791 from infinito-nexus/fix/web-app-penpot/frontend-healthcheck/787
fix(web-app-penpot): probe the frontend without curl
2026-10-05 02:50:48 +02:00
kevinveenbirkenbachandClaude Opus 5 81ab6e4ffc feat(update): let a version pin declare its own upstream source
The Docker updater watches image plus version, the repository updater
repository plus ref. A dozen pins fell outside both - an app_version, a
release, a tag in a registry neither speaks - so nothing ever told anyone
they had gone stale.

Such a pin now names its upstream next to itself in an `update:` block:
git_tags, registry_tags, npm, http_regex or a role-local script, with
`match` selecting a tag flavour and `strip` removing a prefix the pin does
not carry. utils/update/source.py resolves them beside the two existing
updaters, `python -m cli.contributing.update.source` bumps them, the
update-version-sources job opens one PR per role, and
tests/external/update/source warns while a bump is pending.

Two lints hold the rule: every semver pin is watched by one of the three
updaters or opted out with a reason, and a semver only ever sits behind
`version`, `<what>_version` or `ref` - which renames moodle's release to
app_version and simpleicons' local_version to local_tag, the latter being
the tag of a locally built image rather than an upstream version. A
declaration naming a key the entity does not carry, or a type the resolver
does not know, fails the lint instead of resolving nothing in silence.

Picked from feature/store-i18n (94d607fd0a) onto current main. Two things
differ from the original: svc-ai-lmstudio no longer carries an app_version
pin, so its declaration is dropped, and web-app-stalwart's webui_version,
added since, declares the git tags of the webui repository.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 02:50:48 +02:00
kevinveenbirkenbach 57c808a19b Merge remote-tracking branch 'origin/main' into fix/web-app-penpot/frontend-healthcheck/787 2026-10-05 02:50:48 +02:00
kevinveenbirkenbachandClaude Opus 5.5 05320b8ca3 fix(web-app-penpot): probe the frontend without curl
penpotapp/frontend 2.18.1 no longer ships curl. The role probed the
frontend with the curl healthcheck flavor, so docker could not start the
probe at all: "exec: "curl": executable file not found in $PATH". nginx
was up, but the container turned unhealthy after its start period, and in
swarm the replicas were replaced in a loop until the convergence wait gave
up.

The frontend is started through bash by this role, and the image ships
bash, head and grep but neither curl, wget nor nc. The http_status flavor
speaks HTTP over a bash socket and insists on a 2xx or 3xx status line,
which keeps the meaning of curl -f.

Closes #787

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 02:50:47 +02:00
dependabot[bot] 8f4fea9e58 chore(deps-dev): bump ruff from 0.16.9 to 0.16.10
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.16.9 to 0.16.10.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.16.9...0.16.10)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.16.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-05 00:48:36 +00:00
dependabot[bot] 76171b1e10 chore(deps-dev): bump globals from 17.12.0 to 17.13.0
Bumps [globals](https://github.com/sindresorhus/globals) from 17.12.0 to 17.13.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.12.0...v17.13.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.13.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-05 00:24:14 +00:00
dependabot[bot] c7ebd5325d chore(deps-dev): bump stylelint from 17.15.0 to 17.16.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 17.15.0 to 17.16.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.15.0...17.16.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 17.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-05 00:24:07 +00:00
infinito-nexus-updater[bot] c222a61b04 update(images): update Docker image versions (web-app-socialhome) 2026-10-05 00:23:49 +00:00
kevinveenbirkenbach e2328412b0 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-05 01:53:35 +02:00
kevinveenbirkenbach 37443e6cfa Merge remote-tracking branch 'origin/main' into fix/ci-fork-image-wait/784 2026-10-05 01:53:09 +02:00
kevinveenbirkenbach b64fb0d10a Merge pull request #791 from infinito-nexus/fix/web-app-penpot/frontend-healthcheck/787
fix(web-app-penpot): probe the frontend without curl
2026-10-05 01:50:57 +02:00
kevinveenbirkenbach 6bc348138f Merge remote-tracking branch 'origin/main' into fix/web-app-penpot/frontend-healthcheck/787 2026-10-05 01:44:45 +02:00
kevinveenbirkenbachandClaude Opus 5.5 75d7962855 fix(web-app-penpot): probe the frontend without curl
penpotapp/frontend 2.18.1 no longer ships curl. The role probed the
frontend with the curl healthcheck flavor, so docker could not start the
probe at all: "exec: "curl": executable file not found in $PATH". nginx
was up, but the container turned unhealthy after its start period, and in
swarm the replicas were replaced in a loop until the convergence wait gave
up.

The frontend is started through bash by this role, and the image ships
bash, head and grep but neither curl, wget nor nc. The http_status flavor
speaks HTTP over a bash socket and insists on a 2xx or 3xx status line,
which keeps the meaning of curl -f.

Closes #787

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 01:44:44 +02:00
kevinveenbirkenbach 234d846b02 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076
# Conflicts:
#	docs/contributing/design/role/services/mcp/audit.md
2026-10-04 22:20:38 +02:00
kevinveenbirkenbach bf0b837daf Merge remote-tracking branch 'origin/main' into update/onlyoffice-nextcloud-connector 2026-10-04 22:18:45 +02:00
kevinveenbirkenbach 5a1dbda397 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-svc-collabora-20261002-09740fb 2026-10-04 22:18:33 +02:00
kevinveenbirkenbach f6228580be Merge remote-tracking branch 'origin/main' into fix/ci-fork-image-wait/784 2026-10-04 22:18:20 +02:00
kevinveenbirkenbach a5c816a666 Merge remote-tracking branch 'origin/main' into fix/web-app-mobilizon/postgres-18-migrations/779 2026-10-04 22:18:10 +02:00
kevinveenbirkenbach f99a41689c Merge pull request #781 from kevinveenbirkenbach/fix/update-bot-duplicate-pr/780
fix(ci): treat an edited update branch as a duplicate of its own bump
2026-10-04 22:15:56 +02:00
kevinveenbirkenbach 22f15e4d76 Merge pull request #782 from kevinveenbirkenbach/chore/remove-mcp-audit-report
docs(mcp): remove the generated audit report
2026-10-04 22:14:50 +02:00
kevinveenbirkenbachandClaude Opus 5.5 795d6bd17a update(web-app-nextcloud): bump the ONLYOFFICE connector to v10.2.1
Connector v10.1.2 declares Nextcloud 33 to 34 as its supported range, so
occ refuses to enable it on Nextcloud 35 and the ONLYOFFICE variant of the
Nextcloud 35 bump fails in the onlyoffice addon spec. v10.2.1 declares 33
to 35 and therefore serves the pinned Nextcloud 34 as well as the pending
bump.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-04 22:13:40 +02:00
kevinveenbirkenbach e61c51904e Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-04 22:11:20 +02:00
kevinveenbirkenbach f2bc06b909 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-svc-collabora-20261002-09740fb 2026-10-04 22:10:53 +02:00
kevinveenbirkenbach 706b1e5055 Merge remote-tracking branch 'origin/main' into fix/ci-fork-image-wait/784 2026-10-04 22:10:43 +02:00