v2.4.0
The Mempool Open Source Project v2.4.0
This release introduces many cool new features:
- All-new mining dashboard with 7 new mining graphs
- Added "bitfeed style" mempool block visualization
- Improved blocks page that identifies mining pools
- Improved fee suggestions with a "no priority" rate
- And much more!
Out of the ~3400 commits in our git repo, ~1300 were made since v2.3.
Lots of work went into v2.4, and all users are encouraged to upgrade to enjoy this new functionality.
Notes for upgrading from v2.3 if your timezone is NOT set to UTC
If you are upgrading from v2.3 or earlier and you want to migrate your historical mempool statistics database, you will need to do a special update procedure if your server's timezone is NOT set to UTC. How to migrate:
- Backup your MySQL database.
- Terminate the mempool backend process.
- Run the following query to check your mysql connection timezone:
SELECT @@global.time_zone, @@session.time_zone;
- If you get SYSTEM, check your system timezone with the
date
command. - Perform the SQL query with your negative GMT offset:
UPDATE statistics SET added=DATE_ADD(added, INTERVAL -2 HOUR);
(For example, if your timezone is set to CEST (UTC+2), you need to shift all your statistics entries negative 2 hours.) - Proceed with upgrading mempool as usual.
Changelog
- Insert zeroed statistics in the database if the mempool is empty by @nymkappa in #1151
- Only apply vbytes/sec cap on Bitcoin mainnet - Fix linter issues by @nymkappa in #1154
- Move difficulty adjustment code to separate module by @nymkappa in #1152
- dont use hardcoded genesis coinbase and block hash by @antonilol in #1158
- Display Liquid asset icons by @softsimon in #1167
- Liquid asset loading fixes by @softsimon in #1170
- Fix Liquid proxy settings by @knorrium in #1171
- Asset name overflow fix by @softsimon in #1172
- Update Liquid tests by @knorrium in #1176
- Update Cypress to v9.3.1 by @knorrium in #1175
- Update e2e tests: new scenarios for Liquid, Bisq and refactor button by @knorrium in #1178
- Fix broken link on the Bisq transaction page by @knorrium in #1177
- Cleanup master-page template by @nymkappa in #1183
- Wrap statistics db ops with try/catch by @nymkappa in #1182
- Mining dashboard (1/2) - Import mining pools into the database by @nymkappa in #1163
- Remove useless autocommit=0 in db migration script by @nymkappa in #1187
- Fixing Liquid asset precision by @softsimon in #1173
- Change Citadel link to core by @AaronDewes in #1194
- Mining dashboard (2/2) - Dashboard PoC by @nymkappa in #1162
- Increase nginx send_timeout and keepalive_requests by @wiz in #1193
- Enable nginx warm cache for mining pools API data by @wiz in #1198
- Let backend set its own HTTP cache time headers for APIs by @wiz in #1199
- Replaced /mining/pools?interval=X by /mining/pools/X by @nymkappa in #1208
- Set proper mining pool page title - Rename "Name" to "Pool" by @nymkappa in #1207
- outputs of genesis coinbase are always unspent by @antonilol in #1160
- Proxy all /api and /api/v1 requests to local nodejs server by @softsimon in #1215
- Wrap custom blocks fields into a sub object of IEsplora.Blocks by @nymkappa in #1212
- Adding a "mixed" dev proxy by @softsimon in #1219
- Local dev proxy working with all base modules by @softsimon in #1218
- Fetch conversion rates over Tor by @knorrium in #1213
- Run tests in Staging by @knorrium in #1228
- Featured assets and asset groups by @softsimon in #1224
- Add EXTERNAL_ASSETS defaults to the Docker start script README by @knorrium in #1225
- Disable featured assets test for testnet by @softsimon in #1230
- add log priority option for stdout log by @antonilol in #1180
- Cypress improvements by @knorrium in #1234
- sync-assets: Download pool logos from github by @nymkappa in #1233
- Remove debug return which break the UX the first time we open by @nymkappa in #1232
- Allow TV view time span switch through url fragment by @nymkappa in #1192
- Duplicated db blocks insertion attempts are expected by @nymkappa in #1220
- Consider we're synced with the mempool if we cached 99% by @nymkappa in #1240
- Refactor docs by @hunicus in #1239
- Added /api/v1/blocks-extras endpoint by @nymkappa in #1235
- implement /api/mempool for home users (romanz/electrs backend) by @antonilol in #1248
- Don't wait for 100% mempool sync before starting block indexing by @nymkappa in #1243
- Remove duplicated tests by @nymkappa in #1252
- Provide a way to completely disable block indexing and mining menu by @nymkappa in #1250
- Created mining pool stats page by @nymkappa in #1242
- Index more block data by @nymkappa in #1253
- Create difficulty chart component by @nymkappa in #1255
- Change pool ranking pie chart colors by @nymkappa in #1257
- Create mining dashboard page by @nymkappa in #1254
- When blocks need re-indexing, truncate the table by @nymkappa in #1258
- Update docker default min loglevel to info by @knorrium in #1261
- Show miner tag under blocks in the mining dashboard by @nymkappa in #1259
- Display top featured assets on Liquid dashboard by @softsimon in #1245
- detect lightning htlc and unilateral close + fix multisig badge by @antonilol in #1223
- Created hashrate chart component by @nymkappa in #1269
- Tweak new charts design by @nymkappa in #1272
- Show block reward in the mining dashboard by @nymkappa in #1274
- Display asset circulating amount more nicely fixing overflow by @softsimon in #1273
- Merge hashrate and difficulty components, cleanup mining design by @nymkappa in #1275
- Remove block subsidy from mempool blocks by @nymkappa in #1277
- Handle missing asset registry assets by @softsimon in #1278
- Add proxy support for Liquid Testnet by @softsimon in #1279
- Show tx value sum if complete unblinding data is provided by @softsimon in #1280
- Fixed incoming transactions bar on the status page by @softsimon in #1281
- Fix status page regex by @knorrium in #1282
- Update Cypress to v9.5.0 by @knorrium in #1283
- Upgrade frontend deps: Angular 13.2, echarts 5.3, fortawesome by @softsimon in #1284
- Create pools hashrate dominance chart by @nymkappa in #1285
- Merge pool share and dominance into one widget by @nymkappa in #1288
- Only reset hashrate state flag after database migration - Fix weekly … by @nymkappa in #1297
- Make sure to reset hashrates indexing flags upon error by @nymkappa in #1298
- Pause block indexing chunk upon error and retry later by @nymkappa in #1300
- Only return unique address prefix autocomplete by @softsimon in #1291
- Shorten address search with middle ellipsis by @softsimon in #1293
- fix 0 sat/vB not displaying by @antonilol in #1185
- Fix hashrate indexing backend logic by @nymkappa in #1302
- Mining dashboard polishing by @nymkappa in #1303
- UTXO spent tracking by @softsimon in #1305
- Handle missing asset registry for inputs by @softsimon in #1306
- Truncate hashrates table only for bitcoin (db migration v9) by @nymkappa in #1308
- Bugfix/auto refresh reward stats by @nymkappa in #1310
- UTXO spent tracking refactor by @softsimon in #1314
- Add skeleton in the mining dashboard page by @nymkappa in #1315
- Fix broken navigation when clicking on pie chart by @nymkappa in #1313
- Shorten reward stats by @nymkappa in #1312
- Replace difficulty adjustment timestamp with block height by @nymkappa in #1311
- Added new Zeus logo by @Bosch-0 in #1316
- Index blocks.blockTimestamp for faster hashrates indexing by @nymkappa in #1319
- Replace by fee storage by @softsimon in #1318
- Added pool hashrate chart by @nymkappa in #1317
- Fix skeleton for difficulty adjustment table by @nymkappa in #1324
- Show
+
sign on positive diff adjust by @nymkappa in #1325 - Display unknown for non standard output types by @softsimon in #1323
- Increment db version to 10 by @nymkappa in #1329
- improve testnet block time estimations by @antonilol in #1328
- Index weekly hashrates using last Monday midnight - Fix charts by @nymkappa in #1333
- Fix pool detail page on Firefox by @nymkappa in #1326
- Always show scrolbar to avoid horizontal jumpy UI by @nymkappa in #1327
- Show current indexing progress in charts without data by @nymkappa in #1331
- Index more data using getblockstats core RPC by @nymkappa in #1330
- regtest fixes by @antonilol in #1320
- Add new production installation script and related files by @wiz in #1321
- Revert "Always show scrolbar to avoid horizontal jumpy UI" by @softsimon in #1337
- Make blocks.fees larger data type by @nymkappa in #1338
- Add production frontend configurations by @wiz in #1344
- Install production backend/frontend configurations from master by @wiz in #1345
- Remove old install script, merge remaining stuff into upgrade script by @wiz in #1346
- Set git to always rebase from install script by @wiz in #1349
- Create symlinks for mempool scripts in installation script by @wiz in #1350
- Add mariadb-server and mysql db creation to install script by @wiz in #1347
- Fix database migration/typing issues by @nymkappa in #1340
- Fix empty diff adjust table by @nymkappa in #1336
- Create new /mining/blocks page by @nymkappa in #1335
- Fix font size in reward stat widget by @nymkappa in #1353
- Reorganizing community integrations by @softsimon in #1357
- Fix duplicate hashrate data points in "difficulty vs hashrate" chart by @nymkappa in #1351
- Add support for MySQL connections over UNIX sockets by @dsbaars in #1360
- Increase default INDEXING_BLOCKS_AMOUNT by 10x to 11000 blocks by @wiz in #1358
- Address page highlight and transfer value by @softsimon in #1304
- Fix docs navigation on desktop by @hunicus in #1342
- Difficulty adjustment refactor by @softsimon in #1352
- Move all charts into /graphs page by @nymkappa in #1309
- Updated websocket mock data with difficulty adjustment by @softsimon in #1364
- Remove duplicate websocket push. by @softsimon in #1363
- Make the hashrate/difficulty widget simpler by @nymkappa in #1362
- Capitalize js package labels in docs by @hunicus in #1361
- Fix typo in hashrate widget by @nymkappa in #1366
- Fix docs navigation on mobile by @hunicus in #1354
- Merge node-bitcoin into the project by @softsimon in #1370
- Address value did not calculate self transfers by @softsimon in #1371
- Optimize RPC calls by @nymkappa in #1374
- Index asciiScriptSig and display it in /mining/blocks by @nymkappa in #1375
- Hide tabs in /graphs page is mining not available by @nymkappa in #1379
- Force disable mining dashboard if base_module not mempool by @nymkappa in #1380
- Updated blocks list in pool details page by @nymkappa in #1381
- Apply coinbase style to blocks list tooltip by @nymkappa in #1382
- Fix pagination on /mining/blocks by @nymkappa in #1376
- Fix javascript crash when disable hashrate/difficulty chart line by @nymkappa in #1383
- fix and improve block time predictions by @antonilol in #1373
- Use our forked repo of mining pool data by @nymkappa in #1390
- Show pools in main dashboard in mining dashboard is enabled by @nymkappa in #1398
- Don't navigate to root when sub network url is wrong. by @softsimon in #1400
- Configure syslog for keybase alerts from install script by @wiz in #1410
- Set build script to notify new location based Keybase channels by @wiz in #1411
- Install mempool crontab from install script by @wiz in #1412
- Create zfs filesystem for /backup and chown to mempool by @wiz in #1413
- Subscribe to blocks and mempool updates in the mining dashboard by @softsimon in #1415
- Update Cypress to v9.5.2 by @knorrium in #1418
- Address highlighting tests by @knorrium in #1417
- Enable full block indexing on all Bitcoin networks by @wiz in #1416
- Fix path in mempool crontab for daily backup script by @wiz in #1419
- Add minfee node setup to production install script by @wiz in #1420
- Use 10 minutes avg block time for halving calculation by @nymkappa in #1422
- Disable cluster mode in prod bisq backend config by @wiz in #1425
- If we have incomplete data for the day/week, don't index hashrate by @nymkappa in #1423
- Don't show coinbase tooltip on mining dashboard by @nymkappa in #1431
- Format Transaction vBytes per second (vB/s) tooltip value by @nymkappa in #1429
- Improve skeleton on pool detail page by @nymkappa in #1430
- More dynamic mining reward by @nymkappa in #1427
- Set weekly hashrates timestamp to midnight by @nymkappa in #1424
- Fix git commit error by @knorrium in #1434
- Last hashrate indexing check needs to be in milliseconds by @softsimon in #1435
- Truncate hashrates after #1435 - Fix hashrate indexing logs by @nymkappa in #1437
- Added slug into
pools
table by @nymkappa in #1446 - Fix rounding issue in reward stats by @nymkappa in #1445
- Fix blocks list mobile layout by @nymkappa in #1428
- Remove unnecessary echart init option by @nymkappa in #1449
- Use relative pipe for pie chart click event by @nymkappa in #1450
- If pool slug does not exist, generate one on the fly, avoid crash by @nymkappa in #1451
- Disable glitchy angular tooltips animation by @nymkappa in #1458
- Use mining pool slug in urls by @nymkappa in #1456
- Use slug instead of id in mining blocks list component by @nymkappa in #1467
- Fix query to insert unknown mining pool by @nymkappa in #1470
- Use mining pool slug in block component by @nymkappa in #1468
- Pool addresses collapse - Cleanup mobile layout by @nymkappa in #1457
- Add data zoom on pool hashrate chart by @nymkappa in #1472
- Use slugs in cache warmer by @nymkappa in #1474
- Show block reward on blockchain blocks for all Bitcoin networks by @nymkappa in #1484
- Fix spam call to
/api/v1/mining/pool/{slug}
by @nymkappa in #1489 - Update pool detail page label - Fix no data text by @nymkappa in #1485
- Add missing mining API endpoint to cache warmer by @nymkappa in #1483
- Enable nginx warm cache for all /api/v1/mining API endpoints by @wiz in #1475
- Don't use
slugs
if it's not available in pools.json frontend by @nymkappa in #1490 - Apply smooth scrolling to docs only by @hunicus in #1491
- Subscribe to websocket blocks update for all graphs components by @nymkappa in #1493
- Remove unused
/api/v1/mining/difficulty/{interval}
endpoint by @nymkappa in #1482 - Fix some mobile UI issues on mining dashboard by @nymkappa in #1401
- Detect more lightning scripts by @antonilol in #1464
- Mining stats does not depend on the websocket blocks number by @nymkappa in #1496
- Return empty pool addresses on testnet and signet by @nymkappa in #1488
- Correcting wrong or missing op_codes display by @softsimon in #1500
- Correcting op_code coloring by @softsimon in #1501
- Avoid parralel hashrate indexing when initial query is too slow by @nymkappa in #1498
- Send 404 when accessing non existing mining pool by @nymkappa in #1487
- Rounding bitcoin api satoshis by @softsimon in #1486
- Update AS142052 link by @nymkappa in #1504
- Updated pool summary page to display more info on hashrate/blocks by @nymkappa in #1503
- If mining dashboard is enabled, set block miner to "Unknown" by @nymkappa in #1492
- Npm run start broke by @softsimon in #1510
- Use github api to fetch and update the pools database, once a week by @nymkappa in #1511
- fix RTL layout issues by @TechMiX in #1506
- Fix Lightning HTLC detection with options_anchors by @antonilol in #1514
- [Indexing] - Support 10 blocks depth reorgs by @nymkappa in #1369
- Add block fees graph by @nymkappa in #1512
- Add block rewards graph by @nymkappa in #1513
- Set zlevel for all graphs series by @nymkappa in #1495
- fix wrong display of other sighash types + p2sh redeemScript by @antonilol in #1502
- Add faq by @hunicus in #1473
- Cleanup mining related backend logs by @nymkappa in #1519
- Fix log rotation configuration for mempool backend logs by @wiz in #1499
- Refactor database pool use by @nymkappa in #1517
- Sponsor page revamped by @softsimon in #1505
- Create dependabot.yml by @naveensrinivasan in #1339
- Breaking out strtotime from locutus lib by @softsimon in #1518
- Pin actions by SHA and set permissions for workflow by @naveensrinivasan in #1341
- Allow syncing external backend assets using Tor by @knorrium in #1433
- Add try/catch liquid icon loading by @nymkappa in #1546
- Add mercury wallet in the about page by @nymkappa in #1555
- Wait for external assets file writers to complete by @nymkappa in #1558
- Add block fee rates percentiles chart by @nymkappa in #1521
- Use block count instead of oldest block for timespan selection by @nymkappa in #1548
- Update blocks list skeleton by @nymkappa in #1553
- Validate block hash chain after indexing and for new blocks by @nymkappa in #1554
- Remove loading indicator for blocks-extras API by @nymkappa in #1563
- Ignore case on coinbase tag regexes by @nymkappa in #1564
- Read bisq dump blocks line by line and parse manually by @nymkappa in #1569
- Update docker faq by @hunicus in #1571
- Clean local block cache before loading dump by @nymkappa in #1579
- Fix reward stats skeleton titles by @nymkappa in #1580
- Show current network hashrate and difficulty using core RPC by @nymkappa in #1592
- Revise main readme and docker install docs by @hunicus in #1599
- Add screenshot for 2.4.0 to readme by @hunicus in #1600
- Fix datababse typo by @knorrium in #1587
- Moving Docs and Faq to separate lazy loaded module by @softsimon in #1568
- Upgrading npm packages and by @softsimon in #1584
- Update pools table before fetching the first blocks by @nymkappa in #1565
- Change faq docker link since docker docs moved by @hunicus in #1610
- Add back overwritten sentence to main readme by @hunicus in #1609
- Run hashrate indexing after midnight by @nymkappa in #1590
- fix lightning force close label with CSV delay <= 16 by @antonilol in #1598
- Bump crypto-js from 4.0.0 to 4.1.1 in /backend by @dependabot in #1538
- Bump typescript from 4.4.4 to 4.6.4 in /backend by @dependabot in #1585
- Bump ws from 8.3.0 to 8.6.0 in /backend by @dependabot in #1593
- Bump express from 4.17.1 to 4.18.1 in /backend by @dependabot in #1594
- Refine production deployment doc by @hunicus in #1611
- Remove $ from commands in repo docs by @hunicus in #1618
- Add faq on address lookups by @hunicus in #1617
- Add graph download feature by @nymkappa in #1601
- Create indexing progress sticky notification by @nymkappa in #1596
- detect received lighting HTLC outputs by @antonilol in #1561
- Add block sizes vs weights graph by @nymkappa in #1597
- Update issue templates by @hunicus in #1630
- Fix the socks5 connection after updating the socks lib by @knorrium in #1633
- Modify minfee node bitcoin.conf to connect to external peers by @wiz in #1636
- Fix ELECTRUM_TLS_ENABLED Docker variable by @knorrium in #1640
- Added some missing alt tags on some img by @nymkappa in #1644
- Skip missing blocks during block hash chain validation by @nymkappa in #1591
- Update block API by @nymkappa in #1556
- Add simple faq on full mempool by @hunicus in #1639
- Update the recommended node version to v16.15.0 (LTS) by @knorrium in #1625
- Polish dashboards second widgets line by @nymkappa in #1629
- Delete useless log by @nymkappa in #1662
- Correcting and harmonizing i18n strings by @softsimon in #1627
- Minor i18n corrections by @softsimon in #1663
- Always use BTC unit in blocks list by @nymkappa in #1652
- Allow CTRL F an address on the transaction list component by @nymkappa in #1653
- Use passive listeners to improve scrolling performance by @nymkappa in #1658
- Cleanup mining API endpoints by @nymkappa in #1659
- Define avg block time to 10 min until we have at least 146 block in the current epoch by @nymkappa in #1661
- Fix for transaction inputs being fetched recursively by @softsimon in #1665
- Reset outspends cache when switching to new tx page. by @softsimon in #1632
- Tweaking the websocket retry timers by @softsimon in #1637
- pools-updater: Support secure Tor connection to sync data with Github by @ayanamidev in #1649
- Remove unused config from nginx by @ayanamidev in #1666
- Adding some missing i18n strings by @softsimon in #1664
- Upgrade Cypress to v9.6.1 by @knorrium in #1672
- Don't prepend apiBasePath for services backend resources by @wiz in #1670
- Index blocks.hash by @nymkappa in #1673
- Cache /block API response for 10 min on user side by @nymkappa in #1674
- Additional expiration header for mining pool API endpoints by @nymkappa in #1676
- Add mining api docs by @hunicus in #1654
- Moving graphs and mining dashboard to a lazy loaded module by @softsimon in #1682
- Add feedback for mining API docs by @hunicus in #1680
- Set /mining/blocks/xxx APIs expiration to 60 seconds instead of 5 min by @nymkappa in #1686
- Fixes broken fee rate calculation for mempool transactions by @softsimon in #1688
- Improving loading indicator UX by @softsimon in #1667
- Fixes for Liquid module routing by @softsimon in #1690
- Reward stats i18n fix by @softsimon in #1694
- Round miners reward to full dollar by @softsimon in #1695
- Fix websockets tab by @hunicus in #1697
- Lazy load tx inputs in Bitcoin Core mode by @softsimon in #1643
- Add escaped slug into logs when slug does not match any pool by @nymkappa in #1657
- Make sure to re-index skipped block when backend is offline for too long by @nymkappa in #1635
- Fix missing tx column in main dashboard on mobile by @nymkappa in #1708
- Hide graph selection button on non bitcoin networks by @nymkappa in #1707
- Add schildbach bitcoin wallet to about page by @hunicus in #1710
- Update case in some mining API endpoint response by @nymkappa in #1685
- Merge legacy and mining /blocks components and APIs by @nymkappa in #1696
- Block transactions list error handling by @softsimon in #1700
- Add role attributes for doc nav elements by @hunicus in #1701
- Replace all oldestIndexedBlockTimestamp with X-total-count header by @nymkappa in #1687
- Liquid empty miner UX fix by @softsimon in #1699
- Move manual install notes to separate docs by @hunicus in #1714
- NgBootstrap library import optimization by @softsimon in #1717
- Add faq on empty blocks by @hunicus in #1728
- Add loading spinner in /blocks page by @nymkappa in #1718
- Remove keybase link from about page by @hunicus in #1735
- Adjust stuck tx faqs for angry people by @hunicus in #1736
- Angular 13.3.10 update by @softsimon in #1733
- Mining dashboard still runs fine if Bitcoin Core becomes unavailable by @nymkappa in #1716
- Don't try to run pools parser if db is not enabled by @nymkappa in #1719
- Fix doc page titles by @hunicus in #1730
- Use block hash instead of block height in urls by @nymkappa in #1739
- Add
economyFee
field in /api/fees/recommended API by @nymkappa in #1738 - Upgrading packages by @softsimon in #1742
- Changed menu buttons to links by @softsimon in #1750
- Bump clipboard from 2.0.10 to 2.0.11 in /frontend by @dependabot in #1624
- Save bisq aggregate exchange rates in the database for each new block by @nymkappa in #1723
- Handle nonstandard inputs by @softsimon in #1751
- Change backend start syslog message from DEBUG to NOTICE by @wiz in #1763
- Remove fee calculation from the frontend by @nymkappa in #1741
- Only attempt to save fx rate if database is enabled by @nymkappa in #1764
- Use inline SVG for mempool.space logo by @wiz in #1752
- If bisq data folder is not ready, retry every 3 minutes instead of exit by @nymkappa in #1642
- Send fee info with init data by @softsimon in #1765
- Re-add hash field in the mysql block query by @nymkappa in #1769
- Rewamp the fee widget by @nymkappa in #1766
- Feature: Projected block visualization by @mononaut in #1774
- Minor refactor for projected block transactions by @softsimon in #1779
- Updated new fee widget design by @nymkappa in #1790
- Make node 16.15 required not recommended by @hunicus in #1784
- Skip blocks disk cache loading after db migration by @nymkappa in #1797
- Update dashboard screenshot for v2.4.0 release by @wiz in #1792
- Update /api/blocks docs by @hunicus in #1795
- Refactor pool ranking rxjs observable by @nymkappa in #1772
- Re-added missing cache version by @nymkappa in #1800
- Improve disk cache logging by @nymkappa in #1801
- Fix for mempool logo SVG issue by @softsimon in #1809
- Make sure blocks list rxjs observable triggers at least once by @nymkappa in #1808
- Cypress v10 upgrade by @knorrium in #1806
- stricter multisig check + detect bare multisig when spent by @antonilol in #1745
- Reload mempool visualization on reconnect by @softsimon in #1811
- Handle Error with basic retry while syncing external assets by @ayanamidev in #1691
- Add pull request template to discourage tx prs by @hunicus in #1825
- Update fee faq by @hunicus in #1819
- Add 'db-less' mining pool tagging support by @nymkappa in #1822
- Add feerate tooltips by @hunicus in #1820
- Change 'projected blocks' to 'mempool blocks' in feerate tooltips by @hunicus in #1827
- Change "projected block" to "mempool block" in feerate faq by @hunicus in #1830
- Fix pool import crash by @nymkappa in #1834
- Add missing sed substitutions in docker/backend/start.sh by @wiz in #1839
- Use ellipsis + tooltip combo to fix layout on long string by @nymkappa in #1855
- Release v2.4.0 by @wiz in #1858
New Contributors
- @antonilol made their first contribution in #1158
- @AaronDewes made their first contribution in #1194
- @Bosch-0 made their first contribution in #1316
- @dsbaars made their first contribution in #1360
- @naveensrinivasan made their first contribution in #1339
- @ayanamidev made their first contribution in #1649
- @mononaut made their first contribution in #1774
Full Changelog: v2.3.1...v2.4.0