docs: reprioritize roadmaps for v1.0 UI essentials and spec compliance#537
docs: reprioritize roadmaps for v1.0 UI essentials and spec compliance#537
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
… essentials Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…signer first for v1.0 Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR reorganizes all four roadmap documents (ROADMAP.md, ROADMAP_SPEC.md, ROADMAP_CONSOLE.md, ROADMAP_DESIGNER.md) to prioritize v1.0 UI essentials and spec compliance over infrastructure work. The original priority order focused on developer experience and UX polish (P1-P5), which is now complete. The new priority order elevates UI-critical features and spec alignment to P0/P1 to ensure the first release is usable and protocol-compliant.
Changes:
- Created new P0 "v1.0 UI Essentials" priority tier focusing on ActionEngine pipeline, metadata API migration, spec-compliant view configs, and navigation compliance
- Elevated spec compliance gaps from P2 → P0 (Timeline/Gallery configs, navigation properties, ListView emptyState)
- Split Console Phase 10 into 10a (v1.0 essential: export, file upload, lookup) and 10b (post-v1.0: import, notifications)
- Scoped Designer Phase 2 to ViewDesigner + DataModelDesigner only (v1.0), deferring PageDesigner/ProcessDesigner/ReportDesigner to Phase 2b
- Moved GA target from Q3 2026 → Q2 2026
- Reorganized completed foundation work (P1-P5) into reference sections to maintain historical context
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.
| File | Description |
|---|---|
| ROADMAP_SPEC.md | Elevated items #64-68, #71-72 from P1/P2 → P0; added v1.0 UI focus header; split ListView spec props by priority (emptyState P0, quickFilters/hiddenFields P1, advanced features P2); moved completed items to dedicated reference section; updated compliance score table with P0/P1 milestones |
| ROADMAP_DESIGNER.md | Split Phase 2 into 2 (v1.0: ViewDesigner + DataModelDesigner) and 2b (post-v1.0: PageDesigner/ProcessDesigner/ReportDesigner); elevated field type selector and FieldTypeName type to P0; updated success metrics table to reflect v1.0 scope |
| ROADMAP_CONSOLE.md | Split Phase 10 into 10a (v1.0: export, file upload, related lookup) and 10b (post-v1.0: import, dashboard DnD, notifications); flagged ActionEngine + metadata API migration as v1.0 blockers; updated GA milestone Q3 → Q2 2026; added v1.0 priority focus header |
| ROADMAP.md | Restructured priorities from P1-P5 (DX/UX/Components/Docs/Mobile) → P0-P6 with new P0 "v1.0 UI Essentials" and P1 "Spec Compliance" leading; moved completed foundation work to reference sections; added v1.0 Release Criteria metrics table; updated roadmap status footer to reflect new focus |
| | 15 | ListView spec properties not implemented | P2 | plugin-list, types | 10+ ListViewSchema properties from spec not implemented: quickFilters, hiddenFields, fieldOrder, virtualScroll, conditionalFormatting, inlineEdit, exportOptions, emptyState, aria, rowHeight | | ||
| | 11 | TimelineConfig not defined in @object-ui/types | **P0** 🎯 | types, plugin-timeline | TimelineConfigSchema from spec not consumed; uses non-standard `dateField` instead of `startDateField` | | ||
| | 12 | GalleryConfig type not exported from @object-ui/types | **P0** 🎯 | types, plugin-list | GalleryConfigSchema from spec implemented but type not exported from index.ts | | ||
| | 13 | Navigation `width`/`view` properties not applied | **P0** 🎯 | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | All view plugins accept navigation via useNavigationOverlay but ignore `width` and `view` properties | |
There was a problem hiding this comment.
Gap #13 claims that navigation.width properties are "ignored" by all view plugins, but this is inaccurate. The infrastructure is fully implemented:
- useNavigationOverlay hook (packages/react/src/hooks/useNavigationOverlay.ts:104) extracts width from navigation.width
- NavigationOverlay component (packages/components/src/custom/navigation-overlay.tsx:89,148,165) accepts width as a prop and applies it via getWidthStyle()
- All view plugins spread the navigation object to NavigationOverlay, which includes the width property
The width property IS being applied. The navigation.view property, however, is correctly identified as not implemented (defined but unused). Consider splitting this gap into two separate items or correcting the description to only mention navigation.view.
| | 13 | Navigation `width`/`view` properties not applied | **P0** 🎯 | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | All view plugins accept navigation via useNavigationOverlay but ignore `width` and `view` properties | | |
| | 13 | Navigation `view` property not applied | **P0** 🎯 | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | All view plugins accept navigation via useNavigationOverlay; `width` is propagated to NavigationOverlay, but `view` is defined in the spec and currently unused by these plugins | |
| | 13 | ~~Implement AriaPropsSchema injection in component renderers~~ | components, react | ~~1 week~~ | ✅ Complete — resolveAriaProps in SchemaRenderer | | ||
| | 14 | ~~Implement FocusManagementSchema and FocusTrapConfigSchema runtime~~ | react | ~~1 week~~ | ✅ Complete — useFocusTrap hook | | ||
| | 64 | Define TimelineConfig type in @object-ui/types aligned with spec TimelineConfigSchema | types, plugin-timeline | 3 days | Pending | | ||
| | 65 | Export GalleryConfig type from @object-ui/types index.ts | types | 1 day | Pending | |
There was a problem hiding this comment.
This P0 task references gap #65 which claims GalleryConfig is "not exported" from @object-ui/types, but that's incorrect—it's already exported (packages/types/src/index.ts:956-957). This task should be removed or marked as complete since there's no work to be done.
| | 65 | Export GalleryConfig type from @object-ui/types index.ts | types | 1 day | Pending | | |
| | 65 | Export GalleryConfig type from @object-ui/types index.ts | types | 1 day | Completed — already exported | |
| | 64 | Define TimelineConfig type in @object-ui/types aligned with spec TimelineConfigSchema | types, plugin-timeline | 3 days | Pending | | ||
| | 65 | Export GalleryConfig type from @object-ui/types index.ts | types | 1 day | Pending | | ||
| | 66 | Add navigation property support to ObjectGallery | plugin-list | 3 days | Pending | | ||
| | 67 | Apply navigation.width to drawer/modal overlays in all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Pending | |
There was a problem hiding this comment.
This task claims to "Apply navigation.width" but as documented in comment on line 960, navigation.width is already implemented and applied. The infrastructure exists in useNavigationOverlay (extracts width) and NavigationOverlay (applies via getWidthStyle). Only navigation.view is missing. Either mark this task complete or update it to focus solely on navigation.view implementation.
| | 67 | Apply navigation.width to drawer/modal overlays in all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Pending | | |
| | 67 | navigation.width already implemented for drawer/modal overlays via useNavigationOverlay / NavigationOverlay | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | N/A | Done | |
| | 64 | Define TimelineConfig type in @object-ui/types aligned with spec TimelineConfigSchema | types, plugin-timeline | 3 days | Pending | | ||
| | 65 | Export GalleryConfig type from @object-ui/types index.ts | types | 1 day | Pending | | ||
| | 66 | Add navigation property support to ObjectGallery | plugin-list | 3 days | Pending | | ||
| | 67 | Apply navigation.width to drawer/modal overlays in all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Pending | |
There was a problem hiding this comment.
Same issue as line 979 - navigation.width is already implemented and applied throughout the codebase. This P1 task incorrectly lists it as pending work. Only navigation.view needs to be implemented. Update the description or mark the width portion as complete.
| | 67 | Apply navigation.width to drawer/modal overlays in all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Pending | | |
| | 67 | Apply navigation.width to drawer/modal overlays in all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Complete | |
| - [x] Add README for `@object-ui/plugin-report` — report builder, viewer, exporter, scheduling | ||
| #### P0.2 View Plugin Navigation Compliance | ||
| - [ ] Add navigation property support to ObjectGallery (currently only accepts `onCardClick`) | ||
| - [ ] Apply `navigation.width` to drawer/modal overlays in Kanban, Calendar, Gantt, Timeline, Map, View plugins |
There was a problem hiding this comment.
This task references navigation.width which is already implemented (see ROADMAP_SPEC.md comments). The infrastructure exists and width is applied. Only navigation.view property needs implementation. Update this P0 item to either mark the width portion complete or focus solely on navigation.view.
| - [ ] Apply `navigation.width` to drawer/modal overlays in Kanban, Calendar, Gantt, Timeline, Map, View plugins | |
| - [x] Apply `navigation.width` to drawer/modal overlays in Kanban, Calendar, Gantt, Timeline, Map, View plugins (completed; see ROADMAP_SPEC.md) |
| #### P0.3 Spec-Compliant View Configs | ||
| - [ ] Define `TimelineConfig` type in `@object-ui/types` aligned with `@objectstack/spec TimelineConfigSchema` | ||
| - [ ] Rename Timeline `dateField` → `startDateField` to match spec naming convention | ||
| - [ ] Export `GalleryConfig` type from `@object-ui/types` index.ts |
There was a problem hiding this comment.
This task says "Export GalleryConfig type from @object-ui/types index.ts" but GalleryConfig is already exported (packages/types/src/index.ts:956). This task should be removed or marked as complete.
| - [ ] Export `GalleryConfig` type from `@object-ui/types` index.ts | |
| - [x] Export `GalleryConfig` type from `@object-ui/types` index.ts |
| | 14 | ObjectGallery lacks navigation support | P1 | plugin-list | ObjectGallery only accepts onCardClick; does not support spec navigation config | | ||
| | 15 | ListView spec properties not implemented | P2 | plugin-list, types | 10+ ListViewSchema properties from spec not implemented: quickFilters, hiddenFields, fieldOrder, virtualScroll, conditionalFormatting, inlineEdit, exportOptions, emptyState, aria, rowHeight | | ||
| | 11 | TimelineConfig not defined in @object-ui/types | **P0** 🎯 | types, plugin-timeline | TimelineConfigSchema from spec not consumed; uses non-standard `dateField` instead of `startDateField` | | ||
| | 12 | GalleryConfig type not exported from @object-ui/types | **P0** 🎯 | types, plugin-list | GalleryConfigSchema from spec implemented but type not exported from index.ts | |
There was a problem hiding this comment.
Gap #12 states that "GalleryConfig type not exported from @object-ui/types" but this is incorrect. Looking at packages/types/src/index.ts lines 956-957, both GalleryConfig and GalleryConfigSchema are already exported from '@objectstack/spec/ui'. This P0 task (line 977) to "Export GalleryConfig type from @object-ui/types index.ts" is redundant and should be removed or marked as complete.
| | 12 | GalleryConfig type not exported from @object-ui/types | **P0** 🎯 | types, plugin-list | GalleryConfigSchema from spec implemented but type not exported from index.ts | | |
| | 12 | ~~GalleryConfig type not exported from @object-ui/types~~ | ~~P0~~ | ~~types, plugin-list~~ | ✅ **Resolved** — GalleryConfig and GalleryConfigSchema are already exported via `@object-ui/types` from `@objectstack/spec/ui`; task was redundant | |
Roadmap priorities were ordered around DX/UX polish (P1-P5, all completed) while pending UI-critical work for v1.0 — spec-compliant view configs, navigation properties, core CRUD features — sat at P2/P3 with no release gating.
Reorganized all four roadmap documents to put v1.0 ship-blocking UI work first.
ROADMAP.md
navigation.width/navigation.view), spec-compliant configs (TimelineConfig, GalleryConfig), ListView spec properties (emptyState, hiddenFields, quickFilters)ROADMAP_SPEC.md
ROADMAP_CONSOLE.md
ROADMAP_DESIGNER.md
FieldTypeNametype + field type selector elevated to P0Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.