- Move transaction data into nested payload object
- Sign only the payload, not the entire request
- Submit as {"payload": {...}, "signature": "..."}
- Matches RPC server expectation for nested structure
- Ensures Ed25519 signature is properly included
- Move amount and recipient/to to top level instead of nested in payload
- Remove chain_id from top level (not in TransactionRequest schema)
- Match TransactionRequest model in apps/blockchain-node/src/aitbc_chain/rpc/transactions.py
- Fixes 422 validation error: field amount is required
- Fixes int_from_flo error by ensuring amount and fee are integers
- Check if wallet is encrypted before attempting decryption
- For unencrypted wallets (created with --no-encrypt), use private_key directly
- Checks both 'encrypted' and 'encrypted_private_key' fields for encryption status
- Fixes 'Unsupported cipher' error when using unencrypted wallets
- Changed DEFAULT_KEYSTORE_DIR from KEYSTORE_DIR to Path.home()/.aitbc/wallets
- This matches the wallet directory used by wallet create command
- Fixes 'Wallet not found' error in transactions send command
- Wallets created at ~/.aitbc/wallets/ are now accessible to transactions commands
- Restructured password resolution in transactions send/batch to check env var before TTY
- Changed from os.environ.get() to 'in os.environ' to detect empty string env vars
- Added unencrypted wallet detection to skip password for --no-encrypt wallets
- Updated genesis info to auto-detect chain_id from blockchain RPC health endpoint
- Added --rpc-url option to genesis info for custom RPC URL
- Improved error messages to show RPC URL used for detection
- Fixes termios.error when AITBC_WALLET_PASSWORD is set to empty string
- Added sys.stdin.isatty() check before getpass in transactions send and batch commands
- Added environment variable fallback (AITBC_WALLET_PASSWORD) for non-interactive environments
- Added --data-dir option to genesis info command to allow custom data directory paths
- Improved error messages in genesis info to show chain_id and data directory
- Fixes termios.error in non-interactive environments for transactions
- Created aitbc/_version.py with centralized version definition
- Updated aitbc/__init__.py to import __version__ from _version module
- Updated constants.py to use __version__ for PACKAGE_VERSION
- Replaced print() calls with logger in decorators.py, events.py, queue_manager.py, and state.py
- Added logger initialization using get_logger(__name__) in config.py, decorators.py, events.py, queue_manager.py, and state.py
- Added cli/commands