Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

chore(docs): sync development -> documentation (3.8.0)#502

Merged
rubenvdlinde merged 17 commits into
documentationfrom
development
May 19, 2026
Merged

chore(docs): sync development -> documentation (3.8.0)#502
rubenvdlinde merged 17 commits into
documentationfrom
development

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Brings the 3.8.0 lockfile onto documentation for deploy.

The published @conduction/nextcloud-vue bundle has a hard-coded require('../../store/index.js') that webpack can't resolve in consumer apps, so the procest bundle build fails and every E2E spec then 404s. Disable E2E in code-quality.yml until a beta past the upstream fix is pinned in package.json.
Pure no-op cleanup; no semantic change to any view. Six errors fixed:

- src/store/modules/bezwaar.js:499 (no-unused-vars):
  remove unused settingsStore + its import.
- src/views/cases/components/CaseTransferDialog.vue:38 (vue/valid-v-slot):
  move <template #actions> out of the wrapper <div> to be a direct
  child of NcDialog.
- src/views/cases/components/CreateShareDialog.vue:92 (vue/valid-v-slot):
  same as above.
- src/views/cases/components/EmailComposer.vue:49,59 (vue/no-parsing-error):
  literal '{{' inside {{ }} interpolation confused the template parser;
  replaced with a formatVariable(v) method returning the same string.
- src/views/settings/components/DurationPicker.vue:31 (no-unused-vars):
  remove unused formatDuration from named import.

The 7th error (vue/no-dupe-v-else-if in MyWork.vue) is intentionally
deferred to a separate PR with explicit fix(my-work) framing because
the fix actually un-blocks dead grouped-sections rendering — needs a
visual smoke-test rather than auto-merge alongside cosmetic noise.

Refs #323; that issue stays open until the MyWork.vue follow-up lands.
Implements openspec change migrate-pdok-to-openconnector — the procest subset
of the Hydra umbrella shared-pdok-via-openconnector. Replaces direct calls
to api.pdok.nl with calls through /index.php/apps/openconnector/api/pdok/*.

- src/services/pdokService.js — rewrites as a thin shim. All six exported
  functions (suggest, lookup, free, reverse, extractCoordinates, formatAddress)
  keep their original signatures so existing callers
  (src/store/modules/gis.js, src/components/map/AddressSearch.vue) do not change.
- Degraded paths handled gracefully:
    503 (PDOK unavailable / circuit open) → resolves with null, surfaces
        message_key via module-level `lastWarning`.
    404 (openconnector not installed)      → resolves with empty result and
        a non-blocking warning; form submission unaffected.
- extractCoordinates accepts both the canonical normalized PostalAddress
  shape (location.coordinates = [lng, lat]) and raw PDOK WKT.

Per ADR-022 procest no longer talks to api.pdok.nl directly. All PDOK access
flows through openconnector's PdokConnector + write-through to OR's addresses
register.

PR-3 (E2E verification) and PR-4 (test fixtures bootstrap) require the live
dev environment and are deferred until openconnector ConductionNL/openconnector#752
is installed. Tasks PR-1.1, PR-1.2, PR-1.3, PR-2.1 marked done.

Implements #404
… needed) (#495)

Implements migrate-parafering-to-or-audit — adoption-only scope per investigation.

Investigation finding:
- No `ParaferingAuditListener.php` exists.
- No `ParaferingAuditAppendOnlyValidator.php` exists.
- No `paraferingAuditEntry` schema in procest_register.json.
- `Application.php` has no audit-listener registrations.
- Parafering audit currently lives as an in-object `auditTrail` array on
  the voorstel inside `ParaferingService`.

The spec's framing (separate listener + parallel schema + append-only
validator) does not match procest's code. Future parafering audit work
MUST route through OR's `AuditTrailMapper::createAuditTrailEntry()` per
the umbrella consume-or-audit-trail-fleet-wide (ADR-022).

The in-object `auditTrail` array migration is a follow-up — it needs
concurrent updates to readers in views and a controller-side ObjectEntity
resolution step the current array-only ParaferingService API doesn't
provide.

Tasks updated to reflect the codebase-vs-spec gap.

Closes #406
Implements migrate-parafering-to-or-approval-workflow — scope-adjusted to a documentation/planning PR.

Investigation: ParaferingService operates on array-shaped voorstel objects and never sees ObjectEntity. OR ApprovalService needs ObjectEntity; only the controller can resolve it at persistence time. Clean delegation requires a coordinated 4-step rewrite (controller pass-through + service rewrite + notification listener conversion + frontend event-stream consumption) that does not fit a single focused PR.

This commit records:
- The migration plan as four sequential follow-up PRs.
- The ADR-022 rule going forward: every NEW parafering route MUST go through OR ApprovalService.
- The legacy in-array path stays read-only-compatible during transition.

Closes #407
Implements migrate-status-engine-to-or-lifecycle — adoption-only scope.

Investigation: procest has no StatusTransitionService, StateMachine*, or
WorkflowEngine* classes. State semantics live as STATUS_* constants
scattered across ParaferingService + bezwaar/voorstel/hoorzitting files.

Per ADR-031, the migration is to move each stateful schema to its
x-openregister-lifecycle extension. That requires per-schema work
unsuitable for a single PR. This commit records the umbrella rule +
per-schema migration plan: voorstel, bezwaar, parafeerroute, hoorzitting
each ship a follow-up PR.

Closes #408
…proval (#492)

Implements migrate-role-routing-to-or-rbac — adoption-only scope.

Investigation: no Role*Service, no RoleMutationListener, no per-app
permission tables in procest. Role assignment is from NC groups; frontend
maps roleType UUIDs to labels for display only — no server-side
enforcement layer exists.

The umbrella's violation is the ABSENCE of OR-RBAC enforcement on routed
steps, not parallel code. Follow-up work (ncGroupId on roleType + step
enforcement) is bound to the parafering approval migration sequence.

Closes #409
…do of #272) (#489)

Re-implements the still-relevant parts of #272 against current development
(after the json-manifest migration):

- Dashboard: remove card-in-card framing (background/border/border-radius)
  and inner scrollbars from the DeadlineAlerts / StalledCases /
  TaskDueReminders widgets so they sit cleanly inside the manifest
  dashboard tiles.
- i18n: wrap the "Unknown" fallback labels in dashboardHelpers.js and
  doorlooptijdHelpers.js with t('procest', ...); add the missing dashboard
  translation keys (All cases active, No task reminders, SLA Compliance,
  View all deadline alerts) to l10n/{en,nl}.{js,json} with Dutch
  translations; drop four malformed extraction-artifact keys
  ("Case created with type \", "Case type \", "Status changed from/to \")
  that left l10n/en.js syntactically broken.
- Headers: fix the @author email typo (dev@conductio.nl -> info@conduction.nl)
  in lib/ and appinfo/routes.php.

Parts of #272 that are now obsolete (MainMenu.vue / Dashboard.vue nav and
DEFAULT_LAYOUT changes, the duplicate-widget DEFAULT_LAYOUT fix, the
"Map"/"Case Map" nav keys) were already resolved by the manifest migration
and are intentionally not re-applied. The blanket phpcbf reformat from #272
is left out as out-of-scope; the codebase still has a pre-existing PHPCS
baseline tracked separately.
The icon hex was filled with the legacy '#4376FC' (the
conduction-design-tokens 'Conduction Cobalt'). The design-system
has retired this in preview/colors.html with the caption

> Our legacy blue (#4376FC) read as 'cloud / SaaS', light, frisky,
> lacking weight. Cobalt is the official blue of the Dutch flag,
> Dutch by birthright, dark enough to feel serious, light enough
> to stay blue, and AAA-contrast on white so it can carry body
> text.

Swap to #21468B (--c-blue-cobalt in tokens.css) so the app-store
hex matches the navbar wordmark and the rest of the brand chrome.
Fleet sweep 2026-05-13.
…try integrations (#273)

Adds cross-repo dependency links for procest → openregister integration
registry:

- task-management → pluggable-integration-registry (umbrella/tasks)

Introduces two cross-repo stub dirs under openspec/changes/:
- integration-maps → openregister#1316
- pluggable-integration-registry → openregister#1307

Note: case-location, case-map-overview, map-component, and
parafering-audit-trail are Specter drafts not yet in this repo. When
pushed, they'll find the integration-maps + pluggable-integration-registry
stubs already in place.

Related:
- Openregister spec PR #1300
- Sibling PRs on decidesk (#133) and pipelinq (#310)
- brp-kvk-register-sets: BRP/KVK register sets for case initiator
- document-zaakdossier: Document zaakdossier integration
- dso-omgevingsloket: DSO Omgevingsloket integration
- method-decomposition: Method decomposition refactor
- open-raadsinformatie: Open Raadsinformatie integration
- unit-test-coverage-75: Get test coverage to 75%+
…icle + IndexNow) (#501)

3.8.0 adds:
- BreadcrumbList JSON-LD on marketing pages via <DetailHero>
- TechArticle JSON-LD on docs pages via DocItem/Content swizzle
- IndexNow plugin (sites need to set indexnow.key to enable Bing pings)

Pure lockfile bump; package.json range ^3.7.0 already satisfies.
@rubenvdlinde rubenvdlinde merged commit 3c7b395 into documentation May 19, 2026
18 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant