Skip to content

ci: Add Makefile commands for web apps and fix documentation links#120

Merged
yacosta738 merged 5 commits into
mainfrom
feature/web-apps-makefile
Mar 2, 2026
Merged

ci: Add Makefile commands for web apps and fix documentation links#120
yacosta738 merged 5 commits into
mainfrom
feature/web-apps-makefile

Conversation

@yacosta738
Copy link
Copy Markdown
Contributor

@yacosta738 yacosta738 commented Mar 2, 2026

This pull request introduces significant improvements to the web apps build system, documentation structure, and dependency management. The Makefile now provides unified commands for building, checking, formatting, and serving all web apps (chat, dashboard, docs, marketing) using Gradle, replacing legacy naming and workflows. Documentation files have been reorganized for clarity and consistency, including updates to architecture references and the addition of new placeholder and workflow reference files. Dependency management is streamlined, and new packages are added for better frontend development.

Build System and Web Apps (Makefile, Gradle):

  • Unified and expanded Makefile commands for building, serving, checking, formatting, and cleaning all web apps (chat, dashboard, docs, marketing) via Gradle :web: tasks, replacing legacy docs naming and direct pnpm calls. [1] [2] [3]
  • Added new Gradle tasks for legacy compatibility, mapping old docs commands to new web workspace tasks.

Documentation Structure and Content:

  • Reorganized documentation files: renamed architecture guides to overview.md, updated links to use new structure.md placeholder, and clarified architecture diagram references in both English and Spanish docs. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
  • Updated .lycheeignore to support relative links to local markdown files and file protocol links for documentation checks.

Dependency Management:

  • Changed deps-update Makefile target to list all declared dependency versions from the version catalog, improving clarity over just checking for updates.

Frontend Improvements:

  • Added clsx and tailwind-merge dependencies to clients/web/apps/chat/package.json and updated pnpm-lock.yaml accordingly for better styling and class management. [1] [2] [3] [4]
  • Added vite.config.js for both chat and dashboard apps to support Vue, path aliasing, and Vitest configuration.

Component Type Safety:

  • Improved type safety for input components in the dashboard app by defining a comprehensive InputType union.

Summary by CodeRabbit

  • New Features

    • New build/dev targets for web apps (chat, dashboard, marketing) and unified web workflow
  • Documentation

    • Added documentation structure guide, front-matter metadata, CI/PR workflow pages, and consolidated architecture navigation across languages
  • Chores

    • Vite configs and utility libs added for web apps; updated top-level build and Makefile targets
    • Updated ignore rules to recognize local markdown and file:// links
    • Minor package.json updates (dev tools and chat description)

…links

- Add build, dev, check, clean, and format Makefile targets for chat, dashboard, and marketing apps
- Add vite.config.js for chat and dashboard apps
- Rename architecture.md to overview.md in en/es guides
- Fix broken links in agent-runtime docs pointing to non-existent architecture.md
- Add placeholder structure.md to resolve local file references
- Update .lycheeignore to exclude local .md file references resolved at Astro build time
- Fix broken doc links in hardware-peripherals-design.md (en/es)
Use canonicalPath instead of absolutePath to resolve /var -> /private/var
symlink differences on macOS when comparing working directory paths.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 2, 2026

Warning

Rate limit exceeded

@yacosta738 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 21 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 64b8b72 and 53b5a6d.

📒 Files selected for processing (1)
  • clients/web/build.gradle.kts
📝 Walkthrough

Walkthrough

Restructures Makefile and Gradle doc tasks toward a unified web apps workflow, adds Vite configs and deps for chat and dashboard apps, tightens a dashboard input component's prop typing, updates docs metadata/links and placeholders, adjusts a JVM test to use canonical paths, and adds a root dev dependency.

Changes

Cohort / File(s) Summary
Link validation config
.lycheeignore
Adds anchored regex rules to ignore relative markdown links (e.g., ./file.md, ../guides/file.md, deeper paths) and file:// links to local markdown files.
Makefile / top-level build
Makefile
Removes DOCS_MODULE, reworks doc targets to use web-oriented Gradle tasks, adds web/*, chat/*, dashboard/*, marketing/* phony targets, and updates deps-update with a Gradle fallback.
Gradle website tasks
clients/web/build.gradle.kts
Renames/rebinds legacy website/doc task names (websiteInstall/websiteFormat/docStarlight/websiteCheck) and swaps Exec task registrations for generic task registrations with updated descriptions/dependencies; adjusts pnpm lock arg.
Chat app
clients/web/apps/chat/package.json, clients/web/apps/chat/vite.config.js
Adds clsx and tailwind-merge deps and introduces a Vite config enabling Vue, @ src alias, and Vitest happy-dom test env.
Dashboard app
clients/web/apps/dashboard/vite.config.js, clients/web/apps/dashboard/src/components/ui/input/Input.vue
Adds Vite config with Vue plugin, @ src alias, Vitest happy-dom; narrows type prop by introducing InputType union in Input.vue.
Docs content (EN)
clients/web/apps/docs/src/content/docs/en/...
Adds YAML front matter titles to multiple pages, updates Architecture links to ../../../guides/structure.md, simplifies overview to point to architecture diagrams, and adjusts related links.
Docs content (ES)
clients/web/apps/docs/src/content/docs/es/...
Adds YAML front matter titles, updates Arquitectura links to ../../../guides/structure.md, and simplifies overview to reference architecture diagrams.
Docs placeholder
clients/web/apps/docs/src/content/docs/guides/structure.md
Adds a new placeholder "Structure" page with a note indicating future content.
JVM test
modules/agent-core-kmp/src/jvmTest/.../RustCliBridgeTest.kt
Switches path comparisons to use File.canonicalPath and trims test output before constructing File to resolve symlink differences (macOS).
Root package
package.json
Adds @vue/tsconfig (^0.9.0) to devDependencies.

Sequence Diagram(s)

(Skipped)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

Possibly related PRs

Suggested labels

codex

Suggested reviewers

  • yuniel-acosta
🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: adding Makefile commands for web apps and fixing documentation links, which are the primary objectives of this PR.
Description check ✅ Passed The PR description is comprehensive and well-structured, covering build system changes, documentation reorganization, dependency management, and frontend improvements with relevant details and references.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/web-apps-makefile

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 and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 2, 2026

✅ Contributor Report

User: @yacosta738
Status: Passed (12/13 metrics passed)

Metric Description Value Threshold Status
PR Merge Rate PRs merged vs closed 88% >= 30%
Repo Quality Repos with ≥100 stars 0 >= 0
Positive Reactions Positive reactions received 9 >= 1
Negative Reactions Negative reactions received 0 <= 5
Account Age GitHub account age 3047 days >= 30 days
Activity Consistency Regular activity over time 108% >= 0%
Issue Engagement Issues with community engagement 0 >= 0
Code Reviews Code reviews given to others 383 >= 0
Merger Diversity Unique maintainers who merged PRs 2 >= 0
Repo History Merge Rate Merge rate in this repo 90% >= 0%
Repo History Min PRs Previous PRs in this repo 90 >= 0
Profile Completeness Profile richness (bio, followers) 90 >= 0
Suspicious Patterns Spam-like activity detection 1 N/A

Contributor Report evaluates based on public GitHub activity. Analysis period: 2025-03-02 to 2026-03-02

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🧹 Nitpick comments (2)
clients/web/apps/docs/src/content/docs/guides/structure.md (1)

1-3: Consider adding front matter for consistency with other docs pages.

This placeholder page will integrate more cleanly with docs tooling if it includes a title front matter block.

Suggested refactor
+---
+title: "Structure"
+---
+
 # Structure
 
 > This is a placeholder for the `structure.md` file. Content will be added as needed.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/apps/docs/src/content/docs/guides/structure.md` around lines 1 -
3, The page is missing YAML front matter which other docs pages include; add a
front matter block at the top of structure.md containing at least a title (e.g.
--- title: "Structure" ---) so the document integrates with the docs tooling;
ensure the front matter is the first lines of the file and keep the existing
placeholder content unchanged below it.
.lycheeignore (1)

47-49: Tighten file:// ignore scope to avoid hiding broken links.

Line [48] currently ignores any file://...md|mdx string, which can mask malformed local-file references and reduce docs-link validation value.

Suggested refinement
-^file://.*\.md(x)?$
+^file://[^?#\s]+\.mdx?(#[^\s]+)?$
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.lycheeignore around lines 47 - 49, The current .lycheeignore entry
"^file://.*\.md(x)?$" is too permissive and can hide malformed file://
references; replace it with a stricter regex that only ignores well-formed
absolute file URLs pointing to markdown files (e.g. use a pattern like
"^file:///.*\.(md|mdx)(?:[?#].*)?$") so it only matches proper
file:///<path>/*.md or .mdx with optional query/fragment; update the line
containing "^file://.*\.md(x)?$" in .lycheeignore accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@clients/web/apps/dashboard/src/components/ui/input/Input.vue`:
- Around line 4-31: The Input component's InputType union includes
non-string-value types (e.g., "checkbox", "radio", "file") while defineProps
declares modelValue?: string, causing a type mismatch; update the InputType
union to only include input types that map to string values (or alternatively
add per-type handling and adjust modelValue to accept the appropriate types) by
editing the InputType definition and/or the defineProps signature so InputType
and modelValue are consistent (refer to the InputType union and defineProps
usage in this file and adjust the types or add conditional prop types/handlers
for "checkbox"/"radio"/"file" cases).

In `@clients/web/apps/docs/src/content/docs/en/clients/agent-runtime/index.mdx`:
- Line 11: The "Architecture" Markdown link currently points to a broken
relative target '../guides/structure.md'; update the link target for the
"Architecture" entry in clients/agent-runtime/index.mdx (replace the
'../guides/structure.md' string) so it points to the shared structure.md using
the correct relative path from this file (adjust the ../ segments or switch to
the canonical site-relative path for the shared guide).

In
`@clients/web/apps/docs/src/content/docs/en/guides/hardware-peripherals-design.md`:
- Around line 320-323: The document contains a duplicated related-doc link
"[Project Structure](./structure.md)" (appearing twice); remove the redundant
entry or replace the second occurrence with the intended link (e.g., the correct
related page title and path) so the related-links list only contains unique
entries; update the line where the second "[Project Structure](./structure.md)"
appears.

In `@clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/index.mdx`:
- Line 11: Update the broken "Arquitectura" link by replacing the current target
"../guides/structure.md" (the link labeled "[Arquitectura]") with the shared
guide path (e.g., "/docs/guides/structure.md") so the link points to the central
guide location instead of a localized/non-existent relative path.

In
`@clients/web/apps/docs/src/content/docs/es/guides/hardware-peripherals-design.md`:
- Around line 319-321: The "Documentos Relacionados" list contains a duplicated
link to ./structure.md; remove one of the entries so only one
"[Estructura](./structure.md)" remains and keep the two distinct links "[Flujo
de Desarrollo](./development.md)" and "[Estructura del
Proyecto](./structure.md)" consolidated (rename or remove the redundant
"[Estructura]" or "[Estructura del Proyecto]" entry so there is a single link to
./structure.md) to avoid duplication in the related-docs list.

In `@clients/web/build.gradle.kts`:
- Around line 210-215: The docStarlight task currently runs the generic root
"build" via commandLine(pnpmShim, "run", "build"); instead, have docStarlight
delegate to the existing docsBuild task: remove or stop calling the root build
command and make docStarlight depend on or finalizedBy the already-defined
docsBuild task (use tasks.named("docsBuild")/dependsOn/docsBuild) so it reuses
the generated docs task graph; keep references to docStarlight, pnpmShim,
webRootDir and docsBuild when updating the task configuration.

---

Nitpick comments:
In @.lycheeignore:
- Around line 47-49: The current .lycheeignore entry "^file://.*\.md(x)?$" is
too permissive and can hide malformed file:// references; replace it with a
stricter regex that only ignores well-formed absolute file URLs pointing to
markdown files (e.g. use a pattern like "^file:///.*\.(md|mdx)(?:[?#].*)?$") so
it only matches proper file:///<path>/*.md or .mdx with optional query/fragment;
update the line containing "^file://.*\.md(x)?$" in .lycheeignore accordingly.

In `@clients/web/apps/docs/src/content/docs/guides/structure.md`:
- Around line 1-3: The page is missing YAML front matter which other docs pages
include; add a front matter block at the top of structure.md containing at least
a title (e.g. --- title: "Structure" ---) so the document integrates with the
docs tooling; ensure the front matter is the first lines of the file and keep
the existing placeholder content unchanged below it.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 98fe898 and c090b83.

⛔ Files ignored due to path filters (2)
  • clients/web/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !**/pnpm-lock.yaml
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !**/pnpm-lock.yaml
📒 Files selected for processing (20)
  • .lycheeignore
  • Makefile
  • clients/web/apps/chat/package.json
  • clients/web/apps/chat/vite.config.js
  • clients/web/apps/dashboard/src/components/ui/input/Input.vue
  • clients/web/apps/dashboard/vite.config.js
  • clients/web/apps/docs/src/content/docs/en/clients/agent-runtime/ci-map.md
  • clients/web/apps/docs/src/content/docs/en/clients/agent-runtime/index.mdx
  • clients/web/apps/docs/src/content/docs/en/clients/agent-runtime/pr-workflow.md
  • clients/web/apps/docs/src/content/docs/en/guides/hardware-peripherals-design.md
  • clients/web/apps/docs/src/content/docs/en/guides/overview.md
  • clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.md
  • clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/index.mdx
  • clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/pr-workflow.md
  • clients/web/apps/docs/src/content/docs/es/guides/hardware-peripherals-design.md
  • clients/web/apps/docs/src/content/docs/es/guides/overview.md
  • clients/web/apps/docs/src/content/docs/guides/structure.md
  • clients/web/build.gradle.kts
  • modules/agent-core-kmp/src/jvmTest/kotlin/com/profiletailors/agent/core/RustCliBridgeTest.kt
  • package.json

Comment thread clients/web/apps/dashboard/src/components/ui/input/Input.vue
Comment thread clients/web/apps/docs/src/content/docs/en/clients/agent-runtime/index.mdx Outdated
Comment thread clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/index.mdx Outdated
Comment thread clients/web/apps/docs/src/content/docs/es/guides/hardware-peripherals-design.md Outdated
Comment thread clients/web/build.gradle.kts Outdated
- Remove incompatible InputType values (checkbox, radio, file, hidden,
  submit, reset, button, image) from Input.vue that conflict with
  modelValue?: string
- Fix broken relative links in agent-runtime/index.mdx (en + es):
  ../guides/structure.md -> ../../../guides/structure.md
- Remove duplicate Related Documents entries in hardware-peripherals-design.md (en + es)
- Refactor docStarlight Gradle task to delegate to docsBuild instead of
  running pnpm directly, properly wiring task graph
- Ignore GitHub commits page URLs in lychee to prevent intermittent
  502 Bad Gateway CI failures

Refs: #120
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Mar 2, 2026

Deploying corvus with  Cloudflare Pages  Cloudflare Pages

Latest commit: 53b5a6d
Status: ✅  Deploy successful!
Preview URL: https://6ab7e3f5.corvus-42x.pages.dev
Branch Preview URL: https://feature-web-apps-makefile.corvus-42x.pages.dev

View logs

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
clients/web/build.gradle.kts (1)

49-55: Both branches produce identical results.

The conditional checks for pnpm-lock.yaml existence but both branches return listOf("install", "--no-frozen-lockfile"). If the intent was to enforce lockfile integrity when it exists, the if branch should use --frozen-lockfile.

♻️ Suggested fix
 val installArgs =
   if (webRootDir.resolve("pnpm-lock.yaml").exists()) {
-    listOf("install", "--no-frozen-lockfile")
+    listOf("install", "--frozen-lockfile")
   } else {
     logger.lifecycle("⚠️ clients/web/pnpm-lock.yaml missing, using --no-frozen-lockfile")
     listOf("install", "--no-frozen-lockfile")
   }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/build.gradle.kts` around lines 49 - 55, The conditional that sets
installArgs currently returns identical lists; update it so when the lockfile
exists (check using webRootDir.resolve("pnpm-lock.yaml").exists()) installArgs
uses listOf("install", "--frozen-lockfile") to enforce lockfile integrity, and
when it does not exist log the warning (logger.lifecycle(...)) and set
installArgs to listOf("install", "--no-frozen-lockfile"); touch the installArgs
declaration to reference the existing webRootDir and pnpm-lock.yaml check and
keep the warning behavior in the else branch.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@clients/web/build.gradle.kts`:
- Around line 49-55: The conditional that sets installArgs currently returns
identical lists; update it so when the lockfile exists (check using
webRootDir.resolve("pnpm-lock.yaml").exists()) installArgs uses
listOf("install", "--frozen-lockfile") to enforce lockfile integrity, and when
it does not exist log the warning (logger.lifecycle(...)) and set installArgs to
listOf("install", "--no-frozen-lockfile"); touch the installArgs declaration to
reference the existing webRootDir and pnpm-lock.yaml check and keep the warning
behavior in the else branch.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between c090b83 and 6b3b90d.

📒 Files selected for processing (7)
  • .lycheeignore
  • clients/web/apps/dashboard/src/components/ui/input/Input.vue
  • clients/web/apps/docs/src/content/docs/en/clients/agent-runtime/index.mdx
  • clients/web/apps/docs/src/content/docs/en/guides/hardware-peripherals-design.md
  • clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/index.mdx
  • clients/web/apps/docs/src/content/docs/es/guides/hardware-peripherals-design.md
  • clients/web/build.gradle.kts
💤 Files with no reviewable changes (1)
  • clients/web/apps/docs/src/content/docs/es/guides/hardware-peripherals-design.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • clients/web/apps/dashboard/src/components/ui/input/Input.vue
  • .lycheeignore

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
clients/web/build.gradle.kts (1)

49-55: ⚠️ Potential issue | 🟠 Major

Fail fast when pnpm-lock.yaml is missing to preserve lockfile integrity.

Line 53 currently allows --no-frozen-lockfile, which reintroduces nondeterministic dependency resolution. If lockfile integrity is the goal, this should error instead of silently downgrading guarantees.

🔧 Proposed fix
+import org.gradle.api.GradleException
+
 val installArgs =
   if (webRootDir.resolve("pnpm-lock.yaml").exists()) {
     listOf("install", "--frozen-lockfile")
   } else {
-    logger.lifecycle("⚠️ clients/web/pnpm-lock.yaml missing, using --no-frozen-lockfile")
-    listOf("install", "--no-frozen-lockfile")
+    throw GradleException(
+      "clients/web/pnpm-lock.yaml is required for deterministic installs. " +
+      "Run pnpm install locally and commit the lockfile."
+    )
   }

As per coding guidelines, "Security: Check for vulnerabilities in encryption, crypto code, and configuration handling."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/build.gradle.kts` around lines 49 - 55, The current installArgs
fallback silently uses "--no-frozen-lockfile" when
webRootDir.resolve("pnpm-lock.yaml").exists() is false; change the else branch
to fail fast instead of downgrading guarantees by throwing a Gradle exception
(e.g., throw GradleException or call error(...)) with a clear message that
pnpm-lock.yaml is missing and that the build requires the lockfile to ensure
deterministic installs; remove the logger.lifecycle and the
"--no-frozen-lockfile" path so installArgs only contains the frozen-lockfile
variant when the lockfile exists.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@clients/web/build.gradle.kts`:
- Around line 49-55: The current installArgs fallback silently uses
"--no-frozen-lockfile" when webRootDir.resolve("pnpm-lock.yaml").exists() is
false; change the else branch to fail fast instead of downgrading guarantees by
throwing a Gradle exception (e.g., throw GradleException or call error(...))
with a clear message that pnpm-lock.yaml is missing and that the build requires
the lockfile to ensure deterministic installs; remove the logger.lifecycle and
the "--no-frozen-lockfile" path so installArgs only contains the frozen-lockfile
variant when the lockfile exists.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 6b3b90d and 64b8b72.

📒 Files selected for processing (1)
  • clients/web/build.gradle.kts

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Mar 2, 2026

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

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.

1 participant