chore: remove dead StatusMessage component - #81
Open
Diggardson270 wants to merge 14 commits into
Open
Conversation
- Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md
Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch.
* feat: add threshold disclosure UI and integration * Add explicit amount and fee confirmation before deposit signing --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com>
* chore: add documented frontend/.env.local.example template and update guides * docs: add CHANGELOG.md and update contributor guidelines Dshield-xyz#6 * fix(ci): trigger CI on dev branch, not just main (Dshield-xyz#52) All PRs are now required to target dev instead of main, but the workflow only ran on push/pull_request to main. As a result every open PR against dev has "no checks reported" and nothing gates merges into dev. * fix(frontend): pin axios and bump protobufjs override to close audit findings (Dshield-xyz#53) * fix(frontend): pin axios and bump protobufjs override to close audit findings pnpm audit --prod --audit-level=moderate has been failing CI's Frontend job (once CI actually ran against dev, see Dshield-xyz#52) with 12 findings: - axios <1.18.0 resolved at three different versions transitively via @creit.tech/stellar-wallets-kit's wallet-connector chain (cdp-sdk, stellar-sdk). Pinned to ^1.18.1, which was already resolving elsewhere in the tree via @stellar/stellar-sdk, so no new major version is introduced. - protobufjs's existing override (^7.6.3) predates GHSA-j3f2-48v5-ccww (fixed in 7.6.5); bumped the pin to ^7.6.5, same patch-only policy already used for this override. Verified: pnpm audit --prod --audit-level=moderate now exits 0 (only the pre-existing, already-documented unpatched elliptic advisory remains), and pnpm test / pnpm lint / pnpm build all still pass. * fix(e2e): strip JSON string quoting from i128 CLI output before comparing get_deposit_amount returns i128 (contracts/pool/src/lib.rs:550). The Stellar CLI JSON-encodes 64+ bit integers as quoted strings to avoid JS precision loss, unlike get_next_index's plain u32 output. The comparison was failing every run with expected 10000000, got "10000000" (quotes included) since this test never actually executed in CI before dev branch runs were enabled (Dshield-xyz#52). * docs: add api route request/response contracts (Dshield-xyz#39) * chore: add husky + lint-staged pre-commit hook for frontend (Dshield-xyz#40) - Add husky ^9.1.7 and lint-staged ^15.5.2 to frontend/package.json devDependencies - Add prepare script so pnpm install auto-installs the git hook - Configure lint-staged to run eslint --fix on staged src/**/*.{ts,tsx} files - Add frontend/.husky/pre-commit hook that runs pnpm lint-staged - Add CONTRIBUTING.md (absent from dev branch) with husky setup documented: one-time setup note after pnpm install step, updated step 5 to mention the hook runs automatically on commit Closes Dshield-xyz#25 * docs: add CODEOWNERS file (Dshield-xyz#41) * docs(security): document rate limiter single-instance limitation (Dshield-xyz#42) - Add 'Deployment Limitations' section to SECURITY.md with a dedicated 'Rate Limiter — Single-Instance Only' subsection that explains: - The in-memory, per-process nature of checkRateLimit - Why multi-instance deployments (load balancer, HPA) get no real protection - Upgrade path: Upstash Redis, self-hosted Redis, or Vercel KV - Add a⚠️ callout to the README.md Security Model section linking to the new SECURITY.md anchor for the full upgrade path Closes Dshield-xyz#16 * docs: replace the ASCII architecture diagram with a rendered Mermaid diagram Dshield-xyz#51 (Dshield-xyz#47) Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions (Dshield-xyz#50) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions Covers: nullifier, commitment, Merkle root/tree, Merkle inclusion proof, ZKP, zkSNARK, UltraHonk, Noir, Barretenberg, verification key, Poseidon2, keccak transform, BN254, selective disclosure, recipient binding, note, client-side prover, Stellar, Soroban, relayer, shielded pool, SAC, Freighter. Linked from README.md (new 'New to ZK or Stellar?' section near top + glossary link in Contributing paragraph) and CONTRIBUTING.md (callout block after intro + entry in 'Where things live' list). All 204 tests pass (107 Rust/Soroban + 97 frontend Vitest). --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: Emelie-Dev <120989028+Emelie-Dev@users.noreply.github.com> Co-authored-by: benzy018 <akobezjr@gmail.com> Co-authored-by: Fadila Bala Usman <fadilausman705@gmail.com> Co-authored-by: Joyful Analyst <joyonyegbuna2020@gmail.com> Co-authored-by: Joey <62303285+Mona-i@users.noreply.github.com> Co-authored-by: Shantel peters. <Elizabethogunrinde2015@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com>
tech-adrian
approved these changes
Jul 26, 2026
* fix(ci): trigger CI on dev branch, not just main (Dshield-xyz#52) All PRs are now required to target dev instead of main, but the workflow only ran on push/pull_request to main. As a result every open PR against dev has "no checks reported" and nothing gates merges into dev. * fix(frontend): pin axios and bump protobufjs override to close audit findings (Dshield-xyz#53) * fix(frontend): pin axios and bump protobufjs override to close audit findings pnpm audit --prod --audit-level=moderate has been failing CI's Frontend job (once CI actually ran against dev, see Dshield-xyz#52) with 12 findings: - axios <1.18.0 resolved at three different versions transitively via @creit.tech/stellar-wallets-kit's wallet-connector chain (cdp-sdk, stellar-sdk). Pinned to ^1.18.1, which was already resolving elsewhere in the tree via @stellar/stellar-sdk, so no new major version is introduced. - protobufjs's existing override (^7.6.3) predates GHSA-j3f2-48v5-ccww (fixed in 7.6.5); bumped the pin to ^7.6.5, same patch-only policy already used for this override. Verified: pnpm audit --prod --audit-level=moderate now exits 0 (only the pre-existing, already-documented unpatched elliptic advisory remains), and pnpm test / pnpm lint / pnpm build all still pass. * fix(e2e): strip JSON string quoting from i128 CLI output before comparing get_deposit_amount returns i128 (contracts/pool/src/lib.rs:550). The Stellar CLI JSON-encodes 64+ bit integers as quoted strings to avoid JS precision loss, unlike get_next_index's plain u32 output. The comparison was failing every run with expected 10000000, got "10000000" (quotes included) since this test never actually executed in CI before dev branch runs were enabled (Dshield-xyz#52). * docs: add api route request/response contracts (Dshield-xyz#39) * chore: add husky + lint-staged pre-commit hook for frontend (Dshield-xyz#40) - Add husky ^9.1.7 and lint-staged ^15.5.2 to frontend/package.json devDependencies - Add prepare script so pnpm install auto-installs the git hook - Configure lint-staged to run eslint --fix on staged src/**/*.{ts,tsx} files - Add frontend/.husky/pre-commit hook that runs pnpm lint-staged - Add CONTRIBUTING.md (absent from dev branch) with husky setup documented: one-time setup note after pnpm install step, updated step 5 to mention the hook runs automatically on commit Closes Dshield-xyz#25 * docs: add CODEOWNERS file (Dshield-xyz#41) * docs(security): document rate limiter single-instance limitation (Dshield-xyz#42) - Add 'Deployment Limitations' section to SECURITY.md with a dedicated 'Rate Limiter — Single-Instance Only' subsection that explains: - The in-memory, per-process nature of checkRateLimit - Why multi-instance deployments (load balancer, HPA) get no real protection - Upgrade path: Upstash Redis, self-hosted Redis, or Vercel KV - Add a⚠️ callout to the README.md Security Model section linking to the new SECURITY.md anchor for the full upgrade path Closes Dshield-xyz#16 * docs: replace the ASCII architecture diagram with a rendered Mermaid diagram Dshield-xyz#51 (Dshield-xyz#47) Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions (Dshield-xyz#50) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions Covers: nullifier, commitment, Merkle root/tree, Merkle inclusion proof, ZKP, zkSNARK, UltraHonk, Noir, Barretenberg, verification key, Poseidon2, keccak transform, BN254, selective disclosure, recipient binding, note, client-side prover, Stellar, Soroban, relayer, shielded pool, SAC, Freighter. Linked from README.md (new 'New to ZK or Stellar?' section near top + glossary link in Contributing paragraph) and CONTRIBUTING.md (callout block after intro + entry in 'Where things live' list). All 204 tests pass (107 Rust/Soroban + 97 frontend Vitest). --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> * fix(frontend): pin sharp past next's declared range to close new libvips CVE (Dshield-xyz#54) pnpm audit --prod --audit-level=moderate started failing again with a fresh advisory (GHSA-f88m-g3jw-g9cj, libvips CVEs in sharp <0.35.0). next@16.2.9 declares sharp as ^0.34.5, which under semver caret rules for 0.x versions excludes the patched 0.35.x line entirely, so pnpm was resolving the vulnerable version by default. Overrode to ^0.35.3. Verified: pnpm audit exits 0 (only the pre-documented elliptic advisory remains), pnpm build succeeds (exercises sharp via /icon.png generation), pnpm test (97/97) and pnpm lint pass. * docs: add pull request template (Dshield-xyz#46) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * docs: add pull request template with required sections - Added Why section (CONTRIBUTING.md requirement: describe why, not just what) - Renamed Testing to Testing done for clarity - Added Screenshot / recording (required) section - Added Related issue section with Closes # placeholder - Replaced Area section with Why to match issue Dshield-xyz#41 acceptance criteria - Replaced Breaking changes section with Screenshot/recording requirement --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * chore: add documented frontend/.env.local.example template and update guides (Dshield-xyz#48) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * chore: add documented frontend/.env.local.example template and update guides * docs: add CHANGELOG.md and update contributor guidelines Dshield-xyz#6 --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * tests: add an axe-core accessibility check to CI (Dshield-xyz#44) * wip: add axe-core a11y regression tests (pnpm-lock.yaml pending install) * fix: correct file input label and fix broken tag-input in NoteImport * ci: retrigger checks --------- Co-authored-by: YerimahOfTimes <yerimahjr@gmail.com> Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * Fix mobile layout issues at 375px and 768px breakpoints (Dshield-xyz#45) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * feat: enhanced mobile responsiveness --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * Fix/57 get commitments pagination (Dshield-xyz#72) * contracts: add paginated get_commitments_page view get_commitments() reads every leaf in one invocation and has no bound other than MAX_LEAVES (2^20), so it will exceed Soroban's per-transaction CPU/footprint limits once a pool grows enough, making client-side tree reconstruction unbuildable. get_commitments_page(start, limit) returns a bounded, on-chain-capped (MAX_PAGE_SIZE = 100) range instead. Covers: a page landing exactly on next_index, an out-of-range start, and a limit above the enforced max. Refs Dshield-xyz#57 * frontend: page through get_commitments_page for tree reconstruction fetchCommitmentsFromChain (used by both the withdraw flow and the compliance report) now pages through the pool contract's new get_commitments_page view instead of calling the unbounded get_commitments(), so client-side Merkle tree reconstruction keeps working as a pool grows past what a single get_commitments() call can return. Any page-call failure returns null rather than a partial list, since a truncated commitment set would silently reconstruct the wrong root. Refs Dshield-xyz#57 * docs: describe paginated get_commitments_page in Security Model Adds a fourth Security Model property documenting trustless tree reconstruction via get_commitments_page and its on-chain MAX_PAGE_SIZE ceiling, plus a CHANGELOG entry. Refs Dshield-xyz#57 * perf: move client-side proof generation off the main thread (Dshield-xyz#71) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * perf: extract proof generation into a worker-ready core module Split prover.ts's Noir.execute/UltraHonkBackend.generateProof logic into prover-core.ts (a pure async function with progress hooks) plus a new prover.worker.ts Web Worker entry point that runs it off the main thread. Neither is wired up to the public API yet — that's the next commit. * perf: dispatch proof generation to a Web Worker prover.ts now posts circuit + inputs to prover.worker.ts and resolves once the worker replies, forwarding progress updates ("executing" / "proving") via an optional onProgress callback. Falls back to the inline core function when Worker isn't available (SSR, unit tests), so behavior is unchanged outside the browser. Fixes Dshield-xyz#26: proof generation (Noir witness execution + UltraHonk proving) no longer runs on the main thread, so the UI stays responsive — scrollable, spinner animating — for the ~1 minute a deposit/withdraw/compliance proof can take. * test: cover prover.ts input mapping and progress reporting Exercises the inline fallback path (no Worker global in the test environment) with mocked Noir/UltraHonkBackend: verifies hex-prefixing of note fields, executing/proving progress order, and that the backend is destroyed even when proving throws. * feat(withdraw): show which proving stage is running Surfaces the worker's executing/proving progress as a finer-grained label under the existing spinner during the "generating_proof" step, so users get feedback for the full duration of proof generation rather than a single static message. --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * feat: add persistent "download all notes" backup action (Dshield-xyz#73) * feat: cap deposit_batch size and validate deposit_amount > 0 in constructor (Dshield-xyz#76) Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * security: compliance contract admin rotation + events for set_pools/set_disclosure_vk (Dshield-xyz#77) * Feature/history csv json export (Dshield-xyz#75) * feat(frontend): add CSV/JSON formatters for activity history Adds formatActivityCsv/formatActivityJson to lib/report.ts, alongside a shared ActivityItem type, so the history page's activity feed can be exported as a portable file for auditors/regulators. Column/field list is documented inline above the formatters. * test(frontend): cover CSV/JSON activity export formatting Checks header/row shape, blank amount/pool fields on compliance rows, CSV comma-escaping, and JSON round-tripping. * feat(frontend): add Export CSV/JSON action to History page Wires the new formatters into the history page: an Export row (styled like the compliance page's download link) sits above the activity list and downloads whatever the active filter shows. Export always covers the full filtered set, not just the rows the infinite-scroll pager has revealed so far — pagination is a rendering optimization, not a data window. Closes Dshield-xyz#13 * docs: log CSV/JSON history export in CHANGELOG --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * fix: ci fix * fix: ci fix * security: add admin-gated pause/unpause circuit breaker and set_verifier to pool Lets the pool admin halt deposits/withdrawals or swap in a fixed verifier in response to a bug found in the VK, Poseidon2 implementation, or the pinned verifier dependency, without redeploying the pool. Constructor now takes an admin address, propagated through justfile deploy and e2e.sh. --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: Emelie-Dev <120989028+Emelie-Dev@users.noreply.github.com> Co-authored-by: benzy018 <akobezjr@gmail.com> Co-authored-by: Fadila Bala Usman <fadilausman705@gmail.com> Co-authored-by: Joyful Analyst <joyonyegbuna2020@gmail.com> Co-authored-by: Joey <62303285+Mona-i@users.noreply.github.com> Co-authored-by: Shantel peters. <Elizabethogunrinde2015@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> Co-authored-by: Sanusi Shafii <sanusishafii989@gmail.com> Co-authored-by: Yerimahjr <yerimahjr2@gmail.com> Co-authored-by: YerimahOfTimes <yerimahjr@gmail.com> Co-authored-by: Kendall Guzman Leiva <kendalltoto@gmail.com> Co-authored-by: Strangecloud dev <strngecloud.iv@gmail.com> Co-authored-by: caxton strange <166155946+caxtonacollins@users.noreply.github.com> Co-authored-by: Maheswaran Velmurugan <78631234+soloking1412@users.noreply.github.com> Co-authored-by: Bhenzdisma <Bhenzdizma@gmail.com> Co-authored-by: Nathan <nkigbu@yahoo.com> Co-authored-by: Osagie Cynthia <76167825+OsagieCynthia@users.noreply.github.com>
Contributor
|
@Diggardson270 please resolve conflict |
* fix(ci): trigger CI on dev branch, not just main (Dshield-xyz#52) All PRs are now required to target dev instead of main, but the workflow only ran on push/pull_request to main. As a result every open PR against dev has "no checks reported" and nothing gates merges into dev. * fix(frontend): pin axios and bump protobufjs override to close audit findings (Dshield-xyz#53) * fix(frontend): pin axios and bump protobufjs override to close audit findings pnpm audit --prod --audit-level=moderate has been failing CI's Frontend job (once CI actually ran against dev, see Dshield-xyz#52) with 12 findings: - axios <1.18.0 resolved at three different versions transitively via @creit.tech/stellar-wallets-kit's wallet-connector chain (cdp-sdk, stellar-sdk). Pinned to ^1.18.1, which was already resolving elsewhere in the tree via @stellar/stellar-sdk, so no new major version is introduced. - protobufjs's existing override (^7.6.3) predates GHSA-j3f2-48v5-ccww (fixed in 7.6.5); bumped the pin to ^7.6.5, same patch-only policy already used for this override. Verified: pnpm audit --prod --audit-level=moderate now exits 0 (only the pre-existing, already-documented unpatched elliptic advisory remains), and pnpm test / pnpm lint / pnpm build all still pass. * fix(e2e): strip JSON string quoting from i128 CLI output before comparing get_deposit_amount returns i128 (contracts/pool/src/lib.rs:550). The Stellar CLI JSON-encodes 64+ bit integers as quoted strings to avoid JS precision loss, unlike get_next_index's plain u32 output. The comparison was failing every run with expected 10000000, got "10000000" (quotes included) since this test never actually executed in CI before dev branch runs were enabled (Dshield-xyz#52). * docs: add api route request/response contracts (Dshield-xyz#39) * chore: add husky + lint-staged pre-commit hook for frontend (Dshield-xyz#40) - Add husky ^9.1.7 and lint-staged ^15.5.2 to frontend/package.json devDependencies - Add prepare script so pnpm install auto-installs the git hook - Configure lint-staged to run eslint --fix on staged src/**/*.{ts,tsx} files - Add frontend/.husky/pre-commit hook that runs pnpm lint-staged - Add CONTRIBUTING.md (absent from dev branch) with husky setup documented: one-time setup note after pnpm install step, updated step 5 to mention the hook runs automatically on commit Closes Dshield-xyz#25 * docs: add CODEOWNERS file (Dshield-xyz#41) * docs(security): document rate limiter single-instance limitation (Dshield-xyz#42) - Add 'Deployment Limitations' section to SECURITY.md with a dedicated 'Rate Limiter — Single-Instance Only' subsection that explains: - The in-memory, per-process nature of checkRateLimit - Why multi-instance deployments (load balancer, HPA) get no real protection - Upgrade path: Upstash Redis, self-hosted Redis, or Vercel KV - Add a⚠️ callout to the README.md Security Model section linking to the new SECURITY.md anchor for the full upgrade path Closes Dshield-xyz#16 * docs: replace the ASCII architecture diagram with a rendered Mermaid diagram Dshield-xyz#51 (Dshield-xyz#47) Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions (Dshield-xyz#50) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions Covers: nullifier, commitment, Merkle root/tree, Merkle inclusion proof, ZKP, zkSNARK, UltraHonk, Noir, Barretenberg, verification key, Poseidon2, keccak transform, BN254, selective disclosure, recipient binding, note, client-side prover, Stellar, Soroban, relayer, shielded pool, SAC, Freighter. Linked from README.md (new 'New to ZK or Stellar?' section near top + glossary link in Contributing paragraph) and CONTRIBUTING.md (callout block after intro + entry in 'Where things live' list). All 204 tests pass (107 Rust/Soroban + 97 frontend Vitest). --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> * fix(frontend): pin sharp past next's declared range to close new libvips CVE (Dshield-xyz#54) pnpm audit --prod --audit-level=moderate started failing again with a fresh advisory (GHSA-f88m-g3jw-g9cj, libvips CVEs in sharp <0.35.0). next@16.2.9 declares sharp as ^0.34.5, which under semver caret rules for 0.x versions excludes the patched 0.35.x line entirely, so pnpm was resolving the vulnerable version by default. Overrode to ^0.35.3. Verified: pnpm audit exits 0 (only the pre-documented elliptic advisory remains), pnpm build succeeds (exercises sharp via /icon.png generation), pnpm test (97/97) and pnpm lint pass. * docs: add pull request template (Dshield-xyz#46) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * docs: add pull request template with required sections - Added Why section (CONTRIBUTING.md requirement: describe why, not just what) - Renamed Testing to Testing done for clarity - Added Screenshot / recording (required) section - Added Related issue section with Closes # placeholder - Replaced Area section with Why to match issue Dshield-xyz#41 acceptance criteria - Replaced Breaking changes section with Screenshot/recording requirement --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * chore: add documented frontend/.env.local.example template and update guides (Dshield-xyz#48) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * chore: add documented frontend/.env.local.example template and update guides * docs: add CHANGELOG.md and update contributor guidelines Dshield-xyz#6 --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * tests: add an axe-core accessibility check to CI (Dshield-xyz#44) * wip: add axe-core a11y regression tests (pnpm-lock.yaml pending install) * fix: correct file input label and fix broken tag-input in NoteImport * ci: retrigger checks --------- Co-authored-by: YerimahOfTimes <yerimahjr@gmail.com> Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * Fix mobile layout issues at 375px and 768px breakpoints (Dshield-xyz#45) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * feat: enhanced mobile responsiveness --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * Fix/57 get commitments pagination (Dshield-xyz#72) * contracts: add paginated get_commitments_page view get_commitments() reads every leaf in one invocation and has no bound other than MAX_LEAVES (2^20), so it will exceed Soroban's per-transaction CPU/footprint limits once a pool grows enough, making client-side tree reconstruction unbuildable. get_commitments_page(start, limit) returns a bounded, on-chain-capped (MAX_PAGE_SIZE = 100) range instead. Covers: a page landing exactly on next_index, an out-of-range start, and a limit above the enforced max. Refs Dshield-xyz#57 * frontend: page through get_commitments_page for tree reconstruction fetchCommitmentsFromChain (used by both the withdraw flow and the compliance report) now pages through the pool contract's new get_commitments_page view instead of calling the unbounded get_commitments(), so client-side Merkle tree reconstruction keeps working as a pool grows past what a single get_commitments() call can return. Any page-call failure returns null rather than a partial list, since a truncated commitment set would silently reconstruct the wrong root. Refs Dshield-xyz#57 * docs: describe paginated get_commitments_page in Security Model Adds a fourth Security Model property documenting trustless tree reconstruction via get_commitments_page and its on-chain MAX_PAGE_SIZE ceiling, plus a CHANGELOG entry. Refs Dshield-xyz#57 * perf: move client-side proof generation off the main thread (Dshield-xyz#71) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * perf: extract proof generation into a worker-ready core module Split prover.ts's Noir.execute/UltraHonkBackend.generateProof logic into prover-core.ts (a pure async function with progress hooks) plus a new prover.worker.ts Web Worker entry point that runs it off the main thread. Neither is wired up to the public API yet — that's the next commit. * perf: dispatch proof generation to a Web Worker prover.ts now posts circuit + inputs to prover.worker.ts and resolves once the worker replies, forwarding progress updates ("executing" / "proving") via an optional onProgress callback. Falls back to the inline core function when Worker isn't available (SSR, unit tests), so behavior is unchanged outside the browser. Fixes Dshield-xyz#26: proof generation (Noir witness execution + UltraHonk proving) no longer runs on the main thread, so the UI stays responsive — scrollable, spinner animating — for the ~1 minute a deposit/withdraw/compliance proof can take. * test: cover prover.ts input mapping and progress reporting Exercises the inline fallback path (no Worker global in the test environment) with mocked Noir/UltraHonkBackend: verifies hex-prefixing of note fields, executing/proving progress order, and that the backend is destroyed even when proving throws. * feat(withdraw): show which proving stage is running Surfaces the worker's executing/proving progress as a finer-grained label under the existing spinner during the "generating_proof" step, so users get feedback for the full duration of proof generation rather than a single static message. --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * feat: add persistent "download all notes" backup action (Dshield-xyz#73) * feat: cap deposit_batch size and validate deposit_amount > 0 in constructor (Dshield-xyz#76) Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * security: compliance contract admin rotation + events for set_pools/set_disclosure_vk (Dshield-xyz#77) * Feature/history csv json export (Dshield-xyz#75) * feat(frontend): add CSV/JSON formatters for activity history Adds formatActivityCsv/formatActivityJson to lib/report.ts, alongside a shared ActivityItem type, so the history page's activity feed can be exported as a portable file for auditors/regulators. Column/field list is documented inline above the formatters. * test(frontend): cover CSV/JSON activity export formatting Checks header/row shape, blank amount/pool fields on compliance rows, CSV comma-escaping, and JSON round-tripping. * feat(frontend): add Export CSV/JSON action to History page Wires the new formatters into the history page: an Export row (styled like the compliance page's download link) sits above the activity list and downloads whatever the active filter shows. Export always covers the full filtered set, not just the rows the infinite-scroll pager has revealed so far — pagination is a rendering optimization, not a data window. Closes Dshield-xyz#13 * docs: log CSV/JSON history export in CHANGELOG --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * fix: ci fix * fix: ci fix * A11y/deposit withdraw compliance audit (Dshield-xyz#80) * a11y: add aria labels and semantic HTML to Input component * a11y: enhance ProgressSteps with semantic markup and aria attributes * a11y: improve StatusMessage component with roles and live region support * a11y: add role and aria attributes to Toast notifications * a11y: refactor deposit page with semantic HTML and improved accessibility labels * a11y: enhance compliance page with fieldsets, legends, and improved accessibility * Tests/21 double spend recipient mismatch named tests (Dshield-xyz#85) * test(pool): add named recipient-mismatch rejection test test_withdraw_to_different_recipient_than_proof_rejected builds public inputs carrying the genuine recipient hash of account A, then submits the withdrawal with account B as the payout address, asserting RecipientMismatch. This is the front-running redirect case: unlike the existing test_withdraw_recipient_mismatch_rejected, which uses a filler hash, the proof here is bound to a real, different account. * test(pool): add named double-spend replay rejection test test_replaying_consumed_nullifier_returns_nullifier_used replays a withdrawal proof whose nullifier has already been consumed and asserts NullifierUsed. It first confirms the same proof is not rejected on the nullifier before the spend, so the rejection is attributable to the replay rather than an unrelated check. * docs(readme): cite double-spend and recipient-binding tests by name The Security Model section named the tests locking hash consistency but not the ones covering nullifier consumption or recipient binding, both of which it claimed were covered by tests. Cite them by name so the claim is traceable to the tests that enforce it. * Feat/domain separation poseidon2 (Dshield-xyz#82) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * sec remove o the public X share option for note-bearing withdrawal links (Dshield-xyz#74) * fix: await clipboard write and surface error instead of false Copied! (closes Dshield-xyz#68) (Dshield-xyz#70) * Feature: deposit confirmation (Dshield-xyz#56) * feat: add threshold disclosure UI and integration * Add explicit amount and fee confirmation before deposit signing --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * Chore/add env example 28 (Dshield-xyz#51) * chore: add documented frontend/.env.local.example template and update guides * docs: add CHANGELOG.md and update contributor guidelines Dshield-xyz#6 * fix(ci): trigger CI on dev branch, not just main (Dshield-xyz#52) All PRs are now required to target dev instead of main, but the workflow only ran on push/pull_request to main. As a result every open PR against dev has "no checks reported" and nothing gates merges into dev. * fix(frontend): pin axios and bump protobufjs override to close audit findings (Dshield-xyz#53) * fix(frontend): pin axios and bump protobufjs override to close audit findings pnpm audit --prod --audit-level=moderate has been failing CI's Frontend job (once CI actually ran against dev, see Dshield-xyz#52) with 12 findings: - axios <1.18.0 resolved at three different versions transitively via @creit.tech/stellar-wallets-kit's wallet-connector chain (cdp-sdk, stellar-sdk). Pinned to ^1.18.1, which was already resolving elsewhere in the tree via @stellar/stellar-sdk, so no new major version is introduced. - protobufjs's existing override (^7.6.3) predates GHSA-j3f2-48v5-ccww (fixed in 7.6.5); bumped the pin to ^7.6.5, same patch-only policy already used for this override. Verified: pnpm audit --prod --audit-level=moderate now exits 0 (only the pre-existing, already-documented unpatched elliptic advisory remains), and pnpm test / pnpm lint / pnpm build all still pass. * fix(e2e): strip JSON string quoting from i128 CLI output before comparing get_deposit_amount returns i128 (contracts/pool/src/lib.rs:550). The Stellar CLI JSON-encodes 64+ bit integers as quoted strings to avoid JS precision loss, unlike get_next_index's plain u32 output. The comparison was failing every run with expected 10000000, got "10000000" (quotes included) since this test never actually executed in CI before dev branch runs were enabled (Dshield-xyz#52). * docs: add api route request/response contracts (Dshield-xyz#39) * chore: add husky + lint-staged pre-commit hook for frontend (Dshield-xyz#40) - Add husky ^9.1.7 and lint-staged ^15.5.2 to frontend/package.json devDependencies - Add prepare script so pnpm install auto-installs the git hook - Configure lint-staged to run eslint --fix on staged src/**/*.{ts,tsx} files - Add frontend/.husky/pre-commit hook that runs pnpm lint-staged - Add CONTRIBUTING.md (absent from dev branch) with husky setup documented: one-time setup note after pnpm install step, updated step 5 to mention the hook runs automatically on commit Closes Dshield-xyz#25 * docs: add CODEOWNERS file (Dshield-xyz#41) * docs(security): document rate limiter single-instance limitation (Dshield-xyz#42) - Add 'Deployment Limitations' section to SECURITY.md with a dedicated 'Rate Limiter — Single-Instance Only' subsection that explains: - The in-memory, per-process nature of checkRateLimit - Why multi-instance deployments (load balancer, HPA) get no real protection - Upgrade path: Upstash Redis, self-hosted Redis, or Vercel KV - Add a⚠️ callout to the README.md Security Model section linking to the new SECURITY.md anchor for the full upgrade path Closes Dshield-xyz#16 * docs: replace the ASCII architecture diagram with a rendered Mermaid diagram Dshield-xyz#51 (Dshield-xyz#47) Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions (Dshield-xyz#50) * Add community templates and documentation - Add GitHub issue templates (bug report, feature request, config) - Add pull request template - Add CODE_OF_CONDUCT.md for community standards - Add CONTRIBUTING.md with contribution guidelines - Add SECURITY.md for security policy - Update README.md - Remove outdated PR.md * chore: reports md * docs: require PRs target dev branch, not main Issue templates, PR template, and CONTRIBUTING.md now consistently point contributors at `dev` as the base/target branch. * docs: add GLOSSARY.md with plain-English ZK and Soroban term definitions Covers: nullifier, commitment, Merkle root/tree, Merkle inclusion proof, ZKP, zkSNARK, UltraHonk, Noir, Barretenberg, verification key, Poseidon2, keccak transform, BN254, selective disclosure, recipient binding, note, client-side prover, Stellar, Soroban, relayer, shielded pool, SAC, Freighter. Linked from README.md (new 'New to ZK or Stellar?' section near top + glossary link in Contributing paragraph) and CONTRIBUTING.md (callout block after intro + entry in 'Where things live' list). All 204 tests pass (107 Rust/Soroban + 97 frontend Vitest). --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: Emelie-Dev <120989028+Emelie-Dev@users.noreply.github.com> Co-authored-by: benzy018 <akobezjr@gmail.com> Co-authored-by: Fadila Bala Usman <fadilausman705@gmail.com> Co-authored-by: Joyful Analyst <joyonyegbuna2020@gmail.com> Co-authored-by: Joey <62303285+Mona-i@users.noreply.github.com> Co-authored-by: Shantel peters. <Elizabethogunrinde2015@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> * feat: add threshold disclosure UI and integration (Dshield-xyz#55) * feat(circuits): add domain separation to Poseidon2 leaf/node/KYC/nullifier hashing - Add domain-separated hash functions using distinct tags: - LEAF_DOMAIN (0x4c454146) for leaf hashes - KYC_DOMAIN (0x4b5943) for KYC preimage hashes - NULLIFIER_DOMAIN (0x4e554c4c) for nullifier hashes - Update hash_leaf() to use hash3(LEAF_DOMAIN, nullifier, secret) - Update hash_kyc() to use hash3(KYC_DOMAIN, kyc_preimage, 0) - Update hash_nullifier() in shielded_pool to use hash3(NULLIFIER_DOMAIN, nullifier, 0) - Internal nodes continue to use undifferentiated hash2(left, right) This prevents the classic Merkle tree collision anti-pattern where commitments stored on-chain via get_commitments() could be confused with internal nodes. Each domain tag ensures cryptographic separation between different hash contexts. * feat(frontend): update Poseidon2 hashing for domain separation - Add domain separation constants matching circuit definitions: - LEAF_DOMAIN, KYC_DOMAIN, NULLIFIER_DOMAIN - Update computeCommitment() to compute domain-separated leaf hashes - Update computeNullifierHash() to compute domain-separated nullifier hashes - Update test expected values for new domain-separated hash outputs Note: Frontend approximates hash3 via sequential hash2 calls to work with existing hasher circuit. A future optimization could use a native Poseidon2 library for true hash3 computation, but current approach maintains consistency with circuit behavior. * Fix syntax error in deposit page after merge Remove extra closing brace that broke copyText function structure. --------- Co-authored-by: tech-adrian <a.emmanuelcaxton@gmail.com> Co-authored-by: Darey Olowo <132012676+Olowodarey@users.noreply.github.com> Co-authored-by: SpiliosDmk <150211937+SpiliosDimakopoulos@users.noreply.github.com> Co-authored-by: Ugooweb <ugooweb@gmail.com> Co-authored-by: Sanusi Shafii <sanusishafii989@gmail.com> Co-authored-by: Emelie-Dev <120989028+Emelie-Dev@users.noreply.github.com> Co-authored-by: benzy018 <akobezjr@gmail.com> Co-authored-by: Fadila Bala Usman <fadilausman705@gmail.com> Co-authored-by: Joyful Analyst <joyonyegbuna2020@gmail.com> Co-authored-by: Joey <62303285+Mona-i@users.noreply.github.com> Co-authored-by: Shantel peters. <Elizabethogunrinde2015@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> * perf: lazy-load circuit artifacts and document bundle size (Dshield-xyz#86) - Convert static top-level circuit JSON imports in prover.ts to dynamic import() calls so each artifact is only fetched when the matching prove* function is first called (not on initial page load). Named webpack chunk hints (circuit-shielded-pool, circuit-compliance, circuit-disclosure) are added to preserve readable chunk names. - Move @noir-lang/noir_js and @aztec/bb.js imports inside generateProof() so the heavy barretenberg WASM is also deferred until proof generation. - Add @next/bundle-analyzer 16.2.12 to devDependencies; configure next.config.ts to enable it when ANALYZE=true. - Add 'analyze' script to package.json (ANALYZE=true next build). - Add frontend/BUNDLE_ANALYSIS.md documenting circuit artifact sizes (~9.7-10.8 KB each, 35.2 KB total), ZK runtime sizes, production build chunk sizes, per-page loading strategy, and instructions for re-running the analysis. - Add frontend/src/lib/prover.test.ts with 34 unit tests covering the public API, ProofResult encoding, per-circuit bytecode routing, keccak: true flag, backend.destroy in finally, all input field mappings for all three circuits, and ensureHex behaviour. All 131 frontend tests pass. Closes Dshield-xyz#27 * add test snapshots to gitignore * fix(circuits): regenerate Prover.toml fixtures for domain-separated Poseidon2 PR Dshield-xyz#82 introduced domain separation (LEAF_DOMAIN, NULLIFIER_DOMAIN, KYC_DOMAIN) and moved the leaf/nullifier/KYC hashes to 3-input Poseidon2, but the Prover.toml fixtures kept their pre-domain-separation values. All three circuits failed to solve: shielded_pool assert(nf == nullifier_hash) compliance assert(computed_kyc == kyc_hash) disclosure assert(computed_kyc == kyc_hash) Recomputed root, nullifier_hash and kyc_hash with the circuits' own hash functions against poseidon v0.2.0, rather than hand-writing constants. The same stale values were hardcoded a second time in tests/e2e.sh. Also remove the stale witness/proof before `nargo execute` in e2e.sh. The script ran `bb prove`/`bb verify` unconditionally after a failed execute, so they succeeded against the *previous* run's artifacts and reported "Proof verified locally" for inputs that never solved — which is how this fixture breakage stayed green in CI. All three circuits now compile, execute, prove and verify. * fix(frontend): repair broken pnpm-lock.yaml entry for @next/bundle-analyzer The importer referenced @next/bundle-analyzer@16.2.12 with no matching packages:/snapshots: record — a badly resolved merge conflict from Dshield-xyz#86. `pnpm install --frozen-lockfile`, which CI uses, failed outright: ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY: Broken lockfile: no entry for '@next/bundle-analyzer@16.2.12(bufferutil@4.1.0)(utf-8-validate@6.0.6)' This blocked both the lint and frontend jobs before any check ran. * fix(deposit): render the confirmation modal so deposits can be signed ConfirmDeposit was defined but never rendered, so signAndSubmit was unreachable: handleDeposit built and staged a transaction that had no path to the wallet. Deposits silently did nothing. Rendering it surfaced three further defects: - ConfirmDeposit was created during render, so React remounted it on every parent update (react-hooks/static-components). Hoisted to module scope as a props-driven component. - The modal read `totalNotes`, derived from `customAmount`, which handleDeposit clears in its `finally` before the user confirms — a 5-note deposit displayed the 1-note total. Capture the count at build time in `confirmNoteCount` instead. - Cancel only did setShowConfirm(false), leaving pendingTx and the pending notes staged, so a cancelled deposit's transaction could be submitted by a later confirmation. Cancel now clears both. Also fixes two type errors that blocked `next build`: - `(totalNotes * selectedTier?.amount ?? 0)` parses as `(a * b) ?? 0`, so the fallback never applied and undefined could reach the multiply. - ThresholdDisclosure imported generateThresholdProof, removed in Dshield-xyz#71. Its replacement, proveDisclosure, needs the auditor key, KYC preimage/hash, merkle root and path — none derivable from a ShieldedNote — so this is left as an explicit throw with a note on what wiring it up requires, rather than a rename over invented ZK inputs. The component is currently rendered nowhere. Replaces three `(window as any).__pendingNotes` casts, which failed no-explicit-any, with a typed useRef. Adds **/test_snapshots/ to .gitignore and untracks the generated Soroban snapshot files. --------- Co-authored-by: Emelie-Dev <120989028+Emelie-Dev@users.noreply.github.com> Co-authored-by: benzy018 <akobezjr@gmail.com> Co-authored-by: Fadila Bala Usman <fadilausman705@gmail.com> Co-authored-by: Joyful Analyst <joyonyegbuna2020@gmail.com> Co-authored-by: Joey <62303285+Mona-i@users.noreply.github.com> Co-authored-by: Shantel peters. <Elizabethogunrinde2015@gmail.com> Co-authored-by: ShantelPeters <shantelpeters@example.com> Co-authored-by: Sanusi Shafii <sanusishafii989@gmail.com> Co-authored-by: Yerimahjr <yerimahjr2@gmail.com> Co-authored-by: YerimahOfTimes <yerimahjr@gmail.com> Co-authored-by: Kendall Guzman Leiva <kendalltoto@gmail.com> Co-authored-by: Strangecloud dev <strngecloud.iv@gmail.com> Co-authored-by: caxton strange <166155946+caxtonacollins@users.noreply.github.com> Co-authored-by: Maheswaran Velmurugan <78631234+soloking1412@users.noreply.github.com> Co-authored-by: Bhenzdisma <Bhenzdizma@gmail.com> Co-authored-by: Nathan <nkigbu@yahoo.com> Co-authored-by: Osagie Cynthia <76167825+OsagieCynthia@users.noreply.github.com> Co-authored-by: JaynomYaks <jenomyaks@gmail.com> Co-authored-by: Samson <aboisamson123@gmail.com> Co-authored-by: Ochigbo <ochigbo477@gmail.com> Co-authored-by: Darey Olowo <132012676+Olowodarey@users.noreply.github.com> Co-authored-by: SpiliosDmk <150211937+SpiliosDimakopoulos@users.noreply.github.com> Co-authored-by: Ugooweb <ugooweb@gmail.com>
The compliance page had unbalanced JSX that left PageShell unclosed and broke brace matching through the end of the file, so the project did not type-check at HEAD. Re-balance the results.map block and its accordion markup, restoring the key and onClick bindings on the note buttons. Drop the unused ThresholdDisclosure import and "threshold" mode, and remove the dead ConfirmDeposit component from the deposit page.
Contributor
|
please resolve conflicts and fix ci |
Author
|
Hello man, apologise for the delay, I have resolved the conflicts |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Area
Testing
just testpasses (contracts + frontend)just test-e2epasses, if this touches deposit/withdraw/compliance flowsfrontend/**/circuits/*.jsonartifactspnpm lint/pnpm buildpass, if this touchesfrontend/Breaking changes