diff --git a/ROADMAP.md b/ROADMAP.md index 102644521..1c2b1450f 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,10 +1,10 @@ # ObjectUI Development Roadmap -> **Last Updated:** February 13, 2026 +> **Last Updated:** February 16, 2026 > **Current Version:** v0.5.x > **Spec Version:** @objectstack/spec v3.0.0 > **Client Version:** @objectstack/client v3.0.0 -> **Current Priority:** 🎯 Developer Experience · User Experience · Component Excellence · Documentation · Mobile UX +> **Current Priority:** 🎯 v1.0 UI Essentials · Spec Compliance · Component Excellence · Developer Experience · Mobile UX --- @@ -14,13 +14,13 @@ ObjectUI is a universal Server-Driven UI (SDUI) engine built on React + Tailwind **Where We Are:** The foundation is solid — 35 packages, 91+ components, 200+ test files, 68 Storybook stories, 98% spec compliance, and all 42 builds passing. The @objectstack/spec v3.0.0 migration is complete, and the Console v1.0 production build is optimized and shipping. -**What's Next:** Before expanding to marketplace or cloud features, we are focusing on **developer experience** and **user experience**. A full-repository audit (Feb 2026) identified concrete improvement areas across all 35 packages, 4 examples, the Console app, 128 documentation pages, and 68 Storybook stories. The re-prioritized focus is: +**What's Next:** Priorities have been reorganized (Feb 16, 2026) to focus on **v1.0 release UI essentials** — the minimum viable set of UI features and spec compliance required for a usable first release. Non-UI infrastructure, marketplace, and cloud features are deferred until after v1.0 ships. The re-prioritized focus is: -1. **🛠️ Developer Experience (DX)** — Zero-friction onboarding, discoverable APIs, helpful errors, complete docs -2. **🎨 User Experience (UX)** — Console polish, i18n completeness, accessibility, performance at scale -3. **🧩 Component Excellence** — Every component polished, well-tested, and delightful to use -4. **📖 Documentation** — Complete API docs, rich Storybook stories, tutorials, and guides -5. **📱 Mobile User Experience** — Responsive layouts, touch-friendly interactions, PWA support +1. **🎯 v1.0 UI Essentials** — Core UI functionality required for a usable first release: spec-compliant views, working navigation, CRUD flows, and Console completeness +2. **📐 Spec Compliance (UI-Facing)** — Align all view plugins with @objectstack/spec contracts: TimelineConfig, GalleryConfig, navigation properties, ListView spec properties +3. **🧩 Component & Plugin Excellence** — Polish every view plugin for production use: empty states, error handling, edge cases, toolbar consistency +4. **🛠️ Developer Experience (DX)** — Zero-friction onboarding, discoverable APIs, helpful errors, complete docs (✅ largely complete) +5. **📱 Mobile User Experience** — Responsive layouts, touch-friendly interactions, PWA support (✅ largely complete, testing remaining) > 📄 Companion documents: > - [SPEC_COMPLIANCE_EVALUATION.md](./SPEC_COMPLIANCE_EVALUATION.md) — Per-package spec compliance (98% current) @@ -129,168 +129,210 @@ All 4 phases complete across 5 designers (Page, View, DataModel, Process, Report ## 🎯 Current Priorities -> All foundation work is complete. Priorities re-ordered based on the Feb 2026 audit, with DX and UX front and center. +> Priorities re-ordered (Feb 16, 2026) to focus on **v1.0 UI essentials first**. All foundation DX/UX work is complete. The new priority order puts UI-facing functionality and spec compliance ahead of infrastructure and non-UI tasks, ensuring the first release delivers a usable, spec-compliant product. -### P1. Developer Experience 🛠️ +### P0. v1.0 UI Essentials — Must Ship 🎯 -**Goal:** A developer can go from `git clone` to a running app in under 5 minutes, with discoverable APIs, helpful errors, and complete documentation at every step. +**Goal:** Every core UI workflow works end-to-end in the Console: CRUD, views, navigation, dashboards, and reports. These are the minimum features required for v1.0 to be usable. -#### P1.1 Zero-Friction Onboarding -- [x] Create MIGRATION_GUIDE.md at repo root (currently referenced in README but missing) -- [x] Streamline `npx create-objectui-app` scaffolding with working Vite + Tailwind templates -- [x] Ensure `pnpm install && pnpm dev` starts the console with zero additional configuration -- [x] Add a standalone "Hello World" example (5-file, <50 lines total) demonstrating JSON → UI flow -- [x] Provide copy-paste-ready schema examples in the root README for instant gratification - -#### P1.2 API Discoverability & JSDoc -- [x] Add JSDoc comments to all 20+ exported React hooks (`useExpression`, `useActionRunner`, `useViewData`, `useDynamicApp`, `usePerformance`, `useCrudShortcuts`, etc.) -- [x] Add JSDoc with usage examples to key types in `@object-ui/types` (`SchemaNode`, `FieldMetadata`, `ViewSchema`, `ActionSchema`, etc.) -- [x] Document all context providers (`ThemeContext`, `AuthContext`, `I18nContext`, `NotificationContext`, `DndContext`) with usage examples -- [x] Ensure TypeScript autocompletion works smoothly for all schema types via strict discriminated unions - -#### P1.3 Error Messages & Debugging -- [x] Create error code system (`OBJUI-001`, `OBJUI-002`, etc.) with documentation links -- [x] Improve SchemaErrorBoundary to show actionable fix suggestions in dev mode (e.g., "Missing field 'type'. Did you mean to use a PageSchema?") -- [x] Replace generic `console.warn()` calls in core with structured error factory -- [x] Add `OBJECTUI_DEBUG=true` mode with schema resolution tracing and component render timing -- [x] Ensure console warnings for deprecated APIs include migration code snippets +#### P0.1 Console Core UI Completeness +- [ ] Implement declarative `ActionEngine` pipeline (events → `ActionDef[]` dispatch) — replaces callback-based `useObjectActions` +- [ ] Migrate Console from static config to runtime metadata API (`getView()`/`getApp()`/`getPage()`) +- [ ] Remove `as any` cast in `objectstack.shared.ts` — use properly typed config +- [ ] Clean up MSW workarounds in `objectstack.config.ts` +- [ ] CSV/Excel export for grid views (core data workflow) +- [ ] File upload fields in forms (required for real-world data entry) +- [ ] Related record lookup in forms (essential for relational data) -#### P1.4 CLI Tooling Polish -- [x] Verify `objectui init` produces a buildable project with all dependencies resolved -- [x] Enhance `objectui doctor` to check TypeScript version, Tailwind config, and peer dependencies -- [x] Verify `create-plugin` template produces a plugin with working tests and Storybook story -- [x] Add `objectui validate ` command for schema linting with actionable error messages -- [x] Resolve TODO/FIXME items in CLI code (`doctor.ts`, `dev.ts`, `check.ts`) - -#### P1.5 Package READMEs (10 Missing) -- [x] Add README for `@object-ui/auth` — authentication guards, login/register forms, AuthContext -- [x] Add README for `@object-ui/tenant` — multi-tenancy support, TenantProvider, branding -- [x] Add README for `@object-ui/permissions` — RBAC, PermissionGuard, usePermissions hook -- [x] Add README for `@object-ui/i18n` — 11 locales, RTL support, I18nProvider, formatting utilities -- [x] Add README for `@object-ui/mobile` — responsive hooks, gesture support, touch optimization -- [x] Add README for `@object-ui/collaboration` — live cursors, presence, comment threads, conflict resolution -- [x] Add README for `@object-ui/plugin-ai` — AI form assistance, recommendations, NL query -- [x] Add README for `@object-ui/plugin-designer` — 5 visual designers (Page, View, DataModel, Process, Report) -- [x] Add README for `@object-ui/plugin-workflow` — approval processes, workflow designer -- [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 +- [ ] Implement `navigation.view` property across all view plugins ---- +#### 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 +- [ ] Implement Timeline spec properties: `endDateField`, `groupByField`, `colorField`, `scale` -### P2. User Experience 🎨 +#### P0.4 ListView Spec Properties (v1.0 Subset) +- [ ] Implement `emptyState` spec property (custom no-data UI — critical for UX) +- [ ] Implement `hiddenFields` and `fieldOrder` spec properties (view customization) +- [ ] Implement `quickFilters` spec property (predefined filter buttons) -**Goal:** Every interaction in the Console and rendered UIs is fast, polished, accessible, and works flawlessly in all supported languages. +### P1. Spec Compliance — UI-Facing 📐 -#### P2.1 Console i18n Completeness -- [x] Migrate hardcoded strings in `LoadingScreen.tsx` to i18n keys ("ObjectStack Console", "Initializing application...") -- [x] Migrate hardcoded strings in `KeyboardShortcutsDialog.tsx` to i18n keys -- [x] Audit all `apps/console/src/components/` for remaining hardcoded UI strings -- [x] Remove all Chinese UI strings; enforce English-only with i18n key lookups -- [x] Add locale switcher to Console settings panel +**Goal:** Achieve 100% compliance with `@objectstack/spec` for all UI-facing contracts. These items improve user experience and ensure protocol compatibility. -#### P2.2 Console Architecture Cleanup -- [x] Consolidate hand-wired ObjectView into plugin-based ObjectView (eliminate duplication) -- [x] Replace lightweight local data adapter with official `@object-ui/data-objectstack` -- [x] Replace custom `defineConfig()` with standard `defineStack()` configuration -- [x] Register all missing plugins properly in the plugin registry -- [x] Convert hardcoded view tabs to schema-driven configuration +#### P1.1 View Enhancement Properties +- [ ] Implement `rowHeight` spec property in ListView +- [ ] Add `DensityMode` support to grid and list views +- [ ] Implement `conditionalFormatting` spec property in ListView +- [ ] Implement `inlineEdit` spec property in ListView -#### P2.3 Accessibility & Inclusive Design -- [x] Run axe-core audit on Console pages (10 tests in `console-accessibility.test.tsx` covering layout, sidebar, header, dashboard, list, form, loading, error, empty, and dialog views) -- [x] Ensure focus management across all Console navigation flows (sidebar → content → modal → back) -- [x] Verify screen reader experience for complex views (Grid, Kanban, Calendar — `accessibility.test.tsx` in each plugin with ARIA roles, landmarks, and announcements) -- [x] Test all color combinations against WCAG 2.1 AA contrast ratios in both light and dark themes (`wcag-contrast.test.tsx` with HSL→RGB conversion and WCAG AA threshold checks) -- [x] Add `prefers-reduced-motion` respect to all animations (page transitions, DnD, skeleton loading) - -#### P2.4 Performance at Scale -- [x] Benchmark Grid/Kanban/Calendar with 1,000+ and 10,000+ records; set performance baselines (`performance-benchmark.test.tsx` in each plugin) -- [x] Implement virtual scrolling for large data grids (plugin-grid VirtualGrid with @tanstack/react-virtual) -- [x] Profile and optimize initial Console load (target: < 2s on 3G — `console-load-performance.test.tsx` validates lazy routes, bundle budget, render timing, and MSW hygiene) -- [x] Add loading skeleton states for all async data views -- [x] Test view switching (grid ↔ kanban ↔ calendar) state preservation with large datasets (`ViewSwitching.test.tsx`, `view-states.test.tsx`) - -#### P2.5 Console Feature Completeness -- [x] Verify CRUD end-to-end for all object types (create, read, update, delete, bulk operations — `crud-e2e.test.tsx` with full lifecycle tests) -- [x] Verify command palette (⌘K) searches across all entity types (`command-palette.test.tsx` with search, navigation, and entity type tests) -- [x] Ensure dark/light theme toggle is consistent across all pages with no flash (`theme-toggle.test.tsx` with localStorage persistence, class application, and system preference tests) -- [x] Test responsive layout on tablet (768px) and mobile (375px) breakpoints (`responsive-layout.test.tsx` with Tailwind class assertions) -- [x] Verify inline editing in grid view with save/cancel/validation feedback (`InlineEditing.test.tsx` with Enter/Escape keys, save/cancel buttons, validation errors) +#### P1.2 Data Export & Import +- [ ] Implement `exportOptions` spec property in ListView (csv, xlsx, json, pdf) +- [ ] Add `aria` spec property support to ListView +- [ ] Add `sharing` spec property support to ListView ---- +#### P1.3 Advanced View Features +- [ ] Inline task editing for Gantt chart +- [ ] Marker clustering for map plugin (Supercluster for 100+ markers) +- [ ] Combo chart support (e.g., bar + line overlay) +- [ ] Column reorder/resize persistence for grid +- [ ] Drag-to-reschedule calendar events (move between dates) -### P3. Component Excellence 🧩 +### P2. Component & Plugin Excellence 🧩 (Completed Foundation) **Goal:** Every component is polished, consistent, well-tested, and delightful to use. -#### P3.1 Component Quality Audit -- [x] Audit all 91+ components for API consistency (prop naming, default values, error states — `api-consistency.test.tsx` with 119 tests covering data-slot, className, cn(), forwardRef, displayName, naming conventions, and composition patterns) -- [x] Ensure every component has complete TypeScript types with JSDoc descriptions (all 47 UI primitives, 14 custom components, 36 field widgets with JSDoc) -- [x] Standardize error/empty/loading states across all components using shared primitives -- [x] Add missing edge-case handling (overflow, truncation, null data, large datasets — `extreme-inputs.test.tsx`, `view-states.test.tsx` across plugins) - -#### P3.2 Field Widget Polish -- [x] Audit all 36+ field widgets for consistent validation feedback (error message placement, color, icon — `validation-feedback.test.tsx`) -- [x] Ensure all fields work correctly in all form variants (simple, tabbed, wizard, split, drawer, modal — `form-variants.test.tsx`) -- [x] Test field widgets with extreme inputs (10,000-char strings, MAX_SAFE_INTEGER, emoji, RTL text — `extreme-inputs.test.tsx`) -- [x] Polish date/time/datetime pickers for timezone edge cases and locale formatting (`datetime-timezone.test.tsx` with 55 tests covering DST boundaries, midnight, locales, and invalid dates) - -#### P3.3 Plugin View Robustness -- [x] Verify all 13+ view types handle empty data, loading, and error states gracefully (`view-states.test.tsx` in Grid, Kanban, Calendar plugins) -- [x] Ensure consistent toolbar, filter, and sort behavior across all views (`toolbar-consistency.test.tsx` with 29 tests on toolbar, filter, sort, search, view switcher, and named views) -- [x] Validate view switching preserves selection state, scroll position, and filter criteria (`ViewSwitching.test.tsx`, `view-switching.test.tsx`) -- [x] Add E2E tests for critical view workflows (Grid → detail → back, Kanban drag-and-drop — `view-workflows.spec.ts` in e2e/, `dnd-undo-integration.test.tsx`) - -#### P3.4 Test Coverage -- [x] Increase test coverage from 80% → 90% (target: 4,000+ tests — added 300+ new tests across accessibility, performance, API consistency, extreme inputs, datetime, DnD integration, snapshot, toolbar, and console load) -- [x] Identify and cover components with < 80% test coverage (field widgets, view plugins, and console components now have comprehensive test suites) -- [x] Add integration tests for complex interactions (DnD + undo/redo in `dnd-undo-integration.test.tsx`, form validation + submit in `crud-e2e.test.tsx`) -- [x] Add snapshot tests for critical UI output consistency (`snapshot.test.tsx` for Badge/Button/Card/Empty/Spinner, `snapshot-critical.test.tsx` for Alert/Dialog/Tabs/Accordion/Avatar/Progress/Tooltip/Breadcrumb/Separator/Skeleton) - -#### P3.5 Storybook Enhancement -- [x] Ensure every exported component has at least one Storybook story (target: 91+ stories from current 68) -- [x] Add interactive controls (args) for all major props in each story (CSF3 args pattern used across all 77 stories) -- [x] Add "edge case" stories per component (empty data, error state, loading, overflow, RTL — `fields-edge-cases.stories.tsx` with 20 edge-case stories) -- [x] Organize stories with consistent categorization (Components / Fields / Layout / Plugins — Introduction.mdx and Accessibility.mdx added as Storybook MDX landing pages) +> ✅ **Foundation complete** — P2 items from the Feb 2026 audit are all resolved. The subsections below document the completed work. ---- +#### P2.1 Component Quality Audit ✅ +- [x] Audit all 91+ components for API consistency (prop naming, default values, error states) +- [x] Ensure every component has complete TypeScript types with JSDoc descriptions +- [x] Standardize error/empty/loading states across all components +- [x] Add missing edge-case handling (overflow, truncation, null data, large datasets) -### P4. Documentation 📖 +#### P2.2 Field Widget Polish ✅ +- [x] Audit all 36+ field widgets for consistent validation feedback +- [x] Ensure all fields work correctly in all form variants +- [x] Test field widgets with extreme inputs +- [x] Polish date/time/datetime pickers for timezone edge cases -**Goal:** Comprehensive, accurate, and easy-to-navigate documentation that is a developer's best friend. +#### P2.3 Plugin View Robustness ✅ +- [x] Verify all 13+ view types handle empty data, loading, and error states gracefully +- [x] Ensure consistent toolbar, filter, and sort behavior across all views +- [x] Validate view switching preserves selection state, scroll position, and filter criteria +- [x] Add E2E tests for critical view workflows -#### P4.1 Guide Content -- [x] Verify "Getting Started" guide (`quick-start.md`) stays current with latest API -- [x] Write "Building a CRUD App" end-to-end tutorial (complete walkthrough: schema → data → deploy) -- [x] Write "Custom Plugin Development" guide with best practices and template walkthrough -- [x] Write "Theming & Customization" guide (Tailwind config, cva variants, dark mode, CSS custom properties) -- [x] Add deployment guides for examples (Docker, Vercel, Railway configurations) +#### P2.4 Test Coverage ✅ +- [x] Increase test coverage from 80% → 90% (target: 4,000+ tests) +- [x] Identify and cover components with < 80% test coverage +- [x] Add integration tests for complex interactions +- [x] Add snapshot tests for critical UI output consistency -#### P4.2 API Reference -- [x] Generate API reference docs from TypeScript types (TypeDoc configured in `typedoc.json` with `pnpm docs:api`, covering types/core/react/components/fields/layout) -- [x] Document all schema types with annotated examples (ViewSchema, ActionSchema, FieldSchema, etc.) -- [x] Add interactive schema playground on documentation site (JSON editor → live preview — `content/docs/guide/schema-playground.md` with 5 example schemas) -- [x] Document expression engine syntax and all built-in functions with examples +#### P2.5 Storybook Enhancement ✅ +- [x] Ensure every exported component has at least one Storybook story +- [x] Add interactive controls (args) for all major props +- [x] Add "edge case" stories per component +- [x] Organize stories with consistent categorization -#### P4.3 Storybook as Living Documentation -- [x] Ensure Storybook serves as the primary component reference alongside docs site (Introduction.mdx landing page with architecture overview) -- [x] Add usage documentation (MDX) alongside each component story (Introduction.mdx and Accessibility.mdx in stories-json) -- [x] Add accessibility notes for each component (keyboard shortcuts, ARIA roles, screen reader behavior — Accessibility.mdx with per-component-type ARIA reference) -- [x] Deploy Storybook to a publicly accessible URL (`storybook-deploy.yml` GitHub Actions workflow configured) +### P3. Developer Experience 🛠️ (Completed Foundation) -#### P4.4 Architecture & Internals -- [x] Document the layer architecture (spec → types → core → react → components → plugins) with data flow diagrams -- [x] Document the plugin system architecture (registration, lifecycle, lazy loading) -- [x] Add troubleshooting guide for common development issues -- [x] Document CI/CD pipeline architecture (13 workflows, their triggers and responsibilities) +**Goal:** A developer can go from `git clone` to a running app in under 5 minutes. ---- +> ✅ **Foundation complete** — All DX items from the Feb 2026 audit are resolved. + +#### P3.1 Zero-Friction Onboarding ✅ +- [x] Create MIGRATION_GUIDE.md at repo root +- [x] Streamline `npx create-objectui-app` scaffolding +- [x] Ensure `pnpm install && pnpm dev` starts the console with zero additional configuration +- [x] Add a standalone "Hello World" example +- [x] Provide copy-paste-ready schema examples in the root README + +#### P3.2 API Discoverability & JSDoc ✅ +- [x] Add JSDoc comments to all 20+ exported React hooks +- [x] Add JSDoc with usage examples to key types in `@object-ui/types` +- [x] Document all context providers with usage examples +- [x] Ensure TypeScript autocompletion works smoothly for all schema types + +#### P3.3 Error Messages & Debugging ✅ +- [x] Create error code system (`OBJUI-001`, `OBJUI-002`, etc.) +- [x] Improve SchemaErrorBoundary to show actionable fix suggestions in dev mode +- [x] Replace generic `console.warn()` calls with structured error factory +- [x] Add `OBJECTUI_DEBUG=true` mode +- [x] Ensure console warnings for deprecated APIs include migration code snippets + +#### P3.4 CLI Tooling Polish ✅ +- [x] Verify `objectui init` produces a buildable project +- [x] Enhance `objectui doctor` to check TypeScript version, Tailwind config, and peer dependencies +- [x] Verify `create-plugin` template produces a plugin with working tests +- [x] Add `objectui validate ` command +- [x] Resolve TODO/FIXME items in CLI code -### P5. Mobile User Experience 📱 +#### P3.5 Package READMEs ✅ +- [x] All 37 packages now have READMEs + +### P4. User Experience 🎨 (Completed Foundation) + +**Goal:** Every interaction in the Console and rendered UIs is fast, polished, accessible, and works flawlessly in all supported languages. + +> ✅ **Foundation complete** — All UX items from the Feb 2026 audit are resolved. + +#### P4.1 Console i18n Completeness ✅ +- [x] Migrate hardcoded strings in `LoadingScreen.tsx` to i18n keys +- [x] Migrate hardcoded strings in `KeyboardShortcutsDialog.tsx` to i18n keys +- [x] Audit all `apps/console/src/components/` for remaining hardcoded UI strings +- [x] Remove all Chinese UI strings; enforce English-only with i18n key lookups +- [x] Add locale switcher to Console settings panel + +#### P4.2 Console Architecture Cleanup ✅ +- [x] Consolidate hand-wired ObjectView into plugin-based ObjectView +- [x] Replace lightweight local data adapter with official `@object-ui/data-objectstack` +- [x] Replace custom `defineConfig()` with standard `defineStack()` +- [x] Register all missing plugins properly in the plugin registry +- [x] Convert hardcoded view tabs to schema-driven configuration + +#### P4.3 Accessibility & Inclusive Design ✅ +- [x] Run axe-core audit on Console pages +- [x] Ensure focus management across all Console navigation flows +- [x] Verify screen reader experience for complex views +- [x] Test all color combinations against WCAG 2.1 AA contrast ratios +- [x] Add `prefers-reduced-motion` respect to all animations + +#### P4.4 Performance at Scale ✅ +- [x] Benchmark Grid/Kanban/Calendar with 1,000+ and 10,000+ records +- [x] Implement virtual scrolling for large data grids +- [x] Profile and optimize initial Console load (target: < 2s on 3G) +- [x] Add loading skeleton states for all async data views +- [x] Test view switching state preservation with large datasets + +#### P4.5 Console Feature Completeness ✅ +- [x] Verify CRUD end-to-end for all object types +- [x] Verify command palette (⌘K) searches across all entity types +- [x] Ensure dark/light theme toggle is consistent across all pages +- [x] Test responsive layout on tablet (768px) and mobile (375px) +- [x] Verify inline editing in grid view with save/cancel/validation feedback + +### P5. Documentation 📖 (Completed Foundation) + +**Goal:** Comprehensive, accurate, and easy-to-navigate documentation. + +> ✅ **Foundation complete** — All documentation items from the Feb 2026 audit are resolved. + +#### P5.1 Guide Content ✅ +- [x] Verify "Getting Started" guide stays current with latest API +- [x] Write "Building a CRUD App" end-to-end tutorial +- [x] Write "Custom Plugin Development" guide +- [x] Write "Theming & Customization" guide +- [x] Add deployment guides for examples + +#### P5.2 API Reference ✅ +- [x] Generate API reference docs from TypeScript types +- [x] Document all schema types with annotated examples +- [x] Add interactive schema playground on documentation site +- [x] Document expression engine syntax and all built-in functions + +#### P5.3 Storybook as Living Documentation ✅ +- [x] Ensure Storybook serves as the primary component reference +- [x] Add usage documentation (MDX) alongside each component story +- [x] Add accessibility notes for each component +- [x] Deploy Storybook to a publicly accessible URL + +#### P5.4 Architecture & Internals ✅ +- [x] Document the layer architecture with data flow diagrams +- [x] Document the plugin system architecture +- [x] Add troubleshooting guide for common development issues +- [x] Document CI/CD pipeline architecture + +### P6. Mobile User Experience 📱 **Goal:** Every component and page delivers a native-quality experience on phones and tablets — responsive layout, touch-friendly interactions, and fast performance on mobile networks. -> **Existing Infrastructure:** `@object-ui/mobile` provides `useBreakpoint` (isMobile/isTablet/isDesktop), `useResponsive`, `useGesture`, `useTouchTarget`, `MobileProvider`, and `ResponsiveContainer`. `@object-ui/layout` provides `ResponsiveGrid` with Tailwind-aligned breakpoints. These building blocks are production-ready but under-adopted across plugin views and the Console app. +> ✅ **Implementation largely complete.** Remaining items are testing and quality assurance. -#### P5.1 Plugin Views — Mobile-First Layouts +#### P6.1 Plugin Views — Mobile-First Layouts Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultrawide). @@ -370,7 +412,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw - [x] Collapse task details on mobile (show name only, expand on tap) - [x] Add responsive zoom levels (day view on mobile, week on tablet, month on desktop) -#### P5.2 Console Pages — Responsive Layouts +#### P6.2 Console Pages — Responsive Layouts ##### AppHeader - [x] Ensure all header actions are accessible on mobile (overflow menu for hidden actions) @@ -401,7 +443,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw - [x] Sticky action buttons at bottom on mobile - [x] Add swipe-to-dismiss for mobile dialogs -#### P5.3 Core Component Primitives +#### P6.3 Core Component Primitives ##### DataTable (`components/renderers/complex`) - [x] Add outer `overflow-x-auto` wrapper with `-webkit-overflow-scrolling: touch` @@ -421,7 +463,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw - [x] Tab navigation: horizontal scroll with `overflow-x-auto` for many tabs - [x] DropdownMenu: use bottom sheet pattern on mobile via `useIsMobile()` detection -#### P5.4 Mobile Infrastructure Enhancements +#### P6.4 Mobile Infrastructure Enhancements ##### Touch & Gesture System - [x] Integrate `usePullToRefresh` into all data-fetching views (Grid, List, Timeline, Calendar) @@ -447,7 +489,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw - [x] Add viewport meta tag validation in Console HTML template - [x] Support safe-area-inset for notched devices (`env(safe-area-inset-*)`) -#### P5.5 Testing & Quality Assurance +#### P6.5 Testing & Quality Assurance - [x] Add Playwright mobile viewport tests (iPhone SE 375px, iPhone 14 390px, iPad 768px) - [ ] Add visual regression tests for all views at mobile breakpoints @@ -457,7 +499,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw - [ ] Test on-screen keyboard interaction for all form fields - [ ] Performance benchmark on simulated mobile CPU (4× slowdown) and 3G network -#### P5.6 Mobile-Specific Success Metrics +#### P6.6 Mobile-Specific Success Metrics | Metric | Target | How Measured | |--------|--------|--------------| @@ -473,7 +515,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw ## 🔮 Future Vision (Deferred) -> The following items are **not** in the current sprint. They will be re-evaluated once P1–P4 are substantially complete. +> The following items are **not** in the current sprint. They will be re-evaluated once P0–P1 (v1.0 UI essentials and spec compliance) are complete. ### Ecosystem & Marketplace - Plugin marketplace website with search, ratings, and install count @@ -501,30 +543,38 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw ## 📈 Success Metrics -| Metric | Current (Feb 2026) | Short-Term Target | How Measured | +### v1.0 Release Criteria (P0) + +| Metric | Current | v1.0 Target | How Measured | +|--------|---------|-------------|--------------| +| **Spec Compliance** | 98% | 100% (UI-facing) | ROADMAP_SPEC.md | +| **View Navigation** | 6/7 views | 7/7 views (incl. Gallery) | Navigation compliance matrix | +| **ListView Spec Props** | 0/11 | 3/11 (emptyState, hiddenFields, quickFilters) | Spec property coverage | +| **Timeline Spec Alignment** | Non-standard | Fully aligned (startDateField, endDateField, etc.) | Type contract audit | +| **Console CRUD** | Callback-based | ActionEngine pipeline | ActionEngine integration test | +| **Build Status** | 42/42 pass | 42/42 pass | `pnpm build` | + +### Quality Metrics (Ongoing) + +| Metric | Current (Feb 2026) | Target | How Measured | |--------|--------------------|--------------------|--------------| -| **Test Coverage** | 80% → 90%+ | 90% | `pnpm test:coverage` | +| **Test Coverage** | 90%+ | 90%+ | `pnpm test:coverage` | | **Test Count** | 3,535+ | 4,000+ | `pnpm test` summary | -| **Spec Compliance** | 98% | 100% | SPEC_COMPLIANCE_EVALUATION.md | | **Storybook Stories** | 78 | 91+ (1 per component) | Story file count | | **Package READMEs** | 37/37 (100%) | 37/37 (100%) | README.md presence | | **Hooks with JSDoc** | 20+/20+ (100%) | 20+/20+ (100%) | Grep `/** */` in hooks | | **Console i18n Coverage** | 100% | 100% | No hardcoded strings | -| **Build Status** | 42/42 pass | 42/42 pass | `pnpm build` | | **WCAG AA Compliance** | Full Console pages | Full Console pages | axe-core audit | | **CLI Commands Working** | 11 | 11 (all verified) | `objectui doctor` | | **TODO/FIXME Count** | 0 files | 0 | Grep `TODO\|FIXME\|HACK` | -| **Mobile Responsive Views** | Partial (2/13) | 13/13 (100%) | Playwright mobile tests | -| **Mobile Lighthouse Score** | Not measured | ≥ 90 | Lighthouse CI mobile preset | -| **Touch Target Compliance** | Not measured | 100% ≥ 44px | Automated touch target scan | -### DX Success Criteria +### DX Success Criteria ✅ - [x] New developer can `git clone` → `pnpm install` → `pnpm dev` → see Console in < 5 minutes - [x] `objectui init my-app` creates a buildable project with zero errors - [x] Every exported function/hook/type has JSDoc with at least one usage example - [x] Invalid schema input produces an error message with fix suggestion and docs link -### UX Success Criteria +### UX Success Criteria ✅ - [x] Console loads in < 2s on simulated 3G connection - [x] All Console UI strings are internationalized (0 hardcoded strings) - [x] Grid view handles 10,000+ records without jank (< 100ms interaction latency) @@ -543,7 +593,7 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw | Risk | Mitigation | |------|------------| -| **New developer abandons due to poor onboarding** | P1.1 zero-friction setup; MIGRATION_GUIDE.md; "Hello World" example | +| **v1.0 ships without spec compliance** | P0 prioritizes UI-facing spec compliance; non-UI spec areas deferred to P1 | | **Spec changes (post v3.0.0)** | Strict "import, never redefine" rule; type updates propagate automatically | | **Performance regression** | Performance budgets in CI, PerformanceConfigSchema monitoring, 10K-record benchmarks | | **i18n regression (new hardcoded strings)** | ESLint rule to detect string literals in JSX; i18n coverage metric in CI | @@ -556,9 +606,9 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw ## 📚 Reference Documents -- [SPEC_COMPLIANCE_EVALUATION.md](./SPEC_COMPLIANCE_EVALUATION.md) — Per-package v3.0.0 compliance (98% current) -- [OBJECTSTACK_CLIENT_EVALUATION.md](./OBJECTSTACK_CLIENT_EVALUATION.md) — Client SDK evaluation (100% protocol coverage) -- [DESIGNER_UX_ANALYSIS.md](./DESIGNER_UX_ANALYSIS.md) — Designer UX improvement plan +- [ROADMAP_SPEC.md](./ROADMAP_SPEC.md) — Per-package @objectstack/spec v3.0.0 compliance evaluation (98% current) +- [ROADMAP_CONSOLE.md](./ROADMAP_CONSOLE.md) — Console development roadmap with phase-by-phase progress +- [ROADMAP_DESIGNER.md](./ROADMAP_DESIGNER.md) — Designer UX analysis and improvement plan - [CONTRIBUTING.md](./CONTRIBUTING.md) — Contribution guidelines - [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) — Developer quick reference @@ -575,6 +625,6 @@ Each plugin view must work seamlessly from 320px (small phone) to 2560px (ultraw --- -**Roadmap Status:** 🎯 Active — Developer Experience · User Experience · Component Excellence · Documentation +**Roadmap Status:** 🎯 Active — v1.0 UI Essentials · Spec Compliance · Component Excellence **Next Review:** March 15, 2026 **Contact:** hello@objectui.org | https://github.com/objectstack-ai/objectui diff --git a/ROADMAP_CONSOLE.md b/ROADMAP_CONSOLE.md index 1b9133a36..e88a0d4a0 100644 --- a/ROADMAP_CONSOLE.md +++ b/ROADMAP_CONSOLE.md @@ -1,11 +1,12 @@ # ObjectStack Console — Complete Development Roadmap -> **Last Updated:** February 14, 2026 +> **Last Updated:** February 16, 2026 > **Current Version:** v0.5.2 > **Target Version:** v1.0.0 (GA) > **Spec Alignment:** @objectstack/spec v3.0.2 > **Bootstrap (Phase 0):** ✅ Complete > **Phases 1-9:** ⚠️ Mostly Complete (see verified status below) +> **Priority Focus:** 🎯 UI-essential features for v1.0 release --- @@ -434,76 +435,80 @@ These were the initial tasks to bring the console prototype to production-qualit ## 5. UI Feature Roadmap +> **Re-prioritized (Feb 16, 2026):** Features marked as "v1.0 Essential" must ship before GA. Phase 10 items split into v1.0-essential and post-v1.0. + ### 5.1 Object Management -| Feature | Status | Phase | -|---------|--------|-------| -| Grid view (sort, filter, search) | ✅ Done | — | -| Kanban board | ✅ Done | — | -| Calendar view | ✅ Done | — | -| Timeline view | ✅ Done | — | -| Gallery view | ✅ Done | — | -| Map view | ✅ Done | — | -| Gantt chart | ✅ Done | — | -| Chart view | ✅ Done | — | -| Inline editing (grid) | ✅ Done | — | -| Bulk actions (select + execute) | ✅ Done | Phase 2 | -| Column reordering & persistence | ✅ Done | Phase 7 | -| Saved filters / views | ✅ Done | Phase 3 | -| Export (CSV, Excel, PDF) | 🔲 Planned | Phase 10 | -| Import (CSV, Excel) | 🔲 Planned | Phase 10 | +| Feature | Status | Priority | Phase | +|---------|--------|----------|-------| +| Grid view (sort, filter, search) | ✅ Done | — | — | +| Kanban board | ✅ Done | — | — | +| Calendar view | ✅ Done | — | — | +| Timeline view | ✅ Done | — | — | +| Gallery view | ✅ Done | — | — | +| Map view | ✅ Done | — | — | +| Gantt chart | ✅ Done | — | — | +| Chart view | ✅ Done | — | — | +| Inline editing (grid) | ✅ Done | — | — | +| Bulk actions (select + execute) | ✅ Done | — | Phase 2 | +| Column reordering & persistence | ✅ Done | — | Phase 7 | +| Saved filters / views | ✅ Done | — | Phase 3 | +| **Export (CSV, Excel, PDF)** | 🔲 Planned | **🎯 v1.0 Essential** | Phase 10a | +| Import (CSV, Excel) | 🔲 Planned | Post v1.0 | Phase 10b | ### 5.2 Forms & Records -| Feature | Status | Phase | -|---------|--------|-------| -| Create/edit dialog | ✅ Done | — | -| Field type mapping | ✅ Done | — | -| Record detail page | ✅ Done | — | -| Record drawer (sheet) | ✅ Done | — | -| Form variants (tabbed, wizard, split) | ✅ Done | — | -| Conditional fields (dependsOn) | ✅ Done | — | -| Field validation | ✅ Done | — | -| File upload fields | 🔲 Planned | Phase 10 | -| Rich text editor fields | 🔲 Planned | Phase 10 | -| Related record lookup | 🔲 Planned | Phase 10 | -| Audit trail (field change history) | 🔲 Planned | Phase 10 | +| Feature | Status | Priority | Phase | +|---------|--------|----------|-------| +| Create/edit dialog | ✅ Done | — | — | +| Field type mapping | ✅ Done | — | — | +| Record detail page | ✅ Done | — | — | +| Record drawer (sheet) | ✅ Done | — | — | +| Form variants (tabbed, wizard, split) | ✅ Done | — | — | +| Conditional fields (dependsOn) | ✅ Done | — | — | +| Field validation | ✅ Done | — | — | +| **File upload fields** | 🔲 Planned | **🎯 v1.0 Essential** | Phase 10a | +| **Related record lookup** | 🔲 Planned | **🎯 v1.0 Essential** | Phase 10a | +| Rich text editor fields | 🔲 Planned | Post v1.0 | Phase 10b | +| Audit trail (field change history) | 🔲 Planned | Post v1.0 | Phase 10b | ### 5.3 Dashboards & Reports -| Feature | Status | Phase | -|---------|--------|-------| -| Dashboard renderer | ✅ Done | — | -| Chart widgets | ✅ Done | — | -| Report viewer | ✅ Done | — | -| Report builder | ✅ Done | — | -| Dashboard drag & drop layout | 🔲 Planned | Phase 10 | -| Real-time dashboard auto-refresh | ✅ Done | Phase 6 | -| Report export (PDF, Excel) | 🔲 Planned | Phase 10 | -| Scheduled reports (email) | 🔲 Planned | Phase 10 | +| Feature | Status | Priority | Phase | +|---------|--------|----------|-------| +| Dashboard renderer | ✅ Done | — | — | +| Chart widgets | ✅ Done | — | — | +| Report viewer | ✅ Done | — | — | +| Report builder | ✅ Done | — | — | +| Real-time dashboard auto-refresh | ✅ Done | — | Phase 6 | +| Report export (PDF, Excel) | 🔲 Planned | Post v1.0 | Phase 10b | +| Dashboard drag & drop layout | 🔲 Planned | Post v1.0 | Phase 10b | +| Scheduled reports (email) | 🔲 Planned | Post v1.0 | Phase 10b | ### 5.4 Navigation & UX -| Feature | Status | Phase | -|---------|--------|-------| -| Multi-app switcher | ✅ Done | — | -| Recursive navigation tree | ✅ Done | — | -| Command palette (⌘+K) | ✅ Done | — | -| Expression-based visibility | ✅ Done | Phase 1 | -| Dark/light theme | ✅ Done | — | -| Per-app branding | ✅ Done | — | -| Breadcrumbs | ✅ Done | — | -| Keyboard shortcuts | ✅ Done | — | -| Mobile-responsive layout | ✅ Done | Phase 8 | -| Language switcher | ✅ Done | Phase 4 | -| Notification center | 🔲 Planned | Phase 10 | -| Activity feed | 🔲 Planned | Phase 10 | -| Global search (cross-object) | ✅ Done | — | +| Feature | Status | Priority | Phase | +|---------|--------|----------|-------| +| Multi-app switcher | ✅ Done | — | — | +| Recursive navigation tree | ✅ Done | — | — | +| Command palette (⌘+K) | ✅ Done | — | — | +| Expression-based visibility | ✅ Done | — | Phase 1 | +| Dark/light theme | ✅ Done | — | — | +| Per-app branding | ✅ Done | — | — | +| Breadcrumbs | ✅ Done | — | — | +| Keyboard shortcuts | ✅ Done | — | — | +| Mobile-responsive layout | ✅ Done | — | Phase 8 | +| Language switcher | ✅ Done | — | Phase 4 | +| Global search (cross-object) | ✅ Done | — | — | +| Notification center | 🔲 Planned | Post v1.0 | Phase 10b | +| Activity feed | 🔲 Planned | Post v1.0 | Phase 10b | --- ## 6. Execution Timeline +> **Re-prioritized (Feb 16, 2026):** UI-essential features are now the immediate focus for v1.0 release. + ``` 2026 Q1 (Feb 7-13) — BOOTSTRAP COMPLETE ✅ ═══════════════════════════════════════════════════════════ @@ -521,10 +526,17 @@ These were the initial tasks to bring the console prototype to production-qualit Phase 8: Offline / PWA ██████████████ ✅ Complete Phase 9: NavigationConfig Spec ██████████████ ✅ Complete -2026 Q2-Q3 (Apr-Sep) +2026 Q1-Q2 (Mar-Apr) — v1.0 UI ESSENTIALS 🎯 (NEW PRIORITY) ═══════════════════════════════════════════════════════════ - Phase 10: Advanced Features ██████████░░░░ Planned - v1.0.0 GA Release ████░░░░░░░░░░ Stabilization + Phase 2 Completion: ActionEngine ██░░░░░░░░░░░░ → v1.0 blocker + Phase 3 Completion: Metadata API ██░░░░░░░░░░░░ → v1.0 blocker + Phase 10a: Core UI Features ████░░░░░░░░░░ Export, File upload, Lookup + Spec Compliance: View Configs ████░░░░░░░░░░ Timeline, Gallery, Navigation + +2026 Q2-Q3 (May-Sep) +═══════════════════════════════════════════════════════════ + Phase 10b: Advanced Features ██████████░░░░ Dashboard DnD, Notifications + v1.0.0 GA Release ████████░░░░░░ Stabilization ``` ### Milestone Summary @@ -533,9 +545,9 @@ These were the initial tasks to bring the console prototype to production-qualit |-----------|---------|------|-------------| | **Bootstrap** | v0.5.0 | ✅ Feb 7, 2026 | 10 sub-phases: data layer, plugins, i18n, routing, DX | | **Alpha** | v0.5.2 | ✅ Feb 14, 2026 | Expressions + Partial Actions + Metadata adapter + i18n + RBAC | -| **Beta** | v0.8.0 | Planned | Complete Action System + Server-driven metadata + MSW cleanup | -| **RC** | v0.9.0 | Planned | Full feature set + Performance + NavigationConfig | -| **GA** | v1.0.0 | Q3 2026 | Production-ready enterprise console | +| **Beta** | v0.8.0 | Planned | ActionEngine + Server-driven metadata + Spec-compliant views | +| **RC** | v0.9.0 | Planned | Core UI features (export, file upload, lookup) + Spec compliance 100% (UI) | +| **GA** | v1.0.0 | Q2 2026 | Production-ready enterprise console | --- @@ -675,10 +687,10 @@ Each app has its own navigation tree, branding, and permissions. The sidebar and - [x] `defineStack()` used for config (Zod validation pending) - [x] All UI strings in English; i18n keys via `useObjectTranslation` -### Phase 1-3 (Foundation) ⚠️ +### Phase 1-3 (Foundation) ⚠️ — v1.0 Blockers - [x] 100% of navigation items respect `visible` expressions -- [ ] All CRUD actions dispatched through declarative `ActionEngine` pipeline -- [ ] Console fetches app config from server at runtime (currently static) +- [ ] **🎯 v1.0:** All CRUD actions dispatched through declarative `ActionEngine` pipeline +- [ ] **🎯 v1.0:** Console fetches app config from server at runtime (currently static) ### Phase 4-6 (Enterprise) ✅ - [x] 10 languages supported with runtime switching @@ -694,10 +706,18 @@ Each app has its own navigation tree, branding, and permissions. The sidebar and - [x] All 8 view plugins support NavigationConfig specification (7 modes) - [x] `useNavigationOverlay` hook + `NavigationOverlay` component pattern -### Phase 10 (Advanced) — Planned -- [ ] CSV/Excel import and export +### Phase 10a (v1.0 Essential UI Features) — 🎯 Priority +- [ ] **🎯 v1.0:** CSV/Excel export for grid views +- [ ] **🎯 v1.0:** File upload fields in forms +- [ ] **🎯 v1.0:** Related record lookup in forms + +### Phase 10b (Post-v1.0 Advanced Features) +- [ ] CSV/Excel import - [ ] Dashboard drag-and-drop layout +- [ ] Rich text editor fields - [ ] Notification center with activity feed +- [ ] Scheduled reports (email) +- [ ] Audit trail (field change history) --- diff --git a/ROADMAP_DESIGNER.md b/ROADMAP_DESIGNER.md index 0f1c9d09a..2907cba84 100644 --- a/ROADMAP_DESIGNER.md +++ b/ROADMAP_DESIGNER.md @@ -3,12 +3,16 @@ > **Last Updated:** February 16, 2026 > **Package:** `@object-ui/plugin-designer` > **Source:** `packages/plugin-designer/src/` +> **Priority Focus:** 🎯 v1.0 essential designer features — ViewDesigner and DataModelDesigner are the highest priority for first release usability ## Executive Summary All 5 designers in `@object-ui/plugin-designer` have functional foundations — component palettes, canvas rendering, selection state, and basic CRUD — but need significant UX -polish to reach enterprise quality. Key gaps identified across the suite: +polish to reach enterprise quality. **For v1.0**, the ViewDesigner and DataModelDesigner +are prioritized as they directly affect the core user workflow (defining data models and +configuring views). PageDesigner, ProcessDesigner, and ReportDesigner are deferred to +post-v1.0 as advanced authoring tools. Key gaps identified across the suite: | Gap | Severity | Affected | |-----|----------|----------| @@ -410,7 +414,9 @@ This is the **most complete** designer: ## 8. Implementation Phases -### Phase 1: Accessibility & Polish (Current Sprint) +> **Re-prioritized (Feb 16, 2026):** Phase 2 now focuses on v1.0-essential designers (ViewDesigner, DataModelDesigner) first. PageDesigner, ProcessDesigner, and ReportDesigner interaction improvements are deferred to Phase 3. + +### Phase 1: Accessibility & Polish ✅ Complete - [x] Add `aria-label` to all icon-only buttons across all 5 designers - [x] Add `role` attributes (`toolbar`, `region`, `tablist`, `tab`, `tabpanel`) to interactive containers @@ -425,23 +431,42 @@ This is the **most complete** designer: **Estimated effort:** 3–5 developer days -### Phase 2: Interaction Layer (Next Sprint) +### Phase 2: v1.0 Essential Interaction (🎯 Current Priority) + +> Focus on ViewDesigner and DataModelDesigner — the two designers that directly affect the core user workflow. + +**ViewDesigner (v1.0 Essential):** +- [ ] 🎯 Column drag-to-reorder via `@dnd-kit/core` (replace up/down buttons with drag handles) +- [ ] 🎯 Add `Ctrl+S`/`Cmd+S` keyboard shortcut to save +- [ ] 🎯 Add field type selector dropdown with icons from `DESIGNER_FIELD_TYPES` +- [ ] 🎯 Column width validation (min/max/pattern check) + +**DataModelDesigner (v1.0 Essential):** +- [ ] 🎯 Entity drag-to-move on canvas +- [ ] 🎯 Inline editing for entity labels (click to edit) +- [ ] 🎯 Field type selector dropdown (replaces hardcoded `'text'` type) +- [ ] 🎯 Confirmation dialogs for destructive actions (delete entity cascades to relationships) + +**Shared Infrastructure:** +- [ ] 🎯 Implement `useDesignerHistory` hook (command pattern with undo/redo stacks) +- [ ] 🎯 Wire undo/redo to ViewDesigner and DataModelDesigner -- [ ] Implement drag-and-drop for canvas elements using `@dnd-kit/core` (shared with `@object-ui/react`'s `DndProvider`) - - PageDesigner: Component drag-to-reorder and drag-to-position - - ViewDesigner: Column drag-to-reorder - - DataModelDesigner: Entity drag-to-move - - ProcessDesigner: Node drag-to-move - - ReportDesigner: Element drag-to-reposition within sections -- [ ] Implement undo/redo via `useDesignerHistory` hook (command pattern with undo/redo stacks) -- [ ] Add confirmation dialogs for destructive actions (delete entity with cascade, delete node with cascade) +**Estimated effort:** 6–8 developer days + +### Phase 2b: Remaining Interaction Layer (Post-v1.0) + +> PageDesigner, ProcessDesigner, and ReportDesigner interaction improvements. + +- [ ] PageDesigner: Component drag-to-reorder and drag-to-position +- [ ] ProcessDesigner: Node drag-to-move +- [ ] ReportDesigner: Element drag-to-reposition within sections - [ ] Implement edge creation UI in ProcessDesigner (click source port → click target port) -- [ ] Add inline editing for entity labels in DataModelDesigner - [ ] Add property editing for node labels/types in ProcessDesigner +- [ ] Add confirmation dialogs for ProcessDesigner destructive actions (delete node cascades to edges) -**Estimated effort:** 8–12 developer days +**Estimated effort:** 5–7 developer days -### Phase 3: Advanced Features (Q2 2026) +### Phase 3: Advanced Features (Post-v1.0) - [ ] Full property editors for all designers: - PageDesigner: Component props editor (type-aware) @@ -460,7 +485,7 @@ This is the **most complete** designer: **Estimated effort:** 15–25 developer days -### Phase 4: Collaboration Integration (Q3 2026) +### Phase 4: Collaboration Integration (Deferred) - [ ] Wire `CollaborationProvider` into each designer's state management - Each state mutation calls `sendOperation()` with a typed operation payload @@ -485,15 +510,16 @@ This is the **most complete** designer: ## 9. Success Metrics -| Metric | Current | Phase 1 Target | Phase 2 Target | Phase 3 Target | -|--------|---------|----------------|----------------|----------------| -| WCAG 2.1 AA compliance | 0% | 80% | 95% | 100% | -| Keyboard navigable | ❌ No | ⚠️ Partial | ✅ Full | ✅ Full | -| Undo/Redo functional | ❌ No | ❌ No | ✅ Yes | ✅ Yes | -| Drag-and-drop functional | ❌ No | ❌ No | ✅ Yes | ✅ Yes | +| Metric | Current | Phase 1 ✅ | Phase 2 (v1.0) | Phase 3 (Post-v1.0) | +|--------|---------|------------|----------------|---------------------| +| WCAG 2.1 AA compliance | 80% | 80% | 90% | 100% | +| Keyboard navigable | ⚠️ Partial | ⚠️ Partial | ✅ View + DataModel | ✅ Full | +| Undo/Redo functional | ❌ No | ❌ No | ✅ View + DataModel | ✅ All | +| Drag-and-drop functional | ❌ No | ❌ No | ✅ View + DataModel | ✅ All | +| Field type selector | ❌ No | ❌ No | ✅ View + DataModel | ✅ All | | i18n ready | ❌ No | ❌ No | ❌ No | ✅ Yes | -| Responsive panels | ❌ No | ❌ No | ⚠️ Partial | ✅ Yes | -| Collaboration connected | ❌ No | ⚠️ Status only | ⚠️ Status only | ✅ Full | +| Responsive panels | ❌ No | ❌ No | ❌ No | ✅ Yes | +| Collaboration connected | ⚠️ Status only | ⚠️ Status only | ⚠️ Status only | ✅ Full | | Property editors complete | ~15% | ~25% | ~50% | ~90% | | Empty state guidance | 1/5 | 5/5 | 5/5 | 5/5 | | Confirmation on destructive actions | 0/5 | 0/5 | 5/5 | 5/5 | @@ -857,17 +883,19 @@ by category. ### 10.7 Priority & Phasing -| Priority | Task | Effort | -|----------|------|--------| -| 🔴 P0 | Create `DESIGNER_FIELD_TYPES` constant | 0.5 day | -| 🔴 P0 | Add field type selector dropdown to DataModelDesigner | 1 day | -| 🟠 P1 | Add Fields palette category to PageDesigner | 1 day | -| 🟠 P1 | Add `FieldTypeName` type and update `DataModelField` | 0.5 day | -| 🟡 P2 | Enhance ViewDesigner field type badges with icons | 0.5 day | -| 🟡 P2 | Complete `mapFieldTypeToFormType` for all 36 types | 0.5 day | -| 🟢 P3 | Type-specific property editors per field type | 3–5 days | - -**Total estimated effort:** 7–9.5 developer days +> **Re-prioritized (Feb 16, 2026):** Field type selector for DataModelDesigner and ViewDesigner are v1.0 essentials. PageDesigner palette expansion is post-v1.0. + +| Priority | Task | Effort | v1.0? | +|----------|------|--------|-------| +| 🔴 P0 | Create `DESIGNER_FIELD_TYPES` constant | 0.5 day | 🎯 Yes | +| 🔴 P0 | Add field type selector dropdown to DataModelDesigner | 1 day | 🎯 Yes | +| 🔴 P0 | Add `FieldTypeName` type and update `DataModelField` | 0.5 day | 🎯 Yes | +| 🟠 P1 | Enhance ViewDesigner field type badges with icons | 0.5 day | 🎯 Yes | +| 🟡 P2 | Add Fields palette category to PageDesigner | 1 day | Post-v1.0 | +| 🟡 P2 | Complete `mapFieldTypeToFormType` for all 36 types | 0.5 day | Post-v1.0 | +| 🟢 P3 | Type-specific property editors per field type | 3–5 days | Post-v1.0 | + +**Total estimated effort:** 7–9.5 developer days (v1.0 portion: ~2.5 days) --- diff --git a/ROADMAP_SPEC.md b/ROADMAP_SPEC.md index 7f4a69717..a5d7a0232 100644 --- a/ROADMAP_SPEC.md +++ b/ROADMAP_SPEC.md @@ -1,10 +1,11 @@ # ObjectUI Spec Compliance Evaluation -> **Date:** February 12, 2026 +> **Date:** February 16, 2026 > **Spec Version:** @objectstack/spec v3.0.0 > **ObjectUI Version:** v0.5.x > **Scope:** All 35 packages — components, plugins, and infrastructure > **Build Status:** ✅ 42/42 build tasks pass | ✅ 3185+ tests pass +> **Priority Focus:** 🎯 UI-facing spec compliance for v1.0 release --- @@ -940,95 +941,85 @@ Each package is rated against three dimensions: ### 6.4 Critical Gaps Across All Packages +> **Priority re-assigned (Feb 16, 2026):** UI-facing gaps elevated to P0 for v1.0 release. + | # | Gap | Priority | Affected Packages | Impact | |---|-----|----------|-------------------|--------| | 1 | ~~DataScope module not implemented~~ | ~~P0~~ | ~~core~~ | ✅ **Resolved** — DataScopeManager fully implemented with row-level filters | | 2 | ~~AI plugin handlers are placeholders~~ | ~~P0~~ | ~~plugin-ai~~ | ✅ **Resolved** — Real implementations in AIFormAssist, NLQueryInput, AIRecommendations | | 3 | ~~DetailView API fetching incomplete~~ | ~~P1~~ | ~~plugin-detail~~ | ✅ **Resolved** — RelatedList and DetailView support API data sources | | 4 | ~~ReportViewer data refresh TODO~~ | ~~P1~~ | ~~plugin-report~~ | ✅ **Resolved** — onRefresh callback and LiveReportExporter implemented | -| 5 | Workflow canvas uses custom implementation | P2 | plugin-workflow | Custom canvas works; React Flow integration deferred to P2 | +| 5 | Workflow canvas uses custom implementation | P2 | plugin-workflow | Custom canvas works; React Flow integration deferred post-v1.0 | | 6 | ~~Designer schema persistence missing~~ | ~~P1~~ | ~~plugin-designer~~ | ✅ **Resolved** — useSchemaPersistence hook with pluggable adapter | | 7 | ~~Map error handling for coordinates~~ | ~~P1~~ | ~~plugin-map~~ | ✅ **Resolved** — extractCoordinates validates, counts invalid records | | 8 | ~~Real-time collaboration~~ | ~~P2~~ | ~~All~~ | ✅ **Resolved** — @object-ui/collaboration with WebSocket, presence, comments | | 9 | ~~Offline sync~~ | ~~P2~~ | ~~data-objectstack, mobile~~ | ✅ **Resolved** — useOffline hook with sync queue, conflict resolution | | 10 | ~~Advanced formulas missing~~ | ~~P2~~ | ~~core~~ | ✅ **Resolved** — FIND, REPLACE, SUBSTRING, REGEX, STDEV, VARIANCE, PERCENTILE, MEDIAN all implemented | -| 11 | TimelineConfig not defined in @object-ui/types | P1 | types, plugin-timeline | TimelineConfigSchema from spec not consumed; uses non-standard `dateField` instead of `startDateField` | -| 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 | -| 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 | +| 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 | +| 14 | ObjectGallery lacks navigation support | **P0** 🎯 | plugin-list | ObjectGallery only accepts onCardClick; does not support spec navigation config | +| 15 | ListView spec properties not implemented | **P0/P1** 🎯 | plugin-list, types | 10+ ListViewSchema properties from spec — emptyState (P0), quickFilters/hiddenFields/fieldOrder (P1), rest P2 | --- ## 7. Improvement Plan Summary -### Priority 0 — Critical (Address Immediately) +> **Priority re-ordered (Feb 16, 2026):** UI-facing spec compliance tasks are prioritized for v1.0 release. Infrastructure and non-UI tasks are deferred to post-v1.0. -| # | Task | Package | Effort | Status | -|---|------|---------|--------|--------| -| 1 | ~~Implement DataScope module for row-level security~~ | core | ~~2 weeks~~ | ✅ Complete | -| 2 | ~~Replace console.log placeholders in AI plugin handlers~~ | plugin-ai | ~~1 week~~ | ✅ Complete | -| 3 | ~~Uncomment and finalize validators module export in types~~ | types | ~~2 days~~ | ✅ Validators in core/validation | +### Priority 0 — v1.0 UI Essentials (Address Immediately) -### Priority 1 — High (Q1 2026) +> These are the minimum spec compliance items required for v1.0 to be usable. | # | Task | Package | Effort | Status | |---|------|---------|--------|--------| -| 4 | ~~Complete API data fetching in DetailView and RelatedList~~ | plugin-detail | ~~1 week~~ | ✅ Complete | -| 5 | ~~Implement ReportViewer data refresh and aggregation UI~~ | plugin-report | ~~1 week~~ | ✅ Complete | -| 6 | Integrate React Flow for workflow canvas | plugin-workflow | 2 weeks | Deferred (custom canvas works) | -| 7 | ~~Add schema persistence API to designer~~ | plugin-designer | ~~1 week~~ | ✅ Complete — useSchemaPersistence hook | -| 8 | ~~Add coordinate error handling in map plugin~~ | plugin-map | ~~2 days~~ | ✅ Complete | -| 9 | ~~Add string search formulas (FIND, REPLACE, SUBSTRING)~~ | core | ~~3 days~~ | ✅ Complete | -| 10 | ~~Verify and document usePageVariables hook~~ | react | ~~2 days~~ | ✅ Complete | -| 11 | ~~Add updateMany batch documentation in data adapter~~ | data-objectstack | ~~1 day~~ | ✅ Complete | -| 12 | ~~Add useTheme hook for component-level theme access~~ | react | ~~2 days~~ | ✅ Complete — in ThemeContext | -| 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 | | 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 | +| 68 | Implement navigation.view property across all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Pending | +| 71 | Implement emptyState spec property in ListView | plugin-list | 2 days | Pending | +| 72 | Implement Timeline spec properties: endDateField, groupByField, colorField, scale | plugin-timeline | 1 week | Pending | + +### Priority 1 — UI-Facing Spec Compliance (v1.0 Polish) -### Priority 2 — Medium (Q2 2026) +> Enhance the UI experience with spec-defined view features. | # | Task | Package | Effort | Status | |---|------|---------|--------|--------| -| 15 | ~~Add dashboard-level auto-refresh and cross-widget filtering~~ | plugin-dashboard | ~~2 weeks~~ | ✅ Complete — refreshInterval + onRefresh | -| 16 | ~~Add drag-to-reschedule for calendar events~~ | plugin-calendar | ~~1 week~~ | ✅ Complete | +| 69 | Implement quickFilters spec property in ListView | plugin-list | 3 days | Pending | +| 70 | Implement hiddenFields and fieldOrder spec properties in ListView | plugin-list, types | 3 days | Pending | | 17 | Add inline task editing for Gantt chart | plugin-gantt | 1 week | Pending | | 18 | Add marker clustering for map plugin | plugin-map | 1 week | Pending | | 19 | Add combo chart support | plugin-charts | 1 week | Pending | -| 20 | Add form-level permission integration | plugin-form | 1 week | Pending | | 21 | Add column reorder/resize persistence for grid | plugin-grid | 3 days | Pending | +| 63 | Add DensityMode support to grid and list views | plugin-grid, plugin-list | 3 days | Pending | +| 74 | Implement exportOptions spec property in ListView (csv, xlsx, json, pdf) | plugin-list | 1 week | Pending | +| 30 | Add inline editing toggle for detail view | plugin-detail | 3 days | Pending | + +### Priority 2 — Infrastructure & Non-UI Compliance (Post v1.0) + +> These items are important for completeness but do not block v1.0 release. + +| # | Task | Package | Effort | Status | +|---|------|---------|--------|--------| +| 6 | Integrate React Flow for workflow canvas | plugin-workflow | 2 weeks | Deferred (custom canvas works) | +| 20 | Add form-level permission integration | plugin-form | 1 week | Pending | | 22 | Add Zod runtime validators for critical schemas | types | 1 week | Pending | | 23 | Add OAuth provider management UI | auth | 2 weeks | Pending | | 24 | Add tenant session persistence | tenant | 3 days | Pending | | 25 | Add permission evaluation caching | permissions | 3 days | Pending | | 26 | Add dynamic language pack loading | i18n | 1 week | Pending | -| 27 | ~~Add ErrorBoundary wrapper to SchemaRenderer~~ | components | ~~3 days~~ | ✅ Complete — SchemaErrorBoundary | | 28 | Document AG Grid Community vs Enterprise boundaries | plugin-aggrid | 2 days | Pending | | 29 | Add live design preview mode | plugin-designer | 1 week | Pending | -| 30 | Add inline editing toggle for detail view | plugin-detail | 3 days | Pending | | 31 | Add AI endpoint adapter (OpenAI, Anthropic) | plugin-ai | 2 weeks | Pending | | 32 | Add NLQuery → ObjectQL integration | plugin-ai | 1 week | Pending | | 33 | Add saved view management | plugin-list | 1 week | Pending | -| 34 | ~~Add custom validator registration API~~ | core | ~~3 days~~ | ✅ Complete — registerValidator/registerAsyncValidator | -| 35 | ~~Implement DndConfigSchema-based drag-and-drop in Kanban and Dashboard~~ | plugin-kanban, plugin-dashboard | ~~2 weeks~~ | ✅ Complete — DndBridge, DndEditModeBridge | -| 36 | ~~Implement NotificationSchema system (toast/banner/snackbar)~~ | components, react | ~~2 weeks~~ | ✅ Complete — NotificationProvider | -| 37 | ~~Integrate GestureConfigSchema and TouchInteractionSchema into mobile hooks~~ | mobile | ~~1 week~~ | ✅ Complete — useSpecGesture | -| 38 | ~~Adopt ResponsiveConfigSchema and BreakpointColumnMapSchema in layouts~~ | mobile, layout | ~~1 week~~ | ✅ Complete | -| 39 | ~~Implement KeyboardShortcutSchema and KeyboardNavigationConfigSchema runtime~~ | react | ~~1 week~~ | ✅ Complete — useKeyboardShortcuts | -| 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 | -| 68 | Implement navigation.view property across all view plugins | plugin-kanban, plugin-calendar, plugin-gantt, plugin-timeline, plugin-map, plugin-view | 1 week | Pending | -| 69 | Implement quickFilters spec property in ListView | plugin-list | 3 days | Pending | -| 70 | Implement hiddenFields and fieldOrder spec properties in ListView | plugin-list, types | 3 days | Pending | -| 71 | Implement emptyState spec property in ListView | plugin-list | 2 days | Pending | -| 72 | Implement Timeline spec properties: endDateField, groupByField, colorField, scale | plugin-timeline | 1 week | Pending | +| 73 | Implement inlineEdit, virtualScroll, conditionalFormatting spec properties in ListView | plugin-list | 2 weeks | Pending | +| 75 | Add aria spec property support to ListView | plugin-list | 3 days | Pending | +| 76 | Add sharing spec property support to ListView | plugin-list | 3 days | Pending | -### Priority 3 — Low (Q3-Q4 2026) +### Priority 3 — Low (Deferred Post v1.0) | # | Task | Package | Effort | |---|------|---------|--------| @@ -1052,75 +1043,108 @@ Each package is rated against three dimensions: | 60 | Implement OfflineConfigSchema and SyncConfigSchema runtime | data-objectstack, mobile | 3 weeks | | 61 | Implement PerformanceConfigSchema monitoring runtime | core, react | 1 week | | 62 | Implement WcagContrastLevel checking utility | components | 3 days | -| 63 | Add DensityMode support to grid and list views | plugin-grid, plugin-list | 3 days | -| 73 | Implement inlineEdit, virtualScroll, conditionalFormatting spec properties in ListView | plugin-list | 2 weeks | -| 74 | Implement exportOptions spec property in ListView (csv, xlsx, json, pdf) | plugin-list | 1 week | -| 75 | Add aria spec property support to ListView | plugin-list | 3 days | -| 76 | Add sharing spec property support to ListView | plugin-list | 3 days | + +### Completed Items (Reference) + +| # | Task | Package | Status | +|---|------|---------|--------| +| 1 | ~~Implement DataScope module for row-level security~~ | core | ✅ Complete | +| 2 | ~~Replace console.log placeholders in AI plugin handlers~~ | plugin-ai | ✅ Complete | +| 3 | ~~Uncomment and finalize validators module export in types~~ | types | ✅ Validators in core/validation | +| 4 | ~~Complete API data fetching in DetailView and RelatedList~~ | plugin-detail | ✅ Complete | +| 5 | ~~Implement ReportViewer data refresh and aggregation UI~~ | plugin-report | ✅ Complete | +| 7 | ~~Add schema persistence API to designer~~ | plugin-designer | ✅ Complete — useSchemaPersistence hook | +| 8 | ~~Add coordinate error handling in map plugin~~ | plugin-map | ✅ Complete | +| 9 | ~~Add string search formulas (FIND, REPLACE, SUBSTRING)~~ | core | ✅ Complete | +| 10 | ~~Verify and document usePageVariables hook~~ | react | ✅ Complete | +| 11 | ~~Add updateMany batch documentation in data adapter~~ | data-objectstack | ✅ Complete | +| 12 | ~~Add useTheme hook for component-level theme access~~ | react | ✅ Complete — in ThemeContext | +| 13 | ~~Implement AriaPropsSchema injection in component renderers~~ | components, react | ✅ Complete — resolveAriaProps in SchemaRenderer | +| 14 | ~~Implement FocusManagementSchema and FocusTrapConfigSchema runtime~~ | react | ✅ Complete — useFocusTrap hook | +| 15 | ~~Add dashboard-level auto-refresh and cross-widget filtering~~ | plugin-dashboard | ✅ Complete — refreshInterval + onRefresh | +| 16 | ~~Add drag-to-reschedule for calendar events~~ | plugin-calendar | ✅ Complete | +| 27 | ~~Add ErrorBoundary wrapper to SchemaRenderer~~ | components | ✅ Complete — SchemaErrorBoundary | +| 34 | ~~Add custom validator registration API~~ | core | ✅ Complete — registerValidator/registerAsyncValidator | +| 35 | ~~Implement DndConfigSchema-based drag-and-drop in Kanban and Dashboard~~ | plugin-kanban, plugin-dashboard | ✅ Complete — DndBridge, DndEditModeBridge | +| 36 | ~~Implement NotificationSchema system (toast/banner/snackbar)~~ | components, react | ✅ Complete — NotificationProvider | +| 37 | ~~Integrate GestureConfigSchema and TouchInteractionSchema into mobile hooks~~ | mobile | ✅ Complete — useSpecGesture | +| 38 | ~~Adopt ResponsiveConfigSchema and BreakpointColumnMapSchema in layouts~~ | mobile, layout | ✅ Complete | +| 39 | ~~Implement KeyboardShortcutSchema and KeyboardNavigationConfigSchema runtime~~ | react | ✅ Complete — useKeyboardShortcuts | +| 40 | ~~Consume ColumnSummarySchema, GroupingConfigSchema, RowColorConfigSchema in grid views~~ | plugin-grid, plugin-aggrid | ✅ Complete — useColumnSummary, useGroupedData, useRowColor | +| 41 | ~~Consume GalleryConfigSchema and ViewSharingSchema in list plugin~~ | plugin-list | ✅ Complete — ObjectGallery, useViewSharing | +| 42 | ~~Consume I18nObjectSchema, LocaleConfigSchema, PluralRuleSchema in i18n package~~ | i18n | ✅ Complete | --- ## 8. Roadmap Recommendations -### Alignment with Existing ROADMAP.md +### Priority Re-Order (Feb 16, 2026) + +> **Change rationale:** The original priority order (DX → UX → Components → Docs → Mobile) has been reorganized to prioritize **UI-facing spec compliance and v1.0 essentials**. All original P0/P1 items are complete. The remaining work is primarily UI-facing spec alignment. + +#### Immediate (v1.0 UI Essentials — P0) + +**Focus: Make every view plugin spec-compliant and usable.** + +1. **TimelineConfig spec alignment** — Define type, rename `dateField` → `startDateField`, implement all spec properties (#64, #72) +2. **GalleryConfig export** — Export type from @object-ui/types (#65) +3. **ObjectGallery navigation** — Add navigation property support (#66) +4. **Navigation width/view properties** — Apply across all 6 view plugins (#67, #68) +5. **ListView emptyState** — Implement custom no-data UI spec property (#71) + +**Estimated effort:** ~3 weeks + +#### Short-Term (v1.0 Polish — P1) -This evaluation confirms the existing roadmap priorities. **Significant progress has been made since the initial evaluation** — all P0 items and the majority of P1/P2 items are now complete. +**Focus: UI enhancement features from spec.** -#### Q1 2026 (Status: ✅ Complete) +1. ListView spec properties: quickFilters, hiddenFields, fieldOrder (#69, #70) +2. Inline task editing for Gantt (#17) +3. Map marker clustering (#18) +4. Grid column reorder/resize persistence (#21) +5. DensityMode support for grid/list (#63) +6. ListView exportOptions (#74) +7. Detail view inline editing toggle (#30) -**All P0 and most P1 items resolved:** -- ✅ DataScope module implementation — complete -- ✅ AI plugin handlers — real implementations -- ✅ DetailView/RelatedList API — complete -- ✅ Map coordinate error handling — complete -- ✅ Schema persistence for designers — useSchemaPersistence hook -- ✅ Dashboard auto-refresh — refreshInterval + onRefresh -- ✅ SchemaRenderer error boundary — SchemaErrorBoundary +**Estimated effort:** ~5 weeks -#### Q2 2026 (April-June — v1.0.0 Target) +#### Post v1.0 (Infrastructure — P2) -**Remaining items for full compliance:** -1. Inline task editing for Gantt chart (P2) -2. Marker clustering for map plugin (P2) -3. Combo chart support (P2) -4. Form-level permission integration (P2) -5. Column reorder/resize persistence for grid (P2) -6. OAuth provider management UI (P2) -7. AI endpoint adapter (OpenAI, Anthropic) (P2) +1. React Flow for workflow canvas (#6) +2. Form-level permission integration (#20) +3. OAuth provider management UI (#23) +4. AI endpoint adapter (#31) +5. Saved view management (#33) +6. ListView advanced features: inlineEdit, virtualScroll, conditionalFormatting (#73) -**Spec alignment milestone:** -- Current spec coverage at ~98% with all P0/P1 items complete -- Remaining 2% covers polish items and advanced integrations +#### Deferred (P3) -#### Q3 2026 (July-September) +Non-UI polish items: animation runtime, offline sync runtime, performance monitoring runtime, workflow simulation, design version history. -**Status: ✅ Complete** — All Q3 items have been implemented: -- ✅ Real-time collaboration (WebSocket) — @object-ui/collaboration package -- ✅ Offline sync with OfflineConfigSchema/SyncConfigSchema — useOffline hook -- ✅ Animation/motion system — useAnimation, useReducedMotion, usePageTransition -- ✅ PerformanceConfigSchema monitoring — usePerformance, usePerformanceBudget -- ✅ View transitions — useViewTransition with native API support +### Completed Foundation (Reference) -#### Q4 2026 (October-December) +**Q1 2026 (✅ Complete):** +- ✅ DataScope module, AI plugin handlers, DetailView/RelatedList API +- ✅ Map coordinate error handling, Schema persistence, Dashboard auto-refresh +- ✅ SchemaRenderer error boundary -**Recommended focus:** -1. Complete remaining P3 polish items -2. Cloud platform launch — existing plan -3. Performance optimization pass across all plugins -4. Full spec compliance audit (target: 100%) +**Q3 2026 (✅ Complete):** +- ✅ Real-time collaboration, Offline sync, Animation/motion system +- ✅ PerformanceConfigSchema monitoring, View transitions ### Overall Spec Compliance Score (vs. @objectstack/spec v3.0.0) -| Category | Current | After P0 | After P1 | After P2 | Target | -|----------|---------|----------|----------|----------|--------| +| Category | Current | After P0 (v1.0 UI) | After P1 (v1.0 Polish) | After P2 | Target | +|----------|---------|---------------------|------------------------|----------|--------| | **UI Types** | 100% | 100% | 100% | 100% | 100% | +| **View Config Compliance** | 85% | 98% | 100% | 100% | 100% | +| **Navigation Compliance** | 86% (6/7 views) | 100% (7/7 views) | 100% | 100% | 100% | +| **ListView Spec Props** | 0% (0/11) | 27% (3/11) | 64% (7/11) | 100% | 100% | | **API Protocol** | 95% | 97% | 99% | 100% | 100% | -| **Feature Completeness** | 98% | 99% | 99% | 100% | 100% | -| **v3.0.0 New Areas** | 100% | 100% | 100% | 100% | 100% | -| **Overall** | **98%** | **99%** | **99%** | **100%** | 100% | +| **Overall** | **98%** | **99%** | **100% (UI)** | **100%** | 100% | -> **Note:** All P0 items have been resolved. P1 items are nearly complete (12/13 done). The majority of P2 items are also resolved. -> All 42 builds pass, all 3185+ tests pass. Remaining items are primarily polish (P3) and business infrastructure. +> **Note:** With P0 completion, all UI-facing spec compliance will be at 99%+, making v1.0 release viable. +> All 42 builds pass, all 3185+ tests pass. ---