Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
525 commits
Select commit Hold shift + click to select a range
2365721
refactor(objects): keep the list query builder within the method leng…
rubenvdlinde Oct 14, 2026
45602db
Merge branch 'feat/draft-owner-activate-and-lifetime' into feat/draft…
rubenvdlinde Oct 14, 2026
f86fcd4
fix(import): a shipped seed object reaches an instance that already h…
rubenvdlinde Oct 14, 2026
151db71
fix(objects): the owner's activation finds a register made in another…
rubenvdlinde Oct 14, 2026
4c7e71e
Merge branch 'feat/draft-owner-activate-and-lifetime' into feat/draft…
rubenvdlinde Oct 14, 2026
1eb62a9
docs(objects): the deferred event job names its spec (gate 16)
rubenvdlinde Oct 14, 2026
70a4f83
feat(example-sets): kept objects follow their references, and fragmen…
rubenvdlinde Oct 14, 2026
8991c9a
Merge pull request #4635 from ConductionNL/fix/seed-objects-follow-th…
rubenvdlinde Oct 15, 2026
3b2e895
Merge pull request #4600 from ConductionNL/feat/draft-owner-activate-…
rubenvdlinde Oct 15, 2026
3473e7a
Merge pull request #4633 from ConductionNL/feat/draft-creation-side-e…
rubenvdlinde Oct 15, 2026
012e1bc
feat(rbac): a special right to manage the grants on a record (#4601)
rubenvdlinde Oct 15, 2026
3080787
feat(lifecycle): a transition input can name its field and offer its …
rubenvdlinde Oct 15, 2026
bc39caf
Merge pull request #4638 from ConductionNL/feat/transition-input-offe…
rubenvdlinde Oct 15, 2026
64146ae
Merge remote-tracking branch 'origin/development' into feat/woo588-mi…
WilcoLouwerse Oct 15, 2026
bafcb3b
Merge pull request #4602 from ConductionNL/feat/woo588-migration-pack…
WilcoLouwerse Oct 15, 2026
f939dca
chore(openspec): archive github-provider-code-search after the live h…
WilcoLouwerse Oct 15, 2026
0ff6ac7
docs(openspec): refusal scenario names the static 403; task 2.4 state…
WilcoLouwerse Oct 15, 2026
624f7de
fix(deps): symfony/yaml 6.4.48 clears CVE-2026-109413 (Hydra gate 4)
WilcoLouwerse Oct 15, 2026
0c61e09
Merge pull request #4643 from ConductionNL/fix/symfony-composer-audit…
WilcoLouwerse Oct 15, 2026
f833403
Merge branch 'development' into chore/archive-woo585-github-changes
WilcoLouwerse Oct 15, 2026
b9e5d8d
Merge pull request #4642 from ConductionNL/chore/archive-woo585-githu…
WilcoLouwerse Oct 15, 2026
5979431
fix(review): #4580 eng-f2 — A required file property can never be sat…
WilcoLouwerse Oct 15, 2026
402a14a
fix(review): #4580 eng-f6 — Review policy fails open for visibility w…
WilcoLouwerse Oct 15, 2026
728c921
fix(review): #4580 data-f1 — Bulk save overwrites another user's draft
WilcoLouwerse Oct 15, 2026
f67de45
fix(review): #4580 plat-f1 — Frozen-file guard ignores writes made th…
WilcoLouwerse Oct 15, 2026
f1f9c1d
fix(review): #4580 plat-f2 — Any admin-UI file-settings save clears t…
WilcoLouwerse Oct 15, 2026
02b9222
fix(review): #4580 plat-f3 — Deferred-chunk limit is 32000, but NC 32…
WilcoLouwerse Oct 15, 2026
227bc52
fix(review): #4580 eng-f1 — Upload endpoint ignores the form's audience
WilcoLouwerse Oct 15, 2026
94854b2
fix(review): #4580 eng-f3 — Idempotency key is neither subject-bound …
WilcoLouwerse Oct 15, 2026
f990f3d
fix(review): #4580 eng-f5 — Draft cleanup deletes without re-checking…
WilcoLouwerse Oct 15, 2026
33f3e3f
fix(review): #4580 eng-f7 — Dependent form reported unpublished when …
WilcoLouwerse Oct 15, 2026
1f4eafb
fix(review): #4580 surf-f6 — Dependent-form re-check runs on one sche…
WilcoLouwerse Oct 15, 2026
03e338e
fix(review): #4580 data-f4 — Forced re-import deletes local authoriza…
WilcoLouwerse Oct 15, 2026
363e607
fix(review): #4580 data-f3 — RBAC draft predicate ignores unhealed _s…
WilcoLouwerse Oct 15, 2026
d4aa263
fix(review): #4580 data-f5 — Aggregation fast path counts drafts the …
WilcoLouwerse Oct 15, 2026
a33e49b
fix(review): #4580 plat-f5 — A later listener's allow() overrides an …
WilcoLouwerse Oct 15, 2026
e19745b
fix(review): #4580 aud-p1 — The "may not let itself in" check ignores…
WilcoLouwerse Oct 15, 2026
d0d2725
fix(review): #4580 aud-p4 — Guard failure imports shipped authorizati…
WilcoLouwerse Oct 15, 2026
5faeef9
fix(review): #4580 surf-f4 — Copies still send users to the removed p…
WilcoLouwerse Oct 15, 2026
4e900c4
fix(review): #4580 surf-f1 — Object GET /logs bypasses the audit-hist…
WilcoLouwerse Oct 15, 2026
c967b2d
fix(review): #4580 eng-f8 — Task wake still overwrites another listen…
WilcoLouwerse Oct 15, 2026
1dfdcd3
fix(review): #4580 eng-f9 — Decision ownership check is skipped in tw…
WilcoLouwerse Oct 15, 2026
09d5d98
fix(review): #4580 eng-f10 — Failure to arm a statutory expiry timer …
WilcoLouwerse Oct 15, 2026
71f4796
fix(review): #4580 plat-f4 — Aborted delete or rename reads as succes…
WilcoLouwerse Oct 15, 2026
224da09
fix(review): #4580 eng-f3 — @spec on FormIdempotencyStore::release
WilcoLouwerse Oct 15, 2026
50bee16
fix(review): #4580 eng-f10 — pre-push: do not rethrow from the listen…
WilcoLouwerse Oct 15, 2026
2d0dbae
fix(review): #4580 data-f1 — pre-push: bulk and single delete keep an…
WilcoLouwerse Oct 15, 2026
c535484
fix(review): #4580 data-f1 — pre-push: draft guard before the appendO…
WilcoLouwerse Oct 15, 2026
fb4be1d
fix(review): #4580 plat-f3 — pre-push: say what an oversized entry loses
WilcoLouwerse Oct 15, 2026
59f9aca
fix(review): #4580 plat-f3 — pre-push: contain a refused webhook job …
WilcoLouwerse Oct 15, 2026
6703ff7
fix(review): #4580 eng-f3 — pre-push: scenario and docs follow the ne…
WilcoLouwerse Oct 15, 2026
9420851
fix(review): #4580 surf-f4 — pre-push: federated-configuration doc sa…
WilcoLouwerse Oct 15, 2026
902c28b
fix(review): #4580 surf-f1 — pre-push: phpcs inline if in logsForReader
WilcoLouwerse Oct 15, 2026
d942f68
fix(review): #4580 data-f1 — pre-push: admins pass the draft guards l…
WilcoLouwerse Oct 15, 2026
5947044
fix(example-sets): a set may require a register OpenRegister ships on…
rubenvdlinde Oct 15, 2026
b637c7c
refactor(example-sets): a mock import is its own method, not a flag
rubenvdlinde Oct 15, 2026
5296caf
feat(relations): read an object's tree along its declared parent prop…
rubenvdlinde Oct 15, 2026
f3759ef
feat(brp): count the people registered at an address object, a number…
rubenvdlinde Oct 15, 2026
4d6fdde
Merge pull request #4658 from ConductionNL/fix/example-set-requires-m…
rubenvdlinde Oct 15, 2026
2f67f25
fix(magic-tables): a property named with an underscore is read as a p…
rubenvdlinde Oct 15, 2026
f28140d
refactor(magic-tables): the column classifier is an instance, and the…
rubenvdlinde Oct 16, 2026
f474f0d
Merge pull request #4661 from ConductionNL/fix/g4-zuiddrecht-r2-findings
rubenvdlinde Oct 16, 2026
d9bbd36
chore(deps): bump zod from 4.6.5 to 4.6.7 (#4630)
dependabot[bot] Oct 16, 2026
1050ca7
chore(deps-dev): bump @playwright/test from 1.63.0 to 1.64.0 (#4627)
dependabot[bot] Oct 16, 2026
7bfc17b
chore(deps): bump smalot/pdfparser from 2.12.5 to 2.13.0 (#4626)
dependabot[bot] Oct 16, 2026
b5f34ac
chore(deps-dev): bump @typescript-eslint/parser from 8.68.0 to 8.71.2…
dependabot[bot] Oct 16, 2026
821dec7
chore(deps): bump vue-material-design-icons from 5.3.1 to 5.4.0 (#4623)
dependabot[bot] Oct 16, 2026
8e7bbd8
chore(deps): bump webonyx/graphql-php from 15.37.3 to 15.38.1 (#4621)
dependabot[bot] Oct 16, 2026
42248e3
fix(l10n): user-settings wording of the VAPID hint in the other 34 lo…
WilcoLouwerse Oct 16, 2026
6d71d17
fix(quality): phpcs line length and phpmd findings in the review fixes
WilcoLouwerse Oct 16, 2026
ca4ddda
test(aggregation): give the SQLite fixtures the _status column the dr…
WilcoLouwerse Oct 16, 2026
db13f88
fix(spec): follow the renamed oauth2-connect requirement in its @spec…
WilcoLouwerse Oct 16, 2026
bb40dac
Merge remote-tracking branch 'origin/development' into local/r2-c
WilcoLouwerse Oct 16, 2026
3a395d8
fix(review): #4580 flow-run — direct-invoke caller config is limited …
WilcoLouwerse Oct 16, 2026
84686f4
fix(review): #4580 r4293205541 — hasPermission() keeps another user's…
WilcoLouwerse Oct 16, 2026
5165a2b
fix(review): #4580 r4293205529 — bulk delete follows the draft delete…
WilcoLouwerse Oct 16, 2026
36a808b
fix(review): #4580 notify — an email recipient reference must name an…
WilcoLouwerse Oct 16, 2026
33891b2
fix(review): #4580 mcp — #[McpTool] annotations may not carry MCP's r…
WilcoLouwerse Oct 16, 2026
8e630d4
fix(review): #4580 tree — redact fields, bound the level read, report…
WilcoLouwerse Oct 16, 2026
7024833
fix(review): #4580 r4293205511 — a form payload's id never picks the …
WilcoLouwerse Oct 16, 2026
e4118ff
fix(review): #4580 example-sets — organisation lookups tell absent fr…
WilcoLouwerse Oct 16, 2026
27a5257
fix(review): #4580 example-sets — the --check text names the register…
WilcoLouwerse Oct 16, 2026
525727d
fix(review): #4580 bulk — a property named like a metadata column nev…
WilcoLouwerse Oct 16, 2026
64de9f6
fix(review): #4580 PRRT_kwDOMnn3ws6tJjuF — a lost race to leave draft…
WilcoLouwerse Oct 16, 2026
3bacf69
fix(review): #4580 r4293205573 — a draft save claims its upload tokens
WilcoLouwerse Oct 16, 2026
a066800
fix(review): #4580 oas — an unresolved roles block reads as grant-not…
WilcoLouwerse Oct 16, 2026
46dad2e
fix(review): #4580 example-sets — remove leaves a changed path the us…
WilcoLouwerse Oct 16, 2026
28efb9b
fix(review): #4580 brp — the resident-count constants no longer split…
WilcoLouwerse Oct 16, 2026
109b451
fix(review): #4580 example-sets — a change or lookup that more than o…
WilcoLouwerse Oct 16, 2026
faf5b45
fix(review): #4580 r4293205583 — a required generated identifier no l…
WilcoLouwerse Oct 16, 2026
31bed1f
fix(review): #4580 brp — a connector without withholdBodies answers i…
WilcoLouwerse Oct 16, 2026
cc7a089
fix(review): #4580 example-sets — remove keeps a generated app-config…
WilcoLouwerse Oct 16, 2026
ca62179
fix(review): #4580 files — the object-folder endpoints refuse a froze…
WilcoLouwerse Oct 16, 2026
6981f68
fix(review): #4580 example-sets — a failed read of an object is not r…
WilcoLouwerse Oct 16, 2026
180bee9
fix(review): #4580 example-sets — a reinstall no longer reverts a use…
WilcoLouwerse Oct 16, 2026
e61ed6c
fix(review): #4580 r4293205561 — draft expiry reads expired drafts on…
WilcoLouwerse Oct 16, 2026
8516405
fix(review): #4580 r4293205599 — draft sweep counts are logged where …
WilcoLouwerse Oct 16, 2026
82af93a
fix(review): #4580 files — a delete that did not happen is not report…
WilcoLouwerse Oct 16, 2026
1d3d763
fix(review): #4580 example-sets — a second install after remove impor…
WilcoLouwerse Oct 16, 2026
644f54f
fix(review): #4580 files — the frozen-node listener fetches MagicMapp…
WilcoLouwerse Oct 16, 2026
81d7013
fix(review): #4580 r4293206025 — RESTRICT by key compares the column …
WilcoLouwerse Oct 16, 2026
6974d6b
fix(review): #4580 audit — a reader's history does not name the objec…
WilcoLouwerse Oct 16, 2026
fe7d323
test(review): #4580 export — pin that a retention of a negative, a fr…
WilcoLouwerse Oct 16, 2026
8d6d4c2
fix(review): #4580 r4293206108 — draft activation answers through the…
WilcoLouwerse Oct 16, 2026
1849429
fix(review): #4580 descriptors — a core descriptor re-imports under i…
WilcoLouwerse Oct 16, 2026
bbf1177
fix(review): #4580 example-sets — the install record is a lazy app-co…
WilcoLouwerse Oct 16, 2026
db811d1
fix(review): #4580 PRRT_kwDOMnn3ws6s1TTJ — only a trusted save sets a…
WilcoLouwerse Oct 16, 2026
a253d03
fix(review): #4580 tasks — blockedBy cannot name a task the caller ma…
WilcoLouwerse Oct 16, 2026
0446859
fix(review): #4580 case — an advance-a-case step moves the live reali…
WilcoLouwerse Oct 16, 2026
a915674
fix(review): #4580 PRRT_kwDOMnn3ws6s1TU2 — upload purge deletes bytes…
WilcoLouwerse Oct 16, 2026
1d661f8
fix(review): #4580 case — a case step about another object is not anc…
WilcoLouwerse Oct 16, 2026
bbd45cc
fix(review): #4580 schemas — the validator and the delete read refere…
WilcoLouwerse Oct 16, 2026
6c1d727
fix(review): #4580 tasks — a blocked portal task is not listed, shown…
WilcoLouwerse Oct 16, 2026
b99707c
fix(review): #4580 case — a statutory expiry timer that could not be …
WilcoLouwerse Oct 16, 2026
f60ea88
fix(review): #4580 case — a run realised for a system-created plan is…
WilcoLouwerse Oct 16, 2026
e015b87
fix(review): #4580 calculation — bandRate checks the schedule at a un…
WilcoLouwerse Oct 16, 2026
eb49f48
fix(review): #4580 search — an empty own property no longer fills a d…
WilcoLouwerse Oct 16, 2026
b91e88c
feat(review): #4580 rbac — grants, revokes, owning-group changes and …
WilcoLouwerse Oct 16, 2026
cca4981
fix(review): #4580 decision tables — a duplicate key that cannot be c…
WilcoLouwerse Oct 16, 2026
39a120c
fix(review): #4580 decisions — a hidden decision no longer shows thro…
WilcoLouwerse Oct 16, 2026
c688c7b
fix(review): #4580 forms — a schema written by anything but the schem…
WilcoLouwerse Oct 16, 2026
b49f89a
fix(review): #4580 import — a shipped seed update is compared with th…
WilcoLouwerse Oct 16, 2026
7f73f0b
test(review): #4580 integration — document the logger argument of the…
WilcoLouwerse Oct 16, 2026
659d812
fix(quality): phpcs findings in the review fixes (loose comparison, l…
WilcoLouwerse Oct 16, 2026
aba34de
fix(review): #4580 migration packs — validator, mapping engine and re…
WilcoLouwerse Oct 16, 2026
ada9380
fix(review): #4580 migration packs — an import that replaced a stored…
WilcoLouwerse Oct 16, 2026
0cf98d3
fix(quality): phpmd and phpcs findings in the round 2 draft fixes
WilcoLouwerse Oct 16, 2026
c2fdfe9
fix(quality): phpmd findings in the review fixes
WilcoLouwerse Oct 16, 2026
13779eb
fix(review): #4580 descriptors panel — Re-import confirms first and s…
WilcoLouwerse Oct 16, 2026
dc9cc54
docs(changelog): #4580 the upgrade-visible behaviour changes of this …
WilcoLouwerse Oct 16, 2026
44c41fd
fix(review): #4580 quality — phpmd findings of the round-2 fixes
WilcoLouwerse Oct 16, 2026
d9a9d71
merge: review round 2, slice a
WilcoLouwerse Oct 16, 2026
77c6a8e
merge: review round 2, slice b
WilcoLouwerse Oct 16, 2026
0656dad
merge: review round 2, slice c
WilcoLouwerse Oct 16, 2026
857ce29
docs(changelog): the referenced-address notification needs a $ref on …
WilcoLouwerse Oct 16, 2026
9bc354f
docs(spec): @spec on CallSignature::accepts and ReferenceKey::keyOf
WilcoLouwerse Oct 16, 2026
87fe992
merge: review round 2, slice b (rest)
WilcoLouwerse Oct 16, 2026
5d0de50
fix(review): #4580 round 2 — the re-import question is its own dialog…
WilcoLouwerse Oct 16, 2026
130f283
test(import): give ImportServiceTest's MappingEngine the app's transl…
WilcoLouwerse Oct 16, 2026
1c6b6df
feat(search): filter on a field inside an object property (#4670)
rubenvdlinde Oct 16, 2026
af6c6ae
wip: flow step start times and log lines (L30)
rubenvdlinde Oct 16, 2026
d3e458a
feat(flow-runs): per-flow run summary, and since/flowIds on the run h…
rubenvdlinde Oct 17, 2026
1cc0105
Merge remote-tracking branch 'origin/development' into feat/flow-step…
rubenvdlinde Oct 17, 2026
32d58ff
fix: named moment parameter, phpcs header on the engine test (L30)
rubenvdlinde Oct 17, 2026
2c4277c
feat(organisations): report measured usage, null for what cannot be m…
rubenvdlinde Oct 17, 2026
8b5244a
test(organisations): name the arguments and document the usage tests
rubenvdlinde Oct 17, 2026
e1628c0
test(organisations): clear the new phpcs findings and tag the usage h…
rubenvdlinde Oct 17, 2026
41e7b34
Merge pull request #4674 from ConductionNL/feat/flow-step-log-lines
rubenvdlinde Oct 17, 2026
1700c01
refactor(organisations): note why the controller constructor takes te…
rubenvdlinde Oct 17, 2026
1f2b1f9
feat(search): _referenced filters objects by a field of the row their…
rubenvdlinde Oct 17, 2026
e890dcd
Merge pull request #4676 from ConductionNL/feat/organisation-usage-me…
rubenvdlinde Oct 17, 2026
e89e8e4
Merge pull request #4678 from ConductionNL/feat/referenced-row-filter
rubenvdlinde Oct 17, 2026
54eee99
fix(aggregation): filters accept IS NULL, IS NOT NULL and [isnull], a…
rubenvdlinde Oct 17, 2026
395eeb9
Merge pull request #4680 from ConductionNL/fix/aggregation-isnull-filter
rubenvdlinde Oct 17, 2026
1127e8a
fix(query): a _referenced or _related filter on a schema without a ta…
rubenvdlinde Oct 18, 2026
171043e
fix(query): related-row filters use the table prefix (#4684)
rubenvdlinde Oct 18, 2026
4127f93
fix(views): an alert names only recipients the saver may name (#4685)
rubenvdlinde Oct 18, 2026
55f2f5e
fix(files): internal object tags are hidden and not assignable
rubenvdlinde Oct 19, 2026
c71e53e
Merge pull request #4687 from ConductionNL/fix/internal-object-tags-h…
rubenvdlinde Oct 19, 2026
07b7955
fix(review): #4669 tree-f1, tree-f7 — skip keys that sanitise to a me…
WilcoLouwerse Oct 19, 2026
6554502
fix(review): #4669 case-f1 — a failed expiry enforcement keeps its ma…
WilcoLouwerse Oct 19, 2026
1f5476b
fix(review): #4669 tree-f2 — an exhausted cap with unread children an…
WilcoLouwerse Oct 19, 2026
5bdfeef
fix(review): #4669 A0 — the citing table was quoted twice, so every r…
WilcoLouwerse Oct 19, 2026
a1d8c36
fix(review): #4669 tree-f3 — audit public link and e-mail invitation …
WilcoLouwerse Oct 19, 2026
98c0d49
fix(review): #4669 case-f2, case-f3 — a case run without a caller act…
WilcoLouwerse Oct 19, 2026
f601b46
fix(review): #4669 drafts-f1 — a bulk row naming two identities is re…
WilcoLouwerse Oct 19, 2026
a2853bb
fix(review): #4669 case-f4 — the notifier resolves a property's $ref …
WilcoLouwerse Oct 19, 2026
6c4f547
fix(review): #4669 tree-f4 — graph doelbinding is enforced per schema…
WilcoLouwerse Oct 19, 2026
11795b3
fix(review): #4669 tree-f5 — BrowserNotificationsSection comment says…
WilcoLouwerse Oct 19, 2026
f0de02c
fix(review): #4669 tree-f6 — the reader's logs route passes filters a…
WilcoLouwerse Oct 19, 2026
8a249df
fix(review): #4669 case-f5 — unarmed-timer markers are one key per it…
WilcoLouwerse Oct 19, 2026
30d458b
fix(review): #4669 tree-f8 — proposal states the runtime job limit; d…
WilcoLouwerse Oct 19, 2026
ed49e27
fix(review): #4669 drafts-f4, drafts-f5 — one caller rule for every e…
WilcoLouwerse Oct 19, 2026
ceefaf1
test(review): #4669 tree-f4 — cover ObjectReadAccess::schemaById
WilcoLouwerse Oct 19, 2026
baf1ec5
fix(review): #4669 case-f6, case-f7 — a resumed ensure marks existing…
WilcoLouwerse Oct 19, 2026
413f5cb
style(review): #4669 tree-f4 — no inline if
WilcoLouwerse Oct 19, 2026
5b2f7e8
fix(review): #4669 drafts-f2 — GET uses leaves out a draft the caller…
WilcoLouwerse Oct 19, 2026
34aed3c
fix(review): #4669 case-f8 — a signal never overwrites a key already …
WilcoLouwerse Oct 19, 2026
5dd23cf
fix(review): #4669 case-f9 — reverting an example-set change tells an…
WilcoLouwerse Oct 19, 2026
9d3416a
fix(review): #4669 drafts-f3, drafts-f7 — nested cascade ids dropped;…
WilcoLouwerse Oct 19, 2026
0090e2c
fix(review): #4669 drafts-f10 — say once that key reservation is a no…
WilcoLouwerse Oct 19, 2026
09ee2d4
fix(review): #4669 case-f10 — a file whose owner cannot be establishe…
WilcoLouwerse Oct 19, 2026
098975e
docs(review): #4669 drafts-f8 — the 20 MiB default upload cap, claime…
WilcoLouwerse Oct 19, 2026
d48c418
fix(review): #4669 drafts-f9 — a render failure after the activation …
WilcoLouwerse Oct 19, 2026
3298eb8
fix(review): #4669 case-f11 — the decision-table save rules also run …
WilcoLouwerse Oct 19, 2026
b5608d2
refactor(review): #4669 tree-f4 — split the graph reachability walk f…
WilcoLouwerse Oct 19, 2026
a031dbb
fix(review): #4669 drafts-f6 — leaving draft is a compare-and-swap in…
WilcoLouwerse Oct 19, 2026
8249ff2
fix(review): #4669 case-f12 — refuse an e-mail recipient path through…
WilcoLouwerse Oct 19, 2026
bdfbc3f
test(review): #4669 — ReferenceKey has a unit test
WilcoLouwerse Oct 19, 2026
ed74d5d
docs(review): #4669 case-f13, case-f14 — the import job comes from th…
WilcoLouwerse Oct 19, 2026
6af06a8
test(review): #4669 case-f15 — pin all eight descriptor config ids an…
WilcoLouwerse Oct 19, 2026
ad9d0fa
docs(review): #4669 case-f16 — say that only a development instance c…
WilcoLouwerse Oct 19, 2026
8c09cf2
style(review): #4669 — phpcs fixes for slice A
WilcoLouwerse Oct 19, 2026
4efe0f6
fix(review): #4669 case-f17 — a reference refresh keeps the fields an…
WilcoLouwerse Oct 19, 2026
7e09173
perf(review): #4669 case-f18 — the seed version ledger is written onc…
WilcoLouwerse Oct 19, 2026
e96b8ca
style(review): #4669 prettier — format the three files the format che…
WilcoLouwerse Oct 19, 2026
c9c06a6
style(review): #4669 phpcs — line length, inline-if and docblock find…
WilcoLouwerse Oct 19, 2026
7a98431
refactor(review): #4669 — keep slice A's new code inside the phpmd li…
WilcoLouwerse Oct 19, 2026
0332b9d
style(review): #4669 phpmd — no static access, flag argument or compl…
WilcoLouwerse Oct 19, 2026
3dbcdb0
style(review): #4669 phpmd — keep ExampleSetChanges under the class c…
WilcoLouwerse Oct 19, 2026
a1f2c95
merge: review round 3 on #4669, slice a
WilcoLouwerse Oct 19, 2026
b1f3fbe
merge: review round 3 on #4669, slice b
WilcoLouwerse Oct 19, 2026
00e82ea
merge: review round 3 on #4669, slice c
WilcoLouwerse Oct 19, 2026
f668db8
docs(spec): @spec on the round-3 helpers and the audited sharing paths
WilcoLouwerse Oct 19, 2026
9dc64f3
fix(review): #4669 pp-f1 — only the write that leaves draft is condit…
WilcoLouwerse Oct 19, 2026
d205bfa
fix(review): #4669 pp-f2 — the graph CSV export is narrowed by the sa…
WilcoLouwerse Oct 19, 2026
da8cfa0
fix(review): #4669 pp-f3 — a referencing lookup that fails refuses th…
WilcoLouwerse Oct 19, 2026
ca2e5ee
docs(changelog): a bulk row that names two identities is refused (pp-f5)
WilcoLouwerse Oct 19, 2026
49fb6f6
docs(changelog): graph CSV export narrowing and RFC 4180 escaping; a …
WilcoLouwerse Oct 19, 2026
4546fa0
Merge remote-tracking branch 'origin/development' into review/pr-4580…
WilcoLouwerse Oct 19, 2026
46f33f1
fix(views): only the owner or an administrator deletes a saved view
rubenvdlinde Oct 19, 2026
2fd5d58
fix(search): name why isNullOperatorAsksForNull calls NullFilter stat…
WilcoLouwerse Oct 19, 2026
cb34b2c
docs(openspec): saved-view-user-shares, share a saved view with users
rubenvdlinde Oct 19, 2026
11726b8
Merge pull request #4689 from ConductionNL/fix/saved-view-delete-owne…
rubenvdlinde Oct 19, 2026
e11d894
feat(views): share a saved view with users
rubenvdlinde Oct 19, 2026
b3f5d26
fix(review): #4669 the decision-table bulk guard resolves its listene…
WilcoLouwerse Oct 19, 2026
fe901bf
fix(review): #4669 type the graph's edges and nodes before filtering …
WilcoLouwerse Oct 19, 2026
4bce10c
style(review): #4669 a typed rowsIn() helper instead of inline doc bl…
WilcoLouwerse Oct 19, 2026
7dc4b16
Merge remote-tracking branch 'origin/development' into review/pr-4580…
WilcoLouwerse Oct 19, 2026
f4c3e4a
fix(views): hand the session's reach to ViewService::delete() as a na…
WilcoLouwerse Oct 19, 2026
40e75fc
Merge pull request #4693 from ConductionNL/spec/saved-view-user-shares
rubenvdlinde Oct 19, 2026
aea8d5d
style(views): keep ViewsController under phpmd's class-length limit
WilcoLouwerse Oct 19, 2026
92e41b8
test(review): #4669 name the classes the tests run as @uses, so their…
WilcoLouwerse Oct 19, 2026
1bfc9b8
test(review): #4669 also name the @uses of every risky test that cove…
WilcoLouwerse Oct 19, 2026
e07092e
Merge pull request #4669 from ConductionNL/review/pr-4580-fixes-r2
WilcoLouwerse Oct 19, 2026
98b1701
fix(review): #4580 rel-f1 — Related-row filters ignore property-level…
WilcoLouwerse Oct 19, 2026
996b7a0
fix(review): #4580 rel-f2 — Related-row subquery has no organisation …
WilcoLouwerse Oct 19, 2026
4909fa1
fix(review): #4580 rel-f7 — Related-row condition field is not checke…
WilcoLouwerse Oct 19, 2026
8b8683a
fix(review): #4580 rel-f3 — _referenced/_related are dropped on the c…
WilcoLouwerse Oct 19, 2026
68295b1
fix(review): #4580 rel-f4 — Alert recipients are judged at save only,…
WilcoLouwerse Oct 19, 2026
c2af883
fix(review): #4580 rel-f5 — `since` with a UTC offset is read as wall…
WilcoLouwerse Oct 19, 2026
7f3bf8c
fix(review): #4580 rel-f6 — Storage usage silently under-reports when…
WilcoLouwerse Oct 19, 2026
1f3566b
fix(review): #4580 rel-f8 — Nested-path segment regex accepts a trail…
WilcoLouwerse Oct 19, 2026
35944cf
fix(review): #4580 rel-f9 — Step log line message length is not bounded
WilcoLouwerse Oct 19, 2026
e868c0b
fix(review): #4580 rel-f10 — Existing object:<uuid> tags stay visible…
WilcoLouwerse Oct 19, 2026
87b2716
refactor(review): #4580 keep the review fixes inside the PHPMD limits
WilcoLouwerse Oct 19, 2026
d5e39b1
fix(review): #4580 rel-f2 — pre-push: no new phpmd baseline entry for…
WilcoLouwerse Oct 19, 2026
62f03f1
fix(review): #4580 rel-f3 — pre-push: a cross-table search with _rela…
WilcoLouwerse Oct 19, 2026
13b0f04
fix(review): #4580 rel-f7 — pre-push: related-row column names get th…
WilcoLouwerse Oct 19, 2026
58bbec0
fix(review): #4580 rel-f2 — pre-push: test organisationScopeForRelate…
WilcoLouwerse Oct 19, 2026
a1c270e
fix(review): #4580 rel-f3 — pre-push: a multi-schema facet request wi…
WilcoLouwerse Oct 19, 2026
2caeaf5
fix(objects): persist @self.schemaVersion instead of writing NULL on …
rubenvdlinde Oct 19, 2026
75077af
feat(search): an orNull modifier admits rows whose field is empty (#4…
rubenvdlinde Oct 19, 2026
c719726
feat(objects): @self.lastUserActivity records when a person last wrot…
rubenvdlinde Oct 19, 2026
271c693
Merge branch 'development' into review/pr-4580-fixes-r3
WilcoLouwerse Oct 19, 2026
c21d7fc
test(review): #4580 rel-f1 — the orNull tests let the caller read the…
WilcoLouwerse Oct 19, 2026
ceacdc8
Merge pull request #4696 from ConductionNL/review/pr-4580-fixes-r3
WilcoLouwerse Oct 19, 2026
b12ef29
perf(facets): name UUID buckets with one lookup per facet (#4703)
rubenvdlinde Oct 20, 2026
6c025c4
fix(review): #4580 union-path referenceType skip is tested and judged…
WilcoLouwerse Oct 20, 2026
0943fb8
Merge pull request #4710 from ConductionNL/review/pr-4580-fixes-r4
WilcoLouwerse Oct 20, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .procedure-code-baseline.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"count": 0}
20 changes: 20 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

22 changes: 20 additions & 2 deletions appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Open Register drijft apps zoals OpenCatalogi, Procest, Pipelinq en Software Cata

Vrij en open source onder de EUPL-licentie.
]]></description>
<version>2.1.35-unstable.20261009130000</version>
<version>2.1.35-unstable.20261012153000</version>
<licence>EUPL-1.2</licence>
<author mail="info@conduction.nl" homepage="https://www.conduction.nl/">Conduction</author>
<namespace>OpenRegister</namespace>
Expand Down Expand Up @@ -131,6 +131,7 @@ Vrij en open source onder de EUPL-licentie.

<background-jobs>
<job>OCA\OpenRegister\BackgroundJob\LogCleanUpTask</job>
<job>OCA\OpenRegister\BackgroundJob\FormUploadPurgeJob</job>
<job>OCA\OpenRegister\BackgroundJob\RecomputeTimersForCalendarJob</job>
<job>OCA\OpenRegister\BackgroundJob\StateHistoryRebuildJob</job>
<job>OCA\OpenRegister\BackgroundJob\ViewAlertSweepJob</job>
Expand Down Expand Up @@ -181,13 +182,21 @@ Vrij en open source onder de EUPL-licentie.
<job>OCA\OpenRegister\BackgroundJob\FlowRunWorker</job>
<job>OCA\OpenRegister\BackgroundJob\FlowScheduleWorker</job>
<job>OCA\OpenRegister\BackgroundJob\FlowTimerWorker</job>
<job>OCA\OpenRegister\BackgroundJob\CasePlanTimerRearmJob</job>
<job>OCA\OpenRegister\BackgroundJob\HandoffQueueDrainJob</job>
<job>OCA\OpenRegister\BackgroundJob\TemporalCalculationSweepJob</job>
<job>OCA\OpenRegister\BackgroundJob\DsarDpiaDetectionJob</job>
<job>OCA\OpenRegister\BackgroundJob\DbalIntrospectionJob</job>
<job>OCA\OpenRegister\BackgroundJob\OAuth2TokenRefreshJob</job>
<job>OCA\OpenRegister\BackgroundJob\ScheduledReportJob</job>
<job>OCA\OpenRegister\BackgroundJob\GroupReconcilerJob</job>
<!--
Removes the drafts that outlived their schema's draft lifetime:
30 days, or what the configuration key draftLifetimeDays says
(decisions 216 and 228). Without this line the lifetime is
stored and never acted on.
-->
<job>OCA\OpenRegister\BackgroundJob\DraftExpiryJob</job>
</background-jobs>

<repair-steps>
Expand Down Expand Up @@ -273,6 +282,7 @@ Vrij en open source onder de EUPL-licentie.
and a reversal that has nothing to read. -->
<step>OCA\OpenRegister\Repair\ImportMergeOperationRegister</step>
<step>OCA\OpenRegister\Repair\ImportDismissedPairRegister</step>
<step>OCA\OpenRegister\Repair\ImportDecisionTableRegister</step>
<!-- ONE STORE PER FLOW. Flows lived in two places — this table and
objects in the `flows` register — and every subsystem reads the
table. Measured with controls: the same definition fires and
Expand Down Expand Up @@ -450,6 +460,7 @@ Vrij en open source onder de EUPL-licentie.
and a reversal that has nothing to read. -->
<step>OCA\OpenRegister\Repair\ImportMergeOperationRegister</step>
<step>OCA\OpenRegister\Repair\ImportDismissedPairRegister</step>
<step>OCA\OpenRegister\Repair\ImportDecisionTableRegister</step>
<!-- ONE STORE PER FLOW. Flows lived in two places — this table and
objects in the `flows` register — and every subsystem reads the
table. Measured with controls: the same definition fires and
Expand Down Expand Up @@ -509,19 +520,26 @@ Vrij en open source onder de EUPL-licentie.
<command>OCA\OpenRegister\Command\DedupeConfigurationsCommand</command>
<command>OCA\OpenRegister\Command\ResolverListCommand</command>
<command>OCA\OpenRegister\Command\TimeReconcileCommand</command>
<!-- Read-only: how many drafts the daily draft cleanup would remove per
schema. For a look before the first run after an upgrade (decision 228). -->
<command>OCA\OpenRegister\Command\DraftsExpiredCommand</command>
<!-- Web Push VAPID keypair generation (openregister-web-push-engine). Light DI graph (IAppConfig only). -->
<command>OCA\OpenRegister\Command\GenerateVapidKeys</command>
<!-- Reconcile the `tables` virtual register with the Nextcloud Tables app. -->
<command>OCA\OpenRegister\Command\TablesSyncCommand</command>
<!-- Batched Context Chat backfill for opted-in, published objects. -->
<command>OCA\OpenRegister\Command\ContextChatReindexCommand</command>
<!-- Story example sets: one cast, a fragment per app (example-sets). The
store fetches ObjectService lazily, so the DI graph stays light. -->
<command>OCA\OpenRegister\Command\ExampleSetInstallCommand</command>
<command>OCA\OpenRegister\Command\ExampleSetRemoveCommand</command>
<command>OCA\OpenRegister\Command\ExampleSetListCommand</command>
</commands>

<settings>
<admin>OCA\OpenRegister\Settings\OpenRegisterAdmin</admin>
<admin>OCA\OpenRegister\Settings\IntegrationsAdminSettings</admin>
<admin-section>OCA\OpenRegister\Sections\OpenRegisterAdmin</admin-section>
<personal>OCA\OpenRegister\Settings\OpenRegisterPersonal</personal>
</settings>

<!-- The notifier is registered in PHP:
Expand Down
26 changes: 25 additions & 1 deletion appinfo/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,12 @@
['name' => 'objectOwnership#setOwnerGroup', 'url' => '/api/objects/{register}/{schema}/{id}/ownership/group', 'verb' => 'PUT', 'requirements' => ['register' => '[^/]+', 'schema' => '[^/]+', 'id' => '[^/]+']],
['name' => 'objectOwnership#reassign', 'url' => '/api/ownership/reassign', 'verb' => 'POST'],

// A draft's owner makes it definitive (decision 216). An explicit action:
// a PUT or PATCH that sets `@self.status` to `active` stays refused, so
// nothing leaves draft by accident. A plain Controller, so a refusal
// keeps its status (OCSMiddleware would turn a 403 into a 200).
['name' => 'objectDraft#activate', 'url' => '/api/objects/{register}/{schema}/{id}/activate', 'verb' => 'POST', 'requirements' => ['register' => '[^/]+', 'schema' => '[^/]+', 'id' => '[^/]+']],

// Who holds which right on one object, and how that set changed. The
// other direction of `/api/scopes`: that one answers a caller about
// themselves, these answer an auditor about everybody. Reading the
Expand Down Expand Up @@ -1193,6 +1199,11 @@
['name' => 'objects#geocode', 'url' => '/api/geo/geocode', 'verb' => 'GET'],

['name' => 'objects#create', 'url' => '/api/objects/{register}/{schema}', 'verb' => 'POST'],
// Decision 179 (ADR-117): a form submits into its destination object.
['name' => 'forms#validate', 'url' => '/api/forms/validate', 'verb' => 'POST'],
['name' => 'forms#submit', 'url' => '/api/forms/{formId}/submit', 'verb' => 'POST'],
['name' => 'forms#upload', 'url' => '/api/forms/{formId}/uploads', 'verb' => 'POST'],
['name' => 'forms#draft', 'url' => '/api/forms/{formId}/draft', 'verb' => 'POST'],
['name' => 'objects#export', 'url' => '/api/objects/{register}/{schema}/export', 'verb' => 'GET'],
// BEFORE objects#show, because `{id}` matches `[^/]+` and a route with
// a longer path must be declared first or the generic one swallows it.
Expand Down Expand Up @@ -1238,6 +1249,7 @@
['name' => 'objectRelations#removeReferences', 'url' => '/api/objects/{register}/{schema}/{id}/relation-references/{anchor}', 'verb' => 'DELETE', 'requirements' => ['id' => '[^/]+', 'anchor' => '[^/]+']],
['name' => 'objectRelations#derive', 'url' => '/api/objects/{register}/{schema}/{id}/derive', 'verb' => 'POST', 'requirements' => ['id' => '[^/]+']],
['name' => 'objectRelations#graph', 'url' => '/api/objects/{register}/{schema}/{id}/graph', 'verb' => 'GET', 'requirements' => ['id' => '[^/]+']],
['name' => 'objectRelations#tree', 'url' => '/api/objects/{register}/{schema}/{id}/tree', 'verb' => 'GET', 'requirements' => ['id' => '[^/]+']],
['name' => 'objectRelations#exportGraph', 'url' => '/api/objects/{register}/{schema}/{id}/graph/export', 'verb' => 'GET', 'requirements' => ['id' => '[^/]+']],
// Locks.
// Whether a row exists in other registers, and nothing about the
Expand Down Expand Up @@ -1837,6 +1849,13 @@
['name' => 'views#update', 'url' => '/api/views/{id}', 'verb' => 'PUT', 'requirements' => ['id' => '[^/]+']],
['name' => 'views#patch', 'url' => '/api/views/{id}', 'verb' => 'PATCH', 'requirements' => ['id' => '[^/]+']],
['name' => 'views#destroy', 'url' => '/api/views/{id}', 'verb' => 'DELETE', 'requirements' => ['id' => '[^/]+']],
// Record templates (records-saved-templates D-4): named values for a new record, shared like a view.
['name' => 'recordTemplates#index', 'url' => '/api/record-templates', 'verb' => 'GET'],
['name' => 'recordTemplates#show', 'url' => '/api/record-templates/{id}', 'verb' => 'GET', 'requirements' => ['id' => '[^/]+']],
['name' => 'recordTemplates#create', 'url' => '/api/record-templates', 'verb' => 'POST'],
['name' => 'recordTemplates#update', 'url' => '/api/record-templates/{id}', 'verb' => 'PUT', 'requirements' => ['id' => '[^/]+']],
['name' => 'recordTemplates#patch', 'url' => '/api/record-templates/{id}', 'verb' => 'PATCH', 'requirements' => ['id' => '[^/]+']],
['name' => 'recordTemplates#destroy', 'url' => '/api/record-templates/{id}', 'verb' => 'DELETE', 'requirements' => ['id' => '[^/]+']],
// Read-only presentation data — drag-to-move goes through the existing
// guarded object PATCH/PUT (/api/objects/{register}/{schema}/{id}), never
// a bespoke endpoint here (REQ-VIEW-KANBAN-03).
Expand Down Expand Up @@ -2011,12 +2030,14 @@
// Migration mapping packs (migration-mapping-packs): declarative
// source-format-to-schema import mappings. Reads (index/show/export)
// are available to any authenticated user so the import flow can
// browse packs; create/update/destroy/import are admin-gated. The
// browse packs; create/update/destroy/import and the preview dry run
// are admin-gated and CSRF-protected. The
// `packId` request param on registers#import (below) resolves a
// pack by its `packSlug` and runs each row through it before save.
['name' => 'migrationPacks#index', 'url' => '/api/migration-packs', 'verb' => 'GET'],
['name' => 'migrationPacks#create', 'url' => '/api/migration-packs', 'verb' => 'POST'],
['name' => 'migrationPacks#import', 'url' => '/api/migration-packs/import', 'verb' => 'POST'],
['name' => 'migrationPacks#preview', 'url' => '/api/migration-packs/preview', 'verb' => 'POST'],
['name' => 'migrationPacks#show', 'url' => '/api/migration-packs/{id}', 'verb' => 'GET', 'requirements' => ['id' => '\d+']],
['name' => 'migrationPacks#update', 'url' => '/api/migration-packs/{id}', 'verb' => 'PUT', 'requirements' => ['id' => '\d+']],
['name' => 'migrationPacks#destroy', 'url' => '/api/migration-packs/{id}', 'verb' => 'DELETE', 'requirements' => ['id' => '\d+']],
Expand Down Expand Up @@ -2123,6 +2144,9 @@
// organisation-scoped like `active`. Same ordering rule: it MUST stay above
// the `{uuid}` route or `show('completed')` answers it with a 404.
['name' => 'flowRun#completedForSubject', 'url' => '/api/flow-runs/completed', 'verb' => 'GET'],
// Per flow: newest run and runs since a moment (flow-run-summary). Same
// ordering rule: above `{uuid}`, or `show('summary')` answers with a 404.
['name' => 'flowRun#summary', 'url' => '/api/flow-runs/summary', 'verb' => 'GET'],
['name' => 'flowRun#show', 'url' => '/api/flow-runs/{uuid}', 'verb' => 'GET', 'requirements' => ['uuid' => '[^/]+']],
['name' => 'flowRun#objects', 'url' => '/api/flow-runs/{uuid}/objects', 'verb' => 'GET', 'requirements' => ['uuid' => '[^/]+']],
['name' => 'flowRun#retry', 'url' => '/api/flow-runs/{uuid}/retry', 'verb' => 'POST', 'requirements' => ['uuid' => '[^/]+']],
Expand Down
46 changes: 23 additions & 23 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions docs/Features/organisations.md
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,7 @@ Beyond CRUD operations, special rights grant additional capabilities:
| **agent_use** | Use AI agents for processing and analysis | 'ai-user', 'developer', 'admin' |
| **dashboard_view** | Access organisation dashboard and analytics | 'manager', 'admin', 'analyst' |
| **llm_use** | Use Large Language Model features | 'ai-user', 'researcher', 'admin' |
| **grant_manage** | List, add and remove the grants on records the holder does not own, and name their owning group. Enforced. An entry can be narrowed to a register and schemas. Only an administrator or the organisation's owner assigns it. | a service account's group |

### Permission Check Example

Expand Down
Loading
Loading