[UX] Replace raw cross-module references with typed searchable selectors #272

Closed
opened 2026-07-29 02:28:59 +02:00 by zemion · 2 comments
Owner

Problem

Several administration and definition surfaces still ask users to type foreign IDs or comma-separated reference lists. This is error-prone, exposes storage details, and does not explain unavailable or inherited targets.

The Views assignment improvement introduced a shared SearchableSelect component and an optional-capability-safe directory lookup. This issue tracks the reusable platform work needed for the remaining domains.

Platform work

  • Define typed option/provider contracts for users, groups, tenants, configuration change requests, modules, credentials, servers, and other module-owned resources.
  • Support async single selection, multi-selection, disabled/unavailable targets, and readable provenance.
  • Let providers remain optional; consuming modules must not import optional module implementations.
  • Add a pattern-aware mode where policies accept wildcards, retaining explicit custom patterns alongside discoverable resources.
  • Preserve stable IDs in API payloads while rendering names and useful secondary labels in the UI.

Concrete follow-ups

  • Workflow and Dataflow definition ownership and scoped-copy dialogs.
  • Configuration package tenant and change-request references.
  • Files connector/credential policy references.
  • Notification source-module muting.
  • Credential-envelope and Mail module/server availability references.
  • Existing large user/group/account dropdowns in Access, Campaign, and IDM can adopt the shared searchable control after their current target APIs are normalized.

Explicit non-targets

Do not replace user-defined stable keys or protocol identifiers with foreign-object selectors. Campaign external IDs, file connection/profile keys, and VEVENT UID/RECURRENCE-ID need generation, validation, or advanced-field treatment instead.

## Problem Several administration and definition surfaces still ask users to type foreign IDs or comma-separated reference lists. This is error-prone, exposes storage details, and does not explain unavailable or inherited targets. The Views assignment improvement introduced a shared `SearchableSelect` component and an optional-capability-safe directory lookup. This issue tracks the reusable platform work needed for the remaining domains. ## Platform work - Define typed option/provider contracts for users, groups, tenants, configuration change requests, modules, credentials, servers, and other module-owned resources. - Support async single selection, multi-selection, disabled/unavailable targets, and readable provenance. - Let providers remain optional; consuming modules must not import optional module implementations. - Add a pattern-aware mode where policies accept wildcards, retaining explicit custom patterns alongside discoverable resources. - Preserve stable IDs in API payloads while rendering names and useful secondary labels in the UI. ## Concrete follow-ups - Workflow and Dataflow definition ownership and scoped-copy dialogs. - Configuration package tenant and change-request references. - Files connector/credential policy references. - Notification source-module muting. - Credential-envelope and Mail module/server availability references. - Existing large user/group/account dropdowns in Access, Campaign, and IDM can adopt the shared searchable control after their current target APIs are normalized. ## Explicit non-targets Do not replace user-defined stable keys or protocol identifiers with foreign-object selectors. Campaign external IDs, file connection/profile keys, and VEVENT UID/RECURRENCE-ID need generation, validation, or advanced-field treatment instead.
Author
Owner

Child work packages: GovOPlaN/govoplan-workflow#8, GovOPlaN/govoplan-dataflow#13, GovOPlaN/govoplan-admin#6, GovOPlaN/govoplan-files#39, GovOPlaN/govoplan-notifications#3. Existing mail/credential structure work remains in GovOPlaN/govoplan-mail#10. The first Views selector slice is implemented locally and verified; changes are pending the next repository push.

Child work packages: GovOPlaN/govoplan-workflow#8, GovOPlaN/govoplan-dataflow#13, GovOPlaN/govoplan-admin#6, GovOPlaN/govoplan-files#39, GovOPlaN/govoplan-notifications#3. Existing mail/credential structure work remains in GovOPlaN/govoplan-mail#10. The first Views selector slice is implemented locally and verified; changes are pending the next repository push.
Author
Owner

Codex State: done

Summary

  • Added shared typed backend and WebUI reference-option/provider contracts with async single/multi selection, stable IDs, disabled/unavailable states, provenance, provider composition, and custom wildcard support.
  • Implemented all concrete follow-ups in Workflow, Dataflow, Admin, Files, Notifications, and the relevant credential/Mail server-reference slice.
  • Optional integrations use capabilities and active registries; Core does not import optional module implementations.

Changed Files

  • src/govoplan_core/core/references.py
  • src/govoplan_core/api/v1/schemas.py
  • webui/src/components/ReferenceSelect.tsx
  • webui/src/components/SearchableSelect.tsx
  • webui/src/platform/referenceProviders.ts
  • webui/src/components/CredentialEnvelopeManager.tsx

Verification

  • tools/checks/check-focused.sh (passed)
  • ruff targeted scans (passed)
  • Reference option and selector tests (passed)
## Codex State: done ### Summary - Added shared typed backend and WebUI reference-option/provider contracts with async single/multi selection, stable IDs, disabled/unavailable states, provenance, provider composition, and custom wildcard support. - Implemented all concrete follow-ups in Workflow, Dataflow, Admin, Files, Notifications, and the relevant credential/Mail server-reference slice. - Optional integrations use capabilities and active registries; Core does not import optional module implementations. ### Changed Files - `src/govoplan_core/core/references.py` - `src/govoplan_core/api/v1/schemas.py` - `webui/src/components/ReferenceSelect.tsx` - `webui/src/components/SearchableSelect.tsx` - `webui/src/platform/referenceProviders.ts` - `webui/src/components/CredentialEnvelopeManager.tsx` ### Verification - `tools/checks/check-focused.sh (passed)` - `ruff targeted scans (passed)` - `Reference option and selector tests (passed)`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-core#272
No description provided.