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:
2025-12-07 12:08:52 +01:00
parent 5fda8cb823
commit 9bb607bf6f
6 changed files with 122 additions and 9 deletions

View File

@@ -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
### Technical Cleanup and Optimization

View File

@@ -2,7 +2,7 @@
```
Licence: MIT Licence
Version: 0.2.0
Version: 0.9.0
Maintainer: Davide Grilli
Language: Python (>= 3.10)
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:
- **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`
- **Android**: Download `pallectrum-x.x.x.apk`

View File

@@ -3,13 +3,14 @@
set -e
PROJECT_ROOT="$(dirname "$(readlink -e "$0")")/../../.."
PROJECT_ROOT_OR_FRESHCLONE_ROOT="$PROJECT_ROOT"
CONTRIB="$PROJECT_ROOT/contrib"
CONTRIB_APPIMAGE="$CONTRIB/build-linux/appimage"
DISTDIR="$PROJECT_ROOT/dist"
BUILDDIR="$CONTRIB_APPIMAGE/build/appimage"
APPDIR="$BUILDDIR/pallectrum.AppDir"
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"
PIP_CACHE_DIR="$CONTRIB_APPIMAGE/.cache/pip_cache"

View File

@@ -841,7 +841,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
about_action.triggered.connect(self.show_about)
about_action.setMenuRole(QAction.MenuRole.AboutRole) # make sure OS recognizes it as "About"
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.addSeparator()
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
webopen('file:///' + filename)
def show_update_check(self, version=None):
self.gui_object._update_check = UpdateCheck(latest_version=version)
def show_report_bug(self):
msg = ' '.join([
_("Please report any bugs as issues on github:<br/>"),

View File

@@ -4,5 +4,5 @@
"author": "orenz0@protonmail.com",
"available_for": ["qt"],
"icon":"timelock_recovery_60.png",
"version": "0.2.0"
"version": "0.9.0"
}

View File

@@ -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_MAX = '1.6'