Skip to content

fix(frontend): preserve rapid transaction filter updates - #907

Open
kongwen686 wants to merge 766 commits into
leojay-net:mainfrom
kongwen686:feat/transaction-filter-race
Open

fix(frontend): preserve rapid transaction filter updates#907
kongwen686 wants to merge 766 commits into
leojay-net:mainfrom
kongwen686:feat/transaction-filter-race

Conversation

@kongwen686

Copy link
Copy Markdown

Summary

  • remove the extra 50ms update throttle so debounce can merge rapid filter changes instead of dropping them
  • keep optimistic pending filter state intact across rapid toggles and keyboard category cycling
  • repair the existing hook test file and add regression coverage for the rapid update race

Closes #599

Validation

  • npm run test:unit -- src/hooks/useTransactionFilters.test.ts
  • npm run typecheck
  • npx prettier --check src/hooks/useTransactionFilters.ts src/hooks/useTransactionFilters.test.ts

Anthony-19 and others added 30 commits March 29, 2026 18:55
…-net#294, leojay-net#301

- fix(contract): emit event in set_operator for off-chain monitoring (leojay-net#390)
- feat(frontend): add CSV export to ReceiptDrawer with accessible button (leojay-net#391)
- feat(frontend): add Zod validation schemas for all API route inputs (leojay-net#294)
- fix(frontend): deduplicate chat history entries on page reload (leojay-net#301)

Changes:
- Added event emission in set_operator function with EVENT_VERSION
- Implemented CSV export functionality in ReceiptDrawer with proper escaping
- Created apiSchemas.ts with Zod schemas for create-recipient, initiate-transfer, and verify-account
- Updated all API routes to use Zod validation with structured error responses
- Added deduplicateSessions method to ChatHistoryManager
- Updated loadFromLocalStorage to deduplicate sessions on load
- Updated createNewSession to deduplicate before saving
- Added unit tests for deduplication logic
- Fixed duplicate section in ChatHistorySidebar

All tests passing, lint checks clean.
- Change error.errors to error.issues (correct Zod API)
- Fix TransactionAmountDisplay import (named export)
- Update CSV export to use correct TransactionHistoryEntry properties
- Remove duplicate imports in ReceiptDrawer
…196-187

feat: add split-view comparison, advanced search, and markdown hardening
…y-consent-toggle

feat(frontend): add telemetry consent toggle in user settings
…draft-messages

feat(frontend): persist chat drafts with 500ms debounce
…r-rate-limit-utility-module

test(lib): add unit tests for rateLimit utility
fix(contract): prevent ReceiptIndex from using persistent storage for…
…idation_bug

Fix: Admin Transfer Validation & Test Stability
Lynndabel and others added 26 commits April 25, 2026 21:03
…ontrast

feat(frontend): add accessible contrast to transaction filter chips
…t#521 leojay-net#522

feat(frontend): add auto-scroll behavior to TransactionAmountDisplay (leojay-net#522)
- Attach a containerRef to the wrapper div
- useEffect scrolls the element into view (smooth, nearest) whenever
  displayText changes, keeping the latest amount visible without manual
  scrolling
- Add two new unit tests: scroll on mount and scroll on displayText change

feat(frontend): add accessible color contrast telemetry to chatTelemetry (leojay-net#521)
- Add avatar_color_check to ChatEventName union
- Expose chatTelemetry.avatarColorCheck() public method that emits the
  new event with the payload enriched by withAccessibleAvatarContrast
  (contrast ratio, compliant flag, accessible text color)
- Add four unit tests covering compliant dark/light backgrounds, consent
  guard, and enriched payload shape

fix(frontend): resolve race condition in CCIPBridgeModal (leojay-net#520)
- Introduce transactionHashRef kept in sync with transactionHash state so
  pollTransferStatus always reads the latest hash without closing over a
  stale value
- Pass an abort signal object into each poll invocation; cleanup sets
  signal.aborted = true so in-flight async calls cannot mutate state after
  the modal closes or the effect re-runs
- Add two regression tests: no state update after modal closes mid-poll,
  and stale slow response does not overwrite a faster terminal response

docs: improve inline documentation for timelock role check (leojay-net#519)
- Add full JSDoc to queue_admin_action explaining the admin role check,
  timelock enforcement, arguments, return value, and error variants
- Add full JSDoc to execute_admin_action covering the role check rationale,
  off-by-one boundary semantics, arguments, and error variants
- Expand set_operator docs with a dedicated 'Role separation (timelock
  role check)' section explaining why admin/operator must stay separate,
  the two boundary checks (fix leojay-net#525), and all error variants

Closes leojay-net#519
Closes leojay-net#520
Closes leojay-net#521
Closes leojay-net#522
- Add integration test for MigrationCheckEvent emission in validate_withdrawal_quota
- Test verifies event is emitted when storage_version < ESCROW_STORAGE_VERSION
- Closes leojay-net#510
…ch-withdrawal

feat(contract): implement migration check for validate_withdrawal_quota
- Add Cmd/Ctrl+N for new chat
- Add Cmd/Ctrl+H for open history
- Add Cmd/Ctrl+B for open bridge modal
- Add Cmd/Ctrl+Shift+C for cancel request
- Add comprehensive unit tests for all keyboard shortcuts
- Ensure no regressions in existing functionality

Closes leojay-net#561
…rd-shortcuts

feat(frontend): add keyboard shortcuts to ChatInput.tsx
- Add smooth modal entrance/exit animations with backdrop blur
- Implement step-by-step slide transitions between form steps
- Add animated loading states, error messages, and success indicators
- Include beneficiary dropdown and save prompt animations
- Animate transfer timeline and status updates
- Use AnimatePresence for proper animation lifecycle management

Issue: leojay-net#556
…ortcuts

Feat/556 add framer-motion animation
…-527-multi-issue

fix(frontend): resolve race condition in useChat.ts (leojay-net#530)
…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
@kongwen686

kongwen686 commented May 17, 2026

Copy link
Copy Markdown
Author

Payment / contact note for bounty payout:

I am based in mainland China and Stripe onboarding may not be available for me. If this PR is accepted for the bounty, PayPal would be the preferred payout method: hooqee@126.com.

Contact email: chaoqiang.tian@gmail.com
EVM address: 0x225b4bC64E051827c069312f82fA590Ec9632209
Stellar address: GDYPL56JCCHD75ZB2I5Z4WEWZFRD24LEC62XQ2MBL34653XKO65LA
RTC/ClawRTC address: RTC02d8536941d636aee4012596afbcd8185e9f8283
Alipay: chaoqiang457963@126.com

Please let me know which payout route is supported.

@kongwen686

Copy link
Copy Markdown
Author

CI follow-up:

The latest CI failures appear unrelated to this useTransactionFilters change. I do not see useTransactionFilters.ts or useTransactionFilters.test.ts in the Build & Type Check failure list. The frontend job is failing on existing lint issues in untouched files such as BankDetailsModal.* tests, OfflineStatusBanner.test.tsx, chatTelemetry.test.ts, networkQueue.*, and other baseline files.

The Contract Tests job also fails in the existing stellar-contracts clippy baseline, including deprecated env.events().publish calls, unused imports, len_zero, irrefutable if let, absurd comparisons, and mismatched lifetime syntax warnings promoted to errors.

Local validation for this PR passes:

  • npm run test:unit -- src/hooks/useTransactionFilters.test.ts
  • npm run typecheck
  • npx prettier --check src/hooks/useTransactionFilters.ts src/hooks/useTransactionFilters.test.ts

@kongwen686
kongwen686 marked this pull request as ready for review May 17, 2026 17:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(frontend): resolve race condition in useTransactionFilters.ts