diff --git a/README.vim.md b/README.vim.md
index ab6baeb..07aabbb 100644
--- a/README.vim.md
+++ b/README.vim.md
@@ -562,24 +562,42 @@ with a lazy extension in `lazy`.
     -- then set the below to false. This should work, but is NOT supported and will
     -- increase downloads a lot.
     filter = true,
+    -- rate of network related git operations (clone, fetch, checkout)
+    throttle = {
+      enabled = false, -- not enabled by default
+      -- max 2 ops every 5 seconds
+      rate = 2,
+      duration = 5 * 1000, -- in ms
+    },
+    -- Time in seconds to wait before running fetch again for a plugin.
+    -- Repeated update/check operations will not run again until this
+    -- cooldown period has passed.
+    cooldown = 0,
   },
   pkg = {
     enabled = true,
     cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua",
-    versions = true, -- Honor versions in pkg sources
     -- the first package source that is found for a plugin will be used.
     sources = {
       "lazy",
-      "rockspec",
+      "rockspec", -- will only be used when rocks.enabled is true
       "packspec",
     },
   },
   rocks = {
+    enabled = true,
     root = vim.fn.stdpath("data") .. "/lazy-rocks",
     server = "https://nvim-neorocks.github.io/rocks-binaries/",
+    -- use hererocks to install luarocks?
+    -- set to `nil` to use hererocks when luarocks is not found
+    -- set to `true` to always use hererocks
+    -- set to `false` to always use luarocks
+    hererocks = nil,
   },
   dev = {
-    ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects
+    -- Directory where you store your local plugin projects. If a function is used,
+    -- the plugin directory (e.g. `~/projects/plugin-name`) must be returned.
+    ---@type string | fun(plugin: LazyPlugin): string
     path = "~/projects",
     ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
     patterns = {}, -- For example {"folke"}
@@ -631,7 +649,7 @@ with a lazy extension in `lazy`.
     -- leave nil, to automatically select a browser depending on your OS.
     -- If you want to use a specific browser, you can define it here
     browser = nil, ---@type string?
-    throttle = 20, -- how frequently should the ui process render events
+    throttle = 1000 / 30, -- how frequently should the ui process render events
     custom_keys = {
       -- You can define custom key maps here. If present, the description will
       -- be shown in the help menu.
@@ -646,6 +664,16 @@ with a lazy extension in `lazy`.
         desc = "Open lazygit log",
       },
 
+      ["<localleader>i"] = {
+        function(plugin)
+          Util.notify(vim.inspect(plugin), {
+            title = "Inspect " .. plugin.name,
+            lang = "lua",
+          })
+        end,
+        desc = "Inspect Plugin",
+      },
+
       ["<localleader>t"] = {
         function(plugin)
           require("lazy.util").float_term(nil, {
@@ -656,6 +684,17 @@ with a lazy extension in `lazy`.
       },
     },
   },
+  -- Output options for headless mode
+  headless = {
+    -- show the output from process commands like git
+    process = true,
+    -- show log messages
+    log = true,
+    -- show task start/end
+    task = true,
+    -- use ansi colors
+    colors = true,
+  },
   diff = {
     -- diff command <d> can be one of:
     -- * browser: opens the github compare view. Note that this is always mapped to <K> as well,
@@ -707,7 +746,7 @@ with a lazy extension in `lazy`.
     enabled = true,
     root = vim.fn.stdpath("state") .. "/lazy/readme",
     files = { "README.md", "lua/**/README.md" },
-    -- only generate markdown helptags for plugins that dont have docs
+    -- only generate markdown helptags for plugins that don't have docs
     skip_if_doc_exists = true,
   },
   state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things
@@ -754,6 +793,7 @@ with a lazy extension in `lazy`.
 
 | Highlight Group | Default Group | Description |
 | --- | --- | --- |
+| **LazyBold** | ***{ bold = true }*** |  |
 | **LazyButton** | ***CursorLine*** |  |
 | **LazyButtonActive** | ***Visual*** |  |
 | **LazyComment** | ***Comment*** |  |
@@ -763,8 +803,11 @@ with a lazy extension in `lazy`.
 | **LazyCommitType** | ***Title*** | conventional commit type |
 | **LazyDimmed** | ***Conceal*** | property |
 | **LazyDir** | ***@markup.link*** | directory |
+| **LazyError** | ***DiagnosticError*** | task errors |
 | **LazyH1** | ***IncSearch*** | home button |
 | **LazyH2** | ***Bold*** | titles |
+| **LazyInfo** | ***DiagnosticInfo*** | task errors |
+| **LazyItalic** | ***{ italic = true }*** |  |
 | **LazyLocal** | ***Constant*** |  |
 | **LazyNoCond** | ***DiagnosticWarn*** | unloaded icon for a plugin where `cond()` was false |
 | **LazyNormal** | ***NormalFloat*** |  |
@@ -782,10 +825,10 @@ with a lazy extension in `lazy`.
 | **LazyReasonSource** | ***Character*** |  |
 | **LazyReasonStart** | ***@variable.member*** |  |
 | **LazySpecial** | ***@punctuation.special*** |  |
-| **LazyTaskError** | ***ErrorMsg*** | task errors |
 | **LazyTaskOutput** | ***MsgArea*** | task output |
 | **LazyUrl** | ***@markup.link*** | url |
 | **LazyValue** | ***@string*** | value of a property |
+| **LazyWarning** | ***DiagnosticWarn*** | task errors |
 
 # 🚀 Usage
 
diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt
index c2c9695..7722a40 100644
--- a/doc/lazy.nvim.txt
+++ b/doc/lazy.nvim.txt
@@ -646,24 +646,42 @@ will be added to the plugin’s spec.
         -- then set the below to false. This should work, but is NOT supported and will
         -- increase downloads a lot.
         filter = true,
+        -- rate of network related git operations (clone, fetch, checkout)
+        throttle = {
+          enabled = false, -- not enabled by default
+          -- max 2 ops every 5 seconds
+          rate = 2,
+          duration = 5 * 1000, -- in ms
+        },
+        -- Time in seconds to wait before running fetch again for a plugin.
+        -- Repeated update/check operations will not run again until this
+        -- cooldown period has passed.
+        cooldown = 0,
       },
       pkg = {
         enabled = true,
         cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua",
-        versions = true, -- Honor versions in pkg sources
         -- the first package source that is found for a plugin will be used.
         sources = {
           "lazy",
-          "rockspec",
+          "rockspec", -- will only be used when rocks.enabled is true
           "packspec",
         },
       },
       rocks = {
+        enabled = true,
         root = vim.fn.stdpath("data") .. "/lazy-rocks",
         server = "https://nvim-neorocks.github.io/rocks-binaries/",
+        -- use hererocks to install luarocks?
+        -- set to `nil` to use hererocks when luarocks is not found
+        -- set to `true` to always use hererocks
+        -- set to `false` to always use luarocks
+        hererocks = nil,
       },
       dev = {
-        ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects
+        -- Directory where you store your local plugin projects. If a function is used,
+        -- the plugin directory (e.g. `~/projects/plugin-name`) must be returned.
+        ---@type string | fun(plugin: LazyPlugin): string
         path = "~/projects",
         ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
         patterns = {}, -- For example {"folke"}
@@ -715,7 +733,7 @@ will be added to the plugin’s spec.
         -- leave nil, to automatically select a browser depending on your OS.
         -- If you want to use a specific browser, you can define it here
         browser = nil, ---@type string?
-        throttle = 20, -- how frequently should the ui process render events
+        throttle = 1000 / 30, -- how frequently should the ui process render events
         custom_keys = {
           -- You can define custom key maps here. If present, the description will
           -- be shown in the help menu.
@@ -730,6 +748,16 @@ will be added to the plugin’s spec.
             desc = "Open lazygit log",
           },
     
+          ["<localleader>i"] = {
+            function(plugin)
+              Util.notify(vim.inspect(plugin), {
+                title = "Inspect " .. plugin.name,
+                lang = "lua",
+              })
+            end,
+            desc = "Inspect Plugin",
+          },
+    
           ["<localleader>t"] = {
             function(plugin)
               require("lazy.util").float_term(nil, {
@@ -740,6 +768,17 @@ will be added to the plugin’s spec.
           },
         },
       },
+      -- Output options for headless mode
+      headless = {
+        -- show the output from process commands like git
+        process = true,
+        -- show log messages
+        log = true,
+        -- show task start/end
+        task = true,
+        -- use ansi colors
+        colors = true,
+      },
       diff = {
         -- diff command <d> can be one of:
         -- * browser: opens the github compare view. Note that this is always mapped to <K> as well,
@@ -791,7 +830,7 @@ will be added to the plugin’s spec.
         enabled = true,
         root = vim.fn.stdpath("state") .. "/lazy/readme",
         files = { "README.md", "lua/**/README.md" },
-        -- only generate markdown helptags for plugins that dont have docs
+        -- only generate markdown helptags for plugins that don't have docs
         skip_if_doc_exists = true,
       },
       state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things
@@ -837,6 +876,8 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s
   -----------------------------------------------------------------------
   Highlight Group         Default Group           Description
   ----------------------- ----------------------- -----------------------
+  LazyBold                { bold = true }         
+
   LazyButton              CursorLine              
 
   LazyButtonActive        Visual                  
@@ -857,10 +898,16 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s
 
   LazyDir                 @markup.link            directory
 
+  LazyError               DiagnosticError         task errors
+
   LazyH1                  IncSearch               home button
 
   LazyH2                  Bold                    titles
 
+  LazyInfo                DiagnosticInfo          task errors
+
+  LazyItalic              { italic = true }       
+
   LazyLocal               Constant                
 
   LazyNoCond              DiagnosticWarn          unloaded icon for a
@@ -897,13 +944,13 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s
 
   LazySpecial             @punctuation.special    
 
-  LazyTaskError           ErrorMsg                task errors
-
   LazyTaskOutput          MsgArea                 task output
 
   LazyUrl                 @markup.link            url
 
   LazyValue               @string                 value of a property
+
+  LazyWarning             DiagnosticWarn          task errors
   -----------------------------------------------------------------------
 
 ==============================================================================
diff --git a/docs/configuration/highlights.md b/docs/configuration/highlights.md
index 786684b..6e9eff6 100644
--- a/docs/configuration/highlights.md
+++ b/docs/configuration/highlights.md
@@ -4,6 +4,7 @@
 
 | Highlight Group | Default Group | Description |
 | --- | --- | --- |
+| **LazyBold** | ***{ bold = true }*** |  |
 | **LazyButton** | ***CursorLine*** |  |
 | **LazyButtonActive** | ***Visual*** |  |
 | **LazyComment** | ***Comment*** |  |
@@ -13,8 +14,11 @@
 | **LazyCommitType** | ***Title*** | conventional commit type |
 | **LazyDimmed** | ***Conceal*** | property |
 | **LazyDir** | ***@markup.link*** | directory |
+| **LazyError** | ***DiagnosticError*** | task errors |
 | **LazyH1** | ***IncSearch*** | home button |
 | **LazyH2** | ***Bold*** | titles |
+| **LazyInfo** | ***DiagnosticInfo*** | task errors |
+| **LazyItalic** | ***{ italic = true }*** |  |
 | **LazyLocal** | ***Constant*** |  |
 | **LazyNoCond** | ***DiagnosticWarn*** | unloaded icon for a plugin where `cond()` was false |
 | **LazyNormal** | ***NormalFloat*** |  |
@@ -32,9 +36,9 @@
 | **LazyReasonSource** | ***Character*** |  |
 | **LazyReasonStart** | ***@variable.member*** |  |
 | **LazySpecial** | ***@punctuation.special*** |  |
-| **LazyTaskError** | ***ErrorMsg*** | task errors |
 | **LazyTaskOutput** | ***MsgArea*** | task output |
 | **LazyUrl** | ***@markup.link*** | url |
 | **LazyValue** | ***@string*** | value of a property |
+| **LazyWarning** | ***DiagnosticWarn*** | task errors |
 
 <!-- colors:end -->
diff --git a/docs/configuration/index.md b/docs/configuration/index.md
index d80bb58..8c47b90 100644
--- a/docs/configuration/index.md
+++ b/docs/configuration/index.md
@@ -38,24 +38,42 @@ sidebar_position: 5
     -- then set the below to false. This should work, but is NOT supported and will
     -- increase downloads a lot.
     filter = true,
+    -- rate of network related git operations (clone, fetch, checkout)
+    throttle = {
+      enabled = false, -- not enabled by default
+      -- max 2 ops every 5 seconds
+      rate = 2,
+      duration = 5 * 1000, -- in ms
+    },
+    -- Time in seconds to wait before running fetch again for a plugin.
+    -- Repeated update/check operations will not run again until this
+    -- cooldown period has passed.
+    cooldown = 0,
   },
   pkg = {
     enabled = true,
     cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua",
-    versions = true, -- Honor versions in pkg sources
     -- the first package source that is found for a plugin will be used.
     sources = {
       "lazy",
-      "rockspec",
+      "rockspec", -- will only be used when rocks.enabled is true
       "packspec",
     },
   },
   rocks = {
+    enabled = true,
     root = vim.fn.stdpath("data") .. "/lazy-rocks",
     server = "https://nvim-neorocks.github.io/rocks-binaries/",
+    -- use hererocks to install luarocks?
+    -- set to `nil` to use hererocks when luarocks is not found
+    -- set to `true` to always use hererocks
+    -- set to `false` to always use luarocks
+    hererocks = nil,
   },
   dev = {
-    ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects
+    -- Directory where you store your local plugin projects. If a function is used,
+    -- the plugin directory (e.g. `~/projects/plugin-name`) must be returned.
+    ---@type string | fun(plugin: LazyPlugin): string
     path = "~/projects",
     ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
     patterns = {}, -- For example {"folke"}
@@ -107,7 +125,7 @@ sidebar_position: 5
     -- leave nil, to automatically select a browser depending on your OS.
     -- If you want to use a specific browser, you can define it here
     browser = nil, ---@type string?
-    throttle = 20, -- how frequently should the ui process render events
+    throttle = 1000 / 30, -- how frequently should the ui process render events
     custom_keys = {
       -- You can define custom key maps here. If present, the description will
       -- be shown in the help menu.
@@ -122,6 +140,16 @@ sidebar_position: 5
         desc = "Open lazygit log",
       },
 
+      ["<localleader>i"] = {
+        function(plugin)
+          Util.notify(vim.inspect(plugin), {
+            title = "Inspect " .. plugin.name,
+            lang = "lua",
+          })
+        end,
+        desc = "Inspect Plugin",
+      },
+
       ["<localleader>t"] = {
         function(plugin)
           require("lazy.util").float_term(nil, {
@@ -132,6 +160,17 @@ sidebar_position: 5
       },
     },
   },
+  -- Output options for headless mode
+  headless = {
+    -- show the output from process commands like git
+    process = true,
+    -- show log messages
+    log = true,
+    -- show task start/end
+    task = true,
+    -- use ansi colors
+    colors = true,
+  },
   diff = {
     -- diff command <d> can be one of:
     -- * browser: opens the github compare view. Note that this is always mapped to <K> as well,
@@ -183,7 +222,7 @@ sidebar_position: 5
     enabled = true,
     root = vim.fn.stdpath("state") .. "/lazy/readme",
     files = { "README.md", "lua/**/README.md" },
-    -- only generate markdown helptags for plugins that dont have docs
+    -- only generate markdown helptags for plugins that don't have docs
     skip_if_doc_exists = true,
   },
   state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things