trilium/renovate.json
Elian Doran 7a92b326d0
fix(docker): pin the legacy image to the last pnpm that runs on 32-bit ARM
Moving off bullseye got the apt layers through on both legacy platforms,
and the builder stage then failed one layer later:

  ! Corepack is about to download .../pnpm-12.3.4.tgz
  Error: Cannot find module '/root/.cache/node/corepack/v1/pnpm/12.3.4/bin/pnpm.cjs'

This is not a stale corepack. pnpm 12 dropped its JavaScript
implementation and now ships as native executables, pulled in through
optional dependencies:

  linux-x64   linux-arm64   linux-x64-musl   linux-arm64-musl
  win32-x64   win32-arm64   darwin-x64       darwin-arm64

There is no 32-bit ARM target, so no corepack can help linux/arm/v7:
there is nothing for it to run. The 11.26.0 tarball is 5.1 MB and
carries a 13.9 MB dist/pnpm.mjs; the 12.3.4 tarball is 980 kB, its
largest file is its own changelog, and what remains under dist/ is
node-gyp and tar support beside an install.js that fetches the binary.
engines.node is >=18.*, so Node 22 was never the constraint here.

linux/arm/v8 normalizes to arm64, where @pnpm/exe.linux-arm64 exists and
matches bookworm's glibc, so that leg could run pnpm 12 given a newer
corepack. One packageManager field serves both legs, and 11.26.0 wants
Node >=22.13 against the image's 22.21.0, so pinning covers both. The
pin stays contained because Dockerfile.legacy copies only
./docker/package.json: the root monorepo keeps pnpm 12, whose CI only
ever runs on x64 and arm64.

renovate.json already ignores apps/server/Dockerfile.legacy but not this
manifest, which is how pnpm 12 arrived on Sept 6. Adding the path to
ignorePaths would also freeze better-sqlite3 there, so the guard is a
rule scoped to pnpm alone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 19:26:43 +02:00

88 lines
2.8 KiB
JSON

{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"schedule": [
"before 3am"
],
"labels": [
"dependencies",
"renovate"
],
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"branchConcurrentLimit": 0,
"minimumReleaseAge": "3 days",
"ignorePaths": [
"**/node_modules/**",
"apps/edit-docs/demo/**",
"apps/server/src/assets/doc_notes/**",
"docs/**",
"apps/server/Dockerfile.legacy",
"apps/mobile/android/**"
],
"html": {
"enabled": false
},
"bun": {
"enabled": false
},
"nix": {
"enabled": true
},
"packageRules": [
{
"description": "Never auto-update the Android Gradle Plugin; it must track the installed Android Studio, not the latest release",
"matchPackageNames": ["com.android.tools.build:gradle"],
"enabled": false
},
{
"description": "pdfjs-dist is owned by the update-pdfjs-viewer workflow, which bumps it together with the viewer vendored under packages/pdfjs-viewer/viewer. pdf.js refuses to start when the two versions disagree, so a bare version bump is never a usable change",
"matchPackageNames": ["pdfjs-dist"],
"enabled": false
},
{
"description": "pnpm 12 ships native binaries instead of a JS implementation and publishes none for 32-bit ARM, which Dockerfile.legacy builds for. The last release that runs anywhere Node does is 11.x",
"matchFileNames": ["apps/server/docker/package.json"],
"matchPackageNames": ["pnpm"],
"allowedVersions": "<12"
},
{
"matchPackageNames": ["@fsegurai/codemirror-theme-**", "@catppuccin/codemirror"],
"groupName": "codemirror themes"
},
{
"matchPackageNames": "**-config-ckeditor5",
"groupName": "ckeditor5 config packages"
},
{
"matchPackageNames": [
"@ckeditor/**",
"ckeditor5"
],
"groupName": "ckeditor monorepo"
},
{
"description": "Group FullCalendar packages because mixed core versions make plugins incompatible.",
"matchPackageNames": [
"fullcalendar",
"@fullcalendar/**",
"@full-ui/**"
],
"groupName": "fullcalendar monorepo"
},
{
"matchPackageNames": "@univerjs/**",
"groupName": "univer monorepo"
},
{
"matchPackageNames": [
"ai",
"@ai-sdk/**"
],
"groupName": "ai sdk"
}
]
}