-
Notifications
You must be signed in to change notification settings - Fork 90
docs: release notes for February 2026 releases #2315
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Features | ||
|
|
||
| - `create_accounts()` generic function for unified PDA, mint, token, and ATA creation. Exported along with `PdaInitParam`, `CreateMintsInput`, `TokenInitParam`, `AtaInitParam`, and `SharedAccounts`. (#2287) | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - Enforces canonical bump in ATA verification. (#2249) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Features | ||
|
|
||
| - `create_accounts()` generic function for unified PDA, mint, token, and ATA creation. Exported along with `PdaInitParam`, `CreateMintsInput`, `TokenInitParam`, `AtaInitParam`, and `SharedAccounts`. (#2287) | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - Enforces canonical bump in ATA verification. (#2249) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,29 +1,43 @@ | ||
| # Changelog | ||
|
|
||
| ## [Unreleased] | ||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Features | ||
|
|
||
| - Forester dashboard with compression improvements, pending state tracking, and eligibility checks. (#2310) | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Features | ||
|
|
||
| - `AccountInterface` uses photon v2 types, `ColdContext` simplified. (#2274) | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `validate_mint()` validates mint for all token accounts, not just compressible. (#2251) | ||
| - Enforces canonical bump in ATA verification. (#2249) | ||
|
|
||
| ## 2026-02-10 | ||
|
|
||
| ### Breaking Changes | ||
|
|
||
| - **Removed `api_key` field from `LightClientConfig`.** The API key is now part of the `photon_url`: | ||
| ```rust | ||
| // Before | ||
| LightClientConfig::new( | ||
| "https://api.devnet.solana.com".to_string(), | ||
| Some("https://photon.helius.com".to_string()), | ||
| Some("YOUR_KEY".to_string()), | ||
| ) | ||
| - `LightClientConfig::new()` takes 2 parameters instead of 3. The API key is now part of `photon_url`. | ||
| Before: `LightClientConfig::new(url, photon_url, Some(api_key))` | ||
| After: `LightClientConfig::new(url, Some("https://photon.helius.com?api-key=YOUR_KEY"))` | ||
| Migration: embed the API key as a query parameter in the photon URL. (#2219) | ||
|
|
||
| - `LightClientConfig::devnet()` takes 1 parameter instead of 2. (#2219) | ||
|
|
||
| - `PhotonIndexer::new()` takes 1 parameter instead of 2. (#2219) | ||
|
|
||
| // After | ||
| LightClientConfig::new( | ||
| "https://api.devnet.solana.com".to_string(), | ||
| Some("https://photon.helius.com?api-key=YOUR_KEY".to_string()), | ||
| ) | ||
| ``` | ||
| - `LightClient::add_indexer()` takes 1 parameter instead of 2. (#2219) | ||
|
|
||
| - **`LightClientConfig::new` takes 2 parameters instead of 3** (`url`, `photon_url`). | ||
| ### Features | ||
|
|
||
| - **`LightClientConfig::devnet` takes 1 parameter instead of 2** (`photon_url`). | ||
| - `compressed_mint` photon API support. (#2198) | ||
|
|
||
| - **`PhotonIndexer::new` takes 1 parameter instead of 2** (`url`). | ||
| ### Fixes | ||
|
|
||
| - **`LightClient::add_indexer` takes 1 parameter instead of 2** (`url`). | ||
| - Tree infos v2 helpers fixed. (#2244) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Breaking Changes | ||
|
|
||
| - `max_top_up` removed from instruction structs. Authority mutability and wire format aligned with pinocchio. (#2301) | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (#2279) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (#2279) | ||
|
|
||
| ## 2026-02-10 | ||
|
|
||
| ### Features | ||
|
|
||
| - `compressed_mint` photon API support. (#2198) |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,9 @@ | ||||||||||||||||||||||
| # Changelog | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| All notable changes to this package will be documented in this file. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 2026-02-17 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### Fixes | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| - `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (#2279) | ||||||||||||||||||||||
|
Comment on lines
+5
to
+9
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Consider including version numbers alongside dates. The entry uses a date-based format (2026-02-17) but doesn't specify which version this corresponds to. According to the PR objectives, this release includes 📋 Suggested format with version number-## 2026-02-17
+## [0.22.0] - 2026-02-17Note: This observation applies to all CHANGELOG files in this PR. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Features | ||
|
|
||
| - 1-byte discriminator support via `#[light_pinocchio(discriminator = [...])]` attribute. Supports variable-length discriminators (1-8 bytes). (#2302) | ||
| - `create_accounts()` unified function replaces multiple separate code generation paths for PDAs, mints, tokens, and ATAs. (#2287) | ||
| - Forester dashboard with compression improvements. (#2310) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # First, explore the repository structure
git ls-files | head -20Repository: Lightprotocol/light-protocol Length of output: 623 🏁 Script executed: # Check the full CHANGELOG.md to understand context
cat -n sdk-libs/macros/CHANGELOG.md | head -40Repository: Lightprotocol/light-protocol Length of output: 851 🏁 Script executed: # Search for references to PR `#2310` or "Forester" in the repo
rg '#2310|Forester' --type-list | head -5
rg '#2310|Forester' -iRepository: Lightprotocol/light-protocol Length of output: 50792 🏁 Script executed: # Check git history for recent changes to this file
git log --oneline sdk-libs/macros/CHANGELOG.md | head -5Repository: Lightprotocol/light-protocol Length of output: 125 🏁 Script executed: # Search for "forester" references in the entire codebase to understand scope
fd -type f -name "*.md" -o -name "*.rs" | xargs rg -i "forester" 2>/dev/null | head -20Repository: Lightprotocol/light-protocol Length of output: 1918 🏁 Script executed: # Check if PR `#2310` made changes to the macros package itself
grep -r "2310\|#2310" sdk-libs/macros --include="*.md" --include="*.rs"Repository: Lightprotocol/light-protocol Length of output: 160 🏁 Script executed: # Compare entries between both changelogs
echo "=== sdk-libs/macros/CHANGELOG.md ===" && rg -A1 -B1 "Forester dashboard" sdk-libs/macros/CHANGELOG.md
echo "=== sdk-libs/client/CHANGELOG.md ===" && rg -A1 -B1 "Forester dashboard" sdk-libs/client/CHANGELOG.mdRepository: Lightprotocol/light-protocol Length of output: 447 🏁 Script executed: # Check what files the macros package typically documents
ls -la sdk-libs/macros/docs/ 2>/dev/null | head -20Repository: Lightprotocol/light-protocol Length of output: 477 🏁 Script executed: # Read the CLAUDE.md guidelines
cat sdk-libs/macros/docs/CLAUDE.mdRepository: Lightprotocol/light-protocol Length of output: 7269 Remove the Forester dashboard entry from the macros changelog. This entry is misplaced. The Forester dashboard feature is documented in Forester is a runtime compression/operational tool separate from the macros package, which provides compile-time code generation for account data structures. While macros documentation mentions foresters as users of the idempotent mint feature (handling already-compressed mints), the dashboard itself is not a macros feature. Move this entry to the client changelog only or remove the duplicate. 🤖 Prompt for AI Agents |
||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Features | ||
|
|
||
| - `light_program` pinocchio macro refactored for cleaner code generation. (#2247) | ||
|
|
||
| ### Fixes | ||
|
|
||
| - Enforces canonical bump in ATA verification. (#2249) | ||
|
Comment on lines
+19
to
+21
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Consider clarifying "canonical bump" terminology. The fix mentions "Enforces canonical bump in ATA verification," but developers unfamiliar with Solana PDA (Program Derived Address) conventions might not immediately understand what "canonical bump" means. Consider adding a brief explanation or link to documentation. For example: "Enforces canonical bump (seed 255) in ATA verification to ensure deterministic address derivation." This helps developers understand the security/correctness implications of the fix. 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,22 +1,24 @@ | ||
| # Changelog | ||
|
|
||
| ## [Unreleased] | ||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Breaking Changes | ||
|
|
||
| - **Simplified `Configuration` struct.** The API key is now embedded in the URL as a query parameter: | ||
| ```rust | ||
| // Before | ||
| let mut config = Configuration::new(); | ||
| config.base_path = "https://photon.helius.com".to_string(); | ||
| config.api_key = Some(ApiKey { prefix: None, key: "YOUR_KEY".to_string() }); | ||
| - `Configuration` struct simplified. The API key is now embedded in the URL. | ||
| Before: `Configuration::new()` + `config.api_key = Some(ApiKey { ... })` | ||
| After: `Configuration::new("https://photon.helius.com?api-key=YOUR_KEY")` | ||
| Migration: pass the full URL with API key to `Configuration::new()`. (#2219) | ||
|
|
||
| - `Configuration::new_with_api_key()` removed. Use `Configuration::new()` with the API key in the URL. (#2219) | ||
|
|
||
| // After | ||
| let config = Configuration::new("https://photon.helius.com?api-key=YOUR_KEY".to_string()); | ||
| ``` | ||
| ### Features | ||
|
|
||
| - **Removed `Configuration::new_with_api_key`.** Use `Configuration::new` with the API key in the URL instead. | ||
| - `AccountInterface` uses photon v2 types, `ColdContext` simplified. (#2274) | ||
| - `compressed_mint` API support. (#2198) | ||
| - Client types pre-generated by progenitor from the Photon OpenAPI spec. Regenerate with `cargo build -p photon-api --features generate`. (#2219) | ||
|
|
||
| ### Added | ||
| ### Fixes | ||
|
|
||
| - **`external/photon` git submodule.** The Photon OpenAPI spec (`external/photon/src/openapi/specs/api.yaml`) is now pulled in as a submodule. Client types are pre-generated by [progenitor](https://github.com/oxidecomputer/progenitor) and checked in as `src/codegen.rs`. To regenerate after spec changes: `cargo build -p photon-api --features generate`. Generation deps (progenitor, regress, etc.) are behind the optional `generate` feature so they don't affect normal builds or CI. | ||
| - V1 compatibility in mint action layout removed. (#2226) | ||
|
Comment on lines
+22
to
+24
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # Search for PR `#2226` references in commits and code
rg "#2226" --type md --type rs --type ts --type js -A 2 -B 2Repository: Lightprotocol/light-protocol Length of output: 98 🏁 Script executed: # Search for mint action layout related code
rg "mint.*action.*layout" -i --type md --type rs --type ts --type js -A 2Repository: Lightprotocol/light-protocol Length of output: 98 🏁 Script executed: # Search for V1 compatibility references
rg "V1.*compat|v1.*compat" -i --type md --type rs --type ts --type js -A 2 -B 2Repository: Lightprotocol/light-protocol Length of output: 98 🏁 Script executed: # Look for breaking change indicators in commit messages
git log --oneline --all | grep -iE "#2226|mint.*action|v1.*compat"Repository: Lightprotocol/light-protocol Length of output: 205 🏁 Script executed: # Get full commit details for the V1 compatibility removal
git show 221c1aa5 --statRepository: Lightprotocol/light-protocol Length of output: 1918 🏁 Script executed: # Get the actual diff to see what was removed
git show 221c1aa5 --no-stat | head -100Repository: Lightprotocol/light-protocol Length of output: 111 🏁 Script executed: # Search for any deprecation notices or V1/V2 documentation
rg "V1|V2|v1|v2" sdk-libs/photon-api --type md -B 2 -A 2 | head -60Repository: Lightprotocol/light-protocol Length of output: 685 🏁 Script executed: # Check if there's any migration guide or breaking changes note
fd "CHANGELOG\|MIGRATION\|BREAKING\|README" sdk-libs/photon-api --type fRepository: Lightprotocol/light-protocol Length of output: 54 Recategorize to Breaking Changes: V1 compatibility removal is a breaking change The commit 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,15 @@ | ||||||||||||||||||||||||||||||||||||||||||||||
| # Changelog | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| All notable changes to this package will be documented in this file. | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## 2026-02-17 | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ### Fixes | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| - Enforces canonical bump in ATA verification. (#2249) | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## 2026-02-10 | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ### Features | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| - `compressed_mint` photon API support. (#2198) | ||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+5
to
+15
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Multiple release entries increase the value of version numbers. This CHANGELOG documents two separate releases (Feb 17 and Feb 10), which according to the PR objectives correspond to versions 0.22.0 and 0.21.0 respectively. With multiple releases, version numbers become even more important for users to identify which features and fixes are in their installed version. 📋 Suggested format for multiple releases-## 2026-02-17
+## [0.22.0] - 2026-02-17
### Fixes
- Enforces canonical bump in ATA verification. (`#2249`)
-## 2026-02-10
+## [0.21.0] - 2026-02-10
### Features
- `compressed_mint` photon API support. (`#2198`)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Breaking Changes | ||
|
|
||
| - `max_top_up` removed from instruction structs. Authority mutability and wire format aligned with pinocchio. (#2301) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Consider adding migration guidance for the breaking change. While the breaking change is noted, developers upgrading token-client may benefit from a brief before/after example or migration note, similar to what's provided in the token-sdk changelog (lines 9-12). If token-client's API directly exposes these instruction structs, explicit migration guidance would help users adapt their code. 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `TransferInterfaceCpi` passes `fee_payer` in the LightToLight transfer path. Previously hardcoded to `None`, causing PrivilegeEscalation errors. (#2294) | ||
| - Authority mutability and wire format aligned with token-sdk. (#2301) | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (#2279) | ||
| - Enforces canonical bump in ATA verification. (#2249) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this package will be documented in this file. | ||
|
|
||
| ## 2026-02-27 | ||
|
|
||
| ### Breaking Changes | ||
|
|
||
| - `max_top_up` removed from all instruction structs (`Transfer`, `TransferChecked`, `Burn`, `BurnChecked`, `MintTo`, `MintToChecked`, `TransferInterface`, `Approve`, `Revoke`). The on-chain program defaults to `u16::MAX` when not specified. | ||
| Before: `Transfer { max_top_up: Some(u16::MAX), ... }` | ||
| After: `Transfer { ... }` (field removed) | ||
| Migration: remove `max_top_up` from all instruction builders. (#2301) | ||
|
|
||
| - `fee_payer` is now required in instruction and CPI APIs. Authority is writable when no `fee_payer` is provided. (#2301) | ||
|
|
||
| - `get_token_account_balance()` returns `ProgramError` instead of SDK-specific errors. (#2301) | ||
|
|
||
| ## 2026-02-18 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `TransferInterfaceCpi` passes `fee_payer` in the LightToLight transfer path. Previously hardcoded to `None`, causing PrivilegeEscalation errors. (#2294) | ||
|
|
||
| ## 2026-02-17 | ||
|
|
||
| ### Fixes | ||
|
|
||
| - `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (#2279) | ||
| - Enforces canonical bump in ATA verification. (#2249) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider adding package version labels next to date headers.
Using date-only headings makes cross-referencing release tags harder. Adding version info (e.g.,
## 2026-02-27 (v0.23.0)) would improve traceability with GitHub releases and PR release notes.Also applies to: 11-12, 22-22
🤖 Prompt for AI Agents