feat(ui): Airtable Interface parity — UserActions, Appearance, Tabs, AddRecord, InterfacePageConfig#749
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…ance, Tabs, AddRecord, InterfacePageConfig - Add VisualizationTypeSchema for switchable view type whitelist - Add UserActionsConfigSchema for sort/search/filter/rowHeight/addRecordForm/buttons toggles - Add AppearanceConfigSchema for showDescription and allowedVisualizations - Add ViewTabSchema for multi-tab view interface with order/icon/pinned/isDefault - Add AddRecordConfigSchema for add record entry point (position/mode/formView) - Add showRecordCount and allowPrinting to ListViewSchema - Add InterfacePageConfigSchema for page-level Airtable Interface config - Add interfaceConfig field to PageSchema - Add 31 new tests covering all new schemas - Update ROADMAP.md with Phase E and updated metrics Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This pull request adds comprehensive Airtable Interface parity capabilities to the ObjectStack UI specification protocol. It introduces declarative configuration schemas for user actions, appearance settings, visualization controls, multi-tab interfaces, and record management controls, enabling Studio and business applications to match Airtable's interface configuration capabilities.
Changes:
- Added five new Zod schemas in
view.zod.ts:UserActionsConfigSchema,AppearanceConfigSchema,VisualizationTypeSchema,ViewTabSchema, andAddRecordConfigSchema, plus two new boolean flags (showRecordCount,allowPrinting) onListViewSchema - Added
InterfacePageConfigSchemainpage.zod.tsfor page-level declarative configuration with optionalinterfaceConfigfield onPageSchema - Added 31 comprehensive tests (24 in view.test.ts, 7 in page.test.ts) covering all new schemas with edge cases and backward compatibility validation
- Updated ROADMAP.md with Phase E deliverables and test metrics (5,805 passing tests)
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/spec/src/ui/view.zod.ts | Added 5 new Airtable Interface parity schemas (UserActionsConfig, AppearanceConfig, VisualizationType, ViewTab, AddRecordConfig) and integrated them into ListViewSchema with 2 additional boolean flags |
| packages/spec/src/ui/view.test.ts | Added 24 comprehensive tests covering all new schemas, including default values, full configurations, validation, edge cases, and backward compatibility |
| packages/spec/src/ui/page.zod.ts | Added InterfacePageConfigSchema for page-level interface configuration and integrated it as optional field on PageSchema |
| packages/spec/src/ui/page.test.ts | Added 7 tests for InterfacePageConfigSchema and PageSchema integration, including backward compatibility validation |
| ROADMAP.md | Updated test count to 5,805 and added Phase E section documenting all Interface Parity deliverables with schema locations |
| elements: z.array(z.enum(['grid', 'gallery', 'kanban'])).optional() | ||
| .describe('Visualization element types available in user filter bar'), |
There was a problem hiding this comment.
The userFilters.elements field uses a hardcoded enum subset instead of reusing VisualizationTypeSchema. This creates potential inconsistency if the visualization types are updated in the future. Consider using VisualizationTypeSchema directly or explaining why only these three types are allowed for the user filter bar.
Gap analysis against Airtable Interface revealed missing declarative config for user actions, appearance/visualization switching, tabs, record count, add-record entry, and page-level interface settings.
New schemas in
view.zod.tsUserActionsConfigSchema— toolbar toggles:sort,search,filter,rowHeight,addRecordForm,buttons[]AppearanceConfigSchema—showDescription+allowedVisualizationswhitelistVisualizationTypeSchema— enum (grid | kanban | gallery | calendar | timeline | gantt | map)ViewTabSchema— multi-tab config:name,label,icon,view,filter,order,pinned,isDefault,visibleAddRecordConfigSchema— entry point:enabled,position(top/bottom/both),mode(inline/form/modal),formViewAll wired into
ListViewSchemaas optional fields alongsideshowRecordCountandallowPrinting.New schema in
page.zod.tsInterfacePageConfigSchema— page-level declarative config:source,levels,filterBy,appearance,userFilters(elements + tabs),userActions,addRecord,showRecordCount,allowPrintingPageSchema.interfaceConfig(optional, backward-compatible)Example
Tests & docs
Original prompt
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.