Skip to content

Merge development into beta: OpenSpec scaffold, settings stack, and dev docs#6

Merged
WilcoLouwerse merged 7 commits intobetafrom
development
Mar 23, 2026
Merged

Merge development into beta: OpenSpec scaffold, settings stack, and dev docs#6
WilcoLouwerse merged 7 commits intobetafrom
development

Conversation

@github-actions
Copy link

@github-actions github-actions bot commented Mar 23, 2026

Summary

  • Add OpenSpec scaffolding (openspec/app-config.json, config.yaml, architecture and specs READMEs) plus project.md so app-create / app-verify style tooling has a consistent layout.
  • Implement register-linked settings end to end: SettingsService, API controller, repair step for install/upgrade, deep-link registration listener, Vue user settings and navigation, and EN/NL strings.
  • Refresh developer experience: Makefile dev-link target, README troubleshooting and accuracy fixes, and removal of stale appspec references in favour of openspec/.
  • Extend automated checks: unit tests for SettingsController, PHPUnit config tweaks, and Newman integration smoke test against the running instance.
  • PHPStan: add a narrow ignore for IRegistrationContext::registerRepairStep() until the nextcloud/ocp stub used for analysis includes that API (runtime servers already expose it).

Checks

  • Ran the same commands as the reusable Code Quality workflow (quality.yml): composer install, npm ci, composer lint / phpcs / phpmd / psalm / phpstan / phpmetrics, npm run lint, npm run stylelint, composer audit, npm audit --audit-level=critical --omit=dev.
  • PHPUnit (unit): docker exec in master-nextcloud-1 with phpunit-unit.xml and XDEBUG_MODE=coveragepass (4 tests).
  • Newman: tests/integration/app-template.postman_collection.json against http://nextcloud.localpass.
  • License compliance jobs were not run locally (need license-checker CLI like CI); rely on CI for that matrix.
  • Note: Pull requests to beta only trigger the branch-protection workflow in GitHub Actions. The full Code Quality workflow runs on pushes to development and on PRs targeting development / main / master.

Test plan

  • CI passes on development after merge-related workflows run
  • Smoke-tested template app in Docker (settings UI, API, integration collection)
  • Reviewed for regressions in other apps sharing the dev environment

… expectations

- Add lib/Controller/SettingsController.php — settings API (index/create/load)
- Add lib/Service/SettingsService.php — settings + OpenRegister integration
- Add lib/Listener/DeepLinkRegistrationListener.php — deep link registration
- Add lib/Repair/InitializeSettings.php — auto-import register on install
- Add lib/Settings/app_template_register.json — OpenAPI 3.0 register schema
- Add src/navigation/MainMenu.vue — extracted navigation sidebar component
- Add src/views/settings/UserSettings.vue — user settings dialog placeholder
- Add l10n/en.json and l10n/nl.json — translation stubs
- Add tests/unit/Controller/SettingsControllerTest.php — 3 unit tests, 100% coverage
- Add openspec/config.yaml — OpenSpec project configuration
- Add project.md — project overview
- Update lib/AppInfo/Application.php — register listener and repair step
- Update src/App.vue — use MainMenu component instead of inline navigation
- Update phpunit.xml and phpunit-unit.xml — include tests/unit/ directory
- Replace appspec/ with openspec/specs/ and openspec/architecture/
- Update openspec/README.md — reflect new specs/ and architecture/ structure
… README

- Add Makefile with dev-link/dev-unlink targets that create a relative symlink
  apps-extra/app-template -> nextcloud-app-template so Nextcloud can find the
  app by its ID when the repo is cloned under its GitHub name
- Update README: replace appspec/ references with openspec/specs/ and
  openspec/architecture/, update directory structure, document make dev-link step
- Add Troubleshooting section covering blank UI (missing build) and
  "Could not download app" (directory name mismatch)
- Clarify OpenRegister is pre-wired but optional for derived apps
- Fix docker-compose path (../openregister/ not openregister/)
- Note openspec/changes/ is created on first change
- Add npm install && npm run build to Enable locally steps with
  explicit note that js/ build output is not committed
- Add OpenRegister conditional note to openspec/README.md
Give the SPA catch-all route a unique name so GET /apps/app-template/ still
matches the index route (duplicate Symfony names replaced the first route).
Correct navigation route id to app-template.dashboard.page.

Add DashboardController::catchAll delegating to page(), register /settings in
the Vue router, and replace the minimal dashboard with KPI placeholders and
activity panels using Conduction components.

Made-with: Cursor
@WilcoLouwerse WilcoLouwerse changed the title Release: merge development into beta Merge development into beta: OpenSpec scaffold, settings stack, and dev docs Mar 23, 2026
PRs targeting beta did not match pull_request branch filters, so required
checks could stay pending or skip. Include beta alongside main/development.

Made-with: Cursor
@github-actions
Copy link
Author

Quality Report

Repository ConductionNL/nextcloud-app-template
Commit 1682bc4
Branch 6/merge
Event pull_request
Generated 2026-03-23 15:54 UTC
Workflow Run https://github.com/ConductionNL/nextcloud-app-template/actions/runs/23446536072

Summary

Group Result
PHP Quality PASS
Vue Quality PASS
Security PASS
License PASS
PHPUnit PASS
Newman PASS

PHP Quality

Tool Result
lint PASS
phpcs PASS
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (100 total)

Metric Count
Approved (allowlist) 100
Approved (override) 0
Denied 0

npm dependencies (215 total)

Metric Count
Approved (allowlist) 215
Approved (override) 0
Denied 0

PHPUnit Tests

PHP Nextcloud Result
Overall PASS

Code coverage: 0% (0 / 3 statements)

Integration Tests (Newman)

Result
PASS

Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

@WilcoLouwerse WilcoLouwerse merged commit a711e1e into beta Mar 23, 2026
46 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants