Skip to content

Release v0.27.0

Choose a tag to compare

@arabot-1 arabot-1 released this 10 Jun 10:23
6d812bb

0.27.0 (2026-06-09)

Features

  • anvilRpc: implement retry logic for RPC calls and add post-reset probe (50c0989)
  • api: add global firstActive on member endpoint (BE-203) (#1292) (c5d4122)
  • api: add token totalSupply cache with 30-minute freshness (e1996d7)
  • api: IPFS resolution for delegate statement metadata (BE-204) (#1297) (409294c)
  • api: live totalSupply for escrowAdapter tokens (BE-221) (#1298) (a850e84)
  • api: optimize delegators listing — two-pass log query + drop per-row VP math (#1301) (32b3211)
  • api: resolve delegate statements from IPFS (BE-204) (#1291) (85e243e)
  • APP-537: rename DAO fields and update related logic. Add backward compatibility (d7372d6)
  • APP-539: remove deprecated fields and update logic for linked accounts (341ae13)
  • batchVeHandler, capitalDistributorHandler: refactor claim handling and deduplication logic (1db90ff)
  • batchVeHandler: skip full DAO simulation test (6186932)
  • BE-143: skip expensive crawl in findIncrementalId when previous proposal exists (c233c6b)
  • BE-163: scoped retryAll for crawler RPC errors (#1186) (76772a6)
  • BE-200: integration test fixture for BE-160 governance rewards calculator (#1247) (4a06dc6)
  • campaign+gauge: campaign upload API, gauge reward distribution, and delegation batch sync migration (#1128) (5385654)
  • campaign: add logo field to token data structure (2bf92e8)
  • campaign: add metadata extraction for createCampaign action (7d56076)
  • campaign: add network field to token projection and logo field to token data type (035bb28)
  • campaign: enhance campaign lifecycle tests and improve reward management logic (f45f6ed)
  • campaign: handle null logo values in token projection (123539f)
  • campaign: implement parsing for createCampaign action with allocation aggregation (787faf3)
  • campaign: implement syncTotalsFromRewards to update claimCount and totalClaimed (63de0be)
  • campaign: refactor metadata fetching to use parser functions (cb66e55)
  • campaign: remove isDraft filter from findDraftByMerkleRoot method (c09ac69)
  • campaign: remove isDraft filter from findDraftByMerkleRoot method (f207369)
  • campaign: update test to verify non-draft CampaignMerkleRoot retrieval (1e00cb4)
  • campaign: update test to verify non-draft CampaignMerkleRoot retrieval (1823dba)
  • capitalFlow: accept optional toBlock parameter and skip CapitalFlow Installation tests (bd515f3)
  • citrea: add mainnet deployed contract addresses (block 5471881) (d820446)
  • config: reduce MAX_BLOCK_RANGE to 999 for mainnet configurations (0dc2573)
  • crawler: per-network MAX_BLOCK_RANGE cap + Citrea transfer sync test (#1258) (b486d69)
  • crawlers: implement batch handling for log processing (1ccd34c)
  • crawlers: unused web3Helper replaced with tickContext (f37d259)
  • crawler: unit test (092ea35)
  • dao: add chilizMainnet to EXPLORER_LAGGING_NETWORKS set (5ffad9e)
  • dao: add chilizMainnet to EXPLORER_LAGGING_NETWORKS set (62c3bdb)
  • decodeAction: skip integration tests for decodeAction (aeb88e5)
  • decoder: add support for nested actions in execute/createProposal calls (cb585f7)
  • decoder: enhance metadata handling for nested cross-DAO updates (aae246f)
  • decoder: ensure value is always a string in toRawAction function (b248f0d)
  • decoder: fetch and attach proposal metadata in createProposal action (ca95567)
  • decoder: simplify metadata origin key determination for actions (4038173)
  • decoder: update createCampaign action to zero totals while attaching metadata (ce0624d)
  • delegateChangedSync: add admin API to force sync historical delegation events (#1242) (0e6dcf2)
  • delegation: enhancements to the voting power and delegation APIs with integration test (#1300) (db9ff37)
  • delegationEvents: stub CoinGeckoHelper and adjust blockLimit for tests (fec2dba)
  • dex-quoter: dedicated bottleneck per network for DEX RPC calls (BE-205) (cd56ddb)
  • docker: revert back the cache and image building (e7d65a9)
  • docker: switch to slim variant of Node.js for builder and release stages (86aecbb)
  • fetchRetry: add timeout cleanup to prevent memory leaks (59e98e8)
  • gauge: add endpoint for retrieving gauge reward distribution by gauge (#1254) (ba0abf3)
  • governance: add governance reward start block configuration and resolve logic (3b6509a)
  • governanceBatchHandler: add tests for ExitQueuedV2 event handling and DaoMetrics deduplication (771bd6e)
  • governance: implement governance rewards distribution and related API endpoints (af2a712)
  • governance: optimize member tracking and update block timestamp retrieval (8ea4649)
  • governanceRewards: add validation for lookbackDate and enhance distribution logic (6bd1c5a)
  • governance: update governance reward start blocks to support multiple values (427d42c)
  • governance: update minProposal Vp type to string in decode action and handle null responses for pastVeTokenSupply (#1304) (3878a58)
  • governanceVeBatchHandler: adjust block range and enhance batch processing logic (b9b3ab9)
  • governanceVeBatchHandler: refactor makeLog function for cleaner code (dfe9df1)
  • governanceVeHandler: add tests for exit cancellation and log sorting (c761fb2)
  • handlers: improve claim deduplication, batch handler safety, and test coverage (16338c6)
  • hemi: add integration tests for Hemi mainnet and enhance evmExplorerClient (9eba6bb)
  • index: add additional indexes to member, proposal, transaction, and vote models (b42219f)
  • infra: add cluster mode for indexer and transfers services (BE-215) (#1278) (ed2c84e)
  • infra: add pre-release version to staging deploy notification (22adc6a)
  • infra: add Slack Bot Token API with threading and composite actions (089248b)
  • infra: add SLACK_PLATFORM_GROUP_ID for team mentions on deploy failure (a070f73)
  • infra: add staging changelog to Slack for team testing (dd9ea19)
  • infra: auto-sync main back to development after release (#1288) (14b626a)
  • infra: remove CHANGELOG.md, no longer generated by semantic-release (5cb99b3)
  • infra: restore CHANGELOG.md + PR-based main→dev sync (#1290) (c38d7b6)
  • integration: update 1Password CLI action to specific version (#1360) (3eb6002)
  • ipfs: add support for Pinata public gateway and enhance metadata fetch logic (#1307) (99da2f7)
  • ipfs: change error logging to warning for metadata fetch failures (20abd0c)
  • katana: add proper address for migration for katana reward (#1198) (95f4d01)
  • logDelegateChanged: implement countActiveDelegationsForMembers method and update metrics (#1230) (1ddab4b)
  • logDelegateChanged: optimize delegation counting logic and enhance tests (#1302) (dbd9238)
  • logger: hide RPC API keys in URLs sent to logz.io and sentry (#1257) (468ba33)
  • logProcessing: simplify log parsing stubs and clean up test setup (62804dd)
  • member: add network-scoped lastActive metric on member profile (#1270) (b887b04)
  • member: delegators API for an address by token (BE-202) (#1262) (ed54d74)
  • member: optimize getByTokenAddress to fetch balance, voting power, and delegate in parallel (64f9aa8)
  • networks: add Citrea testnet and mainnet chain support (3a8fdcc)
  • networks: add Hemi mainnet to networks enumeration (45930bc)
  • networks: add support for Hemi mainnet in various configurations (9e19349)
  • pairData: add includeSubDaos parameter to control subDAO (#1157) (df35b10)
  • pluginMetrics: add findGlobalLastActivity method and update member lastActive (fe4d87e)
  • pluginMetrics: improve findGlobalLastActivity method and enhance test cases (a94f133)
  • proposal: change minProposerVotingPower type to string and add migration for existing data (#1299) (cefa079)
  • proposal: improve error handling for unresolved daoId in pagination queries (63289d1)
  • proxyToken: enhance token creation by stubbing on-chain reads and removing unnecessary checks (414597f)
  • rates: on-chain DEX quoter for token prices (BE-205) (a7be7cc)
  • rates: use DEX quoter to price tokens on non-CoinGecko chains (BE-205) (2d1b94f)
  • release: enhance release summary generation by tracking previous staging deployment (1c425c7)
  • release: improve commit filtering in release summary generation (79f28b4)
  • retry improvements, governance escrow fix & GaugeVoter decoding (#1190) (704caf1), closes #1186
  • retryRequest: update warning message for server error retries (66365d9)
  • reward-generation: add configuration for early reward generation and enhance error handling (#1183) (437f1a9)
  • tests: remove deprecated tests and clean up spec files (2f435c0)
  • transaction: update index to use 'token.address' for improved query performance (e12c840)
  • unit-dep: update Docker setup for unit-dep image and tests (b279f0e)

Bug Fixes

  • add error handling for catch-up logic and improve test coverage (d0d8e31)
  • add proper field renaming; remove subdao from api contract (050b8aa)
  • address pr issues (80e7c6a)
  • api: add catch handlers to fire-and-forget promises in totalSupplyRefresh (70f9d2a)
  • api: block prototype-pollution via pagination date props (BE-219) (#1284) (07bfc2d)
  • api: make totalSupply refresh fire-and-forget and update tests (d021c64)
  • APP-87: add pluginAddress field to Vote schema and update related queries (ed72314)
  • assets: route Citrea token balances through Blockscout v2 (#1261) (1f629ed), closes #2 #3
  • auth: correct admin token assertion to prevent null deref crash (BE-231) (b5ede10)
  • auth: match stored token type IJwtAuthType.auth in admin assert (545152a)
  • BE-143: use $lte in findLastSavedProposal to handle same-block proposals (1bbe7a0)
  • BE-155: suppress PluginSlug error log for uninstalled plugins (#1169) (25bd36f)
  • BE-156: generalize batch size error pattern for zkSync RPC (#1170) (01c970f)
  • blockchainLogCrawler: update getServiceStartBlock to return block and isExisting status (#1175) (8eb4ffe)
  • bound delegate-statement endpoint to total deadline (a406399)
  • campaign: ensure stale reward IDs are preserved during payout processing (fde53ae)
  • campaign: ensure stale reward IDs are preserved during payout processing (9a37caa)
  • campaign: persist totalClaimed on existing reward docs in payoutClaimedBatch (97cbb37)
  • ci: exclude package.json from biome formatter (d49bc5b)
  • config: set correct FROM_BLOCK for Citrea testnet and mainnet (1aad66f)
  • config: set OFFSET_TO_BLOCK to 4 for Citrea (match Arbitrum settings) (fbcab90)
  • contract-helper: replace create with findOneAndUpdate for upsert functionality (#1181) (cb896e4)
  • crawler: enhance error handling in crawlerErrorHandler for improved RPC error messages (#1191) (6c21511)
  • crawlers: reset crawling flag in finally to prevent stuck re-entry guard (75a7790)
  • crawlers: reset crawling flag in finally to prevent stuck re-entry guard (2c7e61e)
  • decode-action: biome json config fixed and formatting (dd5586e)
  • decode-action: improve campaign create action decoding and add error handling (ed31224)
  • decode-action: improve campaign create action decoding and add error handling (63ea189)
  • dex-quoter: make public APIs return null on infra/config failures (BE-205) (ef1bb5e)
  • extend DAO indexing status (#1243) (bf0a402)
  • gateway: skip totalSupply update when RPC returns 0n (075e638)
  • governance: correct governance reward start block for Ethereum Mainnet (cc05765)
  • governance: implement delegation check and update delegateReceiverAddress in deposit method (977b2c5)
  • governance: refine delegation check logic and update test handler (7948eec)
  • governance: update governance handling to use escrow address and improve metrics updates (031b8b3)
  • governance: update token delegation snapshot timestamp for accurate voting power calculation (668143c)
  • handle null Blockscout URL, use Blockscout-only for Citrea, fix unit test (c22f88f)
  • implement guard for single active hotfix (b38b18d)
  • infra: address PR review feedback (d19c0d0)
  • infra: align Slack notifications with frontend patterns (e706545)
  • infra: cap auto workers to 1/4 of CPUs to avoid starving other services (#1281) (7d01f41)
  • infra: cap cluster workers to 70% of CPUs (#1282) (f4d8c7b)
  • infra: deduplicate changelog entries instead of limiting (8f92ab9)
  • infra: drop @platform mention from deploy slack notifications (#1279) (a6d9566)
  • infra: limit changelog to 15 items per section with overflow count (d4db6ba)
  • infra: load Slack secrets directly in e2e job to avoid masked outputs (45940a5)
  • infra: move Slack secrets loading before op:// env vars are set (c04a38b)
  • infra: prevent 1Password cross-vault conflict in Slack secrets loading (80770cf)
  • migration: enhance campaign create action decoding and improve logging (f4baa97)
  • migration: implement campaign create action decoding migration (f2522e8)
  • migration: implement campaign create action decoding migration (b5a687a)
  • multisig: handle out-of-order proposal events when approveProposal=true (BE-144) (3ed29a8)
  • peaq: skip native crawlers and clean up duplicate transactions (db6717a)
  • proxyToken: ensure totalSupply is initialized to '0' in token information (0c79e38)
  • proxyToken: improve token info retrieval and set default values (613b50d)
  • proxyToken: set default decimals to 0 for token information (c65496e)
  • rates: exclude fdv_usd from dead token market data check (#1249) (c2124d4)
  • test: assert Blockscout integration tests return data instead of silently passing on null (a5bfa05)
  • tests: skip RouteScan tests in unit-dep (62fd55c)
  • tool-launcher: remove BackfillTokenDelegation from runners list (7d23d15)
  • tool-launcher: remove unused BackfillTokenDelegation import (7394af1)
  • types: add Citrea networks to IConfig NODES and BLOCKSCOUT_EXPLORER_API types (ad1fa2d)
  • use daoDb.network and improve comment casing (c65dcda)
  • use environment variables for tag and version handling and release processes (4c51573)
  • use environment variables for tag and version handling and release processes (8ac1ed5)
  • ve: persist blockTimestamp on Lock create in deposit and split paths (06fb447)

Performance Improvements

  • api: add missing indexes for slow API endpoints (f9f2063)
  • models: add Plugin and LogPluginSetupProcessor indexes from #1204 (f550ea2)