finos / finos/morphir-ui

Intent: edit Morphir configuration with provenance across TOML and YAML

Open
#26 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
10h 5m
Merged PRs (30d)
27

Description

## Parent

Split from #13. The multi-project workspace intent from that issue has been delivered; this issue owns the remaining configuration-editing intent.

## What to build

Build a Morphir configuration editor for both `morphir.toml` and `morphir.yaml`.

The editor presents a structured form and a CodeMirror 6 source view over the same selected document. Both views stay synchronized. The editor preserves the document's serialization format, comments, ordering where possible, and keys the current UI does not understand.

For every effective leaf value and array, show the source kind and declaring path recorded by Morphir's configuration loader. Keep that effective-value provenance distinct from the user's selected write target. A user must be able to see when a higher-precedence source, such as an environment variable, masks an edit to a file.

The editor follows Morphir's shared configuration loading rules and Morphir Home resolution. Host-specific I/O belongs behind Effect services so the shared UI works with browser-local, Electron, and CLI-connected providers according to their capabilities.

Model document lifecycle with algebraic data types and type states. Invalid source text remains editable and retains its diagnostics without being represented as a valid form model. Do not expose resolved secret values.

## Sources of truth

- [Morphir TOML specification](https://github.com/finos/morphir/blob/main/docs/spec/morphir-toml/morphir-toml-specification.md)
- [Morphir YAML specification](https://github.com/finos/morphir/tree/main/docs/spec/morphir-yaml)
- [Configuration merge and provenance rules](https://github.com/finos/morphir/blob/main/docs/spec/morphir-toml/morphir-toml-merge-rules.md)
- Canonical configuration and loader implementations in `finos/morphir-rust`

## Acceptance criteria

- [ ] The editor discovers, loads, edits, validates, and saves both `morphir.toml` and `morphir.yaml` without silently converting between formats.
- [ ] A location containing conflicting TOML and YAML candidates reports Morphir's standard ambiguity diagnostic and does not choose one implicitly.
- [ ] Form and CodeMirror 6 views edit the same document and remain synchronized.
- [ ] Invalid source text and parse diagnostics remain visible without discarding the user's text or treating it as a valid form state.
- [ ] Form edits preserve comments, unknown keys, and unrelated content, byte-identically where the document format permits.
- [ ] Every effective leaf value and array displays its winning source kind and declaring file path when applicable.
- [ ] The UI distinguishes effective provenance from the selected write target and shows when a higher-precedence source masks an edit.
- [ ] Writes land atomically in the selected writable scope. Unsupported scopes are visibly unavailable for providers that cannot access them.
- [ ] Browser-local, Electron, and CLI-connected providers pass one shared configuration-document conformance suite.
- [ ] Secret references may be edited, but resolved secret contents never enter UI state or diagnostics.
- [ ] Application preferences under `MORPHIR_HOME/ui/` remain separate from Morphir project and workspace configuration.

## Tracking

Beads epic `morphir-ui-epo` tracks the implementation slices and dependencies.

## Blocked by

None. The first ready slice is `morphir-ui-epo.1`, which models the complete configuration document.

Contributor guide

Open the contributing guide

Research direction

Start with Beads slice morphir-ui-epo.1, then read the Morphir TOML and YAML specifications and the merge and provenance rules listed in the issue. Compare those requirements with the canonical configuration and loader implementations in finos/morphir-rust. Done means the shared document model supports the stated lifecycle, provenance, diagnostics, format preservation, and provider capabilities without exposing resolved secrets.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
developer-experience, frontend, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.