Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
230 commits
Select commit Hold shift + click to select a range
584f0ed
chore(release): 0.2.3-unstable.20260912202721
github-actions[bot] Sep 12, 2026
d8f63b3
Merge pull request #1025 from ConductionNL/release/v0.2.3-unstable.20…
rubenvdlinde Sep 13, 2026
e7b8cd7
chore(sync): carry beta back into development
github-actions[bot] Sep 13, 2026
e78ec44
Merge pull request #1029 from ConductionNL/sync/beta-to-development-2…
rubenvdlinde Sep 13, 2026
a8a66d0
feat(integrations): show stackiq's connections through integriq's reg…
rubenvdlinde Sep 14, 2026
7828663
fix(tests): format the connection-registry files and read info.xml as…
rubenvdlinde Sep 16, 2026
60142ce
fix(tests): initialise connectionReports on the reflection-built cont…
rubenvdlinde Sep 16, 2026
45f4d2a
fix(schemas): drop a stray licence key so the module schema imports a…
rubenvdlinde Sep 16, 2026
f66ddcf
feat(connections): federation and EOL sync read Switched off, and the…
rubenvdlinde Sep 16, 2026
07352a4
fix(e2e): find connection rows by their cell, not by an anchored row …
rubenvdlinde Sep 16, 2026
24ebea1
chore(deps-dev): bump eslint from 10.9.1 to 10.10.0 (#1047)
dependabot[bot] Sep 18, 2026
f5f9e30
chore(deps): bump zod from 4.5.4 to 4.6.5 (#1046)
dependabot[bot] Sep 18, 2026
6aa6292
chore(deps): bump gridstack from 13.2.0 to 13.3.0 (#1045)
dependabot[bot] Sep 18, 2026
0d5bf06
chore(deps): bump dexie from 4.4.5 to 4.4.6 (#1041)
dependabot[bot] Sep 18, 2026
9a70ea2
fix(routes): two entries shared a route name, so one route never regi…
rubenvdlinde Sep 19, 2026
da5c86a
chore(deps): move nextcloud-vue back to the 2.x line
rubenvdlinde Sep 22, 2026
c9760e0
Merge pull request #1070 from ConductionNL/chore/nextcloud-vue-back-t…
rubenvdlinde Sep 23, 2026
b81b532
feat(parity): start stackiq's capability matrix (work in progress)
rubenvdlinde Sep 25, 2026
67f6408
feat(parity): rate stackiq's own column from the code
rubenvdlinde Sep 25, 2026
38b9938
Merge pull request #1072 from ConductionNL/feat/parity-capability-matrix
rubenvdlinde Sep 25, 2026
22466d6
fix(parity): apply cross-lane corrections to the capability matrix
rubenvdlinde Sep 26, 2026
b8e7db0
Merge pull request #1088 from ConductionNL/fix/parity-cross-lane-corr…
rubenvdlinde Sep 26, 2026
511d78e
chore(parity): fold r-glpi packs 1-2 (GLPI source read at 11.0.9)
rubenvdlinde Sep 26, 2026
913f72f
chore(parity): fold r-glpi packs 3-7 and errata
rubenvdlinde Sep 26, 2026
f46affc
chore(parity): fold r-docs-a (VNG Softwarecatalogus and TOPdesk, publ…
rubenvdlinde Sep 26, 2026
cca6e68
chore(parity): apply r-glpi errata, land-demo-data no to partial
rubenvdlinde Sep 26, 2026
ca32289
chore(parity): record the GLPI 11.0.9 lab drive on 26 cells
rubenvdlinde Sep 26, 2026
5c52326
chore(parity): glpi driven at 11.0.9, VNG and TOPdesk read 2026-09-26…
rubenvdlinde Sep 26, 2026
2540bde
feat(parity): 31 demand rows mined from tenders, feature requests, ro…
rubenvdlinde Sep 26, 2026
5e4f50b
chore(parity): back-fill VNG and TOPdesk on the 31 demand rows
rubenvdlinde Sep 26, 2026
69ef74e
chore(parity): back-fill GLPI on the demand rows from source at 11.0.9
rubenvdlinde Sep 26, 2026
4d6fb66
feat(parity): LeanIX and BlueDolphin read 2026-09-26, 11 more demand …
rubenvdlinde Sep 26, 2026
1a807f8
chore(parity): batch-2 back-fill VNG and TOPdesk
rubenvdlinde Sep 26, 2026
e331962
chore(parity): batch-2 back-fill GLPI
rubenvdlinde Sep 26, 2026
86c5c6a
Merge pull request #1090 from ConductionNL/parity/wave5-competitor-so…
rubenvdlinde Sep 26, 2026
49e65cb
chore(deps): move @conduction/nextcloud-vue to 2.57.1 (Dexie loads on…
rubenvdlinde Sep 27, 2026
9a5ece6
docs(openspec): OpenSpec pass batch 1, landscape and connections chan…
rubenvdlinde Sep 27, 2026
e2d38aa
docs(openspec): OpenSpec pass batch 2, architecture and lifecycle cha…
rubenvdlinde Sep 27, 2026
a0afae7
docs(openspec): OpenSpec pass batch 3, contracts, insight, operations…
rubenvdlinde Sep 27, 2026
d22033a
docs(parity): set 5 sibling rows from the OpenSpec pass (#1143)
rubenvdlinde Sep 28, 2026
7ca2cc0
docs(parity): corrections round 8, 7 rows re-read against their issue…
rubenvdlinde Sep 28, 2026
cab7bc3
fix(settings): read the saved organisation admin groups back (#1136) …
rubenvdlinde Sep 28, 2026
d4566ec
fix(views): read a single view with OpenRegister's checks on, and sco…
rubenvdlinde Sep 28, 2026
1103ab8
fix(roles): map the English organisation types to role groups (#1137)…
rubenvdlinde Sep 28, 2026
c04511f
fix(progress): keep operation progress in the distributed cache, read…
rubenvdlinde Sep 28, 2026
2666a36
fix(register): lifecycle states of four schemas use the enum values (…
rubenvdlinde Sep 28, 2026
f11a407
fix(facets): the domain facet reads the element's declared domein pro…
rubenvdlinde Sep 28, 2026
a0dd1b2
fix(archimate): remove the round-trip test endpoint any signed-in use…
rubenvdlinde Sep 28, 2026
1bca4d7
fix(sync): the organisation contact sync job honours its enabled swit…
rubenvdlinde Sep 28, 2026
52559fc
fix(merge): a merged-away supplier's applications and services move t…
rubenvdlinde Sep 28, 2026
ac51298
fix(openspec): drop the empty delta headers from org-archimate-export…
rubenvdlinde Sep 28, 2026
855dca2
test(openspec): match delta headers case-insensitively, as openspec d…
rubenvdlinde Sep 28, 2026
252dd05
fix(a11y): the selected objects list honours reduced motion for move …
rubenvdlinde Sep 29, 2026
d19bbc4
docs(parity): decide the 25 open stackiq rows, specify the import pro…
rubenvdlinde Sep 29, 2026
d9b52f6
feat(archimate): follow a running ArchiMate import and cancel it (#1175)
rubenvdlinde Sep 29, 2026
72754a7
feat(applications): open an application from the list and see its usa…
rubenvdlinde Sep 29, 2026
c6ebcd3
feat(connections): browse and open connections, and see them on the a…
rubenvdlinde Sep 29, 2026
dcb6403
test(connections): seed the contacts uid from a crypto UUID, not the …
rubenvdlinde Sep 29, 2026
1edd2ba
fix(organisations): the concept organisations widget lists draft orga…
rubenvdlinde Sep 29, 2026
ba60bb1
feat(contracts): record licences bought and in use, and see where use…
rubenvdlinde Sep 29, 2026
f280e80
feat(ai-systems): register the AI systems you use and see the high-ri…
rubenvdlinde Sep 29, 2026
a4a28c4
feat(usages): record the applications your organisation uses, with ve…
rubenvdlinde Sep 29, 2026
100db8c
feat(maintenance): follow planned maintenance on the applications you…
rubenvdlinde Sep 29, 2026
f262512
feat(portfolio): score the applications you use on value, fit and ris…
rubenvdlinde Sep 30, 2026
497bb3f
fix(register): seed organisations save on a fresh install (#1203)
rubenvdlinde Oct 1, 2026
c696d62
fix(seed): seed usages reference their organisations, so each is crea…
rubenvdlinde Oct 1, 2026
1a49161
feat(itsm): stackiq as a CMDB with two-way TOPdesk and ServiceNow syn…
rubenvdlinde Oct 1, 2026
4dd0fd2
feat(cmdb-import): import a TOPdesk CMDB export (xlsx) into the catal…
WilcoLouwerse Oct 1, 2026
3f263cb
feat(publication): stackiq's private fields stay private when OpenCat…
rubenvdlinde Oct 1, 2026
ae22b32
fix(tests): stackiq's unit tests run in CI again (#1213)
rubenvdlinde Oct 2, 2026
d2e5c40
fix(ci): regenerate features.json and clear the CodeQL alerts on the …
WilcoLouwerse Oct 2, 2026
c215ea4
fix(import): a failed CMDB or ArchiMate import is reported as failed,…
WilcoLouwerse Oct 2, 2026
795a372
fix(itsm): a service desk set-up that cannot be checked is refused, a…
WilcoLouwerse Oct 2, 2026
825ac32
fix(itsm): the file import caps its size, reads only xlsx data and st…
WilcoLouwerse Oct 2, 2026
42c29f7
fix(cmdb-import): store End-of-Life Functioneel as the file has it
WilcoLouwerse Oct 2, 2026
3297dee
fix(publication): a module's TOPdesk reference fields read for signed…
WilcoLouwerse Oct 2, 2026
06b3835
fix(publication): a depublished or deleted application takes all its …
WilcoLouwerse Oct 2, 2026
9d0921a
fix(repair): the module version publication backfill pages through mo…
WilcoLouwerse Oct 2, 2026
9543e63
fix(itsm): the service desk pages say when a request fails instead of…
WilcoLouwerse Oct 2, 2026
9062b3c
fix(archimate): import progress polling stops on unmount and never ov…
WilcoLouwerse Oct 2, 2026
dbf3248
docs(openapi): document the four service desk exchange routes
WilcoLouwerse Oct 2, 2026
febf2d1
refactor: keep the new import and publication code within the PHPMD r…
WilcoLouwerse Oct 2, 2026
1fbce33
Merge pull request #1218 from ConductionNL/fix/woo589-beta-checks
WilcoLouwerse Oct 2, 2026
a9f5672
fix(cmdb-import): map the values the municipality's export holds
WilcoLouwerse Oct 2, 2026
fc586ee
Merge branch 'development' into fix/woo589-review-findings
WilcoLouwerse Oct 2, 2026
4da250f
Merge pull request #1220 from ConductionNL/fix/woo589-review-findings
WilcoLouwerse Oct 2, 2026
3dd75bb
docs(review): #1219 f1 — Docs do not say 2036-01-01 is a no-date sent…
WilcoLouwerse Oct 2, 2026
0160aed
docs(review): #1219 f1 — pre-push: an update replaces a stored date; …
WilcoLouwerse Oct 2, 2026
2d3104b
fix(archimate): stop writing every exported model to /tmp/debug_expor…
rubenvdlinde Oct 2, 2026
f464f0e
Merge remote-tracking branch 'origin/development' into fix/cmdb-impor…
WilcoLouwerse Oct 5, 2026
350f7e9
fix(cmdb-import): give applicationType and the bbnLevel overlay title…
WilcoLouwerse Oct 5, 2026
7ca11fe
docs(review): #1219 f1 — Docs do not say 2036-01-01 is a no-date sent…
WilcoLouwerse Oct 2, 2026
225b412
docs(review): #1219 f1 — pre-push: an update replaces a stored date; …
WilcoLouwerse Oct 2, 2026
87eed0d
fix(cmdb-import): the import and cancel routes declare AuthorizedAdmi…
WilcoLouwerse Oct 5, 2026
c74f492
fix(cmdb-import): an unexpected error while the upload is checked ans…
WilcoLouwerse Oct 5, 2026
b3d07b1
fix(cmdb-import): an unrecognised updateExisting value is refused ins…
WilcoLouwerse Oct 5, 2026
e05fe9e
fix(cmdb-import): a form field sent as an array is refused instead of…
WilcoLouwerse Oct 5, 2026
5ffb1ad
fix(cmdb-import): a server-side upload failure answers UPLOAD_FAILED …
WilcoLouwerse Oct 5, 2026
0acd6aa
fix(cmdb-import): no cancel flag outlives the run it was meant for, a…
WilcoLouwerse Oct 5, 2026
1a9e5d8
fix(cmdb-import): a client-chosen operationId that is still running g…
WilcoLouwerse Oct 5, 2026
404d833
test(cmdb-import): pin the controller's logging, field passthrough an…
WilcoLouwerse Oct 5, 2026
c9159e1
docs(openapi): document the CMDB import's auth, operationId replaceme…
WilcoLouwerse Oct 5, 2026
1dba160
test(newman): cover the CMDB import's 401, 400 and 422 refusals and c…
WilcoLouwerse Oct 5, 2026
c252039
docs(cmdb-import): give the controller's iniBytes() seam its @spec tag
WilcoLouwerse Oct 5, 2026
b05040f
refactor(cmdb-import): keep the controller's upload parsing within th…
WilcoLouwerse Oct 5, 2026
25e0bce
Merge pull request #1223 from ConductionNL/review/pr-1219-fixes
WilcoLouwerse Oct 5, 2026
e4296ba
Merge remote-tracking branch 'origin/fix/cmdb-import-eol-as-is' into …
WilcoLouwerse Oct 5, 2026
46fd875
fix(l10n): translate the CMDB import's FIELD_INVALID and UPLOAD_FAILE…
WilcoLouwerse Oct 5, 2026
2cdc31d
fix(cmdb-import): strip printer settings, dates and revision ids from…
WilcoLouwerse Oct 5, 2026
d5c5ff0
test(cmdb-import): check every fixture part against an allow-list
WilcoLouwerse Oct 5, 2026
ffa95bf
test(cmdb-import): name-check every sheet of every fixture
WilcoLouwerse Oct 5, 2026
b6c6848
fix(cmdb-import): show the limits the server applies, not hard-coded …
WilcoLouwerse Oct 5, 2026
2613301
fix(cmdb-import): recover the report when the import request is cut off
WilcoLouwerse Oct 5, 2026
5c29d3a
fix(cmdb-import): tell the admin whether Cancel import worked
WilcoLouwerse Oct 5, 2026
e4561d3
fix(cmdb-import): show the report rows a hundred at a time
WilcoLouwerse Oct 5, 2026
eec4598
fix(cmdb-import): fix the report heading levels and the file control'…
WilcoLouwerse Oct 5, 2026
821947e
fix(cmdb-import): stop escaping placeholder values twice in the impor…
WilcoLouwerse Oct 5, 2026
5fd4932
feat(cmdb-import): give UPDATE_EXISTING_INVALID its own words on the …
WilcoLouwerse Oct 5, 2026
3e03f28
test(cmdb-import): unit-test the client side of the CMDB import
WilcoLouwerse Oct 5, 2026
6741b98
fix(cmdb-import): map FIELD_INVALID and UPLOAD_FAILED instead of UPDA…
WilcoLouwerse Oct 5, 2026
4bc205a
docs(cmdb-import): the groups delegated stackiq's admin settings may …
WilcoLouwerse Oct 5, 2026
a15a6b3
test(cmdb-import): cover the typed municipality, cancel and refusal i…
WilcoLouwerse Oct 5, 2026
399b2b5
docs(cmdb-import): put the REQ id after the requirement title (ADR-038)
WilcoLouwerse Oct 5, 2026
dcac622
docs(cmdb-import): drop the references to a private planning workspace
WilcoLouwerse Oct 5, 2026
1ef4a35
docs(cmdb-import): make tasks.md and the docs page say what is done
WilcoLouwerse Oct 5, 2026
e090574
docs(cmdb-import): describe the report paging, sorting and cancel fee…
WilcoLouwerse Oct 5, 2026
24604f0
fix(l10n): translate the CMDB import page's new limit, interruption, …
WilcoLouwerse Oct 5, 2026
ff9e1b7
fix(cmdb-import): the workbook reader bounds memory before PhpSpreads…
WilcoLouwerse Oct 5, 2026
937a54b
test(cmdb-import): the OpenRegister double checks scope flags and und…
WilcoLouwerse Oct 5, 2026
89cfbac
fix(cmdb-import): refuse the import when a schema lacks the propertie…
WilcoLouwerse Oct 5, 2026
4cc6464
fix(cmdb-import): one import per register at a time, a second is refu…
WilcoLouwerse Oct 5, 2026
1228afd
fix(cmdb-import): a name never matches a merged-away or inactive orga…
WilcoLouwerse Oct 5, 2026
186c051
fix(cmdb-import): refuse an ambiguous municipality name and warn when…
WilcoLouwerse Oct 5, 2026
eae29bc
fix(cmdb-import): a closed tab or a short PHP time limit no longer cu…
WilcoLouwerse Oct 5, 2026
b82ae9b
fix(cmdb-import): an APPID matches whatever its case or a trailing no…
WilcoLouwerse Oct 5, 2026
538ffaf
fix(cmdb-import): an APPID on both CMDB sheets is imported from the B…
WilcoLouwerse Oct 5, 2026
2909b06
fix(cmdb-import): owner contacts go into a dedicated "Stackiq CMDB ow…
WilcoLouwerse Oct 5, 2026
aec05f5
fix(cmdb-import): a failed row reports the step and exception kind, n…
WilcoLouwerse Oct 5, 2026
27d9d42
fix(cmdb-import): an import logs who ran it, on which file and munici…
WilcoLouwerse Oct 5, 2026
d986575
fix(portfolio-report): the CSV export writes formula-like cells as text
WilcoLouwerse Oct 5, 2026
14fd86c
fix(cmdb-import): a failing municipality lookup is no longer reported…
WilcoLouwerse Oct 5, 2026
b2b153f
fix(cmdb-import): the report stored with the operation holds at most …
WilcoLouwerse Oct 5, 2026
02d3ffe
fix(cmdb-import): suppliers the import creates are registered as Supp…
WilcoLouwerse Oct 5, 2026
a60995b
test(cmdb-import): replace the source-grep assertions with behaviour …
WilcoLouwerse Oct 5, 2026
0891041
fix(l10n): translate the CMDB import's new engine warnings and owner …
WilcoLouwerse Oct 5, 2026
7f452a4
fix(cmdb-import): log the upload's name and give the engine refusals …
WilcoLouwerse Oct 5, 2026
99f99c2
fix(cmdb-import): show the page's own words for the four new engine r…
WilcoLouwerse Oct 5, 2026
a3c45d8
docs(cmdb-import): specify the workbook, register, lock and municipal…
WilcoLouwerse Oct 5, 2026
9399799
fix(cmdb-import): give owners their e-mail and phone, and keep the mu…
WilcoLouwerse Oct 5, 2026
96b05be
feat(cmdb-import): let the admin import applications without publishi…
WilcoLouwerse Oct 5, 2026
33360d0
fix(progress): keep progress and cancel in the app config without a s…
WilcoLouwerse Oct 5, 2026
3e96e87
fix(maintenance): only a product's supplier or a catalogue admin reac…
WilcoLouwerse Oct 5, 2026
7a96c10
perf(publication): copy a module's publication onto its versions in a…
WilcoLouwerse Oct 5, 2026
b906515
fix(demo-data): seed demo objects against the live schemas instead of…
WilcoLouwerse Oct 5, 2026
bf90fcf
chore(integrations): track the link header action in nextcloud-vue#1314
WilcoLouwerse Oct 5, 2026
9a94397
fix(cmdb-import): a failed run stores a code and a generic message, n…
WilcoLouwerse Oct 5, 2026
10eb668
fix(cmdb-import): an import key on another organisation's application…
WilcoLouwerse Oct 5, 2026
7bb76db
fix(cmdb-import): a re-import keeps the usage status and TIME classif…
WilcoLouwerse Oct 5, 2026
6eb1d4e
revert(cmdb-import): leave the owner's e-mail address and phone numbe…
WilcoLouwerse Oct 5, 2026
971290a
fix(cmdb-import): match owner contacts only in the "Stackiq CMDB owne…
WilcoLouwerse Oct 5, 2026
6564e14
fix(cmdb-import): a status that changes in TOPdesk reaches the usage
WilcoLouwerse Oct 5, 2026
b67c6f5
refactor(cmdb-import): move the uncached-formula warnings out of proc…
WilcoLouwerse Oct 5, 2026
cd5d3b9
fix(publication): retry a failed copy and clear the versions of a mod…
WilcoLouwerse Oct 5, 2026
bcfd302
fix(demo-data): resolve each demo object's schema within its own regi…
WilcoLouwerse Oct 5, 2026
e93af3a
fix(maintenance): only the provider may announce, and a refused windo…
WilcoLouwerse Oct 5, 2026
a78a13b
docs(progress): describe the app config fallback and the queued versi…
WilcoLouwerse Oct 5, 2026
4888cca
Merge #1219 into the stacked branch; a status that changes in TOPdesk…
WilcoLouwerse Oct 5, 2026
6b65cd9
fix(maintenance): retry a failed owner resolution, and announce provi…
WilcoLouwerse Oct 5, 2026
bda7ec2
test(publication): pin the retry after a failed copy onto a published…
WilcoLouwerse Oct 5, 2026
6d3bed0
fix(cmdb-import): a re-import takes the usage status from the export
WilcoLouwerse Oct 5, 2026
aadd4a7
fix(review): #1219 a1 — the CMDB import and cancel routes are for Nex…
WilcoLouwerse Oct 5, 2026
f058187
fix(review): #1219 a2 — the controller logs the exception class, not …
WilcoLouwerse Oct 5, 2026
2c6eade
fix(review): #1219 b1 — the reader caps each part and the shared stri…
WilcoLouwerse Oct 5, 2026
c1b6172
fix(review): #1219 b3 — a skipped row no longer creates a supplier or…
WilcoLouwerse Oct 5, 2026
0bb18a9
fix(review): #1219 b8 — SCHEMA_OUTDATED also refuses a module schema …
WilcoLouwerse Oct 5, 2026
57f2cc5
Merge pull request #1226 from ConductionNL/fix/cmdb-import-owner-cont…
WilcoLouwerse Oct 5, 2026
8ed2e4a
fix(review): #1219 c3 — the page sends a typed municipality name and …
WilcoLouwerse Oct 5, 2026
3c1d14c
fix(review): #1219 c1 — format the CMDB import frontend files with pr…
WilcoLouwerse Oct 5, 2026
e006952
fix(review): #1219 b9 c6 — the change docs describe module 0.3.8, the…
WilcoLouwerse Oct 5, 2026
5fd4417
fix(review): #1219 c5 — REQ-CMDB-013 says when the server replaces th…
WilcoLouwerse Oct 5, 2026
917bf61
Merge pull request #1227 from ConductionNL/fix/woo589-review-round2
WilcoLouwerse Oct 5, 2026
129929f
fix(review): #1219 a2 — declare the static sanitiser call in the cont…
WilcoLouwerse Oct 5, 2026
bcd1c73
fix(review): #1219 b3 — move the row normalisation out of processRow()
WilcoLouwerse Oct 5, 2026
7025abe
fix(review): #1219 a2 — tag the now-public logSafeMessage() with its …
WilcoLouwerse Oct 5, 2026
8d1a427
Merge #1226 into fix/cmdb-import-eol-as-is
WilcoLouwerse Oct 5, 2026
618450d
fix(review): #1219 p2 — the shared-strings count finds the table unde…
WilcoLouwerse Oct 5, 2026
eff1459
fix(review): #1219 p3 — the docs no longer say a delegated admin reac…
WilcoLouwerse Oct 5, 2026
898f88a
Merge remote-tracking branch 'origin/development' into fix/cmdb-impor…
WilcoLouwerse Oct 5, 2026
1fb868d
fix(cmdb-import): clear a stale cancel flag through ProgressStore::cl…
WilcoLouwerse Oct 5, 2026
38a73af
fix(cmdb-import): bound the shared-string text the cells reference be…
WilcoLouwerse Oct 5, 2026
82f7c28
fix(cmdb-import): read every part as PhpSpreadsheet does in the share…
WilcoLouwerse Oct 5, 2026
898e7c1
Merge pull request #1219 from ConductionNL/fix/cmdb-import-eol-as-is
WilcoLouwerse Oct 5, 2026
7bdab19
chore(compat): declare Nextcloud 35 support (max-version 34 -> 35)
WilcoLouwerse Oct 5, 2026
7075296
chore(openspec): archive cmdb-export-import and sync its spec
WilcoLouwerse Oct 5, 2026
e942102
fix(review): #1232 f3 — link the proposal's Out of Scope from the spe…
WilcoLouwerse Oct 5, 2026
b6c3376
fix(review): #1232 f4 — point the API docs, Newman folder and fixture…
WilcoLouwerse Oct 5, 2026
6e1c9b5
Merge pull request #1232 from ConductionNL/chore/archive-cmdb-export-…
WilcoLouwerse Oct 5, 2026
28b050a
fix(cmdb-import): a sheet the import does not read may be larger than…
WilcoLouwerse Oct 5, 2026
734737e
fix(cmdb-import): say which sheet is too large, how large, and what t…
WilcoLouwerse Oct 5, 2026
381b54a
fix(review): #1235 f1 f2 f3 f6 — read a copy with oversized unread sh…
WilcoLouwerse Oct 5, 2026
ff88f82
fix(review): #1235 f4 f5 — format with prettier, and advise deleting …
WilcoLouwerse Oct 5, 2026
447af81
fix(review): #1235 r1 r2 r3 r4 — remove the copy on every exit, refus…
WilcoLouwerse Oct 5, 2026
1c10ce6
chore(deps-dev): analyse against the Nextcloud 35 OCP stubs (nextclou…
WilcoLouwerse Oct 6, 2026
905cfaa
test(cmdb): cover removing the read copy and a ZIP signature without …
WilcoLouwerse Oct 6, 2026
67da6e3
Merge pull request #1235 from ConductionNL/fix/cmdb-import-part-limit…
WilcoLouwerse Oct 6, 2026
58dbd19
Merge pull request #1231 from ConductionNL/chore/woo589-nc35-max-version
WilcoLouwerse Oct 6, 2026
6af83f4
fix(ci): name the branch-protection job so the required check matches
WilcoLouwerse Oct 6, 2026
859a380
Merge pull request #1239 from ConductionNL/fix/branch-protection-chec…
WilcoLouwerse Oct 6, 2026
b4db092
feat(setup): each example data card loads itself (#1241)
rubenvdlinde Oct 7, 2026
38b7c4e
feat(nav): Reports moves under Advanced in the navigation (#1242)
rubenvdlinde Oct 7, 2026
caff314
docs(openspec): link the 55 unbuilt capability rows to the changes th…
rubenvdlinde Oct 7, 2026
db892dc
docs(openspec): link the 61 built capability rows to the change or sp…
rubenvdlinde Oct 7, 2026
bb84088
docs(openspec): add the TOPdesk CMDB import as a capability row
rubenvdlinde Oct 7, 2026
dd3e7b2
Merge pull request #1245 from ConductionNL/spec/capability-specs-and-…
rubenvdlinde Oct 7, 2026
8a20b7f
docs(openspec): competitor cells on spec-round rows read unknown, not…
rubenvdlinde Oct 7, 2026
7191279
Merge pull request #1247 from ConductionNL/spec/unknown-not-unchecked
rubenvdlinde Oct 7, 2026
8d79169
docs(openspec): specs for stackiq's own built rows that had none
rubenvdlinde Oct 7, 2026
be71362
docs(openspec): specify stackiq's side of the assistant rows
rubenvdlinde Oct 7, 2026
fe4f0a1
docs(openspec): move the 40 pending rows into capabilities, re-rated …
rubenvdlinde Oct 7, 2026
0c77808
docs(openspec): first-time-setup scenarios name their test as an excl…
rubenvdlinde Oct 7, 2026
8f74f89
Merge pull request #1249 from ConductionNL/spec/rerate-and-own-specs
rubenvdlinde Oct 7, 2026
4586626
docs(openspec): specify the fix that makes the contract expiry warnin…
rubenvdlinde Oct 7, 2026
a558f6b
docs(openspec): specify drawing shared applications apart on GEMMA views
rubenvdlinde Oct 7, 2026
074fce8
Merge pull request #1251 from ConductionNL/spec/missing-parts
rubenvdlinde Oct 7, 2026
1aa2346
docs(openspec): archive six changes the code has delivered, note the …
rubenvdlinde Oct 7, 2026
7639d0b
Merge pull request #1253 from ConductionNL/spec/archive-pass
rubenvdlinde Oct 7, 2026
8a1c0a5
docs(openspec): fix deltas so built changes can archive
rubenvdlinde Oct 7, 2026
a1aaf75
Merge pull request #1254 from ConductionNL/spec/delta-fixups
rubenvdlinde Oct 7, 2026
7339b35
fix(dashboard): restore the frozen widget id so users' dashboards kee…
rubenvdlinde Oct 7, 2026
eb2abdb
Merge pull request #1261 from ConductionNL/fix/restore-frozen-widget-id
rubenvdlinde Oct 8, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/branch-protection.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
- beta

jobs:
protect:
branch-protection:
# The callee's `check-branch` job is a single bash comparison of
# `github.base_ref` against `github.head_ref` — no checkout, no network, no
# API call. It needs nothing, so it gets nothing. `{}` is an explicit empty
Expand Down
23 changes: 15 additions & 8 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,14 @@ jobs:
app-name: stackiq
php-version: "8.3"
# THE LIST IS THE WHOLE DECLARED RANGE. appinfo/info.xml declares
# <nextcloud min-version="32" max-version="34"/>, so 32, 33 and 34 each get
# a leg. Adopting NC 34 by REPLACING the list left 32 and 33 advertised to
# the App Store with no job touching them — the declared floor became the
# <nextcloud min-version="32" max-version="35"/>, so 32, 33, 34 and 35 each
# get a leg. Adopting NC 34 by REPLACING the list left 32 and 33 advertised
# to the App Store with no job touching them — the declared floor became the
# untested end, which is the same drift as never testing 34, reversed.
# stable34 leads because newman, playwright and journeydoc-capture all read
# `fromJSON(inputs.nextcloud-test-refs)[0]` as their single server, and 34
# is the major this app had never been exercised on.
nextcloud-test-refs: '["stable34", "stable32", "stable33"]'
# stable35 leads because newman, playwright and journeydoc-capture all read
# `fromJSON(inputs.nextcloud-test-refs)[0]` as their single server, and 35
# is the newest major this app declares (same order as thematiq).
nextcloud-test-refs: '["stable35", "stable32", "stable33", "stable34"]'
enable-psalm: true
enable-phpstan: true
enable-phpmetrics: true
Expand All @@ -158,7 +158,14 @@ jobs:
# object API directly (tests/e2e/workflows/_fixtures.ts), so testing
# against `main` measures a different backend than the one this app is
# written for. Pinned to `development` to match.
additional-apps: '[{"repo":"ConductionNL/openregister","app":"openregister","ref":"development"}]'
#
# integriq is here because the Integrations page reads integriq's
# `app_connection` rows (adopt-connection-registry). Without it the page
# shows the missing-dependency screen and
# `tests/e2e/workflows/integrations-page.spec.ts` fails on every run.
# `app` is `integriq`, verified in its appinfo/info.xml on `development`
# on 2026-09-14.
additional-apps: '[{"repo":"ConductionNL/openregister","app":"openregister","ref":"development"},{"repo":"ConductionNL/integriq","app":"integriq","ref":"development"}]'
# Newman disabled: tests/magic-mapper-import.postman_collection.json was
# written against a dev env with URL rewriting + a fixed disk layout — it
# hits bare paths like `/configurations` and uploads files from
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ on:

jobs:
deploy:
# Permission CEILING for the called workflow, not a grant: the callee's
# deploy job declares `contents: write` (gh-pages push) and its fallback
# image job `packages: write` (GHCR). A ceiling below what the callee
# declares makes the call fail to start.
permissions:
contents: write
packages: write
uses: ConductionNL/.github/.github/workflows/documentation.yml@main
# A reusable workflow receives NO secrets by default. Without this block the
# callee's publish step finds CF_API_TOKEN empty, skips itself on its own
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Changelog

## [Unreleased]
### Added
- CMDB import: a Nextcloud admin imports a TOPdesk CMDB export (xlsx) for one
municipality from the admin settings. Every application row of the two CMDB
sheets becomes or updates a module, its vendor, a usage for the municipality
and a contact person for its owner; a repeat import matches on APPID, so it
updates instead of duplicating. See `docs/features/cmdb-import.md`.

### Changed
- EOL feed: the register and schema slugs the feature reads from are corrected.
`EOL_DEFAULT_REGISTER` still said `openconnector`, a register renamed to
Expand Down
5 changes: 3 additions & 2 deletions appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Vrij en open source onder de EUPL-licentie.

**Ondersteuning:** Voor ondersteuning, neem contact op via support@conduction.nl. Voor een Service Level Agreement (SLA), neem contact op via sales@conduction.nl.
]]></description>
<version>0.2.2-unstable.20260910105110</version>
<version>0.2.4-unstable.20261001120000</version>
<licence>EUPL-1.2</licence>
<author mail="info@conduction.nl" homepage="https://www.conduction.nl/">Conduction</author>
<namespace>Stackiq</namespace>
Expand Down Expand Up @@ -91,7 +91,7 @@ Vrij en open source onder de EUPL-licentie.
<database min-version="10">pgsql</database>
<database>sqlite</database>
<database min-version="8.0">mysql</database>
<nextcloud min-version="32" max-version="34"/>
<nextcloud min-version="32" max-version="35"/>
</dependencies>

<background-jobs>
Expand Down Expand Up @@ -224,6 +224,7 @@ Vrij en open source onder de EUPL-licentie.
<step>OCA\Stackiq\Repair\InitializeSettings</step>
<step>OCA\Stackiq\Repair\MigrateContactsToNc</step>
<step>OCA\Stackiq\Repair\BackfillContractApprovalState</step>
<step>OCA\Stackiq\Repair\BackfillModuleVersionPublication</step>
<!--
Must run AFTER the register sync that adds the English columns, so it
can tell the rename case from the back-fill case. Scoped by SCHEMA,
Expand Down
21 changes: 19 additions & 2 deletions appinfo/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,11 @@
['name' => 'settings#killArchiMateImport', 'url' => '/api/archimate/import/kill', 'verb' => 'POST'], // deprecated
['name' => 'settings#clearArchiMateExportStatus', 'url' => '/api/archimate/status/export/clear', 'verb' => 'POST'],

['name' => 'settings#testArchiMateRoundTrip', 'url' => '/api/archimate/test-round-trip', 'verb' => 'POST'],
// CMDB export import (TOPdesk xlsx) — Nextcloud admins only (no delegated groups), CSRF-protected.
// Progress is read through the existing /api/progress/{operationId}.
// @spec openspec/changes/cmdb-export-import/tasks.md#task-8
['name' => 'cmdbImport#import', 'url' => '/api/cmdb-import', 'verb' => 'POST'],
['name' => 'cmdbImport#cancel', 'url' => '/api/cmdb-import/{operationId}/cancel', 'verb' => 'POST'],

// User Groups management routes
['name' => 'settings#getGenericUserGroups', 'url' => '/api/settings/user-groups/generic', 'verb' => 'GET'],
Expand All @@ -126,7 +130,12 @@
// ArchiMate focused endpoints
['name' => 'settings#getArchiMateConfig', 'url' => '/api/archimate/config', 'verb' => 'GET'],
['name' => 'settings#updateArchiMateConfig', 'url' => '/api/archimate/config', 'verb' => 'POST'],
['name' => 'settings#getArchiMateConfig', 'url' => '/api/archimate/status', 'verb' => 'GET'],
// A route name carries no URL, so without a 'postfix' this entry and the
// GET '/api/archimate/config' one above register under the same name and
// only the last declared survives. This one won on line order, which left
// the config read a 404 and made the store's polling endpoint depend on
// nothing but the order of these two lines.
['name' => 'settings#getArchiMateConfig', 'url' => '/api/archimate/status', 'verb' => 'GET', 'postfix' => 'Status'],

// Email focused endpoints
['name' => 'settings#getEmailConfig', 'url' => '/api/email/config', 'verb' => 'GET'],
Expand Down Expand Up @@ -289,6 +298,14 @@
['name' => 'settings#triggerEolSync', 'url' => '/api/eol-sync/trigger', 'verb' => 'POST'],
['name' => 'settings#getEolSyncStatus', 'url' => '/api/eol-sync/status', 'verb' => 'GET'],

// SERVICE DESK EXCHANGE (sharing-itsm-exchange): status for the CMDB
// page, set-up and file import for admins. The flows themselves run
// in OpenRegister and integriq; these only create and start them.
['name' => 'itsmExchange#status', 'url' => '/api/itsm/status', 'verb' => 'GET'],
['name' => 'itsmExchange#config', 'url' => '/api/itsm/config', 'verb' => 'GET'],
['name' => 'itsmExchange#setUp', 'url' => '/api/itsm/setup', 'verb' => 'POST'],
['name' => 'itsmExchange#import', 'url' => '/api/itsm/import', 'verb' => 'POST'],

// Gebruik by group
['name' => 'gebruik#getGebruiken', 'url' => '/api/gebruik', 'verb' => 'GET'],
['name' => 'gebruik#getGebruikenForDeelnemer', 'url' => '/api/gebruik/deelnemer', 'verb' => 'GET'],
Expand Down
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"phpmetrics:violations": "./vendor/bin/phpmetrics --violations-xml=phpmetrics/violations.xml lib/",
"psalm": "if [ -f vendor/bin/psalm ]; then ./vendor/bin/psalm --threads=1 --no-cache --memory-limit=2G; else echo 'Psalm not installed, skipping...'; fi",
"phpstan": "if [ -f vendor/bin/phpstan ]; then ./vendor/bin/phpstan analyse --memory-limit=1G; else echo 'PHPStan not installed, skipping...'; fi",
"test:unit": "phpunit tests -c tests/phpunit.xml --colors=always --fail-on-warning --fail-on-risky",
"test:unit": "phpunit -c phpunit-unit.xml --colors=always --fail-on-warning --fail-on-risky",
"test:all": "if [ ! -f vendor/bin/phpunit ]; then echo 'SKIPPED: phpunit not installed - run composer install'; elif [ ! -f ../../lib/base.php ]; then echo 'SKIPPED: tests/bootstrap.php requires a Nextcloud server tree (../../lib/base.php not found) - run from inside a Nextcloud checkout or in CI'; else ./vendor/bin/phpunit --colors=always; fi",
"check": "E=0; for CMD in lint phpcs psalm test:unit; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E",
"check:full": "E=0; for CMD in lint phpcs psalm phpstan test:all; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E",
Expand Down Expand Up @@ -84,7 +84,7 @@
"cyclonedx/cyclonedx-php-composer": "^6.2",
"edgedesign/phpqa": "^1.27",
"guzzlehttp/guzzle": "^7.8",
"nextcloud/ocp": "^34.0",
"nextcloud/ocp": "^35.0",
"phpcsstandards/phpcsextra": "^1.4",
"phpmd/phpmd": "^2.15",
"phpmetrics/phpmetrics": "^2.8",
Expand Down
Loading
Loading