Skip to content

Changelog

Murtaza Ali Imtiaz edited this page May 25, 2026 · 3 revisions

Changelog

All notable changes to polar-bear-rig-onchain are documented here.

This project adheres to Semantic Versioning.


[0.6.0] - 2026-05-25

Added

  • .zed/tasks.json - completely rewritten; 10 stub tasks → 23 fully-configured tasks across 8 tagged groups (build, lint, fmt, docs, test, run, example, live). Every task sets cwd, RUST_LOG, RUST_BACKTRACE, and a reveal policy. New tasks: check, build: debug, clean, fmt: check, doc: open, doc: open (private items), doc: CI check, per-module test tasks, test: providers ⚠ with --ignored, and run: full --no-agent. doc: CI check sets RUSTDOCFLAGS="--cfg docsrs -D warnings".
  • .zed/debug.json - completely rewritten from an invalid schema to 9 correct CodeLLDB DAP launch configurations for all --mode variants (keyless and keyed), custom --wallet/--amount, and all three examples. Every entry links to "build_task": "build: debug".
  • .zed/settings.json - new file. Configures format-on-save via rust-analyzer/rustfmt, clippy-on-save, full inlay hints, proc macro expansion, autoimport completion, import granularity matching rustfmt.toml, code lens, and per-language tab settings.
  • README.md - new Zed IDE section: 23-task table, 9 debug config table, settings summary.

Fixed

  • src/agent/mod.rs - ProviderClient uncommented (fourth recurrence of this regression).

[0.5.0] - 2026-05-25

Fixed

  • src/agent/mod.rs - ProviderClient uncommented (third recurrence).
  • tests/providers/anthropic.rs - fixed type error &Option<String> passed where &str is required. Both #[ignore]-gated tests now call .as_deref().expect(...). Although the tests are skipped at runtime without a key, they must still compile - the type error was blocking cargo test (and cargo build --tests) on every machine without a key.

[0.4.0] - 2026-05-25

Added

  • --no-agent CLI flag (src/main.rs). When passed alongside --mode full, runs balance → quote → signer directly without constructing the rig-core Anthropic client. No ANTHROPIC_API_KEY required. Useful for CI, local dev, and keyless demos.
  • run_full_no_agent() in src/main.rs - sequences the three on-chain subsystems and prints labelled step headers.

Fixed

  • src/agent/mod.rs - ProviderClient uncommented (second recurrence).

Changed

  • src/main.rs startup log now includes no_agent field alongside api_key_present.
  • README.md - API key table updated; --no-agent section added; build commands reorganised.

[0.3.0] - 2026-05-25

Changed

  • src/config.rs - anthropic_api_key changed from String to Option<String>. Config::from_env() is now infallible: the key is None when absent rather than an error. Validation deferred to agent::build(), called only for --mode full without --no-agent.
  • src/agent/mod.rs - ProviderClient added to imports alongside CompletionClient; agent::build() extracts the key from Option<String> with a clear error when absent.
  • tests/providers/anthropic.rs - corrected model string claude-haiku-4-5claude-haiku-4-5-20251001.

Fixed

  • cargo test now passes without ANTHROPIC_API_KEY. All unit tests are keyless; live provider tests are #[ignore]-gated.
  • --mode balance, --mode quote, --mode signer no longer abort at startup when the key is absent.

[0.2.0] - 2026-05-25

Removed

  • src/signer_context.rs - orphan file using thread_local! (the security bug from Fix 1), with uuid/chrono dependencies missing from Cargo.toml. Correct implementation is src/onchain/signer.rs.
  • src/solana_ops.rs - orphan duplicate of src/onchain/balance.rs, unreferenced from lib.rs.

Fixed

  • src/agent/mod.rs - ProviderClient added alongside CompletionClient (Fix 6 complete). Both traits must be in scope for .agent() to resolve in rig-core ≥ 0.36.
  • README badges - corrected to rust-1.85.0+ and rig-core-0.36+ to match Cargo.toml.

[Unreleased] → [0.1.0] - 2026-05-07

Initial implementation:

Added

Item Description
src/lib.rs Crate root; re-exports agent, config, onchain.
src/config.rs Config::from_env(); mirrors polar-bear-rig-hft config pattern.
src/onchain/mod.rs execute_pipeline() and demo_signer().
src/onchain/types.rs Lamports newtype with to_sol() / from_sol().
src/agent/mod.rs agent::build() with Client::new(api_key)?.
src/agent/tools.rs SolanaBalanceTool, JupiterQuoteTool, SignerIsolationTool.
examples/signer_demo.rs Three-task isolation demo.
examples/balance_demo.rs Devnet balance query demo.
examples/jupiter_dry_run.rs Jupiter quote + IsolationReport demo.
tests/test_signer_context.rs Task-local isolation, snapshot, seal tests.
tests/test_balance.rs Lamports conversion and display tests.
tests/test_jupiter.rs Mint constants and dry_run constructor tests.
tests/providers/anthropic.rs Live provider tests gated behind #[ignore].
rustfmt.toml Edition 2024, 100 cols, crate-level imports.
.clippy.toml MSRV 1.85.0, cognitive complexity thresholds.
.zed/tasks.json Zed task runner (initial).
.zed/debug.json LLDB debugger configs (initial).

Changed

Item Change
Cargo.toml edition 20212024
Cargo.toml rust-version 1.751.85.0
reqwest "0.12""^0.13", feature rustls-tlsrustls (Fix 3)
dotenvdotenvy Replaces unmaintained crate (Fix 4)
Module structure Flat src/src/onchain/, src/agent/, src/config.rs

Fixed

Fix Description
Fix 1 thread_local!tokio::task_local! in onchain/signer.rs. thread_local! is unsafe in async code: tasks migrate between OS threads at await points, causing key leakage.
Fix 2 anthropic::ClientBuilder::new(api_key).build()anthropic::Client::new(api_key)?. Client::new is fallible in rig-core ≥ 0.36.
Fix 3 reqwest feature rustls-tlsrustls. Renamed in 0.13; old name causes a compile error.
Fix 4 dotenvdotenvy. dotenv is unmaintained.
Fix 5 /// at file tops → //!. /// on macro invocation sites triggers unused_doc_comments.
Fix 6 rig::client::ProviderClient added to imports in agent/mod.rs. Required alongside CompletionClient for .agent() in rig-core ≥ 0.36.

Clone this wiki locally