Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
174 commits
Select commit Hold shift + click to select a range
0f17a2b
instance storage
Adeswalla Mar 24, 2026
e648730
Merge branch 'main' into instance-storage
Adeswalla Mar 24, 2026
b9af063
Storage Patterns
Adeswalla Mar 24, 2026
03120fa
Merge branch 'main' into storage-patterns
Adeswalla Mar 24, 2026
77eb5f0
Add snapshot tests for 06-type-conversions basic example (#275)
ritik4ever Mar 24, 2026
ba5a14f
Merge branch 'main' into add-snapshot-tests-275
anoncon Mar 24, 2026
37b215b
storage-patterns
Adeswalla Mar 24, 2026
68775c7
Resolve merge conflict and fix storage key usage
Adeswalla Mar 24, 2026
93f41e6
Merge branch 'main' into storage-patterns
Adeswalla Mar 24, 2026
33a6543
new storage patterns
Adeswalla Mar 24, 2026
d834936
fix: resolve conflicts and enable increased TTL
Adeswalla Mar 24, 2026
cdac00f
Negative authentication test matrix
She-ge Mar 24, 2026
d5553d1
Add Events Tests
She-ge Mar 24, 2026
bf58912
update
DokaIzk Mar 25, 2026
fbec9c0
Updated Code
She-ge Mar 25, 2026
76b9497
Merge branch 'feat/256-Add-Events-Tests' of https://github.com/She-ge…
She-ge Mar 25, 2026
04835d2
new auth vector
Emeka000 Mar 26, 2026
1d7844b
feat: Create Error Handling Project
Eniola3321 Mar 28, 2026
99867cb
feat:implement Show Type Conversions
Kingsuite Mar 29, 2026
05532e5
feat: implement Write Getting Started Guide
Kingsuite Mar 29, 2026
b554483
feat:implement Create Getting Started Video
Kingsuite Mar 29, 2026
8f959aa
feat:implement Add Performance Benchmarks
talktosam2003 Mar 29, 2026
9dd1d30
feat: add multi-party auth integration tests (2-of-3, 3-of-3, cross-f…
DavisVT Mar 29, 2026
450c28c
Create Factory Contract for Deploying Ajos
talktosam2003 Mar 29, 2026
a603970
style: fix rustfmt formatting in integration tests
DavisVT Mar 29, 2026
055540d
Implement signer-threshold authorization flow
talktosam2003 Mar 29, 2026
d7abc08
Add Integration Tests
talktosam2003 Mar 29, 2026
b8cbd72
fix: cli issue
Kingsuite Mar 29, 2026
8f1289a
Merge branch 'main' into Conversions
Kingsuite Mar 29, 2026
a101cd9
fixed ci issue
talktosam2003 Mar 29, 2026
c80f79a
fix: cli issues
Kingsuite Mar 29, 2026
2d1fe35
Integratio
talktosam2003 Mar 29, 2026
8cb1e1b
Added error handling tests
amandapada Mar 29, 2026
f5b9735
feat(examples): panic vs errors demo – issue #260
amandapada Mar 29, 2026
37fc45e
Revert "feat(examples): panic vs errors demo – issue #260"
amandapada Mar 29, 2026
3d1a014
feat(examples): panic vs errors demo
amandapada Mar 29, 2026
eeb35e5
docs(events): Define structured event schemas and topic taxonomy
amandapada Mar 29, 2026
00a457b
fix: restore workspace Cargo.toml
amandapada Mar 29, 2026
d19ec20
Merge branch 'main' into Error-Handling
Eniola3321 Mar 29, 2026
d503800
fix: error
Mar 30, 2026
4af26ab
Merge branch 'main' into Started
Kingsuite Mar 30, 2026
4b25830
fic ci/cd
anoncon Mar 30, 2026
b9ed978
ci: add coverage job running all tests
mofejo1 Apr 23, 2026
0de102b
docs: document instance storage pattern
Franklivania Apr 23, 2026
d2910a0
docs: Added Code of Conduct and corrected preposition grammar in Code…
Hakimziyech18 Apr 23, 2026
d940028
feat: add main readme
akprinciple Apr 23, 2026
71fc87c
chore: define example categories (Issue #209)
godamongstmen897 Apr 23, 2026
14a4b82
Implement explicit error propagation patterns.
yinkscss Apr 23, 2026
27e1ffc
docs(scripts): add parameter descriptions to scripts/README.md
obacollins-lab Apr 23, 2026
f7fc4c8
docs: add docs/README.md documentation index (#189)
obacollins-lab Apr 23, 2026
b71abd9
Fix clippy collapsible-match violations in role validation.
yinkscss Apr 23, 2026
5c63f8f
Trigger CI after lint baseline fix
yinkscss Apr 23, 2026
c564f7b
readme for each examples category
akprinciple Apr 23, 2026
f751456
build: configure soroban rust toolchain (Issue #212)
godamongstmen897 Apr 23, 2026
32945cb
docs(04-events): add comprehensive README for structured event patterns
levoski1 Apr 24, 2026
d9af754
docs(basics): update README with all examples, difficulty ratings, an…
mayasimi Apr 24, 2026
cb0c21c
feat: add data types documentation and troubleshooting guide
nike-nike21 Apr 24, 2026
92cb422
docs: add migration guide and pull request template (#154, #159)
adetumilara Apr 24, 2026
ec30f9e
docs: create comprehensive examples index for basics
mayasimi Apr 24, 2026
669cd7f
docs(05-error-handling): rewrite README to match actual implementation
otsimaofficial Apr 25, 2026
d642669
feat(scripts): add lint.sh utility script for local linting
otsimaofficial Apr 25, 2026
e2fef89
docs(01-hello-world): add Common Pitfalls section to README
otsimaofficial Apr 25, 2026
595bd25
chore(clippy): add .clippy.toml with project-wide lint thresholds
otsimaofficial Apr 25, 2026
859862e
docs: improve contributing guidelines and update to stellar-cli (#176)
iamTissan Apr 25, 2026
a594c89
fix(06-validation-patterns): collapse nested if-in-match to satisfy c…
otsimaofficial Apr 25, 2026
de104f0
feat: implement shared validators for params/state/auth
Shecodes174 Apr 25, 2026
4b81d4f
Implement shared validators for params/state/auth
Shecodes174 Apr 25, 2026
255a10b
fix(validation-patterns): collapse nested if into match guards to sat…
mayasimi Apr 25, 2026
1e28cdd
ci: retrigger CI to pick up clippy fix
mayasimi Apr 25, 2026
8be144a
fix ci checks
adetumilara Apr 25, 2026
7dfcaac
Merge branch 'main' into docs/migration-guide-and-pr-template-154-159
adetumilara Apr 25, 2026
498a2ae
docs: redo scripts documentation and fix coverage bug (#184)
She-ge Apr 25, 2026
2e377f1
Merge pull request #383 from adetumilara/docs/migration-guide-and-pr-…
Goodnessukaigwe Apr 25, 2026
4328634
[#201] Create Style Guide
She-ge Apr 25, 2026
9f1436b
[#201] Add Style Guide to mdBook summary
She-ge Apr 25, 2026
ab853c6
Fix ci checks
nike-nike21 Apr 25, 2026
40cd5bc
Merge pull request #382 from nike-nike21/feat/docs-data-types-trouble…
Goodnessukaigwe Apr 26, 2026
0b421dd
feat: Add Code Coverage Reporting with Tarpaulin
Devsol-01 Apr 26, 2026
2baf669
Merge branch 'main' of https://github.com/Hakimziyech18/Soroban-Cookb…
Hakimziyech18 Apr 26, 2026
fb1b87d
fix(clippy): collapse if into match guards in validation-patterns
levoski1 Apr 26, 2026
fe64c02
Merge pull request #395 from Devsol-01/main
Goodnessukaigwe Apr 27, 2026
0962c31
Merge pull request #394 from She-ge/fix/201-create-style-guide
Goodnessukaigwe Apr 27, 2026
eedd347
Merge pull request #393 from She-ge/fix/184-add-scripts-documentation-v2
Goodnessukaigwe Apr 27, 2026
f017ecc
Merge branch 'main' into feat/contributing-guidelines
iamTissan Apr 27, 2026
4a166c0
Merge pull request #388 from iamTissan/feat/contributing-guidelines
Goodnessukaigwe Apr 27, 2026
61bc50f
fix(06-validation-patterns): collapse nested if-in-match to satisfy c…
otsimaofficial Apr 25, 2026
6cbe6a9
fix(06-validation-patterns): collapse nested if-in-match to satisfy c…
otsimaofficial Apr 25, 2026
67163b0
fix(06-validation-patterns): collapse nested if-in-match to satisfy c…
otsimaofficial Apr 25, 2026
b3cda18
Add deploy workflow and update documentation setup
chinpiang Apr 27, 2026
6eb2b92
Merge pull request #397 from chinpiang/issue192
Goodnessukaigwe Apr 27, 2026
30c0a2e
fix: correct minor formatting issue in README.md
chinpiang Apr 27, 2026
bb7c21a
fix: correct punctuation in the Advanced Examples header
chinpiang Apr 27, 2026
1d9caf1
Add web application section and update repository structure in README
susanyusuf Apr 27, 2026
5509196
Merge pull request #399 from chinpiang/issue180
Goodnessukaigwe Apr 27, 2026
065c876
Merge pull request #398 from chinpiang/issue182
Goodnessukaigwe Apr 27, 2026
cd1f8fb
Merge pull request #385 from otsimaofficial/feature/issue-197-documen…
Goodnessukaigwe Apr 27, 2026
cee09df
fix: add missing period at the end of the README footer
chinpiang Apr 27, 2026
389bab8
Merge pull request #400 from susanyusuf/issuse215
Goodnessukaigwe Apr 27, 2026
487af48
Merge pull request #396 from otsimaofficial/feature/issue-173-root-di…
Goodnessukaigwe Apr 27, 2026
728efc6
Merge pull request #401 from chinpiang/issue195
Goodnessukaigwe Apr 27, 2026
3ecb0ff
Add Project Goals section to README with clear objectives for Soroban…
susanyusuf Apr 27, 2026
0aa87ad
fix: resolve clippy collapsible_match warnings to pass CI
godamongstmen897 Apr 27, 2026
f71896c
Add gotchas and differences section to Ethereum to Soroban migration …
susanyusuf Apr 27, 2026
2d84eae
Merge branch 'main' into feature/issue-212-rust-toolchain
godamongstmen897 Apr 27, 2026
3812ac7
Clarify Project Goals by specifying the focus on real-world problems …
susanyusuf Apr 27, 2026
9776d5c
fix(clippy): align .clippy.toml thresholds with clippy defaults
otsimaofficial Apr 27, 2026
c29a1e9
fix: resolve clippy collapsible_match warnings to pass CI
godamongstmen897 Apr 27, 2026
4626ddf
Merge branch 'main' into feature/issue-209-example-categories
godamongstmen897 Apr 27, 2026
756cc28
Merge branch 'main' into feat/issue-80-basics-readme-update
mayasimi Apr 28, 2026
1dbe4d7
chore: refine bug report issue template
wisdom-dee Apr 28, 2026
2536a5f
fix: update glossary entries for clarity and add new terms
Apr 28, 2026
ae5f700
chore: refine feature request issue template
wisdom-dee Apr 28, 2026
dae0b0b
fix: resolve CI failures in shared validators PR
Shecodes174 Apr 28, 2026
4d9c273
docs: finalize style guide standards (#172)
iamTissan Apr 28, 2026
02a3187
Merge pull request #410 from enyinnaya1234/feat/186-feature-request-t…
Goodnessukaigwe Apr 28, 2026
719485f
Merge pull request #408 from enyinnaya1234/feat/185-bug-report-template
Goodnessukaigwe Apr 28, 2026
ab26bf2
Merge pull request #404 from susanyusuf/issuse210
Goodnessukaigwe Apr 28, 2026
eb15551
Merge pull request #386 from otsimaofficial/feature/issue-231-add-lin…
Goodnessukaigwe Apr 28, 2026
3eb374d
Merge pull request #387 from otsimaofficial/feature/issue-193-hello-w…
Goodnessukaigwe Apr 28, 2026
66c88e3
Merge pull request #411 from iamTissan/feat/style-guide
Goodnessukaigwe Apr 28, 2026
96256bd
Merge pull request #409 from agnesnaomiolim-cloud/issue191
Goodnessukaigwe Apr 28, 2026
6dcd0f8
feat: add test profile and WASM build optimizations (#8)
caramel222 Apr 28, 2026
51976f9
Merge branch 'main' into feat/main-readme
akprinciple Apr 28, 2026
b425b90
implement project README and resolve clippy lint
akprinciple Apr 28, 2026
d15a408
resolve clippy lint
akprinciple Apr 28, 2026
26c0844
Merge branch 'main' into docs/instance-storage
Franklivania Apr 29, 2026
577805f
Merge branch 'main' into docs/add-code-of-conduct
Goodnessukaigwe Apr 29, 2026
fb28ad7
Merge pull request #364 from Hakimziyech18/docs/add-code-of-conduct
Goodnessukaigwe Apr 29, 2026
0a680b0
Merge pull request #418 from laragrey/feat/build-profiles-optimization
Goodnessukaigwe Apr 29, 2026
aaafe27
Merge branch 'main' into instance-storage
Goodnessukaigwe Apr 30, 2026
50a3168
Merge pull request #293 from Adeswalla/instance-storage
Goodnessukaigwe Apr 30, 2026
cb9e7a1
Merge branch 'main' into storage-patterns
Goodnessukaigwe Apr 30, 2026
fd6036d
Merge pull request #295 from Adeswalla/storage-patterns
Goodnessukaigwe Apr 30, 2026
2350f4f
Merge pull request #298 from anoncon/add-snapshot-tests-275
Goodnessukaigwe Apr 30, 2026
ff5881d
Merge branch 'main' into feat/281-negative-authentication-test
Goodnessukaigwe Apr 30, 2026
8c54522
Merge pull request #304 from She-ge/feat/281-negative-authentication-…
Goodnessukaigwe Apr 30, 2026
a560f30
Merge pull request #305 from She-ge/feat/256-Add-Events-Tests
Goodnessukaigwe Apr 30, 2026
f1f0e4d
Merge branch 'main' into new
Goodnessukaigwe Apr 30, 2026
48cf58e
Merge pull request #319 from Emeka000/new
Goodnessukaigwe Apr 30, 2026
f80352a
Merge pull request #331 from Eniola3321/Error-Handling
Goodnessukaigwe Apr 30, 2026
086563f
Merge branch 'main' into Conversions
Goodnessukaigwe Apr 30, 2026
9502145
Merge pull request #334 from Kingsuite/Conversions
Goodnessukaigwe Apr 30, 2026
ecb2b91
Merge branch 'main' into Guide
Goodnessukaigwe Apr 30, 2026
10d45f4
Merge pull request #335 from Kingsuite/Guide
Goodnessukaigwe Apr 30, 2026
b277e24
Merge branch 'main' into Started
Goodnessukaigwe Apr 30, 2026
a5c5836
Merge pull request #336 from Kingsuite/Started
Goodnessukaigwe Apr 30, 2026
57b9f7c
Merge branch 'main' into Benchmarks
Goodnessukaigwe Apr 30, 2026
c20eeb4
Merge pull request #338 from talktosam2003/Benchmarks
Goodnessukaigwe Apr 30, 2026
e1f6ce4
Merge pull request #339 from DavisVT/feat/multi-party-auth-integratio…
Goodnessukaigwe Apr 30, 2026
865df02
Merge branch 'main' into authorization
Goodnessukaigwe Apr 30, 2026
d0f9132
Merge pull request #341 from talktosam2003/authorization
Goodnessukaigwe Apr 30, 2026
48ddcb8
Merge branch 'main' into Integration
Goodnessukaigwe Apr 30, 2026
f89f453
Merge pull request #346 from amandapada/issue#263
Goodnessukaigwe Apr 30, 2026
72c826b
Merge pull request #347 from amandapada/issue#260
Goodnessukaigwe Apr 30, 2026
3f06aaa
Merge pull request #343 from talktosam2003/Integration
Goodnessukaigwe Apr 30, 2026
94315c4
Merge pull request #348 from amandapada/issue#283
Goodnessukaigwe Apr 30, 2026
e838798
Merge pull request #362 from mofejo1/ci/add-test-coverage-job
Goodnessukaigwe Apr 30, 2026
cd6f6a0
Merge pull request #363 from Franklivania/docs/instance-storage
Goodnessukaigwe Apr 30, 2026
74d8676
Merge pull request #365 from akprinciple/feat/main-readme
Goodnessukaigwe Apr 30, 2026
a631d79
Merge branch 'main' into fix/259-implement-error-propagation
Goodnessukaigwe Apr 30, 2026
17baaf0
Merge pull request #367 from yinkscss/fix/259-implement-error-propaga…
Goodnessukaigwe Apr 30, 2026
398ecf2
Merge pull request #371 from godamongstmen897/feature/issue-209-examp…
Goodnessukaigwe Apr 30, 2026
23b550f
Merge pull request #372 from obacollins-lab/feature/issue-155-scripts…
Goodnessukaigwe Apr 30, 2026
e61e253
Merge branch 'main' into feature/issue-189-docs-index
Goodnessukaigwe Apr 30, 2026
c6b00f0
Merge pull request #374 from obacollins-lab/feature/issue-189-docs-index
Goodnessukaigwe Apr 30, 2026
e36d890
Merge branch 'main' into feat/readme-for-each-category
Goodnessukaigwe Apr 30, 2026
d8816a8
Merge pull request #375 from akprinciple/feat/readme-for-each-category
Goodnessukaigwe Apr 30, 2026
7b166c2
Merge pull request #376 from godamongstmen897/feature/issue-212-rust-…
Goodnessukaigwe Apr 30, 2026
4917a45
Merge pull request #379 from levoski1/feat/events-example-readme
Goodnessukaigwe Apr 30, 2026
679114a
Merge branch 'main' into feat/issue-80-basics-readme-update
Goodnessukaigwe Apr 30, 2026
61a87c9
Merge pull request #381 from mayasimi/feat/issue-80-basics-readme-update
Goodnessukaigwe Apr 30, 2026
e33a0fa
Merge branch 'main' into main
Goodnessukaigwe Apr 30, 2026
149016a
Merge pull request #384 from mayasimi/main
Goodnessukaigwe Apr 30, 2026
b4f5dbd
Merge branch 'main' into feat/shared-validators
Goodnessukaigwe Apr 30, 2026
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
5 changes: 5 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@
# together. Disabling reference-types prevents LLVM from emitting the
# extended call_indirect encoding.
rustflags = ["-C", "target-feature=-reference-types"]

[build]
# Default build target for WASM contract compilation.
# Override per-invocation with --target if needed (e.g. for host-native tests).
target = "wasm32-unknown-unknown"
15 changes: 15 additions & 0 deletions .clippy.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Clippy configuration for the Soroban Cookbook workspace.
# Applied automatically when `cargo clippy` is run.
# CI enforces these alongside the -D warnings flag in .github/workflows/ci.yml.

# Maximum cyclomatic complexity allowed per function before clippy warns.
# Clippy default: 25. Tighten this value over time as the codebase matures.
cognitive-complexity-threshold = 25

# Warn when a public function takes more than this many arguments.
# Clippy default: 7. Prefer grouping related parameters into a struct.
too-many-arguments-threshold = 7

# Warn when a function body exceeds this many lines.
# Clippy default: 100.
too-many-lines-threshold = 100
131 changes: 131 additions & 0 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in the
Soroban Cookbook community a harassment-free experience for everyone, regardless
of age, body size, visible or invisible disability, ethnicity, sex
characteristics, gender identity and expression, level of experience, education,
socio-economic status, nationality, personal appearance, race, caste, color,
religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
community
- Helping newcomers feel welcome and supported

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or advances of
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Reporting

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement by opening a
**[GitHub issue](https://github.com/Soroban-Cookbook/Soroban-Cookbook-/issues)**
or by emailing the maintainers at
**[maintainers@sorobancookbook.dev](mailto:maintainers@sorobancookbook.dev)**.

All complaints will be reviewed and investigated promptly and fairly. All
community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq).
Translations are available at
[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations).
32 changes: 19 additions & 13 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,35 @@ assignees: ''
---

## Description
A clear and concise description of what the bug is.

<!-- Describe what is broken and where it happens. -->

## Steps to Reproduce
Please provide steps to reproduce the behavior:
1.
2.
3.

<!-- Provide clear steps so maintainers can reproduce the issue reliably. -->
1.
2.
3.

## Expected Behavior
A clear and concise description of what you expected to happen.

<!-- Describe what you expected to happen instead. -->

## Actual Behavior
A clear and concise description of what actually happened.

<!-- Describe what happened, including any errors or unexpected output. -->

## Environment Information
- **OS:** [e.g. Windows 11, macOS 14.0, Ubuntu 22.04]
- **Rust Version:** [e.g. 1.75.0]
- **Soroban SDK Version:** [e.g. 21.7.0]
- **Stellar CLI Version:** [e.g. 22.1.0]
- **Network:** [e.g. Testnet, Mainnet, Sandbox]

- **OS:** <!-- e.g. Windows 11, macOS 14.0, Ubuntu 22.04 -->
- **Rust Version:** <!-- e.g. 1.75.0 -->
- **Soroban SDK Version:** <!-- e.g. 21.7.0 -->
- **Stellar CLI Version:** <!-- e.g. 22.1.0 -->
- **Network:** <!-- e.g. Testnet, Mainnet, Sandbox -->

## Additional Context
Add any other context about the problem here (e.g., logs, screenshots, or code snippets).

<!-- Add any other context (screenshots, links, related issues, etc.). -->

### Logs
```bash
Expand Down
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ assignees: ''
## Use Case

<!-- Describe the use case or problem this feature addresses.
Who needs this? What are they trying to accomplish? -->
Who needs this, and what are they trying to accomplish? -->

## Proposed Solution

<!-- Describe the feature you'd like to see implemented.
Be as specific as possible include file paths, function names,
or code snippets if applicable. -->
Be as specific as possible and include file paths, function names,
or code snippets when applicable. -->

```rust
// Optional: sketch of the proposed implementation
Expand All @@ -25,7 +25,7 @@ assignees: ''
## Alternative Solutions

<!-- Have you considered other approaches?
List any alternatives and explain why the proposed solution is preferred. -->
List alternatives and explain why the proposed solution is preferred. -->

## Additional Context

Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@ Runs on every pull request and push to the main branch.
Runs all unit and integration tests across the examples and shared tooling.
- **Tasks:** Executes `cargo test` for all packages in the workspace.

### [Deploy Docs](./deploy-docs.md)
### [Deploy Docs](./deploy-docs.yml)
Automatically builds and deploys the mdBook documentation to GitHub Pages.
- **Tasks:** Builds the book from `book/src/` and pushes the output to the `gh-pages` branch.

### [Security Audit](./security-audit.yml)
Audits all workspace dependencies for known vulnerabilities using `cargo audit`.
- **Triggers:** Push/PR to `main` when `Cargo.toml` or `Cargo.lock` changes, weekly on Mondays at 08:00 UTC, and manual dispatch.
- **Tasks:** Runs `cargo audit --deny warnings --deny unsound` against the RustSec Advisory Database. Fails the job on any HIGH or CRITICAL severity advisory. Uploads a full JSON audit report as a workflow artifact (retained for 30 days).

### [Dependabot](./dependabot-auto-merge.yml)
Automates dependency updates and auto-merges safe PRs.
- **Tasks:** Keeps Rust and Node.js dependencies up-to-date.
Expand Down
82 changes: 76 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,50 @@ jobs:
run: cargo test --workspace --all-features

# ─────────────────────────────────────────────────────────────────────────
# Job 4: Basic examples (fast, per-example feedback)
# Job 4: Coverage
# ─────────────────────────────────────────────────────────────────────────
coverage:
name: Coverage (Tarpaulin)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
targets: wasm32-unknown-unknown

- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-coverage-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-coverage-

- name: Install cargo-tarpaulin
run: cargo install cargo-tarpaulin --locked

- name: Generate coverage report
run: cargo tarpaulin --workspace --all-features --out xml --output-dir ./coverage --timeout 300

- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: cobertura-xml
path: ./coverage/cobertura.xml

- name: Upload coverage to Codecov (optional)
uses: codecov/codecov-action@v4
with:
files: ./coverage/cobertura.xml
fail_ci_if_error: false

# ─────────────────────────────────────────────────────────────────────────
# Job 5: Basic examples (fast, per-example feedback)
# ─────────────────────────────────────────────────────────────────────────
basic-examples:
name: Basic Examples CI
Expand Down Expand Up @@ -144,6 +187,8 @@ jobs:

# ─────────────────────────────────────────────────────────────────────────
# Job 5: Coverage (tarpaulin)
# Configured via tarpaulin.toml at the workspace root.
# Reports are uploaded to Codecov for historical tracking and badge display.
# ─────────────────────────────────────────────────────────────────────────
coverage:
name: Code Coverage
Expand All @@ -156,27 +201,52 @@ jobs:
with:
toolchain: ${{ env.RUST_VERSION }}

- name: Cache Cargo registry
# Cache the Cargo registry AND the compiled tarpaulin binary together
# so repeated runs don't rebuild tarpaulin from source every time.
- name: Cache Cargo registry and tarpaulin binary
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin/cargo-tarpaulin
~/.cargo/.crates.toml
~/.cargo/.crates2.json
target
key: ${{ runner.os }}-cargo-coverage-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-coverage-

- name: Install cargo-tarpaulin
run: cargo install cargo-tarpaulin --locked
run: |
if ! command -v cargo-tarpaulin &> /dev/null; then
cargo install cargo-tarpaulin --locked
fi

# tarpaulin.toml controls output format (xml + html + lcov),
# output directory (coverage/), timeout, and exclusions.
- name: Run tarpaulin
run: cargo tarpaulin --workspace --all-features --out xml --timeout 300
run: cargo tarpaulin

# Keep the full coverage report as a downloadable artifact for
# historical review — retained for 90 days.
- name: Upload coverage artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/
retention-days: 90

- name: Upload coverage report
# Upload Cobertura XML to Codecov for badge + historical trend graphs.
# CODECOV_TOKEN is required for private repos; harmless for public ones.
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./cobertura.xml
files: ./coverage/cobertura.xml
flags: workspace
name: soroban-cookbook
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}

# ─────────────────────────────────────────────────────────────────────────
# Job 6: Build Wasm
Expand Down
Loading
Loading