Skip to content

Commit 1d2b3a5

Browse files
authored
Merge pull request evoluhq#553 from evoluhq/changeset-release/main
Version Packages (preview)
2 parents 6f916ca + 08709ae commit 1d2b3a5

9 files changed

Lines changed: 40 additions & 14 deletions

File tree

.changeset/pre.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"easy-radios-decide",
2727
"fast-peas-laugh",
2828
"heavy-parts-own",
29+
"hot-peas-own",
2930
"mean-rats-start",
3031
"modern-zebras-clean",
3132
"ninety-rockets-listen",

packages/common/CHANGELOG.md

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,37 @@
11
# @evolu/common
22

3+
## 6.0.1-preview.16
4+
5+
### Patch Changes
6+
7+
- af1e668: # Owners refactor and external AppOwner support
8+
9+
## 🚀 Features
10+
- **External AppOwner Support**: `AppOwner` can now be created from external keys without sharing the mnemonic with the Evolu app. The `mnemonic` property is now optional, allowing for better security when integrating with external authentication systems.
11+
- **New Config Option**: Added `initialAppOwner` configuration option to specify a pre-existing AppOwner when creating an Evolu instance, replacing the previous `mnemonic` option for better encapsulation.
12+
13+
## 🔄 Breaking Changes
14+
- **Owner API Redesign**: Complete refactor of the Owner system with cleaner, more focused interfaces:
15+
- Simplified `Owner` interface with only essential properties (`id`, `encryptionKey`, `writeKey`)
16+
- Removed temporal properties (`createdAt`, `timestamp`) from core Owner interface
17+
- Eliminated complex `OwnerRow` and `OwnerWithWriteAccess` types
18+
- **Database Schema Changes**:
19+
- Replaced `evolu_owner` table with streamlined `evolu_config` table
20+
- New `evolu_version` table for protocol versioning
21+
- Simplified storage of AppOwner data in single config row
22+
- **Configuration Changes**:
23+
- `Config.mnemonic` replaced with `Config.initialAppOwner`
24+
- More explicit control over owner initialization
25+
26+
## ✨ Improvements
27+
- **Enhanced Documentation**: Comprehensive JSDoc with clear explanations of owner types, use cases, and examples
28+
- **Clock Management**: New internal clock system for better timestamp handling
29+
- **Test Coverage**: Extensive test suite covering all owner types and edge cases
30+
31+
## 🔧 Internal Changes
32+
- **Database Initialization**: Refactored database setup to use new schema with better separation of concerns
33+
- **Protocol Updates**: Updated to protocol version 0 with new storage format
34+
335
## 6.0.1-preview.15
436

537
### Patch Changes
@@ -13,7 +45,6 @@
1345
### Patch Changes
1446

1547
- 0911302: Enhance message integrity by embedding timestamps in encrypted data
16-
1748
- Add timestamp tamper-proofing to encrypted CRDT messages by embedding the timestamp within the encrypted payload
1849
- Update `encodeAndEncryptDbChange` to accept `CrdtMessage` instead of `DbChange` and include timestamp in encrypted data
1950
- Update `decryptAndDecodeDbChange` to verify embedded timestamp matches expected timestamp
@@ -41,13 +72,11 @@
4172
### Changes
4273

4374
**createdAt Behavior:**
44-
4575
- `insert`: Always sets `createdAt` to current timestamp
4676
- `upsert`: Sets `createdAt` to current timestamp if not provided, or uses custom value if specified
4777
- `update`: Never sets `createdAt` (unchanged behavior)
4878

4979
**Documentation Improvements:**
50-
5180
- Updated JSDoc for `DefaultColumns` with clear explanations of each column's behavior
5281
- Clarified that `updatedAt` is always set by Evolu and derived from CrdtMessage timestamp
5382
- Added guidance for using custom timestamp columns when deferring sync for privacy
@@ -74,7 +103,6 @@
74103
### Patch Changes
75104

76105
- 6279aea: Add external ID support with `createIdFromString` function
77-
78106
- Add `createIdFromString` function that converts external string identifiers to valid Evolu IDs using SHA-256
79107
- Add optional branding support to both `createId` and `createIdFromString` functions
80108
- Update FAQ documentation with external ID integration examples
@@ -89,7 +117,6 @@
89117
- 45c8ca9: Add in-memory database support for testing and temporary data
90118

91119
This change introduces a new `inMemory` configuration option that allows creating SQLite databases in memory instead of persistent storage. In-memory databases exist only in RAM and are completely destroyed when the process ends, making them ideal for:
92-
93120
- Testing scenarios where data persistence isn't needed
94121
- Temporary data processing
95122
- Forensically safe handling of sensitive data
@@ -137,7 +164,6 @@
137164
- c86cb14: Add timing-safe comparison for WriteKey validation
138165

139166
### Security Improvements
140-
141167
- Add `TimingSafeEqual` type and `TimingSafeEqualDep` interface for platform-independent timing-safe comparison
142168
- Implement Node.js timing-safe comparison using `crypto.timingSafeEqual()`
143169
- Replace vulnerable `eqArrayNumber` WriteKey comparison with constant-time algorithm to prevent timing attacks
@@ -329,7 +355,6 @@
329355
The great news is that Effect is stable now, so there will be no more releases with deps updates. Let's dance 🪩
330356

331357
New features:
332-
333358
- Multitenancy (we can run more Evolu instances side by side)
334359
- Initial data (to define fixtures)
335360
- Logging (you can see what's happening inside Evolu step by step)

packages/common/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@evolu/common",
3-
"version": "6.0.1-preview.15",
3+
"version": "6.0.1-preview.16",
44
"description": "TypeScript library and local-first framework",
55
"keywords": [
66
"evolu",

packages/nodejs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"vitest": "^3.2.3"
3939
},
4040
"peerDependencies": {
41-
"@evolu/common": "^6.0.1-preview.15"
41+
"@evolu/common": "^6.0.1-preview.16"
4242
},
4343
"engines": {
4444
"node": ">=22.0.0"

packages/react-native/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"vitest": "^3.2.3"
6666
},
6767
"peerDependencies": {
68-
"@evolu/common": "^6.0.1-preview.15",
68+
"@evolu/common": "^6.0.1-preview.16",
6969
"@evolu/react": "^9.0.1-preview.3",
7070
"@op-engineering/op-sqlite": ">=12",
7171
"expo": ">=52",

packages/react-web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"vitest": "^3.2.3"
4444
},
4545
"peerDependencies": {
46-
"@evolu/common": "^6.0.1-preview.15",
46+
"@evolu/common": "^6.0.1-preview.16",
4747
"@evolu/web": "^1.0.1-preview.3",
4848
"react-dom": "^19.0.0"
4949
},

packages/react/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"vitest": "^3.2.3"
4545
},
4646
"peerDependencies": {
47-
"@evolu/common": "^6.0.1-preview.15",
47+
"@evolu/common": "^6.0.1-preview.16",
4848
"react": "^19.0.0"
4949
},
5050
"publishConfig": {

packages/svelte/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"typescript": "^5.8.3"
4848
},
4949
"peerDependencies": {
50-
"@evolu/common": "^6.0.1-preview.15",
50+
"@evolu/common": "^6.0.1-preview.16",
5151
"@evolu/web": "^1.0.1-preview.3",
5252
"svelte": "^5.0.0"
5353
},

packages/web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"vitest": "^3.2.3"
4848
},
4949
"peerDependencies": {
50-
"@evolu/common": "^6.0.1-preview.15"
50+
"@evolu/common": "^6.0.1-preview.16"
5151
},
5252
"publishConfig": {
5353
"access": "public"

0 commit comments

Comments
 (0)