Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions sdk-libs/account-pinocchio/CHANGELOG.md
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)
15 changes: 15 additions & 0 deletions sdk-libs/account/CHANGELOG.md
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)
52 changes: 33 additions & 19 deletions sdk-libs/client/CHANGELOG.md
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

Comment on lines +5 to +6
Copy link
Contributor

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
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/client/CHANGELOG.md` around lines 5 - 6, The changelog uses
date-only headings (e.g., "## 2026-02-27"); update each date header to include
the package version in parentheses (e.g., change "## 2026-02-27" to "##
2026-02-27 (v0.23.0)") so releases are traceable to tags/PRs—find and edit the
three date headers matching the pattern "## YYYY-MM-DD" and append the
corresponding semantic version string for each release, keeping the rest of the
content unchanged and following the same formatting convention for future
entries.

### 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)
15 changes: 15 additions & 0 deletions sdk-libs/compressed-token-sdk/CHANGELOG.md
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)
15 changes: 15 additions & 0 deletions sdk-libs/event/CHANGELOG.md
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)
9 changes: 9 additions & 0 deletions sdk-libs/instruction-decoder/CHANGELOG.md
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
Copy link
Contributor

Choose a reason for hiding this comment

The 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 light-client@0.22.0 and related packages. Including the version number (e.g., ## [0.22.0] - 2026-02-17) would improve traceability and align with Keep a Changelog conventions, making it easier for users to correlate CHANGELOG entries with installed versions.

📋 Suggested format with version number
-## 2026-02-17
+## [0.22.0] - 2026-02-17

Note: This observation applies to all CHANGELOG files in this PR.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## 2026-02-17
### Fixes
- `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (#2279)
## [0.22.0] - 2026-02-17
### Fixes
- `max_top_up` defaults to `u16::MAX` instead of `0` in instruction builders. (`#2279`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/instruction-decoder/CHANGELOG.md` around lines 5 - 9, Update the
CHANGELOG entry header to include the package version alongside the date (e.g.,
change "## 2026-02-17" to the Keep a Changelog style "## [0.22.0] - 2026-02-17")
so consumers can map the note about `max_top_up` default changes to the
corresponding release; apply the same versioned header format to all other
CHANGELOG files in this PR to ensure consistency with the PR objective
mentioning light-client@0.22.0 and related packages.

21 changes: 21 additions & 0 deletions sdk-libs/macros/CHANGELOG.md
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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, explore the repository structure
git ls-files | head -20

Repository: 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 -40

Repository: 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' -i

Repository: 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 -5

Repository: 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 -20

Repository: 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.md

Repository: 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 -20

Repository: Lightprotocol/light-protocol

Length of output: 477


🏁 Script executed:

# Read the CLAUDE.md guidelines
cat sdk-libs/macros/docs/CLAUDE.md

Repository: 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 sdk-libs/client/CHANGELOG.md (with more detail: "Forester dashboard with compression improvements, pending state tracking, and eligibility checks"), not in the macros package.

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
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/macros/CHANGELOG.md` at line 11, Remove the misplaced "Forester
dashboard with compression improvements. (`#2310`)" entry from
sdk-libs/macros/CHANGELOG.md: delete that line (the duplicate Forester dashboard
changelog entry) because the feature belongs in the client package; ensure the
client changelog (sdk-libs/client/CHANGELOG.md) retains the detailed entry
("Forester dashboard with compression improvements, pending state tracking, and
eligibility checks") and do not add any other Forester dashboard text to the
macros changelog or other macros docs.


## 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/macros/CHANGELOG.md` around lines 11 - 13, Update the CHANGELOG
entry "Enforces canonical bump in ATA verification. (`#2249`)" to clarify what
"canonical bump" means for readers: expand the line to something like "Enforces
canonical bump (seed 255) in ATA verification to ensure deterministic PDA/ATA
derivation" and optionally add a short parenthetical or link to Solana PDA/ATA
docs; reference the exact phrase "canonical bump" and "ATA verification" so the
wording is updated in the CHANGELOG.md entry.

28 changes: 15 additions & 13 deletions sdk-libs/photon-api/CHANGELOG.md
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 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 2

Repository: 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 2

Repository: 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 2

Repository: 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 --stat

Repository: Lightprotocol/light-protocol

Length of output: 1918


🏁 Script executed:

# Get the actual diff to see what was removed
git show 221c1aa5 --no-stat | head -100

Repository: 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 -60

Repository: 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 f

Repository: Lightprotocol/light-protocol

Length of output: 54


Recategorize to Breaking Changes: V1 compatibility removal is a breaking change

The commit 221c1aa5 with message "chore: rm v1 compatibility in mint action layout" is explicitly removing functionality. Removals are breaking changes—any code relying on V1 compatibility will fail after this update. While the commit type is "chore" (maintenance), this should be listed under Breaking Changes, not Fixes, to alert users to the breaking nature of this update. Fixes preserve compatibility while correcting bugs; removals do not.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/photon-api/CHANGELOG.md` around lines 22 - 24, The changelog entry
"V1 compatibility in mint action layout removed. (`#2226`)" is a breaking change
and must be recategorized; edit CHANGELOG.md to move that bullet out of the "###
Fixes" section into a "### Breaking Changes" section (create it if missing),
update the bullet to indicate removal and reference commit/PR (e.g., commit
221c1aa5 / `#2226`) and ensure the text clearly states V1 compatibility was
removed so users are warned of the breaking change.

15 changes: 15 additions & 0 deletions sdk-libs/program-test/CHANGELOG.md
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
Copy link
Contributor

Choose a reason for hiding this comment

The 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

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## 2026-02-17
### Fixes
- Enforces canonical bump in ATA verification. (#2249)
## 2026-02-10
### Features
- `compressed_mint` photon API support. (#2198)
## [0.22.0] - 2026-02-17
### Fixes
- Enforces canonical bump in ATA verification. (`#2249`)
## [0.21.0] - 2026-02-10
### Features
- `compressed_mint` photon API support. (`#2198`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/program-test/CHANGELOG.md` around lines 5 - 15, The CHANGELOG
currently lists two dated release entries without explicit version headings,
which makes it hard for users to map changes to package versions; update the
file (CHANGELOG.md) to add explicit version headers for each release (for
example add "## [0.22.0] - 2026-02-17" above the Feb 17 fixes and "## [0.21.0] -
2026-02-10" above the Feb 10 features), ensure each bullet remains under the
correct version header and follow the existing formatting convention so each
release entry clearly shows its version and date.

9 changes: 9 additions & 0 deletions sdk-libs/token-client/CHANGELOG.md
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)
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Verify each finding against the current code and only fix it if needed.

In `@sdk-libs/token-client/CHANGELOG.md` at line 9, Add a short migration note to
the CHANGELOG.md explaining the breaking change: state that the field max_top_up
was removed from the instruction structs and authority mutability/wire format
were aligned with pinocchio, and include a concise before/after example showing
the old instruction including max_top_up and the new instruction without it plus
the updated authority handling; reference the specific symbol names (max_top_up,
"instruction structs", and pinocchio alignment) so users can map the change to
their code and follow the same pattern used in the token-sdk changelog.

17 changes: 17 additions & 0 deletions sdk-libs/token-pinocchio/CHANGELOG.md
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)
29 changes: 29 additions & 0 deletions sdk-libs/token-sdk/CHANGELOG.md
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)