rewrite following better practices from several example repositories #11

Merged
Kruziikrel13 merged 50 commits from rebuild into master 2025-08-08 11:58:58 +10:00
Kruziikrel13 commented 2025-08-08 11:57:28 +10:00 (Migrated from github.com)

I think this fixes #7 and #4

Summary by CodeRabbit

  • New Features

    • Introduced a modular bar with components for OS icon, workspaces, active client, clock, Spotify integration, network, audio, and system tray.
    • Added global UI constants for sizing, fonts, and colors.
    • Implemented a dynamic background image loader for multi-screen setups.
    • Added Spotify integration for displaying track info and controlling playback.
    • Provided new styled icon and text components for consistent UI.
  • Bug Fixes

    • Improved network status detection to support simultaneous Wi-Fi and Ethernet connections.
    • Enhanced system information parsing for better OS detection.
  • Refactor

    • Replaced and consolidated appearance and configuration settings into a new global singleton.
    • Streamlined language server configuration and internal imports.
  • Chores

    • Added environment, formatting, and shell configuration files.
    • Updated version control and Git LFS settings.
  • Removals

    • Deleted legacy bar, media controls, power menu, on-screen display, and related components.
    • Removed old appearance, configuration, and widget files in favor of new modular design.
I think this fixes #7 and #4 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Introduced a modular bar with components for OS icon, workspaces, active client, clock, Spotify integration, network, audio, and system tray. * Added global UI constants for sizing, fonts, and colors. * Implemented a dynamic background image loader for multi-screen setups. * Added Spotify integration for displaying track info and controlling playback. * Provided new styled icon and text components for consistent UI. * **Bug Fixes** * Improved network status detection to support simultaneous Wi-Fi and Ethernet connections. * Enhanced system information parsing for better OS detection. * **Refactor** * Replaced and consolidated appearance and configuration settings into a new global singleton. * Streamlined language server configuration and internal imports. * **Chores** * Added environment, formatting, and shell configuration files. * Updated version control and Git LFS settings. * **Removals** * Deleted legacy bar, media controls, power menu, on-screen display, and related components. * Removed old appearance, configuration, and widget files in favor of new modular design. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
coderabbitai[bot] commented 2025-08-08 11:57:35 +10:00 (Migrated from github.com)

Walkthrough

This update restructures a shell UI project by introducing new QML components for bar modules, background, and global styling, while removing or replacing legacy files and centralizing style constants in a new singleton. Several modules, configuration, and appearance files are deleted or replaced. The update also adds Nix development environment files and revises service singletons for audio, network, and Spotify integration.

Changes

Cohort / File(s) Change Summary
Development Environment
.envrc, .gitattributes, .gitignore, .qmlformat.ini, shell.nix
Added configuration for Nix shell, git LFS for .jpg, ignored .qmlls.ini, QML formatting rules, and Nix shell environment with Qt 6 declarative.
Bar, Background, and Core UI Components (New)
ShellGlobals.qml, background/Background.qml, bar/Clock.qml, bar/ModuleGroup.qml, bar/Network.qml, bar/OsIcon.qml, bar/Pipewire.qml, bar/Spotify.qml, bar/Window.qml, bar/hyprland/ActiveClient.qml, bar/hyprland/Workspace.qml, bar/hyprland/Workspaces.qml, bar/tray/Tray.qml, bar/tray/TrayItem.qml, components/StyledIcon.qml, components/StyledText.qml, components/StyledWindow.qml
Introduced new QML components for global shell constants, background image, bar modules (clock, network, OS icon, Pipewire, Spotify), window layout, Hyprland integration, tray, and standardized styled icon/text/window components.
Service Singletons (Audio, Network, Spotify, SystemInfo)
services/Audio.qml, services/Network.qml, services/SpotifyController.qml, services/SystemInfo.qml
Refactored singletons: improved typing and behavior, replaced network type with wifi/ethernet booleans, added Spotify controller for MPRIS, enhanced system info parsing and removed unused code.
Legacy, Appearance, and Config (Removed)
settings/Appearance.qml, settings/ConfigOptions.qml, widgets/CustomIcon.qml, widgets/StyledShadow.qml, widgets/StyledText.qml, windows/Bar/Bar.qml, windows/Bar/components/ModuleGroup.qml, windows/Bar/components/Separator.qml, windows/Bar/modules/ActiveClient.qml, windows/Bar/modules/Network.qml, windows/Bar/modules/Notifications.qml, windows/Bar/modules/OsIcon.qml, windows/Bar/modules/PowerMenu.qml, windows/Bar/modules/Spotify.qml, windows/Bar/modules/Tray.qml, windows/Bar/modules/Workspaces.qml, windows/MediaControls/MediaControls.qml, windows/OnScreenDisplay/OnScreenDisplayVolume.qml, windows/PowerMenu/PowerMenu.qml, windows/PowerMenu/components/Profile.qml, services/MediaController.qml
Deleted legacy bar modules, appearance/config singletons, widgets, media controls, on-screen display, power menu, and related components.
Shell Entry and Loader
shell.qml, .lazy.lua
Refactored shell entry to use new bar and background modules, updated imports, changed root element, and simplified language server enablement in .lazy.lua.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ShellRoot
    participant Bar.Window
    participant Background
    participant ShellGlobals
    participant Services (Audio/Network/Spotify/SystemInfo)

    User->>ShellRoot: Launch shell.qml
    ShellRoot->>ShellGlobals: Access global constants
    ShellRoot->>Bar.Window: Instantiate bar per screen
    ShellRoot->>Background: Instantiate background if image set
    Bar.Window->>Services: Query status (audio, network, Spotify, system info)
    Bar.Window->>ShellGlobals: Read sizes, fonts, colors
    Bar.Window->>Bar Modules: Render modules (Clock, Network, Pipewire, etc.)
    Bar.Window->>Tray: Render system tray
    Bar Modules->>Services: Fetch live data (e.g., network, Spotify)
    Note right of Bar.Window: Modules update reactively on service changes

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

In the garden of code, a shell takes new shape,
Old modules retire, new rabbits escape.
With backgrounds that shimmer and bars that align,
Spotify dances, the network’s just fine.
Nix brings fresh clover, the tray hops in view—
A shell full of carrots, for rabbits and you!
🐇🌱

Note

🔌 MCP (Model Context Protocol) integration is now available in Early Access!

Pro users can now connect to remote MCP servers under the Integrations page to get reviews and chat conversations that understand additional development context.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Free

📥 Commits

Reviewing files that changed from the base of the PR and between 334a95e170 and 8caffafb4c.

Files ignored due to path filters (14)
  • assets/icons/arch-symbolic.svg is excluded by !**/*.svg
  • assets/icons/github-symbolic.svg is excluded by !**/*.svg
  • assets/icons/linux-symbolic.svg is excluded by !**/*.svg
  • assets/icons/nixos-symbolic.svg is excluded by !**/*.svg
  • assets/icons/spotify.svg is excluded by !**/*.svg
  • assets/icons/ubuntu-symbolic.svg is excluded by !**/*.svg
  • assets/wallpapers/icelandbeach.jpg is excluded by !**/*.jpg
  • assets/wallpapers/icelandbeach2.jpg is excluded by !**/*.jpg
  • assets/wallpapers/icelandgeneric.jpg is excluded by !**/*.jpg
  • assets/wallpapers/nepalmountainsnight.jpg is excluded by !**/*.jpg
  • assets/wallpapers/ocean.jpg is excluded by !**/*.jpg
  • assets/wallpapers/scavengersreign1.jpg is excluded by !**/*.jpg
  • assets/wallpapers/scavengersreign2.jpg is excluded by !**/*.jpg
  • assets/wallpapers/sunnymountains.jpg is excluded by !**/*.jpg
📒 Files selected for processing (49)
  • .envrc (1 hunks)
  • .gitattributes (1 hunks)
  • .gitignore (1 hunks)
  • .lazy.lua (0 hunks)
  • .qmlformat.ini (1 hunks)
  • ShellGlobals.qml (1 hunks)
  • background/Background.qml (1 hunks)
  • bar/Clock.qml (1 hunks)
  • bar/ModuleGroup.qml (1 hunks)
  • bar/Network.qml (1 hunks)
  • bar/OsIcon.qml (1 hunks)
  • bar/Pipewire.qml (1 hunks)
  • bar/Spotify.qml (1 hunks)
  • bar/Window.qml (1 hunks)
  • bar/hyprland/ActiveClient.qml (1 hunks)
  • bar/hyprland/Workspace.qml (1 hunks)
  • bar/hyprland/Workspaces.qml (1 hunks)
  • bar/tray/Tray.qml (1 hunks)
  • bar/tray/TrayItem.qml (1 hunks)
  • components/StyledIcon.qml (1 hunks)
  • components/StyledText.qml (1 hunks)
  • components/StyledWindow.qml (1 hunks)
  • services/Audio.qml (1 hunks)
  • services/MediaController.qml (0 hunks)
  • services/Network.qml (1 hunks)
  • services/SpotifyController.qml (1 hunks)
  • services/SystemInfo.qml (2 hunks)
  • settings/Appearance.qml (0 hunks)
  • settings/ConfigOptions.qml (0 hunks)
  • shell.nix (1 hunks)
  • shell.qml (1 hunks)
  • widgets/CustomIcon.qml (0 hunks)
  • widgets/StyledShadow.qml (0 hunks)
  • widgets/StyledText.qml (0 hunks)
  • windows/Bar/Bar.qml (0 hunks)
  • windows/Bar/components/ModuleGroup.qml (0 hunks)
  • windows/Bar/components/Separator.qml (0 hunks)
  • windows/Bar/modules/ActiveClient.qml (0 hunks)
  • windows/Bar/modules/Network.qml (0 hunks)
  • windows/Bar/modules/Notifications.qml (0 hunks)
  • windows/Bar/modules/OsIcon.qml (0 hunks)
  • windows/Bar/modules/PowerMenu.qml (0 hunks)
  • windows/Bar/modules/Spotify.qml (0 hunks)
  • windows/Bar/modules/Tray.qml (0 hunks)
  • windows/Bar/modules/Workspaces.qml (0 hunks)
  • windows/MediaControls/MediaControls.qml (0 hunks)
  • windows/OnScreenDisplay/OnScreenDisplayVolume.qml (0 hunks)
  • windows/PowerMenu/PowerMenu.qml (0 hunks)
  • windows/PowerMenu/components/Profile.qml (0 hunks)
💤 Files with no reviewable changes (22)
  • .lazy.lua
  • windows/Bar/modules/OsIcon.qml
  • windows/Bar/components/ModuleGroup.qml
  • widgets/StyledShadow.qml
  • widgets/StyledText.qml
  • windows/PowerMenu/components/Profile.qml
  • widgets/CustomIcon.qml
  • windows/Bar/modules/PowerMenu.qml
  • windows/Bar/modules/Workspaces.qml
  • windows/Bar/components/Separator.qml
  • windows/Bar/modules/ActiveClient.qml
  • windows/Bar/modules/Notifications.qml
  • settings/ConfigOptions.qml
  • windows/Bar/modules/Tray.qml
  • settings/Appearance.qml
  • windows/Bar/modules/Spotify.qml
  • windows/OnScreenDisplay/OnScreenDisplayVolume.qml
  • services/MediaController.qml
  • windows/Bar/Bar.qml
  • windows/Bar/modules/Network.qml
  • windows/MediaControls/MediaControls.qml
  • windows/PowerMenu/PowerMenu.qml

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Join our Discord community for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.
<!-- This is an auto-generated comment: summarize by coderabbit.ai --> <!-- walkthrough_start --> ## Walkthrough This update restructures a shell UI project by introducing new QML components for bar modules, background, and global styling, while removing or replacing legacy files and centralizing style constants in a new singleton. Several modules, configuration, and appearance files are deleted or replaced. The update also adds Nix development environment files and revises service singletons for audio, network, and Spotify integration. ## Changes | Cohort / File(s) | Change Summary | |---|---| | **Development Environment**<br>`.envrc`, `.gitattributes`, `.gitignore`, `.qmlformat.ini`, `shell.nix` | Added configuration for Nix shell, git LFS for `.jpg`, ignored `.qmlls.ini`, QML formatting rules, and Nix shell environment with Qt 6 declarative. | | **Bar, Background, and Core UI Components (New)**<br>`ShellGlobals.qml`, `background/Background.qml`, `bar/Clock.qml`, `bar/ModuleGroup.qml`, `bar/Network.qml`, `bar/OsIcon.qml`, `bar/Pipewire.qml`, `bar/Spotify.qml`, `bar/Window.qml`, `bar/hyprland/ActiveClient.qml`, `bar/hyprland/Workspace.qml`, `bar/hyprland/Workspaces.qml`, `bar/tray/Tray.qml`, `bar/tray/TrayItem.qml`, `components/StyledIcon.qml`, `components/StyledText.qml`, `components/StyledWindow.qml` | Introduced new QML components for global shell constants, background image, bar modules (clock, network, OS icon, Pipewire, Spotify), window layout, Hyprland integration, tray, and standardized styled icon/text/window components. | | **Service Singletons (Audio, Network, Spotify, SystemInfo)**<br>`services/Audio.qml`, `services/Network.qml`, `services/SpotifyController.qml`, `services/SystemInfo.qml` | Refactored singletons: improved typing and behavior, replaced network type with wifi/ethernet booleans, added Spotify controller for MPRIS, enhanced system info parsing and removed unused code. | | **Legacy, Appearance, and Config (Removed)**<br>`settings/Appearance.qml`, `settings/ConfigOptions.qml`, `widgets/CustomIcon.qml`, `widgets/StyledShadow.qml`, `widgets/StyledText.qml`, `windows/Bar/Bar.qml`, `windows/Bar/components/ModuleGroup.qml`, `windows/Bar/components/Separator.qml`, `windows/Bar/modules/ActiveClient.qml`, `windows/Bar/modules/Network.qml`, `windows/Bar/modules/Notifications.qml`, `windows/Bar/modules/OsIcon.qml`, `windows/Bar/modules/PowerMenu.qml`, `windows/Bar/modules/Spotify.qml`, `windows/Bar/modules/Tray.qml`, `windows/Bar/modules/Workspaces.qml`, `windows/MediaControls/MediaControls.qml`, `windows/OnScreenDisplay/OnScreenDisplayVolume.qml`, `windows/PowerMenu/PowerMenu.qml`, `windows/PowerMenu/components/Profile.qml`, `services/MediaController.qml` | Deleted legacy bar modules, appearance/config singletons, widgets, media controls, on-screen display, power menu, and related components. | | **Shell Entry and Loader**<br>`shell.qml`, `.lazy.lua` | Refactored shell entry to use new bar and background modules, updated imports, changed root element, and simplified language server enablement in `.lazy.lua`. | ## Sequence Diagram(s) ```mermaid sequenceDiagram participant User participant ShellRoot participant Bar.Window participant Background participant ShellGlobals participant Services (Audio/Network/Spotify/SystemInfo) User->>ShellRoot: Launch shell.qml ShellRoot->>ShellGlobals: Access global constants ShellRoot->>Bar.Window: Instantiate bar per screen ShellRoot->>Background: Instantiate background if image set Bar.Window->>Services: Query status (audio, network, Spotify, system info) Bar.Window->>ShellGlobals: Read sizes, fonts, colors Bar.Window->>Bar Modules: Render modules (Clock, Network, Pipewire, etc.) Bar.Window->>Tray: Render system tray Bar Modules->>Services: Fetch live data (e.g., network, Spotify) Note right of Bar.Window: Modules update reactively on service changes ``` ## Estimated code review effort 🎯 4 (Complex) | ⏱️ ~45 minutes ## Poem > In the garden of code, a shell takes new shape, > Old modules retire, new rabbits escape. > With backgrounds that shimmer and bars that align, > Spotify dances, the network’s just fine. > Nix brings fresh clover, the tray hops in view— > A shell full of carrots, for rabbits and you! > 🐇🌱 <!-- walkthrough_end --> <!-- announcements_start --> > [!NOTE] > <details open="true"> > <summary>🔌 MCP (Model Context Protocol) integration is now available in Early Access!</summary> > > Pro users can now connect to remote MCP servers under the Integrations page to get reviews and chat conversations that understand additional development context. > > </details> <!-- announcements_end --> --- <details> <summary>📜 Recent review details</summary> **Configuration used: CodeRabbit UI** **Review profile: CHILL** **Plan: Free** <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 334a95e17009068424797d3beb71eee95be9a19c and 8caffafb4c1e793039ebc5e0a511ef9fba4661fe. </details> <details> <summary>⛔ Files ignored due to path filters (14)</summary> * `assets/icons/arch-symbolic.svg` is excluded by `!**/*.svg` * `assets/icons/github-symbolic.svg` is excluded by `!**/*.svg` * `assets/icons/linux-symbolic.svg` is excluded by `!**/*.svg` * `assets/icons/nixos-symbolic.svg` is excluded by `!**/*.svg` * `assets/icons/spotify.svg` is excluded by `!**/*.svg` * `assets/icons/ubuntu-symbolic.svg` is excluded by `!**/*.svg` * `assets/wallpapers/icelandbeach.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/icelandbeach2.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/icelandgeneric.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/nepalmountainsnight.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/ocean.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/scavengersreign1.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/scavengersreign2.jpg` is excluded by `!**/*.jpg` * `assets/wallpapers/sunnymountains.jpg` is excluded by `!**/*.jpg` </details> <details> <summary>📒 Files selected for processing (49)</summary> * `.envrc` (1 hunks) * `.gitattributes` (1 hunks) * `.gitignore` (1 hunks) * `.lazy.lua` (0 hunks) * `.qmlformat.ini` (1 hunks) * `ShellGlobals.qml` (1 hunks) * `background/Background.qml` (1 hunks) * `bar/Clock.qml` (1 hunks) * `bar/ModuleGroup.qml` (1 hunks) * `bar/Network.qml` (1 hunks) * `bar/OsIcon.qml` (1 hunks) * `bar/Pipewire.qml` (1 hunks) * `bar/Spotify.qml` (1 hunks) * `bar/Window.qml` (1 hunks) * `bar/hyprland/ActiveClient.qml` (1 hunks) * `bar/hyprland/Workspace.qml` (1 hunks) * `bar/hyprland/Workspaces.qml` (1 hunks) * `bar/tray/Tray.qml` (1 hunks) * `bar/tray/TrayItem.qml` (1 hunks) * `components/StyledIcon.qml` (1 hunks) * `components/StyledText.qml` (1 hunks) * `components/StyledWindow.qml` (1 hunks) * `services/Audio.qml` (1 hunks) * `services/MediaController.qml` (0 hunks) * `services/Network.qml` (1 hunks) * `services/SpotifyController.qml` (1 hunks) * `services/SystemInfo.qml` (2 hunks) * `settings/Appearance.qml` (0 hunks) * `settings/ConfigOptions.qml` (0 hunks) * `shell.nix` (1 hunks) * `shell.qml` (1 hunks) * `widgets/CustomIcon.qml` (0 hunks) * `widgets/StyledShadow.qml` (0 hunks) * `widgets/StyledText.qml` (0 hunks) * `windows/Bar/Bar.qml` (0 hunks) * `windows/Bar/components/ModuleGroup.qml` (0 hunks) * `windows/Bar/components/Separator.qml` (0 hunks) * `windows/Bar/modules/ActiveClient.qml` (0 hunks) * `windows/Bar/modules/Network.qml` (0 hunks) * `windows/Bar/modules/Notifications.qml` (0 hunks) * `windows/Bar/modules/OsIcon.qml` (0 hunks) * `windows/Bar/modules/PowerMenu.qml` (0 hunks) * `windows/Bar/modules/Spotify.qml` (0 hunks) * `windows/Bar/modules/Tray.qml` (0 hunks) * `windows/Bar/modules/Workspaces.qml` (0 hunks) * `windows/MediaControls/MediaControls.qml` (0 hunks) * `windows/OnScreenDisplay/OnScreenDisplayVolume.qml` (0 hunks) * `windows/PowerMenu/PowerMenu.qml` (0 hunks) * `windows/PowerMenu/components/Profile.qml` (0 hunks) </details> <details> <summary>💤 Files with no reviewable changes (22)</summary> * .lazy.lua * windows/Bar/modules/OsIcon.qml * windows/Bar/components/ModuleGroup.qml * widgets/StyledShadow.qml * widgets/StyledText.qml * windows/PowerMenu/components/Profile.qml * widgets/CustomIcon.qml * windows/Bar/modules/PowerMenu.qml * windows/Bar/modules/Workspaces.qml * windows/Bar/components/Separator.qml * windows/Bar/modules/ActiveClient.qml * windows/Bar/modules/Notifications.qml * settings/ConfigOptions.qml * windows/Bar/modules/Tray.qml * settings/Appearance.qml * windows/Bar/modules/Spotify.qml * windows/OnScreenDisplay/OnScreenDisplayVolume.qml * services/MediaController.qml * windows/Bar/Bar.qml * windows/Bar/modules/Network.qml * windows/MediaControls/MediaControls.qml * windows/PowerMenu/PowerMenu.qml </details> </details> <!-- internal state start --> <!-- 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= --> <!-- internal state end --> <!-- tips_start --> --- > [!NOTE] > <details> > <summary>🎁 Summarized by CodeRabbit Free</summary> > > Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting <https://app.coderabbit.ai/login>. > > </details> <details> <summary>🪧 Tips</summary> ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=Kruziikrel13/quickshell&utm_content=11): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit <commit_id>, please review it.` - `Explain this complex logic.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai explain this code block.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and explain its main purpose.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` ### Support Need help? Join our [Discord community](https://discord.gg/coderabbit) for assistance with any issues or questions. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements. </details> <!-- tips_end -->
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kruziikrel13/quickshell!11
No description provided.