You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Release v2.0.0: AppSheet Field Type Support and Validation (SOSO-247)
This release introduces comprehensive AppSheet field type support with
validation - a major breaking change requiring migration.
## Breaking Changes ⚠️
- Generic types (string, number, boolean, etc.) replaced with 27
AppSheet-specific field types
- Shorthand field format removed - only full object format supported
- Property 'enum' renamed to 'allowedValues'
## Features
- 27 AppSheet field types across 7 categories
- Modular validation architecture (BaseTypeValidator, FormatValidator,
AppSheetTypeValidator)
- Enhanced SchemaInspector with smart enum detection and allowedValues
extraction
- Comprehensive validation for Email, URL, Phone, Enum, EnumList,
Percent, Date, DateTime, and all other types
## Documentation
- Added MIGRATION.md with complete migration guide
- Updated CLAUDE.md with new type system
- Added INTEGRATION_CONCEPT.md for SOSO-247
## Tests
- 126 tests (all passing)
- 81.88% coverage
- 100% coverage for DynamicTable.ts
## Migration
See MIGRATION.md for detailed migration instructions from v1.x to v2.0.0.
Estimated migration time: 15-30 minutes per schema file.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
// ❌ ValidationError: Field "email" must be a valid email address
229
+
230
+
// Invalid enum value
231
+
await table.add([{ status: 'Unknown'}]);
232
+
// ❌ ValidationError: Field "status" must be one of: Active, Inactive, Pending
233
+
234
+
// Invalid percentage
235
+
await table.add([{ discount: 1.5 }]);
236
+
// ❌ ValidationError: Field "discount" must be between 0.00 and 1.00
237
+
```
238
+
177
239
### Error Handling
178
240
179
241
All errors extend `AppSheetError` with specific subtypes:
180
242
- `AuthenticationError`(401/403)
181
-
-`ValidationError` (400)
243
+
- `ValidationError`(400) - Now includes field-level validation errors
182
244
- `NotFoundError`(404)
183
245
- `RateLimitError`(429)
184
246
- `NetworkError`(no response)
@@ -216,6 +278,44 @@ Retry logic applies to network errors and 5xx server errors (max 3 attempts by d
216
278
217
279
**Note**: The AppSheet API may return responses in either format. The AppSheetClient automatically normalizes both formats to the standard `{ Rows: [...], Warnings?: [...] }` structure for consistent handling.
218
280
281
+
## Breaking Changes (v2.0.0)
282
+
283
+
**⚠️ IMPORTANT**: Version 2.0.0 introduces breaking changes. See MIGRATION.md for upgrade guide.
284
+
285
+
### Removed Features
286
+
- ❌ Old generic types (`'string'`, `'number'`, `'boolean'`, `'date'`, `'array'`, `'object'`) are no longer supported
287
+
- ❌ Shorthand string format for field definitions (`"email": "string"`) is no longer supported
288
+
- ❌ `enum` property renamed to `allowedValues`
289
+
290
+
### New Requirements
291
+
- ✅ All fields must use full FieldDefinition object with `type` property
292
+
- ✅ Only AppSheet-specific types are supported (Text, Email, Number, etc.)
293
+
- ✅ Schema validation is stricter and more comprehensive
0 commit comments