0.9.3
This update introduces several new storage and filtering endpoints, a significant adjustment to credit pricing, and a massive overhaul of dependencies to ensure stability and performance.
New Features ✨
- Credit Pricing Adjustment: Dramatically reduced credit pricing from 0.01 USD to 0.000001 USD. (PR #985) 💸
- Enhanced Storage API: Added new endpoints to retrieve storage information by reference (
/by-ref) and by message hash (/by-message-hash/{hash}). (PR #940, #941) 📦 - Message Filtering: You can now filter messages by one or multiple owners. (PR #939) 🔍
Bug Fixes 🐞
- API Reliability: Resolved several Error 500 issues on
get_account_filesandget_credit_balanceshandlers. (PR #971, #972) 🛠️ - Storage Fixes: Fixed issues where files incorrectly showed a size of -1 in the database and improved the reliability of streaming for large CIDs. (PR #964, #977) 💾
- CPU & Performance: Fixed a "CPU spinning" bug when pending messages were scheduled for the future and prevented orphan entries for processed messages. (PR #983, #984) ⚡
- WebSocket Ordering: Corrected WebSocket history to ensure messages are sent in chronological order. (PR #989) 🔄
Maintenance & Dependency Updates ⬆️
- Core Bumps: Upgraded to SQLAlchemy 2.0.45, Pydantic 2.12.5, and Alembic 1.18.1. (PR #924, #909, #955) 🏗️
- Environment: Updated Nix channels (25.05) and Shell channels (25.11) for better development consistency. (PR #953, #954) ❄️
- Library Refresh: Updated dozens of dependencies including
aiohttp,pydantic,redis,sentry-sdk, andgunicornto their latest stable versions. 📦
Upgrade guide
Make sure that your node is running v0.9.0 or later.
From v0.9.0, simply bump the version of these services:
- On the
docker-compose.ymlfile, thepyalephandpyaleph-apiservices must now usealephim/pyaleph-node:0.9.3. - On the
docker-compose.ymlfile, theredisservice must now useredis:8.4.0.
Then simply run docker-compose pul && docker-compose up -d to restart the service.
What's Changed
- internal: bump to SQLAlchemy 2.0.45 by @odesenfans in #924
- Chore(deps): Bump types-aiofiles from 24.1.0.20250822 to 25.1.0.20251011 by @dependabot[bot] in #911
- Chore(deps): Bump alembic from 1.15.1 to 1.17.2 by @dependabot[bot] in #918
- Chore(deps): Bump pydantic from 2.11.10 to 2.12.5 by @dependabot[bot] in #909
- Chore: bump pytes to 9.0.2 and pytest-asyncio to 1.3.0 by @odesenfans in #937
- Chore(deps): Bump psycopg2-binary from 2.9.10 to 2.9.11 by @dependabot[bot] in #915
- Chore(deps): Bump aio-pika from 9.5.5 to 9.5.8 by @dependabot[bot] in #913
- Chore(deps-dev): Bump pytest-cov from 6.0.0 to 7.0.0 by @dependabot[bot] in #910
- Chore(deps): Bump redis[hiredis] from 7.0.1 to 7.1.0 by @dependabot[bot] in #912
- chore: bump aleph-nuls2 to 0.1.1 by @odesenfans in #938
- feature: GET /api/v0/storage/by-ref endpoints by @odesenfans in #940
- feature: filter messages by owner(s) by @odesenfans in #939
- feature: GET /api/v0/storage/by-message-hash/{hash} endpoint by @odesenfans in #941
- Chore(deps): Bump msgpack from 1.0.8 to 1.1.2 by @dependabot[bot] in #942
- Chore(deps): Bump pycryptodome from 3.22.0 to 3.23.0 by @dependabot[bot] in #943
- Chore(deps): Bump protobuf from 6.33.2 to 6.33.4 by @dependabot[bot] in #944
- Chore(deps): Bump aiohttp-cors from 0.8.0 to 0.8.1 by @dependabot[bot] in #947
- Chore(deps): Bump alembic from 1.17.2 to 1.18.0 by @dependabot[bot] in #949
- Chore(deps): Bump asyncpg from 0.30 to 0.31.0 by @dependabot[bot] in #950
- Chore(deps): Bump pyyaml from 6.0.1 to 6.0.3 by @dependabot[bot] in #951
- Chore(deps): Bump multiaddr from 0.0.9 to 0.1.1 by @dependabot[bot] in #948
- Chore(deps): Bump aiofiles from 24.1.0 to 25.1.0 by @dependabot[bot] in #946
- chore: bump typing_extensions to 4.15.0 by @odesenfans in #952
- chore: bump nix channel to 25.05 by @odesenfans in #953
- chore: bump shell channel to 25.11 by @odesenfans in #954
- internal: fix typing on PendingMessageDb.item_content by @odesenfans in #965
- fix: some files had size -1 in DB by @odesenfans in #964
- internal: remove dead code in message handler by @odesenfans in #966
- fix: remove version key from Docker compose files by @odesenfans in #967
- Chore(deps): Bump sentry-sdk from 2.35.1 to 2.49.0 by @dependabot[bot] in #962
- Chore(deps-dev): Bump pytest-mock from 3.14.0 to 3.15.1 by @dependabot[bot] in #961
- Chore(deps): Bump alembic from 1.18.0 to 1.18.1 by @dependabot[bot] in #955
- Chore(deps-dev): Bump more-itertools from 10.6.0 to 10.8.0 by @dependabot[bot] in #960
- Chore(deps): Bump setproctitle from 1.3.5 to 1.3.7 by @dependabot[bot] in #959
- fix: allow failures while repairing file sizes by @odesenfans in #968
- Fix: get_account_files returning ERROR 500 by @1yam in #971
- Chore(deps): Bump sqlalchemy[mypy] from 2.0.45 to 2.0.46 by @dependabot[bot] in #973
- Chore(deps): Bump sentry-sdk from 2.49.0 to 2.50.0 by @dependabot[bot] in #970
- Fix: error 500 on get_credit_balances_handler by @1yam in #972
- fix: reenable GET /api/v0/storage/count/{hash} by @odesenfans in #975
- Chore(deps): Bump gunicorn from 23.0.0 to 24.0.0 by @dependabot[bot] in #974
- fix: broken streaming for large CIDs by @odesenfans in #977
- Chore(deps): Bump gunicorn from 24.0.0 to 24.1.1 by @dependabot[bot] in #978
- Fix CPU spinning when all pending messages have future next_attempt / Fix Immediate Process Job Notification by @aliel in #983
- fix: prevent orphan pending entries for already-processed messages by @aliel in #984
- Fix websocket history ordering to send messages chronologically by @aliel in #989
- Changed credit pricing from 0.01 USD to 0.000001 USD by @amalcaraz in #985
Full Changelog: 0.9.2...0.9.3