Skip to content

ui(automation): CustomCommands + GuildAutomation redesign with full test coverage - #969

Merged
LucasSantana-Dev merged 5 commits into
mainfrom
ui/automation-2026-05-15
May 23, 2026
Merged

LucasSantana-Dev merged 5 commits into
mainfrom
ui/automation-2026-05-15

Conversation

@LucasSantana-Dev

@LucasSantana-Dev LucasSantana-Dev commented May 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

Redesign and test coverage for CustomCommands and GuildAutomation pages.

Tests

Test Files: 2 passed
Tests:      42 passed (21 CustomCommands + 21 GuildAutomation)

Summary by CodeRabbit

Release Notes

  • Refactor
    • Restructured Custom Commands page from grid layout to collapsible list view—each command is now expandable to display details inline
    • Redesigned search and filter interface with updated styling and improved visual organization
    • Simplified Guild Automation page with cleaner layouts and improved responsiveness

Review Change Stack

@vercel

vercel Bot commented May 23, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
lucky Ready Ready Preview, Comment May 23, 2026 7:30am

Request Review

@coderabbitai

coderabbitai Bot commented May 23, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

@LucasSantana-Dev, we couldn't start this review because you've used your available PR reviews for now.

Your plan currently allows 1 review/hour. Refill in 33 minutes and 42 seconds.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more review capacity refills, 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 trial, open-source, and free plans. In all cases, review capacity refills continuously over time.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ab5c61f9-06a5-4e5a-a8b9-f9e00b9d235a

📥 Commits

Reviewing files that changed from the base of the PR and between 4247815 and 4a22f2b.

📒 Files selected for processing (5)
  • packages/frontend/src/pages/CustomCommands.test.tsx
  • packages/frontend/src/pages/CustomCommands.tsx
  • packages/frontend/src/pages/GuildAutomation.test.tsx
  • packages/frontend/src/pages/GuildAutomation.tsx
  • packages/shared/src/index.ts
📝 Walkthrough

Walkthrough

CustomCommands and GuildAutomation pages replace framer-motion animations and Card-based layouts with surface-panel containers and conditional rendering. CustomCommands converts an animated grid to a collapsible list with category filtering; GuildAutomation removes motion wrappers from the RunCard, result views, and manifest editor. Tests are updated with regex-based queries and accessible role selectors. The shared package now re-exports constants at the top level.

Changes

UI Refactoring: Animation Removal and Container Standardization

Layer / File(s) Summary
CustomCommands list layout and filtering refactoring
packages/frontend/src/pages/CustomCommands.tsx, packages/frontend/src/pages/CustomCommands.test.tsx
Imports drop framer-motion and Terminal, add Code and ChevronDown. A new expandedCommand state tracks which command row shows expanded details. Search/filter UI migrates from Card to surface-panel wrapper with updated category chip styling. Commands render as bordered rows instead of animated grid items; loading and empty states adjust accordingly. Test selector updates to find the surface-panel container.
GuildAutomation RunCard and result view containers
packages/frontend/src/pages/GuildAutomation.tsx
RunCard, PlanResultView, and ApplyResultView remove motion-based wrappers and Card containers, replacing them with bordered surface-panel layouts. RunCard uses a full-width button with Chevron up/down to toggle expanded details. Result views update Badge styling and container classes. ApplyResultView consolidates the failed count into the header row.
GuildAutomation status area and manifest editor
packages/frontend/src/pages/GuildAutomation.tsx
Status area replaces Card with surface-panel plus divider. Manifest editor header adds explicit Chevron toggle. Manifest editor expanded content uses conditional rendering for skeleton, "no manifest found" message, textarea, inline error display, and save button with spinner. Run history rendering removes AnimatePresence wrapper.
GuildAutomation test updates for resilience and accessibility
packages/frontend/src/pages/GuildAutomation.test.tsx
"Automation Status" text lookups use case-insensitive regex. Manifest editor "Expand" button located via getByRole with case-insensitive name. Run card error test reworked to explicitly wait and click before asserting. Refresh test waits for status using regex match. Queries align with refactored non-motion layout.
Shared package constants re-export
packages/shared/src/index.ts
Adds top-level re-export of constants so consumers can access constants directly from the package root.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • LucasSantana-Dev/Lucky#391: Both PRs update GuildAutomation test coverage with UI queries and assertions around status/action flows and manifest editor interactions.
🚥 Pre-merge checks | ✅ 4 | ❌ 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 (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: a redesign of CustomCommands and GuildAutomation UI components with comprehensive test coverage updates.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ui/automation-2026-05-15

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

Failed to generate code suggestions for PR

@github-actions

github-actions Bot commented May 23, 2026 •

Copy link
Copy Markdown

Size Change: -44 B (-0.01%)

Total Size: 424 kB

📦 View Changed
Filename Size Change
packages/frontend/dist/assets/Admin-DCFJ_kav.js 0 B -1.99 kB (removed) 🏆
packages/frontend/dist/assets/Admin-DMnh61Ut.js 1.99 kB +1.99 kB (new file) 🆕
packages/frontend/dist/assets/AutoMessages-02c_N8iR.js 2.68 kB +2.68 kB (new file) 🆕
packages/frontend/dist/assets/AutoMessages-Dm4Y1iwC.js 0 B -2.68 kB (removed) 🏆
packages/frontend/dist/assets/AutoMod-CE98mOHc.js 4.11 kB +4.11 kB (new file) 🆕
packages/frontend/dist/assets/AutoMod-CY5L5rAx.js 0 B -4.11 kB (removed) 🏆
packages/frontend/dist/assets/Changelog-9JyNV4w_.js 0 B -29.1 kB (removed) 🏆
packages/frontend/dist/assets/Changelog-DoqMBONX.js 29.1 kB +29.1 kB (new file) 🆕
packages/frontend/dist/assets/CommandsConfig-Bt0mMGhm.js 0 B -1.47 kB (removed) 🏆
packages/frontend/dist/assets/CommandsConfig-iq_gkUzm.js 1.47 kB +1.47 kB (new file) 🆕
packages/frontend/dist/assets/Config-BoGjKJA8.js 1.72 kB +1.72 kB (new file) 🆕
packages/frontend/dist/assets/Config-CjbQJ8Z5.js 0 B -1.72 kB (removed) 🏆
packages/frontend/dist/assets/CustomCommands-C5CkbKV-.js 0 B -2.16 kB (removed) 🏆
packages/frontend/dist/assets/CustomCommands-X8C9RuhL.js 2.12 kB +2.12 kB (new file) 🆕
packages/frontend/dist/assets/DashboardOverview-C6Uz75k8.js 0 B -3.93 kB (removed) 🏆
packages/frontend/dist/assets/DashboardOverview-OoQ0bgCM.js 3.93 kB +3.93 kB (new file) 🆕
packages/frontend/dist/assets/Docs-CKhDn2r0.js 0 B -17.6 kB (removed) 🏆
packages/frontend/dist/assets/Docs-Ui1Zfk-U.js 17.6 kB +17.6 kB (new file) 🆕
packages/frontend/dist/assets/DocsShell-B7CX4FYF.js 1.42 kB +1.42 kB (new file) 🆕
packages/frontend/dist/assets/DocsShell-XrMeoFQC.js 0 B -1.42 kB (removed) 🏆
packages/frontend/dist/assets/EmbedBuilder-BWFeithP.js 3.34 kB +3.34 kB (new file) 🆕
packages/frontend/dist/assets/EmbedBuilder-JIge_7HF.js 0 B -3.34 kB (removed) 🏆
packages/frontend/dist/assets/Features-DAV7js5t.js 758 B +758 B (new file) 🆕
packages/frontend/dist/assets/Features-GkyBsIO4.js 0 B -758 B (removed) 🏆
packages/frontend/dist/assets/GuildAutomation-BmMrxEOo.js 0 B -2.92 kB (removed) 🏆
packages/frontend/dist/assets/GuildAutomation-lYI44chr.js 2.88 kB +2.88 kB (new file) 🆕
packages/frontend/dist/assets/index-DD78Re7G.js 53.8 kB +53.8 kB (new file) 🆕
packages/frontend/dist/assets/index-DP7FOtKa.css 0 B -17.7 kB (removed) 🏆
packages/frontend/dist/assets/index-UyjE6ntD.js 0 B -53.8 kB (removed) 🏆
packages/frontend/dist/assets/index-vLgc9k48.css 17.7 kB +17.7 kB (new file) 🆕
packages/frontend/dist/assets/label-WONFMB1K.js 0 B -489 B (removed) 🏆
packages/frontend/dist/assets/label-WW5zhgZX.js 491 B +491 B (new file) 🆕
packages/frontend/dist/assets/Landing-6qCBWJk_.js 0 B -5.07 kB (removed) 🏆
packages/frontend/dist/assets/Landing-Cg-dV7ca.js 5.07 kB +5.07 kB (new file) 🆕
packages/frontend/dist/assets/Levels-bRBj5vsv.js 0 B -2.63 kB (removed) 🏆
packages/frontend/dist/assets/Levels-BvB2izOO.js 2.63 kB +2.63 kB (new file) 🆕
packages/frontend/dist/assets/Login-C11SOEii.js 0 B -2.5 kB (removed) 🏆
packages/frontend/dist/assets/Login-CWptJbSj.js 2.5 kB +2.5 kB (new file) 🆕
packages/frontend/dist/assets/Lyrics-CkT30pmm.js 0 B -1.33 kB (removed) 🏆
packages/frontend/dist/assets/Lyrics-DlIgLweB.js 1.34 kB +1.34 kB (new file) 🆕
packages/frontend/dist/assets/Moderation-CVqQtvAO.js 3.85 kB +3.85 kB (new file) 🆕
packages/frontend/dist/assets/Moderation-CxfPWZit.js 0 B -3.84 kB (removed) 🏆
packages/frontend/dist/assets/Music-CG9jUk4p.js 7.1 kB +7.1 kB (new file) 🆕
packages/frontend/dist/assets/Music-DkrLSzwT.js 0 B -7.1 kB (removed) 🏆
packages/frontend/dist/assets/MusicConfig-B7gyIueV.js 0 B -1.61 kB (removed) 🏆
packages/frontend/dist/assets/MusicConfig-Ds7yAEqo.js 1.61 kB +1.61 kB (new file) 🆕
packages/frontend/dist/assets/PreferredArtists-BOk8yvcd.js 0 B -3.76 kB (removed) 🏆
packages/frontend/dist/assets/PreferredArtists-DYW71oav.js 3.76 kB +3.76 kB (new file) 🆕
packages/frontend/dist/assets/PrivacyPolicy-BcmsQ_ux.js 0 B -1.77 kB (removed) 🏆
packages/frontend/dist/assets/PrivacyPolicy-CgrAnThq.js 1.77 kB +1.77 kB (new file) 🆕
packages/frontend/dist/assets/ReactionRoles-CCaaHEvt.js 0 B -1.89 kB (removed) 🏆
packages/frontend/dist/assets/ReactionRoles-fRPod7dw.js 1.89 kB +1.89 kB (new file) 🆕
packages/frontend/dist/assets/ServerLogs-m0NreYgr.js 2.91 kB +2.91 kB (new file) 🆕
packages/frontend/dist/assets/ServerLogs-mBsGa9HR.js 0 B -2.91 kB (removed) 🏆
packages/frontend/dist/assets/ServerSettings-C9mcoAJO.js 0 B -4.21 kB (removed) 🏆
packages/frontend/dist/assets/ServerSettings-foNsY0d2.js 4.21 kB +4.21 kB (new file) 🆕
packages/frontend/dist/assets/ServersPage--sVmqYs4.js 0 B -2.99 kB (removed) 🏆
packages/frontend/dist/assets/ServersPage-BM5Udacs.js 2.99 kB +2.99 kB (new file) 🆕
packages/frontend/dist/assets/Starboard-BCtDov2A.js 2.08 kB +2.08 kB (new file) 🆕
packages/frontend/dist/assets/Starboard-D4yWUdJa.js 0 B -2.08 kB (removed) 🏆
packages/frontend/dist/assets/TermsOfService-CpqQo2UA.js 1.61 kB +1.61 kB (new file) 🆕
packages/frontend/dist/assets/TermsOfService-DMpuSDID.js 0 B -1.61 kB (removed) 🏆
packages/frontend/dist/assets/TrackHistory-CO6Ksu9M.js 0 B -2.16 kB (removed) 🏆
packages/frontend/dist/assets/TrackHistory-pQFojzag.js 2.17 kB +2.17 kB (new file) 🆕
packages/frontend/dist/assets/TwitchNotifications-CgiBr3wx.js 0 B -2.44 kB (removed) 🏆
packages/frontend/dist/assets/TwitchNotifications-Or8sz1Sc.js 2.44 kB +2.44 kB (new file) 🆕
packages/frontend/dist/assets/useActiveHeading-CzpOHxLR.js 1.36 kB +1.36 kB (new file) 🆕
packages/frontend/dist/assets/useActiveHeading-X-2mrStp.js 0 B -1.35 kB (removed) 🏆
packages/frontend/dist/assets/useFeatures-C2K8batH.js 0 B -2.06 kB (removed) 🏆
packages/frontend/dist/assets/useFeatures-CqwvUJAz.js 2.06 kB +2.06 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
packages/frontend/dist/assets/api-AUPUM2Qa.js 3.37 kB
packages/frontend/dist/assets/authStore-DgS6MgsJ.js 559 B
packages/frontend/dist/assets/badge-D0rDuthK.js 499 B
packages/frontend/dist/assets/Card-DN73I4aD.js 508 B
packages/frontend/dist/assets/dialog-Dz7x1KBX.js 950 B
packages/frontend/dist/assets/guildStore-il-poOxg.js 791 B
packages/frontend/dist/assets/input-DiADXIRe.js 465 B
packages/frontend/dist/assets/LastFm-BwhXnmEQ.js 1.94 kB
packages/frontend/dist/assets/legalNav-BN-lcDyg.js 270 B
packages/frontend/dist/assets/rolldown-runtime-BYbx6iT9.js 471 B
packages/frontend/dist/assets/SectionHeader-owKxDDqn.js 892 B
packages/frontend/dist/assets/select-Fv-QGAyg.js 1.23 kB
packages/frontend/dist/assets/shim-Qmczh487.js 510 B
packages/frontend/dist/assets/Skeleton-qwtQZd8b.js 235 B
packages/frontend/dist/assets/Spotify-BUb8H5AS.js 1.94 kB
packages/frontend/dist/assets/StatTile-Brm81S9e.js 638 B
packages/frontend/dist/assets/switch-BNu_jUuI.js 545 B
packages/frontend/dist/assets/usePageMetadata-DVjH87aq.js 329 B
packages/frontend/dist/assets/utils-CGoI6nKW.js 148 B
packages/frontend/dist/assets/vendor-forms-VJTTJemd.js 25.6 kB
packages/frontend/dist/assets/vendor-radix-DKbKEiWx.js 38.9 kB
packages/frontend/dist/assets/vendor-react-DNaNL-Gj.js 55.6 kB
packages/frontend/dist/assets/vendor-state-B_fYO9zl.js 24.1 kB
packages/frontend/dist/assets/vendor-ui-CSDNYmoX.js 65.3 kB

compressed-size-action

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

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

⚠️ Outside diff range comments (1)
packages/frontend/src/pages/GuildAutomation.test.tsx (1)

569-585: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Refresh test can pass without actually validating refresh behavior.

At Line 573-576, selecting “first button with an svg” is nondeterministic, and Line 578 allows silently skipping assertions when not found. This can produce false-green tests.

Suggested fix
-        const refreshButtons = document.querySelectorAll('button')
-        const refreshButton = Array.from(refreshButtons).find((btn) =>
-            btn.querySelector('svg'),
-        )
-
-        if (refreshButton) {
-            await user.click(refreshButton)
-
-            await waitFor(() => {
-                expect(api.automation.getStatus).toHaveBeenCalled()
-                expect(api.automation.getManifest).toHaveBeenCalled()
-            })
-        }
+        const refreshButton = screen.getByRole('button', { name: /refresh status/i })
+        await user.click(refreshButton)
+
+        await waitFor(() => {
+            expect(api.automation.getStatus).toHaveBeenCalled()
+            expect(api.automation.getManifest).toHaveBeenCalled()
+        })
🤖 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 `@packages/frontend/src/pages/GuildAutomation.test.tsx` around lines 569 - 585,
The current test uses a nondeterministic DOM query (selecting the "first button
with an svg") and silently skips assertions if no button is found; replace that
with a deterministic query for the refresh control (e.g., use
screen.getByRole('button', { name: /refresh/i }) or
screen.getByTestId('refresh-button') targeting the specific refresh button in
GuildAutomation.test.tsx), remove the surrounding if conditional so the test
fails if the button is missing, perform the click with user.click(refreshButton)
and then assert api.automation.getStatus and api.automation.getManifest were
called.
🧹 Nitpick comments (1)
packages/frontend/src/pages/CustomCommands.tsx (1)

105-105: 💤 Low value

Redundant border declaration.

The surface-panel utility already includes border: 1px solid var(--lucky-border) per the shared CSS. The explicit border border-lucky-border class is unnecessary.

🔧 Suggested fix
-            <div className='surface-panel rounded-lg p-4 space-y-3 border border-lucky-border'>
+            <div className='surface-panel rounded-lg p-4 space-y-3'>
🤖 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 `@packages/frontend/src/pages/CustomCommands.tsx` at line 105, The div in the
CustomCommands component uses redundant explicit border classes on top of the
surface-panel utility; remove the extra classes "border" and
"border-lucky-border" from the className on the div (the element containing
'surface-panel rounded-lg p-4 space-y-3') so the styling relies on
surface-panel's built-in border, leaving other classes intact to preserve
spacing and rounding.
🤖 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 `@packages/frontend/src/pages/CustomCommands.tsx`:
- Around line 192-239: The Switch is nested inside the expandable button so its
clicks bubble and also trigger setExpandedCommand; to fix, stop event
propagation on the Switch so toggling only changes state: add an event handler
(e.g., onClick and/or onPointerDown) on the <Switch> element or its immediate
container that calls event.stopPropagation(), and keep the existing
onCheckedChange={() => handleToggle(cmd)} so toggling still works without
expanding/collapsing the row (refer to Switch, handleToggle, setExpandedCommand,
expandedCommand, and cmd.id).

In `@packages/frontend/src/pages/GuildAutomation.tsx`:
- Around line 395-399: The toggle button hardcodes aria-label and doesn't expose
its state to assistive tech; update the button that uses manifestExpanded /
setManifestExpanded to include aria-expanded={manifestExpanded} and make the
aria-label dynamic (e.g., manifestExpanded ? "Collapse manifest" : "Expand
manifest") so the label matches the state; apply the same changes to the other
similar toggle button elsewhere in this component that also toggles
manifestExpanded.
- Around line 83-85: The chevron affordance is only rendered when run.summary
exists, so runs that only have run.error show no expand cue; update the
conditional around ChevronUp/ChevronDown to show when either run.summary or
run.error is present (e.g., use (run.summary || run.error) and keep the expanded
toggle logic intact), and apply the same change to the corresponding expanded
panel rendering block that currently checks run.summary (the area around the
expanded variable and the ChevronUp/ChevronDown usage) so error-only runs also
display the chevron and can be expanded to see details.

---

Outside diff comments:
In `@packages/frontend/src/pages/GuildAutomation.test.tsx`:
- Around line 569-585: The current test uses a nondeterministic DOM query
(selecting the "first button with an svg") and silently skips assertions if no
button is found; replace that with a deterministic query for the refresh control
(e.g., use screen.getByRole('button', { name: /refresh/i }) or
screen.getByTestId('refresh-button') targeting the specific refresh button in
GuildAutomation.test.tsx), remove the surrounding if conditional so the test
fails if the button is missing, perform the click with user.click(refreshButton)
and then assert api.automation.getStatus and api.automation.getManifest were
called.

---

Nitpick comments:
In `@packages/frontend/src/pages/CustomCommands.tsx`:
- Line 105: The div in the CustomCommands component uses redundant explicit
border classes on top of the surface-panel utility; remove the extra classes
"border" and "border-lucky-border" from the className on the div (the element
containing 'surface-panel rounded-lg p-4 space-y-3') so the styling relies on
surface-panel's built-in border, leaving other classes intact to preserve
spacing and rounding.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 188f4e80-a8c1-4455-bbd0-cce9eed0c713

📥 Commits

Reviewing files that changed from the base of the PR and between 70bbdb1 and 4247815.

📒 Files selected for processing (5)
  • packages/frontend/src/pages/CustomCommands.test.tsx
  • packages/frontend/src/pages/CustomCommands.tsx
  • packages/frontend/src/pages/GuildAutomation.test.tsx
  • packages/frontend/src/pages/GuildAutomation.tsx
  • packages/shared/src/index.ts

Comment thread packages/frontend/src/pages/CustomCommands.tsx
Comment thread packages/frontend/src/pages/GuildAutomation.tsx
Comment thread packages/frontend/src/pages/GuildAutomation.tsx
@LucasSantana-Dev
LucasSantana-Dev force-pushed the ui/automation-2026-05-15 branch from 4247815 to babf765 Compare May 23, 2026 07:11

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@sonarqubecloud

Copy link
Copy Markdown

@LucasSantana-Dev
LucasSantana-Dev merged commit 4949602 into main May 23, 2026
31 of 32 checks passed
@LucasSantana-Dev
LucasSantana-Dev deleted the ui/automation-2026-05-15 branch May 23, 2026 07:35

This branch was successfully deployed

1 active deployment
Preview — 4a22f2b8 Deployed May 23, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant