Skip to content

Docs: replace raw setup/build commands with just tasks - #458

Closed
Prachi-Gupta2808 wants to merge 1 commit into
Ryan-Millard:devfrom
Prachi-Gupta2808:docs/just-commands
Closed

Docs: replace raw setup/build commands with just tasks#458
Prachi-Gupta2808 wants to merge 1 commit into
Ryan-Millard:devfrom
Prachi-Gupta2808:docs/just-commands

Conversation

@Prachi-Gupta2808

Copy link
Copy Markdown
Contributor

What was changed & why

Updated the contributor documentation to use just commands instead of raw build/setup commands where equivalent just tasks are available.

Fixes: #443

Changes

  • Updated setup and build instructions to use just commands.
  • Replaced raw build/run commands with just equivalents where applicable.
  • Updated documentation for C/C++, JS/WASM, and console examples.

Testing & Verification

  • Verified the documentation builds successfully with just docs build.
  • Verified the documentation serves correctly with just docs start.

Additional Resources

N/A

@github-actions github-actions Bot added c/c++ Changes to C or C++ files ci js/ts example-app Updates to code related to demonstration (example) applications core build-system documentation labels Jun 26, 2026
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

Failed to post review comments.

We encountered an issue with GitHub. Use @coderabbitai full review to retry the review.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: c8d08f72-d4b2-49d2-8f0c-0259a45ef34c

📥 Commits

Reviewing files that changed from the base of the PR and between a1aa2f6 and 447459b.

⛔ Files ignored due to path filters (5)
  • docs/static/img/readme-demo/output-aerial-view-mountains_pexels-pixabay-51373.svg is excluded by !**/*.svg
  • docs/static/img/readme-demo/output-margate-garden.svg is excluded by !**/*.svg
  • docs/static/img/readme-demo/output-ring-on-hand.svg is excluded by !**/*.svg
  • test.jpg is excluded by !**/*.jpg
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (54)
  • .coderabbit.yaml
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/ISSUE_TEMPLATE/good_first_issue.yml
  • .github/ISSUE_TEMPLATE/refactor.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/workflows/pr-check.yml
  • .github/workflows/pr-target-check.yml
  • .github/workflows/release.yml
  • .github/workflows/stale.yml
  • CMakeLists.txt
  • Dockerfile.dev
  • Justfile
  • bindings/c/CMakeLists.txt
  • bindings/c/include/cimg2num.h
  • bindings/c/src/cimg2num.cpp
  • bindings/js/src/wasm_wrapper.c
  • bindings/py/CMakeLists.txt
  • bindings/py/src/img2num_pybind.cpp
  • core/CMakeLists.txt
  • core/include/img2num.h
  • core/include/internal/LABAPixel.h
  • core/include/internal/LABPixel.h
  • core/include/internal/RGBAPixel.h
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/contours.h
  • core/include/internal/douglas_peucker.h
  • core/include/internal/gpu.h
  • core/include/internal/graph.h
  • core/include/internal/shared_contours.h
  • core/src/internal/bezier.cpp
  • core/src/internal/contours.cpp
  • core/src/internal/douglas_peucker.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/image_to_svg.cpp
  • core/src/internal/image_utils.cpp
  • core/src/internal/kmeans_gpu.cpp
  • core/src/internal/labels_to_svg.cpp
  • core/src/internal/shared_contours.cpp
  • docs/docs/contributing/setup-and-dependencies/index.md
  • docs/docs/internal/bindings/c/index.md
  • docs/docs/internal/bindings/js/index.md
  • docs/docs/internal/example-apps/console-c-and-console-cpp/index.md
  • docs/docs/internal/scripts/help-scripts/index.md
  • docs/docs/internal/scripts/help-scripts/scripts-guide.md
  • example-apps/console-c/CMakeLists.txt
  • example-apps/console-c/main.c
  • example-apps/console-cpp/CMakeLists.txt
  • example-apps/console-cpp/main.cpp
  • example-apps/console-py/main.py
  • packages/js/safeWasmWrappers.js
  • packages/py/img2num/api.py
  • pyproject.toml
💤 Files with no reviewable changes (4)
  • .github/ISSUE_TEMPLATE/good_first_issue.yml
  • .github/workflows/stale.yml
  • .github/workflows/pr-check.yml
  • .github/ISSUE_TEMPLATE/refactor.yml
🧰 Additional context used
📓 Path-based instructions (18)
**/*.{hpp,cpp,c,h}

📄 CodeRabbit inference engine (.editorconfig)

**/*.{hpp,cpp,c,h}: Use 4-space indentation for C/C++ files
Maintain 120 character maximum line length for C/C++ files

Files:

  • core/src/internal/image_to_svg.cpp
  • core/include/internal/RGBAPixel.h
  • core/src/internal/kmeans_gpu.cpp
  • example-apps/console-c/main.c
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • core/include/internal/LABPixel.h
  • core/include/internal/gpu.h
  • core/src/internal/image_utils.cpp
  • core/include/internal/douglas_peucker.h
  • core/src/internal/douglas_peucker.cpp
  • core/include/internal/LABAPixel.h
  • example-apps/console-cpp/main.cpp
  • bindings/c/include/cimg2num.h
  • core/src/internal/bezier.cpp
  • core/include/internal/contours.h
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • bindings/js/src/wasm_wrapper.c
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/include/img2num.h
  • core/src/internal/contours.cpp
**/*.{cpp,cc,cxx,c++,h,hpp,hxx,h++}

📄 CodeRabbit inference engine (.clang-format)

**/*.{cpp,cc,cxx,c++,h,hpp,hxx,h++}: Use LLVM coding style as the base style for C++ code
Use C++20 standard for all C++ code
Use an indent width of 4 spaces for C++ code
Limit line length to 100 columns in C++ code
Use 4 spaces for tab width in C++ code
Use C++11 braced list style with space before braced lists in C++ code
Attach opening braces to the same line (BreakBeforeBraces: Attach) in C++ code
Never pack constructor initializer lists on a single line in C++ code
Break constructor initializer lists before comma in C++ code
Use 4 spaces for constructor initializer list indentation in C++ code
Use block indent alignment after opening brackets in C++ code
Align pointers to the left in C++ code
Regroup and organize include blocks in C++ code
Sort includes case-insensitively in C++ code
Do not indent extern "C" blocks in C++ code
Allow short lambdas only inline on a single line in C++ code
Do not allow short functions on a single line in C++ code

Files:

  • core/src/internal/image_to_svg.cpp
  • core/include/internal/RGBAPixel.h
  • core/src/internal/kmeans_gpu.cpp
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • core/include/internal/LABPixel.h
  • core/include/internal/gpu.h
  • core/src/internal/image_utils.cpp
  • core/include/internal/douglas_peucker.h
  • core/src/internal/douglas_peucker.cpp
  • core/include/internal/LABAPixel.h
  • example-apps/console-cpp/main.cpp
  • bindings/c/include/cimg2num.h
  • core/src/internal/bezier.cpp
  • core/include/internal/contours.h
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/include/img2num.h
  • core/src/internal/contours.cpp
**

⚙️ CodeRabbit configuration file

**: # Contributing to Img2Num

Want to contribute to Img2Num? There are a few things you need to know.

We wrote a contribution guide to help you get started.

A few important points:

  • Add tests with your PR — new features and bug fixes must include tests where appropriate. PRs without tests are unlikely to be approved.
  • Follow the repository's coding style rules.
  • Use the issue and PR templates when filing issues or submitting code. Your PR will be rejected if you don't.

If you're unsure what to change, open a discussion and someone will assist you.

Questions?

If you have questions or need help:

Thank you for improving Img2Num! 🎨🚀

**: BasedOnStyle: LLVM
Standard: c++20

--- Basic formatting ---

IndentWidth: 4
ColumnLimit: 100
TabWidth: 4

--- Braces ---

Cpp11BracedListStyle: true
SpaceBeforeCpp11BracedList: true
BreakBeforeBraces: Attach

--- Braced initializers ---

Cpp11BracedListStyle: true

--- Constructor initializer lists ---

PackConstructorInitializers: Never
BreakConstructorInitializers: BeforeComma
ConstructorInitializerIndentWidth: 4

--- Alignment ---

AlignAfterOpenBracket: BlockIndent

--- Pointers ---

PointerAlignment: Left

--- Includes ---

IncludeBlocks: Regroup
SortIncludes: CaseInsensitive

--- Extern "C" cleanliness ---

IndentExternBlock: NoIndent

--- Lambdas ---

AllowShortLambdasOnASingleLine: Inline

--- Functions ---

AllowShortFunctionsOnASingleLine: None

**: root = true

-------------------------

Global defaults

-------------------------

[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
max_line_lengt...

Files:

  • core/src/internal/image_to_svg.cpp
  • docs/docs/internal/scripts/help-scripts/index.md
  • core/include/internal/RGBAPixel.h
  • core/src/internal/kmeans_gpu.cpp
  • example-apps/console-c/main.c
  • core/include/internal/RGBPixel.h
  • example-apps/console-c/CMakeLists.txt
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • docs/docs/internal/bindings/c/index.md
  • core/include/internal/LABPixel.h
  • docs/docs/internal/scripts/help-scripts/scripts-guide.md
  • core/include/internal/gpu.h
  • pyproject.toml
  • packages/py/img2num/api.py
  • example-apps/console-py/main.py
  • core/src/internal/image_utils.cpp
  • core/include/internal/douglas_peucker.h
  • core/src/internal/douglas_peucker.cpp
  • docs/docs/internal/bindings/js/index.md
  • core/include/internal/LABAPixel.h
  • Dockerfile.dev
  • example-apps/console-cpp/main.cpp
  • bindings/c/include/cimg2num.h
  • core/src/internal/bezier.cpp
  • docs/docs/internal/example-apps/console-c-and-console-cpp/index.md
  • core/include/internal/contours.h
  • docs/docs/contributing/setup-and-dependencies/index.md
  • core/CMakeLists.txt
  • packages/js/safeWasmWrappers.js
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • example-apps/console-cpp/CMakeLists.txt
  • bindings/py/src/img2num_pybind.cpp
  • bindings/c/CMakeLists.txt
  • bindings/js/src/wasm_wrapper.c
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • Justfile
  • core/include/img2num.h
  • core/src/internal/contours.cpp
  • CMakeLists.txt
  • bindings/py/CMakeLists.txt
core/**/*.{cpp,c,h,hpp}

⚙️ CodeRabbit configuration file

core/**/*.{cpp,c,h,hpp}: This is the Img2Num core C/C++ library. Review for:

  • Memory safety: null pointer dereferences, use-after-free, buffer overflows.
  • Correct RAII usage and smart pointer idioms.
  • Adherence to the .clang-format style; formatting must be applied via
    ./img2num format-cpp (or ./img2num format-wasm for WASM modules),
    NOT by calling clang-format directly.
  • When suggesting build/test steps, always use the Docker-first wrapper scripts
    (./img2num, img2num.ps1, or img2num.bat) rather than direct tool invocations,
    since contributors may not have dependencies installed locally.
  • Must have Doxygen docstrings in the API (img2num.h) files. This is important!

Files:

  • core/src/internal/image_to_svg.cpp
  • core/include/internal/RGBAPixel.h
  • core/src/internal/kmeans_gpu.cpp
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • core/include/internal/LABPixel.h
  • core/include/internal/gpu.h
  • core/src/internal/image_utils.cpp
  • core/include/internal/douglas_peucker.h
  • core/src/internal/douglas_peucker.cpp
  • core/include/internal/LABAPixel.h
  • core/src/internal/bezier.cpp
  • core/include/internal/contours.h
  • core/src/internal/labels_to_svg.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/include/img2num.h
  • core/src/internal/contours.cpp
**/*.{cpp,c,h,hpp}

⚙️ CodeRabbit configuration file

**/*.{cpp,c,h,hpp}: - For any C/C++ code outside core/ (e.g. bindings, example-apps), apply the same
memory-safety and style standards as the core. Formatting via ./img2num format-cpp.

  • Doxygen docstrings are required.

Files:

  • core/src/internal/image_to_svg.cpp
  • core/include/internal/RGBAPixel.h
  • core/src/internal/kmeans_gpu.cpp
  • example-apps/console-c/main.c
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • core/include/internal/LABPixel.h
  • core/include/internal/gpu.h
  • core/src/internal/image_utils.cpp
  • core/include/internal/douglas_peucker.h
  • core/src/internal/douglas_peucker.cpp
  • core/include/internal/LABAPixel.h
  • example-apps/console-cpp/main.cpp
  • bindings/c/include/cimg2num.h
  • core/src/internal/bezier.cpp
  • core/include/internal/contours.h
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • bindings/js/src/wasm_wrapper.c
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/include/img2num.h
  • core/src/internal/contours.cpp
**/*.md

📄 CodeRabbit inference engine (.editorconfig)

**/*.md: Do not trim trailing whitespace in Markdown files
Use 2-space indentation for Markdown files
Do not enforce maximum line length for Markdown files

Files:

  • docs/docs/internal/scripts/help-scripts/index.md
  • docs/docs/internal/bindings/c/index.md
  • docs/docs/internal/scripts/help-scripts/scripts-guide.md
  • docs/docs/internal/bindings/js/index.md
  • docs/docs/internal/example-apps/console-c-and-console-cpp/index.md
  • docs/docs/contributing/setup-and-dependencies/index.md
docs/docs/**

⚙️ CodeRabbit configuration file

docs/docs/**: All documentation must follow Docusaurus conventions (docs/docs/ folder structure).
Do NOT suggest creating strangely-named markdown files at the repository root
(e.g. COMPREHENSIVE_TEST_REPORT.md, DELIVERABLES.md, SUMMARY.md).
New docs belong either as a dedicated Docusaurus category or integrated into an
existing category such as project-scripts. Verify valid frontmatter
(title, sidebar_label, etc.) and correct sidebar wiring.

Files:

  • docs/docs/internal/scripts/help-scripts/index.md
  • docs/docs/internal/bindings/c/index.md
  • docs/docs/internal/scripts/help-scripts/scripts-guide.md
  • docs/docs/internal/bindings/js/index.md
  • docs/docs/internal/example-apps/console-c-and-console-cpp/index.md
  • docs/docs/contributing/setup-and-dependencies/index.md
.coderabbit.yaml

📄 CodeRabbit inference engine (Custom checks)

.coderabbit.yaml: Warn if a PR introduces new programming languages (e.g., first .py, .rs, .go, .java, .rb, .kt, .swift or similar source file) without a corresponding update to .coderabbit.yaml under reviews.path_instructions, tools:, or code_generation.docstrings.path_instructions
Warn if a PR introduces new linter/formatter config files (e.g., .flake8, pylintrc, .pylintrc, pyproject.toml with [tool.ruff]/[tool.pylint], .eslintrc*, .stylelintrc*, biome.json, .rubocop.yml) without corresponding tool being enabled or disabled under tools: in .coderabbit.yaml
Warn if a PR introduces new file extensions not covered by existing path_instructions in .coderabbit.yaml (e.g., .wgsl, .proto, .rego, .tf, .prisma) without updating reviews.path_instructions
Warn if a PR introduces new CI/tooling configuration files (e.g., .github/workflows/ files using third-party Actions or new dependabot.yml sections) without updating corresponding path_instructions in .coderabbit.yaml

Files:

  • .coderabbit.yaml
example-apps/**

⚙️ CodeRabbit configuration file

example-apps/**: - Example applications. These are for demonstration; keep them minimal and ensure
they correctly reflect the public API. Flag any use of internal/private APIs.

  • IMPORTANT: These example apps must be a good reflection of how to use Img2Num's
    library, which means that they need good comments and must have clean code. This
    is meant to be external and is designed for others to use to get started.

Files:

  • example-apps/console-c/main.c
  • example-apps/console-c/CMakeLists.txt
  • example-apps/console-py/main.py
  • example-apps/console-cpp/main.cpp
  • example-apps/console-cpp/CMakeLists.txt
**/*.txt

📄 CodeRabbit inference engine (.editorconfig)

**/*.txt: Do not enforce maximum line length for text files
Use 2-space indentation for text files

Files:

  • example-apps/console-c/CMakeLists.txt
  • core/CMakeLists.txt
  • example-apps/console-cpp/CMakeLists.txt
  • bindings/c/CMakeLists.txt
  • CMakeLists.txt
  • bindings/py/CMakeLists.txt
.github/workflows/**

⚙️ CodeRabbit configuration file

.github/workflows/**: GitHub Actions workflows. Review for:

  • SHA-pinned action versions for third-party actions (security best practice).
  • Secrets accessed only via ${{ secrets.* }} — never hardcoded.
  • Least-privilege permissions on each job/workflow.
  • Correct job dependency ordering (needs:) and if/condition logic.

Files:

  • .github/workflows/pr-target-check.yml
  • .github/workflows/release.yml
**/*.py

⚙️ CodeRabbit configuration file

**/*.py: Python source files. Review for:

  • PEP 8 compliance (enforced by ruff; focus on logic, not style).
  • Type annotation coverage — prefer typed signatures for public functions.
  • Exception handling: avoid bare except: clauses; always catch specific exceptions.
  • Resource management: use with statements for file/socket/connection handling.
  • No mutable default arguments (e.g. def foo(x=[]):).
  • When suggesting how to run Python tooling, prefer the ./img2num Docker wrapper
    rather than direct python / ruff / pylint invocations.

Files:

  • packages/py/img2num/api.py
  • example-apps/console-py/main.py
Dockerfile*

⚙️ CodeRabbit configuration file

Dockerfile*: Review with Hadolint rules. Prefer multi-stage builds, minimal base images,
and pinned image tags. Ensure no secrets are baked into layers.

Files:

  • Dockerfile.dev
bindings/**

⚙️ CodeRabbit configuration file

bindings/**: Language bindings for the Img2Num library. Ensure the public API surface matches
the core C/C++ headers and that error propagation is handled correctly for each
binding language. Also ensure the relevant docstrings are present to enable
auto-generation of documentation.

Files:

  • bindings/c/include/cimg2num.h
  • bindings/c/src/cimg2num.cpp
  • bindings/py/src/img2num_pybind.cpp
  • bindings/c/CMakeLists.txt
  • bindings/js/src/wasm_wrapper.c
  • bindings/py/CMakeLists.txt
docs/docs/contributing/**

⚙️ CodeRabbit configuration file

docs/docs/contributing/**: ---
title: Code of Conduct

Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

  • Demonstrating empathy and kindness toward other people
  • Being respectful of differing opinions, viewpoints, and experiences
  • Giving and gracefully accepting constructive feedback
  • Accepting responsibility and apologizing to those affected by our mistakes,
    and learning from the experience
  • Focusing on what is best not just for us as individuals, but for the
    overall community

Examples of unacceptable behavior include:

  • The use of sexualized language or imagery, and sexual attention or
    advances of any kind
  • Trolling, insulting or derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others' private information, such as a physical or email
    address, without their explicit permission
  • Other conduct which could reasonably be considered inappropriate in a
    professional setting

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligne...

Files:

  • docs/docs/contributing/setup-and-dependencies/index.md
docs/docs/contributing/setup-and-dependencies/**

⚙️ CodeRabbit configuration file

docs/docs/contributing/setup-and-dependencies/**: ---
id: setup-and-dependencies
title: Setup & Dependencies
sidebar_label: 🛠️ Setup & Dependencies
sidebar_position: 1

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

Prerequisites

Verify Prerequisite Installations

git --version
docker --version

:::important Docker Dev Environment
We recommend using the Docker dev environment.
Setting up the environment locally adds unnecessary complexity and is not officially supported.

If you choose to develop locally, you are responsible for configuring and maintaining your own environment.
:::

Clone the repository

git clone --recursive https://github.com/Ryan-Millard/Img2Num.git
cd Img2Num/

:::warning[Missing submodules after cloning]

If you cloned without --recursive, required dependencies will be missing.

This clones all submodules:

  • stb (required)
  • dawn (optional, required for local native builds)
git submodule update --init third_party

stb is always required.

git submodule update --init third_party/stb

Only needed for local native builds. The img2num-dev Docker image already has it built.

git submodule update --init third_party/dawn

:::

Docker

Start Docker

<Tabs
defaultValue="bash"
values={[
{ label: 'Linux / macOS', value: 'bash' },
{ label: 'Windows CMD', ...

Files:

  • docs/docs/contributing/setup-and-dependencies/index.md
**/*.{js,ts,jsx,tsx}

📄 CodeRabbit inference engine (.editorconfig)

**/*.{js,ts,jsx,tsx}: Use 2-space indentation for JavaScript and TypeScript files
Maintain 200 character maximum line length for JavaScript/TypeScript files

Files:

  • packages/js/safeWasmWrappers.js
{CMakeLists.txt,**/*.cmake}

📄 CodeRabbit inference engine (.editorconfig)

{CMakeLists.txt,**/*.cmake}: Use 2-space indentation for CMake configuration files
Maintain 120 character maximum line length for CMake files

Files:

  • CMakeLists.txt
🧠 Learnings (16)
📓 Common learnings
Learnt from: CR
Repo: Ryan-Millard/Img2Num

Timestamp: 2026-06-26T14:47:50.827Z
Learning: Use the Docker dev environment; local development is not officially supported and, if chosen, you are responsible for configuring and maintaining your own environment.
Learnt from: CR
Repo: Ryan-Millard/Img2Num

Timestamp: 2026-06-26T14:47:50.827Z
Learning: Clone the repository with `--recursive`, or otherwise initialize the required submodules (`stb` is required; `dawn` is only needed for local native builds).
Learnt from: CR
Repo: Ryan-Millard/Img2Num

Timestamp: 2026-06-26T14:47:50.827Z
Learning: Run all CMake commands from the root of the project.
Learnt from: CR
Repo: Ryan-Millard/Img2Num

Timestamp: 2026-06-26T14:47:50.827Z
Learning: Compile the library to WebAssembly before using the JavaScript library or running the example apps that depend on it.
Learnt from: CR
Repo: Ryan-Millard/Img2Num

Timestamp: 2026-06-26T14:47:50.827Z
Learning: Install JavaScript dependencies with `pnpm install` (either inside the Docker terminal or via the Docker wrapper script).
📚 Learning: 2025-12-31T17:46:54.476Z
Learnt from: fransafu
Repo: Ryan-Millard/Img2Num PR: 176
File: src/wasm/modules/image/src/bilateral_filter.cpp:98-101
Timestamp: 2025-12-31T17:46:54.476Z
Learning: In bilateral_filter.cpp (src/wasm/modules/image/src/bilateral_filter.cpp), rely on the fact that the center pixel contributes a weight of exactly 1.0 to both spatial and range components (exp(0) = 1) so the normalization sum cannot be zero. This implies you do not need explicit guards against division by zero for normalization in this implementation.

Applied to files:

  • core/src/internal/image_to_svg.cpp
  • core/src/internal/kmeans_gpu.cpp
  • core/src/internal/image_utils.cpp
  • core/src/internal/douglas_peucker.cpp
  • example-apps/console-cpp/main.cpp
  • core/src/internal/bezier.cpp
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/src/internal/contours.cpp
📚 Learning: 2026-01-06T04:56:57.269Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 191
File: src/wasm/modules/image/src/kmeans.cpp:128-134
Timestamp: 2026-01-06T04:56:57.269Z
Learning: In C++ sources compiled for WASM with Emscripten/Clang, designated initializers (e.g., RGBXY{.r = ..., .g = ...}) are allowed as a C++17 extension. When reviewing code that relies on designated initializers, verify that the target toolchain enables CXX_STANDARD 17 or higher and that the build system (CMake/emsdk) uses Emscripten with a compatible clang. If not, avoid such initializers or provide portable alternatives.

Applied to files:

  • core/src/internal/image_to_svg.cpp
  • core/src/internal/kmeans_gpu.cpp
  • core/src/internal/image_utils.cpp
  • core/src/internal/douglas_peucker.cpp
  • example-apps/console-cpp/main.cpp
  • core/src/internal/bezier.cpp
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/src/internal/contours.cpp
📚 Learning: 2026-01-06T21:06:24.476Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 191
File: src/wasm/modules/image/src/cielab.cpp:43-57
Timestamp: 2026-01-06T21:06:24.476Z
Learning: In the Img2Num project, prefer recommending and using the provided docker/script wrappers (e.g., ./img2num format-wasm, ./img2num clean-wasm) instead of invoking local tools directly (e.g., clang-format -i). This reduces dependency requirements for users and ensures consistent tooling across environments. Apply this guidance to C++ source files under the project when reviewing changes.

Applied to files:

  • core/src/internal/image_to_svg.cpp
  • core/src/internal/kmeans_gpu.cpp
  • core/src/internal/image_utils.cpp
  • core/src/internal/douglas_peucker.cpp
  • example-apps/console-cpp/main.cpp
  • core/src/internal/bezier.cpp
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/src/internal/contours.cpp
📚 Learning: 2026-01-19T00:02:34.957Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 234
File: src/wasm/modules/image/src/kmeans.cpp:79-81
Timestamp: 2026-01-19T00:02:34.957Z
Learning: In C++ multithreading contexts, prefer unsigned types for thread-count-like parameters (e.g., n_threads) to prevent negative values. Validate that the value is at least 1 before any division to avoid divide-by-zero at runtime. At the start of functions handling such values, create a safe count like: const unsigned int thread_count{std::max(1u, n_threads)}; This ensures non-negative, non-zero usage for divisions and related arithmetic. Apply this pattern to similar parameters across C++ modules, not just the specific file.

Applied to files:

  • core/src/internal/image_to_svg.cpp
  • core/src/internal/kmeans_gpu.cpp
  • core/src/internal/image_utils.cpp
  • core/src/internal/douglas_peucker.cpp
  • example-apps/console-cpp/main.cpp
  • core/src/internal/bezier.cpp
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/src/internal/contours.cpp
📚 Learning: 2026-02-25T21:24:19.036Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 272
File: core/src/internal/bilateral_filter_gpu.cpp:171-185
Timestamp: 2026-02-25T21:24:19.036Z
Learning: Adopt brace initialization (e.g., Type var{}) over copy initialization (e.g., Type var = {}) for zero-initialization in C++ across the repository. This should apply to variables, arrays, and structs in most C++ files (e.g., core/src/internal/bilateral_filter_gpu.cpp). It improves safety by avoiding narrowing conversions and makes initialization intent explicit.

Applied to files:

  • core/src/internal/image_to_svg.cpp
  • core/src/internal/kmeans_gpu.cpp
  • core/src/internal/image_utils.cpp
  • core/src/internal/douglas_peucker.cpp
  • example-apps/console-cpp/main.cpp
  • core/src/internal/bezier.cpp
  • bindings/c/src/cimg2num.cpp
  • core/src/internal/labels_to_svg.cpp
  • bindings/py/src/img2num_pybind.cpp
  • core/src/internal/graph.cpp
  • core/src/internal/shared_contours.cpp
  • core/src/internal/contours.cpp
📚 Learning: 2026-01-04T15:34:04.654Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 146
File: docs/docs/reference/react/components/ThemeSwitch/tests.md:123-124
Timestamp: 2026-01-04T15:34:04.654Z
Learning: In Docusaurus documentation, relative directory links (e.g., ../ or ../../../hooks/useTheme) resolve to index.md within the target directory. Do not require or force linking to index.md explicitly; such relative links remain valid and should not be changed when reviewing docs under the docs directory.

Applied to files:

  • docs/docs/internal/scripts/help-scripts/index.md
  • docs/docs/internal/bindings/c/index.md
  • docs/docs/internal/scripts/help-scripts/scripts-guide.md
  • docs/docs/internal/bindings/js/index.md
  • docs/docs/internal/example-apps/console-c-and-console-cpp/index.md
  • docs/docs/contributing/setup-and-dependencies/index.md
📚 Learning: 2026-02-22T15:20:15.304Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 263
File: docs/docs/internal/core/api-reference.md:13-13
Timestamp: 2026-02-22T15:20:15.304Z
Learning: In Docusaurus projects, Markdown files (*.md, *.mdx) may contain anchor tags with onClick={(e) => { e.preventDefault(); window.location.href = '...'; }} to force a full page navigation, bypassing React SPA routing for static/external paths. Treat this as intentional and do not flag it as redundant in docs contexts. Apply this guidance broadly to Markdown docs across the repository (not just the single file) and focus reviews on more impactful patterns such as accessibility, SEO, and navigation consistency.

Applied to files:

  • docs/docs/internal/scripts/help-scripts/index.md
  • docs/docs/internal/bindings/c/index.md
  • docs/docs/internal/scripts/help-scripts/scripts-guide.md
  • docs/docs/internal/bindings/js/index.md
  • docs/docs/internal/example-apps/console-c-and-console-cpp/index.md
  • docs/docs/contributing/setup-and-dependencies/index.md
📚 Learning: 2026-04-02T18:39:20.647Z
Learnt from: Krasner
Repo: Ryan-Millard/Img2Num PR: 290
File: core/src/internal/graph.cpp:138-208
Timestamp: 2026-04-02T18:39:20.647Z
Learning: In Ryan-Millard/Img2Num, `add_edge_pixel()` on a `Node` is intentionally designed to allow dual ownership of boundary pixels (the same pixel may appear in the node’s `m_pixels` and also in a neighboring node’s `m_edge_pixels` at the same time). This is required to avoid the SVG “1 pixel boundary problem” (a 1-pixel boundary gap artifact). Treat this as correct behavior: do not review it as a bug, memory/logic misuse, or an invalid data-structure invariant. Note that edge pixels are used only to expand the contour/binary representation for boundary tracing and do not affect node properties such as color.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-11T22:21:32.583Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 308
File: Dockerfile.dev:96-97
Timestamp: 2026-04-11T22:21:32.583Z
Learning: In this repo’s development Docker image (Dockerfile.dev), keep the root user as an intentional, acceptable design for dev workflows. Rationale to preserve: pnpm is installed under /root/.local/share/pnpm, /usr/src/app is a host-mounted volume where UID mismatches can cause permission issues, and dev tooling needs root-level flexibility. Do not suggest switching to a non-root USER for Dockerfile.dev unless you can provide a careful, qualified alternative that avoids pnpm path and host-volume permission problems.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-25T22:11:19.587Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 327
File: docs/package.json:132-132
Timestamp: 2026-04-25T22:11:19.587Z
Learning: In Ryan-Millard/Img2Num, treat `docusaurus/faster` as a required runtime dependency: ensure it is present in `docs/package.json`. This is needed for Docusaurus 3.10 builds because the project’s `docs/docusaurus.config.js` uses `future: { v4: true }`, enabling `fasterByDefault`, which requires `docusaurus/faster` to be installed; it should not be removed or considered optional for performance in this repo.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-02-25T21:24:34.055Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 272
File: core/include/internal/bilateral_filter_gpu.h:108-109
Timestamp: 2026-02-25T21:24:34.055Z
Learning: In WGSL shaders, .rgb swizzle on a vec4 returns the first three components regardless of color space. Do not assume data is RGB color space when the texture contains non-RGB data (e.g., CIELAB L, A, B). If LAB data is stored, treat and compute distances in LAB space, not RGB. Clearly document shader code paths that rely on specific color spaces and prefer explicit conversions or comments when using swizzled components with non-RGB textures. Apply this guidance to WGSL shader files across the codebase (not just this header) when handling color data or color-like channels.

Applied to files:

  • core/include/internal/RGBAPixel.h
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • core/include/internal/LABPixel.h
  • core/include/internal/gpu.h
  • core/include/internal/douglas_peucker.h
  • core/include/internal/LABAPixel.h
  • bindings/c/include/cimg2num.h
  • core/include/internal/contours.h
  • core/include/img2num.h
📚 Learning: 2026-04-09T19:05:40.514Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 302
File: core/include/internal/gpu.h:203-216
Timestamp: 2026-04-09T19:05:40.514Z
Learning: In Img2Num’s internal GPU initialization code, if querying adapter limits fails (e.g., `adapter.GetLimits(...)` returns `false`), treat this as a GPU initialization failure and route execution to the CPU fallback path. Do not continue with default limits in this case; the failure should cause the same fallback behavior as other GPU init errors.

Applied to files:

  • core/include/internal/RGBAPixel.h
  • core/include/internal/RGBPixel.h
  • core/include/internal/bezier.h
  • core/include/internal/shared_contours.h
  • core/include/internal/graph.h
  • core/include/internal/LABPixel.h
  • core/include/internal/gpu.h
  • core/include/internal/douglas_peucker.h
  • core/include/internal/LABAPixel.h
  • core/include/internal/contours.h
📚 Learning: 2026-05-01T22:50:11.527Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 339
File: release-please-config.json:18-47
Timestamp: 2026-05-01T22:50:11.527Z
Learning: In this repo, release-please-action v4 preserves '/' verbatim in slash-containing path-based package keys when emitting GitHub Actions output names (e.g., `bindings/c--release_created`). When referencing these step outputs in `job.outputs` (and other expressions), use bracket notation with the exact output name: `${{ steps.release.outputs['bindings/c--release_created'] }}` rather than dot notation. If needed, map the complex step output to a clean job-level output alias so downstream jobs can use dot notation via that alias.

Applied to files:

  • .github/workflows/pr-target-check.yml
  • .github/workflows/release.yml
📚 Learning: 2026-05-19T17:30:09.565Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 375
File: .github/workflows/cmake-build.yml:86-88
Timestamp: 2026-05-19T17:30:09.565Z
Learning: In Ryan-Millard/Img2Num CI/workflow YAMLs, any `uv sync` command used for the Python package build must include `--no-build-isolation` (do not remove it). If you need deterministic dependency installs for CI, you may add `--frozen` alongside it (e.g., `uv sync --frozen --no-build-isolation`), and it should not conflict with the repo’s build setup.

Applied to files:

  • .github/workflows/pr-target-check.yml
  • .github/workflows/release.yml
📚 Learning: 2026-04-27T15:40:33.329Z
Learnt from: Ryan-Millard
Repo: Ryan-Millard/Img2Num PR: 333
File: bindings/c/src/cimg2num.cpp:0-0
Timestamp: 2026-04-27T15:40:33.329Z
Learning: In the Ryan-Millard/Img2Num C bindings (e.g., `bindings/c/src/cimg2num.cpp`) that expose `extern "C"` functions, do not allow C++ exceptions (including `std::bad_alloc` and exceptions thrown from lambdas used internally) to propagate out of these C binding functions. Use the C-API failure idiom instead: catch exceptions internally as needed, clear/record error state via the existing error mechanism, and return `nullptr` (or the documented sentinel return value) on failure so the C caller can detect errors by checking the return value.

Applied to files:

  • bindings/c/src/cimg2num.cpp
🪛 ast-grep (0.44.0)
example-apps/console-py/main.py

[warning] 29-29: File path is request-/variable-derived; validate and normalize to prevent path traversal.
Context: open(os.path.join(OUTDIR, "result.svg"),"w")
Note: [CWE-22] Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal').

(open-filename-from-request)

🪛 Cppcheck (2.21.0)
core/src/internal/douglas_peucker.cpp

[style] 104-104: The function 'dp_curve_reduction' is never used.

(unusedFunction)

bindings/js/src/wasm_wrapper.c

[style] 44-44: The function 'image_to_svg' is never used.

(unusedFunction)

core/src/internal/shared_contours.cpp

[style] 61-61: The function 'build_shared_loops' is never used.

(unusedFunction)

core/src/internal/contours.cpp

[style] 834-834: The function 'coupled_smooth_junctions' is never used.

(unusedFunction)

🪛 markdownlint-cli2 (0.22.1)
.github/PULL_REQUEST_TEMPLATE.md

[warning] 11-11: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

🪛 zizmor (1.26.1)
.github/workflows/pr-target-check.yml

[warning] 21-21: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)


[warning] 9-12: insufficient job-level concurrency limits (concurrency-limits): workflow is missing concurrency setting

(concurrency-limits)


[info] 24-24: action functionality is already included by the runner (superfluous-actions): use gh pr comment or gh issue comment in a script step

(superfluous-actions)

.github/workflows/release.yml

[info] 43-43: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[error] 48-48: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 55-55: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[info] 86-86: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 87-87: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 88-88: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 91-91: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 92-92: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 93-93: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[warning] 109-109: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[info] 110-110: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[warning] 157-160: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)


[warning] 154-154: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)


[info] 147-147: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[info] 139-139: action functionality is already included by the runner (superfluous-actions): use gh release in a script step

(superfluous-actions)


[warning] 192-192: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[error] 184-184: runtime artifacts potentially vulnerable to a cache poisoning attack (cache-poisoning): enables caching by default

(cache-poisoning)


[info] 198-198: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[info] 178-178: action functionality is already included by the runner (superfluous-actions): use gh release in a script step

(superfluous-actions)


[info] 302-302: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[info] 280-280: action functionality is already included by the runner (superfluous-actions): use gh release in a script step

(superfluous-actions)

Warning

Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories.

  • Updated contributor docs to prefer just tasks over raw cmake, pnpm, python, and submodule setup commands wherever equivalents exist.
  • Added new just workflows for setup, formatting, builds, cleaning, docs server/site, React app, console examples, and help output.
  • Introduced and wired support for min_thickness across core APIs, C/C++ bindings, Python bindings, JS/WASM wrappers, and example apps.
  • Added new contour/junction handling and shared contour infrastructure, including junction-aware curve reduction and smoothing.
  • Refactored build configuration toward the new IMG2NUM_BUILD_* CMake options and aligned packaging/build config with them.
  • Updated repository automation: issue and PR templates, GitHub Actions workflows, CodeRabbit config, Docker dev image, and release workflow behavior.
Contributing author Lines added Lines removed
Unknown 713 287

Walkthrough

The PR updates repository workflows, issue/PR templates, build/task tooling, and docs around just. It also adds min_thickness and junction-aware contour handling through core SVG generation, language bindings, and example apps.

Changes

SVG Thickness and Contour Pipeline

Layer / File(s) Summary
API contracts
core/include/img2num.h, core/include/internal/graph.h, core/include/internal/bezier.h, core/include/internal/contours.h, core/include/internal/douglas_peucker.h, core/include/internal/shared_contours.h, bindings/c/include/cimg2num.h
Core and C binding declarations add min_thickness and new junction-aware contour helpers.
Core contour implementation
core/src/internal/graph.cpp, core/src/internal/bezier.cpp, core/src/internal/contours.cpp, core/src/internal/douglas_peucker.cpp, core/src/internal/shared_contours.cpp, core/src/internal/labels_to_svg.cpp, core/src/internal/image_to_svg.cpp
Graph contour assembly, shared loop fitting, junction detection, and thickness-based merging are implemented in the core sources.
Bindings and samples
bindings/c/src/cimg2num.cpp, bindings/js/src/wasm_wrapper.c, bindings/py/src/img2num_pybind.cpp, packages/js/safeWasmWrappers.js, packages/py/img2num/api.py, example-apps/console-*/main.*
C, JS, Python, and example entrypoints forward min_thickness through their wrappers and sample code.

Build Tasks and Documentation

Layer / File(s) Summary
Build configuration
CMakeLists.txt, core/CMakeLists.txt, bindings/c/CMakeLists.txt, bindings/py/CMakeLists.txt, pyproject.toml, Dockerfile.dev
Root, binding, and Python packaging configs switch to the new build flags and compile options, and the dev image installs just.
Just recipes
Justfile
The new Justfile defines help, build, clean, docs, react, and example-run commands.
Example app target wiring
example-apps/console-c/CMakeLists.txt, example-apps/console-cpp/CMakeLists.txt
The console example CMake projects are renamed and retargeted to the new executable names and compile settings.
Command docs
docs/docs/contributing/setup-and-dependencies/index.md, docs/docs/internal/bindings/*/index.md, docs/docs/internal/example-apps/console-c-and-console-cpp/index.md, docs/docs/internal/scripts/help-scripts/*
Docs pages replace raw build and run commands with the corresponding just tasks.

Repository Templates and Release Automation

Layer / File(s) Summary
Review and issue templates
.coderabbit.yaml, .github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/feature_request.yml, .github/PULL_REQUEST_TEMPLATE.md
The auto-review branch setting and the issue/PR templates are rewritten.
PR target check
.github/workflows/pr-target-check.yml
The pull request check workflow comments on main-targeted pull requests and fails the job.
Release dry-run workflow
.github/workflows/release.yml
The release workflow adds dry-run handling across branch triggers, build jobs, publish jobs, and propagation jobs.

Runtime Guards and Formatting

Layer / File(s) Summary
Runtime guards
core/src/internal/image_utils.cpp, core/include/internal/gpu.h, core/src/internal/kmeans_gpu.cpp
threshold_image and black_threshold_image return early for invalid thresholds, and GPU failure logging uses length-aware message text.
Declaration formatting
core/include/internal/LABAPixel.h, core/include/internal/LABPixel.h, core/include/internal/RGBAPixel.h, core/include/internal/RGBPixel.h
Internal pixel template declarations are reformatted onto single lines.

Sequence Diagram(s)

sequenceDiagram
  participant PullRequest as Pull Request
  participant PRTargetCheck as PR target check workflow
  participant CreateOrUpdateComment as peter-evans/create-or-update-comment
  PullRequest->>PRTargetCheck: pull_request event on main or dev
  PRTargetCheck->>CreateOrUpdateComment: post warning comment
  PRTargetCheck->>PullRequest: exit 1
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

  • Ryan-Millard/Img2Num#429: Adds the junction-aware contour and min_thickness core pipeline that this PR extends through bindings and examples.
  • Ryan-Millard/Img2Num#335: Introduces the ImageToSvgConfig / image_to_svg path that now carries the new min_thickness field.
  • Ryan-Millard/Img2Num#448: Covers the same CMake and C binding strict-C++ plumbing updated again here.

Suggested labels

tooling

Suggested reviewers

  • Ryan-Millard

Poem

🐰 I tapped the branches, just and neat,
then hopped through builds on nimble feet.
Shared loops twined like carrot vines,
and SVG moons drew tidy lines.
Hop! The releases and warnings meet.

🚥 Pre-merge checks | ✅ 3 | ❌ 5

❌ Failed checks (2 warnings, 3 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes many unrelated code and workflow changes, such as min_thickness and contour logic, beyond the docs-only issue. Split the documentation updates from the feature, build, and workflow changes into separate PRs or justify the expanded scope explicitly.
Docstring Coverage ⚠️ Warning Docstring coverage is 38.30% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
No Ai Slop Pr Description ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
No Strangely-Named Root Markdown Files ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Coderabbit Config Needs Update ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title is specific and accurately summarizes the documentation-focused change.
Description check ✅ Passed The description matches the PR and explains the switch from raw commands to just tasks.
Linked Issues check ✅ Passed The PR updates the Setup & Dependencies docs and related examples to use just tasks, matching the linked documentation objective.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
✨ Simplify code
  • Create PR with simplified code

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration.


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.

@Ryan-Millard
Ryan-Millard changed the base branch from main to dev June 26, 2026 14:48
@coderabbitai coderabbitai Bot added the tooling label Jun 26, 2026
@Krasner

Krasner commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

@Prachi-Gupta2808 see PR #446 this all have been updates

@Prachi-Gupta2808

Copy link
Copy Markdown
Contributor Author

Got it, I just checked it.
Should I close this PR then or is it something else I can scope it for?

@Krasner

Krasner commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Yeah. Can you help me address Ryan's comments on that PR?

@Prachi-Gupta2808

Copy link
Copy Markdown
Contributor Author

Alright @Krasner , do you want me to push directly to your branch or open a separate PR for it?

@Ryan-Millard

Copy link
Copy Markdown
Owner

Hi. What's the status on this PR?

@Prachi-Gupta2808

Copy link
Copy Markdown
Contributor Author

@Krasner told me it's being handled in his PR, should I delete this PR then?

@Krasner

Krasner commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

@Krasner told me it's being handled in his PR, should I delete this PR then?

Yes you can close this PR

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

Labels

build-system c/c++ Changes to C or C++ files ci core documentation example-app Updates to code related to demonstration (example) applications js/ts tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: update CLI commands to use Just tasks added in #439

3 participants