Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4dafab6
Merge pull request #5 from ConductionNL/beta
WilcoLouwerse Mar 24, 2026
a779520
Merge branch 'main' into development
WilcoLouwerse Apr 16, 2026
3d231df
fix: backport gitignore typo fix, deduplication, and add @nextcloud/a…
WilcoLouwerse Apr 16, 2026
6dcdd0d
chore: replace schemas/conduction symlink with schemas directory symlink
WilcoLouwerse Apr 16, 2026
2f788c3
chore(sbom): remove per-app SBOM workflow + checked-in SBOM (release-…
rubenvdlinde May 1, 2026
e618b46
chore: add .github/CODEOWNERS for auto-review-request (#25)
rubenvdlinde May 3, 2026
0d95a46
feat: add example dashboard widget + splitChunks bundling pattern (#26)
rubenvdlinde May 5, 2026
c6c9453
feat(openspec): add template-manifest-v1 change
rubenvdlinde May 9, 2026
a980d6e
feat: ship src/manifest.json + customComponents registry + validator
rubenvdlinde May 9, 2026
b60af2f
feat: rewrite main.js + App.vue to mount-survivable Tier-4 bootstrap
rubenvdlinde May 9, 2026
209224e
chore: bump nextcloud-vue + router, add axios alias + manifest-first …
rubenvdlinde May 9, 2026
3878110
Merge pull request #27 from ConductionNL/feature/template-manifest-v1
rubenvdlinde May 10, 2026
034301e
feat: add sass + sass-loader to devDeps + replace info.xml marketing …
rubenvdlinde May 11, 2026
4601d2c
Merge pull request #28 from ConductionNL/fix/scss-support-and-cleaner…
rubenvdlinde May 11, 2026
442115a
fix(deps): regenerate package-lock.json to sync with pinia transitive…
rubenvdlinde May 11, 2026
8edce5e
Merge pull request #29 from ConductionNL/chore/quality-fixes-post-pr28
rubenvdlinde May 11, 2026
1ab445d
chore(ci): spec-validation gate — json-strict + manifest + register c…
rubenvdlinde May 12, 2026
93f2020
feat: adopt the Features & Roadmap menu (template ships it) (#33)
rubenvdlinde May 12, 2026
c622aa4
feat(mcp): ship example IMcpToolProvider + widget wiring in the templ…
rubenvdlinde May 12, 2026
12e88e1
chore(ux): Settings menu opens NcAppSettingsDialog (action: user-sett…
rubenvdlinde May 12, 2026
5a1cae3
chore(deps): bump @conduction/nextcloud-vue to ^1.0.0-beta.40
rubenvdlinde May 12, 2026
7f6851d
Merge pull request #35 from ConductionNL/chore/bump-nc-vue-beta40
rubenvdlinde May 12, 2026
0dff2f5
feat(template): ship a default Docusaurus docs site + journeydoc scaf…
rubenvdlinde May 13, 2026
20d02c5
fix: load shared webpack chunks before main/settings entries (silent …
rubenvdlinde May 13, 2026
716122a
ci(docs): revert deploy source to documentation branch (docs CI separ…
rubenvdlinde May 13, 2026
c852e1e
chore(security): require 24h cooldown on npm packages (#39)
rubenvdlinde May 17, 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
36 changes: 36 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# CODEOWNERS — auto-request reviewers based on path domain.
# Last-match-wins; broad rules first, specific overrides below.
# Created 2026-05-03 from the OR-abstraction audit follow-up.

# Default: every named codeowner reviews unmatched paths.
* @rubenvdlinde @rjzondervan @Rem-Dam @remko48 @WilcoLouwerse @bbrands02 @SudoThijn

# Backend (PHP) — services, controllers, mappers, db, migration, etc.
lib/ @bbrands02 @rjzondervan @WilcoLouwerse
appinfo/ @bbrands02 @rjzondervan @WilcoLouwerse
**/*.php @bbrands02 @rjzondervan @WilcoLouwerse
phpcs.xml @bbrands02 @rjzondervan @WilcoLouwerse
phpmd.xml @bbrands02 @rjzondervan @WilcoLouwerse
phpstan.neon @bbrands02 @rjzondervan @WilcoLouwerse
phpstan-baseline.neon @bbrands02 @rjzondervan @WilcoLouwerse
phpmd.baseline.xml @bbrands02 @rjzondervan @WilcoLouwerse
composer.json @bbrands02 @rjzondervan @WilcoLouwerse
composer.lock @bbrands02 @rjzondervan @WilcoLouwerse

# Frontend (Vue / TS / JS) — components, stores, pages, build config.
src/ @SudoThijn @remko48
**/*.vue @SudoThijn @remko48
**/*.ts @SudoThijn @remko48
**/*.js @SudoThijn @remko48
package.json @SudoThijn @remko48
package-lock.json @SudoThijn @remko48
jest.config.js @SudoThijn @remko48
playwright.config.ts @SudoThijn @remko48
webpack.config.js @SudoThijn @remko48
babel.config.js @SudoThijn @remko48

# Specs / docs / ADRs / openspec.
openspec/ @rubenvdlinde @Rem-Dam
docs/ @rubenvdlinde @Rem-Dam
**/*.md @rubenvdlinde @Rem-Dam
README.md @rubenvdlinde @Rem-Dam
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
cooldown:
default-days: 1
include:
- "*"
exclude:
- "@conduction/*"
4 changes: 2 additions & 2 deletions .github/workflows/branch-protection.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ on:
branches: [main, beta]

jobs:
protect:
check:
uses: ConductionNL/.github/.github/workflows/branch-protection.yml@main
secrets: inherit
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
app-name: app-template
php-version: "8.3"
php-test-versions: '["8.3", "8.4"]'
nextcloud-test-refs: '["stable31", "stable32"]'
nextcloud-test-refs: '["stable31", "stable32", "stable33"]'
enable-psalm: true
enable-phpstan: true
enable-phpmetrics: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ jobs:
deploy:
uses: ConductionNL/.github/.github/workflows/documentation.yml@main
with:
cname: app-template.app
cname: app-template.conduction.nl
40 changes: 40 additions & 0 deletions .github/workflows/spec-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Spec Validation

# Validates the OpenRegister register seed (lib/Settings/*_register.json) and the
# CnAppRoot manifest (src/manifest.json) on every push and PR:
# - check:json-strict — strict JSON parse, rejects duplicate keys + appendOnly
# nested in x-openregister (the silent-data-loss class of bug a bad JSON merge
# produces — see the scholiq Wave-2 incident)
# - check:manifest — Ajv validation against @conduction/nextcloud-vue's
# app-manifest.schema.json (catches invented page/widget/action shapes)
# - check:register — structural checks: schema shape, slug uniqueness,
# lifecycle `requires:` → PHP class exists, "schema looks clobbered" heuristic
#
# To make these BLOCK a merge, add the "Spec Validation / validate" check to the
# branch-protection ruleset's required-status-checks list (org settings).

on:
push:
branches: [main, master, development, beta, 'feature/**', 'bugfix/**', 'hotfix/**', 'chore/**', 'fix/**', 'spec/**']
pull_request:
branches: [main, master, development, beta]
workflow_dispatch:

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci --no-audit --no-fund

- name: Validate specs (json-strict + manifest + register)
run: npm run check:specs
26 changes: 20 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/.idea/
/*.iml
*.Identifier
.phphunit.result.cache
.phpunit.result.cache

/vendor/
/vendor-bin/*/vendor/
Expand Down Expand Up @@ -59,11 +59,6 @@ phpqa_output.log
simple-solr-test.php
test-solr-connection.php

# Files with unusual extensions or no extensions that could be mistakes
**/PR *
**/adds *
**/implements *

phpqa/

# Docker AI models (too large for git)
Expand All @@ -76,6 +71,20 @@ docker/dolphin/models/
/docusaurus/node_modules/
/docusaurus/build/
/docusaurus/.docusaurus/

# Docusaurus documentation site (docs/) — build artefacts only; sources are tracked
/docs/node_modules/
/docs/build/
/docs/.docusaurus/
/docs/.cache-loader/
/docs/i18n/nl/

# Playwright (tests/e2e/) — reports, traces, and captured outputs are not committed
/tests/e2e/playwright-report/
/tests/e2e/test-results/
/test-results/
/playwright-report/

# Test screenshots — images generated by browser test commands (test-app, run-test-scenario)
# Only images are ignored; markdown reports and scenario files are kept in git.
test-results/**/*.png
Expand All @@ -88,3 +97,8 @@ openspec/test-site-results/**/*.jpg
openspec/test-site-results/**/*.jpeg
openspec/test-site-results/**/*.gif
openspec/test-site-results/**/*.webp

# SBOM is published as release asset (see SECURITY.md), not stored in repo
sbom.cdx.json
bom-php.cdx.json
bom-npm.cdx.json
5 changes: 5 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Supply-chain hardening: reject any npm package published less than
# 24h ago. Compromised first-party-Conduction packages are excluded via
# Dependabot cooldown (.github/dependabot.yml); for fresh @conduction/*
# releases, override per-install with `npm install --min-release-age=0`.
min-release-age=1
Loading
Loading