Releases: bitcart/bitcart-store
Version 0.8.0.0
Name change: from BitcartCC to Bitcart
It is an important milestone in our project. Initially we couldn't take that name because it was already filled by some other projects
Now, after years there is only one bitcart: ours. In fact, it was used as bitcart in code before, and now the UI naming will catch up too
It is more consistent. Also from the community polls it is easier and many people used Bitcart instead of BitcartCC even before.
Together with a new name, we've got a new professional-made logo redesign
This release has breaking changes in docker deployment mostly due to changing of some files.
In order to do the update, run:
./update.sh
./setup.sh
contrib/upgrades/upgrade-to-0800.sh
The env vars are now stored in /etc/profile.d/bitcart-env.sh, and systemd file is also named bitcart.service now.
All plugins have been updated with new naming and logos
Electrums upgrade
With the new electrums and other daemons update, it fixed a rare but possible bug when BTC or LTC wallets got stuck forever. More robustness, more performance!
Tracing internal ETH transactions
If your RPC supports debug_traceTransaction method, then bitcart will also automatically detect internal transactions to your wallet! Unfortunately for now the default RPC doesn't support it, but bitcart is ready
Publish to multiple container registries
Now Bitcart docker image is published to dockerhub, ghcr.io and nirvati registries for better reliability!
Bug fixing
- A bug with metamask button in admin panel have been fixed
- Also, before when you added a new wallet with contract in a new blockchain, it broke the exchange rates system and everything was stuck until a reboot. This is now fixed
get_updates
method now no longer crashes in eth-based daemons- Speed-up payouts loading, fix tron payouts
- Add more data to
new_transaction
event in eth-based coins - Allow passing nonce directly and add
getnonce
method in eth-based coins - Add ability to customize gas price by a multiplier globally or by call in eth-based coins
- Store time it takes for customer to pay for an invoice
- Fix store POS for non-global store
Version 0.7.4.1
Fix an issue with new store POS checkout for tor onedomain mode
Allow to disable POS calculator screen
Version 0.7.4.0
New exchange rates engine
Because of recent issues of coingecko, as well of lack of some local currencies and other issues, our rate engine has been improved.
The exchange rates functionality have been moved from the daemon one layer up, to the Merchants API. If you use exchange_rate
or list_fiat
functions from daemons RPC protocol, please either use Merchants API directly (some usecases of SDK can completely be replaced by the Merchants API), or fetch exchange rates manually. This already gives you more control over how to do the fetching.
For the rest of the users, no breaking changes are made. In fact, the system is more reliable. It is now possible to add custom rate rules in store settings.
If your local currency is not supported, you can do something like
X_MYCUR = X_USD * fiat(USD_MYCUR)
You can use a variety of exchanges. Most of them are added via coingecko exchanges API, but kraken
and fiat
are added natively. fiat refers to currency API hosted by github pages, updated daily list of USD to other fiat currencies rates.
You can also use functions like mean
or median
to gather rate off multiple exchanges. In case one fails, others will be still counted in.
Optimizations in daemons
We continue to optimize the performance and memory usage of the daemons. An issue with infinitely growing list of events for polling has been fixed, it's now capped by 100 events per wallet max. Polling is not used by merchants API, so it was a useless use of memory and performance.
Store POS improvements
The store POS has received numerous improvements in this release.
An initial prototype of a keypad UI is now accessible. It is useful for in-person checkouts for example.
Also, store POS now uses admin panel's checkout page, which means there is now only one reference universal checkout page.
Misc changes
- Fix order_id endpoint in large instances
- Fix issues in payouts sending
- Add batch delete for API tokens
- Handle ValidationError in OAuth2 endpoint
- Improve UX of admin panel's autocompletes
Version 0.7.3.0
Admin panel UI revamp
Admin panel has got a revamped UI - the datatables now display 10 items at a time in full screen mode. Also you will see horizontal scrollbars in less cases.
Navigation is now performed via a toolbar at the left. This allows us to expand the dashboard in future releases with new graphs and statistics
Zero-amount invoices have better formatting now
Important: fixes for template rendering
In case your server is a public instance with many users, update is recommended. In short: in some cases template rendering could allow executing commands inside the worker containers
Batch payouts
It is now possible to batch payouts in one transaction to save on costs, for btc-based coins only for now
Lightning network send amount support
Lightning network now displays sent amount correctly, and payment hash is filled in transaction hashes value
Important: fix memory leaks in daemons
After a large investigation, we've found the issues of the leak to be located in malloc()
linux function. To resolve this complex issue, all our python docker images now include and use jemalloc memory allocator for better performance and to avoid memory fragmentation.
Misc changes
- Don't process pending blocks for fresh created wallets to speed up some operations.
- Close wallet after performing diskless methods to avoid it being loaded in memory
Version 0.7.2.3
Fix excessive memory usage of Lightning gossip and CLI not working
Make order id endpoint return invoice with any status other than expired. If it's expired, a new invoice is created
Version 0.7.2.2
Fix incorrect use of distinct()
when calculating some functions in database
Version 0.7.2.1
Fix /manage/policies
endpoint for non-superusers
Version 0.7.2.0
This releases a ton of improvements and fixes in many different aspects of BitcartCC
MIT license
We are back to being at MIT license, possible to be used in any environments!
2FA support
Yes, it is now possible to protect your account with additional layer (or layers) of security.
After entering password, you will be able to login via either Time-Based One-time Passwords (TOTP) via apps like Google Authenticator or via FIDO2 (hardware devices, i.e. Ledger, YubiKey). Enjoy!
Email verification support
If the server owner has configured server's email server, it will be possible to ask users to verify their emails
Password reset added everywhere
It might sound weird, but before this moment it was not possible for a user to change their own password without asking server admin. This is now fixed, with additional abilities like "Log out all devices".
File upload support
It is possible to use your instance as a small file upload center. One of it's main application is to supply in e.g. Store Theme CSS URL setting or similar, but you can use it however you like
Add ability to generate wallet from the UI
In case you don't want to find an xpub or similar for your wallet, just click on the "+" icon, and generate either watch-only or a hot wallet right from BitcartCC UI in a secure way! Note: don't forget to write down your seed phrase of course!
Refunds support
The long-requested feature, you can now trigger refunds on any invoices with payments sent to them. You will be presented with a variety of options how much to refund, and BitcartCC can even send an email to your customer about the refund automatically.
When customer enters their address for refund, you will be notified via your configured notification providers. Two new templates were added to configure message sent to customer, and message sent to merchant
Add ability to include network fee in invoices
On some blockchains, network fees are extremely big. To avoid spending money on them, you can include it's cost in invoice amount automatically. We might built up improved methods of payment detection for ETH based on this setting
API docs improvements
Our API docs are autogenerated, and we fixed a number of issues preventing correct generation. Now you can see a clear description of when auth is needed or not, and when it is optional, as well as other fixes.
Plugins schema 1.1.0
With new plugins schema, plugin authors can add new metadata, like plugin website, source code URL, docs URL and license. It will be displayed in the UI
Plugin authors: improved BitcartCC CLI
Plugins author can now easily bootstrap their plugins via bitcart-cli plugin init
, validate them via bitcart-cli plugin validate
and package via bitcart-cli plugin package
BitcartCC CLI has been moved to https://github.com/bitcartcc/bitcart-cli, all further releases will be here
Xpub field's label can now be customized
This means that if you select eth as your wallets currency, it won't tell you to enter confusing "Xpub", but instead it will ask you for an address
Improvements in plugin APIs
The plugins API has been extended to allow plugins to register custom payment methods. Take a look at our Lightning network + plugin
Misc improvements
- Script to disable multifactor auth in case of recovery
- Fix local deployment issues once and forever
- Make lightning network implementation use lightning gossip instead of trampoline: this means you would be able to open channels with other nodes just by node id again.
- Improve CLI autocompletion not working sometimes
- Avoid re-building plugins on updates if there's no plugin installed
- Fix store POS rendering for amounts > 1000
- Fix email presets
- Allow sending all balance in payouts
- Fix a long-standing bug where clicking on "Open wallet" button closed websockets and page didn't refresh on payment
- Better logs management UI
- Fix and improve order_id endpoint
- Fix for weird cases when you had a pending amount with sent amount of 0, but exception status paid_partial
- Fix an issue when invoice rate was not normalized in some cases, resulting in "rounding errors" in the UI
- Reduce memory usage of ETH-based daemons
- Tron: use native code for cryptography, speedups
- Improve performance of exchange_rate: avoid fetching unnecessary rates on every call when currency changes
Version 0.7.1.0
This release packs a lot of small, but quality of life improvements and fixes
Fix BTC payments processing
BTC payments processing was not working in some cases since 0.6.15.0 release. This is now fixed.
Underpaid/overpaid payments detection
Now for each invoice you will be able to see sent amount - how much exactly the customer sent, and exception status: none if customer sent the exact required sum, paid_partial
if customer underpaid, paid_over
if customer overpaid.
In case a partial payment is sent, checkout UI now updates and notifies the user that they didn't pay in full yet
Zero amount invoices
It is now possible to create zero amount invoices: such invoices will get complete upon any payment. They are useful for top-up operations in some services.
Password reset
Finally possible! If server owner has configured email server in server policies, it will be possible to reset password by a link to email.
Basic quantity management
The store POS has gained basic quantity management: when a product is bought, it's quantity reduces. Unlimited quantity can be specified by setting -1
as product quantity.
Allow running on bare ip
It is now possible to easily run without a domain, just set BITCART_HOST
to server ip address and it will just work!
Allow running staging updates
In case you want to test a new feature, you can enable new setting in store policies, then update button will build docker images directly from master branch, allowing to test fixes without a release
DNS lookup in the configurator
The configurator now checks if BITCART_HOST
specified actually has any DNS records configured. If it doesn't, it warns the user that the installation will likely fail
Lunanode configurator shut down
The old lunanode configurator deprecated long time ago is now shut down. https://launch.bitcartcc.com now redirects to the configurator.
New endpoint to get/create invoice by order id
A new endpoint POST /invoices/order_id/{order_id}
was added. It gets a pending invoice by order id, or if it doesn't exist, creates one with params specified. This is useful for our plugin integrations and it will be used to avoid duplicate invoices created on i.e. page refresh.
Misc changes and fixes
- In case Merchants API is not available, store POS displays a helpful troubleshooting page
- Use nodejs 18 in all frontends
- Display product name in admin panel invoices page
- Display if discount was applied
- Loading animation for management commands buttons
- Allow setting invoice expiration without modifying store checkout settings
- Fix alembic migrations bad logs
- Fix restoring backups from UI and other UI commands
- Fix invoice export
- Less verbose logging for backups
- Allow configuring debug setting for daemons via
COIN_DEBUG
- Improve reliability of backup script
- Allow running older version via
BITCART_VERSION
in docker deployment - Save plugins data in backups
Version 0.7.0.1
Fixes in plugin API: metadata is now json-encodable, fixed calling product creation hooks, better UI slots in store