Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
544abdf
docs: Add development guide with branching strategy and quality checks
rubenvdlinde Feb 26, 2026
3ee5144
chore: Update app icons, gitignore, and metadata
rubenvdlinde Feb 27, 2026
f4ff465
feat: Add user settings dialog and consolidate settings backend
rubenvdlinde Feb 27, 2026
7ae5522
feat: Add task create dialog and improve list/detail views
rubenvdlinde Feb 27, 2026
c646fd2
refactor: Migrate admin settings to CnSettingsSection from shared lib…
rubenvdlinde Feb 27, 2026
96fcd47
docs: Add development guide, feature docs, and test results
rubenvdlinde Feb 27, 2026
d7c1f0a
build: Add @conduction/nextcloud-vue git dependency with conditional …
rubenvdlinde Feb 27, 2026
b0ddd1c
build: Switch @conduction/nextcloud-vue from git to npm beta package
rubenvdlinde Feb 27, 2026
966b4d7
fix: Revert licence to agpl for Nextcloud App Store compatibility
rubenvdlinde Mar 1, 2026
9dc1e68
chore: Add complete PHP quality tooling to match OpenRegister standard
rubenvdlinde Mar 3, 2026
764c8be
docs: Add rich README with screenshots, architecture, and full featur…
rubenvdlinde Mar 3, 2026
1eb683d
feat: Migrate to Vue Router and refactor views to use @conduction/nex…
rubenvdlinde Mar 3, 2026
e032eee
Merge pull request #1 from ConductionNL/feature/documentation
rubenvdlinde Mar 3, 2026
0513ed0
fix: Use app-store.svg logo (app.svg has white fill, invisible on Git…
rubenvdlinde Mar 3, 2026
9165fee
fix: Use app-store.svg logo (app.svg has white fill, invisible on Git…
rubenvdlinde Mar 3, 2026
01032f5
fix: Resolve all ESLint errors blocking CI quality check
rubenvdlinde Mar 3, 2026
0485f3e
fix: Apply ESLint auto-fix across all Vue components
rubenvdlinde Mar 3, 2026
39948c5
Merge pull request #2 from ConductionNL/feature/documentation
rubenvdlinde Mar 3, 2026
0c7e8dc
fix: Remove ESLint import workarounds, upgrade to @conduction/nextclo…
rubenvdlinde Mar 3, 2026
7d3d850
Merge pull request #3 from ConductionNL/feature/documentation
rubenvdlinde Mar 3, 2026
f926f27
refactor: Migrate CaseList and TaskList to enhanced useListView compo…
rubenvdlinde Mar 3, 2026
67d5796
docs: Update Docusaurus navbar logo to blue hexagon app-store.svg
rubenvdlinde Mar 3, 2026
d0767fc
feat: Add PHPUnit unit tests and CI integration
rubenvdlinde Mar 3, 2026
d03636c
feat: Add Psalm static analysis to PHP Quality CI
rubenvdlinde Mar 3, 2026
8929879
fix: Suppress OCA\OpenRegister runtime UndefinedClass and MissingTemp…
rubenvdlinde Mar 3, 2026
350d9aa
Merge remote-tracking branch 'origin/development' into main
rubenvdlinde Mar 5, 2026
c50f81a
release workflows added for nextcloud app store
MWest2020 Mar 10, 2026
20f1c30
Merge pull request #9 from ConductionNL/feature/workflows
rubenvdlinde Mar 19, 2026
c3069b0
chore: Add ADR enforcement rules to openspec config
rubenvdlinde Mar 21, 2026
d92a040
feat: docs product-pages conformance - tutorials rename + em-dash swe…
May 18, 2026
0d14f18
feat(docs): build verification passed - all tasks complete (#459)
May 19, 2026
45e7132
chore(hydra): record build stage [skip ci]
May 19, 2026
87513fb
Merge remote-tracking branch 'origin/development' into pr-branch
May 19, 2026
1adf99d
Merge https://github.com/ConductionNL/procest into pr-branch
May 19, 2026
dcd25fa
chore(hydra): record applier stage [skip ci]
May 19, 2026
6bef863
chore(hydra): close cycle outcome=needs-input [skip ci]
May 19, 2026
d97c033
chore(hydra): record applier stage [skip ci]
May 19, 2026
c8ca7ae
chore(hydra): close cycle outcome=needs-input [skip ci]
May 19, 2026
b0b3709
chore(hydra): record applier stage [skip ci]
May 20, 2026
de4f33c
chore(hydra): close cycle outcome=done [skip ci]
May 20, 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
290 changes: 290 additions & 0 deletions .github/workflows/beta-release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
name: Beta Release

on:
push:
branches:
- beta
# - code-refactor/ObjectService

jobs:
release-management:
runs-on: ubuntu-latest
steps:

# Stap 1: Code ophalen
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
ssh-key: ${{ secrets.DEPLOY_KEY }}

# Stap 2: Stel de appnaam in (gebruik de repo-naam)
- name: Set app env
run: |
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV

# Stap 3: Haal huidige versie uit info.xml, verhoog de patch en voeg beta-suffix toe
- name: Get current version and append beta suffix
id: increment_version
run: |
# Get version from main branch
git fetch origin main
main_version=$(git show origin/main:appinfo/info.xml | grep -oP '(?<=<version>)[^<]+' || echo "")

# Get current version from development branch
current_version=$(grep -oP '(?<=<version>)[^<]+' appinfo/info.xml || echo "")

# Split main version into parts
IFS='.' read -ra main_version_parts <<< "$main_version"

# Increment patch version by 1 from main
next_patch=$((main_version_parts[2] + 1))

# Extract beta counter from current version if it exists
beta_counter=1
if [[ $current_version =~ -beta\.([0-9]+)$ ]]; then
# If current patch version is still ahead of main, increment counter
current_patch=$(echo $current_version | grep -oP '^[0-9]+\.[0-9]+\.(\d+)' | cut -d. -f3)
if [ "$current_patch" -eq "$next_patch" ]; then
beta_counter=$((BASH_REMATCH[1] + 1))
fi
fi

beta_version="${main_version_parts[0]}.${main_version_parts[1]}.${next_patch}-beta.${beta_counter}"

echo "NEW_VERSION=$beta_version" >> $GITHUB_ENV
echo "new_version=$beta_version" >> $GITHUB_OUTPUT
echo "Main version: $main_version"
echo "Current version: $current_version"
echo "Using beta version: $beta_version"

# Stap 4: Update de versie in info.xml
- name: Update version in info.xml
run: |
sed -i "s|<version>.*</version>|<version>${{ env.NEW_VERSION }}</version>|" appinfo/info.xml

# Stap 5: Commit de nieuwe versie (indien er wijzigingen zijn)
- name: Commit version update
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git commit -am "Bump beta version to ${{ env.NEW_VERSION }} [skip ci]"
git push

# Stap 6: Bereid de signing certificaten voor
- name: Prepare Signing Certificate and Key
run: |
echo "${{ secrets.NEXTCLOUD_SIGNING_CERT }}" > signing-cert.crt
echo "${{ secrets.NEXTCLOUD_SIGNING_KEY }}" > signing-key.key

# Stap 7: Installeer npm dependencies
- name: Install npm dependencies
uses: actions/setup-node@v3
with:
node-version: '18.x'

# Stap 8: Stel PHP in en installeer benodigde extensies
- name: Set up PHP and install extensions
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: zip, gd

# Stap 9: Voer npm install, build en composer install uit
- run: npm ci
- run: npm run build
- run: composer install --no-dev --optimize-autoloader --classmap-authoritative

# Stap 9a: Verify vendor dependencies are installed
- name: Verify vendor dependencies
run: |
echo "Checking critical dependencies..."

# Check that vendor directory exists and has content
if [ ! -d "vendor" ] || [ -z "$(ls -A vendor 2>/dev/null)" ]; then
echo "ERROR: vendor directory is missing or empty"
exit 1
fi

# Check specific critical dependencies
missing_deps=0

if [ ! -d "vendor/openai-php/client/src" ]; then
echo "ERROR: openai-php/client source files not found"
missing_deps=1
fi

if [ ! -d "vendor/theodo-group/llphant/src" ]; then
echo "ERROR: theodo-group/llphant source files not found"
missing_deps=1
fi

if [ $missing_deps -eq 1 ]; then
echo "HINT: Check composer.json dependencies and composer install output"
exit 1
fi

echo "✓ All critical dependencies verified with source files"

# Stap 10: Kopieer de bestanden naar de package directory
- name: Copy the package files into the package
run: |
mkdir -p package/${{ github.event.repository.name }}
rsync -av --progress \
--exclude='/package' \
--exclude='/.git' \
--exclude='/.github' \
--exclude='/.cursor' \
--exclude='/.vscode' \
--exclude='/.nextcloud' \
--exclude='/docker' \
--exclude='/docker-compose.yml' \
--exclude='/docs' \
--exclude='/website' \
--exclude='/node_modules' \
--exclude='/src' \
--exclude='/phpcs-custom-sniffs' \
--exclude='/resources' \
--exclude='/tests' \
--exclude='/path' \
--exclude='/package.json' \
--exclude='/package-lock.json' \
--exclude='/composer.json' \
--exclude='/composer.lock' \
--exclude='/composer-setup.php' \
--exclude='/phpcs.xml' \
--exclude='/phpmd.xml' \
--exclude='/psalm.xml' \
--exclude='/phpunit.xml' \
--exclude='/.phpunit.cache' \
--exclude='.phpunit.result.cache' \
--exclude='/jest.config.js' \
--exclude='/webpack.config.js' \
--exclude='/tsconfig.json' \
--exclude='/.babelrc' \
--exclude='/.eslintrc.js' \
--exclude='/.prettierrc' \
--exclude='/stylelint.config.js' \
--exclude='/.spectral.yml' \
--exclude='/.gitignore' \
--exclude='/.gitattributes' \
--exclude='/.php-cs-fixer.dist.php' \
--exclude='/.nvmrc' \
--exclude='/changelog-ci-config.json' \
--exclude='/coverage.txt' \
--exclude='/signing-key.key' \
--exclude='/signing-cert.crt' \
--exclude='/openapi.json' \
--exclude='/*_ANALYSIS.md' \
--exclude='/*_FIX.md' \
--exclude='/*_SUMMARY.md' \
--exclude='/*_GUIDE.md' \
./ package/${{ github.event.repository.name }}/

# Stap 11: Verify package contents before creating tarball
- name: Verify package vendor directory
run: |
echo "Verifying package contains complete vendor dependencies..."

# Check vendor directory was copied
if [ ! -d "package/${{ github.event.repository.name }}/vendor" ]; then
echo "ERROR: vendor directory not found in package"
exit 1
fi

# Verify vendor packages have source files (not just LICENSE)
if [ ! -d "package/${{ github.event.repository.name }}/vendor/openai-php/client/src" ]; then
echo "ERROR: openai-php/client/src not found in package"
echo "HINT: Check rsync exclusion patterns - they may be too broad"
ls -la package/${{ github.event.repository.name }}/vendor/openai-php/client/ || true
exit 1
fi

# Quick sanity check: count vendor subdirectories
vendor_count=$(find package/${{ github.event.repository.name }}/vendor -maxdepth 1 -type d | wc -l)
if [ $vendor_count -lt 10 ]; then
echo "WARNING: Only $vendor_count vendor directories found (expected 20+)"
echo "Listing vendor contents:"
ls -la package/${{ github.event.repository.name }}/vendor/
fi

echo "✓ Package vendor directory verified with source files"

# Stap 12: Maak het TAR.GZ archief
- name: Create Tarball
run: |
cd package && tar -czf ../nextcloud-release.tar.gz ${{ github.event.repository.name }}

# Stap 13: Sign het TAR.GZ bestand met OpenSSL
- name: Sign the TAR.GZ file with OpenSSL
run: |
openssl dgst -sha512 -sign signing-key.key nextcloud-release.tar.gz | openssl base64 -out nextcloud-release.signature

# Stap 13a: Upload tarball as workflow artifact for easy inspection
- name: Upload tarball as artifact
uses: actions/upload-artifact@v4
with:
name: nextcloud-release-${{ env.NEW_VERSION }}
path: |
nextcloud-release.tar.gz
nextcloud-release.signature
retention-days: 30

# Stap 14: Genereer Git versie informatie (optioneel, voor logging)
- name: Git Version
id: version
uses: codacy/git-version@2.7.1
with:
release-branch: beta

# Stap 15: Extraheer repository description (optioneel)
- name: Extract repository description
id: repo-description
run: |
description=$(jq -r '.description' <(curl -s https://api.github.com/repos/${{ github.repository }}))
echo "REPO_DESCRIPTION=$description" >> $GITHUB_ENV

# Stap 16: Output de versie (voor logging)
- name: Use the version
run: |
echo "Git Version info: ${{ steps.version.outputs.version }}"

# Stap 17: Maak een nieuwe GitHub release (als prerelease)
- name: Upload Beta Release
uses: ncipollo/release-action@v1.12.0
with:
tag: v${{ env.NEW_VERSION }}
name: Beta Release ${{ env.NEW_VERSION }}
draft: false
prerelease: true

# Stap 18: Voeg het tarball toe als asset aan de GitHub release
- name: Attach tarball to GitHub release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: nextcloud-release.tar.gz
asset_name: ${{ env.APP_NAME }}-${{ env.NEW_VERSION }}.tar.gz
tag: v${{ env.NEW_VERSION }}
overwrite: true

# Stap 19: Upload de app naar de Nextcloud App Store
- name: Upload app to Nextcloud appstore
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.NEXTCLOUD_APPSTORE_TOKEN }}
download_url: https://github.com/${{ github.repository }}/releases/download/v${{ env.NEW_VERSION }}/${{ env.APP_NAME }}-${{ env.NEW_VERSION }}.tar.gz
app_private_key: ${{ secrets.NEXTCLOUD_SIGNING_KEY }}
nightly: false

# Stap 20: Verifieer de release
- name: Verify version and contents
run: |
echo "App version: ${{ env.NEW_VERSION }}"
echo "Tarball contents:"
tar -tvf nextcloud-release.tar.gz | head -100
echo "Verify vendor directory in tarball:"
tar -tvf nextcloud-release.tar.gz | grep "vendor/openai-php/client" | head -5 || echo "WARNING: openai-php/client not found in tarball!"
echo "info.xml contents:"
tar -xOf nextcloud-release.tar.gz ${{ env.APP_NAME }}/appinfo/info.xml

Check warning on line 290 in .github/workflows/beta-release.yaml

View check run for this annotation

GitHub Advanced Security / CodeQL

Workflow does not contain permissions

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {{contents: read}}
Comment on lines +11 to +290
Loading