Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
534d0e0
Convert to ExApp architecture and add CI/CD workflows
rubenvdlinde Feb 6, 2026
4bd734b
Bump unstable version to 0.1.1-unstable.1 [skip ci]
actions-user Feb 6, 2026
25fbda3
Update branch protection: main from beta, beta from development
rubenvdlinde Feb 6, 2026
d6dc86c
Bump unstable version to 0.1.1-unstable.2 [skip ci]
actions-user Feb 6, 2026
aeb27ee
fix: Add PHPCS/PHPMD/Psalm quality tooling (#3)
rubenvdlinde Mar 5, 2026
07fdbb0
chore: Switch license to EUPL-1.2
rubenvdlinde Feb 26, 2026
2bb6e51
fix: Revert licence to agpl for Nextcloud App Store compatibility
rubenvdlinde Mar 1, 2026
b7bbb93
feat: Add Keycloak SSO iframe integration with server-side token pre-…
rubenvdlinde Mar 5, 2026
03713e8
Merge pull request #5 from ConductionNL/feat/keycloak-sso-iframe
rubenvdlinde Mar 5, 2026
9190d28
chore(deps): bump composer config.platform.php to 8.3 (#8)
rubenvdlinde May 23, 2026
a785a3c
chore(deps): bump PHP requirement to ^8.3 (#7)
rubenvdlinde May 23, 2026
c4d06f7
fix(ci): skip lint-check when repo has no package.json (#6)
rubenvdlinde May 23, 2026
8870d56
chore(info.xml): canonicalize PHP min, NC version range, licence spel…
rubenvdlinde May 23, 2026
3b37629
chore(composer): bump lock platform-overrides to PHP 8.3 to match con…
rubenvdlinde May 25, 2026
1b493fe
branding: add cobalt app-store.svg logo and use it in the README
rubenvdlinde May 29, 2026
fd1ffd8
fix(icons): use filled path for NC theming favicon compatibility
Jun 14, 2026
81ff25c
opentalk: rename remaining mydash references to launchpad (#1)
Jun 26, 2026
f9075f4
chore(licence): declare EUPL-1.2 in info.xml (fleet standard; matches…
Jul 7, 2026
6a531f7
Merge pull request 'OpenTalk sidecar: EUPL-1.2 App Store licence norm…
Jul 9, 2026
650f9ad
fix(icon): carry the white fill on the <svg> element, not inner nodes
Jul 10, 2026
0ac4380
Merge pull request 'fix(img): opentalk icon fill moves to the svg roo…
Jul 10, 2026
a1e9206
chore(quality): make composer check:strict an honest gate (#15)
rubenvdlinde Aug 2, 2026
25ba940
fix(ci): make composer check:strict able to fail on tests (#16)
rubenvdlinde Aug 2, 2026
caa1506
ci: onboard onto fleet-standard CI workflows
remko48 Aug 3, 2026
935e071
fix(quality): phpmd DevelopmentCodeFragment could never fire on names…
rubenvdlinde Aug 3, 2026
4e05053
ci(quality): add least-privilege permissions block
remko48 Aug 3, 2026
f571ffc
ci(quality): add explicit permission ceiling and concurrency group
remko48 Aug 3, 2026
4d498eb
ci: bound every job with timeout-minutes (#19)
rubenvdlinde Aug 3, 2026
081dbc3
Merge pull request #17 from ConductionNL/feature/workflow-update
remko48 Aug 3, 2026
7f16e8b
fix(quality): remove PHP test scripts that manufacture a green in a r…
rubenvdlinde Aug 4, 2026
e6b7a99
chore(license): put the SPDX identifier first in the NamedParametersS…
Aug 5, 2026
44727aa
Merge pull request #22 from ConductionNL/chore/eupl-license-normalisa…
rubenvdlinde Aug 5, 2026
be6d585
chore: raise the Nextcloud floor to 32 (#24)
rubenvdlinde Aug 7, 2026
172267a
fix: restore the pre-32 Nextcloud floor — CI still runs stable31 (#25)
rubenvdlinde Aug 7, 2026
cdac41c
chore: align nextcloud/ocp and info.xml with Nextcloud 34 (#27)
rubenvdlinde Aug 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/beta-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ on:
jobs:
release-management:
runs-on: ubuntu-latest
# Observed fleet-wide: n=26 runs, max 0.7 min; bounded loosely at 45 min because a spurious release failure is expensive
timeout-minutes: 45
steps:

- name: Checkout Code
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/branch-protection.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Branch Protection

on:
pull_request:
branches: [main, beta]

permissions: {}

jobs:
branch-protection:
uses: ConductionNL/.github/.github/workflows/branch-protection.yml@main
62 changes: 62 additions & 0 deletions .github/workflows/build-exapp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Build and Push ExApp Docker Image

on:
push:
branches:
- main
- beta
tags:
- 'v*'
pull_request:
branches:
- main

env:
REGISTRY: ghcr.io
IMAGE_NAME: conductionnl/opentalk-exapp

jobs:
build:
runs-on: ubuntu-latest
# No successful runs observed yet (multi-arch docker build); bounded loosely at 30 min
timeout-minutes: 30
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Container Registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable={{is_default_branch}}

- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
46 changes: 46 additions & 0 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Code Quality

on:
push:
branches: [main, beta, development, feature/**, bugfix/**, hotfix/**]
pull_request:
types: [opened, reopened]
branches: [main, beta, development]
workflow_dispatch:

concurrency:
group: quality-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

# Permission CEILING for the called quality pipeline. GitHub statically
# validates the called workflow's declared job permissions against this
# grant — even for jobs that are disabled — so it must cover the maximum
# any nested job declares: journeydoc-capture (contents+actions write),
# update-baseline / features-extract (contents write), and the Quality
# Report PR comment (issues / pull-requests write).
permissions:
contents: write
actions: write
issues: write
pull-requests: write

jobs:
quality:
if: github.event_name != 'push' || github.event.created != true
uses: ConductionNL/.github/.github/workflows/quality.yml@main
with:
app-name: opentalk
# composer.json pins config.platform.php to 8.3
php-version: "8.3"
# PHP-only ExApp: no package.json, so all npm-side checks are off
# (enable-npm gates the npm legs of security/license; enable-frontend
# gates Vue Quality and custom frontend checks).
enable-npm: false
enable-frontend: false
# The SBOM job invokes `composer CycloneDX:make-sbom`, which this repo
# does not ship — enable once cyclonedx/cyclonedx-php-composer is added
# to require-dev.
enable-sbom: false
# No openspec/specs and no docs/features.json yet — the features check
# would fail on every PR comparing "" against "[]".
enable-features-extract: false
34 changes: 34 additions & 0 deletions .github/workflows/pull-request-from-branch-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Branch Protection

on:
pull_request:
branches:
- main
- beta

jobs:
check-branch:
runs-on: ubuntu-latest
# Observed fleet-wide: n=123 runs, max 0.1 min
timeout-minutes: 10
steps:
- name: Check branch
run: |
TARGET="${{ github.base_ref }}"
SOURCE="${{ github.head_ref }}"

if [[ "$TARGET" == "main" ]]; then
if [[ "$SOURCE" != "beta" ]] && ! [[ "$SOURCE" =~ ^hotfix ]]; then
echo "Error: Pull requests to main must come from 'beta' or a branch starting with 'hotfix'"
echo "Source branch: $SOURCE"
exit 1
fi
elif [[ "$TARGET" == "beta" ]]; then
if [[ "$SOURCE" != "development" ]] && ! [[ "$SOURCE" =~ ^hotfix ]]; then
echo "Error: Pull requests to beta must come from 'development' or a branch starting with 'hotfix'"
echo "Source branch: $SOURCE"
exit 1
fi
fi

echo "Branch check passed: $SOURCE -> $TARGET"
35 changes: 35 additions & 0 deletions .github/workflows/pull-request-lint-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Lint Check

on:
pull_request:
branches:
- development
- main

jobs:
lint-check:
runs-on: ubuntu-latest
# Observed fleet-wide: n=176 runs, median 0.6 min, max 1.4 min
timeout-minutes: 15

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Check for package.json
id: has_pkg
run: |
if [ -f package.json ]; then
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
echo "::notice::No package.json found at repo root; lint-check is a no-op for this repo."
fi

- name: Install dependencies
if: steps.has_pkg.outputs.exists == 'true'
run: npm i

- name: Linting
if: steps.has_pkg.outputs.exists == 'true'
run: npm run lint
46 changes: 46 additions & 0 deletions .github/workflows/push-development-to-beta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Create PR to Beta

permissions:
contents: write
pull-requests: write

on:
push:
branches:
- development

jobs:
create-pr:
runs-on: ubuntu-latest
# Observed fleet-wide: n=152 runs, max 5.6 min
timeout-minutes: 20
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Create or update PR to beta
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Check if beta branch exists
if ! git ls-remote --heads origin beta | grep -q beta; then
echo "Beta branch does not exist yet. Creating from development..."
git push origin origin/development:refs/heads/beta
fi

# Check if a PR already exists
EXISTING_PR=$(gh pr list --base beta --head development --state open --json number --jq '.[0].number' || echo "")

if [ -n "$EXISTING_PR" ] && [ "$EXISTING_PR" != "null" ]; then
echo "PR #$EXISTING_PR already exists, it will auto-update with new commits"
else
gh pr create \
--base beta \
--head development \
--title "Release: merge development into beta" \
--body "Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow."
fi
2 changes: 2 additions & 0 deletions .github/workflows/release-workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ on:
jobs:
release-management:
runs-on: ubuntu-latest
# Observed fleet-wide: n=26 runs, max 0.7 min; bounded loosely at 45 min because a spurious release failure is expensive
timeout-minutes: 45
steps:

- name: Checkout Code
Expand Down
Loading
Loading