Skip to content

Extract openframe-client into a shared Rust library (openframe-agent-lib)#1265

Merged
ivan-flamingo merged 12 commits into
mainfrom
hotfix/openframe-client-rust-extraction
Jul 2, 2026
Merged

Extract openframe-client into a shared Rust library (openframe-agent-lib)#1265
ivan-flamingo merged 12 commits into
mainfrom
hotfix/openframe-client-rust-extraction

Conversation

@mikhailm-coder

Copy link
Copy Markdown
Contributor

What & why

Extracts the Rust OpenFrame agent (previously living only in openframe-oss-tenant) into this repo as the shared library crate openframe-agent-lib (lib name openframe), so both tenant products (openframe-oss-tenant, openframe-saas-tenant) consume it as a versioned dependency and ship only a thin binary. Also sets up required cargo fmt/clippy tooling and an opt-in binary build.

Companion PRs (open after this merges, since their git-deps resolve against this branch/tag): thin bin crates in openframe-oss-tenant and openframe-saas-tenant.

Commits (one per logical part)

  1. feat: import openframe-client as openframe-agent-lib + run() — moves the full crate (lib + packaging build/, infrastructure/) under clients/openframe-client; hoists the clap CLI from main.rs into openframe::run(); adds a clients/ Cargo workspace. The binary is opt-in via the bin feature (cargo build = library only; --features bin builds the executable).
  2. chore: enforce cargo fmt + clippyrustfmt.toml, workspace clippy policy (all = warn, correctness/suspicious = deny), committed git hooks (clients/.githooks: pre-commit = fmt-check, pre-push = clippy), clients/Makefile, CI (rust-client.yml + rust-setup action), and docs.
  3. style: apply cargo fmt — pure formatting pass.
  4. fix: resolve clippy warnings — gate now passes cargo clippy --all-targets --features bin -- -D warnings.
  5. fix: pin async-nats to an exact fork revbranch = main of the fork had drifted past ConnectOptions::custom_header; pinned to the commit the lockfile already used so downstream resolves are reproducible.

Developer workflow

make -C clients setup-hooks   # one-time: pre-commit fmt, pre-push clippy
make -C clients lint          # fmt --check + clippy -D warnings
make -C clients build-bin     # build the binary (enables `bin` feature)
make -C clients run-bin ARGS="--help"

CI runs the same gate on macOS + Windows for changes under clients/**.

Decisions

  • Binary feature named bin; tenant deps default to the library's main branch (pin a tag for releases).
  • Lint scoped to --features bin (not --all-features): the tool-version override features' build.rs requires release version env vars and isn't part of the standard gate.
  • Clippy: "strict but sane" — no pedantic/nursery.

Flagged for review (left as #[allow(dead_code)] rather than deleted)

Genuinely-unused items, candidates for deletion: config::{Configuration, LoggingConfig}, permissions::ROOT_UID, service_adapter::add_platform_specific_env, updater::get_download_path, and unread fields on Metric / LogShipper / VelopackUpdater. Also #![allow(deprecated)] in encryption_service for aes-gcm's bundled generic-array 0.x — proper fix is bumping aes-gcm.

Follow-ups (not in this PR)

  • The full signed multi-platform release workflow was not ported here (only lint+build CI); it needs Apple/Azure signing secrets provisioned in this repo.
  • Windows cfg paths are validated by the CI windows-latest job (cross-compiling C deps from macOS isn't possible locally).

🤖 Generated with Claude Code

https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto

mikhailm-coder and others added 5 commits June 24, 2026 12:10
…entry point

Move the Rust OpenFrame agent from openframe-oss-tenant into this repo
under clients/openframe-client as the library crate `openframe-agent-lib`
(lib name `openframe`, so existing `use openframe::...` imports are
unchanged). Hoist the clap CLI out of main.rs into a library module
exposing `openframe::run()`, so the tenant repos only need a thin binary
that calls it.

Executables (the openframe-client binary + dev helpers) are opt-in via
the `bin` feature and off by default; plain `cargo build` produces the
library only. Packaging assets (build/, infrastructure/) move with the
crate. Set up a Cargo workspace at clients/.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
Add the shared Rust tooling for the agent client:
- rustfmt.toml (standard, edition 2021)
- workspace clippy policy in clients/Cargo.toml: clippy::all = warn,
  correctness/suspicious = deny; crate inherits via [lints] workspace = true
- committed git hooks (clients/.githooks): pre-commit runs cargo fmt --check,
  pre-push runs cargo clippy -D warnings; both scoped to Rust changes and
  skip when cargo is absent
- clients/Makefile: fmt / fmt-check / clippy / lint / build / build-bin /
  run-bin / test / setup-hooks
- CI: port the rust-setup composite action and add rust-client.yml
  (fmt-check + clippy + build on macOS and Windows, triggered on clients/**)
- docs: clients/README.md dev guide, crate README, root README/CONTRIBUTING
  pointers including the one-time `make -C clients setup-hooks`

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
Pure formatting pass (cargo fmt --all) over the imported agent code. No
logic changes.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
Make `cargo clippy --all-targets --features bin -- -D warnings` pass on the
host toolchain (1.96.0):

- Auto-applied machine-fixable lints via `cargo clippy --fix`: unused imports,
  needless borrows, derivable impls, identity maps, redundant field names,
  needless returns, unnecessary casts, etc.
- Manual straightforward fixes: rename `assetId` -> `asset_id`; build
  InitialConfiguration via struct literal (field_reassign_with_default);
  vec![] instead of Vec::new()+push; add Default for DirectoryManager;
  `if let Some` instead of is_some()+unwrap (unnecessary_unwrap); add
  `.truncate(true)` to a write-probe OpenOptions (suspicious_open_options).
- #[allow(clippy::too_many_arguments)] on three wide constructors and
  #[allow(clippy::wrong_self_convention)] on ToolMigrator::from_type
  (refactors deemed out of scope).
- Platform-conditional false positives: #[allow(unused_imports)] on
  cfg(unix) imports used only in linux-gated paths; #[allow(unreachable_code)]
  on a fn whose macOS branch returns early; #[allow(dead_code)] on the
  Windows-only service-stop constants.
- #[allow(dead_code)] (flagged for review) on genuinely-unused items:
  config::{Configuration, LoggingConfig}, permissions::ROOT_UID,
  Metric/LogShipper/VelopackUpdater unread fields, and two unused methods.
- #![allow(deprecated)] in encryption_service for aes-gcm's generic-array 0.x
  (proper fix: bump aes-gcm).
- Scope the lint gate to `--features bin` (not --all-features): the
  tool-version override features' build.rs requires release version env vars
  and is not part of the standard gate.

Windows cfg paths validate in CI (cross-compiling C deps from macOS is not
possible locally).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
The flamingo-stack/nats.rs fork's `main` has moved past the commit that
provides `ConnectOptions::custom_header`, so a fresh resolve (e.g. from a
downstream thin bin crate consuming this library via git) picked up an
incompatible HEAD and failed to compile. Pin to rev 3cfbf0f (the commit the
lockfile already used) so every consumer builds against the known-good fork.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 267 files, which is 117 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f874f407-0b90-41b0-82ea-388a0fb020ae

📥 Commits

Reviewing files that changed from the base of the PR and between 71571f2 and 12f13f8.

⛔ Files ignored due to path filters (1)
  • clients/openframe-client/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (267)
  • .github/steps/rust-setup/action.yml
  • .github/workflows/changes.yml
  • .github/workflows/release.yml
  • .github/workflows/test.yml
  • CONTRIBUTING.md
  • README.md
  • clients/.githooks/pre-commit
  • clients/.githooks/pre-push
  • clients/Makefile
  • clients/README.md
  • clients/openframe-client/.cargo/config.toml
  • clients/openframe-client/Cargo.toml
  • clients/openframe-client/Makefile
  • clients/openframe-client/README.md
  • clients/openframe-client/build.rs
  • clients/openframe-client/config/agent.toml
  • clients/openframe-client/docs/PERMISSIONS.md
  • clients/openframe-client/infrastructure/meshcentral/mac.sh
  • clients/openframe-client/infrastructure/meshcentral/win.ps1
  • clients/openframe-client/infrastructure/tactical-rmm/mac_arm64.sh
  • clients/openframe-client/infrastructure/tactical-rmm/win_amd64.ps1
  • clients/openframe-client/scripts/README.md
  • clients/openframe-client/scripts/setup_dev_init_config.sh
  • clients/openframe-client/src/.cli.md
  • clients/openframe-client/src/.installation_initial_config_service.md
  • clients/openframe-client/src/.lib.md
  • clients/openframe-client/src/.metrics.md
  • clients/openframe-client/src/.service.md
  • clients/openframe-client/src/.service_adapter.md
  • clients/openframe-client/src/.system.md
  • clients/openframe-client/src/.updater.md
  • clients/openframe-client/src/.utils.md
  • clients/openframe-client/src/banner.rs
  • clients/openframe-client/src/bin/.test_admin_caching.md
  • clients/openframe-client/src/bin/.test_applescript.md
  • clients/openframe-client/src/bin/.test_ensure_admin.md
  • clients/openframe-client/src/bin/.test_root_execution.md
  • clients/openframe-client/src/bin/.test_run_as_admin.md
  • clients/openframe-client/src/bin/openframe-client.rs
  • clients/openframe-client/src/bin/test_admin_caching.rs
  • clients/openframe-client/src/bin/test_applescript.rs
  • clients/openframe-client/src/bin/test_ensure_admin.rs
  • clients/openframe-client/src/bin/test_root_execution.rs
  • clients/openframe-client/src/bin/test_run_as_admin.rs
  • clients/openframe-client/src/cli.rs
  • clients/openframe-client/src/clients/.auth_client.md
  • clients/openframe-client/src/clients/.mod.md
  • clients/openframe-client/src/clients/.registration_client.md
  • clients/openframe-client/src/clients/.tool_agent_file_client.md
  • clients/openframe-client/src/clients/.tool_api_client.md
  • clients/openframe-client/src/clients/auth_client.rs
  • clients/openframe-client/src/clients/mod.rs
  • clients/openframe-client/src/clients/registration_client.rs
  • clients/openframe-client/src/clients/tool_agent_file_client.rs
  • clients/openframe-client/src/clients/tool_api_client.rs
  • clients/openframe-client/src/config/.mod.md
  • clients/openframe-client/src/config/.update_config.md
  • clients/openframe-client/src/config/mod.rs
  • clients/openframe-client/src/config/update_config.rs
  • clients/openframe-client/src/doctor/checks.rs
  • clients/openframe-client/src/doctor/mod.rs
  • clients/openframe-client/src/executor/env.rs
  • clients/openframe-client/src/executor/mod.rs
  • clients/openframe-client/src/executor/output.rs
  • clients/openframe-client/src/executor/tempfile.rs
  • clients/openframe-client/src/executor/unix/mod.rs
  • clients/openframe-client/src/executor/unix/process.rs
  • clients/openframe-client/src/executor/unix/run_as_user.rs
  • clients/openframe-client/src/executor/windows/job.rs
  • clients/openframe-client/src/executor/windows/mod.rs
  • clients/openframe-client/src/executor/windows/process.rs
  • clients/openframe-client/src/executor/windows/run_as_user.rs
  • clients/openframe-client/src/installation_initial_config_service.rs
  • clients/openframe-client/src/lib.rs
  • clients/openframe-client/src/listener/.mod.md
  • clients/openframe-client/src/listener/.openframe_client_update_listener.md
  • clients/openframe-client/src/listener/.tool_agent_update_listener.md
  • clients/openframe-client/src/listener/.tool_installation_message_listener.md
  • clients/openframe-client/src/listener/execution_listener.rs
  • clients/openframe-client/src/listener/mod.rs
  • clients/openframe-client/src/listener/openframe_client_update_listener.rs
  • clients/openframe-client/src/listener/tool_agent_update_listener.rs
  • clients/openframe-client/src/listener/tool_installation_message_listener.rs
  • clients/openframe-client/src/logging/.metrics.md
  • clients/openframe-client/src/logging/.mod.md
  • clients/openframe-client/src/logging/.platform.md
  • clients/openframe-client/src/logging/.shipping.md
  • clients/openframe-client/src/logging/log_parser.rs
  • clients/openframe-client/src/logging/log_rotation.rs
  • clients/openframe-client/src/logging/log_source.rs
  • clients/openframe-client/src/logging/metrics.rs
  • clients/openframe-client/src/logging/mod.rs
  • clients/openframe-client/src/logging/nats_streaming.rs
  • clients/openframe-client/src/logging/platform.rs
  • clients/openframe-client/src/logging/shipping.rs
  • clients/openframe-client/src/metrics.rs
  • clients/openframe-client/src/models/.agent_configuration.md
  • clients/openframe-client/src/models/.agent_registration_request.md
  • clients/openframe-client/src/models/.agent_registration_response.md
  • clients/openframe-client/src/models/.agent_token_response.md
  • clients/openframe-client/src/models/.download_configuration.md
  • clients/openframe-client/src/models/.initial_configuration.md
  • clients/openframe-client/src/models/.installed_agent_message.md
  • clients/openframe-client/src/models/.installed_tool.md
  • clients/openframe-client/src/models/.machine_heartbeat_message.md
  • clients/openframe-client/src/models/.mod.md
  • clients/openframe-client/src/models/.openframe_client_info.md
  • clients/openframe-client/src/models/.openframe_client_update_message.md
  • clients/openframe-client/src/models/.tool_agent_update_message.md
  • clients/openframe-client/src/models/.tool_connection.md
  • clients/openframe-client/src/models/.tool_connection_message.md
  • clients/openframe-client/src/models/.tool_installation_message.md
  • clients/openframe-client/src/models/.tool_installation_result.md
  • clients/openframe-client/src/models/.update_state.md
  • clients/openframe-client/src/models/agent_configuration.rs
  • clients/openframe-client/src/models/agent_registration_request.rs
  • clients/openframe-client/src/models/agent_registration_response.rs
  • clients/openframe-client/src/models/agent_token_response.rs
  • clients/openframe-client/src/models/device_tag.rs
  • clients/openframe-client/src/models/download_configuration.rs
  • clients/openframe-client/src/models/execution.rs
  • clients/openframe-client/src/models/initial_configuration.rs
  • clients/openframe-client/src/models/installed_agent_message.rs
  • clients/openframe-client/src/models/installed_tool.rs
  • clients/openframe-client/src/models/machine_heartbeat_message.rs
  • clients/openframe-client/src/models/mod.rs
  • clients/openframe-client/src/models/openframe_client_info.rs
  • clients/openframe-client/src/models/openframe_client_update_message.rs
  • clients/openframe-client/src/models/tool_agent_update_message.rs
  • clients/openframe-client/src/models/tool_connection.rs
  • clients/openframe-client/src/models/tool_connection_message.rs
  • clients/openframe-client/src/models/tool_installation_message.rs
  • clients/openframe-client/src/models/tool_installation_result.rs
  • clients/openframe-client/src/models/tool_version_overrides.rs
  • clients/openframe-client/src/models/update_state.rs
  • clients/openframe-client/src/monitoring/.permissions.md
  • clients/openframe-client/src/monitoring/mod.rs
  • clients/openframe-client/src/monitoring/permissions.rs
  • clients/openframe-client/src/platform/.directories.md
  • clients/openframe-client/src/platform/.dmg_extractor.md
  • clients/openframe-client/src/platform/.file_lock.md
  • clients/openframe-client/src/platform/.mod.md
  • clients/openframe-client/src/platform/.permissions.md
  • clients/openframe-client/src/platform/.powershell.md
  • clients/openframe-client/src/platform/.preferences_writer.md
  • clients/openframe-client/src/platform/.uninstall.md
  • clients/openframe-client/src/platform/.windows_cleanup.md
  • clients/openframe-client/src/platform/binary_writer.rs
  • clients/openframe-client/src/platform/console.rs
  • clients/openframe-client/src/platform/directories.rs
  • clients/openframe-client/src/platform/dmg_extractor.rs
  • clients/openframe-client/src/platform/file_acl.rs
  • clients/openframe-client/src/platform/file_lock.rs
  • clients/openframe-client/src/platform/installation_detector.rs
  • clients/openframe-client/src/platform/machine_info_persistence.rs
  • clients/openframe-client/src/platform/mod.rs
  • clients/openframe-client/src/platform/permissions.rs
  • clients/openframe-client/src/platform/powershell.rs
  • clients/openframe-client/src/platform/preferences_writer.rs
  • clients/openframe-client/src/platform/system_service.rs
  • clients/openframe-client/src/platform/tool_updater/gui_app.rs
  • clients/openframe-client/src/platform/tool_updater/migration/mod.rs
  • clients/openframe-client/src/platform/tool_updater/migration/standard_to_gui_app.rs
  • clients/openframe-client/src/platform/tool_updater/mod.rs
  • clients/openframe-client/src/platform/tool_updater/service.rs
  • clients/openframe-client/src/platform/tool_updater/standard.rs
  • clients/openframe-client/src/platform/uninstall.rs
  • clients/openframe-client/src/platform/update_scripts/.macos.md
  • clients/openframe-client/src/platform/update_scripts/.mod.md
  • clients/openframe-client/src/platform/update_scripts/.windows.md
  • clients/openframe-client/src/platform/update_scripts/macos.rs
  • clients/openframe-client/src/platform/update_scripts/mod.rs
  • clients/openframe-client/src/platform/update_scripts/windows.rs
  • clients/openframe-client/src/platform/updater_launcher/.linux.md
  • clients/openframe-client/src/platform/updater_launcher/.macos.md
  • clients/openframe-client/src/platform/updater_launcher/.mod.md
  • clients/openframe-client/src/platform/updater_launcher/.windows.md
  • clients/openframe-client/src/platform/updater_launcher/linux.rs
  • clients/openframe-client/src/platform/updater_launcher/macos.rs
  • clients/openframe-client/src/platform/updater_launcher/mod.rs
  • clients/openframe-client/src/platform/updater_launcher/windows.rs
  • clients/openframe-client/src/platform/user_session/.macos.md
  • clients/openframe-client/src/platform/user_session/.mod.md
  • clients/openframe-client/src/platform/user_session/macos.rs
  • clients/openframe-client/src/platform/user_session/mod.rs
  • clients/openframe-client/src/platform/windows_cleanup.rs
  • clients/openframe-client/src/platform/windows_path_migration.rs
  • clients/openframe-client/src/service.rs
  • clients/openframe-client/src/service_adapter.rs
  • clients/openframe-client/src/services/.agent_auth_service.md
  • clients/openframe-client/src/services/.agent_configuration_service.md
  • clients/openframe-client/src/services/.agent_registration_service.md
  • clients/openframe-client/src/services/.device_data_fetcher.md
  • clients/openframe-client/src/services/.encryption_service.md
  • clients/openframe-client/src/services/.github_download_service.md
  • clients/openframe-client/src/services/.initial_authentication_processor.md
  • clients/openframe-client/src/services/.initial_configuration_service.md
  • clients/openframe-client/src/services/.installed_agent_message_publisher.md
  • clients/openframe-client/src/services/.installed_tools_service.md
  • clients/openframe-client/src/services/.local_tls_config_provider.md
  • clients/openframe-client/src/services/.machine_heartbeat_publisher.md
  • clients/openframe-client/src/services/.machine_heartbeat_run_manager.md
  • clients/openframe-client/src/services/.mod.md
  • clients/openframe-client/src/services/.nats_connection_manager.md
  • clients/openframe-client/src/services/.nats_message_publisher.md
  • clients/openframe-client/src/services/.openframe_client_info_service.md
  • clients/openframe-client/src/services/.openframe_client_update_service.md
  • clients/openframe-client/src/services/.registration_processor.md
  • clients/openframe-client/src/services/.shared_token_service.md
  • clients/openframe-client/src/services/.tool_agent_update_service.md
  • clients/openframe-client/src/services/.tool_command_params_resolver.md
  • clients/openframe-client/src/services/.tool_connection_message_publisher.md
  • clients/openframe-client/src/services/.tool_connection_processing_manager.md
  • clients/openframe-client/src/services/.tool_connection_service.md
  • clients/openframe-client/src/services/.tool_installation_service.md
  • clients/openframe-client/src/services/.tool_kill_service.md
  • clients/openframe-client/src/services/.tool_run_manager.md
  • clients/openframe-client/src/services/.tool_uninstall_service.md
  • clients/openframe-client/src/services/.tool_url_params_resolver.md
  • clients/openframe-client/src/services/.update_cleanup_service.md
  • clients/openframe-client/src/services/.update_handler_service.md
  • clients/openframe-client/src/services/.update_state_service.md
  • clients/openframe-client/src/services/.windows_session_manager.md
  • clients/openframe-client/src/services/agent_auth_service.rs
  • clients/openframe-client/src/services/agent_configuration_service.rs
  • clients/openframe-client/src/services/agent_registration_service.rs
  • clients/openframe-client/src/services/device_data_fetcher.rs
  • clients/openframe-client/src/services/encryption_service.rs
  • clients/openframe-client/src/services/execution_service.rs
  • clients/openframe-client/src/services/github_download_service.rs
  • clients/openframe-client/src/services/initial_authentication_processor.rs
  • clients/openframe-client/src/services/initial_configuration_service.rs
  • clients/openframe-client/src/services/initial_key_service.rs
  • clients/openframe-client/src/services/installed_agent_message_publisher.rs
  • clients/openframe-client/src/services/installed_tools_service.rs
  • clients/openframe-client/src/services/local_tls_config_provider.rs
  • clients/openframe-client/src/services/machine_heartbeat_publisher.rs
  • clients/openframe-client/src/services/machine_heartbeat_run_manager.rs
  • clients/openframe-client/src/services/mesh_self_heal_service.rs
  • clients/openframe-client/src/services/mod.rs
  • clients/openframe-client/src/services/nats_connection_manager.rs
  • clients/openframe-client/src/services/nats_message_publisher.rs
  • clients/openframe-client/src/services/openframe_client_info_service.rs
  • clients/openframe-client/src/services/openframe_client_update_service.rs
  • clients/openframe-client/src/services/registration_processor.rs
  • clients/openframe-client/src/services/shared_token_service.rs
  • clients/openframe-client/src/services/tool_agent_update_service.rs
  • clients/openframe-client/src/services/tool_command_params_resolver.rs
  • clients/openframe-client/src/services/tool_connection_message_publisher.rs
  • clients/openframe-client/src/services/tool_connection_processing_manager.rs
  • clients/openframe-client/src/services/tool_connection_service.rs
  • clients/openframe-client/src/services/tool_installation_service.rs
  • clients/openframe-client/src/services/tool_kill_service.rs
  • clients/openframe-client/src/services/tool_run_manager.rs
  • clients/openframe-client/src/services/tool_uninstall_service.rs
  • clients/openframe-client/src/services/tool_url_params_resolver.rs
  • clients/openframe-client/src/services/update_cleanup_service.rs
  • clients/openframe-client/src/services/update_handler_service.rs
  • clients/openframe-client/src/services/update_state_service.rs
  • clients/openframe-client/src/system.rs
  • clients/openframe-client/src/updater.rs
  • clients/openframe-client/src/utils.rs
  • clients/openframe-client/src/utils/.version_comparator.md
  • clients/openframe-client/src/utils/.windows_helpers.md
  • clients/openframe-client/src/utils/version_comparator.rs
  • clients/openframe-client/src/utils/windows_helpers.rs
  • clients/rustfmt.toml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hotfix/openframe-client-rust-extraction

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

mikhailm-coder and others added 7 commits June 26, 2026 00:00
Restore the Arc import and un-underscore the installed_tool/new_tool params
that an earlier macOS-only `clippy --fix` broke; scope windows-only-unused
imports/vars with #[cfg]/#[allow] and fix windows-only clippy style lints so
both macOS and windows pass clippy -D warnings.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… standard build Makefile

- clients/Makefile now only exposes `setup-hooks`.
- clients/openframe-client/Makefile is the standard client Makefile (identical
  to the one in openframe-oss-tenant: fmt/fmt-check/clippy/lint/build/test/
  crossinstall/crossbuild), so the crate carries its own build tooling and a
  future clients/openframe-chat can carry its own alongside it.
- CI, git hooks and docs updated to call `make -C clients/openframe-client`
  (binary is compiled cross-platform in CI via `cargo build --features bin`).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
…nts/ workspace)

Each crate under clients/ is now fully self-contained so a future
clients/openframe-chat is independent (own Cargo.lock, no workspace member/
exclude bookkeeping, no shared lockfile).

- remove clients/Cargo.toml (the workspace)
- move Cargo.lock into clients/openframe-client/
- inline the clippy policy as [lints.clippy] in the crate (was [workspace.lints])
- CI: point the rust cache at clients/openframe-client

Unchanged and shared at clients/: rustfmt.toml (applies to every crate below via
rustfmt's ancestor search), .githooks/, and the setup-hooks Makefile.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RvFQiC4VAdu8ruwst8uJto
@ivan-flamingo
ivan-flamingo merged commit 258fa87 into main Jul 2, 2026
6 of 7 checks passed
@ivan-flamingo
ivan-flamingo deleted the hotfix/openframe-client-rust-extraction branch July 2, 2026 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants