diff --git a/.changeset/add-sidebar-subheader.md b/.changeset/add-sidebar-subheader.md deleted file mode 100644 index 10199086..00000000 --- a/.changeset/add-sidebar-subheader.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openzeppelin/ui-builder-ui': minor ---- - -Add `subHeader` prop to `SidebarLayout` to allow rendering content between the header and the scrollable area. diff --git a/.changeset/cute-llamas-tap.md b/.changeset/cute-llamas-tap.md deleted file mode 100644 index cdd576e7..00000000 --- a/.changeset/cute-llamas-tap.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -'@openzeppelin/ui-builder-adapter-stellar': minor -'@openzeppelin/ui-builder-types': minor -'@openzeppelin/ui-builder-utils': minor ---- - -Add Access Control and Ownable support for Stellar (Soroban) contracts - -### @openzeppelin/ui-builder-adapter-stellar - -- Add `AccessControlService` implementation with full support for OpenZeppelin Access Control and Ownable patterns -- Add capability detection to identify contracts implementing AccessControl, Ownable, or both -- Support role management: query current roles, grant/revoke roles, check permissions -- Support ownership management: transfer ownership, query current owner -- Add historical queries via SubQuery indexer integration for complete role change and ownership transfer history -- Implement server-side filtering by contract, role, account, and limit -- Add graceful degradation when indexer is unavailable (on-chain queries continue to work) -- Add comprehensive address validation using shared utilities at all service entry points -- Export access control service via `getAccessControlService()` method on `StellarAdapter` -- Add snapshot export functionality for current access control state -- Support both account addresses (G...) and contract addresses (C...) for ownership transfers - -### @openzeppelin/ui-builder-types - -- Add `AccessControlService` interface and related types (`AccessControlCapabilities`, `OwnershipInfo`, `RoleAssignment`, `AccessSnapshot`, `HistoryEntry`, `OperationResult`) -- Add `getAccessControlService?()` optional method to `ContractAdapter` interface -- Extend `BaseNetworkConfig` with optional `indexerUri` and `indexerWsUri` fields for GraphQL endpoint configuration - -### @openzeppelin/ui-builder-utils - -- Add access control snapshot utilities (`validateSnapshot`, `serializeSnapshot`, `deserializeSnapshot`, `createEmptySnapshot`, `findRoleAssignment`, `compareSnapshots`) -- Add access control error utilities (`isAccessControlError`, error message extraction helpers) -- Export address normalization utilities (`normalizeAddress`, `addressesEqual`) for chain-agnostic address comparison diff --git a/.changeset/feat-storage-key-value-entity.md b/.changeset/feat-storage-key-value-entity.md deleted file mode 100644 index bce13f82..00000000 --- a/.changeset/feat-storage-key-value-entity.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@openzeppelin/ui-builder-storage': minor ---- - -Add `KeyValueStorage` base class and rename `DexieStorage` to `EntityStorage`. - -New features: - -- **`KeyValueStorage`**: Base class for key-value stores using `&key` primary key schema. Includes `set`, `get`, `getOrDefault`, `delete`, `has`, `keys`, `getAll`, `clear`, `count`, `setMany`, `getMany`, `deleteMany` methods with configurable key length and value size limits. -- **`EntityStorage`**: Renamed from `DexieStorage` for clarity. Now includes configurable `maxRecordSizeBytes` option (default 10MB) and quota error handling. -- **Shared utilities**: `isQuotaError()` and `withQuotaHandling()` exported for custom storage implementations. - -Improvements: - -- Both base classes now handle `QuotaExceededError` consistently across browsers (including Safari iOS code 22). -- Record/value size validation prevents accidental quota exhaustion. -- Builder app's `ContractUIStorage` now uses 50MB limit for large contract definitions. - -Migration: - -- Replace `DexieStorage` imports with `EntityStorage` (same API). -- For key-value stores, extend `KeyValueStorage` instead of implementing custom logic. diff --git a/.changeset/feat-ui-network-icon-selector.md b/.changeset/feat-ui-network-icon-selector.md deleted file mode 100644 index d0dea72e..00000000 --- a/.changeset/feat-ui-network-icon-selector.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@openzeppelin/ui-builder-ui': minor ---- - -Add `NetworkIcon` and `NetworkSelector` components to the UI package for reuse across applications. - -- `NetworkIcon`: Reusable component for rendering network icons based on ecosystem and iconComponent -- `NetworkSelector`: Generic dropdown selector component with search, ecosystem grouping, and network type badges -- Refactor `NetworkStatusBadge` and `NetworkRow` to use `NetworkIcon` for consistency diff --git a/.changeset/fix-address-display-hover-gap.md b/.changeset/fix-address-display-hover-gap.md deleted file mode 100644 index 453bf2a0..00000000 --- a/.changeset/fix-address-display-hover-gap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openzeppelin/ui-builder-ui': patch ---- - -Fix `AddressDisplay` hover behavior: no reserved space when the copy button is hidden. The copy control now expands on hover/focus, removing the gray gap and right-side imbalance. Also adds a 2-second copy confirmation that swaps the copy icon for a green check. diff --git a/.changeset/move-header-to-ui.md b/.changeset/move-header-to-ui.md deleted file mode 100644 index 678a31fd..00000000 --- a/.changeset/move-header-to-ui.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openzeppelin/ui-builder-ui': minor ---- - -Move Header component to UI package diff --git a/.changeset/move-network-switch-to-react-core.md b/.changeset/move-network-switch-to-react-core.md deleted file mode 100644 index a94fdfc4..00000000 --- a/.changeset/move-network-switch-to-react-core.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@openzeppelin/ui-builder-react-core': minor ---- - -Add `NetworkSwitchManager` component and `useWalletReconnectionHandler` hook to react-core for reuse across applications. - -- **NetworkSwitchManager**: Headless component that handles automatic wallet network switching for EVM chains. Moved from builder package. -- **useWalletReconnectionHandler**: Hook that detects wallet reconnection and triggers network switch re-queue via callback. Refactored from builder to use a callback-based API for portability. - -These additions enable other applications (like Role Manager) to share the same wallet network switching logic without duplicating code. diff --git a/.changeset/move-sidebar-to-ui.md b/.changeset/move-sidebar-to-ui.md deleted file mode 100644 index e68e4813..00000000 --- a/.changeset/move-sidebar-to-ui.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openzeppelin/ui-builder-ui': minor ---- - -Add reusable sidebar components (SidebarButton, SidebarLayout, SidebarSection) to enable sidebar reuse across projects diff --git a/.changeset/refactor-move-ecosystem-types.md b/.changeset/refactor-move-ecosystem-types.md deleted file mode 100644 index 627b824e..00000000 --- a/.changeset/refactor-move-ecosystem-types.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openzeppelin/ui-builder-types': minor ---- - -Move `EcosystemFeatureConfig` and `EcosystemInfo` interfaces from builder registry to shared types package (`@openzeppelin/ui-builder-types`). This ensures consistent type definitions across all consumers and enables reuse in other applications like Role Manager. diff --git a/.changeset/stellar-ownable-two-step-support.md b/.changeset/stellar-ownable-two-step-support.md deleted file mode 100644 index 9b880bb7..00000000 --- a/.changeset/stellar-ownable-two-step-support.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -'@openzeppelin/ui-builder-adapter-stellar': minor -'@openzeppelin/ui-builder-types': minor ---- - -feat(adapter-stellar): add two-step Ownable support with ledger-based expiration - -Implements OpenZeppelin Stellar Ownable two-step ownership transfer pattern: - -**New Features:** - -- `getOwnership()` now returns ownership state (owned/pending/expired/renounced) with pending transfer details -- `transferOwnership()` supports expiration ledger parameter for two-step transfers -- `acceptOwnership()` allows pending owners to complete ownership transfer -- `getCurrentLedger()` helper to get current ledger sequence for expiration calculation -- `validateExpirationLedger()` validation helper for client-side expiration checks -- `hasTwoStepOwnable` capability flag in feature detection - -**Type Extensions:** - -- Added `OwnershipState` type for ownership states -- Added `PendingOwnershipTransfer` interface for pending transfer details -- Extended `OwnershipInfo` with `state` and `pendingTransfer` fields -- Extended `AccessControlCapabilities` with `hasTwoStepOwnable` flag - -**Indexer Integration:** - -- Added `OWNERSHIP_TRANSFER_STARTED` event type support -- Added `queryPendingOwnershipTransfer()` method to indexer client -- Graceful degradation when indexer is unavailable - -**Non-Functional:** - -- Performance: Ownership queries < 3s, indexer queries < 1s, ledger queries < 500ms -- Logging: INFO for ownership operations, WARN for indexer unavailability diff --git a/.changeset/storage-react-first-refactor.md b/.changeset/storage-react-first-refactor.md deleted file mode 100644 index c9662ebd..00000000 --- a/.changeset/storage-react-first-refactor.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -'@openzeppelin/ui-builder-storage': major ---- - -Refactor storage package to be React-first, app-agnostic, and easier to consume across apps. - -Highlights: - -- New React utilities: `useLiveQuery` (re-export), `createLiveQueryHook`, `createCrudHook`, `createJsonFileIO`, `createRepositoryHook`. -- Core: `DexieStorage` now uses `@openzeppelin/ui-builder-utils` (`logger`, `generateId`); `createDexieDatabase` helper for versioned Dexie setup. -- Exports consolidated at the root (no `./react` subpath). -- Dependencies: add `dexie-react-hooks`; keep `react` as a peer dependency. - -BREAKING CHANGES: - -- Remove builder-specific exports from this package: `ContractUIStorage`, `contractUIStorage`, `useContractUIStorage`, `db`, and `ContractUIRecord`/`ContractUIExportData` types. -- Consumers must define app-local repositories/types and use the new React helpers. - -Migration (typical): - -- Move app-specific repositories (e.g., `ContractUIStorage`) and types into the app. -- Create the Dexie instance in the app with `createDexieDatabase`. -- Use the new React helpers to replace ad-hoc storage hooks (e.g., `createRepositoryHook`). diff --git a/packages/adapter-evm/CHANGELOG.md b/packages/adapter-evm/CHANGELOG.md index 4a4e99e6..c2f27049 100644 --- a/packages/adapter-evm/CHANGELOG.md +++ b/packages/adapter-evm/CHANGELOG.md @@ -1,5 +1,15 @@ # @openzeppelin/transaction-form-adapter-evm +## 1.0.0 + +### Patch Changes + +- Updated dependencies [[`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb), [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96), [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19), [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a), [`56eb3fc`](https://github.com/OpenZeppelin/ui-builder/commit/56eb3fc4970bd85a75d6ed0cb643c096668bdc69), [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-ui@1.0.0 + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + - @openzeppelin/ui-builder-react-core@1.0.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/adapter-evm/package.json b/packages/adapter-evm/package.json index 498d68b2..618f6e58 100644 --- a/packages/adapter-evm/package.json +++ b/packages/adapter-evm/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-adapter-evm", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "EVM Adapter for UI Builder", "keywords": [ diff --git a/packages/adapter-midnight/CHANGELOG.md b/packages/adapter-midnight/CHANGELOG.md index 97908e59..fa90b87a 100644 --- a/packages/adapter-midnight/CHANGELOG.md +++ b/packages/adapter-midnight/CHANGELOG.md @@ -1,5 +1,15 @@ # Midnight Adapter Changelog +## 1.0.0 + +### Patch Changes + +- Updated dependencies [[`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb), [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96), [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19), [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a), [`56eb3fc`](https://github.com/OpenZeppelin/ui-builder/commit/56eb3fc4970bd85a75d6ed0cb643c096668bdc69), [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-ui@1.0.0 + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + - @openzeppelin/ui-builder-react-core@1.0.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/adapter-midnight/package.json b/packages/adapter-midnight/package.json index c06d3279..f0df6c66 100644 --- a/packages/adapter-midnight/package.json +++ b/packages/adapter-midnight/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-adapter-midnight", - "version": "0.16.0", + "version": "1.0.0", "description": "Midnight Adapter for UI Builder", "keywords": [ "openzeppelin", diff --git a/packages/adapter-solana/CHANGELOG.md b/packages/adapter-solana/CHANGELOG.md index 9a7a8388..d16ff7e4 100644 --- a/packages/adapter-solana/CHANGELOG.md +++ b/packages/adapter-solana/CHANGELOG.md @@ -1,5 +1,13 @@ # @openzeppelin/transaction-form-adapter-solana +## 1.0.0 + +### Patch Changes + +- Updated dependencies [[`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + ## 0.16.0 ### Patch Changes diff --git a/packages/adapter-solana/package.json b/packages/adapter-solana/package.json index ad09d1d6..3fb808a8 100644 --- a/packages/adapter-solana/package.json +++ b/packages/adapter-solana/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-adapter-solana", - "version": "0.16.0", + "version": "1.0.0", "description": "Solana Adapter for UI Builder", "keywords": [ "openzeppelin", diff --git a/packages/adapter-stellar/CHANGELOG.md b/packages/adapter-stellar/CHANGELOG.md index f726730b..64944524 100644 --- a/packages/adapter-stellar/CHANGELOG.md +++ b/packages/adapter-stellar/CHANGELOG.md @@ -1,5 +1,68 @@ # @openzeppelin/transaction-form-adapter-stellar +## 1.0.0 + +### Minor Changes + +- [#243](https://github.com/OpenZeppelin/ui-builder/pull/243) [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48) Thanks [@pasevin](https://github.com/pasevin)! - Add Access Control and Ownable support for Stellar (Soroban) contracts + + ### @openzeppelin/ui-builder-adapter-stellar + - Add `AccessControlService` implementation with full support for OpenZeppelin Access Control and Ownable patterns + - Add capability detection to identify contracts implementing AccessControl, Ownable, or both + - Support role management: query current roles, grant/revoke roles, check permissions + - Support ownership management: transfer ownership, query current owner + - Add historical queries via SubQuery indexer integration for complete role change and ownership transfer history + - Implement server-side filtering by contract, role, account, and limit + - Add graceful degradation when indexer is unavailable (on-chain queries continue to work) + - Add comprehensive address validation using shared utilities at all service entry points + - Export access control service via `getAccessControlService()` method on `StellarAdapter` + - Add snapshot export functionality for current access control state + - Support both account addresses (G...) and contract addresses (C...) for ownership transfers + + ### @openzeppelin/ui-builder-types + - Add `AccessControlService` interface and related types (`AccessControlCapabilities`, `OwnershipInfo`, `RoleAssignment`, `AccessSnapshot`, `HistoryEntry`, `OperationResult`) + - Add `getAccessControlService?()` optional method to `ContractAdapter` interface + - Extend `BaseNetworkConfig` with optional `indexerUri` and `indexerWsUri` fields for GraphQL endpoint configuration + + ### @openzeppelin/ui-builder-utils + - Add access control snapshot utilities (`validateSnapshot`, `serializeSnapshot`, `deserializeSnapshot`, `createEmptySnapshot`, `findRoleAssignment`, `compareSnapshots`) + - Add access control error utilities (`isAccessControlError`, error message extraction helpers) + - Export address normalization utilities (`normalizeAddress`, `addressesEqual`) for chain-agnostic address comparison + +- [#271](https://github.com/OpenZeppelin/ui-builder/pull/271) [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7) Thanks [@pasevin](https://github.com/pasevin)! - feat(adapter-stellar): add two-step Ownable support with ledger-based expiration + + Implements OpenZeppelin Stellar Ownable two-step ownership transfer pattern: + + **New Features:** + - `getOwnership()` now returns ownership state (owned/pending/expired/renounced) with pending transfer details + - `transferOwnership()` supports expiration ledger parameter for two-step transfers + - `acceptOwnership()` allows pending owners to complete ownership transfer + - `getCurrentLedger()` helper to get current ledger sequence for expiration calculation + - `validateExpirationLedger()` validation helper for client-side expiration checks + - `hasTwoStepOwnable` capability flag in feature detection + + **Type Extensions:** + - Added `OwnershipState` type for ownership states + - Added `PendingOwnershipTransfer` interface for pending transfer details + - Extended `OwnershipInfo` with `state` and `pendingTransfer` fields + - Extended `AccessControlCapabilities` with `hasTwoStepOwnable` flag + + **Indexer Integration:** + - Added `OWNERSHIP_TRANSFER_STARTED` event type support + - Added `queryPendingOwnershipTransfer()` method to indexer client + - Graceful degradation when indexer is unavailable + + **Non-Functional:** + - Performance: Ownership queries < 3s, indexer queries < 1s, ledger queries < 500ms + - Logging: INFO for ownership operations, WARN for indexer unavailability + +### Patch Changes + +- Updated dependencies [[`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb), [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96), [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19), [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a), [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-ui@1.0.0 + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + ## 0.17.0 ### Minor Changes diff --git a/packages/adapter-stellar/package.json b/packages/adapter-stellar/package.json index 0cd3924c..9e9b05dd 100644 --- a/packages/adapter-stellar/package.json +++ b/packages/adapter-stellar/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-adapter-stellar", - "version": "0.16.0", + "version": "1.0.0", "description": "Stellar Adapter for UI Builder", "keywords": [ "openzeppelin", diff --git a/packages/builder/CHANGELOG.md b/packages/builder/CHANGELOG.md index 540d23ec..6a94433d 100644 --- a/packages/builder/CHANGELOG.md +++ b/packages/builder/CHANGELOG.md @@ -1,5 +1,21 @@ # @openzeppelin/transaction-form-builder-core +## 0.12.4 + +### Patch Changes + +- Updated dependencies [[`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb), [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`4a496fe`](https://github.com/OpenZeppelin/ui-builder/commit/4a496fe6522d4f7f30602ac25856e1a711025d7c), [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96), [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19), [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a), [`56eb3fc`](https://github.com/OpenZeppelin/ui-builder/commit/56eb3fc4970bd85a75d6ed0cb643c096668bdc69), [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7), [`923e016`](https://github.com/OpenZeppelin/ui-builder/commit/923e01634b94d6bf421a57f67aac4512e9b9b091)]: + - @openzeppelin/ui-builder-ui@1.0.0 + - @openzeppelin/ui-builder-adapter-stellar@1.0.0 + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + - @openzeppelin/ui-builder-storage@1.0.0 + - @openzeppelin/ui-builder-react-core@1.0.0 + - @openzeppelin/ui-builder-adapter-evm@1.0.0 + - @openzeppelin/ui-builder-adapter-midnight@1.0.0 + - @openzeppelin/ui-builder-renderer@1.0.0 + - @openzeppelin/ui-builder-adapter-solana@1.0.0 + ## 0.12.3 ### Patch Changes diff --git a/packages/builder/package.json b/packages/builder/package.json index 9ca04919..b14a9323 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,7 +1,7 @@ { "name": "@openzeppelin/ui-builder-app", "private": true, - "version": "0.12.3", + "version": "0.12.4", "type": "module", "bin": { "export-app": "src/export/cli/export-app.cjs" diff --git a/packages/builder/src/export/__tests__/__snapshots__/ExportSnapshotTests.test.ts.snap b/packages/builder/src/export/__tests__/__snapshots__/ExportSnapshotTests.test.ts.snap index bd376909..1b86dadc 100644 --- a/packages/builder/src/export/__tests__/__snapshots__/ExportSnapshotTests.test.ts.snap +++ b/packages/builder/src/export/__tests__/__snapshots__/ExportSnapshotTests.test.ts.snap @@ -301,12 +301,12 @@ exports[`Export Snapshot Tests > EVM Export Snapshots > should match snapshot fo exports[`Export Snapshot Tests > EVM Export Snapshots > should match snapshot for package.json structure > package-json-evm 1`] = ` { "dependencies": { - "@openzeppelin/ui-builder-adapter-evm": "^0.16.0", - "@openzeppelin/ui-builder-react-core": "^0.16.0", - "@openzeppelin/ui-builder-renderer": "^0.16.0", - "@openzeppelin/ui-builder-types": "^0.16.0", - "@openzeppelin/ui-builder-ui": "^0.16.0", - "@openzeppelin/ui-builder-utils": "^0.16.0", + "@openzeppelin/ui-builder-adapter-evm": "^1.0.0", + "@openzeppelin/ui-builder-react-core": "^1.0.0", + "@openzeppelin/ui-builder-renderer": "^1.0.0", + "@openzeppelin/ui-builder-types": "^1.0.0", + "@openzeppelin/ui-builder-ui": "^1.0.0", + "@openzeppelin/ui-builder-utils": "^1.0.0", "@tanstack/react-query": "^5.0.0", "@wagmi/core": "^2.20.3", "react": "^19.2.1", @@ -348,12 +348,12 @@ exports[`Export Snapshot Tests > Solana Export Snapshots > should match snapshot exports[`Export Snapshot Tests > Solana Export Snapshots > should match snapshot for package.json with Solana dependencies > package-json-solana 1`] = ` { "dependencies": { - "@openzeppelin/ui-builder-adapter-evm": "^0.16.0", - "@openzeppelin/ui-builder-react-core": "^0.16.0", - "@openzeppelin/ui-builder-renderer": "^0.16.0", - "@openzeppelin/ui-builder-types": "^0.16.0", - "@openzeppelin/ui-builder-ui": "^0.16.0", - "@openzeppelin/ui-builder-utils": "^0.16.0", + "@openzeppelin/ui-builder-adapter-evm": "^1.0.0", + "@openzeppelin/ui-builder-react-core": "^1.0.0", + "@openzeppelin/ui-builder-renderer": "^1.0.0", + "@openzeppelin/ui-builder-types": "^1.0.0", + "@openzeppelin/ui-builder-ui": "^1.0.0", + "@openzeppelin/ui-builder-utils": "^1.0.0", "@tanstack/react-query": "^5.0.0", "@wagmi/core": "^2.20.3", "react": "^19.2.1", diff --git a/packages/builder/src/export/versions.ts b/packages/builder/src/export/versions.ts index 67b3ec1a..47c55294 100644 --- a/packages/builder/src/export/versions.ts +++ b/packages/builder/src/export/versions.ts @@ -6,14 +6,14 @@ */ export const packageVersions = { - '@openzeppelin/ui-builder-adapter-evm': '0.16.0', - '@openzeppelin/ui-builder-adapter-midnight': '0.16.0', - '@openzeppelin/ui-builder-adapter-solana': '0.16.0', - '@openzeppelin/ui-builder-adapter-stellar': '0.16.0', - '@openzeppelin/ui-builder-react-core': '0.16.0', - '@openzeppelin/ui-builder-renderer': '0.16.0', - '@openzeppelin/ui-builder-storage': '0.16.0', - '@openzeppelin/ui-builder-types': '0.16.0', - '@openzeppelin/ui-builder-ui': '0.16.0', - '@openzeppelin/ui-builder-utils': '0.16.0', + '@openzeppelin/ui-builder-adapter-evm': '1.0.0', + '@openzeppelin/ui-builder-adapter-midnight': '1.0.0', + '@openzeppelin/ui-builder-adapter-solana': '1.0.0', + '@openzeppelin/ui-builder-adapter-stellar': '1.0.0', + '@openzeppelin/ui-builder-react-core': '1.0.0', + '@openzeppelin/ui-builder-renderer': '1.0.0', + '@openzeppelin/ui-builder-storage': '1.0.0', + '@openzeppelin/ui-builder-types': '1.0.0', + '@openzeppelin/ui-builder-ui': '1.0.0', + '@openzeppelin/ui-builder-utils': '1.0.0', }; diff --git a/packages/react-core/CHANGELOG.md b/packages/react-core/CHANGELOG.md index 140c103a..595534f7 100644 --- a/packages/react-core/CHANGELOG.md +++ b/packages/react-core/CHANGELOG.md @@ -1,5 +1,23 @@ # @openzeppelin/transaction-form-react-core +## 1.0.0 + +### Minor Changes + +- [#270](https://github.com/OpenZeppelin/ui-builder/pull/270) [`56eb3fc`](https://github.com/OpenZeppelin/ui-builder/commit/56eb3fc4970bd85a75d6ed0cb643c096668bdc69) Thanks [@pasevin](https://github.com/pasevin)! - Add `NetworkSwitchManager` component and `useWalletReconnectionHandler` hook to react-core for reuse across applications. + - **NetworkSwitchManager**: Headless component that handles automatic wallet network switching for EVM chains. Moved from builder package. + - **useWalletReconnectionHandler**: Hook that detects wallet reconnection and triggers network switch re-queue via callback. Refactored from builder to use a callback-based API for portability. + + These additions enable other applications (like Role Manager) to share the same wallet network switching logic without duplicating code. + +### Patch Changes + +- Updated dependencies [[`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb), [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96), [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19), [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a), [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-ui@1.0.0 + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + - @openzeppelin/ui-builder-renderer@1.0.0 + ## 0.16.0 ### Patch Changes diff --git a/packages/react-core/package.json b/packages/react-core/package.json index aa5a4d1b..f5641e1f 100644 --- a/packages/react-core/package.json +++ b/packages/react-core/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-react-core", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "Core React context providers and hooks for the OpenZeppelin UI Builder.", "type": "module", diff --git a/packages/renderer/CHANGELOG.md b/packages/renderer/CHANGELOG.md index 183368c4..2d5a9096 100644 --- a/packages/renderer/CHANGELOG.md +++ b/packages/renderer/CHANGELOG.md @@ -1,5 +1,14 @@ # @openzeppelin/transaction-form-renderer +## 1.0.0 + +### Patch Changes + +- Updated dependencies [[`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb), [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96), [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19), [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a), [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-ui@1.0.0 + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/renderer/package.json b/packages/renderer/package.json index a12a9493..60e8566a 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-renderer", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "A specialized library for rendering customizable transaction forms for blockchain applications.", "type": "module", diff --git a/packages/storage/CHANGELOG.md b/packages/storage/CHANGELOG.md index b3957fb7..86851a6b 100644 --- a/packages/storage/CHANGELOG.md +++ b/packages/storage/CHANGELOG.md @@ -1,5 +1,49 @@ # @openzeppelin/ui-builder-storage +## 1.0.0 + +### Major Changes + +- [#257](https://github.com/OpenZeppelin/ui-builder/pull/257) [`923e016`](https://github.com/OpenZeppelin/ui-builder/commit/923e01634b94d6bf421a57f67aac4512e9b9b091) Thanks [@pasevin](https://github.com/pasevin)! - Refactor storage package to be React-first, app-agnostic, and easier to consume across apps. + + Highlights: + - New React utilities: `useLiveQuery` (re-export), `createLiveQueryHook`, `createCrudHook`, `createJsonFileIO`, `createRepositoryHook`. + - Core: `DexieStorage` now uses `@openzeppelin/ui-builder-utils` (`logger`, `generateId`); `createDexieDatabase` helper for versioned Dexie setup. + - Exports consolidated at the root (no `./react` subpath). + - Dependencies: add `dexie-react-hooks`; keep `react` as a peer dependency. + + BREAKING CHANGES: + - Remove builder-specific exports from this package: `ContractUIStorage`, `contractUIStorage`, `useContractUIStorage`, `db`, and `ContractUIRecord`/`ContractUIExportData` types. + - Consumers must define app-local repositories/types and use the new React helpers. + + Migration (typical): + - Move app-specific repositories (e.g., `ContractUIStorage`) and types into the app. + - Create the Dexie instance in the app with `createDexieDatabase`. + - Use the new React helpers to replace ad-hoc storage hooks (e.g., `createRepositoryHook`). + +### Minor Changes + +- [#258](https://github.com/OpenZeppelin/ui-builder/pull/258) [`4a496fe`](https://github.com/OpenZeppelin/ui-builder/commit/4a496fe6522d4f7f30602ac25856e1a711025d7c) Thanks [@pasevin](https://github.com/pasevin)! - Add `KeyValueStorage` base class and rename `DexieStorage` to `EntityStorage`. + + New features: + - **`KeyValueStorage`**: Base class for key-value stores using `&key` primary key schema. Includes `set`, `get`, `getOrDefault`, `delete`, `has`, `keys`, `getAll`, `clear`, `count`, `setMany`, `getMany`, `deleteMany` methods with configurable key length and value size limits. + - **`EntityStorage`**: Renamed from `DexieStorage` for clarity. Now includes configurable `maxRecordSizeBytes` option (default 10MB) and quota error handling. + - **Shared utilities**: `isQuotaError()` and `withQuotaHandling()` exported for custom storage implementations. + + Improvements: + - Both base classes now handle `QuotaExceededError` consistently across browsers (including Safari iOS code 22). + - Record/value size validation prevents accidental quota exhaustion. + - Builder app's `ContractUIStorage` now uses 50MB limit for large contract definitions. + + Migration: + - Replace `DexieStorage` imports with `EntityStorage` (same API). + - For key-value stores, extend `KeyValueStorage` instead of implementing custom logic. + +### Patch Changes + +- Updated dependencies [[`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48)]: + - @openzeppelin/ui-builder-utils@1.0.0 + ## 0.16.0 ### Patch Changes diff --git a/packages/storage/package.json b/packages/storage/package.json index f6da38aa..36ea872b 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-storage", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "Universal, app-agnostic storage abstraction built on Dexie.js for IndexedDB.", "type": "module", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index ea35a128..c98554d1 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,63 @@ # @openzeppelin/ui-builder-types +## 1.0.0 + +### Minor Changes + +- [#243](https://github.com/OpenZeppelin/ui-builder/pull/243) [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48) Thanks [@pasevin](https://github.com/pasevin)! - Add Access Control and Ownable support for Stellar (Soroban) contracts + + ### @openzeppelin/ui-builder-adapter-stellar + - Add `AccessControlService` implementation with full support for OpenZeppelin Access Control and Ownable patterns + - Add capability detection to identify contracts implementing AccessControl, Ownable, or both + - Support role management: query current roles, grant/revoke roles, check permissions + - Support ownership management: transfer ownership, query current owner + - Add historical queries via SubQuery indexer integration for complete role change and ownership transfer history + - Implement server-side filtering by contract, role, account, and limit + - Add graceful degradation when indexer is unavailable (on-chain queries continue to work) + - Add comprehensive address validation using shared utilities at all service entry points + - Export access control service via `getAccessControlService()` method on `StellarAdapter` + - Add snapshot export functionality for current access control state + - Support both account addresses (G...) and contract addresses (C...) for ownership transfers + + ### @openzeppelin/ui-builder-types + - Add `AccessControlService` interface and related types (`AccessControlCapabilities`, `OwnershipInfo`, `RoleAssignment`, `AccessSnapshot`, `HistoryEntry`, `OperationResult`) + - Add `getAccessControlService?()` optional method to `ContractAdapter` interface + - Extend `BaseNetworkConfig` with optional `indexerUri` and `indexerWsUri` fields for GraphQL endpoint configuration + + ### @openzeppelin/ui-builder-utils + - Add access control snapshot utilities (`validateSnapshot`, `serializeSnapshot`, `deserializeSnapshot`, `createEmptySnapshot`, `findRoleAssignment`, `compareSnapshots`) + - Add access control error utilities (`isAccessControlError`, error message extraction helpers) + - Export address normalization utilities (`normalizeAddress`, `addressesEqual`) for chain-agnostic address comparison + +- [#255](https://github.com/OpenZeppelin/ui-builder/pull/255) [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e) Thanks [@pasevin](https://github.com/pasevin)! - Move `EcosystemFeatureConfig` and `EcosystemInfo` interfaces from builder registry to shared types package (`@openzeppelin/ui-builder-types`). This ensures consistent type definitions across all consumers and enables reuse in other applications like Role Manager. + +- [#271](https://github.com/OpenZeppelin/ui-builder/pull/271) [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7) Thanks [@pasevin](https://github.com/pasevin)! - feat(adapter-stellar): add two-step Ownable support with ledger-based expiration + + Implements OpenZeppelin Stellar Ownable two-step ownership transfer pattern: + + **New Features:** + - `getOwnership()` now returns ownership state (owned/pending/expired/renounced) with pending transfer details + - `transferOwnership()` supports expiration ledger parameter for two-step transfers + - `acceptOwnership()` allows pending owners to complete ownership transfer + - `getCurrentLedger()` helper to get current ledger sequence for expiration calculation + - `validateExpirationLedger()` validation helper for client-side expiration checks + - `hasTwoStepOwnable` capability flag in feature detection + + **Type Extensions:** + - Added `OwnershipState` type for ownership states + - Added `PendingOwnershipTransfer` interface for pending transfer details + - Extended `OwnershipInfo` with `state` and `pendingTransfer` fields + - Extended `AccessControlCapabilities` with `hasTwoStepOwnable` flag + + **Indexer Integration:** + - Added `OWNERSHIP_TRANSFER_STARTED` event type support + - Added `queryPendingOwnershipTransfer()` method to indexer client + - Graceful degradation when indexer is unavailable + + **Non-Functional:** + - Performance: Ownership queries < 3s, indexer queries < 1s, ledger queries < 500ms + - Logging: INFO for ownership operations, WARN for indexer unavailability + ## 0.16.0 ### Minor Changes diff --git a/packages/types/package.json b/packages/types/package.json index ceb92b21..e5b21c47 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-types", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "Shared TypeScript type definitions for the OpenZeppelin UI Builder ecosystem.", "type": "module", diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md index 20cc81f7..1eca1c68 100644 --- a/packages/ui/CHANGELOG.md +++ b/packages/ui/CHANGELOG.md @@ -1,5 +1,28 @@ # @openzeppelin/transaction-form-ui +## 1.0.0 + +### Minor Changes + +- [#249](https://github.com/OpenZeppelin/ui-builder/pull/249) [`7561580`](https://github.com/OpenZeppelin/ui-builder/commit/75615803c8c4e9848ffd469a19e5e684a92579fb) Thanks [@pasevin](https://github.com/pasevin)! - Add `subHeader` prop to `SidebarLayout` to allow rendering content between the header and the scrollable area. + +- [#256](https://github.com/OpenZeppelin/ui-builder/pull/256) [`f911a9e`](https://github.com/OpenZeppelin/ui-builder/commit/f911a9ef64ad60d6b8381006f41ff398a7765e96) Thanks [@pasevin](https://github.com/pasevin)! - Add `NetworkIcon` and `NetworkSelector` components to the UI package for reuse across applications. + - `NetworkIcon`: Reusable component for rendering network icons based on ecosystem and iconComponent + - `NetworkSelector`: Generic dropdown selector component with search, ecosystem grouping, and network type badges + - Refactor `NetworkStatusBadge` and `NetworkRow` to use `NetworkIcon` for consistency + +- [#250](https://github.com/OpenZeppelin/ui-builder/pull/250) [`d74dafc`](https://github.com/OpenZeppelin/ui-builder/commit/d74dafcb83d3bc87b89aed19abc7362a5c34c02a) Thanks [@pasevin](https://github.com/pasevin)! - Move Header component to UI package + +- [#246](https://github.com/OpenZeppelin/ui-builder/pull/246) [`fbc8ecd`](https://github.com/OpenZeppelin/ui-builder/commit/fbc8ecd527dd879b209b02878db210eadf49208c) Thanks [@pasevin](https://github.com/pasevin)! - Add reusable sidebar components (SidebarButton, SidebarLayout, SidebarSection) to enable sidebar reuse across projects + +### Patch Changes + +- [#254](https://github.com/OpenZeppelin/ui-builder/pull/254) [`c0cb6d1`](https://github.com/OpenZeppelin/ui-builder/commit/c0cb6d1ab87c1e60e6d3c4532107cd525aaaea19) Thanks [@pasevin](https://github.com/pasevin)! - Fix `AddressDisplay` hover behavior: no reserved space when the copy button is hidden. The copy control now expands on hover/focus, removing the gray gap and right-side imbalance. Also adds a 2-second copy confirmation that swaps the copy icon for a green check. + +- Updated dependencies [[`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-types@1.0.0 + - @openzeppelin/ui-builder-utils@1.0.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/ui/package.json b/packages/ui/package.json index c128d40d..e4749621 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-ui", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "Shared React UI components for the OpenZeppelin UI Builder.", "type": "module", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index ed99ba19..141d44ac 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,5 +1,39 @@ # @openzeppelin/transaction-form-utils +## 1.0.0 + +### Minor Changes + +- [#243](https://github.com/OpenZeppelin/ui-builder/pull/243) [`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48) Thanks [@pasevin](https://github.com/pasevin)! - Add Access Control and Ownable support for Stellar (Soroban) contracts + + ### @openzeppelin/ui-builder-adapter-stellar + - Add `AccessControlService` implementation with full support for OpenZeppelin Access Control and Ownable patterns + - Add capability detection to identify contracts implementing AccessControl, Ownable, or both + - Support role management: query current roles, grant/revoke roles, check permissions + - Support ownership management: transfer ownership, query current owner + - Add historical queries via SubQuery indexer integration for complete role change and ownership transfer history + - Implement server-side filtering by contract, role, account, and limit + - Add graceful degradation when indexer is unavailable (on-chain queries continue to work) + - Add comprehensive address validation using shared utilities at all service entry points + - Export access control service via `getAccessControlService()` method on `StellarAdapter` + - Add snapshot export functionality for current access control state + - Support both account addresses (G...) and contract addresses (C...) for ownership transfers + + ### @openzeppelin/ui-builder-types + - Add `AccessControlService` interface and related types (`AccessControlCapabilities`, `OwnershipInfo`, `RoleAssignment`, `AccessSnapshot`, `HistoryEntry`, `OperationResult`) + - Add `getAccessControlService?()` optional method to `ContractAdapter` interface + - Extend `BaseNetworkConfig` with optional `indexerUri` and `indexerWsUri` fields for GraphQL endpoint configuration + + ### @openzeppelin/ui-builder-utils + - Add access control snapshot utilities (`validateSnapshot`, `serializeSnapshot`, `deserializeSnapshot`, `createEmptySnapshot`, `findRoleAssignment`, `compareSnapshots`) + - Add access control error utilities (`isAccessControlError`, error message extraction helpers) + - Export address normalization utilities (`normalizeAddress`, `addressesEqual`) for chain-agnostic address comparison + +### Patch Changes + +- Updated dependencies [[`bfbbf9b`](https://github.com/OpenZeppelin/ui-builder/commit/bfbbf9bf55883ae61d6672436cfea66040251d48), [`f9cf1c7`](https://github.com/OpenZeppelin/ui-builder/commit/f9cf1c7018d5baffeda8da6b747710bad941ce3e), [`94bc4b4`](https://github.com/OpenZeppelin/ui-builder/commit/94bc4b4deedb2a3755fa5e17d161a65d37944df7)]: + - @openzeppelin/ui-builder-types@1.0.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/utils/package.json b/packages/utils/package.json index 4d62d7d9..b59e9d40 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-builder-utils", - "version": "0.16.0", + "version": "1.0.0", "private": false, "description": "Shared, framework-agnostic utility functions for the OpenZeppelin UI Builder.", "type": "module",