Skip to content

openbuilt-page-editor v1.1 follow-up: stubs + validator marks + undo/redo + tests #9

@rubenvdlinde

Description

@rubenvdlinde

The MVP of openbuilt-page-editor (PR #4) ships a working visual designer for the four high-value page types (index, detail, dashboard, form) plus the custom editor, with all other types passing through the StubPageEditor for lossless round-trip. This issue tracks the deferred v1.1 work flagged in openspec/changes/openbuilt-page-editor/tasks.md.

Scope

Page-type structured editors (5 stubs → real editors)

  • 4.4 LogsPageEditor.vue — register/schema OR source picker (one-of), columns list
  • 4.5 SettingsPageEditor.vue — section list with exactly-one-of fields[] / component / widgets[] per section; built-in widget types version-info and register-mapping
  • 4.6 ChatPageEditor.vueconversationSource OR postUrl (one-of) picker plus optional schema
  • 4.7 FilesPageEditor.vue — folder picker + allowed-types selector
  • 4.9 CustomPageEditor.vuecustomComponents registry picker (dropdown when preview is active, free-text fallback)

Validator inline marks (REQ-OBPD-011)

  • 5.5 Wire each sub-editor to call the useManifestValidator register(pathPrefix, fieldRef) / unregister(pathPrefix) API so validator errors paint inline marks on the offending field, not just the side-panel list

Editor ergonomics

  • OQ-1 Undo/redo stack for the in-flight manifest (the editor currently has no Ctrl+Z)
  • OQ-3 i18n-key picker — autocomplete from the existing t('openbuilt', '…') corpus when editing label / title fields
  • OQ-2 Concurrency control — guard against two users editing the same Application simultaneously (depends on chain spec spec(openbuilt-rbac): per-virtual-app RBAC change artifacts #6)

Test coverage (tasks.md 7.1 - 7.6)

  • 7.1 Vitest per sub-editor mounting with sample config, asserting update:modelValue payload
  • 7.2 Vitest manifest round-trip suite (load → serialise → bytewise equivalence)
  • 7.3 Vitest useManifestValidator suite (300ms debounce, path-to-field map, non-blocking)
  • 7.4 Vitest useLivePreview suite (feature-detect contract + fallback affordance)
  • 7.5 Playwright end-to-end editor smoke against the seeded hello-world Application
  • 7.6 Playwright fallback test when chain spec Apply bootstrap-openbuilt — core implementation (sections 1–3) #2 is not installed

Docs

  • 8.1 README — short "Visual designer" section pointing to the Design tab as default, Raw JSON as integrator fallback

Related

Filed at planning time per the workspace memory rule "Always file issues for deferred work".

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions