Skip to content

0.9.3

Choose a tag to compare

@nesitor nesitor released this 16 Feb 13:52
· 153 commits to main since this release

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_files and get_credit_balances handlers. (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, and gunicorn to 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.yml file, the pyaleph and pyaleph-api services must now use alephim/pyaleph-node:0.9.3.
  • On the docker-compose.yml file, the redis service must now use redis: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