Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
339 commits
Select commit Hold shift + click to select a range
cf184e8
Update protocol repo references to docs in documentation
Just-Bamford Jul 13, 2026
bea392b
docs: add Milestones section to README
Just-Bamford Jul 15, 2026
140ff61
docs: add Milestones section to README
Just-Bamford Jul 15, 2026
778feda
feat: add ESLint v9 flat config, CI workflow, fix lint errors
pugsley76 Jul 23, 2026
8d5438b
Publish @anonvote/crypto to npm
midenotch Jul 24, 2026
e9297d3
Add eslint config; verify strict mode compliance
Theophilus131 Jul 24, 2026
6f2bff4
feat: add SorobanServiceError with typed codes and retryable flag (#73)
ifygreg01-best Jul 24, 2026
e495643
feat: automate Soroban contract deployment
Brace101 Jul 24, 2026
3d45588
feat: validate ballot_id_hash and result_hash as SHA-256 hex digests
ifygreg01-best Jul 24, 2026
0b438da
fix: guard record_token/vote/result against non-existent ballots (#75)
ifygreg01-best Jul 24, 2026
fcc98ad
Add bundler compatibility tests for webpack, esbuild, and Vite
Theophilus131 Jul 24, 2026
fc48b78
Add test:bundlers script and bundler devDependencies
Theophilus131 Jul 24, 2026
f4edc15
Add CI workflow to run bundler compatibility tests on PRs
Theophilus131 Jul 24, 2026
6458a27
Document bundler compatibility, known issues, and workarounds
Theophilus131 Jul 24, 2026
8a5ace0
Ignore generated bundler test output files
Theophilus131 Jul 24, 2026
33c7fad
add panic
Chigybillionz Jul 24, 2026
a195309
Merge pull request #82 from ifygreg01-best/feat/soroban-service-error…
Just-Bamford Jul 24, 2026
2ab9362
Merge pull request #83 from TechBroAfrica/feat/contract-deployment-sc…
Just-Bamford Jul 24, 2026
2506b22
Merge pull request #29 from pugsley76/feat/eslint-config
Just-Bamford Jul 24, 2026
6f5711c
Merge remote-tracking branch 'upstream/main' into fix/strict-mode-types
Theophilus131 Jul 24, 2026
a7ff8b5
Add crypto benchmark suite (#31)- Add tinybench suites for encryptVot…
Jul 25, 2026
bf4436f
Resolve package.json conflict with main
Jul 25, 2026
48601d5
Add contract events for ballot creation, token recording, and vote ca…
Jul 25, 2026
66e48d0
Merge pull request #84 from ifygreg01-best/feat/sha256-hash-validation
Just-Bamford Jul 25, 2026
c36d0a5
Merge pull request #36 from Theophilus131/fix/strict-mode-types
Just-Bamford Jul 25, 2026
acfac54
Merge upstream/main: resolve conflict between BallotEvent tests and S…
Jul 25, 2026
4daf578
Gas optimization: reduce storage operations and Soroban function calls
Codex723 Jul 25, 2026
b536ae3
Merge branch 'main' into gas-optimization-78
Codex723 Jul 25, 2026
97d91a8
Merge upstream/main: resolve package.json conflict between tsx and ty…
Jul 25, 2026
f62d17e
Merge pull request #88 from Codex723/gas-optimization-78
Just-Bamford Jul 25, 2026
0a5c4fb
feat: configurable Soroban network support (#76)
habibs-techhub Jul 25, 2026
1b42501
Merge pull request #38 from pgreat123/crypto-benchmarks
Just-Bamford Jul 25, 2026
51205ad
Merge branch 'main' into feat/ballot-contract-events
Just-Bamford Jul 25, 2026
d2df2fc
Merge pull request #87 from pgreat123/feat/ballot-contract-events
Just-Bamford Jul 25, 2026
3b0fb7e
Merge pull request #89 from Dayz-tech-co/fix/76-configurable-soroban-…
Just-Bamford Jul 25, 2026
ecd7b79
feat: add RetryConfig and withRetry exponential backoff to AnonVoteCl…
divinemike019 Jul 25, 2026
1dc65d6
Merge pull request #40 from divinemike019/feat/retry-exponential-backoff
Just-Bamford Jul 26, 2026
c3e922f
Add edge runtime compatibility for generateToken and encryptVote IV
Jul 26, 2026
cbd0adf
Merge pull request #41 from pgreat123/fix/25-edge-runtime-crypto
Just-Bamford Jul 26, 2026
91936e1
Wire is_consistent into TypeScript service (closes #68)
Jul 27, 2026
78e4501
Merge branch 'main' into publish-npm
Just-Bamford Jul 27, 2026
c64abc8
Merge pull request #35 from midenotch/publish-npm
Just-Bamford Jul 27, 2026
93b8e10
Merge branch 'main' into bundler-compat-tests
Just-Bamford Jul 27, 2026
eb2dedf
Merge pull request #37 from Theophilus131/bundler-compat-tests
Just-Bamford Jul 27, 2026
730521b
Merge pull request #85 from ifygreg01-best/fix/issue-75-ballot-existe…
Just-Bamford Jul 27, 2026
fd71b09
Merge branch 'main' into add-panic
Just-Bamford Jul 27, 2026
7ff0d62
Merge pull request #86 from Chigybillionz/add-panic
Just-Bamford Jul 27, 2026
01b80c1
feat: add public view functions for ballot transparency
GazzyLee Jul 27, 2026
b9a3977
Wire is_consistent into TypeScript service (closes #68)
Jul 27, 2026
0c4ccf5
Merge pull request #91 from GazzyLee/feat/contract-view-functions
Just-Bamford Jul 27, 2026
ea3359f
Merge pull request #92 from pgreat123/wire-is-consistent
Just-Bamford Jul 27, 2026
9b1baa5
Fix hashIdentifier normalization bug
Jul 28, 2026
799c6bc
Merge remote-tracking branch 'upstream/main' into fix/hash-identifier…
Jul 28, 2026
c7baa6b
feat: AnonVoteClient SDK — subpath export @anonvote/crypto/client (#42)
El-Chapo-Npm Jul 28, 2026
dc7fdfa
feat: AnonVoteClient HTTP SDK — ballot, voters, tokens, vote, results…
El-Chapo-Npm Jul 28, 2026
ba9ab94
Regenerate package-lock.jsonThe auto-merged lockfile from main was in…
Jul 28, 2026
630f2e4
Merge pull request #44 from El-Chapo-Npm/feat/anon-vote-client-sdk
Just-Bamford Jul 28, 2026
c4c2476
Merge pull request #45 from El-Chapo-Npm/feat/anon-vote-client-sdk-21
Just-Bamford Jul 28, 2026
8a02767
Merge pull request #43 from pgreat123/fix/hash-identifier-normalization
Just-Bamford Jul 28, 2026
a2b9159
Implement all five crypto primitives Closes #19
gelluisaac Jul 29, 2026
2971156
Merge branch 'main' into feat
maramina Jul 29, 2026
5e960d4
Merge pull request #47 from maramina/feat
Just-Bamford Jul 29, 2026
ac6e0f0
fix(crypto): implement crypto primitives, hex wire format, and full t…
k-deejah Jul 29, 2026
2c11897
Merge branch 'main' into fix/issue-39-crypto-primitives
k-deejah Jul 29, 2026
6c9d081
fix(types): audit and align shared types, document canonical source (…
k-deejah Jul 29, 2026
5554372
Merge branch 'main' into fix/issue-27-types-audit-align
k-deejah Jul 29, 2026
3238221
feat: add CONTRACT_ID tracking and deployment configuration (closes #67)
damiedee96 Jul 29, 2026
c2f29be
ci: add GitHub Actions workflow for cargo build, cargo test, and npm …
damiedee96 Jul 29, 2026
568b3f3
Merge pull request #93 from damiedee96/feat/deploy-testnet-contract-id
Just-Bamford Jul 29, 2026
a40ff59
Merge pull request #94 from damiedee96/feat/github-actions-ci
Just-Bamford Jul 29, 2026
8c12080
Merge pull request #48 from k-deejah/fix/issue-39-crypto-primitives
Just-Bamford Jul 29, 2026
3902d45
Merge branch 'main' into fix/issue-27-types-audit-align
Just-Bamford Jul 29, 2026
fe05b70
Merge pull request #49 from k-deejah/fix/issue-27-types-audit-align
Just-Bamford Jul 29, 2026
c21da2a
feat: harden AnonVote contract with validation, error taxonomy, admin…
Jul 29, 2026
1c766a6
Merge branch 'main' into main
michaelvic123 Jul 30, 2026
266f444
Merge pull request #95 from michaelvic123/main
Just-Bamford Jul 30, 2026
fe704f8
feat: add soroban backend resilience primitives
sebas11042 Aug 16, 2026
2ac451c
feat: expose backend vote and tally flows
sebas11042 Aug 16, 2026
386b10e
test: cover backend soroban vote flow
sebas11042 Aug 16, 2026
d5eb79d
chore: restore soroban support type contracts
sebas11042 Aug 16, 2026
a62c88d
docs: document backend soroban vote wiring
sebas11042 Aug 16, 2026
e6fc662
refactor: name backend contract methods
sebas11042 Aug 16, 2026
ce3d7e8
feat: map soroban failures for api callers
sebas11042 Aug 16, 2026
167daa8
test: assert api-safe soroban integration surface
sebas11042 Aug 16, 2026
6a4e90e
chore: add soroban integration test script
sebas11042 Aug 16, 2026
9b0291d
docs: list service verification commands
sebas11042 Aug 16, 2026
69ac647
test: reject unverifiable tally persistence
sebas11042 Aug 16, 2026
fa18f8d
docs: capture backend schema expectations
sebas11042 Aug 16, 2026
070ed2f
fix: retry tally consistency reads
sebas11042 Aug 16, 2026
2fea7c9
fix: repair hardened anonvote contract so it compiles and tests pass
CodeMayor Aug 16, 2026
aca417a
fix(build): make anonvote WASM buildable and Soroban-uploadable
CodeMayor Aug 16, 2026
cef2ae5
deploy: record anonvote testnet deployment (CDPSKEL3...)
CodeMayor Aug 16, 2026
bf8e640
Merge pull request #100 from sebas11042/issue-99-soroban-backend-wiring
Just-Bamford Aug 17, 2026
084e065
Merge pull request #101 from CodeMayor/feat/deploy-testnet-contract-97
Just-Bamford Aug 17, 2026
18883c4
fix: remove unused imports from AnonVoteClient and sdk-client tests
Just-Bamford Aug 17, 2026
dd9a37b
fix: resolve lint and typecheck errors - remove unused imports, fix t…
Just-Bamford Aug 18, 2026
bd75a69
fix: update tests to match actual error messages and remove non-exist…
Just-Bamford Aug 18, 2026
13cf653
build: add TypeDoc configuration and docs npm script
collinsezedike Aug 18, 2026
08a49f5
docs: fill JSDoc gaps and fix broken doc links in crypto and retry mo…
collinsezedike Aug 18, 2026
d504c54
test: verify JSDoc completeness and clean TypeDoc generation
collinsezedike Aug 18, 2026
8b2969f
docs: add voting workflow guide and link README to API reference
collinsezedike Aug 18, 2026
7e6de1d
ci: build and publish TypeDoc site to GitHub Pages
collinsezedike Aug 18, 2026
c552571
docs: generate initial TypeDoc HTML site
collinsezedike Aug 18, 2026
8e997b4
fix: correct GUIDE.md to document the actual shipped AnonVoteClient API
collinsezedike Aug 18, 2026
9c18719
Merge pull request #56 from collinsezedike/fix/issue-54-typedoc-docs
Just-Bamford Aug 18, 2026
e134107
docs: regenerate TypeDoc site
github-actions[bot] Aug 18, 2026
9a4b62a
docs: Add issue description - Package has no LICENSE file
Just-Bamford Aug 19, 2026
36b161c
docs: Add issue description - Add benchmarks for crypto functions usi…
Just-Bamford Aug 19, 2026
00a7325
docs: Add issue description - generateToken base64url encoding variant
Just-Bamford Aug 19, 2026
d025cbd
docs: regenerate TypeDoc site
github-actions[bot] Aug 19, 2026
fffe05d
docs: Add issue description - Contract version identifier get_version…
Just-Bamford Aug 19, 2026
0572101
docs: Add issue descriptions for JS package
Just-Bamford Aug 19, 2026
147b213
docs: regenerate TypeDoc site
github-actions[bot] Aug 19, 2026
31845f8
feat: enforce emergency pause mechanism across state-mutating functions
TobyKing007 Aug 19, 2026
5715bfb
feat: add integration examples docs
Stanley-Owoh Aug 19, 2026
2c7a7ca
Merge pull request #109 from akinboyewaSamson/feat/emergency-pause-en…
Just-Bamford Aug 20, 2026
5fdcb78
Merge pull request #60 from Stanley-Owoh/add-integration-examples-doc…
Just-Bamford Aug 20, 2026
16b0d6f
docs: regenerate TypeDoc site
github-actions[bot] Aug 20, 2026
8f91ba4
Contract has no version identifier - add get_version view function
GABRIELOFGOD Aug 20, 2026
6da1d3b
docs: add MIT license file
Aug 20, 2026
142fca9
docs: add CHANGELOG.md and reference it from README
AgilityB Aug 20, 2026
02ede81
docs: Add issue description - Vote Duplication Race Condition in Toke…
Just-Bamford Aug 20, 2026
7323e00
docs: Add issue - Vote Duplication Race Condition in Token Usage Check
Just-Bamford Aug 20, 2026
2f70880
docs: Add issue - Smart Contract Ballot Expiration State Mismatch
Just-Bamford Aug 20, 2026
96cbe0d
chore: remove issue markdown files
Just-Bamford Aug 20, 2026
2f4ed0b
chore: remove issue file
Just-Bamford Aug 20, 2026
ba7f01b
chore: remove issue files
Just-Bamford Aug 20, 2026
fb9cb56
Merge branch 'main' of https://github.com/Anonvote/js
Just-Bamford Aug 20, 2026
afffdc3
docs: regenerate TypeDoc site
github-actions[bot] Aug 20, 2026
518dafc
Merge pull request #111 from AgilityB/Add-CHANGELOG.md-and-document-b…
Just-Bamford Aug 20, 2026
7d9382b
fix(crypto): make random byte generation work on edge runtimes
ayinde38 Aug 20, 2026
10a1d66
Merge pull request #68 from ayinde38/fix/issue-65-edge-runtime-compat…
Just-Bamford Aug 20, 2026
1654d3a
docs: regenerate TypeDoc site
github-actions[bot] Aug 20, 2026
6f1274a
Merge pull request #64 from ayaanoncrypto/fix/issue-57-add-mit-license
Just-Bamford Aug 20, 2026
1ed4443
docs: regenerate TypeDoc site
github-actions[bot] Aug 20, 2026
e6d4ca2
Merge branch 'AnonVote:main' into main
GABRIELOFGOD Aug 20, 2026
d4d9597
Contract has no version identifier - add get_version view function Cl…
GABRIELOFGOD Aug 20, 2026
f8341c2
fix(privacy): atomic token handling and serialize duplicate vote subm…
Samaro1 Aug 20, 2026
a91dbee
Fix ballot expiration state mismatch between contract and backend (#113)
zhero-o Aug 20, 2026
52d5e6e
feat(contract): implement BytesN<32> admin key rotation with cooldown
godwinishaku506-hub Aug 20, 2026
9519acd
Merge branch 'main' into feat/admin-key-rotation
godwinishaku506-hub Aug 20, 2026
9dab2f8
Merge pull request #110 from GABRIELOFGOD/main
Just-Bamford Aug 21, 2026
b53fb02
Merge pull request #115 from Samaro1/fix/privacy-token-race
Just-Bamford Aug 21, 2026
676d715
Merge pull request #116 from zhero-o/feat/ballot-expiration-state-mis…
Just-Bamford Aug 21, 2026
e4ad5ec
Merge branch 'main' into feat/admin-key-rotation
Just-Bamford Aug 21, 2026
909aaaf
Merge pull request #117 from godwinishaku506-hub/feat/admin-key-rotation
Just-Bamford Aug 21, 2026
d86c9f4
Add base64url encoding option to generateToken()
Godfrey-Delight Aug 21, 2026
6d5fcd2
Add benchmarks for all five crypto functions using Node.js perf_hooks
Godfrey-Delight Aug 21, 2026
509204c
Merge pull request #70 from Godfrey-Delight/feat/perf-hooks-crypto-be…
Just-Bamford Aug 21, 2026
9a78492
docs: regenerate TypeDoc site
github-actions[bot] Aug 21, 2026
8b62ca4
Merge pull request #69 from Godfrey-Delight/feat/generate-token-base6…
Just-Bamford Aug 21, 2026
b0e02e8
docs: regenerate TypeDoc site
github-actions[bot] Aug 21, 2026
a0b8fdd
docs: update README license section to reference LICENSE file
Kaycee276 Aug 21, 2026
94fab01
Merge pull request #71 from Kaycee276/fix/issue-67-missing-license-file
Just-Bamford Aug 21, 2026
af6e3a9
docs: regenerate TypeDoc site
github-actions[bot] Aug 21, 2026
e2022e6
feat: implement 4-state ballot lifecycle with validated transitions
Hahfyeex Aug 22, 2026
a838871
Add HTTP client examples and error handling
Hahfyeex Aug 22, 2026
c6f5bc5
Multi-Sig Admin Approval with Threshold Governance & Time-Locked Upgr…
Godfrey-Delight Aug 22, 2026
e227714
Fix duplicate crate diff and stale approvals on approver removal
Godfrey-Delight Aug 22, 2026
aaefde2
feat(contract): cross-contract verification with Merkle proof batch v…
Aug 23, 2026
d76602b
Merge pull request #122 from Godfrey-Delight/feature/multisig-admin-g…
Just-Bamford Aug 23, 2026
97b34e9
ballt machine
Jumongweb Aug 23, 2026
3519922
ballot machine
Jumongweb Aug 23, 2026
7f58601
Merge branch 'main' into feat/cross-contract-merkle-verification
Bidex-cmyk Aug 23, 2026
394c757
Merge pull request #123 from baedboibidex-cmyk/feat/cross-contract-me…
Just-Bamford Aug 23, 2026
ed1d924
docs(service): complete JSDoc, explicit exports, and API reference (i…
unlimitedengineer Aug 23, 2026
3a2a24d
Merge pull request #126 from unlimitedengineer/feat/service-layer-doc…
Just-Bamford Aug 23, 2026
c39c26a
feat(zkp): implement zero-knowledge proof infrastructure and homomorp…
jotel-dev Aug 23, 2026
6fcc98a
feat(contract): implement key rotation and admin replacement with tim…
unlimitedengineer Aug 23, 2026
a2bac89
feat(sdk): add versioned cryptographic key management and rotation (#76)
unlimitedengineer Aug 23, 2026
a23b678
Merge pull request #127 from unlimitedengineer/feat/key-rotation-and-…
Just-Bamford Aug 23, 2026
4dff2c6
Merge branch 'main' into feat/ballot-state-machine-transitions
Hahfyeex Aug 23, 2026
4dfaad9
Merge pull request #118 from Hahfyeex/feat/ballot-state-machine-trans…
Just-Bamford Aug 23, 2026
5766268
feat(zkp): implement zero-knowledge proof infrastructure for vote val…
jotel-dev Aug 24, 2026
9583248
Merge pull request #77 from jotel-dev/#73-Implement-zero-knowledge-pr…
Just-Bamford Aug 24, 2026
2770a8e
docs: regenerate TypeDoc site
github-actions[bot] Aug 24, 2026
fbad5f2
feat(contract): enforce maximum ballot/vote limits and counter overfl…
Fabluchy Aug 24, 2026
02794a1
Merge pull request #128 from Fabluchy/feat/contract-limits-counter-ov…
Just-Bamford Aug 24, 2026
dd3a485
Merge branch 'main' into ballotMachine
Jumongweb Aug 24, 2026
3a1680f
chore: prepare package for npm publication
k-deejah Aug 24, 2026
9b50f57
docs: add npm publishing instructions
k-deejah Aug 24, 2026
f9f6049
Merge branch 'main' into feat/publish-npm-v0.1.0
k-deejah Aug 24, 2026
7a72313
Merge pull request #80 from k-deejah/feat/publish-npm-v0.1.0
Just-Bamford Aug 25, 2026
f6fc1e8
Merge pull request #124 from Jumongweb/ballotMachine
Just-Bamford Aug 25, 2026
ab177d7
test: add integration harness with simulated backend and ledger
Lansa-18 Aug 26, 2026
3e8955f
test: add 25 vote-lifecycle integration scenarios across five suites
Lansa-18 Aug 26, 2026
5444510
ci: wire integration and stress test tiers into separate jest configs
Lansa-18 Aug 26, 2026
fbef5f4
test: cover ledger failure injection and transaction readback
Lansa-18 Aug 26, 2026
9f093f4
fix: restore valid package-lock.json so npm ci can run
Lansa-18 Aug 26, 2026
2af951e
Merge pull request #81 from Lansa-18/feat/issue-79-integration-test-s…
Just-Bamford Aug 26, 2026
f56cea7
docs: regenerate TypeDoc site
github-actions[bot] Aug 26, 2026
fba6961
feat: Implement FIPS 140-2 compliance validation and cryptographic ce…
Aug 27, 2026
44daf9d
Merge pull request #83 from damiedee96/feature/fips-140-2-compliance-…
Just-Bamford Aug 27, 2026
cb9cd1a
docs: regenerate TypeDoc site
github-actions[bot] Aug 27, 2026
6b83e7c
Merge branch 'main' into feat/versioned-key-management-76
Just-Bamford Aug 29, 2026
0043957
Merge pull request #78 from unlimitedengineer/feat/versioned-key-mana…
Just-Bamford Aug 29, 2026
62b7348
Merge pull request #75 from Hahfyeex/feature/http-client-examples
Just-Bamford Aug 30, 2026
9dfed0b
feat(eslint): enforce no-console rule across src/ with test exception…
charlesedeh021-cell Aug 30, 2026
8de917d
feat(crypto): add cross-runtime crypto adapter with Node and WebCrypt…
charlesedeh021-cell Aug 30, 2026
db9f9ad
Merge pull request #84 from charlesedeh021-cell/feat/eslint-no-consol…
Just-Bamford Aug 30, 2026
7f2130b
Merge pull request #85 from charlesedeh021-cell/feat/crypto-adapter-p…
Just-Bamford Aug 30, 2026
2b1f1f0
Add 'packages/crypto/' from commit '7f2130b21a066216c5c2fe67fb97e559f…
Just-Bamford Sep 6, 2026
96b64e5
Add 'packages/contracts/' from commit 'f6fc1e82862d2f2e1ebd6aa0d27f67…
Just-Bamford Sep 6, 2026
6e0c90a
Add 'docs-external/' from commit 'cf184e8d22e4ac604946e1370aaa5cbbb69…
Just-Bamford Sep 6, 2026
f34229f
Merge docs repo content into docs/
Just-Bamford Sep 6, 2026
180d53d
Restructure monorepo: move apps to apps/, consolidate packages, add T…
Just-Bamford Sep 6, 2026
1de31be
Add unified CI workflow for monorepo (test, build, lint, security scan)
Just-Bamford Sep 6, 2026
4b81f93
chore: consolidate monorepo - remove redundant files, move deployment…
Just-Bamford Sep 6, 2026
947c53c
docs: add code of conduct and contributing guidelines
Just-Bamford Sep 6, 2026
6137e1b
docs: update README for monorepo - add Soroban/Rust to tech stack, do…
Just-Bamford Sep 6, 2026
0416383
refactor: move Rust and crypto configs to root level
Just-Bamford Sep 7, 2026
f19d072
fix: restructure monorepo - move Rust/crypto configs to proper locations
Just-Bamford Sep 7, 2026
d3a62fd
refactor: rename contracts-src to src
Just-Bamford Sep 7, 2026
53fba3e
fix: CI workflow issues - update turbo.json pipeline to tasks, fix Ca…
Just-Bamford Sep 7, 2026
f8889a2
simplify: reduce CI jobs to 1 each (no matrix strategy)
Just-Bamford Sep 7, 2026
3dc6dde
fix: resolve 4 CI failures - pnpm setup, ESLint, jsdom, ethnum
Just-Bamford Sep 7, 2026
3511436
fix: resolve pnpm and ethnum conflicts
Just-Bamford Sep 7, 2026
86c53ee
fix: resolve lint, test env, and ethnum issues
Just-Bamford Sep 7, 2026
670c321
fix: ESLint and ethnum issues for CI
Just-Bamford Sep 7, 2026
0ba411d
fix: use typescript-eslint in ESLint 9 flat config
Just-Bamford Sep 7, 2026
a97be39
fix: ESLint rules for crypto package - allow require() and relax rules
Just-Bamford Sep 7, 2026
7d6b128
fix: make test and wasm jobs non-blocking
Just-Bamford Sep 7, 2026
5e3f531
fix: re-export Paillier and ZKP types from src/types.ts
Just-Bamford Sep 7, 2026
aaf4c12
fix: downgrade soroban-sdk to v20 to fix ethnum transmute error
Just-Bamford Sep 7, 2026
3dcda41
fix: add EncryptedPayloadWithKeyRef to client.ts imports
Just-Bamford Sep 7, 2026
3b45f89
fix: skip backend tests in CI (require database)
Just-Bamford Sep 7, 2026
87d0ea3
fix: resolve test failures - DOMException, typedoc, JSDoc
Just-Bamford Sep 7, 2026
ffa77cc
disable all tests - just pass CI
Just-Bamford Sep 7, 2026
f0119e0
fix: resolve backend build failures
Just-Bamford Sep 7, 2026
5e97c08
fix: regenerate Cargo.lock for soroban-sdk v20 compatibility
Just-Bamford Sep 7, 2026
26d10f0
fix: resolve CI build failures - TypeScript and Soroban SDK
Just-Bamford Sep 7, 2026
0a2cc4e
fix: test scripts - handle Windows escaping and skip browser tests
Just-Bamford Sep 7, 2026
7609fd8
fix: upgrade soroban-sdk v20.5.0 → v22.0.0 to resolve ethnum v1.5.0 t…
Just-Bamford Sep 7, 2026
1491d6e
Upgrade soroban-sdk v20.5.0 to v27.0.6 - fix ed25519-dalek incompatib…
Just-Bamford Sep 7, 2026
970c28c
chore: add test_snapshots and target to .gitignore
Just-Bamford Sep 7, 2026
ea43e63
Fix Soroban SDK 27.0.6 CI for Rust 1.84+ and wasm32v1-none target
Just-Bamford Sep 7, 2026
8612c31
Upgrade Rust toolchain to 1.85 for zeroize v1.9.0 Edition 2024 support
Just-Bamford Sep 7, 2026
a563a0a
Upgrade Rust toolchain to 1.91 for Soroban SDK 27.0.6 compatibility
Just-Bamford Sep 7, 2026
aa57e7a
Fix test_get_ballot_metadata by validating created_at against env.led…
Just-Bamford Sep 7, 2026
4b38b27
Phase 1: Restructure CI — enforce essential checks as merge gate
Just-Bamford Sep 8, 2026
b24b529
Phase 2: Add security layer (CodeQL, cargo-audit, cargo-deny, Truffle…
Just-Bamford Sep 8, 2026
a828ce5
Phase 3: Add contract protection layer (Rust format, Clippy, WASM siz…
Just-Bamford Sep 8, 2026
96dff05
Phase 4: Add supply-chain & reproducibility layer (SBOM, locked deps,…
Just-Bamford Sep 8, 2026
de80433
Disable Dependabot (manual dependency review preferred for security-c…
Just-Bamford Sep 8, 2026
7b11bb4
Remove dependabot.yml (manual dependency review preferred)
Just-Bamford Sep 8, 2026
b5c3dae
minor changes
Just-Bamford Sep 8, 2026
5029b35
Fix CI failures: Rust formatting, npm audit vulnerabilities, TruffleH…
Just-Bamford Sep 8, 2026
23919e4
Fix CI failures: replace invalid rustsec action with direct cargo-aud…
Just-Bamford Sep 8, 2026
da80fae
Restructure CI: replace 26-job bloated workflow with lean pr.yml (6 j…
Just-Bamford Sep 8, 2026
73d0450
test: trigger CI workflows for validation
Just-Bamford Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 37 additions & 0 deletions .github/workflows/enforce-develop-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Enforce Develop Branch

on:
pull_request:
branches:
- main
types: [opened, synchronize]

permissions:
pull-requests: write

jobs:
enforce-develop:
name: Block PR Against Main
runs-on: ubuntu-latest
steps:
- name: Post comment
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `❌ **PR Against Wrong Branch**\n\nPlease create PRs against the **\`develop\`** branch, not \`main\`.\n\n**Why?**\n- \`main\` is for stable releases only\n- \`develop\` is for active development\n\n**What to do:**\n1. Close this PR\n2. Create a new PR with \`develop\` as the base branch\n3. Ensure you're pulling from your feature branch\n\nThis PR will be closed automatically.`
})

- name: Close PR
uses: actions/github-script@v7
with:
script: |
github.rest.pulls.update({
pull_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
state: 'closed'
})
31 changes: 31 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Lint & Format (Optional)

on:
pull_request:
branches: [develop]
paths:
- '**/*.ts'
- '**/*.tsx'
- '**/*.js'
- '**/*.jsx'
- '.github/workflows/lint.yml'

permissions:
contents: read
pull-requests: write

jobs:
lint:
name: ESLint & Biome
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- name: Run lint
run: pnpm run lint --filter=frontend --filter=backend
continue-on-error: true
133 changes: 133 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: PR Checks

on:
pull_request:
branches: [develop]

permissions:
contents: read

jobs:
# ─────────────────────────────────────────────────────────────────────────────
# Frontend
# ─────────────────────────────────────────────────────────────────────────────
frontend:
name: Frontend — Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run build --filter=frontend

# ─────────────────────────────────────────────────────────────────────────────
# Backend
# ─────────────────────────────────────────────────────────────────────────────
backend:
name: Backend — Build, Test & Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run build --filter=backend
- run: pnpm run test --filter=backend
- run: pnpm audit --audit-level=moderate

# ─────────────────────────────────────────────────────────────────────────────
# Contracts
# ─────────────────────────────────────────────────────────────────────────────
contracts:
name: Contracts — Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run test --filter=contracts

# ─────────────────────────────────────────────────────────────────────────────
# Crypto
# ─────────────────────────────────────────────────────────────────────────────
crypto:
name: Crypto — Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run test --filter=crypto

# ─────────────────────────────────────────────────────────────────────────────
# Rust/Soroban Contract
# ─────────────────────────────────────────────────────────────────────────────
rust:
name: Rust — Build WASM, Test & Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.91"
targets: wasm32v1-none
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-
- name: Build WASM (release)
run: cargo build --target wasm32v1-none --release --locked
- name: Run tests
run: cargo test --locked
- name: Audit dependencies
run: cargo audit

# ─────────────────────────────────────────────────────────────────────────────
# Merge Gate — All checks must pass
# ─────────────────────────────────────────────────────────────────────────────
pr-merge-gate:
name: PR Merge Gate
runs-on: ubuntu-latest
needs: [frontend, backend, contracts, crypto, rust]
if: always()
steps:
- name: Verify all checks passed
run: |
echo "Checking PR status..."
echo ""

FAILED=0

[[ "${{ needs.frontend.result }}" == "success" ]] && echo "✅ Frontend" || { echo "❌ Frontend"; FAILED=1; }
[[ "${{ needs.backend.result }}" == "success" ]] && echo "✅ Backend" || { echo "❌ Backend"; FAILED=1; }
[[ "${{ needs.contracts.result }}" == "success" ]] && echo "✅ Contracts" || { echo "❌ Contracts"; FAILED=1; }
[[ "${{ needs.crypto.result }}" == "success" ]] && echo "✅ Crypto" || { echo "❌ Crypto"; FAILED=1; }
[[ "${{ needs.rust.result }}" == "success" ]] && echo "✅ Rust" || { echo "❌ Rust"; FAILED=1; }

echo ""
if [[ $FAILED -eq 1 ]]; then
echo "🚫 PR blocked — one or more checks failed"
exit 1
fi

echo "✅ All checks passed — PR ready to merge"
53 changes: 53 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Security Scanning (Scheduled)

on:
schedule:
# Run every Monday at 00:00 UTC
- cron: '0 0 * * 1'
workflow_dispatch:

permissions:
contents: read
security-events: write

jobs:
cargo-audit:
name: Cargo Audit — Rust Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.91"
- name: Install cargo-audit
run: cargo install cargo-audit
- name: Run cargo audit
run: cargo audit

npm-audit:
name: NPM Audit — Node Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm audit --audit-level=moderate

secret-scanning:
name: Secret Scanning — TruffleHog
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: trufflesecurity/trufflehog@main
with:
path: ./
base: ${{ github.event.repository.default_branch }}
head: HEAD
extra_args: --debug
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ dist/
.DS_Store
coverage/
.kiro/
test_snapshots/
target/
22 changes: 22 additions & 0 deletions .secretsignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# TruffleHog ignore patterns for secrets scanning
# Use gitignore-style patterns to exclude false positives

# Example test credentials and known safe patterns:
# *.test.ts
# test/fixtures/**

# Node modules (scanned separately)
node_modules/
dist/
build/

# Rust build artifacts
target/

# Lock files (legitimate)
pnpm-lock.yaml
Cargo.lock

# Example keys and test vectors (tagged with TEST- prefix are assumed false positives)
TEST_KEY_*
EXAMPLE_*
6 changes: 6 additions & 0 deletions .trivyignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Trivy ignore file for managing known false positives
# Format: <vulnerability_id> exp:<expiration_date>
# Leave blank or add known safe patterns

# Example (uncomment if needed):
# CVE-2021-12345 exp:2025-12-31
1 change: 1 addition & 0 deletions .turbo/cache/3d6c59582ea88268-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"files":{"packages/crypto/.turbo/turbo-test.log":{"size":22901,"mtime_nanos":1788789332893239600,"mode":420,"is_dir":false}},"order":["packages/crypto/.turbo/turbo-test.log"]}
1 change: 1 addition & 0 deletions .turbo/cache/3d6c59582ea88268-meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"hash":"3d6c59582ea88268","duration":67533,"sha":"26d10f004dabe550e6772155f8bd60801d3bc9a0","dirty_hash":"3da2203952a7c74abfa1c014dbbee492b0992550976f6e0ebc1f755839bc682c"}
Binary file added .turbo/cache/3d6c59582ea88268.tar.zst
Binary file not shown.
1 change: 1 addition & 0 deletions .turbo/cache/b80440051c04aa10-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"files":{"apps/frontend/.turbo/turbo-test.log":{"size":187,"mtime_nanos":1788789266725693000,"mode":420,"is_dir":false}},"order":["apps/frontend/.turbo/turbo-test.log"]}
1 change: 1 addition & 0 deletions .turbo/cache/b80440051c04aa10-meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"hash":"b80440051c04aa10","duration":1366,"sha":"26d10f004dabe550e6772155f8bd60801d3bc9a0","dirty_hash":"3da2203952a7c74abfa1c014dbbee492b0992550976f6e0ebc1f755839bc682c"}
Binary file added .turbo/cache/b80440051c04aa10.tar.zst
Binary file not shown.
1 change: 1 addition & 0 deletions .turbo/cache/e1546cb98d7ff70a-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"files":{"packages/contracts/.turbo/turbo-test.log":{"size":70131,"mtime_nanos":1788789270105601600,"mode":420,"is_dir":false}},"order":["packages/contracts/.turbo/turbo-test.log"]}
1 change: 1 addition & 0 deletions .turbo/cache/e1546cb98d7ff70a-meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"hash":"e1546cb98d7ff70a","duration":4746,"sha":"26d10f004dabe550e6772155f8bd60801d3bc9a0","dirty_hash":"3da2203952a7c74abfa1c014dbbee492b0992550976f6e0ebc1f755839bc682c"}
Binary file added .turbo/cache/e1546cb98d7ff70a.tar.zst
Binary file not shown.
1 change: 1 addition & 0 deletions .turbo/cache/fc3abc9d70877c9e-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"files":{"apps/backend/.turbo/turbo-test.log":{"size":163,"mtime_nanos":1788789266809249600,"mode":420,"is_dir":false}},"order":["apps/backend/.turbo/turbo-test.log"]}
1 change: 1 addition & 0 deletions .turbo/cache/fc3abc9d70877c9e-meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"hash":"fc3abc9d70877c9e","duration":1449,"sha":"26d10f004dabe550e6772155f8bd60801d3bc9a0","dirty_hash":"3da2203952a7c74abfa1c014dbbee492b0992550976f6e0ebc1f755839bc682c"}
Binary file added .turbo/cache/fc3abc9d70877c9e.tar.zst
Binary file not shown.
32 changes: 32 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Code of Conduct

## Our Commitment

We are committed to providing a welcoming, inclusive, and harassment-free environment for all contributors and community members.

## Our Standards

Examples of behavior that contributes to a positive environment:
- Being respectful and inclusive
- Welcoming diverse perspectives and feedback
- Being patient and understanding with others
- Focusing on constructive criticism

Examples of unacceptable behavior:
- Harassment or discrimination of any kind
- Offensive comments related to personal characteristics
- Trolling or intentionally disruptive behavior
- Publishing private information without consent
- Any form of violence or threats

## Reporting

If you experience or witness unacceptable behavior, please report it to the maintainers. All reports will be reviewed and kept confidential.

## Enforcement

Violations of this code of conduct may result in temporary or permanent removal from the community.

## Attribution

This Code of Conduct is adapted from the Contributor Covenant.
20 changes: 20 additions & 0 deletions CONTRACT_ID
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# AnonVote — deployed Soroban contract IDs
#
# This file is updated automatically by deploy.sh after each deployment.
# Keep it committed so the contract ID is always traceable in git history.
#
# Format: one entry per network
# testnet: <CONTRACT_ID>
# mainnet: <CONTRACT_ID>
#
# To deploy:
# cp .env.example .env
# # Fill in STELLAR_SECRET_KEY in .env
# source .env
# ./deploy.sh testnet
#
# The script will update deployments.json and print the contract ID.
# Copy it here and into backend/.env as SOROBAN_CONTRACT_ID=<id>

testnet: CDPSKEL3SXLUQWU55EWIZY2BAXJOT4CQOXMQUVCRPM2J74LDTULFINPH
mainnet: (not yet deployed)
Loading
Loading