-Added new script to A) grab the latest code form github, B) update all dependencies, and C) run the database initialize function to ensure new changes take effect immidiately
-Updated README to explain the new explorer update function
-freegeoip.app now requires an api key so the peer sync has been updated to use reallyfreegeoip.org instead
-Added extra error checking to the peer sync so that it will error out when the geolocation service does not return a proper object
-Added locks to all sync processes (blocks, markets, peers, masternodes) as well as "create backup", "restore backup" and "delete database" functions. This helps prevent problems with syncing data while a backup is in progress for example
-The code to initialize certain database collections on startup was moved into database.js and is now called from restore_backup.js and delete_database.js. This effectively allows the database to be deleted or restored to a completely different backup while the explorer is still running
-Lock functions (create_lock, remove_lock, is_locked) were moved into explorer.js for better reusability and rewriten to be synchronous
-is_locked function now accepts an array of lock files to be able to check for multiple locks in a single call
-remove_sync_message() function was moved into database.js so that restore_backup.js and delete_database.js can also check for and remove the sync msg if it exists
-Useful Scripts section updated in the README to make it clear that the explorer no longer needs to be stopped for these scripts to be run
-Most if not all log messages now start with a capitlal letter
-All shell scripts have been removed and replaced with javascript equivalents which allows for better platform independence
-All scripts have been improved over the older shell scripts to be more functional and dynamic
-Updated all applicable cmds in the package.json to target the new js scripts + added the backup, restore and delete database functions to the list
-Removed the json and strip-json-comments-cli packages as they are no longer needed
-Added a new package realine-sync
-Updated cluster code with better Windows support when shutting down the explorer
-Backup and Restore scripts now use mongo's own encryption instead of tar.gz by default. Older tar.gz backups can still be restored as long as the tar.gz suffix is explicitly added
-Backup and Restore scripts now support connecting to remote database based on the mongo details in settings.json
-Updated README to include a new line for the 'platform independence' feature, updated script cmds and notes about certain steps being Linux only
-Added new setting 'show_exchange_url' which hides/shows the exchange link
-Updated all exchanges with a trade url template which can be used to automatically determine the correct url for each trading pair
-Hashrate chart is populated from get_hashrate
-Difficulty chart is populated from get_difficulty
-Added a networkhistories collection to hold the new network data
-Index sync and resync functions now check for and update network history data at the end of the sync process
-restore_backup.sh and delete_database.sh scripts now drop the new networkhistories collection
-Added a new javascript library chartjs-plugin-crosshair which adds crosshair functionality to the new chart.js line charts
-Added new settings to settings.json for controlling things like collecting network_history data, independently enabling/disabling the network charts and changing colors of various aspects of the charts
-Updated README to introduce the network charts and added a line for the chartjs-plugin-crosshair library
-Shifted some of the code around to be run in a better order (for example, blockchain_last_updated date is set right after finishing the blockchain sync instead of at the very end of the reindex)
-update_heavy has been moved into a proper callback function which is now only called for index and reindex syncs right near the end of the process instead of at the beginning
-Added an "Are you sure" prompt before starting the reindex to make it clear that this is a destructive sync option
-All necessary coin stat data is cleared before starting the resync (txes, blockchain_last_updated and richlist_last_updated were not previously being cleared)
-More and better messages about what is being done during the process
-Shifted some of the code around to be run in a better order (for example, blockchain_last_updated date is set right after finishing the blockchain sync instead of at the very end of the reindex)
-Bootstrap was upgraded to latest version (v5.1.3) which required tons of changes to the UI. Many little UI problems have been resolved
-Bootswatchs themes have all been upgraded to support bootstrap v5.1.3 + 4 new themes were added (Morph, Quartz, Vapor and Zephyr)
-Exor theme upgraded to v3.0.0 with support for bootstrap v5.1.3
-Many layout and UI improvements such as more consistent hover effects on most tables and more readable text across all themes
-Older versions of nodejs will throw all kinds of different errors depending on which version you are running. This check should hopefully prevent confusion about why the explorer is not working by giving a clearer error message before the explorer starts
-jQuery updated to v3.6.0
-DataTables updated to v1.11.3
-FontAwesome updated to v5.15.4
-Luxon updated to v2.1.1 (Removed js file from project and added CDN url)
-jqPlot (No update in version but removed js/css files from project and added CDN urls)
-Chart.js updated to v3.6.1 (Removed js file from project and added CDN url + fixed breaking changes in Reward page)
-flag-icon-css updated to v4.1.4 (Removed source files from project and added CDN url)
-All node dependencies are up-to-date in package.json
-Updated semantic versioning of some node dependencies in package.json
-Applied fixes to necessary explorer files to fix breaking changes to mongoose dependency
-Update README with new Node.js and MongoDB version recommendations
NOTE: Node.js must be updated to at least v14.13.1 to fix breaking errors in a few of the updated dependencies
-Also add output displaying which block is currently being checked as before it was almost impossible to determine what, if anything was happening in check mode
-New npm scripts make syncing and running other explorer tasks easier, without needing to remember longer command syntax
-Updated README to explain new npm scripts and give recommendations on their usage. Also update sample crontab section
-Market sync now sets the last USD price based on the default market pair even if it is not BTC
-Removed the coindesk api which was only really useful for getting the USD price of BTC
-Added a couple coingecko apis which are used to get the current USD value of the default market pair
-Updated the readme, settings file comments and info/api page with better verbiage regarding the market price which was previously only measured in BTC
-Safari behaves differently than other browsers and seems to require the url prefix to be present when loading external libraries to prevent CORS errors
-Many blockchains allow you to use addnodes without a port # and it will assume the default port internally, but the explorer was failing to parse these peers because it was expecting a port. This is now fixed and will display the peer data without a port in these cases
-Removes the unique constraint on the 'addr' field from the masternode collection
NOTE: If you are experiencing a mongo duplicate key error while running a masternode sync, the easiest way to correct the problem is as follows:
1) #Stop the explorer
2) git pull
3) mongo
4) use explorerdb
5) db.masternodes.drop()
6) exit
7) #Restart the explorer
8) /path/to/explorer/scripts/sync.sh /path/to/node masternodes
-Automatically detect if using newer or older Dash masternode format and display applicable columns and data
-Added new fields 'ip_address' and 'last_paid_block' to the Masternode collection
-Added a gradient background to the default, light and dark navbars (header and footer)
-Added a slight rounded corner effect to all applicable nav-link and poweredby elements contained within a default, light or dark navbar
-More graceful shutdown of node cluster on 'npm stop' with better cleanup of resources on exit
-Added new stop_explorer.sh script which looks up the explorer port # via settings file and closes the application running on that port # instead of saving and killing the process by pid as it did before
-Added support for pm2 and forever using 'npm run start-pm2' and 'npm run start-forever' respectively
-pm2 is automatically installed when starting with 'npm run start-pm2' if it is not already installed
-forever is automatically installed when starting with 'npm run start-forever' if it is not already installed
-Updated existing npm commands in package.json by replacing hardcoded 'node' with '$(which node)'
-/path/to/nodejs changed to /path/to/node in the /settings.json.template, /lib/settings.js and /scripts/sync.js files
-README updates:
-Added a new 'Start/Stop the Explorer' section
-Added PM2 instructions to the 'Start/Stop the Explorer' section
-Moved Start/Stop Explorer instructions to the 'Start/Stop the Explorer' section
-Moved Forever instructions to the 'Start/Stop the Explorer' section
-/path/to/nodejs changed to /path/to/node
-Some additional small misc fixes
-The update_stats() function is now called again from all pages even when not displaying panels to fix an oversight with the earlier change to allow removal of panels from any page
-Reorganized the structure and order of calls within the /ext/getsummary api to allow for returning just the connection and block counts for pages that have show_panels set to false
-Combined two script sections into one on the address page
-Changed the shorthand $(function() into $(document).ready() for consistency on the claim address page
-All pages (including the reward and error pages) were updated to include options for displaying a configurable page header with title, image, description and in some cases a last updated date
-The error page was restructured slightly to display a different description based on the type of error (page not found error vs problem loading page error)
-Added new setting options to the `shared_pages` setting for `page_title_image` which allows changing the page title image displayed on applicable pages and also determines whether it uses a flip/spin animation or not
-Added a collection of new `page_header` settings to all pages that control displaying the new page title + image + description and also moved the last updated date from applicable pages into this section as well
-Existing `show_last_updated` settings that were moved a level deeper into the `page_header` have been automatically mapped to the new setting location upon statup to help older installs to work better out-of-the-box
-Added new css rules to the styles.scss file to support the new page header/title options
-Added a number of new locale strings for page titles and descriptions, and moved a few locale strings around to different names internally that were already using the same naming scheme for different elements (such as api_title being moved to api_documentation for example)
-Started adding new locale strings with replacement text such as {1} and {2} that get automatically replaced with proper values when loaded to allow for locale strings that support dynamic text
-Fixed an issue with too much empty space in the page header (especially in mobile and tablet modes) when `show_panels` was set to false on any page
-Added a new `shared_pages.page_header.search.position` setting that determines where the search bar is located (valid options include the old 'below-header' and the new 'inside-header' options)
-`shared_pages.page_header.show_search` setting has been re-mapped to `shared_pages.page_header.search.enabled`
-Updated the search placeholder locale text
-Changed the Explorer menu item icon from a magnifying glass to a cubes/blocks icon
-Updated css rules to fix some small glitches and allow the new 'inside-header' search option to function
-This css fix helps prevent issues with top panels causing unnecessary vertical scrollbar and datatable glitches when using the non-sticky footer feature in some browsers
-I figure this should be changed now while it's fresh on my mind and may come in handy down the road to have the ability to auto-run 'npm update' when new packages are added and/or to more easily do any other future pre-run processing
-Added a new client-side library for date/time formatting: Luxon v1.26.0
-Added new date/time settings for display format, timezone (utc or local) and an option to enable alternate timezone tooltips
-All date/time values are now formatted via Luxon and displayed according to the new configurable settings
-All markets now return Trade History timestamp values as unix timestamp values formatted in seconds
-Added new settings for Expresss webserver TLS/SSL options
-Added instructions to the README for running the explorer on port 80
-Added instructions to the README for setting up a secure TLS/SSL connection for the explorer
-Moved the 'CORS Support' section higher up in the README
-Add new address_page.enable_hidden_address_view setting which controls whether the special hidden_address address page can be viewed
-Add new address_page.enable_unknown_address_view setting which controls whether the special unknown_address address page can be viewed
-route to special coinbase address is permanently disabled