Evaluate list view types spec compliance and update ROADMAP_SPEC.md#535
Evaluate list view types spec compliance and update ROADMAP_SPEC.md#535
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…nce evaluation - Evaluate all 7 list view types (grid, kanban, calendar, gantt, timeline, map, gallery) against @objectstack/spec - Add navigation property support matrix (width/view gaps across all plugins) - Document TimelineConfig type alignment gap (dateField vs startDateField) - Document GalleryConfig type export gap - Document 10+ missing ListViewSchema spec properties - Add new critical gaps #11-#15 to section 6.4 - Add new improvement tasks #64-#76 across P1/P2/P3 - Update section 6.1 with detailed per-view-type compliance tables - Update section 6.3 View Enhancements with TimelineConfigSchema gap Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…onsistency Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates ROADMAP_SPEC.md to document an audit of list view type compliance (grid/kanban/calendar/gantt/timeline/map/gallery) against @objectstack/spec v3.0.0, focusing on navigation support, missing config/type definitions, and unimplemented ListViewSchema properties.
Changes:
| | Kanban | KanbanConfigSchema | ✅ | groupByField, summarizeField, columns | — (fully compliant) | | ||
| | Calendar | CalendarConfigSchema | ✅ | startDateField, endDateField, titleField, colorField | — (fully compliant) | | ||
| | Gantt | GanttConfigSchema | ✅ | startDateField, endDateField, titleField, progressField, dependenciesField | — (fully compliant; ObjectUI adds colorField beyond spec) | | ||
| | Gallery | GalleryConfigSchema | ⚠️ | coverField, coverFit, cardSize, titleField, visibleFields | Type implemented but not exported from @object-ui/types index.ts | |
There was a problem hiding this comment.
This row says GalleryConfig is implemented but not exported from @object-ui/types, but packages/types/src/index.ts already re-exports GalleryConfig/GalleryConfigSchema from @objectstack/spec/ui, and ObjectGallery imports GalleryConfig from @object-ui/types. Please correct the compliance note (the gap is about runtime usage, not export).
| | Gallery | GalleryConfigSchema | ⚠️ | coverField, coverFit, cardSize, titleField, visibleFields | Type implemented but not exported from @object-ui/types index.ts | | |
| | Gallery | GalleryConfigSchema | ⚠️ | coverField, coverFit, cardSize, titleField, visibleFields | Type exported from @object-ui/types; runtime renderer does not yet fully consume GalleryConfigSchema properties | |
| | **Notifications** | NotificationSchema, NotificationActionSchema, NotificationConfigSchema, NotificationPositionSchema, NotificationSeveritySchema, NotificationTypeSchema | 🔲 Not Started | Types re-exported; no notification system implemented | | ||
| | **Offline / Sync** | OfflineCacheConfigSchema, OfflineConfigSchema, OfflineStrategySchema, SyncConfigSchema, ConflictResolutionSchema, PersistStorageSchema, EvictionPolicySchema | 🔲 Not Started | Service Worker caching in @object-ui/mobile; spec offline schemas not consumed | | ||
| | **View Enhancements** | ColumnSummarySchema, GalleryConfigSchema, GroupingConfigSchema, GroupingFieldSchema, RowColorConfigSchema, RowHeightSchema, ViewSharingSchema, DensityMode | ⚠️ Partial | Some features exist in plugins (gallery in plugin-list, grouping in plugin-aggrid) but spec schemas not directly consumed | | ||
| | **View Enhancements** | ColumnSummarySchema, GalleryConfigSchema, GroupingConfigSchema, GroupingFieldSchema, RowColorConfigSchema, RowHeightSchema, ViewSharingSchema, TimelineConfigSchema, DensityMode | ⚠️ Partial | ColumnSummary, Grouping, RowColor consumed in plugin-grid; Gallery implemented in plugin-list but type not exported; TimelineConfigSchema not consumed (uses non-standard dateField); RowHeight and DensityMode not yet implemented | |
There was a problem hiding this comment.
This summary line says “Gallery implemented in plugin-list but type not exported”, but @object-ui/types already exports GalleryConfig/GalleryConfigSchema (re-exported from @objectstack/spec/ui). Update this description to avoid tracking an already-resolved gap.
| | **View Enhancements** | ColumnSummarySchema, GalleryConfigSchema, GroupingConfigSchema, GroupingFieldSchema, RowColorConfigSchema, RowHeightSchema, ViewSharingSchema, TimelineConfigSchema, DensityMode | ⚠️ Partial | ColumnSummary, Grouping, RowColor consumed in plugin-grid; Gallery implemented in plugin-list but type not exported; TimelineConfigSchema not consumed (uses non-standard dateField); RowHeight and DensityMode not yet implemented | | |
| | **View Enhancements** | ColumnSummarySchema, GalleryConfigSchema, GroupingConfigSchema, GroupingFieldSchema, RowColorConfigSchema, RowHeightSchema, ViewSharingSchema, TimelineConfigSchema, DensityMode | ⚠️ Partial | ColumnSummary, Grouping, RowColor consumed in plugin-grid; Gallery implemented in plugin-list and consumes GalleryConfigSchema; TimelineConfigSchema not consumed (uses non-standard dateField); RowHeight and DensityMode not yet implemented | |
| | 12 | GalleryConfig type not exported from @object-ui/types | P1 | types, plugin-list | GalleryConfigSchema from spec implemented but type not exported from index.ts | | ||
| | 13 | Navigation `width`/`view` properties not applied | P2 | 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.
Critical gaps #12 and #13 are currently inaccurate: GalleryConfig is already exported from @object-ui/types, and navigation.width is applied by NavigationOverlay in the view plugins that use useNavigationOverlay. These entries should be updated (e.g., remove #12 and change #13 to focus on navigation.view not being consumed).
| | 12 | GalleryConfig type not exported from @object-ui/types | P1 | types, plugin-list | GalleryConfigSchema from spec implemented but type not exported from index.ts | | |
| | 13 | Navigation `width`/`view` properties not applied | P2 | 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 | | |
| | 12 | ~~GalleryConfig type not exported from @object-ui/types~~ | ~~P1~~ | ~~types, plugin-list~~ | ✅ **Resolved** — GalleryConfig type is exported from `@object-ui/types` and consumed by `plugin-list` | | |
| | 13 | Navigation `view` property not applied | P2 | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | All view plugins accept navigation via useNavigationOverlay; `navigation.width` is applied by `NavigationOverlay`, but the `view` property is not yet consumed (default views and ranges remain hard-coded). | |
| | Kanban (plugin-kanban) | ✅ | ✅ | ✅ | ❌ | ❌ | | ||
| | Calendar (plugin-calendar) | ✅ | ✅ | ✅ | ❌ | ❌ | |
There was a problem hiding this comment.
This navigation matrix marks navigation.width as unsupported for Kanban/Calendar, but those plugins render NavigationOverlay with width from useNavigationOverlay, and NavigationOverlay applies it. The width column should be ✅ for these rows.
| | Kanban (plugin-kanban) | ✅ | ✅ | ✅ | ❌ | ❌ | | |
| | Calendar (plugin-calendar) | ✅ | ✅ | ✅ | ❌ | ❌ | | |
| | Kanban (plugin-kanban) | ✅ | ✅ | ✅ | ✅ | ❌ | | |
| | Calendar (plugin-calendar) | ✅ | ✅ | ✅ | ✅ | ❌ | |
| |-----------|--------|---------| | ||
| | Functional Completeness | ✅ Complete | ObjectKanban with drag-drop, column limits, lazy loading | | ||
| | Spec UI Compliance | ✅ Complete | Implements KanbanSchema with columns, cards, groupBy | | ||
| | Spec UI Compliance | ⚠️ Partial | Implements KanbanConfigSchema (groupByField, summarizeField, columns); navigation.mode supported but navigation.width and navigation.view not applied | |
There was a problem hiding this comment.
This row states plugin-kanban doesn’t apply navigation.width, but ObjectKanban renders NavigationOverlay {...useNavigationOverlay(...)} and NavigationOverlay uses width to size drawer/modal/split/popover. Update the compliance note/gaps to mark navigation.width as supported (the missing part is navigation.view).
| | 40 | ~~Consume ColumnSummarySchema, GroupingConfigSchema, RowColorConfigSchema in grid views~~ | plugin-grid, plugin-aggrid | ~~1 week~~ | ✅ Complete — useColumnSummary, useGroupedData, useRowColor | | ||
| | 41 | ~~Consume GalleryConfigSchema and ViewSharingSchema in list plugin~~ | plugin-list | ~~1 week~~ | ✅ Complete — ObjectGallery, useViewSharing | | ||
| | 42 | ~~Consume I18nObjectSchema, LocaleConfigSchema, PluralRuleSchema in i18n package~~ | i18n | ~~1 week~~ | ✅ 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 | |
There was a problem hiding this comment.
Task #67 is listed as Pending, but navigation.width is already applied by NavigationOverlay in plugin-kanban/calendar/gantt/timeline/map and by ObjectView for its drawer/modal. This task should be removed/marked complete or reframed (e.g., add tests) while keeping #68 for navigation.view.
| | 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 — via NavigationOverlay and ObjectView | |
| |-----------|--------|---------| | ||
| | Functional Completeness | ✅ Complete | ListView, ViewSwitcher, ObjectGallery | | ||
| | Spec UI Compliance | ✅ Complete | Multi-view support with 7 view types (grid, kanban, gallery, calendar, timeline, gantt, map) | | ||
| | Spec UI Compliance | ⚠️ Partial | Multi-view support with 7 view types; navigation.width/view propagation incomplete; 10+ ListViewSchema spec properties not yet implemented (quickFilters, hiddenFields, fieldOrder, virtualScroll, conditionalFormatting, inlineEdit, exportOptions, emptyState, aria, rowHeight) | |
There was a problem hiding this comment.
The list plugin compliance note says navigation.width propagation is incomplete, but ListView uses useNavigationOverlay(schema.navigation) and renders NavigationOverlay which applies width. Consider removing navigation.width from the stated gaps; also the “10+ ... properties” parenthetical should include sharing if it’s part of the intended missing list (it’s listed below).
| | Spec UI Compliance | ⚠️ Partial | Multi-view support with 7 view types; navigation.width/view propagation incomplete; 10+ ListViewSchema spec properties not yet implemented (quickFilters, hiddenFields, fieldOrder, virtualScroll, conditionalFormatting, inlineEdit, exportOptions, emptyState, aria, rowHeight) | | |
| | Spec UI Compliance | ⚠️ Partial | Multi-view support with 7 view types; navigation view propagation incomplete; 10+ ListViewSchema spec properties not yet implemented (quickFilters, hiddenFields, fieldOrder, virtualScroll, conditionalFormatting, inlineEdit, exportOptions, emptyState, aria, sharing, rowHeight) | |
| |-----------|--------|---------| | ||
| | Functional Completeness | ✅ Complete | ObjectCalendar, CalendarView with month/week/day views | | ||
| | Spec UI Compliance | ✅ Complete | Implements CalendarConfig from spec (dateField, endField, titleField, colorField, defaultView) | | ||
| | Spec UI Compliance | ⚠️ Partial | Implements CalendarConfigSchema (startDateField, endDateField, titleField, colorField); navigation.mode supported but navigation.width and navigation.view not applied | |
There was a problem hiding this comment.
This claims plugin-calendar doesn’t apply navigation.width, but ObjectCalendar renders NavigationOverlay {...useNavigationOverlay({ navigation: schema.navigation })} and NavigationOverlay applies width styling. Update the compliance note/gaps/improvement plan to remove the width item (keeping navigation.view as not implemented).
| |-----------|--------|---------| | ||
| | Functional Completeness | ✅ Complete | ObjectGantt, GanttView with day/week/month/quarter modes | | ||
| | Spec UI Compliance | ✅ Complete | Directly imports GanttConfigSchema from @objectstack/spec/ui | | ||
| | Spec UI Compliance | ⚠️ Partial | Directly imports GanttConfigSchema from @objectstack/spec/ui; navigation.mode supported but navigation.width and navigation.view not applied; ObjectUI adds colorField (not in spec) | |
There was a problem hiding this comment.
This claims plugin-gantt doesn’t apply navigation.width, but ObjectGantt renders NavigationOverlay {...useNavigationOverlay({ navigation: schema.navigation })} and NavigationOverlay applies width styling. Please update the compliance note/gaps to reflect width support (the remaining gap is navigation.view).
| |-----------|--------|---------| | ||
| | Functional Completeness | ✅ Complete | ObjectMap with marker support using MapLibre GL | | ||
| | Spec UI Compliance | ✅ Complete | Implements ObjectMapSchema with latitudeField, longitudeField, locationField mapping | | ||
| | Spec UI Compliance | ⚠️ Partial | Implements ObjectMapSchema with latitudeField, longitudeField, locationField mapping; navigation.mode supported but navigation.width and navigation.view not applied; no MapConfig in spec (map type has no separate config schema) | |
There was a problem hiding this comment.
This claims plugin-map doesn’t apply navigation.width, but ObjectMap renders NavigationOverlay {...useNavigationOverlay({ navigation: schema.navigation })} and NavigationOverlay applies width styling. Update the compliance note/gaps/improvement plan to remove the width item (keeping navigation.view as the missing part).
Audited all 7 list view types (grid, kanban, calendar, gantt, timeline, map, gallery) against
@objectstack/spec v3.0.0ListViewSchema. Found systematic gaps in navigation property support, missing config type definitions, and unimplemented spec properties.Navigation property coverage
modewidthviewObjectGallery has zero navigation support — only accepts
onCardClick.Critical type gaps
@object-ui/types; plugin usesdateFieldinstead of spec'sstartDateField; missingendDateField,groupByField,colorField,scaleindex.tsquickFilters,hiddenFields,fieldOrder,virtualScroll,conditionalFormatting,inlineEdit,exportOptions,emptyState,aria,rowHeightROADMAP_SPEC.md updates
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.