mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-03-08 01:53:30 +01:00
3.0 KiB
3.0 KiB
Phase 6: UBA System — Richard's Progress
Sprint 1 Session 2 — 18 Feb 2026
Completed this session
STYLE-005: SuggestionBanner wiring (property panel) — COMPLETE
- Created
ElementStyleSectionHost(editor-side React wrapper)- Combines
ElementStyleSection+SuggestionBanner - Uses
useStyleSuggestions()for the active suggestion - Creates local
StyleTokensModelinstance (multiple instances safe — sync via ProjectModel events) - Calls
executeSuggestionAction()on accept,dismissSession/dismissPermanenton ignore/never
- Combines
- Wired into
propertyeditor.ts— drop-in replacement, zero API change - All TS errors resolved
UBA-001: TypeScript type definitions — COMPLETE
packages/noodl-editor/src/editor/src/models/UBA/types.ts- Full discriminated union on
Field.type(string, text, number, boolean, secret, url, select, multi_select) BackendMetadata,Endpoints,AuthConfig,Capabilities,Section,Condition,DebugSchemaParseResult<T>discriminated union +ParseErrortype- Zero external dependencies
UBA-002: SchemaParser — COMPLETE
packages/noodl-editor/src/editor/src/models/UBA/SchemaParser.ts- Accepts pre-parsed JS object (JSON.parse / yaml.load output) — no YAML dep required
- Validates: schema_version, backend (id/name/version/endpoints/auth/capabilities), sections, fields, debug
- Unknown field types → warning, not error (forward-compat)
- Unknown schema major version → warning with best-effort parsing
- All field types validated individually; partial errors collected before failing
packages/noodl-editor/src/editor/src/models/UBA/index.ts— clean barrel exports
UBA-002: SchemaParser unit tests — COMPLETE
packages/noodl-editor/tests/models/UBASchemaParser.test.ts- 22 test cases covering: null/array rejection, missing version, version warning, minimal happy path
- Backend: missing, missing id, missing endpoints.config, optional fields, invalid auth type
- Sections: not array, minimal section, missing id
- Field types: string, boolean, number (min/max), secret, select (+ no-options error), multi_select, unknown type warning
- Debug schema with event_schema
Next session priorities
UBA-003: Field renderers
- 8 field renderer components (one per field type)
FieldRendererfactory component (dispatches onfield.type)- Shared styles (
fields.module.scss) FieldWrapperwith label, description, required indicator
UBA-004: ConfigPanel shell
ConfigPanel.tsx— renders sections + fields from a parsedUBASchemauseConfigFormhook — manages form values, validation, dirty state- Section collapsing,
visible_whencondition evaluation
Tracking
| Task | Status |
|---|---|
| STYLE-005: SuggestionBanner wiring | ✅ DONE |
| UBA-001: TypeScript types | ✅ DONE |
| UBA-002: SchemaParser + tests | ✅ DONE |
| UBA-003: Field renderers | 🔲 NEXT |
| UBA-004: ConfigPanel + hook | 🔲 TODO |