Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
269 commits
Select commit Hold shift + click to select a range
61a46a9
feat: Add PHPUnit infrastructure and SettingsService tests
rubenvdlinde Mar 13, 2026
2cea81d
fix: Enable PHPUnit in CI quality workflow
rubenvdlinde Mar 13, 2026
4b89488
feat: Migrate docs to /docs folder and centralize documentation workflow
rubenvdlinde Mar 13, 2026
2414eb9
chore: Move remaining package-lock.json from docusaurus/ to docs/
rubenvdlinde Mar 13, 2026
b2232c0
ci: Add workflow_dispatch trigger to quality workflow
rubenvdlinde Mar 14, 2026
adfde96
ci: Use restructured quality workflow with PHP/NC matrix
rubenvdlinde Mar 14, 2026
56c418e
ci: Add newman-environment-path for ZGW test credentials
rubenvdlinde Mar 14, 2026
7c149df
ci: Add seed command and openregister dependency for Newman tests
rubenvdlinde Mar 14, 2026
25964d0
ci: Trigger workflow to test Newman with additional-apps support
rubenvdlinde Mar 14, 2026
e6fa079
ci: Add consumer seed script for Newman CI tests
rubenvdlinde Mar 14, 2026
98f2aad
ci: Trigger workflow - additional-apps checkout ordering fix
rubenvdlinde Mar 14, 2026
9ecd834
ci: Trigger - Newman now uses SQLite to fix OpenRegister migration
rubenvdlinde Mar 14, 2026
df4cdd6
ci: Add debug output to seed script for API troubleshooting
rubenvdlinde Mar 14, 2026
80b7ae5
ci: Use direct PHP/OCC consumer seeding instead of HTTP API
rubenvdlinde Mar 14, 2026
6483dbb
ci: Fix consumer seeding - load OpenRegister autoloader and fallback …
rubenvdlinde Mar 14, 2026
2bc8aa9
ci: Use direct SQL for consumer seeding, bypass ConsumerMapper class …
rubenvdlinde Mar 14, 2026
0170f6c
ci: Use openregister feature/php-linting branch (has consumers table …
rubenvdlinde Mar 14, 2026
e1ca449
docs: Add dependency license policy and exceptions to README
rubenvdlinde Mar 15, 2026
34ffbfa
feat: Add OpenSpec sync caller workflow
rubenvdlinde Mar 16, 2026
a80fec3
feat: Add issue triage caller workflow
rubenvdlinde Mar 16, 2026
7e713e9
chore: Update @nextcloud/vue to ^8.16.0 (installed 8.36.0) for consis…
rubenvdlinde Mar 15, 2026
dfbba65
feat: Add 19 tender-derived and competitor-derived OpenSpecs
rubenvdlinde Mar 16, 2026
f3bfe1a
fix: Resolve dual Pinia store bug and add deeplink support
rubenvdlinde Mar 16, 2026
20b54ac
feat: Enrich 33 specs, add prometheus metrics, stuf-support, register…
rubenvdlinde Mar 16, 2026
9f25c0e
feat: Add OpenRegister dependency check and enforce scoped CSS
rubenvdlinde Mar 18, 2026
c7c9102
feat: Add support contact info to app description and README
rubenvdlinde Mar 18, 2026
2d837af
feat: Add CnVersionInfoCard with support footer to admin settings
rubenvdlinde Mar 18, 2026
9257ae4
fix: Add @nextcloud/dialogs webpack alias to fix local dev build
rubenvdlinde Mar 18, 2026
8b05632
fix: Pass app version to admin settings template
rubenvdlinde Mar 18, 2026
ca7be40
feat: Add i18n support — fix imports, backend IL10N, expand translati…
rubenvdlinde Mar 18, 2026
bfa40f0
chore: Add l10n translation bundles
rubenvdlinde Mar 18, 2026
81691a3
fix: Resolve Psalm errors in procest
rubenvdlinde Mar 18, 2026
0a6804f
fix: Resolve 34 PHPMD warnings — quick fixes + complexity suppression
rubenvdlinde Mar 18, 2026
a6c9adc
fix: Resolve all PHPCS errors — auto-fix formatting + manual fixes fo…
rubenvdlinde Mar 19, 2026
ac16b1d
fix: Resolve all PHPStan errors — fix OCP autoloading, type narrowing…
rubenvdlinde Mar 19, 2026
9624698
fix: Standardize phpmd.xml to strict defaults and resolve warnings
rubenvdlinde Mar 19, 2026
257ad0f
fix: Use @nextcloud/stylelint-config instead of missing stylelint-con…
rubenvdlinde Mar 19, 2026
3a9aca9
fix: Resolve ESLint errors — fix template roots, style scoping, impor…
rubenvdlinde Mar 19, 2026
f4a926f
fix: Resolve PHPCS errors introduced by linter — convert ternaries to…
rubenvdlinde Mar 19, 2026
88966ef
config: Remove DisallowInlineIf PHPCS rule — allow ternaries for PHPM…
rubenvdlinde Mar 19, 2026
77341a2
config: Restore DisallowInlineIf PHPCS rule — use early returns inste…
rubenvdlinde Mar 19, 2026
3f885c9
refactor: Tighten UnusedFormalParameter suppressions to method-level
rubenvdlinde Mar 19, 2026
cb20929
refactor: Tighten PHPMD suppressions to method-level
rubenvdlinde Mar 19, 2026
67441e5
docs: Add method-decomposition OpenSpec for 152 complexity suppressions
rubenvdlinde Mar 19, 2026
72ebd70
docs: Add method-decomposition OpenSpec for complexity suppressions
rubenvdlinde Mar 19, 2026
ef30847
fix: Disable Newman until ZGW API passes core assertions
rubenvdlinde Mar 19, 2026
3cd8632
fix: update editUrl to reference docs/ instead of docusaurus/
rubenvdlinde Mar 19, 2026
ff77648
fix: exclude node_modules from Docusaurus docs path
rubenvdlinde Mar 19, 2026
a7ff078
feat: add Dutch (nl) locale support for documentation
rubenvdlinde Mar 19, 2026
a17eb9f
chore: add missing generated artifact entries to .gitignore
rubenvdlinde Mar 19, 2026
e06c08c
chore: Update openspec config and gitignore docs build artifacts
rubenvdlinde Mar 19, 2026
6646d5a
feat: Enrich all 37 Procest case management specs with deep research
rubenvdlinde Mar 20, 2026
bc84d2b
feat: Enhance Prometheus metrics and health check endpoints
rubenvdlinde Mar 20, 2026
681a367
feat: Add register content i18n foundation
rubenvdlinde Mar 20, 2026
b01f60c
feat: Add Results, Roles, and Properties tabs to admin settings
rubenvdlinde Mar 20, 2026
a0a310a
feat: Add Cases by Type chart and register dashboard widgets
rubenvdlinde Mar 20, 2026
5cef9ae
feat: Complete OpenRegister integration with all 27 schema registrations
rubenvdlinde Mar 20, 2026
b05e988
feat: Implement case-management spec — filters, search, properties pa…
rubenvdlinde Mar 20, 2026
8299cf1
feat: Implement zaak intake flow MVP — auto-assignment, intake channe…
rubenvdlinde Mar 20, 2026
2e824fd
feat: Implement task-management spec — filters, search, validation, l…
rubenvdlinde Mar 20, 2026
71edac3
feat: Enhance case dashboard — responsive layout, print view, 404 state
rubenvdlinde Mar 20, 2026
60781c7
feat: Implement roles-decisions spec — decisions section, archival me…
rubenvdlinde Mar 20, 2026
ae029c2
feat: Add Werkvoorraad (team work queue) view
rubenvdlinde Mar 20, 2026
8a37176
feat: Implement case-types spec — V1 admin tabs for result types, rol…
rubenvdlinde Mar 20, 2026
8f3366d
feat: Enhance My Work — case type display, accessibility, responsiveness
rubenvdlinde Mar 20, 2026
5497d07
feat: Implement zaaktype-configuratie spec — duration picker, active …
rubenvdlinde Mar 20, 2026
cd6b68f
feat: Add seed data for default case types, statuses, roles, results
rubenvdlinde Mar 20, 2026
eba9756
feat: Implement complaint management (klachtafhandeling) per Awb chap…
rubenvdlinde Mar 20, 2026
cc1024d
feat: Implement case-sharing-collaboration spec
rubenvdlinde Mar 20, 2026
7498791
feat: Implement case definition portability (export/import)
rubenvdlinde Mar 20, 2026
080c035
feat: Implement WOO case type template with document assessment workflow
rubenvdlinde Mar 20, 2026
500c77a
feat: Implement ai-assisted-processing spec
rubenvdlinde Mar 20, 2026
5dec0fd
feat: Implement legesberekening (municipal fee calculation engine)
rubenvdlinde Mar 20, 2026
adac3e8
feat: Implement B&W parafering workflow
rubenvdlinde Mar 20, 2026
06b178a
feat: Implement VTH module V1 with DSO intake, inspection checklists,…
rubenvdlinde Mar 20, 2026
d12e820
feat: Implement multi-tenant-saas spec
rubenvdlinde Mar 20, 2026
fdbf982
feat: Implement milestone tracking with progress indicators and API
rubenvdlinde Mar 20, 2026
4b3ec81
feat: Implement mobile inspection (PWA foundation)
rubenvdlinde Mar 20, 2026
f516a75
feat: Implement appointment-scheduling spec
rubenvdlinde Mar 20, 2026
0673134
feat: Implement consultation management with lifecycle and structured…
rubenvdlinde Mar 20, 2026
bbc49b1
feat: Implement StUF protocol support (SOAP/XML integration)
rubenvdlinde Mar 20, 2026
e8921c6
feat: Implement mijn-overheid-integration spec
rubenvdlinde Mar 20, 2026
ca13adc
feat: Implement case email integration with templates and threading
rubenvdlinde Mar 20, 2026
0758f20
docs: Add feature documentation with screenshots
rubenvdlinde Mar 20, 2026
7924280
feat: Rebuild case detail as widget-based dashboard
rubenvdlinde Mar 20, 2026
61eaeff
chore: restructure specs to proper OpenSpec format
rubenvdlinde Mar 20, 2026
b0fb198
chore: clean up OpenSpec structure — add frontmatter, fix headings, c…
rubenvdlinde Mar 20, 2026
737da71
chore: Fix remaining OpenSpec status frontmatter
rubenvdlinde Mar 20, 2026
0e5b3e8
chore: Convert all specs to change proposals
rubenvdlinde Mar 20, 2026
9efb569
feat: Process all 38 OpenSpec changes — add artifacts, tests, sync sp…
rubenvdlinde Mar 21, 2026
aca84d6
fix: Fix root route 404 and docs link URL
rubenvdlinde Mar 21, 2026
8aa2bc8
chore: Add ADR-011 rule to openspec config
rubenvdlinde Mar 21, 2026
5c87fbb
docs: Add review report and final openspec state
rubenvdlinde Mar 21, 2026
5a1e3b8
feat: 8 OpenSpec change proposals from market intelligence (97K requi…
rubenvdlinde Mar 22, 2026
9ee0454
feat: Add signalering widgets — deadline alerts, task reminders, stal…
rubenvdlinde Mar 22, 2026
86fd880
feat: Add configurable workflow engine for zaaktype workflows
rubenvdlinde Mar 22, 2026
5430c59
chore: Archive workflow-engine-enhancement, sync 8 new specs
rubenvdlinde Mar 22, 2026
a581aa4
feat: Add doorlooptijd (processing time) dashboard with SLA analytics
rubenvdlinde Mar 22, 2026
5847d05
feat: implement B&W besluitvorming workflow with parafering chains
rubenvdlinde Mar 22, 2026
520e9b6
feat: add GIS integration with map views, PDOK, WMS/WFS layers
rubenvdlinde Mar 22, 2026
6c45b8b
feat: Add AWB-compliant bezwaar/beroep workflow for objection and app…
rubenvdlinde Mar 22, 2026
bf1eb3d
feat: Add VTH workflow configuration — permits, enforcement, inspections
rubenvdlinde Mar 22, 2026
bbefddb
feat: add deelzaak (sub-case) support for hierarchical case management
rubenvdlinde Mar 22, 2026
369bb40
chore: archive deelzaak-support change, sync specs, update feature docs
rubenvdlinde Mar 22, 2026
9b40134
test: Add unit tests for signalering-widgets feature
rubenvdlinde Mar 22, 2026
436d412
test: Add unit tests for workflow-engine-enhancement feature
rubenvdlinde Mar 22, 2026
e53f9d8
test: Add unit tests for besluitvorming-workflow feature
rubenvdlinde Mar 22, 2026
2261f84
test: Add unit tests for gis-integration feature
rubenvdlinde Mar 22, 2026
b59db9d
test: Add unit tests for bezwaar-beroep-workflow feature
rubenvdlinde Mar 22, 2026
0ebd2c7
test: Add unit tests for vth-workflow-configuration feature
rubenvdlinde Mar 22, 2026
b42ebf5
Merge pull request #81 from ConductionNL/chore/restructure-specs-to-c…
rubenvdlinde Mar 22, 2026
8956bca
Merge pull request #79 from ConductionNL/docs/feature-screenshots
rubenvdlinde Mar 22, 2026
d9bbc83
Merge pull request #80 from ConductionNL/feature/case-detail-widgets
rubenvdlinde Mar 22, 2026
8b3ae6c
Merge pull request #93 from ConductionNL/feature/84/workflow-engine-e…
rubenvdlinde Mar 22, 2026
6ee79ac
Merge pull request #92 from ConductionNL/feature/88/signalering-widgets
rubenvdlinde Mar 22, 2026
e94edd7
merge: Resolve Dashboard.vue conflict — combine 5-tile SLA layout wit…
rubenvdlinde Mar 22, 2026
fad45d7
Merge pull request #94 from ConductionNL/feature/89/doorlooptijd-dash…
rubenvdlinde Mar 22, 2026
8bbaa99
merge: Resolve conflicts with development — combine voorstel/workflow…
rubenvdlinde Mar 22, 2026
8448391
Merge pull request #95 from ConductionNL/feature/87/besluitvorming-wo…
rubenvdlinde Mar 22, 2026
9f2f6a7
merge: Resolve conflicts with development — combine bezwaar+voorstel/…
rubenvdlinde Mar 22, 2026
8413054
Merge pull request #97 from ConductionNL/feature/86/bezwaar-beroep-wo…
rubenvdlinde Mar 22, 2026
59f9124
merge: Resolve conflicts with development — combine GIS mapLayer with…
rubenvdlinde Mar 22, 2026
9dcfe23
Merge pull request #96 from ConductionNL/feature/91/gis-integration
rubenvdlinde Mar 22, 2026
d836148
merge: Resolve conflicts with development — combine VTH schemas with …
rubenvdlinde Mar 22, 2026
5847602
Merge pull request #98 from ConductionNL/feature/85/vth-workflow-conf…
rubenvdlinde Mar 22, 2026
a321747
merge: Resolve conflicts with development — combine deelzaak with all…
rubenvdlinde Mar 22, 2026
939c3f9
Merge pull request #99 from ConductionNL/feature/90/deelzaak-support
rubenvdlinde Mar 22, 2026
52eb54f
merge: Resolve conflicts with feature/enrich-openspec-specs — sync sp…
rubenvdlinde Mar 22, 2026
a877655
Merge pull request #82 from ConductionNL/chore/final-spec-cleanup
rubenvdlinde Mar 22, 2026
c92c272
merge: Resolve conflicts with feature/enrich-openspec-specs — sync pr…
rubenvdlinde Mar 22, 2026
55165a9
Merge pull request #83 from ConductionNL/chore/specs-to-proposals
rubenvdlinde Mar 22, 2026
6fb1222
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
dfdc5d7
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
bf948c0
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
eda1933
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
5a63a85
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
574a161
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
2fcc38a
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
0945259
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
2f61a4d
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
cb6e652
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
a01b8f5
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
4ae0516
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
3a6c6d3
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
767ad5f
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
6b0eb6d
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
acd7094
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
bab1886
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
26e57ea
Merge pull request #46 from ConductionNL/feature/base-register-seed-data
rubenvdlinde Mar 22, 2026
84bfdd9
Merge pull request #48 from ConductionNL/feature/complaint-management
rubenvdlinde Mar 22, 2026
e8058ea
Merge pull request #52 from ConductionNL/feature/case-definition-port…
rubenvdlinde Mar 22, 2026
afa0783
Merge pull request #54 from ConductionNL/feature/woo-case-type
rubenvdlinde Mar 22, 2026
bfcdc78
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
31223d3
Merge pull request #50 from ConductionNL/feature/case-sharing-collabo…
rubenvdlinde Mar 22, 2026
467ab1e
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
cacc11c
Merge pull request #56 from ConductionNL/feature/ai-assisted-processing
rubenvdlinde Mar 22, 2026
2b6f277
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
094fbf7
Merge pull request #58 from ConductionNL/feature/legesberekening
rubenvdlinde Mar 22, 2026
c3307a9
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
b95c48d
Merge pull request #61 from ConductionNL/feature/vth-module
rubenvdlinde Mar 22, 2026
83f8eb6
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
1db9e52
Merge pull request #62 from ConductionNL/feature/bw-parafering
rubenvdlinde Mar 22, 2026
5819aa9
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
b4ff9db
Merge pull request #64 from ConductionNL/feature/multi-tenant-saas
rubenvdlinde Mar 22, 2026
2f38002
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
66d5558
Merge pull request #66 from ConductionNL/feature/milestone-tracking
rubenvdlinde Mar 22, 2026
c2c62f0
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
cbbd292
Merge pull request #68 from ConductionNL/feature/mobiel-inspectie
rubenvdlinde Mar 22, 2026
3e02b88
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
30aeaff
Merge pull request #70 from ConductionNL/feature/appointment-scheduling
rubenvdlinde Mar 22, 2026
c6a55d7
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
78da958
Merge pull request #72 from ConductionNL/feature/consultation-managem…
rubenvdlinde Mar 22, 2026
19b2d9c
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
b1e864f
Merge pull request #74 from ConductionNL/feature/stuf-support-impl
rubenvdlinde Mar 22, 2026
6ca4b37
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
cbd56ea
Merge pull request #76 from ConductionNL/feature/mijn-overheid-integr…
rubenvdlinde Mar 22, 2026
4ce5ee2
merge: Resolve conflicts with feature/enrich-openspec-specs
rubenvdlinde Mar 22, 2026
198c653
Merge pull request #78 from ConductionNL/feature/case-email-integration
rubenvdlinde Mar 22, 2026
b872594
chore: Remove stale workflow-engine-enhancement from changes/ (alread…
rubenvdlinde Mar 22, 2026
9e3d491
feat: Implement zgw-business-rules-compliance — fix zrc-007a/b/q, zrc…
rubenvdlinde Mar 22, 2026
3e47b90
Merge pull request #101 from ConductionNL/feature/zgw-business-rules-…
rubenvdlinde Mar 23, 2026
783d020
Merge branch 'development' into fix/ci-quality-checks
rubenvdlinde Mar 23, 2026
ddfb09e
Merge pull request #17 from ConductionNL/fix/ci-quality-checks
rubenvdlinde Mar 23, 2026
a55df84
Merge pull request #19 from ConductionNL/chore/gitignore-cleanup
rubenvdlinde Mar 23, 2026
d981a83
Merge branch 'development' into chore/openspec-config
rubenvdlinde Mar 23, 2026
fcfbda7
Merge remote-tracking branch 'origin/development' into chore/openspec…
rubenvdlinde Mar 23, 2026
d2b669b
Merge pull request #20 from ConductionNL/chore/openspec-config
rubenvdlinde Mar 23, 2026
1017b5c
Merge remote-tracking branch 'origin/development' into feature/enrich…
rubenvdlinde Mar 23, 2026
80af199
Merge pull request #21 from ConductionNL/feature/enrich-openspec-specs
rubenvdlinde Mar 23, 2026
fc663ce
Merge pull request #23 from ConductionNL/feature/prometheus-metrics
rubenvdlinde Mar 23, 2026
e997b92
Merge remote-tracking branch 'origin/development' into feature/regist…
rubenvdlinde Mar 23, 2026
eea79dc
Merge pull request #25 from ConductionNL/feature/register-i18n
rubenvdlinde Mar 23, 2026
645df08
Merge remote-tracking branch 'origin/development' into feature/admin-…
rubenvdlinde Mar 23, 2026
c3b9a25
Merge pull request #27 from ConductionNL/feature/admin-settings
rubenvdlinde Mar 23, 2026
023d366
Merge remote-tracking branch 'origin/development' into feature/dashboard
rubenvdlinde Mar 23, 2026
1ea0ca8
Merge pull request #29 from ConductionNL/feature/dashboard
rubenvdlinde Mar 23, 2026
4dae180
Merge remote-tracking branch 'origin/development' into feature/openre…
rubenvdlinde Mar 23, 2026
ea69abd
Merge pull request #31 from ConductionNL/feature/openregister-integra…
rubenvdlinde Mar 23, 2026
8d0dbde
Merge remote-tracking branch 'origin/development' into feature/case-m…
rubenvdlinde Mar 23, 2026
8e3058e
Merge pull request #32 from ConductionNL/feature/case-management
rubenvdlinde Mar 23, 2026
710dae7
Merge remote-tracking branch 'origin/development' into feature/zaak-i…
rubenvdlinde Mar 23, 2026
fa6b4c3
Merge pull request #34 from ConductionNL/feature/zaak-intake-flow
rubenvdlinde Mar 23, 2026
f92efb4
Merge pull request #35 from ConductionNL/feature/task-management
rubenvdlinde Mar 23, 2026
8cd7e65
Merge remote-tracking branch 'origin/development' into feature/case-d…
rubenvdlinde Mar 23, 2026
7f7bc43
Merge pull request #37 from ConductionNL/feature/case-dashboard-view
rubenvdlinde Mar 23, 2026
b89e90a
Merge remote-tracking branch 'origin/development' into feature/roles-…
rubenvdlinde Mar 23, 2026
f4644e3
Merge pull request #38 from ConductionNL/feature/roles-decisions
rubenvdlinde Mar 23, 2026
e150cd5
Merge remote-tracking branch 'origin/development' into feature/werkvo…
rubenvdlinde Mar 23, 2026
f2cb20a
Merge pull request #40 from ConductionNL/feature/werkvoorraad
rubenvdlinde Mar 23, 2026
ef1ff19
Merge remote-tracking branch 'origin/development' into feature/case-t…
rubenvdlinde Mar 23, 2026
1edc144
Merge pull request #41 from ConductionNL/feature/case-types
rubenvdlinde Mar 23, 2026
1790b4d
Merge pull request #43 from ConductionNL/feature/my-work
rubenvdlinde Mar 23, 2026
fc44cd6
Merge remote-tracking branch 'origin/development' into feature/zaakty…
rubenvdlinde Mar 23, 2026
449f4c0
Merge pull request #44 from ConductionNL/feature/zaaktype-configuratie
rubenvdlinde Mar 23, 2026
881b873
docs: Rewrite feature overview README with full standards references …
rubenvdlinde Mar 23, 2026
362dab3
chore: Remove duplicate feature doc rules — handled globally by opsx:…
rubenvdlinde Mar 23, 2026
871c3a4
feat: Add Playwright E2E tests and LLM test flows
rubenvdlinde Mar 23, 2026
6b1c690
test: Add case detail form tests with all sections and fields
rubenvdlinde Mar 24, 2026
612685b
fix: Store syntax error and deep link registration
rubenvdlinde Mar 24, 2026
b0f8fa6
ci: Enable Playwright spec-to-test coverage reporting (threshold 75%)
rubenvdlinde Mar 24, 2026
e0576d4
fix: Add translated sidebar titles for case and task detail views
rubenvdlinde Mar 24, 2026
403e612
docs(procest): add OpenSpec artifacts for start-case-widget [#105]
rubenvdlinde Mar 24, 2026
784fadb
feat(procest): add Start Case dashboard widget [#105]
rubenvdlinde Mar 24, 2026
b294ac9
chore(procest): archive start-case-widget change [#105]
rubenvdlinde Mar 24, 2026
4a374b5
test: Enrich Playwright tests for all Procest pages
rubenvdlinde Mar 24, 2026
4599b9b
docs(procest): plan.json, issues, and feature docs for start-case-wid…
rubenvdlinde Mar 24, 2026
02f7dd9
Merge pull request #104 from ConductionNL/fix/store-syntax-and-deeplinks
rubenvdlinde Mar 24, 2026
413155e
Merge pull request #106 from ConductionNL/feature/105/start-case-widget
rubenvdlinde Mar 24, 2026
99c0a3e
chore: add missing test/build artifact entries to .gitignore
rubenvdlinde Apr 9, 2026
368fd2f
fix: resolve merge conflict markers in .gitignore
rubenvdlinde Apr 9, 2026
275caa5
adr: push 2 architecture decisions from Specter
Apr 16, 2026
1930ee6
feat: Add OpenSpec change advice-management from Specter
Apr 16, 2026
fd8e7db
feat: Add OpenSpec change advice-management from Specter
Apr 16, 2026
06c7966
chore: add hydra.json for advice-management
Apr 16, 2026
2c6be3e
chore: build result (#134)
rubenvdlinde Apr 16, 2026
dbeb34b
chore: build result (#135)
rubenvdlinde Apr 16, 2026
53bbac7
chore: build result (#136)
rubenvdlinde Apr 16, 2026
4dcf3c4
chore: review round 1 results (#168)
rubenvdlinde Apr 16, 2026
6dc2b21
chore: review round 2 results (#168)
rubenvdlinde Apr 16, 2026
320e0c4
chore: build result (#142)
rubenvdlinde Apr 16, 2026
5e7774e
chore: build result (#152)
rubenvdlinde Apr 16, 2026
976ac3e
chore: build result (#154)
rubenvdlinde Apr 16, 2026
d3ea690
chore: remove duplicate adr-adr-*.md files (double prefix bug)
rubenvdlinde Apr 17, 2026
d7ab4e6
Merge pull request #223 from ConductionNL/spec/advice-management
rubenvdlinde Apr 18, 2026
a5361fe
chore: build result (#123)
rubenvdlinde Apr 18, 2026
0be6c2f
chore: build result (#135)
rubenvdlinde Apr 18, 2026
473748d
chore: build result (#137)
rubenvdlinde Apr 18, 2026
f674035
feat: add task management spec and @spec tags (#157)
Apr 18, 2026
fab426d
chore: update task-management spec status to pr-created (#157)
Apr 18, 2026
b6a0787
fix(quality): ADR-004/ADR-015 import source and t() usage — ESLint: 7…
Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
221 changes: 221 additions & 0 deletions .claude/openspec/architecture/adr-001-data-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
- ALL domain data → OpenRegister objects. NO custom Entity/Mapper for domain data.
- App config → `IAppConfig`. NOT OpenRegister.
- Cross-entity references: OpenRegister relations (register+schema+objectId). NO foreign keys.
MUST NOT store foreign keys or embed full objects.

### Schema standards

- Schemas: PascalCase, schema.org vocabulary, explicit types + required flags + description field.
- MUST NOT invent custom property names when a schema.org equivalent exists.
- Contact schemas MUST align with vCard properties (fn, email, tel, adr).
- Dutch government fields SHOULD use a mapping layer translating between international standards
and Dutch specs — do not hardcode Dutch field names as primary.
- Schema changes that remove or rename properties are BREAKING. Adding optional properties is non-breaking.

### Register templates

- Location: `lib/Settings/{app}_register.json` (OpenAPI 3.0 + `x-openregister` extensions).
- Three template categories:
- **App configuration** — define data models (schemas/registers/views/mappings).
Mark with `x-openregister.type: "application"`.
- **Mock data** — fictional but realistic seed data for dev/test.
Mark with `x-openregister.type: "mock"`.
- **Government standards** — aligned to Dutch API specs (BAG, BRP, KVK, DSO).
- Import mechanism: `ConfigurationService::importFromApp(appId, data, version, force)` →
`ImportHandler::importFromApp()`. Called from repair step or `SettingsLoadService`.
- Idempotency: re-importing with `force: false` MUST NOT create duplicates. Match by slug
using `ObjectService::searchObjects` with `_rbac: false` and `_multitenancy: false`.
Use `version_compare` for skip logic.

### Seed data

Apps that store data in OpenRegister are empty on first install. An empty app cannot be
meaningfully tested — there are no objects to view, search, filter, or interact with.
This blocks both automated browser testing and manual QA. The Loadable Register Template
pattern (see Register templates above) already supports seed data via `components.objects[]`
with the `@self` envelope.

**Requirements:**

- Every app using OpenRegister MUST include 3-5 realistic objects per schema in
`lib/Settings/{app}_register.json`.
- Use `@self` envelope: `{ "@self": { "register": ..., "schema": ..., "slug": ... }, ...properties }`.
Register/schema MUST match keys; slug is unique human-readable identifier for matching.
- Use general organisation data (municipality, consultancy, travel agency, non-profit) —
NOT context-specific. Varied, realistic field values.
- Mock data quality: real Dutch street names, valid postcodes (`[1-9][0-9]{3}[A-Z]{2}`),
correct municipality/KVK codes, BSNs that pass 11-proef. Fictional but distinguishable from real.
- Cross-register consistency: BRP→BAG, KVK→BAG, DSO→BAG references must be valid.
- Loaded on install alongside schemas via same `importFromApp()` pipeline.
- MUST be idempotent — re-importing skips existing objects matched by slug.

**In OpenSpec artifacts:**

- **In design.md**: MUST include a Seed Data section when change introduces/modifies schemas —
define seed objects per schema with concrete field values and related items (files, notes, tasks, contacts).
- **In tasks.md**: MUST include a seed data generation task when change introduces/modifies schemas.

**Exceptions** (no seed data required):

- **nldesign** — has no OpenRegister schemas.
- **ExApp sidecar wrappers** (openklant, opentalk, openzaak, valtimo, n8n-nextcloud) — proxy
external services and do not use OpenRegister.
- **nextcloud-vue** — shared library, no seed data applicable.
- Changes that only modify frontend components or non-schema backend logic (e.g., settings,
permissions) do not require seed data.

**Limitations:** OpenRegister's `ImportHandler` currently supports only flat seed objects.
Related items (files, notes, tasks, contacts) linked through the relation system are tracked
on the product roadmap. Until then, seed data is limited to object properties defined in schemas.

### Deduplication check

- Before proposing new capability: search `openspec/specs/` and `openregister/lib/Service/` for overlap
with ObjectService, RegisterService, SchemaService, ConfigurationService, and shared Vue components.
- If similar capability exists: MUST reference it and explain why new code is needed rather than extending.
- Proposals duplicating existing functionality without justification MUST be rejected.
- **In design.md**: MUST include a "Reuse Analysis" section listing existing OpenRegister services leveraged.
- **In tasks.md**: MUST include a "Deduplication Check" task verifying no overlap — document findings
even if "no overlap found".

### Schema migrations

- Breaking schema changes → new migration in repair step. NEVER modify existing migrations.

### OpenRegister + @conduction/nextcloud-vue — DO NOT REBUILD

The platform provides 258+ backend methods and 69+ frontend components. Apps ONLY build
custom logic for domain-specific business rules. Everything below is provided for FREE.

**CRUD & Data Management** (use ObjectService + CnIndexPage + CnDetailPage):
- Single & bulk create, read, update, delete — `ObjectService.saveObject()`, `deleteObject()`
- List with pagination, sorting, filtering — `ObjectService.findAll()` + `CnDataTable`
- Schema-driven forms — `CnFormDialog` (auto-generates from schema) or `CnAdvancedFormDialog`
- Detail views — `CnDetailPage` with `CnDetailGrid`, `CnDetailCard` sections
- Record merging/deduplication — `ObjectService.mergeObjects()`
- Object locking — `ObjectService.lockObject()` / `unlockObject()`

**Import & Export** (use ImportService/ExportService + CnMassImportDialog/CnMassExportDialog):
- CSV, Excel, JSON import with intelligent field mapping — `ImportService`
- CSV, Excel, JSON export with column selection — `ExportService`
- Bulk import with validation and progress — `CnMassImportDialog`
- Filtered export with format picker — `CnMassExportDialog`
- NO custom import dialogs, parsers, upload handlers, or export controllers

**Search & Discovery** (use IndexService + CnFilterBar + CnFacetSidebar):
- Full-text search with field weighting — `IndexService`
- Faceted navigation with counts — `FacetBuilder` + `CnFacetSidebar`
- Semantic search with embeddings — `VectorizationService`
- Hybrid search (keyword + semantic) — automatic
- Search analytics — `SearchTrailService` (popular terms, activity)
- NO custom search endpoints, query builders, or search pages

**File Management** (use FileService + CnObjectSidebar):
- Upload (single/multipart), download, share links — `FileService`
- File tagging, public/private toggle — `FileService`
- Bulk download as ZIP — `createObjectFilesZip()`
- Text extraction from PDFs/Office docs — `TextExtractionService`
- File tab in object sidebar — `CnObjectSidebar` → `CnFilesTab`
- NO custom file upload components, file controllers, or download handlers

**Audit & Compliance** (use AuditTrailService + CnObjectSidebar):
- Full change tracking with before/after snapshots — automatic
- Audit trail tab — `CnObjectSidebar` → `CnAuditTrailTab`
- GDPR data subject access requests — `inzageverzoek()`, `verwerkingsregister()`
- Audit export and analytics — `AuditTrailController`
- NO custom audit logging, change tracking, or compliance controllers

**Dashboard & Analytics** (use CnDashboardPage + CnChartWidget + CnStatsBlock):
- Drag-drop widget dashboard — `CnDashboardPage` with GridStack
- KPI cards — `CnKpiGrid`, `CnStatsBlock`, `CnStatsPanel`
- Charts (line/bar/pie/donut) — `CnChartWidget` (ApexCharts)
- Data tables as widgets — `CnTableWidget`
- Editable data grids — `CnObjectDataWidget`
- NO custom dashboard layouts, chart components, or KPI cards

**Forms & Dialogs** (use CnFormDialog + schema-driven generation):
- Auto-generated create/edit forms — `CnFormDialog` reads schema → generates fields
- JSON/metadata editing — `CnAdvancedFormDialog` with Properties/Data/Metadata tabs
- Schema editor — `CnSchemaFormDialog`
- Delete/Copy/Mass operations — `CnDeleteDialog`, `CnCopyDialog`, `CnMassDeleteDialog`
- NO custom form components, validation logic, or dialog wrappers

**Navigation & Pagination** (use CnPagination + CnActionsBar + useListView):
- Pagination control with size selector — `CnPagination`
- Action bar (add, search, toggle views) — `CnActionsBar`
- List state management — `useListView` composable (handles search, filter, sort, page)
- Detail state management — `useDetailView` composable
- NO custom pagination logic, debounced search, or list state management

**Authorization & RBAC** (use AuthorizationService + PropertyRbacHandler):
- Role-based access control — `AuthorizationService`
- Field-level permissions — `PropertyRbacHandler`
- Object-level restrictions — `PermissionHandler`
- Authorization audit — `AuthorizationAuditService`
- NO custom permission checks, role systems, or access control middleware

**Webhooks & Events** (use WebhookService):
- Create, test, retry webhooks — `WebhookService`
- CloudEvents format — automatic
- Event subscriptions — selective per schema/action
- NO custom webhook controllers or event dispatchers

**Notifications & Activity** (use NotificationService + ActivityService):
- Nextcloud notifications — `NotificationService`
- Activity feed — `ActivityService`
- Calendar events — `CalendarEventService`
- Deck/Kanban cards — `DeckCardService`

**Store & State** (use createObjectStore + plugins):
- Object stores — `createObjectStore(name)` generates Pinia CRUD store
- Store plugins: `auditTrails`, `files`, `lifecycle`, `relations`, `search`, `selection`
- Column/field/filter generation from schema — `columnsFromSchema()`, `fieldsFromSchema()`
- NO custom Pinia stores for CRUD, Vuex, or manual API call management

**Chat & AI** (use ChatService):
- Multi-turn conversation — `ChatService`
- RAG-based knowledge retrieval — `ContextRetrievalHandler`
- LLM response generation — `ResponseGenerationHandler`

**Data Retention & Archival** (use ArchivalService):
- Legal hold — `LegalHoldService`
- Destruction schedules — `DestructionService`
- Retention policies — `RetentionService`

**Semantic & Hybrid Search** (use SolrController + SettingsController):
- Semantic search via vector embeddings — `SettingsController.semanticSearch()`
- Hybrid search (keyword + semantic combined) — `SolrController.hybridSearch()`
- Vector embedding generation — `VectorizationService`
- NO custom search algorithms — configure via OpenRegister settings

**GraphQL API** (use GraphQLController):
- Query objects across schemas via GraphQL — `GraphQLController.execute()`
- Alternative to REST for complex cross-entity queries

**Organization / Multi-Tenancy** (use OrganisationController):
- Organization CRUD — `OrganisationController`
- Tenant-scoped data isolation — automatic via `TenantLifecycleService`
- NO custom multi-tenancy logic

**Task & Workflow Management** (use TasksController + WorkflowEngineController):
- Task creation and tracking — `TasksController`
- Workflow orchestration — `WorkflowEngineRegistry`
- Scheduled workflows — `ScheduledWorkflowController`
- NO custom task/workflow systems

**Text Extraction** (use FileTextController):
- Extract text from PDFs and Office docs — `TextExtractionService`
- Entity recognition (PII detection) — `EntityRecognitionHandler`
- Content anonymization — automatic

**Timeline & Stages** (use CnTimelineStages):
- Workflow progression visualization — `CnTimelineStages` component
- Stage tracking with status colors

### What apps SHOULD build (custom business logic only):
- External API integrations (SAP, Peppol, TenderNed, etc.)
- PDF/document generation with business-specific templates
- Workflow triggers and business rules specific to the domain
- Notification dispatch with app-specific event types
- Custom settings pages with app-specific configuration
- Background jobs for domain-specific processing
6 changes: 6 additions & 0 deletions .claude/openspec/architecture/adr-002-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- URL pattern: `/index.php/apps/{app}/api/{resource}` — lowercase plural, hyphens.
- Methods: GET=read, POST=create, PUT=update, DELETE=remove. No custom methods.
- Pagination: support `_page` + `_limit`. Response includes `total`, `page`, `pages`.
- Errors: appropriate HTTP status + `message` field. NO stack traces in responses.
- Auth: Nextcloud built-in only. NO custom login/session/token flows.
- Public endpoints: annotate `#[PublicPage]` + `#[NoCSRFRequired]`. Register CORS OPTIONS route.
14 changes: 14 additions & 0 deletions .claude/openspec/architecture/adr-003-backend.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
- **Controller → Service → Mapper** (strict 3-layer). Controllers NEVER call mappers directly.
- Controllers: thin (<10 lines/method). Routing + validation + response only.
- Services: ALL business logic. Stateless — no instance state between requests.
- Mappers: DB CRUD only. No business logic.
- DI: constructor injection with `private readonly`. NO `\OC::$server` or static locators.
- Entity setters: POSITIONAL args only. `$e->setName('val')` — NEVER `$e->setName(name: 'val')`.
(`__call` passes `['name' => val]` but `setter()` uses `$args[0]`.)
- Routes: `appinfo/routes.php`. Specific routes BEFORE wildcard `{slug}` routes.
- Config: `IAppConfig` with sensitive flag for secrets. NEVER read DB directly.
- Lifecycle: schema init via repair steps (`IRepairStep`), background via job queue, events via dispatcher.
- **Spec traceability**: every class and public method MUST have `@spec` PHPDoc tag(s) linking to
the OpenSpec change that caused it: `@spec openspec/changes/{name}/tasks.md#task-N`.
Multiple `@spec` tags allowed (code touched by multiple changes). File-level `@spec` in header docblock.
This enables: code → docblock → spec traceability alongside code → git blame → commit → issue → spec.
Loading
Loading