Feat/issues 706 707 710 713 - #1313
Merged
leojay-net merged 1016 commits intoJul 31, 2026
Merged
Conversation
…work-status-toast feat(frontend): add network status toast to AuditTable
- Add detailed Rustdoc comments for set_limit_max_cap, get_set_limit_max_cap, and SetLimitMaxCapEvent - Clarify that the global cap prevents future set_limit calls from exceeding the ceiling - Note that existing token limits are not retroactively reduced - Update FIAT_BRIDGE_README.md to include the new admin functions - Improve DataKey::SetLimitMaxCap documentation Closes leojay-net#552
…-limit-docs docs: improve inline documentation for maximum cap limit
- Resolved conflicts in .github/workflows/frontend.yml by merging CI steps - Resolved conflicts in dex_with_fiat_frontend/src/components/Message.tsx by consolidating imports and JSX - Resolved conflicts in dex_with_fiat_frontend/src/lib/env.ts by adding typeof process checks - Resolved conflicts in dex_with_fiat_frontend/src/lib/featureFlags.ts by adding typeof process checks and enableHaptics flag - Resolved conflicts in stellar-contracts/src/lib.rs by merging Error enum and function implementations - Resolved conflicts in stellar-contracts/src/test.rs by merging test imports and allowlist tests - Removed PULL_REQUEST_MESSAGE.md as it was deleted in main branch - All conflicts have been cleanly merged to preserve functionality from both branches
- Fixed React hooks rules violation in TransactionAmountDisplay.tsx by moving hooks before conditional returns - Removed unused variables and imports (sanitizeUrl, fadeInVariants, useCallback, isStatusLoading) - Fixed missing dependency in BankDetailsModal.tsx useCallback - Fixed stellar-contracts syntax errors (unclosed delimiters, merge conflict markers) - Removed duplicate error codes in Error enum that were causing compilation errors - Updated ESLint config to disable @typescript-eslint/no-explicit-any for test files - All CI workflows now pass: frontend type check, lint, build, and stellar-contracts build/tests
- Fixed remaining merge conflict markers in stellar-contracts/src/lib.rs and src/test.rs - Removed duplicate function definitions (accept_admin) with conflicting signatures - Added missing DataKey variants (MultisigProposal, Signers, Threshold) - Removed duplicate error codes from Error enum causing #[contracterror] macro failures - Updated ESLint config to disable @typescript-eslint/no-require-imports for test files - All CI workflows now pass: * Frontend: type check, lint, build * Smart contracts: build, tests, WASM compilation * Contract tests: all test suites execute successfully
…g-race-608 fix(frontend): resolve useFeatureFlag render race
…ation-612 fix(contract): validate set_limit boundaries
…uit-breaker-610 feat(contract): auto-reset circuit breaker on heartbeat
…ce criteria Closes leojay-net#451 Extends the 'applies CSS tokens for colors' test to assert that every raw Tailwind colour category called out in the issue acceptance criteria (bg-gray-*, bg-blue-*, bg-indigo-*, text-gray-*, border-blue-*, border-indigo-*, border-gray-*) is absent from the rendered HTML, ensuring the page exclusively uses CSS variable–backed theme utilities.
…ne error Closes leojay-net#577 Adds a saveNameError state so that when the user submits a beneficiary name longer than 50 characters, the Zod validation message is displayed inline next to the input (with role="alert") rather than only through a toast notification. Clears the error on every keystroke and on cancel. Adds two integration tests verifying the error appears and then clears when the input is corrected.
…variable tokens for WCAG-compliant contrast Closes leojay-net#578 Switches the banner's background, border, and text colours from hardcoded Tailwind red classes (bg-red-50 dark:bg-red-900/20, text-red-800 dark:text-red-200, etc.) to the design-system tokens --color-danger and --color-danger-soft. These tokens are defined for both light and dark themes in globals.css and guarantee a consistent, accessible contrast ratio in both modes. Also adds aria-hidden="true" to the two decorative icon wrappers (WifiOff and AlertTriangle) so screen readers rely solely on the adjacent text message, and adds aria-label="Offline status" to the banner element. Tests are extended to verify no raw Tailwind colour classes remain, that both icon wrappers are marked aria-hidden, and that the banner exposes an accessible label.
Closes leojay-net#602 Refactors checkAdmin into a useCallback so it can be called both on address change and from browser online/offline event listeners. When navigator.onLine is false at the time of the check, the component sets retryQueued=true and renders an accessible offline banner instead of an error screen. A single 'online' event listener flushes the queue and retries the check automatically — no user interaction required. Also replaces the remaining hardcoded Tailwind colour classes in the component's loading/error screens with CSS-variable tokens (bg-(--color-surface), var(--color-danger), var(--color-text-primary), theme-primary-button) so the guard respects the design system. Three new tests cover: offline banner shown when navigator.onLine=false, automatic retry grants access on 'online' event, and offline event does not revoke already-granted access.
…ssibility-validation-offline-improvements feat(frontend): admin CSS tokens, BankDetailsModal Zod inline error, OfflineStatusBanner a11y contrast, AdminGuard offline retry queue
…query events and docs
…e directly, fixing stale count on mark-all-read (leojay-net#1008)
…995-1008 Issues 984 989 995 1008
…and verify set_limit zero-rejection
fix: add nonce cleanup job, strict TypeScript, vendor ownership checks, and resilient health check
test(frontend): cover idempotent action deduplication
…request_withdrawal invariants Implements four assigned issues: - chatTelemetry: reduced-motion-aware, intent-weighted framer-motion variants (leojay-net#674) - useTransactionFilters: dark-mode fallback for filter chip tones (leojay-net#671) - chatStateMachine: debounced event dispatcher that collapses rapid event bursts (leojay-net#588) - stellar-contracts: invariant tests for request_withdrawal (leojay-net#572) The contract crate did not compile on main due to a pre-existing botched merge: math.rs had duplicated mul_div_floor/mul_div_ceil and was missing the checked_mul_div_* helpers that lib.rs already calls, and test.rs referenced a renamed binding. Minimal fixes restore the intended API so the new invariant tests compile and the full suite passes. Closes leojay-net#674 Closes leojay-net#671 Closes leojay-net#588 Closes leojay-net#572
…588-671-674 feat: telemetry motion, dark-mode chip fallback, debounced dispatch, request_withdrawal invariants
…1017-1023-1026-1037-contract-validation Xeladev4/fix/issues 1017 1023 1026 1037 contract validation
…seChat.ts
- Connects to /api/payment-status/stream via EventSource on mount
- Falls back to 3s polling against /api/transfer-status/{reference}
when EventSource is unavailable or the SSE connection drops
- Cleans up both the EventSource and polling interval on unmount
- Resolves merge conflict in markMessageFailed and analyzeAndRespond
- Exposes transactionStatus from the hook return value
Closes leojay-net#1012
…nsaction-status feat(frontend): add transaction status polling with SSE fallback in useChat.ts
…heme tokens - Export stellarAddressSchema and StellarAddress type for reuse across the codebase - Replace hardcoded bg-gray-900/text-red-500/bg-blue-600 with CSS design tokens (theme-app, theme-primary-button, --color-danger, --color-border, --color-primary) - Expand unit tests: schema shape tests + getAdmin error path coverage Closes leojay-net#706
- Change is_denied to return Result<bool, Error> for safe error propagation - Guard against DeniedCount reaching u64::MAX (returns Error::Overflow) - Replace bare idx += 1 in get_denied_addresses with checked_add to prevent iterator wrapping at u64::MAX boundary - Add IsDeniedCheckedEvent emitted on every is_denied call for observability - Add integration tests: event emission, overflow-safe path, iteration safety Closes leojay-net#707
- Emit ReceiptOobEvent when get_receipt_by_index triggers the out-of-bounds circuit breaker, providing observability for invalid index access attempts - Add integration tests covering: event emission on OOB access, u64::MAX edge case, and empty store circuit breaker firing Closes leojay-net#710
- Separate NoFeesToWithdraw (zero accrued balance) from FeeWithdrawalExceedsBalance (amount > available fees), using the previously unused FeeWithdrawalExceedsBalance error enum variant - Add require! checks: current <= 0 → NoFeesToWithdraw, amount > current → FeeWithdrawalExceedsBalance - Update existing test to expect FeeWithdrawalExceedsBalance - Add edge case tests: zero accrued, exact-balance boundary, zero amount Closes leojay-net#713
leojay-net#1176 - AdminGuard ARIA live-region announcements: - Add role="status" and aria-live="polite" to loading state - Add role="alert" and aria-live="assertive" to error messages - Add descriptive aria-labels to spinner, error icon, and retry button - Comprehensive accessibility tests for all ARIA attributes leojay-net#1175 - useMediaQuery test coverage: - Initial state tests: SSR fallback, matches/non-matches - Update tests: media query changes, query prop re-registration - Cleanup tests: event listener removal on unmount and rerenders - Branch coverage: multiple queries, complex media query strings leojay-net#1173 - useIdempotentAction test coverage: - Initial state, execute async with resolve/reject paths - Cooldown/throttling enforcement and expiry - In-flight action deduplication by actionName - Reset functionality clearing state and cooldown - Unmount cleanup preventing state updates after unmount - Error propagation and cleanup after rejection Closes leojay-net#1176 Closes leojay-net#1175 Closes leojay-net#1173
|
@emwulrd Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
…k on all conflicts
…licts, keep our branch work
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
Resolves open issues across the frontend and Soroban smart contract: Zod schema improvements, overflow prevention, circuit breaker events, edge case validation, ARIA accessibility, and comprehensive hook test coverage.
Changes
#1176 — AdminGuard ARIA live-region announcements
role="status"andaria-live="polite"to loading staterole="alert"andaria-live="assertive"to error messagesaria-labelattributes to spinner, error icon, and retry button#1175 — useMediaQuery test coverage
#1173 — useIdempotentAction test coverage
actionNameTesting
All changes include comprehensive unit and integration tests:
pnpm test:unitpasses with expanded coveragecargo testvalidates all new guard logic and error pathsCloses
Closes #1176
Closes #1175
Closes #1173
Closes #1172