Files
govoplan-projects/docs/INTERFACE_PATTERN_MIGRATION.md
T

1.8 KiB

Projects Interface Pattern Migration

Projects uses a full-height list-detail workspace. It owns native portfolio, project, and milestone context; Tasks and Tickets own actionable work, Connectors owns OpenProject transport, and optional integrations remain capability-based.

Surface Task and archetype Consequence and state contract
/projects catalogue Search/filter and select a planning object Loading, empty, failed, filtered, and selected states retain the list context. Restricted records are removed by backend authorization rather than cosmetically hidden.
Object detail Inspect status, dates, ownership/membership evidence, outcomes, benefits, dependencies, and links The selected identity, key, state, and revision remain visible while detail changes.
Create/edit dialog Adaptive create/edit Core Dialog supplies focus containment and return. Stable key, state, visibility, parent, dates, and change reason have labelled controls; save errors remain attached to the dialog.
Revisioned save Consequential corrective action Every successful save creates immutable revision and lifecycle evidence under optimistic concurrency. The required change reason explains the new record.

Creating and editing require the Projects write permission. Restricted visibility changes who may read an object, so its consequence is explained at the field and enforced by the backend ACL. The workspace reflows to list then detail at narrow widths, preserves semantic button/list behavior, and uses Core buttons, icon buttons, dialog, alerts, loading, status, field labels, scrolling, and documentation help.

Verification:

  • npm run test:interface-pattern
  • Projects service, migration, and manifest tests
  • the Core TypeScript graph, structural localization audit, theme check, module permutations, and full-product bundle budget