Skip to content

fix(build): pin fmt/spdlog and remove unused websocketpp dependency - #69

Merged
chizy7 merged 1 commit into
mainfrom
fix/build-deps
Jul 21, 2026
Merged

chizy7 merged 1 commit into
mainfrom
fix/build-deps

Conversation

@chizy7

@chizy7 chizy7 commented Jul 21, 2026 •

Copy link
Copy Markdown
Owner

Summary

Verification

  • Reproduced the CI failure path locally (Debug + ASan, FetchContent-forced, Apple Clang 21): configure and full build now pass with zero consteval errors
  • Fresh configure succeeds on CMake >= 4 without websocketpp installed and without any policy workaround
  • Full default build with system deps: 0 errors; all six CI unit test executables pass in both configurations

@coderabbitai

coderabbitai Bot commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@chizy7, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 43 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bc3024db-c325-49a0-880b-8323279705af

📥 Commits

Reviewing files that changed from the base of the PR and between a8c19a2 and 88901bf.

📒 Files selected for processing (6)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • CMakeLists.txt
  • Dockerfile
  • README.md
  • docs/user_guide/getting_started.md
📝 Walkthrough

Walkthrough

The update pins fetched fmt and spdlog versions, removes WebSocket++ CMake and build-environment dependencies, simplifies visualization configuration, and documents the dependency versions and automatic FetchContent behavior.

Changes

Dependency alignment

Layer / File(s) Summary
CMake dependency integration
CMakeLists.txt
fmt is resolved before spdlog, fetched versions are updated, WebSocket++ acquisition and include paths are removed, and visualization no longer defines ASIO_STANDALONE.
Build environment dependency lists
.github/workflows/ci.yml, .github/workflows/release.yml, Dockerfile
Ubuntu, macOS, release, and Docker dependency installation no longer includes WebSocket++ packages.
Prerequisite version guidance
README.md, docs/user_guide/getting_started.md
Prerequisites specify spdlog 1.15.3 and fmt 11.2.0, including automatic CMake FetchContent downloads when unavailable.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers summary and verification, but it omits most required template sections and headings. Reformat it to match the template and add Type of Change, Areas Changed, Testing, Performance Impact, Security Considerations, Checklist, Related Issues, Screenshots, and Additional Notes.
Linked Issues check ❓ Inconclusive The main fmt/spdlog pinning and websocketpp removal are covered, but the summary does not confirm the C++20 consistency requirement from #66. Show the CMake/CI changes that enforce C++20, or clarify that it was already consistently set and unchanged.
✅ Passed checks (3 passed)
Check name Status Explanation
Out of Scope Changes check ✅ Passed No obvious out-of-scope changes appear; the workflow, Docker, README, and docs edits all support the stated dependency fix.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title is concise and accurately summarizes the main build and dependency changes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/build-deps

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
CMakeLists.txt (1)

97-99: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Avoid forcing variables into the global CMake cache.

Using CACHE BOOL "" FORCE pollutes the global CMake cache and forcefully overrides user-provided configurations (e.g., if a user explicitly configures the project with -DSPDLOG_FMT_EXTERNAL=OFF). In modern CMake (policy CMP0077), setting a normal variable right before FetchContent_MakeAvailable properly scopes the option to the subproject without unexpectedly overwriting the global cache.

♻️ Proposed refactor
-  set(SPDLOG_FMT_EXTERNAL
-      ON
-      CACHE BOOL "" FORCE)
+  set(SPDLOG_FMT_EXTERNAL ON)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CMakeLists.txt` around lines 97 - 99, Update the SPDLOG_FMT_EXTERNAL
configuration near FetchContent_MakeAvailable to use a normal scoped variable
instead of CACHE BOOL "" FORCE, preserving the intended ON value for the fetched
spdlog subproject without overriding a user-provided cache setting.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CMakeLists.txt`:
- Around line 84-95: Update the find_package calls for fmt and spdlog to require
minimum versions fmt 11.2.0 and spdlog 1.15.3 while retaining QUIET behavior,
ensuring older system installations fall through to the existing pinned
FetchContent declarations.

---

Nitpick comments:
In `@CMakeLists.txt`:
- Around line 97-99: Update the SPDLOG_FMT_EXTERNAL configuration near
FetchContent_MakeAvailable to use a normal scoped variable instead of CACHE BOOL
"" FORCE, preserving the intended ON value for the fetched spdlog subproject
without overriding a user-provided cache setting.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b26cff24-7a65-4f1d-96c7-2e1c9283764a

📥 Commits

Reviewing files that changed from the base of the PR and between 009b225 and a8c19a2.

📒 Files selected for processing (6)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • CMakeLists.txt
  • Dockerfile
  • README.md
  • docs/user_guide/getting_started.md
💤 Files with no reviewable changes (1)
  • Dockerfile

Comment thread CMakeLists.txt Outdated
@chizy7
chizy7 merged commit a63e131 into main Jul 21, 2026
13 of 14 checks passed
github-actions Bot pushed a commit that referenced this pull request Jul 21, 2026
## [1.8.1](v1.8.0...v1.8.1) (2026-07-21)

### Bug Fixes

* **build:** pin fmt/spdlog and remove unused websocketpp dependency ([#69](#69)) ([a63e131](a63e131))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.8.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

1 participant