Skip to content

Commit ac8b9b1

Browse files
committed
Merge origin/main into order-book branch
Resolves the PR #66 conflict caused by main renaming defi/ -> finance/. Git rename detection carried the order-book changes (base_lot_size, quote_lot_size, README critbit wording) into finance/order-book/ cleanly; verified cargo check passes at the new path. https://claude.ai/code/session_01G6iaAjzg8aoFwe8ZWWG9VR
2 parents 4647f0e + 907197a commit ac8b9b1

606 files changed

Lines changed: 28640 additions & 34510 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/.ghaignore

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +0,0 @@
1-
# build and test error
2-
basics/realloc/native
3-
basics/cross-program-invocation/native
4-
5-
# uses generated client from shank, can't rewrite to solana-bankrun
6-
tools/shank-and-solita/native
7-
8-
# can't test on localnet
9-
tokens/pda-mint-authority/native
10-
tokens/nft-minter/native
11-
tokens/transfer-tokens/native
12-
tokens/token-minter/native
13-
tokens/create-token/native
14-
15-
tokens/token-swap/anchor
16-
17-
# not building
18-
oracles/pyth/anchor
19-
20-
# not building
21-
compression/cutils/anchor
22-
compression/cnft-vault/anchor
23-
# builds but need to test on localhost
24-
compression/cnft-burn/anchor
25-
26-
# test failing
27-
# https://github.com/solana-developers/helpers/issues/40
28-
tokens/escrow/anchor
29-
30-
# not live
31-
tokens/token-extensions/group/anchor
32-
tokens/token-extensions/group/quasar
33-
34-
# CPI quasar project uses subdirectories (hand/ and lever/) instead of a root Quasar.toml
35-
basics/cross-program-invocation/quasar
36-
37-
38-
39-
# error in tests
40-
tokens/external-delegate-token-master/anchor
41-
42-
# build failed - program outdated
43-
tokens/token-extensions/metadata/anchor
44-
45-
# dependency issues
46-
tokens/token-extensions/nft-meta-data-pointer/anchor-example/anchor
47-
48-
tokens/token-extensions/mint-close-authority/native
49-
tokens/token-extensions/transfer-fee/native
50-
tokens/token-extensions/non-transferable/native
51-
52-
# all steel projects
53-
54-
basics/account-data/steel
55-
basics/checking-accounts/steel
56-
basics/close-account/steel
57-
basics/counter/steel
58-
basics/create-account/steel
59-
basics/cross-program-invocation/steel
60-
basics/favorites/steel
61-
basics/pda-rent-payer/steel
62-
basics/processing-instructions/steel
63-
basics/program-derived-addresses/steel
64-
basics/realloc/steel
65-
basics/rent/steel
66-
basics/transfer-sol/steel
67-
68-
tokens/escrow/steel
69-
70-
tokens/pda-mint-authority/steel
71-
tokens/token-minter/steel
72-
tokens/token-swap/steel
73-
tokens/transfer-tokens/steel

.github/workflows/quasar.yml

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,22 +171,49 @@ jobs:
171171
echo "Building and Testing $project with Solana $solana_version"
172172
cd "$project" || return 1
173173
174-
# Build with quasar CLI
175-
if ! quasar build; then
176-
echo "::error::quasar build failed for $project"
177-
echo "$project: quasar build failed with $solana_version" >> $GITHUB_WORKSPACE/failed_projects.txt
178-
cd - > /dev/null
179-
return 1
174+
# Determine the quasar program directories for this project. Normally
175+
# the project dir itself holds the Quasar.toml. Some examples (e.g. the
176+
# cross-program-invocation CPI demo) instead contain several program
177+
# subdirectories (hand/, lever/), each its own Quasar project. In that
178+
# case build them all *first*, then test them all, so a program whose
179+
# tests load a sibling program's compiled .so (the CPI callee) has it
180+
# available regardless of directory order.
181+
local prog_dirs=()
182+
if [ -f Quasar.toml ]; then
183+
prog_dirs=(".")
184+
else
185+
for d in */; do
186+
[ -f "${d}Quasar.toml" ] && prog_dirs+=("${d%/}")
187+
done
180188
fi
181189
182-
# Run Rust tests (quasar examples use cargo test with quasar-svm)
183-
if ! cargo test; then
184-
echo "::error::cargo test failed for $project"
185-
echo "$project: cargo test failed with $solana_version" >> $GITHUB_WORKSPACE/failed_projects.txt
190+
if [ ${#prog_dirs[@]} -eq 0 ]; then
191+
echo "::error::no Quasar.toml found for $project"
192+
echo "$project: no Quasar.toml found with $solana_version" >> $GITHUB_WORKSPACE/failed_projects.txt
186193
cd - > /dev/null
187194
return 1
188195
fi
189196
197+
# Build every program first.
198+
for d in "${prog_dirs[@]}"; do
199+
if ! ( cd "$d" && quasar build ); then
200+
echo "::error::quasar build failed for $project ($d)"
201+
echo "$project: quasar build failed with $solana_version" >> $GITHUB_WORKSPACE/failed_projects.txt
202+
cd - > /dev/null
203+
return 1
204+
fi
205+
done
206+
207+
# Then run Rust tests (quasar examples use cargo test with quasar-svm).
208+
for d in "${prog_dirs[@]}"; do
209+
if ! ( cd "$d" && cargo test ); then
210+
echo "::error::cargo test failed for $project ($d)"
211+
echo "$project: cargo test failed with $solana_version" >> $GITHUB_WORKSPACE/failed_projects.txt
212+
cd - > /dev/null
213+
return 1
214+
fi
215+
done
216+
190217
echo "Build and tests succeeded for $project with $solana_version version."
191218
cd - > /dev/null
192219
return 0

.gitignore

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ node_modules/
88
**/*/node_modules
99
**/*/package-lock.json
1010
**/*/Cargo.lock
11-
# Exception: escrow native needs Cargo.lock to pin blake3 (see tokens/escrow/native/Cargo.toml)
12-
!tokens/escrow/native/Cargo.lock
11+
# Exception: escrow native is a standalone (non-workspace) crate, so it keeps
12+
# its Cargo.lock tracked for reproducible builds.
13+
!finance/escrow/native/Cargo.lock
14+
# Exception: shank-and-codama native is also a standalone (non-workspace) crate.
15+
!tools/shank-and-codama/native/program/Cargo.lock
1316

1417
**/*/.anchor
1518
**/*/.DS_Store
@@ -23,6 +26,4 @@ node_modules/
2326
/target
2427
deploy
2528
.claude/*
26-
# Exception: skills are shared team resources
27-
!.claude/skills/
28-
!.claude/skills/**
29+
!.claude/skills/

.husky/pre-commit

100644100755
Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,20 @@
1-
npx lint-staged
1+
#!/usr/bin/env sh
2+
3+
# GUI git clients (Fork, SourceTree, etc.) often omit nvm/fnm from PATH.
4+
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
5+
6+
if [ -s "$HOME/.nvm/nvm.sh" ]; then
7+
# shellcheck disable=SC1090
8+
. "$HOME/.nvm/nvm.sh"
9+
elif [ -d "$HOME/.fnm" ]; then
10+
export PATH="$HOME/.fnm/current/bin:$PATH"
11+
fi
12+
13+
cd "$(dirname "$0")/.." || exit 1
14+
15+
if ! command -v pnpm >/dev/null 2>&1; then
16+
echo "husky: pnpm not found. Open a terminal in this repo and run: pnpm install"
17+
exit 1
18+
fi
19+
20+
pnpm exec lint-staged

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Changelog
2+
3+
All notable changes to this repository are documented here.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6+
7+
## [2026-04-08] — Quicknode fork modernization (Mike MacCana)
8+
9+
Mike MacCana led the Quicknode fork of the [Solana Foundation program examples](https://github.com/solana-developers/program-examples) from late 2025. The first commits on this repository lineage are dated **8 April 2026**; the summary below covers that work through the initial merge.
10+
11+
### What changed (high level)
12+
13+
**Toolchain and frameworks.** The tree had accumulated examples from several years of Solana development (including Anchor releases going back to the ~0.26 era in 2022 and many intermediate versions). The fork brought the Anchor examples up to **Anchor 1.0.0** stable (from 1.0.0-rc.5), refreshed Agave/Solana CLI pins, standardized on **pnpm**, and added parallel implementations in **[Quasar](https://quasar-lang.com/docs)**, **Pinocchio**, **Native Rust**, and **ASM** where applicable. Token-2022 examples were renamed to **`token-extensions`**.
14+
15+
**Testing.** Replaced the old pattern of local validators, Bankrun, and scattered TypeScript `anchor test` flows with **LiteSVM in-process tests** for most Anchor programs — matching current Anchor defaults (`cargo test` wired through `Anchor.toml` / `pnpm test`). Fixed broken or flaky tests across Native, Pinocchio, and Anchor; added missing harnesses (e.g. block-list Pinocchio). CI was reworked for a repo this size: path filtering, caching, matrix sharding, and reliable detection of framework roots.
16+
17+
**Programs and layout.** Broke large monolithic `lib.rs` files into **instruction handler modules**; adopted **`InitSpace`** and explicit PDA bumps instead of magic account sizes; corrected several logic bugs (escrow, token swap invariant, counter authority checks, compression Bubblegum program id, and more). Expanded finance and token-extension coverage; reorganized transfer-hook examples (including block-list under Pinocchio).
18+
19+
**Documentation.** Rewrote the root README (framework badges, clearer example blurbs, ASM links), ran a style and **truth audit** on READMEs, and linked canonical [Solana terminology](https://solana.com/docs/references/terminology) on first mention. Added this changelog, `CONTRIBUTING.md` (aligned with LiteSVM testing), README templates, per-example Anchor and Quasar READMEs, fixed Husky for GUI git clients, removed unused maintainer scripts (`sync-package-json`, `cicd.sh`, local-validator helpers for the allow/block-list UI), dropped the orphan `tokens/spl-token-minter/` tree, and removed legacy root `package.json` dependencies (web3.js, Bankrun, chai).
20+
21+
**Removed / deferred.** Dropped duplicate or WIP trees (duplicate block-list Pinocchio copy, Quasar metadata example blocked on `sol_realloc`, root `yarn.lock`). Some examples remain excluded from CI via `.ghaignore` until they build cleanly again (compression, escrow, pyth, and others — see that file for the live list).
22+
23+
## Before June 2026
24+
25+
There was **no changelog** before June 2026. Older history lives in git only.

0 commit comments

Comments
 (0)