Skip to content

Releases: bitcart/bitcart-store

Version 0.8.0.0

13 Sep 22:31
3bc7700
Compare
Choose a tag to compare

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

05 Apr 15:39
204cbc3
Compare
Choose a tag to compare

Fix an issue with new store POS checkout for tor onedomain mode

Allow to disable POS calculator screen

Version 0.7.4.0

03 Apr 21:12
2dbea89
Compare
Choose a tag to compare

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

26 Feb 00:03
38a6352
Compare
Choose a tag to compare

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

07 Feb 18:57
c37ccd2
Compare
Choose a tag to compare

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

07 Feb 10:19
16637f0
Compare
Choose a tag to compare

Fix incorrect use of distinct() when calculating some functions in database

Version 0.7.2.1

07 Feb 00:39
a130b58
Compare
Choose a tag to compare

Fix /manage/policies endpoint for non-superusers

Version 0.7.2.0

06 Feb 23:58
94b2d3d
Compare
Choose a tag to compare

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

10 Jan 15:00
e84c1a5
Compare
Choose a tag to compare

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

22 Dec 17:33
61ae236
Compare
Choose a tag to compare

Fixes in plugin API: metadata is now json-encodable, fixed calling product creation hooks, better UI slots in store