Repository navigation
chore(nc35): Nextcloud 35 support - #195
rubenvdlinde wants to merge 3 commits into
Conversation
- appinfo/info.xml: max-version 34 -> 35 (min stays 32, matching openregister's floor) - composer.json: nextcloud/ocp ^34.0 -> ^35.0, composer.lock refreshed (ocp v35.0.1; pulls symfony/polyfill-php84/85/86 as ocp deps) - code-quality.yml: drop the hard-coded nextcloud-test-refs override so the shared quality.yml derives the matrix (incl. stable35) from info.xml Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M7DxSg7d7wqqZsUppLWf7J
…emplate Apps generated from this template reference OCA\OpenRegister\ from lib/, and `apptemplate` (like most app ids) sorts before `openregister`, so OpenRegister's PSR-4 prefix is not registered yet when register() runs. The fleet worked around that with \OC_App::registerAutoloading(), which Nextcloud 35 removed. Add OpenRegisterAutoloader (ported from decidiq / keepiq#712): registers a PSR-4 loader for OCA\OpenRegister\ -> <openregister>/lib/ via spl_autoload_register, using only public IAppManager::isEnabledForAnyone() and getAppPath(). Never throws, never requires OpenRegister's vendor autoloader, never calls loadApp(). Called first thing in Application::register() so generated apps start from the safe pattern. Unit test covers: no OC_App in code, registration + idempotency, disabled -> false without touching getAppPath, never throws, and the class-file mapping only answering for OCA\OpenRegister\. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M7DxSg7d7wqqZsUppLWf7J
\OC::$server is private API; \OCP\Server::get() is the public PSR container accessor with identical semantics. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M7DxSg7d7wqqZsUppLWf7J
Quality Report — ConductionNL/nextcloud-app-template @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| check-manifest | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 106/106 | |||
| npm | ✅ | ✅ 857/857 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ✅ |
Quality workflow — 2026-10-06 10:28 UTC
Download the full PDF report from the workflow artifacts.
|
CI triage for this PR: Not caused by this PR. Three checks fail on the stable35 legs:
Generated by Claude Code |
Summary
Part of the fleet-wide Nextcloud 35 rollout (see ConductionNL/decidiq#1616). Declares NC 32-35,
nextcloud/ocp^35.0, CI matrix derived from info.xml. Adds an NC35-safeOpenRegisterAutoloader(publicIAppManager+spl_autoload_register; Nextcloud 35 removed\OC_App::registerAutoloading()) called first inApplication::register(), so apps generated from the template start with the safe pattern. Admin template uses\OCP\Server.Commits
Validation and open risks
Full unit suite OK on OCP 35 (35 tests incl. 5 new); phpcs 0 errors; phpmd clean.
Merge order
Land ConductionNL/openregister#4406 first (CI installs openregister
development).🤖 Generated with Claude Code
https://claude.ai/code/session_01M7DxSg7d7wqqZsUppLWf7J
Generated by Claude Code