Releases: techdivision/appsheet
v3.5.0
Added
- Optional
tableFactoryparameter in SchemaManager constructor (SOSO-451)- New optional 3rd parameter:
tableFactory?: DynamicTableFactoryInterface - When provided, the injected factory is used instead of creating one internally
- Enables custom policies (e.g.,
WriteConversionPolicy,UnknownFieldPolicy) without unsafe property overrides - When not provided, behavior is identical to v3.4.0 (fully backward compatible)
- New optional 3rd parameter:
Usage
// Without custom factory (unchanged default behavior)
const db = new SchemaManager(clientFactory, schema);
// With custom factory (NEW)
const tableFactory = new DynamicTableFactory(clientFactory, schema, undefined, writePolicy);
const db = new SchemaManager(clientFactory, schema, tableFactory);Full Changelog: v3.4.0...v3.5.0
Release 3.4.0
Changes in this Release
- chore: bump version to 3.4.0 (181b27b)
- feat(SOSO-446): auto-detect locale from AppSheet API response data in CLI (bd43236)
- chore: bump version to 3.3.0 (3767251)
- docs(SOSO-446): rename concept directory from SOSO-CLI-LOCALE to SOSO-446 (d3e9953)
- docs(#19): rewrite concept for automatic locale detection (47f6aae)
- docs(#19): add concept for CLI --locale option (d5e03cb)
- feat(SOSO-440): implement WriteConversionPolicy for locale-aware date formatting (9e8d92a)
- docs(SOSO-440): fix version to 3.3.0, add round-trip scenario (24dbed7)
- docs(SOSO-440): add write conversion policy concept document (7424d5b)
- fix(SOSO-439): add locale-aware date/datetime validation (6d2718a)
- docs(SOSO-439): add locale-aware validation concept document (0bbbb20)
Installation
npm install git+ssh://git@github.com:techdivision/appsheet.git#v3.4.0Release 3.3.0
Changes in this Release
- chore: bump version to 3.3.0 (3767251)
- docs(SOSO-446): rename concept directory from SOSO-CLI-LOCALE to SOSO-446 (d3e9953)
- docs(#19): rewrite concept for automatic locale detection (47f6aae)
- docs(#19): add concept for CLI --locale option (d5e03cb)
- feat(SOSO-440): implement WriteConversionPolicy for locale-aware date formatting (9e8d92a)
- docs(SOSO-440): fix version to 3.3.0, add round-trip scenario (24dbed7)
- docs(SOSO-440): add write conversion policy concept document (7424d5b)
- fix(SOSO-439): add locale-aware date/datetime validation (6d2718a)
- docs(SOSO-439): add locale-aware validation concept document (0bbbb20)
Installation
npm install git+ssh://git@github.com:techdivision/appsheet.git#v3.3.0Release 3.2.0
Changes in this Release
- chore: sync package-lock.json to 3.2.0 (9e855ce)
Installation
npm install git+ssh://git@github.com:techdivision/appsheet.git#v3.2.0v3.1.0 β SelectorBuilder, Selector-Wrapping Fix, Default-URL Korrektur
What's New
SelectorBuilder with DI Support
- New
SelectorBuilderclass withSelectorBuilderInterfacefor API-compliant selector wrapping and injection-safe value escaping - 4 methods:
ensureFunction(),escapeValue(),buildFilter(),isSafeIdentifier() - DI-compatible injection via optional constructor parameters in
AppSheetClientFactoryandAppSheetClient(no breaking change) - AOP-extensible: consumers can subclass and inject logged/decorated builders
Bug Fixes
- Selector Wrapping:
AppSheetClient.find()now automatically wraps raw boolean expressions inFilter(tableName, expression)as required by AppSheet API spec - Default Base URL: Changed from deprecated
api.appsheet.comtowww.appsheet.com
Documentation
- Updated all examples to v3.1.0 (basic-usage, schema-based-usage, example-schema.yaml)
- New
selector-builder-usage.tsexample with 5 scenarios (escaping, safe filters, auto-wrapping, DI injection, AOP) - Archived
TECHNICAL_CONCEPTION.md(v1.0 planning document) todocs/archive/ - Regenerated TypeDoc API docs
- Added
CHANGELOG.mdentry
Breaking Changes
None. Fully backward compatible with v3.0.0.
Test Results
- 9 test suites, 265 tests passed
- Build clean, Lint 0 errors
Jira: SOSO-365
Full Changelog: v3.0.0...v3.1.0
Release 3.0.0
Changes in this Release
- docs(SOSO-249): update documentation for v3.0.0 release (556f71e)
- feat(SOSO-249): add schema introspection methods to SchemaManager (#7) (705234a)
- feat(SOSO-249): v3.0.0 - factory injection pattern for DI and testing (2415a50)
- feat(SOSO-249): Phase 2 - Add factory interfaces and implementations (b1c4e57)
- feat(SOSO-249): Phase 1 - Breaking change v3.0.0 constructor and getTable() (c793183)
- docs(SOSO-249): add v3.0.0 integration concept for DI and testing support (83dfbb9)
Installation
npm install git+ssh://git@github.com:techdivision/appsheet.git#v3.0.0v2.1.0: Per-Request User Context Support
Release v2.1.0: Per-Request User Context Support
π What's New
This release adds per-request user context support for multi-tenant MCP servers, enabling each request to execute with a specific user's permissions and context.
β¨ Features
Per-Request User Context (#3)
-
ConnectionManager.get(name, runAsUserEmail?)- Creates user-specific AppSheetClient instances on-the-fly
- Overrides global
runAsUserEmailfrom schema when provided - No caching - lightweight operation
-
SchemaManager.table(conn, table, runAsUserEmail?)- Creates user-specific DynamicTable instances on-the-fly
- Enables true multi-tenant MCP servers with per-request user context
- Perfect for authenticated MCP tool handlers
Enhanced Schema Configuration
- Added optional
runAsUserEmailfield toConnectionDefinition - Allows setting global default user at connection level in schema
Architecture Improvements
- Removed table client caching in SchemaManager
- On-the-fly DynamicTable creation for better per-request handling
- Simplified
initialize()method - only registers connections
π Bug Fixes
- Fixed package.json version from 0.2.0 to 2.1.0 (#4)
π Usage Example
```typescript
// MCP Server with per-request user context
const db = new SchemaManager(SchemaLoader.fromYaml('./schema.yaml'));
server.tool('list_worklogs', async (params, context) => {
// Extract authenticated user from MCP context
const userEmail = context.user?.email;
// Create user-specific table client on-the-fly
const table = db.table('worklog', 'worklogs', userEmail);
// All operations execute with user's AppSheet permissions
return await table.findAll();
});
```
π§ͺ Testing
- β 31 new tests (13 ConnectionManager + 18 SchemaManager)
- β Total test suite: 157 tests, all passing
- β Build successful
- β SemVer validated: MINOR (backward compatible)
π Documentation
- Updated CLAUDE.md with new features and usage patterns
- Added comprehensive CHANGELOG.md
- Added "Per-Request User Context" section with examples
π Migration
No migration required! This is a fully backward compatible MINOR release.
Existing code continues to work without changes:
```typescript
// Old code (still works)
const table = db.table('worklog', 'worklogs');
// New feature (optional)
const userTable = db.table('worklog', 'worklogs', 'user@example.com');
```
π Commits in this Release
- feat(SOSO-248): add per-request user context support for multi-tenant MCP servers (e1af98d)
- chore: release v2.1.0 with per-request user context support (c5e3097)
- docs(SOSO-248): add integration concept for per-request user context support (a333bce)
π Links
- Full Changelog
- Documentation
- Issue #3: DynamicTable API missing per-request runAsUserEmail
- Issue #4: Package version correction
π¦ Installation
```bash
npm install @techdivision/appsheet@2.1.0
```
π Credits
This release was developed with assistance from Claude Code.
Breaking Changes: None
SemVer Level: MINOR
Backward Compatible: Yes β
v2.0.0 - AppSheet Field Type Support & Validation
Release v2.0.0
Major breaking release with AppSheet field type support and comprehensive validation.
Breaking Changes β οΈ
- Generic types replaced:
string,number,booleanβ 27 AppSheet-specific types (Text,Email,Number,Price, etc.) - Shorthand field format removed: Must use full
FieldDefinitionobject format - Property renamed:
enumβallowedValues
Features β¨
- 27 AppSheet field types (SOSO-247)
- Core: Text, Number, Date, DateTime, Time, Duration, YesNo
- Specialized text: Name, Email, URL, Phone, Address
- Specialized numbers: Decimal, Percent, Price
- Selection: Enum, EnumList
- Media: Image, File, Drawing, Signature
- Tracking: ChangeCounter, ChangeTimestamp, ChangeLocation
- Reference: Ref, RefList
- Special: Color, Show
- Comprehensive validation system
- AppSheetTypeValidator: Type checking and enum validation
- FormatValidator: Email, URL, phone number format validation
- BaseTypeValidator: JavaScript type checking
- Smart SchemaInspector
- Automatic enum detection from actual data
- Infers specialized types (Email, URL, Phone, etc.)
- Configurable enum threshold (default: 3 unique values)
Documentation π
- MIGRATION.md - Complete migration guide from v1.x to v2.0.0
- SOSO-246 Updated - DI integration documentation updated for v2.0.0
- All examples use AppSheet field types
- Validators documented as stateless (no DI required)
- CLAUDE.md - Updated with v2.0.0 patterns
Tests π§ͺ
- 126 tests (all passing β )
- 81.88% overall coverage
- 100% DynamicTable coverage
- Comprehensive validation test suite
Migration
See MIGRATION.md for detailed upgrade instructions.
Quick Example
Before (v1.x):
fields:
email: string
age: number
status:
type: string
enum: ["Active", "Inactive"]After (v2.0.0):
fields:
email:
type: Email
required: true
age:
type: Number
required: false
status:
type: Enum
required: true
allowedValues: ["Active", "Inactive"]Installation
npm install git+ssh://git@github.com:techdivision/appsheet.git#v2.0.0Commits in this Release
- docs(SOSO-246): update DI integration docs for v2.0.0 field types (8244be6)
- docs: rename REQUIREMENTS.md to INTEGRATION_CONCEPT.md (SOSO-247) (09c300e)
- test: add comprehensive tests for Phase 5 (SOSO-247) (c020941)
- docs(SOSO-247): add comprehensive documentation for v2.0.0 (Phase 4) (91e16d5)
- feat(SOSO-247): enhance SchemaInspector with smart type detection (Phase 3) (2a152f3)
- feat(SOSO-247): extract validation logic to separate validator classes (Phase 2) (7465021)
- feat(SOSO-247): implement AppSheet field types and validation (Phase 1) (4702551)
- feat: add SOSO-247 requirements document (6f1dc6d)
- docs: add TSyringe DI integration concept for SOSO-246 (322e051)
Links
Release 0.2.0
Changes in this Release
- chore: bump version to 0.2.0 (fddf7d9)
Installation
npm install git+ssh://git@github.com:techdivision/appsheet.git#v0.2.0