Releases: storyprotocol/protocol-periphery-v1
@story-protocol/protocol-periphery@1.3.2
Release of @story-protocol/protocol-periphery version 1.3.2
v1.3.2
This release focuses on security enhancements, feature additions like token URI updates and template upgrades, and significant improvements to testing and CI workflows.
Security Improvements
- fix: add array length matching check in internal library functions (#181)
- fix: lock pragma version in
CachableNFT(#180) - fix(story-nft): enforce max
balanceOf()of 1 for each address (#183) - fix(story-badge): prevent signature replay in
StoryBadgeNFTminting (#182) - fix: prevent unintended license disablement during royalty vault deployment (#184)
- fix(upgrade): add upgrade permissions for Licensing Hooks (#198)
Features
- feat(SPGNFT): add
setTokenURIfunction toSPGNFTContract (#189) - feat(ci): add slack notification (#192)
- feat: enable token template upgrades through
TokenizerModule(#193) - feat(upgrade): revamp upgrade scripts (#196)
Tests & CI
- test(integration): replace mock ERC20 with Wrapped IP token (WIP) (#190)
- fix(tests): remove IP account state assertions and prediction functions (#200)
- Add test for
setTokenURIfunction of theSPGNFTcontract (#206) - Integration test workflow (#207)
Documentation, Audits & Miscellaneous Fixes
- fix: typo (#185)
- add audit report (#186)
- Update Audit Report (#187)
- Add Security Audit Report for
SPGNFT.setTokenURI()Implementation (#197) - docs: improve documentation for setting licensing configuration (#191)
- chore: add upgrade collection functions' declaration to
IRegistrationWorkflowsinterface (#194) - fix: remove deprecated functions and improve test suite (#195)
- chore: update deployed contract addresses (#202)
Full Changelog: v1.3.1...v1.3.2
Contributors
v1.3.1
This release builds on v1.3.0 with enhanced security, improved code efficiency, and expanded test coverage, while ensuring workflow contract backward compatibility and improving permission handling.
What's Changed
Backward Compatibility
Security Improvements
- Replaced permanent permission with transient permission (#176)
- Other security fixes (#175):
- Ensured
msg.sendermatchessignerin workflow contracts - Used
safeERC20inSPGNFT - Added initializers for future-proofing
- Made
nonReentrantmodifier precede all other modifiers inTokenizerModule - Allowed setting
TotalLicenseTokenLimitto0(no limit) in licensing hook - Replaced
_mintwith_safeMintinSPGNFT
- Ensured
Story NFT
- Refactored
OrgStoryNFTFactorycontract to reduce code redundancy (#156)
Documentation, Tests & Miscellaneous Fixes
- Added new integration tests and fixed existing ones (#162, #177)
- Fixed typos and improved documentation/comments (#163, #164, #167, #168, #169, #173)
- Updated dependencies (#179)
Contributors
@sebsadface, @nnsW3, @lukema95, @VolodymyrBg, @Marcofann, @Dimitrolito, @Himess
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's Changed
-
StoryNFT & SPGNFT
Introduced Story NFT, enabled post-deployment URI changes, added upgrade scripts, added ERC-7572 contract-level metadata, included deduplication support, extractedOrgNFTlogic toBaseOrgStoryNFT, madeStoryBadgeNFTupgradeable, implemented IP metadata setting, and resolved a reentrancy vulnerability.
(#87, #91, #92, #95, #98, #108, #109, #111, #113) -
Cacheable NFT
Introduced cacheable features for StoryBadgeNFT, added auto-cache capabilities, fixed removal from cache, and provided a cache state getter.
(#114, #115, #116, #117) -
Licensing
Added permission handling toregisterPILTermsAndAttach, introduced hooks to limit total license tokens and lock licensing, supported custom license templates, enabled multi-license attachment (including during IP registration), addedmaxRevenueShareparameter, enforced data validation, and restored v1.2 compatibility in licensing workflows.
(#89, #99, #100, #102, #123, #128, #133, #134, #145, #146, #150, #154) -
Grouping & Royalty
Added royalty claiming for group IPs, introducedRoyaltyTokenDistributionWorkflows, removed snapshots inRoyaltyWorkflows/GroupingWorkflows, deployed royalty vaults for IPs without one, updated royalty logic to align with core changes, testedcollectRoyaltiesAndClaimReward, and restored v1.2 compatibility.
(#97, #105, #118, #136, #139, #148, #152) -
Tokenizer Module
Introduced the Tokenizer Module and implementedOwnableERC20.
(#143, #144) -
Derivatives
Restored v1.2 compatibility toDerivativeWorkflowsand introduced batch permissions for derivative registration.
(#147, #155) -
Registration
Restored v1.2 compatibility toRegistrationWorkflows.
(#151) -
Deployment & Testing
Updated tests, scripts, and integrations to reflect core PoC changes, used pre-deployed CREATE3, and applied minor fixes.
(#93, #101, #103, #140, #141, #160) -
Refactoring & Chores
Replaced direct permission calls withexecuteWithSig, reverted those changes when necessary, cleaned up storage, added missing documentation, and fixed typos.
(#121, #133, #137, #149, #158)
New Contributors
- @vipocenka made their first contribution in #149
Full Changelog: v1.2.3...v1.3.0
v1.2.4
What's Changed
- Introduced Story NFT (#87) with various enhancements:
- Implemented ERC-7572 contract-level metadata support (#95)
- Added permission handling in
registerPILTermsAndAttach(#89) - Added royalty claiming for group IPs (#97)
- Added logic deploy royalty vault for group member IPs without existing vaults (#105)
Full Changelog: v1.2.3...v1.2.4
v1.2.3
What's Changed
- Refactored SPG into "workflow" contracts and introduced
RoyaltyWorkflowsfor IP revenue claiming (#68, #74) - Fixed and enhanced tests and upgrade scripts: changed mock IPGraph precompile address, added integration tests, improved test logs, and added missing
runfunction calls. (#69, #79, #80, #81) - Optimized royalty and licensing: removed
currencyTokensparameter, extracted batch claim functions, and removedhasIpAttachedLicenseTermscheck (#75, #84) - Added
registerGroupAndAttachLicensefunction for grouping (#85) - Repo enhancement, bumped solidity version to 0.8.26, and misc. (#70, #77, #78, #86)
Full Changelog: v1.2.1...v1.2.3
v1.2.2
What's Changed
Full Changelog: v1.2.1...v1.2.2
v1.2.1
What's Changed
- Added support for public minting in SPG and SPGNFT (#65).
- Added support for setting and retrieving base URI for SPGNFT (#66).
- Made license attachment idempotent in SPG (#59).
- Integrated
predictMintingLicenseFeefrom the licensing module for minting fee calculations (#64). - Bumped protocol-core dependencies to v1.2.1 and other minor updates (#63, #67).
Full Changelog: v1.2.0...v1.2.1
v1.2.0
What's Changed
- Introduced workflow contracts and Group IPA features, including deployment scripts for
GroupingWorkflows(#43, #50) - Introduced
DeployHelperto encapsulate deployment logic for periphery contracts deployment (#52) - Added support for custom license templates in
GroupingWorkflows(#55) - Added public minting fee recipient control and resolved inconsistent licensing issues (#16, #48)
- Updated documentation and added a gas analysis report (#47, #53)
- Bumped protocol-core dependencies to v1.2.0 and misc. (#51, #56)
Full Changelog: v1.1.0...v1.2.0
v1.1.0
- Migrate periphery contracts from protocol core repo (#1)
- Revamped SPG with NFT collection and mint token logic. (#5, #6)
- Added support for batch transactions via
multicall(#38) - Added functionality for registering IP with metadata and supporting metadata for SPG NFT. (#8, #20, #37)
- Addressed ownership transfer issues in deployment script. (#18, #39)
- Fixed issues with derivative registration, including minting fees for commercial licenses, license token flow, and making register and attach PIL terms idempotent. (#23, #25, #30)
- Added SPG & SPG NFT upgrade scripts (#10)
- Added IP Graph, Solady's ERC6551 integration, and core protocol package bumps. (#30)
- Enhance CI/CD, repo, and misc.(#2, #3, #11, #32)
Full Changelog: v1.1.0