Uh oh!
There was an error while loading. Please reload this page.
Add public roadmap, VitePress documentation site, and GitHub Pages deployment - #3
Merged
Merged
Conversation
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
CopilotAI
changed the title
[WIP] Add development plan document for UI building toolAdd comprehensive development plan document for world-class interface builderJan 13, 2026
huangyiirene
commented
Jan 13, 2026
Collaborator
用英文编写,诚恳地给最终用户看 @copilot |
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
ContributorAuthor
huangyiirene
commented
Jan 13, 2026
Collaborator
@copilot 注意,这个文档是要给最终用户看的,不是内部文件 |
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
huangyiirene
commented
Jan 13, 2026
Collaborator
@copilot 现在初始化文档库,订立协议规范,基于这个文档库搭建vitepress |
ContributorAuthor
Understood! I've completely rewritten it as a public roadmap for end users. Removed all internal details (team structure, budget, risk management) and focused on what users will get and when. The new Commit: 409bc37 |
CopilotAI
changed the title
Add comprehensive development plan document for world-class interface builderAdd public roadmap for end usersJan 13, 2026
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
ContributorAuthor
Completed! Initialized VitePress documentation site with full protocol specifications:
VitePress is running successfully. Start with: Commit: 49cc7ec |
CopilotAI
changed the title
Add public roadmap for end usersAdd public roadmap and initialize VitePress documentation siteJan 13, 2026
huangyiirene
commented
Jan 13, 2026
Collaborator
@copilot docs在根目录就可以,然后编写自动化工作流把它发布成GitHub的网站 |
CopilotAI
added a commit
that referenced
this pull request
Feb 20, 2026
…warning, i18n fallback - Issue #1: Normalize `in`/`not in` operators to backend-compatible `or`/`and` of `=`/`!=` - Issue #2: Filter merging now validates and filters empty conditions - Issue #3: CSV export safely serializes arrays (semicolon-separated) and objects (JSON) - Issue #5: Request counter prevents stale data from overwriting latest results - Issue #6: PullToRefresh resets pull distance immediately to prevent UI lock - Issue #7: $top configurable via schema.pagination, data limit warning shown - Issue #8: Extended i18n fallback translations for all ListView labels - Issue #9: Defensive null checks in effectiveFields for mismatched objectDef - Issue #10: Added FilterNormalization, Export, and DataFetch test suites Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
21 tasks
This was referenced Jun 15, 2026
This was referenced Jun 24, 2026
os-zhuang added a commit
that referenced
this pull request
Jun 29, 2026
… AI slot (#2060) * feat(console): Studio WYSIWYG design surface dev harness (ADR-0080 slice-1) Additive /dev/studio-design route + DevStudioDesign four-zone shell reusing getMetadataPreview/getMetadataInspector + SchemaRenderer. Touches no existing surface. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(app-shell): promote Studio design surface + open-core AI slot (ADR-0080) Move the design surface out of the apps/console dev harness into @object-ui/app-shell as StudioDesignSurface. The left AI copilot becomes an injected aiSlot prop — OSS renders three zones (nav/canvas/inspector); the cloud edition injects AI. Repoint /dev/studio-design at the promoted component. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(app-shell): wire Studio design surface to real metadata (ADR-0080 #3/#4) Replace the fixture with the shared MetadataClient: the single-App nav lists real pages, clicking loads that surface into the canvas (real PagePreview + live data), and the toolbar saves drafts / publishes through the real pipeline. Route moves inside ProtectedRoute for the connected client + data adapter. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(app-shell): route Studio as /studio/:packageId/{data,automations,interfaces} Three pillars are now real routes scoped to the package being designed. The shell renders the package + pillar route links; Interfaces drives the real MetadataClient (nav/canvas/inspector + draft/publish), Data/Automations are scaffolded placeholders pending the App-nav + object/flow surface reuse map. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(app-shell): real 3-pillar Studio — App-nav Interfaces + Data + Automations Interfaces: load the real App by package id and render its navigation tree (groups + typed leaves page/object/dashboard/report); clicking loads the bound surface (PagePreview/DashboardPreview/object-grid). Data: object list + record grid (object-grid) + field table. Automations: flow list + FlowPreview graph. All reuse existing renderers — no new editor code. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(app-shell): Data pillar = primary full-height record grid (Airtable parity) Drop the redundant field table — the record grid's columns ARE the fields. Data mode now reads like a spreadsheet (objects on the left, the records directly viewable), matching Airtable's Data tab. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(app-shell): object surface = object-view (our list-view model, not raw grid) Per design direction, the Data pillar (and Interfaces object items) render an object via object-view — its named list views + ViewSwitcher + record actions, falling back to a grid — instead of the raw object-grid. Matches our view model. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(app-shell): scope Data/Automations lists to the current package (#9) Pass packageId into DataPillar/AutomationsPillar and use client.list(type, { packageId }) (=> ?package=) so each pillar lists only the current package's objects/flows, not all env metadata. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(app-shell): render flow preview via createElement (satisfy react-hooks/static-components) AutomationsPillar assigned `const Preview = getMetadataPreview(...)` and rendered it as JSX, which react-hooks/static-components flags as a component created during render. Render via React.createElement instead, and derive the type from the selected flow (current.type) to mirror InterfacesPillar. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 13, 2026
This was referenced Jul 30, 2026
os-zhuang added a commit
that referenced
this pull request
Jul 30, 2026
…s become derivations or gated inventories (#3017) (#3043) Sites #3-#6 of the audit, plus three more of the same species found while gating - all previously "keep in sync" comments with zero mechanism: - DesignerFieldType is now derived from a runtime DESIGNER_FIELD_TYPES array in @object-ui/types; app-shell's object-fields-bridge and plugin-designer's MetadataFieldsPage derive their 27-type sets from it instead of restating the list (FieldDesigner's FIELD_TYPE_META was already compile-gated via Record<DesignerFieldType>). The dead ALL_FIELD_TYPES const is removed, and the FIELD_TYPE_CATEGORIES / CATEGORY_ORDER partition gets a coverage gate - a type added to the vocabulary but left uncategorized would silently vanish from the type pickers. - The audit-provenance columns get one source: AUDIT_FIELD_BY_ROLE / AUDIT_FIELD_NAMES in @object-ui/types, consumed by RecordMetaFooter and RecordDetailView. RecordDetailView's HIDDEN_SYSTEM_FIELD_NAMES is now derived as spec FIELD_GROUP_SYSTEM_FIELDS minus the audit set, so a newly injected system column defaults to hidden instead of leaking into detail bodies until a hand list is edited. - ImportWizard's REFERENCE_IMPORT_TYPES is derived from the spec's REFERENCE_VALUE_TYPES plus the generic 'reference' alias - the same derivation the server uses - in a new importCoercionContract module. - The boolean token table cannot be derived (no spec export yet, framework#3786): it is split into true/false sets with disjointness + normalization gates and a pinned inventory so edits are deliberate. - multiValueFields' two sets were member-for-member copies of the spec's MULTI_OPTION_TYPES / MULTI_CAPABLE_TYPES - now consumed directly, with non-vacuity anchors so a shrinking spec vocabulary fails loudly instead of resurrecting the #2204 column-shape corruption. Mutation-tested: seven injected drifts across five source files produced 13 test failures across all five gate files, plus compile errors in FieldDesigner (TS2353/TS2322), MetadataFieldsPage (TS2769) and RecordMetaFooter (TS2339). Zero behavior change - every derived set is value-identical to the list it replaces. Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This was referenced Aug 7, 2026
Merged
Closed
yinlianghui pushed a commit
that referenced
this pull request
Aug 13, 2026
The module-script shape shipped in the previous commit was TOO LATE, and the console's own build proves it. Vite merges the two HTML module entries into a single chunk, and that merged entry's static imports are hoisted above the shim's body, so in dist/assets/index-*.js the install sat behind 16 imported chunks - vendor-react, ui-components and RecordDetailView among them, all three of which contain randomUUID calls. Document order between module scripts is real in the browser but it does not survive bundling, so it cannot carry this guarantee. A classic inline script runs synchronously during parse, before any module script and therefore before any bundled chunk. That is the only bundler-independent guarantee, and it is the precedent the report named: the window.process polyfill immediately above it. Verified on the built artifact - the shim is tag #2 of 4 in dist/index.html and the only src-carrying tag is #3. The TypeScript module is deleted rather than kept for testability: a second copy of the logic would be graded green while the bootstrap that actually ships drifted away from it. The tests now EXTRACT the inline script from index.html and execute it, so they grade exactly what ships, and they fail loudly ("found 0") rather than vacuously if it is renamed or removed. Two parsing hazards found by these tests and worth keeping written down: prose describing a script tag inside an HTML comment parses as a script tag (the comment above this very shim was once paired with the shim's closing tag, reporting it as type=module), so both tests strip comments before parsing; and this app's tsconfig is browser-only, so index.html is read through Vite's `?raw` rather than node:fs, which tsc rejects. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qqyix2QcnpUC9XeYVDzx3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created a user-facing public roadmap document (
docs/ROADMAP.md) in English showing what features are coming and when users can expect them. Written sincerely for end users to help them evaluate Object UI and plan adoption.Additionally, initialized a complete VitePress documentation site with protocol specifications in the root
docs/directory and set up automated GitHub Pages deployment.Roadmap Document
Vision: Clear explanation of what Object UI is and who it's for ("JSON to world-class UI in minutes")
What Makes Us Different: User benefits explained simply (3x faster, 6x smaller bundles, easy to learn, full control)
Release Timeline: Quarterly feature releases (Q1-Q4 2026):
Feature Examples: Practical code snippets showing how to use each feature
What You Can Do Today: Available actions (try preview, star on GitHub, provide feedback)
Beyond 2026: Future vision (multi-framework, cross-platform, AI, 3D)
FAQ: 7 common questions answered (production-ready date, pricing, compatibility, migration)
Stay Updated: How to follow progress (GitHub, email)
296-line English markdown document focused entirely on user value. Each quarterly release includes practical examples and "What this means for you" benefit statements. Written in conversational, approachable language without internal planning details.
VitePress Documentation Site
Created a complete documentation site in the root
docs/directory with:Structure:
Features:
Commands:
pnpm docs:dev- Start development serverpnpm docs:build- Build for productionpnpm docs:preview- Preview production buildIntegration:
docs/directoryobject-ui-docspackagedocs/objectql/integratedGitHub Pages Deployment
Automated Workflow (
.github/workflows/deploy-docs.yml):mainbranch when docs changehttps://objectql.github.io/object-ui/Configuration:
/object-ui/for GitHub Pagesdocs/.vitepress/dist/.gitignoreRequirements:
The documentation site is now at the root level and will automatically deploy to GitHub Pages on every push to main! 🚀
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.