-
Notifications
You must be signed in to change notification settings - Fork 18
Dev to Master #2781
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
TaprootFreak
wants to merge
20
commits into
master
Choose a base branch
from
develop
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Dev to Master #2781
Conversation
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
- KYC Level 20 is now sufficient for amounts up to 1000 CHF - KYC Level 50 is still required for amounts above 1000 CHF - EUR amounts are converted to CHF for the limit check - Uses existing Config.tradingLimits.monthlyDefaultWoKyc threshold
…ion (#2772) - KYC Level 20 is now sufficient for amounts up to 1000 CHF - KYC Level 50 is still required for amounts above 1000 CHF - EUR amounts are converted to CHF for the limit check - RealUnit registration now sets KYC Level 20 when completed - Added @ispositive validator to prevent zero/negative amounts
After signing in via email link, users are now redirected to /account instead of /kyc, which provides a better default landing page for authenticated users without specific KYC context.
* Add vIBAN search to compliance endpoint - Add VIBAN to ComplianceSearchType enum - Extend support service to search in VirtualIban table - Add search in BankTx.virtualIban column - Include unassigned BankTx for vIBAN results * [NOTASK] Refactoring --------- Co-authored-by: Yannick1712 <52333989+Yannick1712@users.noreply.github.com>
Currently, emails display the URL link first, followed by the button. This creates a poor user experience as most users can see buttons, making the link redundant for the majority. Changes: - Reorder email content to show button first, then link - Update all translations (de/en/pt) to reflect new order - Add "or" prefix to link text to indicate it's a fallback option Affected emails: - Login email (auth.service.ts) - KYC reminder, failed, and missing data emails (kyc-notification.service.ts) - Account merge request email (account-merge.service.ts) This improves UX by prioritizing the primary action (button) and making the plain-text link available only for clients that don't support buttons.
…ays (#2779) * Add Liechtenstein bank holidays 2026 and prevent fiat output on holidays - Add liechtenstein-bank-holiday.config.ts with 2026 holidays - Update fiat-output-job.service to check for LI/CH bank holidays - Block isReadyDate on bank holidays and day before after 16:00 * Restrict bank holiday check to LI IBANs only - Bank holiday blocking now only applies to Liechtenstein IBANs - CH and other IBANs are not affected by holiday checks - Remove unused isBankHoliday import * Restrict bank holiday check to LiqManagement type only - Bank holiday blocking now only applies to FiatOutputs with type LiqManagement - Other types (BuyFiat, BuyCryptoFail, etc.) are not affected * Improve bank holiday check implementation - Add verbose logging when FiatOutput is blocked due to bank holiday - Use early return (continue) for better readability - Only calculate isAfter16 when actually needed (performance) - Clearer variable scoping and logic flow * Address PR review comments - Remove unused getLiechtensteinBankHolidayInfoBanner function and import - Simplify holiday check: combine conditions with || operator - Remove unnecessary intermediate variables (isLiIban, isLiqManagement, etc.) - Use single logger.verbose message for bank holiday blocking * [NOTASK] Refactoring --------- Co-authored-by: Yannick1712 <52333989+Yannick1712@users.noreply.github.com>
…lation (#2785) Two bugs were causing 'Failed to create deposit transaction: invalid address or ENS name': 1. In toPaymentInfoDto(): The transactionRequest only contained user: { id: userId } without the address field. Fixed by explicitly passing user.address. 2. In depositTx controller endpoint: getById() did not load the deposit relation, so route.deposit was undefined. Fixed by adding relations: { deposit: true }. Also added validation to throw clear errors if address or deposit is missing.
- Add npm cache to GitHub Actions workflows (api-pr, api-dev, api-prd) for faster CI builds - Add new npm scripts: - type-check: Run tsc --noEmit for type validation without build - format:check: Check formatting without modifying files - Add forceConsistentCasingInFileNames to tsconfig.json - Upgrade @typescript-eslint/no-floating-promises from warn to error
Enable users to sell and swap tokens without holding ETH for gas. The backend relayer covers gas costs through MetaMask's delegation contract. Changes: - Add EIP7702DelegationService for gasless transaction preparation - Add EIP-7702 delegation DTOs for frontend communication - Add DELEGATION_TRANSFER PayInType enum value - Update Sell/Swap services to detect zero-balance users - Add depositTx endpoint to Swap controller (parity with Sell) - Add ?includeTx parameter to Swap for optional TX data - Improve gas estimation with fallback for EIP-7702 delegated addresses - Use StaticJsonRpcProvider for better performance Contracts: - MetaMask Delegator: 0x63c0c19a282a1b52b07dd5a65b58948a07dae32b - DelegationManager: 0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3
Add isAvailable() check to PayInBitcoinService to prevent errors when Bitcoin node is not configured (e.g., local development). The BitcoinStrategy cron job and unconfirmed UTXO processing now gracefully skip when the service is unavailable.
Return early from checkTransactions() if no Olky bank is found in the database, preventing null pointer errors in local development.
- FrankencoinService: Skip processLogInfo when xchf contract not configured - DEuroService: Skip processLogInfo when graphUrl not configured - PaymentLinkFeeService: Skip updateFees in local environment Prevents errors in local development when external services are not configured.
Log a warning when config is missing instead of silently skipping or throwing errors. Simple and consistent approach. Affected services: - BitcoinStrategy: warns if Bitcoin node not configured - PayInService: warns if Bitcoin service unavailable - BankTxService: warns if Olky bank not found - FrankencoinService: warns if xchf contract not configured - DEuroService: warns if graphUrl not configured
* feat: create different exceptions for buy endpoint. * chore: status codes. * chore: comments.
* Log missing config warnings only once Prevent log spam by tracking if warning was already logged. Affects high-frequency cron jobs: - BitcoinStrategy (every second) - BankTxService (every 30 seconds) * Skip services gracefully when dependencies are unavailable - Add isAvailable() check to CheckoutService - Add availability check to CheckoutObserver with warning-once pattern - Add availability check to FiatPayInSyncService with warning-once pattern - Change ExchangeTxService to warn-once on sync failures - Add null check for client in TransactionHelper.getNetworkStartFee - Add null check for client in LogJobService.getAssetLog - Fix PaymentObserver to use optional chaining for outputDate * Add missing null checks for graceful degradation - Add null checks for client and targetAddress in PaymentBalanceService - Also check for coin existence before setting balance - Extend CheckoutService.isAvailable() to also check Config.checkout.entityId * Make warning-once pattern consistent across all services - Add warning-once with Set<Blockchain> to PaymentBalanceService - Add warning-once with Set<Blockchain> to LogJobService - Add warning-once with Set<Blockchain> to TransactionHelper All services now consistently log warnings only once when blockchain clients are not configured. * Add readonly to syncWarningsLogged Set for consistency * Add missing blank line after early return for consistency
* fix(swap): correct misleading includeTx default value The controller always passes an explicit boolean via `includeTx === 'true'`, so the service default was never used. Change from `true` to `false` to accurately reflect the actual behavior (depositTx is only included when explicitly requested via ?includeTx=true). * fix(custody): pass explicit includeTx=false to swap service Make custody order swap calls explicit about not including depositTx, matching the pattern used for sell orders. This ensures the default value change in swap.service.ts has no functional impact. Affected calls: - CustodyOrderType.SWAP - CustodyOrderType.SEND - CustodyOrderType.RECEIVE
Replace timing-based test with Promise-based synchronization. The original test used setTimeout without delay causing race conditions. The new test uses explicit Promise signaling for deterministic behavior.
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.
Release Checklist
Pre-Release
Post-Release