Release v0.9.0: Bug fixes and branding updates
Version bump from 0.2.0 to 0.9.0 with critical Android balance update fixes and complete Electrum→Pallectrum rebranding. Version Updates - electrum/version.py: 0.2.0 → 0.9.0 - electrum/plugins/timelock_recovery/manifest.json: 0.2.0 → 0.9.0 - README.md: version header updated Documentation - README.md: Added Windows builds documentation (portable vs setup) - CHANGELOG.md: Added comprehensive v0.9.0 release notes Qt GUI - Removed "Check for updates" menu item (referenced Electrum servers) - File: electrum/gui/qt/main_window.py
This commit is contained in:
114
CHANGELOG.md
114
CHANGELOG.md
@@ -18,6 +18,120 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [0.9.0] - 2025-12-07
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
This release introduces critical bug fixes for the Android QML app and updates to terminology and documentation to reflect Pallectrum instead of Electrum.
|
||||||
|
|
||||||
|
### Critical Bug Fixes (Android QML)
|
||||||
|
|
||||||
|
#### 1. Fix: Real-time balance updates
|
||||||
|
|
||||||
|
**Issue resolved**: The Android app balance was not updating in real-time when transactions received confirmations or when coinbase rewards became mature (120 blocks). Users had to close and restart the app to see the correct balance.
|
||||||
|
|
||||||
|
**Root Cause**:
|
||||||
|
- Missing `balanceChanged` signal emission when a transaction changed height (received blockchain confirmations)
|
||||||
|
- Missing handler for `blockchain_updated` event that notifies new blocks and coinbase maturation
|
||||||
|
|
||||||
|
**Implemented changes**:
|
||||||
|
|
||||||
|
a) **Fix for transaction confirmations**
|
||||||
|
- File: `electrum/gui/qml/qewallet.py:211`
|
||||||
|
- Added `self.balanceChanged.emit()` in `on_event_adb_tx_height_changed`
|
||||||
|
|
||||||
|
b) **Fix for coinbase maturity**
|
||||||
|
- File: `electrum/gui/qml/qewallet.py:245-250`
|
||||||
|
- Added new handler `on_event_blockchain_updated()`
|
||||||
|
- Emits `balanceChanged` when new blocks arrive
|
||||||
|
|
||||||
|
c) **Debug logging**
|
||||||
|
- File: `electrum/gui/qml/components/controls/BalanceSummary.qml:178`
|
||||||
|
- Added console.log to track balance updates
|
||||||
|
|
||||||
|
**Impact**:
|
||||||
|
- Balance updates automatically when transactions receive confirmations
|
||||||
|
- Mining rewards (coinbase) appear automatically after 120 confirmations
|
||||||
|
- No longer necessary to restart the app to see correct balance
|
||||||
|
- Better user experience for miners
|
||||||
|
|
||||||
|
#### 2. Fix: Typo correction in BalanceDetails.qml
|
||||||
|
|
||||||
|
**Issue resolved**: "Lightning swap" button was causing QML runtime errors.
|
||||||
|
|
||||||
|
**Root Cause**: Typo in QEAmount property - used `.satInt` instead of `.satsInt`
|
||||||
|
|
||||||
|
**Modified file**: `electrum/gui/qml/components/BalanceDetails.qml:217`
|
||||||
|
|
||||||
|
### Terminology and Documentation Updates
|
||||||
|
|
||||||
|
#### 3. Payment request text updates
|
||||||
|
- Replaced "Bitcoin/Electrum" references with "Palladium/Pallectrum"
|
||||||
|
- File: ReceiveTab - Request expiration section
|
||||||
|
- Changes:
|
||||||
|
- "bitcoin addresses" → "Palladium addresses"
|
||||||
|
- "electrum wallets" → "Pallectrum wallet"
|
||||||
|
- "Bitcoin address" → "Palladium address"
|
||||||
|
|
||||||
|
#### 4. Preferences → Units update
|
||||||
|
- Thousands separator checkbox: "bitcoin" → "Palladium"
|
||||||
|
|
||||||
|
#### 5. Official website link updates
|
||||||
|
- Links now point to Pallectrum GitHub repository instead of electrum.org
|
||||||
|
|
||||||
|
#### 6. Whitepaper link updates
|
||||||
|
- "Bitcoin whitepaper" references updated to reflect Palladium
|
||||||
|
- Links to project documentation on GitHub
|
||||||
|
|
||||||
|
#### 7. Windows builds documentation
|
||||||
|
- Added README.md with description of two Windows versions:
|
||||||
|
- `pallectrum-x.x.x-portable.exe` - Recommended for USB drives
|
||||||
|
- `pallectrum-x.x.x-setup.exe` - Standalone installer
|
||||||
|
|
||||||
|
#### 8. Help menu cleanup
|
||||||
|
- Removed "Check for updates" menu item that referenced Electrum update servers
|
||||||
|
- File: `electrum/gui/qt/main_window.py` (lines 844, 897-898)
|
||||||
|
- Reason: Update checker pointed to `https://electrum.org/version` which is not appropriate for Pallectrum
|
||||||
|
|
||||||
|
### Technical Details
|
||||||
|
|
||||||
|
**Balance update architecture**:
|
||||||
|
- Pattern: Event-driven reactive updates
|
||||||
|
- Thread-safe via `@qt_event_listener` decorator
|
||||||
|
- Zero overhead (signal emission is O(1))
|
||||||
|
- No polling - completely event-driven
|
||||||
|
|
||||||
|
**Performance**:
|
||||||
|
- CPU: O(1) per signal emit
|
||||||
|
- Memory: No increase
|
||||||
|
- Battery: No impact (rare events, ~1 every 10 minutes)
|
||||||
|
- Network: No additional traffic
|
||||||
|
|
||||||
|
**Event frequency**:
|
||||||
|
- `adb_tx_height_changed`: Only when wallet TX receives confirmations
|
||||||
|
- `blockchain_updated`: ~1 time every 10 minutes (new block)
|
||||||
|
|
||||||
|
### Upgrade
|
||||||
|
|
||||||
|
**For existing users**:
|
||||||
|
- No data migration required
|
||||||
|
- Existing wallets 100% compatible
|
||||||
|
- No reconfiguration needed
|
||||||
|
|
||||||
|
**What will change**:
|
||||||
|
- Balance updates automatically (no more restarts)
|
||||||
|
- Terminology updated to Palladium/Pallectrum
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
**Tests performed**:
|
||||||
|
- New TX received → Balance updated
|
||||||
|
- TX receives confirmations → Balance from unconfirmed to confirmed
|
||||||
|
- Coinbase matures (120 confirmations) → Reward appears automatically
|
||||||
|
- Lightning swap button → Works correctly
|
||||||
|
- No redundant updates
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [0.2.0] - 2025-12-04
|
## [0.2.0] - 2025-12-04
|
||||||
|
|
||||||
### Technical Cleanup and Optimization
|
### Technical Cleanup and Optimization
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
Licence: MIT Licence
|
Licence: MIT Licence
|
||||||
Version: 0.2.0
|
Version: 0.9.0
|
||||||
Maintainer: Davide Grilli
|
Maintainer: Davide Grilli
|
||||||
Language: Python (>= 3.10)
|
Language: Python (>= 3.10)
|
||||||
Homepage: https://github.com/palladium-coin/pallectrum
|
Homepage: https://github.com/palladium-coin/pallectrum
|
||||||
@@ -39,7 +39,9 @@ Pallectrum is a fork of Electrum v4.6.2, adapted to work with the Palladium bloc
|
|||||||
|
|
||||||
The easiest way to run Pallectrum is to download the pre-built binaries:
|
The easiest way to run Pallectrum is to download the pre-built binaries:
|
||||||
|
|
||||||
- **Windows**: Download `pallectrum-x.x.x-setup.exe`
|
- **Windows**: Two versions available:
|
||||||
|
- `pallectrum-x.x.x-portable.exe` - **Recommended for USB drives**. Saves all data (wallets, configuration) in the same directory as the executable. Perfect for portable installations.
|
||||||
|
- `pallectrum-x.x.x-setup.exe` - Standalone installer. Installs to Program Files and saves data in `%APPDATA%\Pallectrum`.
|
||||||
- **Linux**: Download `pallectrum-x.x.x-x86_64.AppImage`
|
- **Linux**: Download `pallectrum-x.x.x-x86_64.AppImage`
|
||||||
- **Android**: Download `pallectrum-x.x.x.apk`
|
- **Android**: Download `pallectrum-x.x.x.apk`
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,14 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
PROJECT_ROOT="$(dirname "$(readlink -e "$0")")/../../.."
|
PROJECT_ROOT="$(dirname "$(readlink -e "$0")")/../../.."
|
||||||
|
PROJECT_ROOT_OR_FRESHCLONE_ROOT="$PROJECT_ROOT"
|
||||||
CONTRIB="$PROJECT_ROOT/contrib"
|
CONTRIB="$PROJECT_ROOT/contrib"
|
||||||
CONTRIB_APPIMAGE="$CONTRIB/build-linux/appimage"
|
CONTRIB_APPIMAGE="$CONTRIB/build-linux/appimage"
|
||||||
DISTDIR="$PROJECT_ROOT/dist"
|
DISTDIR="$PROJECT_ROOT/dist"
|
||||||
BUILDDIR="$CONTRIB_APPIMAGE/build/appimage"
|
BUILDDIR="$CONTRIB_APPIMAGE/build/appimage"
|
||||||
APPDIR="$BUILDDIR/pallectrum.AppDir"
|
APPDIR="$BUILDDIR/pallectrum.AppDir"
|
||||||
CACHEDIR="$CONTRIB_APPIMAGE/.cache/appimage"
|
CACHEDIR="$CONTRIB_APPIMAGE/.cache/appimage"
|
||||||
TYPE2_RUNTIME_REPO_DIR="$CACHEDIR/type2-runtime"
|
TYPE2_RUNTIME_REPO_DIR="$PROJECT_ROOT_OR_FRESHCLONE_ROOT/contrib/build-linux/appimage/.cache/appimage/type2-runtime"
|
||||||
export DLL_TARGET_DIR="$CACHEDIR/dlls"
|
export DLL_TARGET_DIR="$CACHEDIR/dlls"
|
||||||
PIP_CACHE_DIR="$CONTRIB_APPIMAGE/.cache/pip_cache"
|
PIP_CACHE_DIR="$CONTRIB_APPIMAGE/.cache/pip_cache"
|
||||||
|
|
||||||
|
|||||||
@@ -841,7 +841,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
|
|||||||
about_action.triggered.connect(self.show_about)
|
about_action.triggered.connect(self.show_about)
|
||||||
about_action.setMenuRole(QAction.MenuRole.AboutRole) # make sure OS recognizes it as "About"
|
about_action.setMenuRole(QAction.MenuRole.AboutRole) # make sure OS recognizes it as "About"
|
||||||
self.help_menu.addAction(about_action)
|
self.help_menu.addAction(about_action)
|
||||||
self.help_menu.addAction(_("&Check for updates"), self.show_update_check)
|
|
||||||
self.help_menu.addAction(_("&Official website"), lambda: webopen("https://github.com/palladium-coin/pallectrum"))
|
self.help_menu.addAction(_("&Official website"), lambda: webopen("https://github.com/palladium-coin/pallectrum"))
|
||||||
self.help_menu.addSeparator()
|
self.help_menu.addSeparator()
|
||||||
self.help_menu.addAction(_("&Documentation"), lambda: webopen("https://github.com/palladium-coin/pallectrum/blob/main/user-guide.md")).setShortcut(QKeySequence.StandardKey.HelpContents)
|
self.help_menu.addAction(_("&Documentation"), lambda: webopen("https://github.com/palladium-coin/pallectrum/blob/main/user-guide.md")).setShortcut(QKeySequence.StandardKey.HelpContents)
|
||||||
@@ -894,9 +893,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
|
|||||||
return
|
return
|
||||||
webopen('file:///' + filename)
|
webopen('file:///' + filename)
|
||||||
|
|
||||||
def show_update_check(self, version=None):
|
|
||||||
self.gui_object._update_check = UpdateCheck(latest_version=version)
|
|
||||||
|
|
||||||
def show_report_bug(self):
|
def show_report_bug(self):
|
||||||
msg = ' '.join([
|
msg = ' '.join([
|
||||||
_("Please report any bugs as issues on github:<br/>"),
|
_("Please report any bugs as issues on github:<br/>"),
|
||||||
|
|||||||
@@ -4,5 +4,5 @@
|
|||||||
"author": "orenz0@protonmail.com",
|
"author": "orenz0@protonmail.com",
|
||||||
"available_for": ["qt"],
|
"available_for": ["qt"],
|
||||||
"icon":"timelock_recovery_60.png",
|
"icon":"timelock_recovery_60.png",
|
||||||
"version": "0.2.0"
|
"version": "0.9.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
ELECTRUM_VERSION = '0.2.0' # version of the client package (Pallectrum)
|
ELECTRUM_VERSION = '0.9.0' # version of the client package (Pallectrum)
|
||||||
|
|
||||||
PROTOCOL_VERSION_MIN = '1.4' # electrum protocol
|
PROTOCOL_VERSION_MIN = '1.4' # electrum protocol
|
||||||
PROTOCOL_VERSION_MAX = '1.6'
|
PROTOCOL_VERSION_MAX = '1.6'
|
||||||
|
|||||||
Reference in New Issue
Block a user