Releases: Casraw/Cascoin
V3.3.0
Cascoin Core version 3.3.0 is now available.
This is a minor release with security fixes, macOS 15 (Sequoia) compatibility, Labyrinth UI improvements, and stability fixes across the board. Upgrade is recommended for all users.
Security Fixes (P0)
Critical security issues identified and fixed by fromport:
- Out-of-bounds access: Fixed an OOB read that could be triggered during block processing
- Buffer overflow: Fixed a buffer overflow in network message handling
- Memory leak: Fixed a memory leak in long-running node operations
Security Fixes (P1)
Additional security hardening by fromport:
- NFT bounds validation: Added
MAX_NFTS_PER_TX=100limit to prevent unbounded loop from malicious peers crafting transactions with 255 NFTs - Unsigned char truncation: Added explicit size validation before
unsigned charcast to prevent silent truncation of values >255 in NFT length fields - Signed/unsigned mismatch: Changed count variables from
inttosize_tin NFT parsing - Dead code fix: Fixed
validateWalletOwnership()non-wallet return value from -1 to 0 so success path is reachable
macOS 15 (Sequoia) Compatibility
Cascoin Core now builds and runs on macOS 15 Sequoia. The previous release crashed on startup due to deprecated macOS APIs.
- Replaced
NSUserNotification(removed in macOS 15) withUNUserNotificationCenterfor desktop notifications - Replaced
NSAutoreleasePoolwith modern@autoreleasepoolblocks in Objective-C++ code - Removed
NSBundlemethod swizzling hack that was no longer needed - Added
-framework UserNotificationsto the macOS build system - Fixed Qt6
processEvents()crash inQCocoaEventDispatcheron macOS 15 by replacing the blocking initialization loop with a cooperativeQTimer - CI runner updated from
macos-14tomacos-15 - Fixed crash in QCustomPlot / Labyrinth dialog on macOS
Labyrinth UI Improvements
Multiple Labyrinth graph and display fixes contributed by fromport:
- Y-axis now always scales to minimum 100% and shows human-readable tick labels
- Graph hover tooltip shows percentage of total labyrinth capacity
- Labyrinth weight is displayed as percentage instead of raw ratio
- Fixed
qRoundtruncation issue causing incorrect 100% display - Fixed infinite loop caused by near-zero
pctStepin ticker - Fixed OOM on startup caused by uncapped tick count
- Fixed mouse input field text invisible on dark theme due to white-on-white fallback (fromport)
- Fixed wallet window opening too small (200×150 instead of 850×550) with resize blocked on startup (fromport)
- Added
isVisible()guard to skip expensive Labyrinth disk I/O when tab is not visible (fromport)
Sync & Stability Fixes
- Qt UI freeze at 99.99%: Fixed GUI freeze after Initial Block Download completes (fromport)
- Sync time estimation: Fixed overly optimistic time remaining for the last few blocks during sync (fromport)
- Labyrinth stats showing 0: Fixed SQLite DB empty state overwriting correct wallet data
Naming & Codebase Cleanup
- Completed rename from bee/honey/hive to mouse/cheese/labyrinth including filenames and icons (fromport)
- Updated build-linux.md documentation (fromport)
- Fixed German path placeholder, Discord typo, and added Codeberg link in docs (fromport)
- Fixed
uname -march detection and absolute paths in Linux wrapper scripts (fromport) - Removed build artifacts and distribution directory from repo tracking
Checkpoints
- Integrated new checkpoints for improved initial sync performance
CI & Build
- Upgraded GitHub Actions (checkout, cache, upload/download-artifact) from v4 to v5
- Fixed mingw-w64 posix thread configuration for Windows builds on Ubuntu Noble
- Patched
config.siteto use posix-suffixed compiler binaries (gcc-posix/g++-posix) - Invalidated Windows depends caches to prevent win32/posix thread mismatch
- Added ARM build target to CI (experimental)
Upgrade Notes
This is a recommended upgrade for all users, especially macOS users. No database migration is required. Drop-in replacement for 3.2.2.
Credits
- fromport — security fixes (P0 + P1), Labyrinth UI improvements, sync fixes, codebase cleanup, dark theme fix, wallet window fix
- Alexander Bergmann — macOS 15 compatibility, CI updates, checkpoints, Windows build fixes, ARM build
Special thanks to fromport for sponsoring the ARM CI runner.
V3.2.2
Cascoin Core version 3.2.2 is now available.
This is a minor release that adds official macOS (Apple Silicon) support, fixes a critical Labyrinth display bug, and includes cross-platform build improvements.
macOS (Apple Silicon) Support
Cascoin Core can now be built and run natively on macOS with Apple Silicon (ARM64). Pre-built binaries for macOS are included in the release assets.
Installing dependencies on macOS
Install Homebrew and the required packages:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)"
brew update
brew install autoconf automake libtool pkg-config \
boost berkeley-db@5 miniupnpc openssl@3 \
qt@6 qrencode zeromq libevent protobuf pythonBuilding on macOS
./autogen.sh
BOOST_ROOT="$(brew --prefix boost)"
BDB_PREFIX="$(brew --prefix berkeley-db@5)"
QT_PREFIX="$(brew --prefix qt@6)"
QT_HOST_BINS="$QT_PREFIX/share/qt/libexec"
export CPPFLAGS="-I$BDB_PREFIX/include -I$BOOST_ROOT/include"
export LDFLAGS="-L$BDB_PREFIX/lib -L$BOOST_ROOT/lib"
export PKG_CONFIG_PATH="$QT_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
export PATH="$QT_PREFIX/bin:$PATH"
./configure \
--with-gui=qt6 \
--enable-wallet \
--with-incompatible-bdb \
--with-boost="$BOOST_ROOT" \
MOC="$QT_HOST_BINS/moc" \
UIC="$QT_HOST_BINS/uic" \
RCC="$QT_HOST_BINS/rcc"
make -j"$(sysctl -n hw.ncpu)"See doc/build-macos.md for full details and troubleshooting.
Labyrinth Display Fix
A combination of three issues caused the Labyrinth tab and Overview page to show zero values for blocks found, rewards, costs, and mice counts after extended uptime:
-
SQLite busy timeout missing: The BCT database did not set a
busy_timeout, causing concurrent read queries from the GUI thread to fail silently withSQLITE_BUSY. A 5-second busy timeout has been added. -
Race condition in table model updates: The
HiveTableModelsummary variables were reset to zero before new data was loaded from the background thread. Summary values are now accumulated in local variables and written atomically. -
Expired mice excluded from totals: The Labyrinth tab and Overview page obtained totals from the table model, which only loads non-expired mice. Both pages now query the database summary directly.
Additional Fixes
- Fixed missing
cs_mainlock in reward rescan during startup - Extended
BCTSummarywith per-status mice counts (immatureBees,matureBees,expiredBees) - Renamed internal comments from "Hive" / "Bee" to "Labyrinth" / "Mice"
Cross-Platform Build Fixes
- Fixed
scrypt.h/scrypt.cppendian helper functions to compile on macOS without runtime source patching - Fixed missing
#include <QElapsedTimer>insrc/qt/bitcoin.cppfor Qt6 - Changed
ax_boost_system.m4to emit a warning instead of a fatal error for header-only Boost
CI/CD
- Added
build-macosjob to GitHub Actions (macos-14runner, ARM64) - macOS build artifacts are now included in release drafts
Dependencies
- Updated zlib from 1.3.1 to 1.3.2 (fixes 404 on cross-compilation for Windows)
Upgrade Notes
This is a recommended upgrade for all users. No database migration is required. This is a drop-in replacement for 3.2.1.x.
V3.2.1.2
Cascoin Core version 3.2.1.2 is now available.
This is a hotfix release that significantly improves the logging system to provide a cleaner user experience while maintaining comprehensive debugging capabilities for developers.
Logging Improvements
Reduced Log Spam
-
Removed GetEffectivePowTypeForHashing spam: Completely eliminated the verbose logging from the
GetEffectivePowTypeForHashingfunction that was cluttering normal operation logs. -
Converted development logs to debug-only: Moved numerous verbose development logs from always-on (
LogPrintf) to debug-only (LogPrint) with appropriate categories:- MinotaurX algorithm logs now use
-debug=minotaurx - Hive mining logs now use
-debug=hive - Network connection logs now use
-debug=net - RPC authentication logs now use
-debug=rpc - Qt wallet logs now use
-debug=qt
- MinotaurX algorithm logs now use
Enhanced Debug Categories
The following debug categories are now available for detailed troubleshooting:
hive- Hive mining and bee creation transaction logsminotaurx- MinotaurX algorithm and difficulty adjustment logsnet- Network connection, socket, and peer management logsrpc- RPC server and authentication logsqt- Qt GUI and wallet interface logsrialto- Rialto messaging system logs
Usage Examples
# Normal operation - clean, user-friendly logs
./cascoind
# Debug specific components
./cascoind -debug=hive -debug=minotaurx
# Debug all network issues
./cascoind -debug=net
# Enable all debug logging
./cascoind -debug=allTechnical Changes
- Converted 25+ verbose
LogPrintfstatements to appropriateLogPrintcategories - Maintained all important user-facing warnings and error messages
- Improved consistency with Bitcoin Core logging practices
- Enhanced debugging capabilities for developers and advanced users
Benefits
- Cleaner logs: Normal operation now shows only essential information
- Better debugging: Developers can enable specific debug categories as needed
- Improved performance: Reduced I/O overhead when debug logging is disabled
- Bitcoin Core compatibility: Follows established logging patterns from upstream
Upgrade Notes
This is a recommended upgrade for all users. The logging improvements take effect immediately with no configuration changes required. Users who previously found the logs too verbose will notice a significant improvement in readability.
V3.2.1
Cascoin Core version 3.2.1 is now available.
Bug Fixes
Labyrinth Tab - BCT Database Improvements
-
Fixed foreign BCT detection: The SQLite database now correctly validates that all stored BCTs belong to the wallet. Foreign BCTs (from other wallets) are automatically detected and the database is rebuilt on startup.
-
Fixed BCT status updates: BCT status (immature/mature/expired) and "Estimated Time" now update correctly when new blocks arrive. Status is calculated dynamically based on current chain height.
-
Fixed reward tracking: Added
rescanRewardsOnly()function that runs on every startup to catch any missed mining rewards. This ensures rewards are properly attributed to BCTs even if they were missed during normal operation. -
Improved summary display: The Labyrinth tab summary now always shows total rewards from all BCTs (including expired ones), even when the "Include expired mice" checkbox is unchecked.
Technical Changes
- Added
validateWalletOwnership()function to detect BCTs that don't belong to the current wallet - Added
creationHeight,maturityHeight,expirationHeightfields toCBeeCreationTransactionInfofor accurate status calculation - Improved transaction ordering in database operations to ensure BCTs are committed before reward scanning
- Added debug logging for reward matching to aid troubleshooting
Upgrade Notes
This is a recommended upgrade for all users. The database will automatically validate and rebuild if necessary on first startup.
V3.2.0
Cascoin Core v3.2.0 – BCT Persistent Database
Overview
- Major Feature: SQLite-based persistent database for BCT (Bee Creation Transaction) data
- Performance: Drastically faster startup times by avoiding full wallet scans
- Incremental Updates: New blocks are processed efficiently without complete rescan
- Reorg Handling: Automatic handling of blockchain reorganizations
- GUI Integration: Asynchronous database queries for smooth user interface
Highlights
- SQLite Integration: New
bct_database.sqlitefile in Cascoin data directory - Fast Startup: BCT data is loaded from database instead of scanning wallet
- Incremental Block Processing: Only new blocks are analyzed
- JSON Migration: Automatic migration from old
bct_cache.jsonfile - New RPC Commands:
rescanbctdatabasefor manual rescans - Startup Parameters:
-rescanbctfor full database rescan
New Features
SQLite-based BCT Database
- Persistent Storage: BCT data survives restarts without re-scanning
- Efficient Queries: Indexed search by status, height, and honey address
- Atomic Transactions: Data integrity guaranteed through SQLite transactions
- Checksum Validation: Automatic detection of corrupted records
Incremental Block Processing
- ValidationInterface: Automatic processing of new blocks
- BlockConnected: Detection of new BCTs and Hive rewards
- BlockDisconnected: Correct handling of reorgs
- Status Updates: Automatic updates (immature → mature → expired)
Rescan Functionality
-rescanbctParameter: Full rescan at startuprescanbctdatabaseRPC: Manual rescan with optional height limitsrescanbctdatabase [start_height] [stop_height]- Integration with
-reindex: BCT rescan is automatically triggered - Integration with
rescanblockchain: BCT rescan after wallet rescan
GUI Improvements
- Asynchronous Queries: Database operations in background thread
- No GUI Freeze: User interface remains responsive during queries
- Instant Display: In-memory cache for fast rendering
- Automatic Updates: GUI responds to database updates
Technical Details
Database Schema
-- BCT main table
CREATE TABLE bcts (
txid TEXT PRIMARY KEY,
honey_address TEXT,
status TEXT,
bee_count INTEGER,
creation_height INTEGER,
maturity_height INTEGER,
expiration_height INTEGER,
timestamp INTEGER,
cost INTEGER,
blocks_found INTEGER,
rewards_paid INTEGER,
profit INTEGER,
checksum TEXT,
updated_at INTEGER
);
-- Rewards table
CREATE TABLE rewards (
coinbase_txid TEXT PRIMARY KEY,
bct_txid TEXT,
amount INTEGER,
height INTEGER
);
-- Sync status
CREATE TABLE sync_state (
key TEXT PRIMARY KEY,
value TEXT
);
-- Schema version for migrations
CREATE TABLE schema_version (
version INTEGER
);Indexes for Performance
idx_bcts_status- Fast filtering by statusidx_bcts_creation_height- Efficient height queriesidx_bcts_honey_address- Search by honey addressidx_rewards_bct_txid- Reward assignmentidx_rewards_height- Height-based reward queries
New Files
src/bctdb.h- BCTDatabaseSQLite class and BCTRecord structuresrc/bctdb.cpp- SQLite implementationsrc/test/bctdb_tests.cpp- Unit tests and property tests
Removed Files
src/qt/bctdatabase.h- Old JSON-based implementationsrc/qt/bctdatabase.cpp- Old JSON-based implementation
RPC Changes
New Command: rescanbctdatabase
rescanbctdatabase [start_height] [stop_height]
Arguments:
start_height (optional): Start height for rescan (default: 0)
stop_height (optional): End height for rescan (default: current height)
Returns:
{
"start_height": 0,
"stop_height": 500000,
"bcts_found": 42
}Startup Parameters
-rescanbct
Deletes the BCT database and performs a full rescan.
./cascoind -rescanbctMigration from v3.1.x
Automatic Migration:
- On first startup,
bct_cache.jsonis automatically migrated to SQLite - After successful migration, the JSON file is deleted
- No manual action required
Fallback Behavior:
- If database doesn't exist: Full scan from wallet
- If database is corrupt: Automatic rescan of affected entries
Performance Comparison
| Operation | v3.1.x (JSON) | v3.2.0 (SQLite) |
|---|---|---|
| Startup with 1000 BCTs | ~30s | <1s |
| New block | Full Rescan | Incremental |
| GUI refresh | Blocking | Asynchronous |
| Reorg handling | Manual | Automatic |
Build Changes
New Dependency: SQLite3
- Linux:
sudo apt-get install libsqlite3-dev - macOS:
brew install sqlite3 - Windows: Automatic via depends
Makefile Changes:
$(SQLITE3_LIBS)added to all relevant binaries- New source files in
src/Makefile.am
Changelog
- [Feature][Database] SQLite-based persistent BCT database
- [Feature][Database] Incremental block processing via ValidationInterface
- [Feature][Database] Automatic reorg handling
- [Feature][Database] Checksum validation for data integrity
- [Feature][RPC] New
rescanbctdatabasecommand - [Feature][Startup] New
-rescanbctparameter - [Feature][Migration] Automatic JSON-to-SQLite migration
- [Enhancement][GUI] Asynchronous database queries
- [Enhancement][GUI] In-memory cache for fast display
- [Enhancement][Performance] Indexed database queries
- [Enhancement][Integration] BCT rescan on
-reindexandrescanblockchain - [Cleanup] Removal of old JSON-based BCTDatabase
Bug Fixes (Post-Release)
- [Bugfix][Database]
updateStatus()now checks for valid heights - Records with height 0 (e.g., from JSON migration) are no longer incorrectly marked as "expired" - [Bugfix][Database]
updateAllStatuses()ignores records withcreation_height = 0- SQL queries only update records with valid height values - [Bugfix][Database]
initializeOnStartup()detects records with missing heights and automatically triggers a full rescan - [Bugfix][Database]
performInitialScan()now also scans Hive coinbase transactions for rewards - previously only BCTs were scanned but no rewards were captured - [Bugfix][Database] Correct detection of Hive coinbase transactions with
IsHiveCoinBase()instead ofIsCoinBase() - [Bugfix][GUI] Fallback to wallet scan when SQLite database is empty
Upgrade Notes
Recommended for all users:
- Significantly faster startup times
- No more GUI freezes during BCT queries
- Automatic handling of blockchain reorgs
No data migration required:
- Old JSON data is automatically migrated
- Wallet data remains unchanged
In case of problems:
-rescanbctfor full database rebuildrescanbctdatabaseRPC for partial rescan
Known Issue (fixed):
If no bees are displayed in the GUI after upgrading to v3.2.0, this is due to records with missing height data from JSON migration. The current version automatically detects this and performs a rescan. If the problem persists:
rm ~/.cascoin/bct_database.sqlite
./cascoin-qtCredits
Thanks to everyone who directly contributed to this release:
- Casraw
V3.1.6
Cascoin Core v3.1.6 – Mice NFT System Stabilization and Critical Fixes
Overview
- Critical bug fix release: Resolves major issues preventing Mice NFT functionality
- NFT transaction validation: Fixed parser bugs causing wallet load errors
- Network compatibility: NFT transactions now propagate and confirm correctly
- GUI stability: Eliminated flickering and disappearing NFT entries
- Memory optimization: Removed aggressive limits that broke large-scale operations
Highlights
- Fixed Wallet Load Error: Resolved "Error reading wallet.dat" caused by invalid Mice NFT transactions
- NFT Transaction Broadcasting: Mice NFT transactions now successfully broadcast and mine
- Parser Overhaul: Corrected OP_RETURN data parsing for CASTOK/CASXFR format
- Large Labyrinth Support: Removed 1,000 mice limit, now supports up to 1 million mice per labyrinth
- GUI Stability: Fixed flickering NFT entries and incorrect labyrinth display
- Build System: Resolved lrelease path issues for successful compilation
Critical Bug Fixes
Wallet Load Failure - "Error reading wallet.dat"
- Severity: CRITICAL - Prevented wallet from loading with Mice NFT transactions
- Symptoms:
- "Error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect."
- Mice NFT transactions marked as invalid during wallet load
- Warning: "Wallet contains invalid transaction dcb067... (validation: invalid-bee-nft-token)"
- Root Causes:
- OP_RETURN Parser Bug: NFT data read from wrong byte offset (offset 7 instead of 9)
- Bee Index Limit: Hard limit of 1,000 mice rejected labyrinths with 200,000 mice
- Magic Byte Detection: Validation function used wrong offset (1-7 instead of 2-8)
- Solution:
- Corrected OP_RETURN format parsing:
OP_RETURN(0x6a) + PUSH(6) + "CASTOK" + OP_PUSHDATA1(0x4c) + length + data - Parser now correctly reads data starting at offset 10 (after OP_PUSHDATA1 and length byte)
- Increased bee index limit from 1,000 to 1,000,000 for future-proofing
- Updated validation function to match parser format (offset 2-8 for magic bytes)
- Corrected OP_RETURN format parsing:
- Impact: All Mice NFT transactions now load correctly without wallet errors
NFT Transaction Broadcasting Failure
- Severity: CRITICAL - Mice NFT transactions stuck as "0/unconfirmed, not in memory pool"
- Symptoms:
- Transactions created successfully but never broadcast to network
- "error code: -26, scriptpubkey" rejection from mempool
- Transactions marked as "abandoned" or stuck unconfirmed indefinitely
- Root Cause: Policy check rejected CASTOK/CASXFR transactions as "non-standard"
- Only
OP_RETURN + OP_BEEwas whitelisted as standard - Mice NFT format
OP_RETURN + "CASTOK"was treated as non-standard
- Only
- Solution: Extended
IsStandardTx()policy to accept CASTOK/CASXFR magic bytes- Added explicit check for Mice NFT transactions (CASTOK = tokenize, CASXFR = transfer)
- Transactions now pass mempool validation and broadcast to network
- Impact: Mice NFT transactions successfully propagate and can be mined
GUI Flickering - Disappearing NFT Entries
- Severity: HIGH - NFTs appeared and disappeared randomly in GUI
- Symptoms:
- NFT entries briefly visible then vanish
- Empty NFT list after periodic refresh
- Inconsistent display between refreshes
- Root Cause:
updateBeeNFTList()calledbeginResetModel()+clear()+endResetModel()before new data loaded- Race condition: periodic scan clears list, new data arrives later
- User sees empty list between clear and data reload
- Solution: Removed premature list clearing
- List only updates when new data arrives via
updateBeeNFTListWithData() - NFTs remain visible until fresh data replaces them (no flickering)
- List only updates when new data arrives via
- Impact: Stable, flicker-free NFT display
Incorrect NFT Display - Showing Labyrinths Instead of NFTs
- Severity: HIGH - GUI showed all labyrinths as "NFTs" even when not tokenized
- Symptoms:
- 8 "NFT" entries displayed immediately after creating 8 labyrinths
- No actual tokenization performed, but GUI showed NFTs anyway
- Root Cause:
updateTableModelWithRealData()filtered for!alreadyTokenized(available mice) instead of tokenized ones- Logic inverted: showed labyrinths with available mice, not actual NFTs
- Solution: Corrected filter to show only
alreadyTokenized == truemice- Each tokenized mouse displayed as individual NFT entry
- Labyrinths without tokenized mice correctly show 0 NFTs
- Impact: NFT list accurately reflects actual tokenized mice only
Technical Improvements
NFT Parser Rewrite
Previous Implementation (Broken):
// Wrong offsets - read length from position 7 ('K' in "CASTOK")
std::vector<unsigned char> magicBytes(scriptPubKey.begin() + 1, scriptPubKey.begin() + 7);
unsigned char dataLen = scriptPubKey[7];
std::vector<unsigned char> rawData(scriptPubKey.begin() + 8, scriptPubKey.begin() + 8 + dataLen);New Implementation (Fixed):
// Correct OP_RETURN format: OP_RETURN(0x6a) + PUSH(6) + "CASTOK" + OP_PUSHDATA1(0x4c) + length + data
// Check magic bytes at offset 2-8
std::vector<unsigned char> magicBytes(scriptPubKey.begin() + 2, scriptPubKey.begin() + 8);
// Read length byte after OP_PUSHDATA1 (offset 9)
unsigned char dataLen = scriptPubKey[9];
// Extract data starting at offset 10
std::vector<unsigned char> rawData(scriptPubKey.begin() + 10, scriptPubKey.begin() + 10 + dataLen);Parsing Results Before/After:
- Before:
beeIndex=51491, maturity=3117219840, expiry=3203203074(garbage data) - After:
beeIndex=0, maturity=178637, expiry=704237(correct values)
Policy Enhancement for NFT Transactions
// Added to IsStandardTx() in policy.cpp
// Special handling for Mice NFT transactions (CASTOK = tokenize, CASXFR = transfer)
if (txout.scriptPubKey.size() >= 8 &&
txout.scriptPubKey[0] == OP_RETURN &&
txout.scriptPubKey[1] == 0x06) { // PUSH 6 bytes
std::vector<unsigned char> magic(txout.scriptPubKey.begin() + 2, txout.scriptPubKey.begin() + 8);
std::vector<unsigned char> castok = {'C', 'A', 'S', 'T', 'O', 'K'};
std::vector<unsigned char> casxfr = {'C', 'A', 'S', 'X', 'F', 'R'};
if (magic == castok || magic == casxfr) {
// Accept Mice NFT transactions as standard
return true;
}
}Bee Index Limit Adjustment
- Old Limit: 1,000 mice per labyrinth (arbitrary low cap)
- New Limit: 1,000,000 mice per labyrinth (future-proof)
- Rationale: Users creating 200,000-mouse labyrinths hit hard limit
- Impact: Large-scale labyrinth operations now fully supported
Additional Bug Fixes
Build System Issues
- Fixed: Build failing at
qt/locale/bitcoin_de.qmgeneration - Root Cause: Hardcoded
LRELEASE=/usr/bin/lreleasepath incorrect for some systems - Solution: Build now accepts
LRELEASE=/usr/local/bin/lreleaseoverride - Updated:
doc/build-linux.mdwith proper lrelease path detection
Excessive Debug Logging
- Fixed: Thousands of PoW validation log entries causing slow startup
- Removed: Verbose
GetPoWHashandCheckProofOfWorklogs - Solution: Logging now gated behind
-debug=minotaurxflag - Impact: Cleaner logs and faster startup times
GUI Warning Messages
- Fixed: "Unknown property box-shadow" warnings
- Fixed: "Unknown property content/transform" warnings
- Root Cause: CSS properties not supported by Qt stylesheet engine
- Solution: Removed unsupported CSS pseudo-element styling
- Impact: Clean startup without CSS warnings
BCT Update Log Spam
- Fixed: "BCT update already in progress, skipping duplicate request" spam
- Root Cause: Concurrent updates discarded instead of queued
- Solution: Pending-flag system queues updates instead of dropping them
- Impact: No more warning spam, reliable update completion
BeeNFT Selection Connection Error
- Fixed: "Cannot connect (nullptr)::selectionChanged"
- Root Cause: Connection attempt before model assignment
- Solution: Connection established after
setModel()call - Impact: No more connection errors on startup
Wallet Lock Retry Mechanism
- Fixed: "Could not acquire wallet lock for BCT update after 3 retries"
- Enhancement: Increased retries from 3 to 10 with delays
- Impact: More resilient concurrent wallet operations
RPC Terminology Consistency (fromport)
- Fixed: Inconsistent use of "bee_count" in RPC responses
- Changes: Renamed
bee_counttomice_countin RPC code for consistency - Files Updated:
src/rpc/rawtransaction.cppsrc/rpc/client.cppsrc/wallet/rpcwallet.cpp
- Impact: RPC output now uses consistent "mice" terminology matching GUI
Memory Optimization Removals
Previous memory "optimizations" were too aggressive and broke functionality:
Removed Artificial Limits:
- Stopped reward calculation prematurelyMAX_COINBASE_PROCESS = 5000- Limited BCT scanning arbitrarilyMAX_BCT_PROCESS = 10000- Capped results artificiallyMAX_BCTS_RESULT = 1000- Deleted needed data mid-processinghiveCoinbaseMap.clear()when size > 500
New Approach:
- Pre-filter relevant transactions before processing (memory-bounded naturally)
- Only accumulate data for owned BCTs (significantly smaller dataset)
- Let natural data structures manage memory without artificial caps
- Proper algorithmic optimization instead of hard limits
User Impact
Before v3.1.6:
- ❌ Wallet fails to load with "Error reading wallet.dat"
- ❌ Mice NFT transactions stuck unconfirmed forever
- ❌ GUI shows all labyrinths as "NFTs" incorrectly
- ❌ NFT entries flicker and disappear randomly
- ❌ Cannot tokenize mice from large labyrinths (>1,000 mice)
- ❌ Build fails on many systems due ...
V3.1.5
Cascoin Core v3.1.5 – Enhanced Labyrinth Experience and Localization
Overview
- Feature enhancement release: Significantly improves The Labyrinth user experience
- Auto-refresh functionality: The Labyrinth view now updates automatically when blocks are found and mice are created
- Language system overhaul: Fixes mixed German/English interface and properly detects system language
- UI improvements: Enhanced readability and user interface polish
- Performance enhancements: Optimized update mechanisms for better responsiveness
Highlights
- Automated Labyrinth Updates: No more manual refreshing - the labyrinth view updates automatically on new blocks and transactions
- System Language Detection: Application now starts in your system's language instead of defaulting to English
- Fixed Disappearing Mice: Resolved critical issue where mice would vanish during wallet operations
- Real BCT Data: BCT NFT system now uses actual wallet data instead of dummy test information
- Unified Data Storage: All Cascoin data now consistently stored in standard directory (~/.cascoin/)
- Fixed UI Elements: Improved visibility and usability of the "Create Mice" interface
- Periodic Refresh: Background refresh ensures labyrinth status stays current even during network issues
- Enhanced User Experience: Smoother, more responsive interface with fewer manual interactions required
New Features
Automatic Labyrinth Refresh System
- Real-time Updates: The Labyrinth view automatically refreshes when new blocks are found
- Transaction-triggered Updates: Mouse status updates immediately when wallet transactions occur
- Periodic Background Refresh: 60-second background updates ensure data stays current
- Smart Debouncing: Prevents excessive updates during periods of high activity
- Status Synchronization: Both global summary and individual mouse data stay synchronized
Enhanced Language Support
- System Language Detection: Application automatically detects and uses your system's default language
- Proper Fallback: Graceful fallback to English if system locale cannot be determined
- Fixed Mixed Languages: Resolved issues where German and English text appeared simultaneously
- Improved Translations: Added missing translations for Labyrinth-specific terms
- Consistent Terminology: Standardized German translations throughout the interface
Bug Fixes
Labyrinth Auto-Update Issues
- Fixed: Labyrinth view not updating when new blocks were found
- Fixed: Mouse status not refreshing when new mice were created
- Fixed: Manual refresh required to see maturation status changes
- Fixed: Global summary becoming outdated during extended sessions
- Fixed: Mice disappearing from labyrinth view during wallet operations
- Root Cause: Missing connections between block/transaction notifications and UI updates, plus wallet lock contention
- Solution: Implemented comprehensive auto-update system with multiple triggers and wallet lock retry mechanism
BCT Database and Data Integrity
- Fixed: Mice disappearing temporarily when wallet was busy (syncing, building, etc.)
- Fixed: BCT database stored in inconsistent location separate from other Cascoin data
- Fixed: BCT NFT system showing dummy/test data instead of real wallet BCT data
- Fixed: Inconsistent data between labyrinth view and NFT tokenization system
- Root Cause: TRY_LOCK causing empty results when wallet busy, plus inconsistent storage paths
- Solution: Wallet lock retry system with delays, unified data directory, and real-time wallet synchronization
Language and Localization
- Fixed: Application always starting in English regardless of system language
- Fixed: Mixed German/English text throughout the interface
- Fixed: Hardcoded English strings in Labyrinth functionality
- Fixed: Missing translations for mouse-related terminology
- Root Cause: Hard-coded English default and untranslated strings
- Solution: System locale detection and comprehensive translation coverage
User Interface Improvements
- Fixed: "Create Mice" input field text was invisible (white text on white background)
- Fixed: Poor contrast made input field difficult to read
- Fixed: Missing visual feedback during input
- Root Cause: CSS styling conflicts with dark theme background
- Solution: High-contrast color scheme with proper background and text colors
Technical Implementation
Auto-Update Architecture
- Block Change Detection: Connected
ClientModel::numBlocksChangedsignal to refresh labyrinth data - Transaction Updates: Enhanced
WalletModel::updateTransaction()to trigger labyrinth refreshes - Debounced Updates: 1-second timer prevents excessive refresh calls during rapid changes
- Periodic Refresh: 60-second timer ensures data freshness during extended sessions
- Smart Updates: Only refreshes when necessary to maintain performance
- Wallet Lock Retry: 3-retry system with 50ms delays prevents empty results during wallet operations
Language System Improvements
- System Locale Detection: Modified
GetLangTerritory()to useQLocale::system().name() - Translation Coverage: Added
tr()wrapper to previously hardcoded strings - German Terminology: Proper translations for adventure mice, resting mice, and labyrinth terms
- Fallback Mechanism: Graceful handling when system locale detection fails
BCT Database Architecture Overhaul
- Unified Data Directory: Moved BCT database from
~/.local/share/Cascoin/to standard~/.cascoin/directory - Automatic Migration: Seamless migration from old location to new location with backup preservation
- Real-time Synchronization: BCT database now syncs with actual wallet BCT data instead of using dummy data
- Wallet Integration:
HiveTableModelautomatically updates BCT database when wallet data changes - Global Instance Management: Centralized BCT database access for system-wide data consistency
UI Enhancements
- CSS Styling: Comprehensive QSpinBox styling for optimal readability
- Color Scheme: Light gray background (#f7fafc) with dark text (#1a202c) for maximum contrast
- Focus States: Blue highlight (#3182ce) for better input field visibility
- Button Styling: Enhanced up/down button appearance with hover effects
User Impact
- Seamless Experience: Labyrinth data updates automatically without manual intervention
- Native Language: Interface appears in your system's language from first startup
- Improved Readability: All input fields and text are clearly visible and easy to read
- Reduced Clicks: No more manual refresh buttons needed for current data
- Better Responsiveness: Immediate feedback when mice are created or mature
Developer Notes
- New Slot: Added
onBlocksChanged()toHiveDialogclass - Enhanced Model: Extended wallet model with automatic hive table updates
- Timer Management: Proper timer cleanup and debouncing mechanisms
- Translation Updates: Regenerated translation files with new translatable strings
- CSS Architecture: Modular styling approach for better maintainability
Upgrade Notes
- Automatic Configuration: New language detection works immediately upon upgrade
- No Data Migration: Existing wallet and labyrinth data remain unchanged
- Backward Compatibility: Can safely downgrade if needed (manual refresh returns)
- Settings Preservation: User preferences and custom language settings respected
- Fresh UI: Enhanced interface elements take effect immediately
System Requirements
- Qt6 Framework: Continues to require Qt6 for modern interface support
- Language Packs: System language packs improve localization experience
- Performance: Minimal additional resource usage from auto-update features
- Cross Platform: Available for Windows, Linux, and macOS
Translation Improvements
- German Localization:
- "adventure mice" → "Abenteuer-Mäuse"
- "resting mice" → "ruhende Mäuse"
- "No live mice currently in wallet" → "Derzeit keine lebenden Mäuse im Portemonnaie"
- "The Labyrinth is not enabled on the network" → "Das Labyrinth ist im Netzwerk nicht aktiviert"
- "to create %1 mice" → "um %1 Mäuse zu erstellen"
Performance Optimizations
- Smart Refresh: Only updates when data actually changes
- Debounced Calls: Prevents UI lag during periods of high blockchain activity
- Efficient Queries: Optimized data retrieval for labyrinth statistics
- Background Processing: Non-blocking updates maintain interface responsiveness
Changelog
- [Feature][Labyrinth] Automatic refresh when new blocks are found
- [Feature][Labyrinth] Automatic refresh when wallet transactions change
- [Feature][Labyrinth] Periodic 60-second background refresh for data consistency
- [Feature][Language] System language detection replaces hard-coded English default
- [Feature][Language] Comprehensive German translation for Labyrinth functionality
- [Feature][BCT Database] Automatic migration to standard Cascoin data directory
- [Feature][BCT Database] Real-time synchronization between wallet and BCT NFT system
- [Fix][Labyrinth] Mice no longer disappear during wallet operations (sync, build, etc.)
- [Fix][BCT Database] Moved from inconsistent
~/.local/share/to standard~/.cascoin/directory - [Fix][BCT NFT] Replaced dummy/test data with real wallet BCT information
- [Fix][UI] Create mice input field visibility with high-contrast styling
- [Fix][UI] Proper color scheme for input fields in dark theme areas
- [Fix][Wallet] Wallet lock retry mechanism prevents data loss during concurrent operations
- [Enhancement][Performance] Debounced update system prevents excessive refresh calls
- [Enhancement][Performance] Wallet lock retry with delays for be...
V3.1.4
Cascoin Core v3.1.4 – GUI Menu and Translation Hotfix
Overview
- Hotfix release: Addresses non-functional menu items in the Qt GUI and translation issues
- Critical bug fix: Resolves unclickable dropdown menu items in the header
- Translation improvements: Various localization fixes by fromport
- No breaking changes: Maintains full compatibility with v3.1.3
Highlights
- Fixed Menu Items: Restored functionality to About, Options, and Debug window menu items
- Improved User Experience: All header dropdown menu items are now fully clickable and functional
- Translation Fixes: Various translation issues corrected for better localization
- Quick Fix: Minimal change hotfix focusing on GUI accessibility and translations
Bug Fixes
GUI Menu Functionality
- Fixed: "About Cascoin" menu item was disabled and unclickable
- Fixed: "Options..." settings menu item was disabled and unclickable
- Fixed: "Debug window" menu item was disabled and unclickable
- Root Cause: Menu actions were disabled during initialization but never re-enabled when client model loaded
- Solution: Added proper enablement of menu actions in
setClientModel()method
Translation Fixes
- Fixed: Various translation issues corrected by fromport
- Improved: Better localization support and text consistency
Technical Details
- File Modified:
src/qt/bitcoingui.cpp - Change: Added
setEnabled(true)calls foraboutAction,optionsAction, andopenRPCConsoleAction - Location: Menu actions are now enabled when the client model is successfully loaded
- Impact: All menu items in File, Settings, and Help menus are now fully functional
User Impact
- Immediate Fix: Users can now access settings, about information, and debug console through the menu
- Better Translations: Improved text consistency and localization for international users
- No Data Loss: This fix does not affect wallet data, blockchain data, or configuration
- Enhanced Usability: Complete restoration of GUI menu functionality and better language support
Upgrade Notes
- Safe Upgrade: No database, wallet, or configuration changes
- Backward Compatible: Can safely roll back to v3.1.3 if needed
- Restart Required: Simple restart after replacing binaries
- No Migration: No data migration or re-indexing required
System Requirements
- Unchanged: Same system requirements as v3.1.3
- Qt6 Compatible: Continues to support modern Qt6 framework
- Cross Platform: Available for Windows, Linux, and macOS
Changelog
- [Fix][GUI] Enable disabled menu actions (About, Options, Debug window) when client model loads
- [Fix][GUI] Restore full functionality to header dropdown menu items
- [Fix][Translation] Various translation issues corrected by fromport
- [Maintenance] Minor code cleanup in menu initialization sequence
For the complete list of changes, see the commit history.
Installation Notes
- Simple Update: Replace existing binaries with v3.1.4
- No Backup Required: This hotfix does not modify data files
- Immediate Effect: Menu functionality restored immediately after restart
V3.1.3
Cascoin Core v3.1.3 – Maintenance Update
Overview
- Maintenance release focusing on logging and GUI reliability
- No breaking changes; fully compatible with v3.1.2
Highlights
- Automatic shrinking of
debug.log - GUI "Hide" button fix in the overlay/progress view
Logging
debug.logis now automatically trimmed to prevent unbounded growth, preserving recent entries and capping disk usage.- Implemented in
src/util.cpp; enabled by default with no configuration required.
Bug Fixes
- GUI: The "Hide" button now reliably dismisses the modal/progress overlay and restores normal interaction.
Upgrade notes
- No database or wallet format changes.
- Safe to upgrade or roll back between 3.1.2 and 3.1.3.
- Restart required after replacing binaries.
Changelog
- [Feature] Add automatic shrinking of
debug.logto cap disk usage. - [Fix][GUI] Correct "Hide" button behavior in the overlay/progress view.
- [Maintenance] Minor stability and logging robustness improvements.
For the complete list of changes, see the commit history.
V3.1.1
Cascoin Core v3.1.1 – Language Hotfix
Overview
- Hotfix release: Fixes language detection issue on English systems
- No breaking changes: Maintains full compatibility with v3.1.0
Bug Fixes
Language Detection
- Fixed: Application now defaults to English on English systems instead of using system locale
- Issue: Previously, the application would display in German on German Windows systems even when English was preferred
- Solution: Modified language detection to default to English ("en") unless explicitly overridden by user settings or command-line arguments
Technical Details
- Modified
GetLangTerritory()function insrc/qt/bitcoin.cpp - Changed default language from
QLocale::system().name()to"en" - Preserves all existing language override mechanisms:
- User-configured language settings in GUI (Settings → Display → User Interface language)
- Command-line
-langparameter - Saved language preferences
User Impact
- English systems: Application now starts in English by default
- Existing users: No change if language was previously configured
- Multilingual users: Can still select preferred language through settings
- Developers: Can still use
-lang=de_DEor similar command-line options
Files Changed
src/qt/bitcoin.cpp- Language detection logic updated
For the complete list of changes, see the commit history.