Reference
Changelog
Release-by-release history. Mirrors CHANGELOG.md in the repo.
Unreleased
Project renamed from Shackle to Shain. PDA seeds now use the shain_* prefix. All SDK exports, public surfaces and cross-verify files updated. Program key rotated.
[0.4.1] — 2026-04-16
Fixed
- Refund rent correctly when closing sessions that were opened and re-opened multiple times by the same signer.
- Guard
start_sessionagainst double-open when the previous session is still within its expiry window.
[0.4.0] — 2026-03-28
Added
gated_action(tag)instruction. Dapps can gate a downstream CPI behind an active session using anyu64tag for instrumentation.close_session()instruction — anyone can close an expired session and return rent to the original owner.- Workspace-level Cargo manifest with centralized dependency versions.
Changed
- Bumped Anchor to 1.0.0 and Solana toolchain to 3.1.x.
- Moved from raw SPL transfer CPI to
anchor_spl::token::Transfer.
[0.3.0] — 2026-02-15
Added
initialize(params)accepts optional overrides for session duration, fee, and minimum holding.ShainConfigtracks lifetimetotal_sessionsandtotal_fees_collected.
Fixed
- Session PDA derivation now uses the full user pubkey instead of only the first 16 bytes.
[0.2.0] — 2026-01-10
Added
- First working
start_session()instruction. Charges the session fee and records expiry. - 9 integration tests covering happy paths and the main failure modes.
[0.1.0] — 2025-12-02
Added
- Initial scaffolding generated by
anchor init. ShainConfigandShainSessionaccount definitions.- Basic
initialize()instruction that writes the config PDA.