Skip to content

Commit c5e3097

Browse files
wagnertclaude
andcommitted
chore: release v2.1.0 with per-request user context support
- Updated version to 2.1.0 in package.json - Added comprehensive CHANGELOG.md with v2.1.0 release notes - Documents fixes for #3 and #4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent f263685 commit c5e3097

File tree

2 files changed

+92
-87
lines changed

2 files changed

+92
-87
lines changed

CHANGELOG.md

Lines changed: 91 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -7,114 +7,119 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
### Added
11-
- Initial project setup
12-
- AppSheetClient with full CRUD operations
13-
- MockAppSheetClient for testing
14-
- Schema-based usage with SchemaLoader and SchemaManager
15-
- DynamicTable with runtime validation
16-
- CLI tool for schema generation (inspect, init, add-table, validate)
17-
- Multi-instance connection management
18-
- runAsUserEmail feature for user context
19-
- Comprehensive JSDoc documentation
20-
- Jest test suite (48 tests)
21-
- GitHub Actions CI workflow
22-
- Semantic versioning setup
23-
24-
### Documentation
25-
- README.md with usage examples
26-
- CONTRIBUTING.md with versioning guidelines
27-
- CLAUDE.md for Claude Code integration
28-
- TypeDoc API documentation
29-
- Comprehensive test documentation
30-
31-
## [0.1.0] - 2025-11-14
10+
## [2.1.0] - 2024-11-24
3211

3312
### Added
34-
- Initial release
35-
- Basic AppSheet CRUD operations
36-
- TypeScript support
37-
- Schema management
38-
39-
---
40-
41-
## Version Format
4213

43-
- **[MAJOR.MINOR.PATCH]** - Released versions
44-
- **[Unreleased]** - Upcoming changes not yet released
14+
- **Per-Request User Context Support** ([#3](https://github.com/techdivision/appsheet/issues/3))
15+
- Added optional `runAsUserEmail` parameter to `ConnectionManager.get()` method
16+
- Added optional `runAsUserEmail` parameter to `SchemaManager.table()` method
17+
- Enables multi-tenant MCP servers with per-request user context
18+
- User-specific clients are created on-the-fly (lightweight, no caching)
19+
- Overrides global `runAsUserEmail` from schema when provided
20+
- 100% backward compatible - existing code works without changes
21+
22+
- **Enhanced Schema Configuration**
23+
- Added optional `runAsUserEmail` field to `ConnectionDefinition` interface
24+
- Allows setting global default user at connection level in schema
25+
26+
- **Comprehensive Test Coverage**
27+
- Added 13 tests for `ConnectionManager` per-request user context
28+
- Added 18 tests for `SchemaManager` per-request user context
29+
- Total test suite: 157 tests across 6 test suites
30+
31+
- **Documentation Updates**
32+
- Added "Per-Request User Context" section to CLAUDE.md
33+
- Added "Multi-Tenant MCP Server" usage pattern
34+
- Updated component descriptions with new feature details
35+
- Added usage examples for ConnectionManager and SchemaManager
4536

46-
## Change Categories
47-
48-
- **Added** - New features
49-
- **Changed** - Changes in existing functionality
50-
- **Deprecated** - Soon-to-be removed features
51-
- **Removed** - Removed features
52-
- **Fixed** - Bug fixes
53-
- **Security** - Security fixes
54-
55-
## Examples
56-
57-
### Patch Release (0.1.0 → 0.1.1)
37+
### Changed
5838

59-
```markdown
60-
## [0.1.1] - 2025-11-15
39+
- **SchemaManager Architecture**
40+
- Removed table client caching - `DynamicTable` instances now created on-the-fly
41+
- Simplified `initialize()` method - only registers connections (no table pre-creation)
42+
- Updated `getConnections()` and `getTables()` to work without cache
43+
- More efficient for per-request user context use cases
6144

6245
### Fixed
63-
- Fixed selector parsing for date fields
64-
- Corrected error handling in retry logic
6546

66-
### Documentation
67-
- Updated API documentation
68-
```
47+
- Fixed package.json version number ([#4](https://github.com/techdivision/appsheet/issues/4))
48+
- Version corrected from `0.2.0` to `2.1.0` (proper SemVer)
49+
- Reflects actual major version 2.0.0 release with breaking changes
6950

70-
### Minor Release (0.1.0 → 0.2.0)
51+
### Technical Details
7152

72-
```markdown
73-
## [0.2.0] - 2025-11-20
53+
- **Breaking Changes**: None (fully backward compatible)
54+
- **SemVer Level**: MINOR (new features, no breaking changes)
55+
- **Migration Required**: No
56+
- **Dependencies**: Added `ts-semver-detector@^0.3.1` (dev dependency)
57+
58+
## [2.0.0] - 2024-11-20
7459

7560
### Added
76-
- New `findByIds()` method for batch retrieval
77-
- Support for custom request headers
78-
- Connection pooling support
61+
62+
- **AppSheet Field Type System** (SOSO-247)
63+
- Support for all 27 AppSheet-specific field types
64+
- Core types: Text, Number, Date, DateTime, Time, Duration, YesNo
65+
- Specialized text: Name, Email, URL, Phone, Address
66+
- Specialized numbers: Decimal, Percent, Price
67+
- Selection types: Enum, EnumList
68+
- Media types: Image, File, Drawing, Signature
69+
- Tracking types: ChangeCounter, ChangeTimestamp, ChangeLocation
70+
- Reference types: Ref, RefList
71+
- Special types: Color, Show
72+
73+
- **Enhanced Validation System**
74+
- Format validation for Email, URL, Phone fields
75+
- Range validation for Percent type (0.00 to 1.00)
76+
- Enum/EnumList value validation with `allowedValues`
77+
- Required field validation for add operations
78+
- Type-specific validation for all AppSheet types
79+
80+
- **Validator Architecture**
81+
- `BaseTypeValidator`: JavaScript primitive type validation
82+
- `FormatValidator`: Format-specific validation (Email, URL, Phone, Date, DateTime, Percent)
83+
- `AppSheetTypeValidator`: Main orchestrator for field type validation
84+
85+
- **SchemaInspector Enhancements**
86+
- Automatic detection of all 27 AppSheet field types from data
87+
- Smart Enum detection based on unique value ratio
88+
- Pattern detection for Email, URL, Phone, Date, DateTime, Percent
89+
- Automatic extraction of `allowedValues` for Enum/EnumList fields
7990

8091
### Changed
81-
- Improved error messages with more context
8292

83-
### Deprecated
84-
- `oldMethod()` will be removed in v1.0.0
85-
```
93+
- **BREAKING**: Schema format now requires AppSheet-specific types
94+
- Old generic types (`string`, `number`, `boolean`, etc.) no longer supported
95+
- All fields must use full `FieldDefinition` object with `type` property
96+
- Shorthand string format (`"email": "string"`) removed
97+
- `enum` property renamed to `allowedValues`
8698

87-
### Major Release (0.2.0 → 1.0.0)
99+
- **BREAKING**: Type validation is stricter and more comprehensive
100+
- All field values validated against AppSheet type constraints
101+
- Format validation enforced for specialized types
88102

89-
```markdown
90-
## [1.0.0] - 2025-12-01
103+
### Migration Guide
91104

92-
### Added
93-
- Stable API release
94-
- Full TypeScript type coverage
105+
See [MIGRATION.md](./MIGRATION.md) for detailed upgrade instructions from v1.x to v2.0.0.
95106

96-
### Changed
97-
- **BREAKING**: Client methods now return typed responses
98-
- **BREAKING**: Renamed `findAll()` to `find()` with options
107+
## [1.x.x] - Previous Releases
99108

100-
### Removed
101-
- **BREAKING**: Removed deprecated `oldMethod()`
109+
For changes in version 1.x.x, please refer to git history.
102110

103-
### Migration Guide
111+
---
112+
113+
## Links
104114

105-
#### Client Method Changes
115+
- [GitHub Repository](https://github.com/techdivision/appsheet)
116+
- [Issue Tracker](https://github.com/techdivision/appsheet/issues)
117+
- [Documentation](./CLAUDE.md)
106118

107-
Before (0.x.x):
108-
```typescript
109-
const rows = await client.findAll('Users');
110-
```
119+
## SemVer Policy
111120

112-
After (1.0.0):
113-
```typescript
114-
const result = await client.find({ tableName: 'Users' });
115-
const rows = result.rows;
116-
```
117-
```
121+
This project follows [Semantic Versioning](https://semver.org/):
118122

119-
[Unreleased]: https://github.com/techdivision/appsheet/compare/v0.1.0...HEAD
120-
[0.1.0]: https://github.com/techdivision/appsheet/releases/tag/v0.1.0
123+
- **MAJOR** version: Breaking changes, incompatible API changes
124+
- **MINOR** version: New features, backward-compatible additions
125+
- **PATCH** version: Bug fixes, backward-compatible fixes

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@techdivision/appsheet",
3-
"version": "0.2.0",
3+
"version": "2.1.0",
44
"description": "Generic TypeScript library for AppSheet CRUD operations",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)