Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
282 commits
Select commit Hold shift + click to select a range
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
3993bf2
chore: build result (#141)
rubenvdlinde Apr 18, 2026
30c2fcd
chore: build result (#157)
rubenvdlinde Apr 18, 2026
139d793
chore: build result (#175)
rubenvdlinde Apr 18, 2026
7c0c54f
chore: build result (#179)
rubenvdlinde Apr 18, 2026
0e9d812
chore: build result (#205)
rubenvdlinde Apr 18, 2026
50db73f
chore: build result (#180)
rubenvdlinde Apr 18, 2026
b878cd7
chore: build result (#135)
rubenvdlinde Apr 18, 2026
b37d8fc
chore: build result (#136)
rubenvdlinde Apr 18, 2026
407eba9
chore: build result (#123)
rubenvdlinde Apr 18, 2026
88b9fd4
chore: build result (#137)
rubenvdlinde Apr 18, 2026
84cfae9
chore: build result (#141)
rubenvdlinde Apr 18, 2026
dd43e77
chore: build result (#175)
rubenvdlinde Apr 18, 2026
9654121
chore: build result (#179)
rubenvdlinde Apr 18, 2026
3e5858b
chore: build result (#212)
rubenvdlinde Apr 18, 2026
6c6dcb6
chore: build result (#206)
rubenvdlinde Apr 18, 2026
198266d
chore: build result (#215)
rubenvdlinde Apr 18, 2026
ef665f2
chore: build result (#213)
rubenvdlinde Apr 18, 2026
2fd7738
test(zrc-009): fix Vertrouwelijkheidaanduiding tests so named-args re…
rubenvdlinde Apr 18, 2026
9da72f1
Merge pull request #255 from ConductionNL/fix/zgw-zrc-vertrouwelijkhe…
rubenvdlinde Apr 18, 2026
4a7c08b
test: fix pre-existing broken unit tests (ObjectService named-arg stubs)
rubenvdlinde Apr 18, 2026
46663a4
Merge origin/development into fix/broken-tests-pre-existing
rubenvdlinde Apr 18, 2026
d683577
Merge pull request #256 from ConductionNL/fix/broken-tests-pre-existing
rubenvdlinde Apr 18, 2026
3f18624
chore: build result (#157)
rubenvdlinde Apr 19, 2026
ef6630c
chore: drop stale .claude/openspec/architecture/ — org ADRs live in h…
rubenvdlinde Apr 19, 2026
6105c95
chore: applier verdict (#253)
rubenvdlinde Apr 19, 2026
3b4cd48
chore(quality): phpcbf + email typo
rubenvdlinde Apr 20, 2026
820948c
feat(phpcs): SpecTag sniff
rubenvdlinde Apr 20, 2026
00ac01f
chore(quality): drive procest to 0 phpcs + phpstan + psalm; baseline …
rubenvdlinde Apr 20, 2026
f5b013f
chore: build result (#123)
rubenvdlinde Apr 20, 2026
ad65f5f
chore: build result (#157)
rubenvdlinde Apr 20, 2026
4c079b5
chore: build result (#179)
rubenvdlinde Apr 20, 2026
cf4b5c8
chore: build result (#137)
rubenvdlinde Apr 20, 2026
4d8e31a
chore: build result (#180)
rubenvdlinde Apr 20, 2026
c500950
chore: build result (#206)
rubenvdlinde Apr 20, 2026
d11311c
chore: build result (#205)
rubenvdlinde Apr 20, 2026
040a224
chore: build result (#212)
rubenvdlinde Apr 21, 2026
e5e3f0f
chore: build result (#213)
rubenvdlinde Apr 21, 2026
92bbc78
chore: build result (#215)
rubenvdlinde Apr 21, 2026
c20fa31
feat: Add OpenSpec change parafeerroute-engine from Specter
Apr 23, 2026
99fb48c
feat: Add OpenSpec change parafeerroute-engine from Specter
Apr 23, 2026
578e695
chore: add hydra.json for parafeerroute-engine
Apr 23, 2026
66871b1
chore: link issue to hydra.json for parafeerroute-engine
Apr 23, 2026
a4fb760
feat: Add OpenSpec change parafering-actions from Specter
Apr 23, 2026
561d243
feat: Add OpenSpec change parafering-actions from Specter
Apr 23, 2026
9f9320f
chore: add hydra.json for parafering-actions
Apr 23, 2026
998390b
chore: link issue to hydra.json for parafering-actions
Apr 23, 2026
09eb3b2
feat: Add OpenSpec change parafering-dashboard from Specter
Apr 23, 2026
7e33a03
feat: Add OpenSpec change parafering-dashboard from Specter
Apr 23, 2026
04fbbfd
chore: add hydra.json for parafering-dashboard
Apr 23, 2026
6620e65
chore: link issue to hydra.json for parafering-dashboard
Apr 23, 2026
db3d9f3
chore: build result (#290)
rubenvdlinde Apr 23, 2026
7281289
chore: build result (#137)
rubenvdlinde Apr 23, 2026
824a51b
chore: build result (#274)
rubenvdlinde Apr 23, 2026
a22ece1
chore: build result (#290)
rubenvdlinde Apr 23, 2026
45106c5
chore: build result (#137)
rubenvdlinde Apr 23, 2026
5bfa812
chore: build result (#274)
rubenvdlinde Apr 23, 2026
f2f232e
chore: build result (#290)
rubenvdlinde Apr 23, 2026
2d68e8c
chore: build result (#137)
rubenvdlinde Apr 23, 2026
de9d220
chore: build result (#274)
rubenvdlinde Apr 23, 2026
0c253bd
chore: build result (#290)
rubenvdlinde Apr 23, 2026
633a9dc
chore: build result (#290)
rubenvdlinde Apr 23, 2026
e8ce254
chore: build result (#274)
rubenvdlinde Apr 23, 2026
6057fa3
chore: build result (#274)
rubenvdlinde Apr 23, 2026
01a2caa
chore: build result (#290)
rubenvdlinde Apr 23, 2026
c1f3192
docs(adr): foundation cleanup — adr-000 non-ADR header reframe (#309)
rubenvdlinde May 3, 2026
22af812
chore: add .github/CODEOWNERS for auto-review-request (#310)
rubenvdlinde May 3, 2026
dd66de4
feat(openspec): procest-adopt-or-abstractions — heaviest spec rewrite…
rubenvdlinde May 3, 2026
462da39
chore: add SPDX-License-Identifier + SPDX-FileCopyrightText to lib/ (…
rubenvdlinde May 3, 2026
0353b49
chore: bump @conduction/nextcloud-vue to ^0.1.0-beta.17 (#313)
rubenvdlinde May 3, 2026
28ac1c1
feat(openspec): procest-legacy-quality-cleanup tracking change (#314)
rubenvdlinde May 3, 2026
c3f5814
perf: split shared Vue/@nextcloud/vue chunks across widget entry-poin…
rubenvdlinde May 5, 2026
67d16ae
feat(docs): adopt @conduction/docusaurus-preset + move to procest.con…
rubenvdlinde May 7, 2026
0b84b97
Merge pull request #316 from ConductionNL/feature/conduction-nl-migra…
rubenvdlinde May 7, 2026
8cf4e3e
feat(docs): cobalt hero on landing (preset 1.5.1) (#317)
rubenvdlinde May 7, 2026
fb23b06
feat: server-side dashboard KPI aggregation (#318)
rubenvdlinde May 9, 2026
75e65c4
chore(deps): bump @conduction/nextcloud-vue to 1.0.0-beta.6 (#319)
rubenvdlinde May 9, 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