Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
4e56299
feat(devops): add audit and help Makefile targets, use make in CI (#43)
devUnixx Apr 29, 2026
3b7a1d8
test(stream): add withdraw with zero claimable test (#54)
devUnixx Apr 29, 2026
b6ad0b1
docs(security): add time manipulation analysis and non-monotonic time…
devUnixx Apr 29, 2026
9c24d20
test(token): add comprehensive token contract tests
princesshittu Apr 29, 2026
3d001d4
feat(notifications): add Horizon event notification service
princesshittu Apr 29, 2026
6f781b8
test: add stop_time boundary tests (#57)
Sammy-Samy Apr 29, 2026
990d618
test: add top_up duration tests (#55)
Sammy-Samy Apr 29, 2026
0de5a83
test: add property-based tests with proptest (#52)
Sammy-Samy Apr 29, 2026
ff7087e
feat: add staging environment CI workflow (#42)
Sammy-Samy Apr 29, 2026
50a5594
feat(multisig): support multi-sig employer accounts (#116)
princesshittu Apr 29, 2026
07bdfc8
fix: resolve issues #6, #7, #8, #9 - auth checks, events, stream ID u…
constantvictory Apr 29, 2026
48f4616
feature:add mint authorization controls
Amizeey Apr 29, 2026
9908815
Add employee and employer dashboards with top-up feature
Benalex8797 Apr 29, 2026
0470f2f
feature:Test cancel_stream splits funds correctly
Amizeey Apr 29, 2026
743cbd5
feature:Add testnet deployment workflow in CI
Amizeey Apr 29, 2026
8d158c2
feature:Document all contract error codes
Amizeey Apr 29, 2026
9db2e17
Merge pull request #216 from Amizeey/paystream-contracts18
Vera3289 Apr 30, 2026
173b065
Merge pull request #213 from Dev-Ben-Theo/feat/fix
Vera3289 Apr 30, 2026
b488709
Merge pull request #209 from Sammy-Samy/feat/42-staging-environment
Vera3289 Apr 30, 2026
b885cb7
Merge pull request #210 from princesshittu/feat/multisig-employer-116
Vera3289 Apr 30, 2026
3e1fde2
Merge pull request #211 from constantvictory/fix/issues-6-7-8-9
Vera3289 Apr 30, 2026
9ce53fa
Merge pull request #199 from devUnixx/fix/43-makefile-targets
Vera3289 Apr 30, 2026
f7a36e7
Merge pull request #204 from princesshittu/feat/notification-service-113
Vera3289 Apr 30, 2026
b3e6511
Merge branch 'main' into feat/52-proptest-property-based-tests
Vera3289 Apr 30, 2026
17fbaf2
Merge pull request #208 from Sammy-Samy/feat/52-proptest-property-bas…
Vera3289 Apr 30, 2026
77d132d
Merge branch 'main' into feat/token-tests-53
Vera3289 Apr 30, 2026
4e0a95f
Merge pull request #203 from princesshittu/feat/token-tests-53
Vera3289 Apr 30, 2026
f06bb06
Merge branch 'main' into feat/55-top-up-duration-tests
Vera3289 Apr 30, 2026
16f59aa
Merge pull request #207 from Sammy-Samy/feat/55-top-up-duration-tests
Vera3289 Apr 30, 2026
e524d4b
Merge pull request #200 from devUnixx/fix/54-zero-claimable-withdraw-…
Vera3289 Apr 30, 2026
7a828e6
Merge branch 'main' into feat/57-stop-time-boundary-tests
Vera3289 Apr 30, 2026
f873d11
Merge pull request #206 from Sammy-Samy/feat/57-stop-time-boundary-tests
Vera3289 Apr 30, 2026
c731e2e
Merge branch 'main' into fix/66-time-manipulation-analysis
Vera3289 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
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ jobs:
restore-keys: ${{ runner.os }}-cargo-

- name: Check formatting
run: cargo fmt --check
run: make fmt-check

- name: Clippy
run: cargo clippy --all-targets -- -D warnings
run: make lint

- name: Test
run: cargo test
run: make test

coverage:
name: Coverage
Expand Down
111 changes: 111 additions & 0 deletions .github/workflows/staging.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: Deploy Staging

on:
push:
branches: [main]
workflow_dispatch:

concurrency:
group: staging-deploy
cancel-in-progress: false

jobs:
deploy-staging:
name: Deploy to Stellar Testnet (Staging)
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown

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

- name: Install Stellar CLI
run: cargo install --locked stellar-cli --features opt

- name: Build contracts
run: stellar contract build

- name: Configure Stellar CLI for testnet
run: |
stellar network add testnet \
--rpc-url https://soroban-testnet.stellar.org \
--network-passphrase "Test SDF Network ; September 2015" || true

- name: Import staging deployer key
run: |
echo "${{ secrets.STAGING_DEPLOYER_SECRET }}" | \
stellar keys add staging-deployer --secret-key

- name: Deploy token contract
id: deploy-token
run: |
TOKEN_ID=$(stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/paystream_token.wasm \
--source staging-deployer \
--network testnet)
echo "token_id=$TOKEN_ID" >> "$GITHUB_OUTPUT"
echo "Deployed token: $TOKEN_ID"

- name: Deploy stream contract
id: deploy-stream
run: |
STREAM_ID=$(stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/paystream_stream.wasm \
--source staging-deployer \
--network testnet)
echo "stream_id=$STREAM_ID" >> "$GITHUB_OUTPUT"
echo "Deployed stream: $STREAM_ID"

- name: Initialise contracts
env:
STAGING_ADMIN: ${{ secrets.STAGING_ADMIN_ADDRESS }}
run: |
stellar contract invoke \
--id "${{ steps.deploy-token.outputs.token_id }}" \
--source staging-deployer \
--network testnet \
-- initialize \
--admin "$STAGING_ADMIN" \
--initial_supply 1000000000000

stellar contract invoke \
--id "${{ steps.deploy-stream.outputs.stream_id }}" \
--source staging-deployer \
--network testnet \
-- initialize \
--admin "$STAGING_ADMIN"

- name: Smoke test — stream_count returns 0
run: |
COUNT=$(stellar contract invoke \
--id "${{ steps.deploy-stream.outputs.stream_id }}" \
--source staging-deployer \
--network testnet \
-- stream_count)
echo "stream_count=$COUNT"
[ "$COUNT" = "0" ] || (echo "Expected 0, got $COUNT" && exit 1)

- name: Write staging contract IDs to summary
run: |
echo "## Staging Deployment" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| Contract | ID |" >> "$GITHUB_STEP_SUMMARY"
echo "|---|---|" >> "$GITHUB_STEP_SUMMARY"
echo "| Token | \`${{ steps.deploy-token.outputs.token_id }}\` |" >> "$GITHUB_STEP_SUMMARY"
echo "| Stream | \`${{ steps.deploy-stream.outputs.stream_id }}\` |" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Network: Stellar Testnet" >> "$GITHUB_STEP_SUMMARY"
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,10 @@ target/
.agents/
.claude/
skills-lock.json
issue.md
issue.md

# Node.js
node_modules/
dist/
build/
.tsbuildinfo
Loading
Loading