Release: develop -> main#61
Merged
Merged
Conversation
Add RESET_BANDS env variable that triggers emergency withdrawal of all existing bands on startup, then lets the bot re-mint with the current config. Band close events are recorded so historical bands remain visible in the chart. Change DEV range from 3% to 1%.
* Add RESET_BANDS support, change DEV range to 1% Add RESET_BANDS env variable that triggers emergency withdrawal of all existing bands on startup, then lets the bot re-mint with the current config. Band close events are recorded so historical bands remain visible in the chart. Change DEV range from 3% to 1%. * Show actual band range in dashboard, document tick spacing limits Dashboard now calculates actual range from band ticks instead of showing config values. Document minimum band width constraint per fee tier, env-specific pool configs, data persistence, band reset, and all health/dashboard endpoints in README.
Track total token holdings (wallet + positions) and USD portfolio value over time. Calculate position token amounts from Uniswap V3 liquidity math. Display on dashboard with P&L vs initial investment. - Token amounts: svJUSD + WCBTC totals with delta from initial - USD value: total portfolio value with P&L absolute + percentage - Portfolio chart: token amounts over time (dual Y-axis) - Persisted alongside price history (survives restarts) - Liquidity cache refreshed every 5 min to limit RPC calls
* Set initial portfolio investment from pool config Add portfolio.initialToken0/initialToken1 to pool config schema. Load initial investment from config on startup instead of only recording at mint time. DEV: 100 JUSD + 0.0015 cBTC. * Track portfolio in JUSD + cBTC instead of pool tokens Convert svJUSD to JUSD (× vaultRate) for tracking since the investment was in JUSD, not svJUSD. Config uses initialJusd and initialBtc. DEV: 100 JUSD + 0.0015 cBTC. * Add PRD portfolio initial: 10000 JUSD + 0.15 cBTC
…ailure (#67) - Compute sqrtPriceLimitX96 from current tick and slippage tolerance using TickMath.getSqrtRatioAtTick(), adding an on-chain price boundary as defense in depth alongside the existing amountOutMinimum protection - Extract waitAndConfirmNonce() helper in PositionManager and SwapExecutor that syncs nonce from chain if tx.wait() throws (TX may have been mined despite the wait failure), preventing the bot from getting stuck - Change syncOnFailover() to prefer 'pending' over 'latest' transaction count to account for in-flight transactions during RPC switches Closes #63 items 1 and 2
TaprootFreak
approved these changes
Apr 28, 2026
Use consistent Promise<any> pattern matching PositionManager instead of verbose inline type definition.
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.
Automatic Release PR
This PR was automatically created after changes were pushed to develop.
Commits: 1 new commit(s)
Checklist