Skip to content

Evaluate list view types spec compliance and update ROADMAP_SPEC.md#535

Merged
hotlong merged 3 commits intomainfrom
copilot/update-roadmap-for-list-views
Feb 16, 2026
Merged

Evaluate list view types spec compliance and update ROADMAP_SPEC.md#535
hotlong merged 3 commits intomainfrom
copilot/update-roadmap-for-list-views

Conversation

Copy link
Contributor

Copilot AI commented Feb 16, 2026

Audited all 7 list view types (grid, kanban, calendar, gantt, timeline, map, gallery) against @objectstack/spec v3.0.0 ListViewSchema. Found systematic gaps in navigation property support, missing config type definitions, and unimplemented spec properties.

Navigation property coverage

Property Grid Kanban Calendar Gantt Timeline Map Gallery
mode
width
view

ObjectGallery has zero navigation support — only accepts onCardClick.

Critical type gaps

  • TimelineConfig — not defined in @object-ui/types; plugin uses dateField instead of spec's startDateField; missing endDateField, groupByField, colorField, scale
  • GalleryConfig — implemented but not exported from types index.ts
  • ListViewSchema — 10+ spec properties unimplemented: quickFilters, hiddenFields, fieldOrder, virtualScroll, conditionalFormatting, inlineEdit, exportOptions, emptyState, aria, rowHeight

ROADMAP_SPEC.md updates

Original prompt

评估所有列表视图类型对spec的支持情况,更新 roadmap,比如日历还不支持navigation属性


💡 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.

@vercel
Copy link

vercel bot commented Feb 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
objectui Ready Ready Preview, Comment Feb 16, 2026 3:20am
objectui-demo Ready Ready Preview, Comment Feb 16, 2026 3:20am
objectui-storybook Ready Ready Preview, Comment Feb 16, 2026 3:20am

Request Review

Copilot AI and others added 2 commits February 16, 2026 03:07
…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>
Copilot AI changed the title [WIP] Evaluate list view types for spec support and update roadmap Evaluate list view types spec compliance and update ROADMAP_SPEC.md Feb 16, 2026
Copilot AI requested a review from hotlong February 16, 2026 03:15
@hotlong hotlong marked this pull request as ready for review February 16, 2026 04:03
Copilot AI review requested due to automatic review settings February 16, 2026 04:03
@hotlong hotlong merged commit ccab04f into main Feb 16, 2026
4 checks passed
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

  • Downgrades Spec UI Compliance ratings and documents per-plugin gaps for navigation + view configs.
  • Adds a per-view navigation support matrix and config schema compliance table.
  • Adds/updates “critical gaps” and new improvement tasks (#64#76) related to list view spec coverage.

| 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 |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
| 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 |

Copilot uses AI. Check for mistakes.
| **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 |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
| **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 |

Copilot uses AI. Check for mistakes.
Comment on lines +956 to +957
| 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 |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
| 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). |

Copilot uses AI. Check for mistakes.
Comment on lines +892 to +893
| Kanban (plugin-kanban) | ✅ | ✅ | ✅ | ❌ | ❌ |
| Calendar (plugin-calendar) | ✅ | ✅ | ✅ | ❌ | ❌ |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
| Kanban (plugin-kanban) |||| ||
| Calendar (plugin-calendar) |||| ||
| Kanban (plugin-kanban) |||| ||
| Calendar (plugin-calendar) |||| ||

Copilot uses AI. Check for mistakes.
|-----------|--------|---------|
| 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 |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
| 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 |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
| 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 |

Copilot uses AI. Check for mistakes.
|-----------|--------|---------|
| 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) |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
| 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) |

Copilot uses AI. Check for mistakes.
|-----------|--------|---------|
| 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 |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
|-----------|--------|---------|
| 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) |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
|-----------|--------|---------|
| 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) |
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants