Skip to content

refactor(admin): group the settings page into sections #145

refactor(admin): group the settings page into sections

refactor(admin): group the settings page into sections #145

Workflow file for this run

# SPDX-FileCopyrightText: 2026 Etherpad contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# Modeled on https://github.com/nextcloud/notes/blob/main/.github/workflows/lint-info-xml.yml
# Validates appinfo/info.xml against the published apps.nextcloud.com schema.
name: Lint info.xml
on: pull_request
permissions:
contents: read
concurrency:
group: lint-info-xml-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
xml-linters:
runs-on: ubuntu-latest
name: info.xml lint
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Download schema
run: wget --quiet https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd
- name: Lint info.xml
uses: ChristophWurst/xmllint-action@36f2a302f84f8c83fceea0b9c59e1eb4a616d3c1 # v1.2
with:
xml-file: ./appinfo/info.xml
xml-schema-file: ./info.xsd
version-consistency:
runs-on: ubuntu-latest
name: version consistency
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# appinfo/info.xml is the single source of truth for the app version.
# package.json / package-lock.json are aligned manually, so guard against
# drift (#119): fail the build if they disagree.
- name: Compare info.xml and package.json versions
run: |
INFO_VERSION="$(grep -oE '<version>[^<]+</version>' appinfo/info.xml | sed -E 's|</?version>||g' | head -n1)"
PKG_VERSION="$(jq -r '.version' package.json)"
LOCK_VERSION="$(jq -r '.version' package-lock.json)"
# npm stores the version twice in the lockfile: the top-level
# .version and the root package entry .packages[""].version. Check
# both so drift inside the lockfile is caught too.
LOCK_PKG_VERSION="$(jq -r '.packages[""].version' package-lock.json)"
echo "info.xml: $INFO_VERSION"
echo "package.json: $PKG_VERSION"
echo "package-lock.json (.version): $LOCK_VERSION"
echo "package-lock.json (packages[\"\"]): $LOCK_PKG_VERSION"
if [ -z "$INFO_VERSION" ]; then
echo "::error::could not read <version> from appinfo/info.xml" >&2
exit 1
fi
if [ "$PKG_VERSION" != "$INFO_VERSION" ] || [ "$LOCK_VERSION" != "$INFO_VERSION" ] || [ "$LOCK_PKG_VERSION" != "$INFO_VERSION" ]; then
echo "::error::Version mismatch. appinfo/info.xml is the source of truth ($INFO_VERSION); align package.json and both version fields in package-lock.json to it." >&2
exit 1
fi