Skip to content

Release v0.4.0 - #22

Merged
kozalosev merged 12 commits into
mainfrom
release/0.4.0
Mar 23, 2026
Merged

Release v0.4.0#22
kozalosev merged 12 commits into
mainfrom
release/0.4.0

Conversation

@kozalosev

Copy link
Copy Markdown
Owner
  • Rust 2024;
  • library and workflow updates;
  • tracing.

kozalosev and others added 12 commits March 16, 2026 15:23
- axum 0.7 → 0.8; axum-prometheus 0.7 → 0.8
- teloxide 0.13 → 0.14 (required for axum 0.8)
- reqwest 0.12 → 0.13 (feature rustls-tls renamed to rustls)
- reqwest-middleware 0.3 → 0.5 (required for reqwest 0.13)
- http-cache/http-cache-reqwest 0.x → 1.0.0-alpha.5 (reqwest 0.13 compat)
- http-cache-semantics 2 → 3
- prost/prost-types 0.13 → 0.14; prost-wkt-types 0.6 → 0.7
- tonic 0.12 → 0.14; replace tonic-build with tonic-prost-build + tonic-prost
- mobc 0.8 → 0.9; mobc-redis 0.8 → 0.9
- testcontainers 0.23 → 0.27
- bincode kept at 2.0.1 (3.0.0 is an intentional tombstone release)

Code fixes for redis 0.28 API changes:
- Value::Bulk renamed to Value::Array in limiter.rs
- expire() now takes i64; change timeframe field type from usize to i64
- Value::Int holds i64 by value, remove * dereference
- Annotate pipeline query_async result type explicitly
- Annotate set::<_, _, ()> to avoid never-type fallback error in cache.rs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add src/observability.rs: init_tracing() wires tracing-log bridge,
  optional OTLP/gRPC exporter (disabled when OTEL_EXPORTER_OTLP_ENDPOINT
  is unset), and console fmt layer; replaces pretty_env_logger
- Instrument inline_handler, cmd_loc_handler, resolve_locations,
  SearchChain::find, and all loc finders (Google, OSM, Yandex) with
  #[tracing::instrument]; replace log:: with tracing:: throughout
- Add OtelAxumLayer + OtelInResponseLayer to axum router in both
  webhook and polling branches
- Add otel test helper and two span tests: creates_span and hierarchy
- Passthrough OTEL_EXPORTER_OTLP_ENDPOINT in docker-compose.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…L, validate coordinates

- URL-encode user queries before interpolating into API URLs (OSM, Google, Yandex) to prevent injection of query string parameters
- Replace .unwrap() with .unwrap_or() on OSM API response to avoid panic on unexpected JSON
- Add configurable HTTP client timeouts (HTTP_CONNECT_TIMEOUT_SECS, HTTP_REQUEST_TIMEOUT_SECS)
- Add Redis cache TTL via SETEX (CACHE_MAX_TTL_SECS, default 24h) to prevent unbounded memory growth
- Validate parsed coordinates against [-90,90] / [-180,180] ranges

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- actions/checkout v3 → v6
- hecrj/setup-rust-action v1 → v2
- arduino/setup-protoc v2 → v3
- docker/login-action v2 → v4
- docker/metadata-action v4 → v6
- docker/build-push-action v4 → v7
- actions/upload-artifact v3 → v4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The cancellation_handler was using InMemStorage in its Dialogue type
parameter instead of the app's actual RedisStorage<Json> storage, causing
a runtime panic at dispatcher build time. Also added the missing
enter_dialogue call on the cancellation branch in main.rs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
postcard is a serde-based drop-in with varint encoding (more compact
output than bincode) and a simpler API. bincode 2.0.1 was pinned due
to 3.0 being a tombstone release; postcard has no such issue.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Bump edition to 2024 in Cargo.toml
- Remove legacy `extern crate core` from main.rs
- Remove #[async_trait] from UserServiceClient trait and its impls
  (UserServiceClientGrpc, UserServiceClientMock) — native async fn in
  traits used instead; LocFinder keeps async_trait due to dyn usage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Update dependencies, Rust edition to 2024, different bug fixes and enchantments
tracing_subscriber's try_init() already initializes the log bridge
internally via its built-in tracing-log feature, making the explicit
LogTracer::init() call a double-init that fails on startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@kozalosev kozalosev added bug Something isn't working enhancement New feature or request labels Mar 23, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@kozalosev

Copy link
Copy Markdown
Owner Author

@codex, when do the limits reset?

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create an environment for this repo.

@kozalosev
kozalosev merged commit c0648a4 into main Mar 23, 2026
2 checks passed
@kozalosev
kozalosev deleted the release/0.4.0 branch March 23, 2026 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant