Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1027 commits
Select commit Hold shift + click to select a range
514d9c0
chore: adopt Nextcloud's coding standard, .editorconfig and NC 34 (#493)
rubenvdlinde Aug 12, 2026
5546f7d
fix(ci): test the whole declared Nextcloud range, not only the ceilin…
rubenvdlinde Aug 12, 2026
bbe8883
chore: delete the inert .prettierrc (#495)
rubenvdlinde Aug 12, 2026
d788cd5
fix(install): seed on a FRESH install, not only on upgrade (#496)
rubenvdlinde Aug 12, 2026
11c54b6
chore(quality): point PHPMD at the central ruleset (#498)
rubenvdlinde Aug 12, 2026
4ef32fe
chore(quality): adopt the central PHPStan base config (#497)
rubenvdlinde Aug 12, 2026
021fc72
chore(deps): pin @conduction/nextcloud-vue to 2.2.0-vue3.16 (#499)
rubenvdlinde Aug 12, 2026
051aa85
chore(deps): resolve conduction/hydra-gates v1.7.3 in composer.lock (…
rubenvdlinde Aug 12, 2026
ee2152d
fix(repair): guard the Dutch column rename on what the schema declare…
rubenvdlinde Aug 13, 2026
bd9751a
fix(auth): four admin actions were reachable by any authenticated use…
rubenvdlinde Aug 13, 2026
cd27979
feat(format): adopt Nextcloud's prettier config, so styles are tabs t…
rubenvdlinde Aug 13, 2026
34d8318
ci: run `format` (prettier --check) as a Frontend Check leg (#507)
rubenvdlinde Aug 13, 2026
c8e82f4
ci(stylelint): cover css/ as well as src/, and fix what it found (#508)
rubenvdlinde Aug 14, 2026
c016ae8
fix(security): rate-limit the public review aggregate endpoint
rubenvdlinde Aug 14, 2026
702f24a
Merge pull request #510 from ConductionNL/fix/public-endpoint-rate-li…
rubenvdlinde Aug 14, 2026
bc57048
build(lint): migrate to eslint 10 + @nextcloud/eslint-config 9
rubenvdlinde Aug 14, 2026
aab66d5
refactor(softwarecatalog): translate Dutch vocabulary to English (#506)
rubenvdlinde Aug 14, 2026
6aceb6e
Merge remote-tracking branch 'origin/development' into feat/eslint-10
rubenvdlinde Aug 14, 2026
b7916e9
Merge pull request #511 from ConductionNL/feat/eslint-10
rubenvdlinde Aug 14, 2026
8c6798b
ci: a branch nobody named got no checks at all (#512)
rubenvdlinde Aug 14, 2026
f4e57eb
fix(security): give every public endpoint a volume ceiling (ADR-082) …
rubenvdlinde Aug 14, 2026
517f650
refactor(deps): inject OpenRegister instead of looking it up (ADR-083)
rubenvdlinde Aug 14, 2026
386771d
refactor(softwarecatalog): translate 12 pre-existing Dutch property n…
rubenvdlinde Aug 14, 2026
d3fa65a
refactor(softwarecatalog): one Dutch name, two English targets — let …
rubenvdlinde Aug 15, 2026
58c3c30
refactor(deps): type-hint OpenRegister's published contract (ADR-084)
rubenvdlinde Aug 15, 2026
826bf1b
fix(adr-084): complete the conversion the first transformer under-did
rubenvdlinde Aug 15, 2026
c15e6fd
refactor(softwarecatalog): translate eight schema slugs, and migrate …
rubenvdlinde Aug 15, 2026
153a7e5
refactor(softwarecatalog): translate the stored enum values, and migr…
rubenvdlinde Aug 15, 2026
2020f87
test: pass the ObjectServiceInterface the constructors now require
rubenvdlinde Aug 15, 2026
153e850
fix: the contract lives in Contract\, not Service\
rubenvdlinde Aug 15, 2026
5e7ae8d
ci: adopt development's Code Quality workflow — the branch had the pr…
rubenvdlinde Aug 15, 2026
26fae3e
chore(deps): track @conduction/nextcloud-vue ^2.3.0 (#521)
rubenvdlinde Aug 15, 2026
3e16612
test: complete the ADR-083 constructor changes and make the stubs sat…
rubenvdlinde Aug 15, 2026
4619549
refactor: persist through the published contract, not OpenRegister's …
rubenvdlinde Aug 15, 2026
701ad8b
refactor: convert the last two MagicMapper lookups on their own terms
rubenvdlinde Aug 15, 2026
684384e
fix: finish the MagicMapper removal and wire the composition root
rubenvdlinde Aug 15, 2026
cee771e
fix: repair references to the local $objectService ADR-083 deleted
rubenvdlinde Aug 15, 2026
4f6da66
fix(tests): drop constructor arguments belonging to a same-named class
rubenvdlinde Aug 15, 2026
bc36d9c
fix: clear the docblocks and dead code ADR-083 left behind
rubenvdlinde Aug 15, 2026
67e7eff
Merge development, and restore two parameters my dangling-reference p…
rubenvdlinde Aug 15, 2026
d5f5e69
chore(deps): move @conduction/nextcloud-vue to ^2.3.0 (#522)
rubenvdlinde Aug 15, 2026
785b9f2
fix(build): make local-lib opt-in and test the -vue3 marker, not the …
rubenvdlinde Aug 15, 2026
0856704
refactor(facets): translate the four facet dimensions as one set (#524)
rubenvdlinde Aug 15, 2026
34bdf86
chore(security): enable the npm supply-chain cooldown on npm 11 (#523)
rubenvdlinde Aug 16, 2026
9ecc2fa
Put register and schema back inside findAll()'s config (2 sites)
rubenvdlinde Aug 16, 2026
d639397
fix(lint): clear 3 of 4 tranche-A suppressions (#525)
rubenvdlinde Aug 16, 2026
0335cb2
Merge pull request #519 from ConductionNL/refactor/adr-084-type-hint-…
rubenvdlinde Aug 16, 2026
103a102
fix(tests): the ObjectEntity stub declared return types wider than th…
rubenvdlinde Aug 16, 2026
6d19682
fix(register): point three x-relation-filter tokens at the renamed pr…
rubenvdlinde Aug 16, 2026
01cc731
fix: the errors the class-load fatal was hiding
rubenvdlinde Aug 16, 2026
7cf3afa
fix(coverage-guard): scope the ratchet to the files a change touches …
rubenvdlinde Aug 16, 2026
89a7ea1
Merge pull request #528 from ConductionNL/fix/stub-return-types-match…
rubenvdlinde Aug 16, 2026
57f6c7a
fix(me): pass the two ADR-084 arguments the /me factory stopped suppl…
rubenvdlinde Aug 16, 2026
ece273a
fix(register): two dangling objectDescriptionField values detached th…
rubenvdlinde Aug 16, 2026
1a1632a
fix(gate-57): delete six orphaned write capabilities (#530)
rubenvdlinde Aug 16, 2026
2466541
fix(phpcs): clear all 19 errors — phpcs exits 0
rubenvdlinde Aug 16, 2026
5380993
Merge pull request #534 from ConductionNL/fix/phpcs-docblocks
rubenvdlinde Aug 16, 2026
e58efc9
fix: close the ADR-084 contract drift behind 19 PHPUnit failures and …
rubenvdlinde Aug 16, 2026
8fd9130
Merge pull request #535 from ConductionNL/fix/green-softwarecatalog
rubenvdlinde Aug 16, 2026
583f538
fix: close the last three Hydra Gates and the five E2E failures
rubenvdlinde Aug 16, 2026
a539753
test: cover getOrganisationMapper(), which the coverage ratchet caugh…
rubenvdlinde Aug 16, 2026
24c2fa1
fix(e2e): the Organisations index filtered on values #520 deleted, an…
rubenvdlinde Aug 16, 2026
95aabce
Merge origin/development — resolve #536 for the union, keeping the fi…
rubenvdlinde Aug 16, 2026
68202d5
Merge pull request #537 from ConductionNL/fix/green-softwarecatalog-2
rubenvdlinde Aug 17, 2026
eb71c24
fix(ci): least-privilege workflow permissions + drop a dead string re…
Aug 17, 2026
a99ee19
fix(ci): correct the documentation.yml permissions rationale — build-…
Aug 17, 2026
edd4320
fix(manifest): the Standards pages read `element` from a register tha…
rubenvdlinde Aug 17, 2026
ee6b389
test(e2e): seed the AMEF register and assert the Standards page LISTS…
rubenvdlinde Aug 17, 2026
bac20b4
test(unit): pin manifest register sentinels to a register that attach…
rubenvdlinde Aug 17, 2026
6d91a5b
Merge pull request #540 from ConductionNL/fix/swc-standards-register
rubenvdlinde Aug 17, 2026
d1aff37
chore(deps): correct composer cooldown — default-days 1 to 2, add con…
rubenvdlinde Aug 17, 2026
24212bd
docs(openspec): change proposals — adopt-integration-leaves mcp-full-…
rubenvdlinde Aug 18, 2026
aba319e
ci(release): converge on the shared release.yml (#543)
rubenvdlinde Aug 18, 2026
398d870
docs(openspec): change proposals — adopt-integration-leaves mcp-full-…
rubenvdlinde Aug 18, 2026
e875a51
chore(release): 0.1.141-unstable.20260818220154 [skip ci]
github-actions[bot] Aug 18, 2026
57d17bf
Merge pull request #546 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 19, 2026
0dd1ca0
chore(release): 0.1.141-unstable.20260819194337 [skip ci]
github-actions[bot] Aug 19, 2026
1efab16
Merge remote-tracking branch 'origin/development' into fix/codeql-wor…
juanclaude-conduction Aug 19, 2026
a63f15a
Merge pull request #538 from ConductionNL/fix/codeql-workflow-permiss…
rubenvdlinde Aug 19, 2026
7162067
Merge pull request #547 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 19, 2026
2f67bce
chore(release): 0.1.141-unstable.20260819222324 [skip ci]
github-actions[bot] Aug 19, 2026
89ba1db
Merge pull request #549 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
2b3c555
chore(release): 0.1.141-unstable.20260820044910 [skip ci]
github-actions[bot] Aug 20, 2026
1394e77
Merge pull request #550 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
edeadfb
chore(release): 0.1.141-unstable.20260820045736 [skip ci]
github-actions[bot] Aug 20, 2026
247201e
Merge pull request #551 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
90da99e
chore(release): 0.1.141-unstable.20260820051001 [skip ci]
github-actions[bot] Aug 20, 2026
d8f724c
chore(deps): take hydra-gates v1.8.1 — the contract v1.8.0 shipped br…
juanclaude-conduction Aug 20, 2026
abf6f57
Merge pull request #552 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
2e84e28
chore(release): 0.1.141-unstable.20260820052611 [skip ci]
github-actions[bot] Aug 20, 2026
bf2a5da
Merge pull request #553 from ConductionNL/chore/hydra-gates-v1.8.1
rubenvdlinde Aug 20, 2026
961426f
Merge pull request #554 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
8f111b1
chore(release): 0.1.141-unstable.20260820054802 [skip ci]
github-actions[bot] Aug 20, 2026
06c65dd
Merge pull request #556 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
3b9a7bf
chore(release): 0.1.141-unstable.20260820060415 [skip ci]
github-actions[bot] Aug 20, 2026
842b488
Merge pull request #557 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
bca8b2c
chore(release): 0.1.141-unstable.20260820081134 [skip ci]
github-actions[bot] Aug 20, 2026
4508f10
Merge pull request #558 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
7fdddee
chore(release): 0.1.141-unstable.20260820082249 [skip ci]
github-actions[bot] Aug 20, 2026
3f89e84
Merge pull request #559 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
97b5b7f
chore(release): 0.1.141-unstable.20260820083657 [skip ci]
github-actions[bot] Aug 20, 2026
a8b6ab7
Merge pull request #560 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
d4f9d80
chore(release): 0.1.141-unstable.20260820085327 [skip ci]
github-actions[bot] Aug 20, 2026
3152e71
Merge pull request #561 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
0d0716d
chore(release): 0.1.141-unstable.20260820090828 [skip ci]
github-actions[bot] Aug 20, 2026
3b83dec
Merge pull request #562 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
6f7b168
chore(release): 0.1.141-unstable.20260820092253 [skip ci]
github-actions[bot] Aug 20, 2026
e2b9cf7
Merge pull request #563 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
94fbe93
chore(release): 0.1.141-unstable.20260820093628 [skip ci]
github-actions[bot] Aug 20, 2026
647e587
Merge pull request #564 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
34ae4a7
chore(release): 0.1.141-unstable.20260820095037 [skip ci]
github-actions[bot] Aug 20, 2026
03dc3ee
Merge pull request #565 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
06527ae
chore(release): 0.1.141-unstable.20260820100647 [skip ci]
github-actions[bot] Aug 20, 2026
ab3b14f
Merge pull request #566 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
cd1ed66
chore(release): 0.1.141-unstable.20260820102116 [skip ci]
github-actions[bot] Aug 20, 2026
eddce09
Merge pull request #567 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
6ff355f
chore(deps): take @conduction/nextcloud-vue 2.8.2 (was 2.3.0)
juanclaude-conduction Aug 20, 2026
8d15d88
chore(release): 0.1.141-unstable.20260820103634 [skip ci]
github-actions[bot] Aug 20, 2026
31e4715
Merge pull request #569 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
3e902b6
chore(release): 0.1.141-unstable.20260820110112 [skip ci]
github-actions[bot] Aug 20, 2026
721bc72
Merge pull request #568 from ConductionNL/chore/nc-vue-2.8.2
rubenvdlinde Aug 20, 2026
00f8fda
Merge pull request #570 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
f727a4d
chore(release): 0.1.141-unstable.20260820112844 [skip ci]
github-actions[bot] Aug 20, 2026
7bebbeb
Merge pull request #572 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
6120550
chore(release): 0.1.141-unstable.20260820114338 [skip ci]
github-actions[bot] Aug 20, 2026
1feca4c
Merge pull request #573 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
8e32bb1
chore(release): 0.1.141-unstable.20260820115302 [skip ci]
github-actions[bot] Aug 20, 2026
e194536
Merge pull request #574 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
167c060
chore(release): 0.1.141-unstable.20260820120301 [skip ci]
github-actions[bot] Aug 20, 2026
0110fa3
Merge pull request #575 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
33e174c
chore(release): 0.1.141-unstable.20260820121244 [skip ci]
github-actions[bot] Aug 20, 2026
fc39888
Merge pull request #576 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
6396158
chore(release): 0.1.141-unstable.20260820122242 [skip ci]
github-actions[bot] Aug 20, 2026
e010df4
Merge pull request #577 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
32bede5
chore(release): 0.1.141-unstable.20260820124146 [skip ci]
github-actions[bot] Aug 20, 2026
39a3f2f
Merge pull request #578 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
ee101bd
chore(release): 0.1.141-unstable.20260820125107 [skip ci]
github-actions[bot] Aug 20, 2026
6b4477c
Merge pull request #579 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
95ff8c3
chore(release): 0.1.141-unstable.20260820130046 [skip ci]
github-actions[bot] Aug 20, 2026
b6c58da
Merge pull request #197 from ConductionNL/development
rubenvdlinde Aug 20, 2026
98333a5
Merge pull request #580 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
35a943c
chore(release): 0.1.141-unstable.20260820201847 [skip ci]
github-actions[bot] Aug 20, 2026
3539cb0
Merge pull request #583 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
6a2d172
chore(release): 0.1.141-unstable.20260820203911 [skip ci]
github-actions[bot] Aug 20, 2026
b7cb07a
Merge pull request #584 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
5689d7e
chore(release): 0.1.141-unstable.20260820205557 [skip ci]
github-actions[bot] Aug 20, 2026
3115b37
Merge pull request #585 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
743ba4b
chore(release): 0.1.141-unstable.20260820212102 [skip ci]
github-actions[bot] Aug 20, 2026
4f03776
fix(manifest): process and audit fields are no longer editable inputs
rubenvdlinde Aug 20, 2026
609d9b2
Merge pull request #586 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
d0bdc09
chore(release): 0.1.141-unstable.20260820214311 [skip ci]
github-actions[bot] Aug 20, 2026
9d49b71
Merge pull request #588 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
9a6e9e5
chore(release): 0.1.141-unstable.20260820220515 [skip ci]
github-actions[bot] Aug 20, 2026
54c4b8a
Merge pull request #589 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
fc64d96
Merge pull request #587 from ConductionNL/fix/lock-process-fields
rubenvdlinde Aug 20, 2026
71cb9a0
chore(release): 0.1.141-unstable.20260820223149 [skip ci]
github-actions[bot] Aug 20, 2026
068755c
Merge pull request #590 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
0c1e103
chore(release): 0.1.141-unstable.20260820224848 [skip ci]
github-actions[bot] Aug 20, 2026
aa50152
Merge pull request #592 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
c74a3a9
build(deps-dev): move the whole stylelint family to 17 as one upgrade
rubenvdlinde Aug 20, 2026
4f75670
chore(release): 0.1.141-unstable.20260820231107 [skip ci]
github-actions[bot] Aug 20, 2026
7dd42a7
Merge pull request #594 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
3b98ca4
chore(release): 0.1.141-unstable.20260820233952 [skip ci]
github-actions[bot] Aug 20, 2026
bafaf3c
Merge pull request #595 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 20, 2026
fa4ecea
chore(release): 0.1.141-unstable.20260821000125 [skip ci]
github-actions[bot] Aug 21, 2026
036a897
Merge pull request #593 from ConductionNL/chore/stylelint-17-coupled
rubenvdlinde Aug 21, 2026
95d44cb
Merge pull request #596 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
1ef96a2
chore(release): 0.1.141-unstable.20260821002227 [skip ci]
github-actions[bot] Aug 21, 2026
c3086f4
Merge pull request #598 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
ed1a773
chore(release): 0.1.141-unstable.20260821004639 [skip ci]
github-actions[bot] Aug 21, 2026
0e8550d
Merge pull request #599 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
de3924f
chore(release): 0.1.141-unstable.20260821010037 [skip ci]
github-actions[bot] Aug 21, 2026
36df9fc
Merge pull request #600 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
228c60b
chore(release): 0.1.141-unstable.20260821011425 [skip ci]
github-actions[bot] Aug 21, 2026
4d8f60a
Merge pull request #601 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
003cdf5
chore(release): 0.1.141-unstable.20260821012736 [skip ci]
github-actions[bot] Aug 21, 2026
e20f819
Merge pull request #602 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
231bfe2
chore(release): 0.1.141-unstable.20260821014525 [skip ci]
github-actions[bot] Aug 21, 2026
f736052
Merge pull request #603 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
249246c
chore(release): 0.1.141-unstable.20260821015458 [skip ci]
github-actions[bot] Aug 21, 2026
5719054
Merge pull request #604 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
c33308f
chore(release): 0.1.141-unstable.20260821020326 [skip ci]
github-actions[bot] Aug 21, 2026
2b7ed1a
Merge pull request #605 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
340ed2a
chore(release): 0.1.141-unstable.20260821022249 [skip ci]
github-actions[bot] Aug 21, 2026
bc2dd06
Merge pull request #606 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
7c737b5
chore(release): 0.1.141-unstable.20260821024223 [skip ci]
github-actions[bot] Aug 21, 2026
7316056
Merge pull request #607 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
6933bbb
chore(release): 0.1.141-unstable.20260821025313 [skip ci]
github-actions[bot] Aug 21, 2026
7210a42
Merge pull request #608 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
8569683
chore(release): 0.1.141-unstable.20260821030426 [skip ci]
github-actions[bot] Aug 21, 2026
baf46d3
Merge pull request #609 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
22f0241
chore(release): 0.1.141-unstable.20260821031723 [skip ci]
github-actions[bot] Aug 21, 2026
bbcef2a
Merge pull request #610 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
91062c2
chore(release): 0.1.141-unstable.20260821033058 [skip ci]
github-actions[bot] Aug 21, 2026
3a37cbc
Merge pull request #611 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
c69f4ee
chore(release): 0.1.141-unstable.20260821034217 [skip ci]
github-actions[bot] Aug 21, 2026
98db1e8
Merge pull request #612 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
692b859
chore(release): 0.1.141-unstable.20260821035333 [skip ci]
github-actions[bot] Aug 21, 2026
30f766e
Merge pull request #613 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
c25af32
chore(release): 0.1.141-unstable.20260821040505 [skip ci]
github-actions[bot] Aug 21, 2026
1c649cd
Merge pull request #614 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
5c61693
chore(release): 0.1.141-unstable.20260821041656 [skip ci]
github-actions[bot] Aug 21, 2026
a57e90b
Merge pull request #615 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
4ca2fed
chore(release): 0.1.141-unstable.20260821042832 [skip ci]
github-actions[bot] Aug 21, 2026
60626fe
Merge pull request #616 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
24a0095
chore(release): 0.1.141-unstable.20260821044543 [skip ci]
github-actions[bot] Aug 21, 2026
b5b738e
Merge pull request #617 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
29f588e
chore(release): 0.1.141-unstable.20260821050743 [skip ci]
github-actions[bot] Aug 21, 2026
b40f2b1
Merge pull request #653 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
1c0b9cb
chore(release): 0.1.141-unstable.20260821052417 [skip ci]
github-actions[bot] Aug 21, 2026
bbd7253
Merge pull request #689 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
08ed7cf
chore(release): 0.1.141-unstable.20260821053703 [skip ci]
github-actions[bot] Aug 21, 2026
e847c4c
Merge pull request #690 from ConductionNL/release/v0.1.141-unstable.2…
rubenvdlinde Aug 21, 2026
bcece50
chore(deps): refresh the shared Conduction locks (#692)
rubenvdlinde Aug 21, 2026
3f6beb9
chore(deps): refresh the shared Conduction locks (#694)
rubenvdlinde Aug 21, 2026
646c301
fix(tests): opt into the OpenRegister contract — fixes 130 standalone…
rubenvdlinde Aug 22, 2026
53692a1
chore(quality): migrate to PHPStan 2 — 35 findings to zero, plus a mi…
rubenvdlinde Aug 22, 2026
fe82198
chore(deps): refresh the shared Conduction locks (#706)
rubenvdlinde Aug 22, 2026
b95d4e4
feat: rename the app id from softwarecatalog to stackiq (#708)
rubenvdlinde Aug 23, 2026
95f4c99
feat(docs): move the docs host to the new name, and stop linking to C…
rubenvdlinde Aug 23, 2026
ccd57b3
test(l10n): ratchet the untranslated schema strings (#712)
rubenvdlinde Aug 23, 2026
fd400e1
fix(docs): point the repository CTA at GitHub, not Codeberg (#713)
rubenvdlinde Aug 23, 2026
902385c
Merge pull request #711 from ConductionNL/feat/docs-host-to-stackiq
rubenvdlinde Aug 24, 2026
f2d89f0
fix(docs): point openspec links at GitHub, so the docs site builds (#…
rubenvdlinde Aug 24, 2026
361ca9b
chore(deps): refresh the shared Conduction locks (#719)
rubenvdlinde Aug 24, 2026
2271112
chore(release): 0.1.141-unstable.20260824071410 [skip ci] (#720)
github-actions[bot] Aug 24, 2026
474cc7e
feat(register): rename the register slug voorzieningen -> stackiq (#722)
rubenvdlinde Aug 24, 2026
709ef8b
fix(decidiq): contract delegation was silently off — the event namesp…
rubenvdlinde Aug 24, 2026
9feb3c2
fix(walkthrough): end the tour on a call to action that opens the doc…
rubenvdlinde Aug 24, 2026
df5ce32
fix(docs): publish from development, to the worker that actually serv…
rubenvdlinde Aug 24, 2026
d12374b
docs: repoint stale Codeberg URLs to GitHub (#725)
rubenvdlinde Aug 24, 2026
39a37cb
feat: port issue templates to GitHub Issue Forms (#733)
rubenvdlinde Aug 24, 2026
e183ccf
fix(e2e): the sbom locator matched the name AND the purl (#735)
rubenvdlinde Aug 24, 2026
125536a
chore(release): 0.1.141-unstable.20260824200531 [skip ci] (#737)
github-actions[bot] Aug 24, 2026
ff2abf1
fix(repair): move OpenRegister schemas from softwarecatalog onto the …
rubenvdlinde Aug 24, 2026
66924de
chore(ci): remove dead Forgejo/Codeberg CI configuration (#738)
rubenvdlinde Aug 24, 2026
9ae12cf
fix(docs): pass secrets to the reusable documentation workflow (#732)
rubenvdlinde Aug 24, 2026
8e5f443
fix(lint): let prettier have the last word after eslint --fix (#744)
rubenvdlinde Aug 24, 2026
1e98aa9
chore: remove one-off debug scripts and point-in-time status docs fro…
rubenvdlinde Aug 24, 2026
19739c0
chore(release): 0.1.141-unstable.20260824225921 [skip ci] (#746)
github-actions[bot] Aug 25, 2026
0627596
chore: ignore agent/test scratch and untrack generated files (#747)
rubenvdlinde Aug 26, 2026
eae2ddf
chore(release): 0.1.142-beta.20260820200443 [skip ci] (#581)
github-actions[bot] Aug 26, 2026
e423209
fix(register): repoint 32 dead configuration URLs to GitHub (#748)
rubenvdlinde Aug 26, 2026
85b9aea
chore(release): 0.1.141-unstable.20260826085431 [skip ci] (#749)
github-actions[bot] Aug 26, 2026
3f3c4b2
fix(manifest): drop 2 em-dashes from tour copy (#751)
rubenvdlinde Aug 26, 2026
dca786d
chore(release): 0.1.141-unstable.20260826204537 (#752)
github-actions[bot] Aug 26, 2026
4f5da03
feat(nav): a Flows surface in this app, on the shared page types (#753)
rubenvdlinde Aug 27, 2026
8792525
Release: merge development into beta (drops beta's leftover .forgejo …
Aug 27, 2026
76e0668
Merge pull request #757 from ConductionNL/hotfix/beta-sync-20260827
rubenvdlinde Aug 27, 2026
2b7564a
Release: merge beta into main
rubenvdlinde Aug 30, 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
  •  
  •  
  •  
858 changes: 858 additions & 0 deletions .claude/commands/test.md

Large diffs are not rendered by default.

454 changes: 454 additions & 0 deletions .claude/commands/update.md

Large diffs are not rendered by default.

223 changes: 223 additions & 0 deletions .claude/openspec/architecture/adr-001-data-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
- 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
in OpenRegister's pending `seed-related-items` openspec change (see
`openregister/openspec/changes/seed-related-items/`). Until that lands, 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