From 38606b86c6e57b3317f7ed6912b9e515f815dece Mon Sep 17 00:00:00 2001 From: David Ibia Date: Sat, 2 May 2026 13:36:16 +0100 Subject: [PATCH] =?UTF-8?q?feat(nvim):=20phase=201=20=E2=80=94=20triage=20?= =?UTF-8?q?and=20abandoned-plugin=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix keymap collision on j/k (now resize-only; location-list moved to ]l/[l). Migrate diagnostic signs from deprecated vim.fn.sign_define to vim.diagnostic.config. Drop orphan after/nvim-tree.lua and the bogus require("../current-theme"). Add foundation snacks.nvim spec. Remove playground, vim-maximizer, poet-v, git-blame, render-markdown, and all five AI plugin specs. Enable gitsigns current_line_blame. --- README.md | 38 -- lazy-lock.json | 95 ++-- lua/absolute/after/codecompanion.lua | 40 -- lua/absolute/after/gen.lua | 36 -- lua/absolute/after/gitsigns.lua | 9 +- lua/absolute/after/llm.lua | 105 ---- lua/absolute/after/lsp-config.lua | 138 +++-- lua/absolute/after/nvim-tree.lua | 49 -- lua/absolute/after/poet-v.lua | 20 - lua/absolute/core/colorscheme.lua | 36 +- lua/absolute/core/init.lua | 29 ++ lua/absolute/core/theme-registry.lua | 491 ++++++++++++++++++ lua/absolute/lazy.lua | 5 +- lua/absolute/plugins/codecompanion.lua | 11 - lua/absolute/plugins/copilot.lua | 3 - lua/absolute/plugins/flash.lua | 15 + lua/absolute/plugins/gen.lua | 7 - lua/absolute/plugins/git-blame.lua | 4 - lua/absolute/plugins/llm.lua | 7 - .../plugins/nvim-treesitter-playground.lua | 3 - lua/absolute/plugins/poet-v.lua | 7 - lua/absolute/plugins/render-markdown.lua | 4 - lua/absolute/plugins/snacks.lua | 12 + lua/absolute/plugins/venv-selector.lua | 3 +- lua/absolute/plugins/vim-maximizer.lua | 3 - lua/absolute/remap.lua | 10 +- lua/current-theme.lua | 2 +- 27 files changed, 686 insertions(+), 496 deletions(-) delete mode 100644 README.md delete mode 100644 lua/absolute/after/codecompanion.lua delete mode 100644 lua/absolute/after/gen.lua delete mode 100644 lua/absolute/after/llm.lua delete mode 100644 lua/absolute/after/nvim-tree.lua delete mode 100644 lua/absolute/after/poet-v.lua create mode 100644 lua/absolute/core/theme-registry.lua delete mode 100644 lua/absolute/plugins/codecompanion.lua delete mode 100644 lua/absolute/plugins/copilot.lua create mode 100644 lua/absolute/plugins/flash.lua delete mode 100644 lua/absolute/plugins/gen.lua delete mode 100644 lua/absolute/plugins/git-blame.lua delete mode 100644 lua/absolute/plugins/llm.lua delete mode 100644 lua/absolute/plugins/nvim-treesitter-playground.lua delete mode 100644 lua/absolute/plugins/poet-v.lua delete mode 100644 lua/absolute/plugins/render-markdown.lua create mode 100644 lua/absolute/plugins/snacks.lua delete mode 100644 lua/absolute/plugins/vim-maximizer.lua diff --git a/README.md b/README.md deleted file mode 100644 index 5df2ece..0000000 --- a/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Absolute VIM Configuration - -## Introduction - -VIM Configurations for the modern developer. This configuration is designed to be efficient for my personal workflow. It is designed to be minimalistic and easy to use. - - -## Installation - -```bash - -git clone https://github.com/boxpositron/absolute-vim ~/.config/nvim --depth 1 && nvim - -``` - -## Dependencies - -### Binaries - -> Improved Git Experience - -- [lazygit](https://github.com/jesseduffield/lazygit) - -> Beautiful Code Screenshots - -- [silicon](https://github.com/Aloxaf/silicon) - -> Fuzzy Finder - -- [fzf](https://github.com/junegunn/fzf) - -### Fonts - -- [Noto Emoji](https://fonts.google.com/noto/specimen/Noto+Emoji) -- [JetBrains Mono](https://fonts.google.com/specimen/JetBrains+Mono) - - -Work in progress... diff --git a/lazy-lock.json b/lazy-lock.json index 9988de0..63eefee 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,78 +1,69 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "LuaSnip": { "branch": "master", "commit": "831a130291eb6dae0dabd2748d0a99401a2eebc4" }, - "catppuccin": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" }, + "LuaSnip": { "branch": "master", "commit": "a62e1083a3cfe8b6b206e7d3d33a51091df25357" }, + "catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" }, "cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, - "cmp-path": { "branch": "main", "commit": "e52e640b7befd8113b3350f46e8cfcfe98fcf730" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "codecompanion.nvim": { "branch": "main", "commit": "99448f47c3e23a06009ac176ba4c785e162d9c10" }, - "conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" }, - "copilot.vim": { "branch": "release", "commit": "12995dffe10282b29b8335650bf3e7457f4870e7" }, + "conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, + "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, "flutter-tools.nvim": { "branch": "main", "commit": "70430c32d176f4a15c6e2c80586cd2791e3a664e" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "fzf": { "branch": "master", "commit": "ead302981cc9d9219e58c1517921e9f2d68a6b6e" }, - "gen.nvim": { "branch": "main", "commit": "e09a8dbffa139ad60d5b47998fcc8669ead1ebf4" }, - "git-blame.nvim": { "branch": "master", "commit": "8503b199edf9a666fe7b1a989cf14e3c26b2eb03" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "fzf": { "branch": "master", "commit": "b4a86a9c8a688159131a27b6ec9dbce72ec11573" }, "gitignore.nvim": { "branch": "master", "commit": "0344f643768c4d64af4add8c1bdddf6f7d4c9010" }, - "gitsigns.nvim": { "branch": "main", "commit": "0cb5a7753d3c4b8e9cfdc9d88d9110cb8d4b1544" }, - "image.nvim": { "branch": "master", "commit": "4c51d6202628b3b51e368152c053c3fb5c5f76f2" }, - "incline.nvim": { "branch": "main", "commit": "0fd2d5a27504dba7fdc507a53275f22c081fe640" }, - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "llm.nvim": { "branch": "main", "commit": "9832a149bdcf0709433ca9c2c3a1c87460e98d13" }, - "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, - "lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" }, - "markview.nvim": { "branch": "main", "commit": "ec33f2aa333ca1d76f51847922578434d7aeadf7" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "bb3a17efc797c34c054463174e5522442576ebd8" }, - "mason-registry": { "branch": "main", "commit": "467ac84d138997773be67e2e5bd4020cb96a3697" }, - "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, - "mcphub.nvim": { "branch": "main", "commit": "0d53a53f327b61c45691d6a60a16c20baf4590ea" }, - "mini.diff": { "branch": "main", "commit": "63a7ce537ced356b8180892d9586826b0afb519c" }, + "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, + "image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" }, + "incline.nvim": { "branch": "main", "commit": "8b54c59bcb23366645ae10edca6edfb9d3a0853e" }, + "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lspkind.nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" }, + "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" }, + "markview.nvim": { "branch": "main", "commit": "8b82823bbe7b452c5920ab22947e186c6cb067b4" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" }, + "mason-registry": { "branch": "main", "commit": "7319e578b6b83281ef9783705471c573615b51d2" }, + "mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" }, + "mini.diff": { "branch": "main", "commit": "0ee0459152b141c0e1b0931eb6949105be4850a9" }, "mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" }, - "nightfly": { "branch": "master", "commit": "8c55003e89f321a48a8cd4bb426dd3e7c58f0646" }, - "nvim-bqf": { "branch": "main", "commit": "dd17c73912487dccb372deff85d4262d2b89bc2b" }, - "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, - "nvim-dap": { "branch": "master", "commit": "5dd4d50f2e6a2eaf9e57fad023d294ef371bda35" }, - "nvim-dap-python": { "branch": "master", "commit": "261ce649d05bc455a29f9636dc03f8cdaa7e0e2c" }, - "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, + "nightfly": { "branch": "master", "commit": "4980ccc6de5f361fc9da116240ce7592e7d9a53a" }, + "nvim-bqf": { "branch": "main", "commit": "c282a62bec6c0621a1ef5132aa3f4c9fc4dcc2c7" }, + "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, + "nvim-dap": { "branch": "master", "commit": "45a69eba683a2c448dd9ecfc4de89511f0646b5f" }, + "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-highlight-colors": { "branch": "main", "commit": "b42a5ccec7457b44e89f7ed3b3afb1b375bb2093" }, - "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, - "nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" }, + "nvim-highlight-colors": { "branch": "main", "commit": "e2cb22089cc2358b2b995c09578224f142de6039" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "b9c795d3973e8eec22706af14959bc60c579e771" }, + "nvim-lspconfig": { "branch": "master", "commit": "31026a13eefb20681124706a79fc1df6bf11ab27" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-notify": { "branch": "master", "commit": "a22f5d7ac511c2df2fd3290a9f04c48d5a822e2e" }, + "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, "nvim-silicon": { "branch": "main", "commit": "7f66bda8f60c97a5bf4b37e5b8acb0e829ae3c32" }, "nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" }, "nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-context": { "branch": "master", "commit": "59f318a65d42a5c4037796886a8874fd57f774fc" }, - "nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" }, - "nvim_lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, + "nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" }, + "nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" }, + "nvim-web-devicons": { "branch": "master", "commit": "4fc505ac7bd7692824a142e96e5f529c133862f8" }, + "nvim_lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, "pkl-neovim": { "branch": "main", "commit": "da9d189b4fad7e67e6b2a5456a3cbc4c9d32a17f" }, - "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "poet-v": { "branch": "master", "commit": "85a5dd44d89602cc3dccd2489924e9c7caab0044" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, - "render-markdown.nvim": { "branch": "main", "commit": "7620d4e96eb5cf8d12e76c6fcaf1267628564ba9" }, - "rose-pine": { "branch": "main", "commit": "72befaffeac38db7bdd49e0549eaa2c4806dd878" }, + "rose-pine": { "branch": "main", "commit": "6a961effd67f6130d36df6d1c05c48c739796dd2" }, "smear-cursor.nvim": { "branch": "main", "commit": "4a0f7ac265b4ed1ce4d0af2afc13072763bfa691" }, + "snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" }, "tailwind-sorter.nvim": { "branch": "main", "commit": "717e5c9761ed8334dadbb9357df7d826aae97b92" }, "telescope-dap.nvim": { "branch": "master", "commit": "783366bd6c1e7fa0a5c59c07db37f49c805a28df" }, - "telescope-file-browser.nvim": { "branch": "master", "commit": "7bf55ed0ff5be182ad3301cff266581fc1c56cce" }, + "telescope-file-browser.nvim": { "branch": "master", "commit": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e" }, "telescope-live-grep-args.nvim": { "branch": "master", "commit": "8ad632f793fd437865f99af5684f78300dac93fb" }, "telescope-media-files.nvim": { "branch": "master", "commit": "0826c7a730bc4d36068f7c85cf4c5b3fd9fb570a" }, "telescope-themes": { "branch": "main", "commit": "65721365bd7a04a6c9679e76b6387b60320fd5f3" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, - "tokyonight": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, - "tree-sitter-ghostty": { "branch": "main", "commit": "1d5238fc0da5fd5a59130b95c3e1c4948a3f96c1" }, - "treesj": { "branch": "main", "commit": "3b4a2bc42738a63de17e7485d4cc5e49970ddbcc" }, - "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, - "undotree": { "branch": "master", "commit": "28f2f54a34baff90ea6f4a735ef1813ad875c743" }, - "venv-selector.nvim": { "branch": "regexp", "commit": "c677caa1030808a9f90092e522de7cc20c1390dd" }, - "vim-maximizer": { "branch": "master", "commit": "2e54952fe91e140a2e69f35f22131219fcd9c5f1" } + "tokyonight": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, + "tree-sitter-ghostty": { "branch": "main", "commit": "8b1530ca50e7a9caefc0e771a790d0a5595b9d40" }, + "treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" }, + "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, + "undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" }, + "venv-selector.nvim": { "branch": "main", "commit": "bcb2f58533c59b01565285eba49693f00bc460f5" } } diff --git a/lua/absolute/after/codecompanion.lua b/lua/absolute/after/codecompanion.lua deleted file mode 100644 index 05a7786..0000000 --- a/lua/absolute/after/codecompanion.lua +++ /dev/null @@ -1,40 +0,0 @@ -local codecompanion = require("codecompanion") - -codecompanion.setup({ - strategies = { - chat = { - adapter = "openai", - }, - }, - extensions = { - mcphub = { - callback = "mcphub.extensions.codecompanion", - opts = { - make_vars = true, - make_slash_commands = true, - show_result_in_chat = true, - }, - }, - }, -}) - -local opts = { - noremap = true, - silent = true, -} - -vim.keymap.set("n", "ac", function() - vim.cmd("CodeCompanionChat") -end, opts) - -vim.keymap.set({ "n", "v" }, "ai", function() - local input = vim.fn.input("[Code Companion Inline]: ") - local trimmed_input = vim.fn.trim(input) - - if trimmed_input == "" then - vim.notify("No input provided for inline code companion", vim.log.levels.WARN) - return - end - - vim.cmd("CodeCompanion" .. " " .. vim.fn.shellescape(trimmed_input)) -end, opts) diff --git a/lua/absolute/after/gen.lua b/lua/absolute/after/gen.lua deleted file mode 100644 index 598c0ed..0000000 --- a/lua/absolute/after/gen.lua +++ /dev/null @@ -1,36 +0,0 @@ -local gen = require("gen") - -gen.setup({ - -- Custom Parameters (with defaults) - model = "deepseek-r1:7b", -- The default model to use. - quit_map = "q", -- set keymap to close the response window - retry_map = "", -- set keymap to re-send the current prompt - accept_map = "", -- set keymap to replace the previous selection with the last result - host = "localhost", -- The host running the Ollama service. - port = "11434", -- The port on which the Ollama service is listening. - display_mode = "split", -- The display mode. Can be "float" or "split" or "horizontal-split". - show_prompt = false, -- Shows the prompt submitted to Ollama. Can be true (3 lines) or "full". - show_model = false, -- Displays which model you are using at the beginning of your chat session. - no_auto_close = false, -- Never closes the window automatically. - file = false, -- Write the payload to a temporary file to keep the command short. - hidden = false, -- Hide the generation window (if true, will implicitly set `prompt.replace = true`), requires Neovim >= 0.10 - init = function(options) - pcall(io.popen, "ollama serve > /dev/null 2>&1 &") - end, - -- Function to initialize Ollama - command = function(options) - local body = { model = options.model, stream = true } - return "curl --silent --no-buffer -X POST http://" - .. options.host - .. ":" - .. options.port - .. "/api/chat -d $body" - end, - -- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped). - -- This can also be a command string. - -- The executed command must return a JSON object with { response, context } - -- (context property is optional). - -- list_models = '', -- Retrieves a list of model names - result_filetype = "markdown", -- Configure filetype of the result buffer - debug = false, -- Prints errors and the command which is run. -}) diff --git a/lua/absolute/after/gitsigns.lua b/lua/absolute/after/gitsigns.lua index a238e52..2be6b8f 100644 --- a/lua/absolute/after/gitsigns.lua +++ b/lua/absolute/after/gitsigns.lua @@ -1,3 +1,10 @@ local gitsigns = require("gitsigns") -gitsigns.setup() +gitsigns.setup({ + current_line_blame = true, + current_line_blame_opts = { + virt_text_pos = "eol", + delay = 500, + ignore_whitespace = false, + }, +}) diff --git a/lua/absolute/after/llm.lua b/lua/absolute/after/llm.lua deleted file mode 100644 index a4bd891..0000000 --- a/lua/absolute/after/llm.lua +++ /dev/null @@ -1,105 +0,0 @@ -local llm = require("llm") -local llmCompletion = require("llm.completion") - -llm.setup({ - api_token = nil, -- cf Install paragraph - model = "codellama:13b", -- the model ID, behavior depends on backend - backend = "ollama", -- backend ID, "huggingface" | "ollama" | "openai" | "tgi" - url = "http://localhost:11434", -- the http url of the backend - -- tokens_to_clear = { "<|endoftext|>" }, -- tokens to remove from the model's output - tokens_to_clear = { "" }, - -- parameters that are added to the request body, values are arbitrary, you can set any field:value pair here it will be passed as is to the backend - request_body = { - parameters = { - -- max_new_tokens = 60, - temperature = 0.2, - top_p = 0.95, - }, - }, - -- set this if the model supports fill in the middle - -- fim = { - -- enabled = false, - -- prefix = "", - -- middle = "", - -- suffix = "", - -- }, - fim = { - enabled = true, - prefix = "
 ",
-		middle = " ",
-		suffix = " ",
-	},
-
-	debounce_ms = 150,
-	accept_keymap = nil,
-	dismiss_keymap = nil,
-	tls_skip_verify_insecure = false,
-	-- llm-ls configuration, cf llm-ls section
-
-	lsp = {
-		bin_path = vim.api.nvim_call_function("stdpath", { "data" }) .. "/mason/bin/llm-ls",
-		cmd_env = { LLM_LOG_LEVEL = "DEBUG" },
-	},
-	-- tokenizer = nil, -- cf Tokenizer paragraph
-	tokenizer = {
-		repository = "codellama/CodeLlama-13b-hf",
-	},
-	context_window = 4096,
-	enable_suggestions_on_startup = false,
-	enable_suggestions_on_files = { "*.py", "*.js", "*.ts", "*.astro", "*.vue", "*.lua" },
-	disable_url_path_completion = false, -- cf Backend
-})
-
-vim.keymap.set("i", "", function()
-	if llmCompletion.shown_suggestion ~= nil then
-		llmCompletion.complete()
-	else
-		local keys = vim.api.nvim_replace_termcodes("", true, false, true)
-		vim.api.nvim_feedkeys(keys, "n", false)
-	end
-end, { noremap = true, silent = true })
-
-vim.keymap.set("n", "", function()
-	if llmCompletion.shown_suggestion ~= nil then
-		llmCompletion.complete()
-	else
-		local keys = vim.api.nvim_replace_termcodes("", true, false, true)
-		vim.api.nvim_feedkeys(keys, "n", false)
-	end
-end, { noremap = true, silent = true })
-
--- Debounce helper
-local debounce = function(func, timeout)
-	if type(func) ~= "function" then
-		error("Expected a function")
-	end
-	if type(timeout) ~= "number" or timeout <= 0 then
-		error("Expected a positive number for timeout")
-	end
-	local timer = vim.uv.new_timer()
-	return function(...)
-		local args = { ... }
-		timer:stop() -- Reset the timer
-		timer:start(
-			timeout,
-			0,
-			vim.schedule_wrap(function()
-				func(unpack(args))
-			end)
-		)
-	end
-end
--- Define the function to be executed
-local function on_text_change()
-	llmCompletion.lsp_suggest()
-end
-
--- Debounce the function
-local debounced_on_text_change = debounce(on_text_change, 3000)
-
--- Set up the autocommand
-vim.api.nvim_create_autocmd({ "InsertCharPre" }, {
-	pattern = "*",
-	callback = debounced_on_text_change,
-	desc = "Run method after typing stops with debounce",
-})
diff --git a/lua/absolute/after/lsp-config.lua b/lua/absolute/after/lsp-config.lua
index 0fe7d63..ad32b0a 100644
--- a/lua/absolute/after/lsp-config.lua
+++ b/lua/absolute/after/lsp-config.lua
@@ -1,6 +1,5 @@
 -- Setup language servers.
 local conform = require("conform")
-local lspconfig = require("lspconfig")
 local cmp_nvim_lsp = require("cmp_nvim_lsp")
 
 local opts = { noremap = true, silent = true }
@@ -70,27 +69,25 @@ end
 
 local capabilities = cmp_nvim_lsp.default_capabilities()
 
--- Change the Diagnostic symbols in the sign column (gutter)
-local signs = {
-	Error = " ",
-	Warn = " ",
-	Hint = "󰠠 ",
-	Info = " ",
-}
+-- Configure diagnostic signs (Neovim 0.10+ API; required in 0.12)
+vim.diagnostic.config({
+	signs = {
+		text = {
+			[vim.diagnostic.severity.ERROR] = " ",
+			[vim.diagnostic.severity.WARN]  = " ",
+			[vim.diagnostic.severity.HINT]  = "󰠠 ",
+			[vim.diagnostic.severity.INFO]  = " ",
+		},
+	},
+})
 
-for type, icon in pairs(signs) do
-	local hl = "DiagnosticSign" .. type
-	vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
-end
-
--- configure html server
-lspconfig["html"].setup({
+-- Configure LSP servers using vim.lsp.config
+vim.lsp.config("html", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure typescript server with plugin
-lspconfig["ts_ls"].setup({
+vim.lsp.config("ts_ls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	init_options = {
@@ -105,21 +102,18 @@ lspconfig["ts_ls"].setup({
 	filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
 })
 
--- configure css server
-lspconfig["cssls"].setup({
+vim.lsp.config("cssls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure tailwindcss server
-lspconfig["tailwindcss"].setup({
+vim.lsp.config("tailwindcss", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = { "html", "svelte", "vue", "astro" },
 })
 
--- configure svelte server
-lspconfig["svelte"].setup({
+vim.lsp.config("svelte", {
 	capabilities = capabilities,
 	on_attach = function(client, bufnr)
 		on_attach(client, bufnr)
@@ -135,8 +129,7 @@ lspconfig["svelte"].setup({
 	end,
 })
 
--- configure emmet language server
-lspconfig["emmet_ls"].setup({
+vim.lsp.config("emmet_ls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = {
@@ -153,14 +146,12 @@ lspconfig["emmet_ls"].setup({
 	},
 })
 
--- configure ruff server
-lspconfig["ruff"].setup({
+vim.lsp.config("ruff", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure pyright server
-lspconfig["pyright"].setup({
+vim.lsp.config("pyright", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = { "python" },
@@ -175,20 +166,17 @@ lspconfig["pyright"].setup({
 	},
 })
 
--- configure docker server
-lspconfig["dockerls"].setup({
+vim.lsp.config("dockerls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure json server
-lspconfig["jsonls"].setup({
+vim.lsp.config("jsonls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure vue server
-lspconfig["volar"].setup({
+vim.lsp.config("vue_ls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = { "vue" },
@@ -221,9 +209,7 @@ lspconfig["volar"].setup({
 	},
 })
 
--- configure rust server
-lspconfig.rust_analyzer.setup({
-	-- Server-specific settings. See `:help lspconfig-setup`
+vim.lsp.config("rust_analyzer", {
 	on_attach = on_attach,
 	capabilities = capabilities,
 	settings = {
@@ -231,18 +217,15 @@ lspconfig.rust_analyzer.setup({
 	},
 })
 
--- configure lua server (with special settings)
-lspconfig["lua_ls"].setup({
+vim.lsp.config("lua_ls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
-	settings = { -- custom settings for lua
+	settings = {
 		Lua = {
-			-- make the language server recognize "vim" global
 			diagnostics = {
 				globals = { "vim" },
 			},
 			workspace = {
-				-- make language server aware of runtime files
 				library = {
 					[vim.fn.expand("$VIMRUNTIME/lua")] = true,
 					[vim.fn.stdpath("config") .. "/lua"] = true,
@@ -252,73 +235,45 @@ lspconfig["lua_ls"].setup({
 	},
 })
 
--- configure css server
-lspconfig["cssls"].setup({
+vim.lsp.config("docker_compose_language_service", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
---configure docker file server
-lspconfig["dockerls"].setup({
+vim.lsp.config("eslint", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure docker compose server
-lspconfig["docker_compose_language_service"].setup({
+vim.lsp.config("astro", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure eslint server
-lspconfig["eslint"].setup({
+vim.lsp.config("kotlin_language_server", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure astro server
-lspconfig["astro"].setup({
-	capabilities = capabilities,
-	on_attach = on_attach,
-	-- init_options = {
-	-- 	typescript = {
-	-- 		tsdk = ResolveTypescriptServer(),
-	-- 	},
-	-- },
-})
-
--- configure kotlin server
-lspconfig["kotlin_language_server"].setup({
-	capabilities = capabilities,
-	on_attach = on_attach,
-})
-
--- configure clang server
-
-lspconfig["clangd"].setup({
+vim.lsp.config("clangd", {
 	cmd = { "clangd", "--compile-commands-dir=./", "--background-index=false" },
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = { "c", "cpp", "objc", "objcpp" },
 })
 
--- configure bufls server
-
-lspconfig["buf_ls"].setup({
+vim.lsp.config("buf_ls", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = { "proto" },
 })
 
--- configure arduino language server
-
-lspconfig["arduino_language_server"].setup({
+vim.lsp.config("arduino_language_server", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 })
 
--- configure biome server
-lspconfig["biome"].setup({
+vim.lsp.config("biome", {
 	capabilities = capabilities,
 	on_attach = on_attach,
 	filetypes = {
@@ -334,3 +289,28 @@ lspconfig["biome"].setup({
 		"vue",
 	},
 })
+
+-- Enable all configured LSP servers
+vim.lsp.enable({
+	"html",
+	"ts_ls",
+	"cssls",
+	"tailwindcss",
+	"svelte",
+	"emmet_ls",
+	"ruff",
+	"pyright",
+	"dockerls",
+	"jsonls",
+	"vue_ls",
+	"rust_analyzer",
+	"lua_ls",
+	"docker_compose_language_service",
+	"eslint",
+	"astro",
+	"kotlin_language_server",
+	"clangd",
+	"buf_ls",
+	"arduino_language_server",
+	"biome",
+})
diff --git a/lua/absolute/after/nvim-tree.lua b/lua/absolute/after/nvim-tree.lua
deleted file mode 100644
index 8bf51ed..0000000
--- a/lua/absolute/after/nvim-tree.lua
+++ /dev/null
@@ -1,49 +0,0 @@
-local nvimtree = require("absolute.disabled.nvim-tree")
-
-vim.g.loaded_netrw = 1
-vim.g.loaded_netrwPlugin = 1
-
-vim.cmd([[ highlight NvimTreeIndentMarker guifg=#3FC5FF ]])
-
-vim.cmd([[ highlight NvimTreeFolderArrowClosed guifg=#3FC5FF ]])
-vim.cmd([[ highlight NvimTreeFolderArrowOpen guifg=#3FC5FF ]])
-
-nvimtree.setup({
-	view = {
-		width = 45,
-		relativenumber = true,
-	},
-	update_focused_file = {
-		enable = true,
-	},
-	renderer = {
-		indent_markers = {
-			enable = true,
-		},
-		icons = {
-			glyphs = {
-
-				folder = {
-					arrow_closed = "", -- arrow when folder is closed
-					arrow_open = "", -- arrow when folder is open
-				},
-			},
-		},
-	},
-	-- disable window_picker for
-	-- explorer to work well with
-	-- window splits
-	actions = {
-		open_file = {
-			window_picker = {
-				enable = false,
-			},
-		},
-	},
-	filters = {
-		custom = { ".DS_Store" },
-	},
-	git = {
-		ignore = false,
-	},
-})
diff --git a/lua/absolute/after/poet-v.lua b/lua/absolute/after/poet-v.lua
deleted file mode 100644
index e8c0187..0000000
--- a/lua/absolute/after/poet-v.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-vim.g.poetv_executables = { "poetry" }
-vim.g.poetv_auto_activate = 0
-vim.g.poetv_set_environment = 1
-vim.g.poetv_statusline_symbol = "🐍"
-
--- Setup Autocommands
-
-vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
-    pattern = { "*/.venv/*", "*.py" },
-    callback = function()
-        -- check if poetv is activated
-
-        if vim.g.poetv_name ~= nil then
-            return
-        else
-            vim.cmd([[ PoetvActivate ]])
-            vim.cmd([[ LspRestart ]])
-        end
-    end,
-})
diff --git a/lua/absolute/core/colorscheme.lua b/lua/absolute/core/colorscheme.lua
index b11a9a1..6eeeef3 100644
--- a/lua/absolute/core/colorscheme.lua
+++ b/lua/absolute/core/colorscheme.lua
@@ -1,3 +1,5 @@
+local ThemeRegistry = require("absolute.core.theme-registry")
+
 local function SetupWindowPreferences()
 	-- Utility function to get the blend value or set a default
 	local function get_blend_value(group_name, default_blend)
@@ -20,24 +22,15 @@ local function SetupWindowPreferences()
 end
 
 local function SyncWezTerm()
-	local colorschemes = {
-		["tokyonight-day"] = "Tokyo Night Day",
-		["tokyonight-night"] = "Tokyo Night Night",
-		["tokyonight-storm"] = "Tokyo Night Storm",
-		["tokynight-moon"] = "Tokyo Night Moon",
-		["catppuccin-frappe"] = "Catppuccin Frappe",
-		["catppuccin-latte"] = "Catppuccin Latte",
-		["catppuccin-macchiato"] = "Catppuccin Macchiato",
-		["catppuccin-mocha"] = "Catppuccin Mocha",
-	}
-
 	vim.api.nvim_create_autocmd("ColorScheme", {
 		group = vim.api.nvim_create_augroup("wezterm_colorscheme", { clear = true }),
 		callback = function(args)
 			SetupWindowPreferences()
 
-			local colorscheme = colorschemes[args.match]
-			if not colorscheme then
+			-- Get terminal theme from registry
+			local wezterm_theme = ThemeRegistry.get_theme(args.match, "wezterm")
+			if not wezterm_theme then
+				-- Theme not in registry, skip silently
 				return
 			end
 
@@ -54,9 +47,9 @@ local function SyncWezTerm()
 
 			assert(file)
 
-			file:write(colorscheme)
+			file:write(wezterm_theme)
 			file:close()
-			-- vim.notify("Setting WezTerm color scheme to " .. colorscheme, vim.log.levels.INFO)
+			-- vim.notify("Setting WezTerm color scheme to " .. wezterm_theme, vim.log.levels.INFO)
 		end,
 	})
 end
@@ -75,6 +68,13 @@ local function SyncGhostyTerm()
 
 			local notifyOpts = { title = "Set Ghostty Theme" }
 
+			-- Get terminal theme from registry
+			local ghostty_colorscheme = ThemeRegistry.get_theme(args.match, "ghostty")
+			if not ghostty_colorscheme then
+				-- Theme not in registry, skip silently
+				return
+			end
+
 			-- if the file does not exists, exit early
 
 			local filename = vim.fn.expand("$XDG_CONFIG_HOME/ghostty/colorscheme")
@@ -86,14 +86,14 @@ local function SyncGhostyTerm()
 			-- lets check if ghostty supports the theme
 			-- ghostty +list-themes | xargs -I {} echo {} | grep 
 
-			local cmd = "ghostty +list-themes | sed 's/ (resources)//g' | grep '^" .. args.match .. "$'"
+			local cmd = "ghostty +list-themes | sed 's/ (resources)//g' | grep '^" .. ghostty_colorscheme .. "$'"
 
 			local status = vim.fn.system(cmd)
 			local trimmed_output = vim.fn.substitute(status, "^s+|s+$", "", "g")
 			-- check if status is empty
 
 			if trimmed_output == "" then
-				vim.notify(args.match .. " is not supported by Ghostty", vim.log.levels.ERROR, notifyOpts)
+				vim.notify(ghostty_colorscheme .. " is not supported by Ghostty", vim.log.levels.ERROR, notifyOpts)
 				return
 			end
 
@@ -103,7 +103,7 @@ local function SyncGhostyTerm()
 
 			assert(file)
 
-			local theme_string = 'theme = "' .. args.match .. '"'
+			local theme_string = 'theme = "' .. ghostty_colorscheme .. '"'
 
 			file:write(theme_string)
 			file:close()
diff --git a/lua/absolute/core/init.lua b/lua/absolute/core/init.lua
index 4daa304..5d04e39 100644
--- a/lua/absolute/core/init.lua
+++ b/lua/absolute/core/init.lua
@@ -6,6 +6,13 @@ local current_home = os.getenv("HOME")
 
 vim.g.python3_host_prog = current_home .. "/.pyenv/versions/py3nvim/bin/python"
 
+vim.opt.title = true
+
+vim.opt.titlestring = "%{fnamemodify(getcwd(), ':t')}"
+
+-- auto reload
+vim.o.autoread = true
+
 -- disable nvim intro
 vim.opt.shortmess:append("sI")
 
@@ -74,4 +81,26 @@ vim.api.nvim_create_autocmd("InsertLeave", {
 	end,
 })
 
+vim.api.nvim_create_user_command("GitRootRun", function(opts)
+	local cmd = opts.args
+	local git_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
+	if git_root and git_root ~= "" then
+		vim.cmd("!cd " .. git_root .. " && " .. cmd)
+	else
+		print("Not in a Git repository.")
+	end
+end, { nargs = "+" })
+
+local opts = { noremap = true, silent = true }
+opts.desc = "Run command in Git root"
+
+vim.keymap.set("n", "gr", function()
+	local command = vim.fn.input("$: ")
+	if command ~= "" then
+		vim.cmd("GitRootRun " .. command)
+	else
+		print("No command entered.")
+	end
+end, opts)
+
 -- Add similar autocommands for other modes as needed
diff --git a/lua/absolute/core/theme-registry.lua b/lua/absolute/core/theme-registry.lua
new file mode 100644
index 0000000..07e7f24
--- /dev/null
+++ b/lua/absolute/core/theme-registry.lua
@@ -0,0 +1,491 @@
+-- Theme Registry
+-- Central mapping between Neovim colorschemes and terminal themes (WezTerm, Ghostty)
+-- Maintains a curated list of popular themes with verified mappings
+
+local M = {}
+
+-- Core theme mappings (manually curated and tested)
+-- Each entry maps a Neovim colorscheme to its terminal equivalents
+M.themes = {
+	-- ============================================================================
+	-- Tokyo Night Family (5 variants)
+	-- ============================================================================
+	["tokyonight"] = {
+		nvim = "tokyonight",
+		wezterm = "Tokyo Night",
+		ghostty = "TokyoNight",
+		family = "tokyonight",
+		variant = "night",
+		description = "A clean, dark Tokyo Night theme",
+	},
+	["tokyonight-night"] = {
+		nvim = "tokyonight-night",
+		wezterm = "Tokyo Night",
+		ghostty = "TokyoNight Night",
+		family = "tokyonight",
+		variant = "night",
+		description = "Tokyo Night (night variant)",
+	},
+	["tokyonight-storm"] = {
+		nvim = "tokyonight-storm",
+		wezterm = "Tokyo Night Storm",
+		ghostty = "TokyoNight Storm",
+		family = "tokyonight",
+		variant = "storm",
+		description = "Tokyo Night (storm variant)",
+	},
+	["tokyonight-day"] = {
+		nvim = "tokyonight-day",
+		wezterm = "Tokyo Night Day",
+		ghostty = "TokyoNight Day",
+		family = "tokyonight",
+		variant = "day",
+		description = "Tokyo Night (light day variant)",
+	},
+	["tokyonight-moon"] = {
+		nvim = "tokyonight-moon",
+		wezterm = "Tokyo Night Moon",
+		ghostty = "TokyoNight Moon",
+		family = "tokyonight",
+		variant = "moon",
+		description = "Tokyo Night (moon variant)",
+	},
+
+	-- ============================================================================
+	-- Catppuccin Family (4 variants)
+	-- ============================================================================
+	["catppuccin"] = {
+		nvim = "catppuccin",
+		wezterm = "Catppuccin Mocha",
+		ghostty = "Catppuccin Mocha",
+		family = "catppuccin",
+		variant = "mocha",
+		description = "Catppuccin (default mocha variant)",
+	},
+	["catppuccin-mocha"] = {
+		nvim = "catppuccin-mocha",
+		wezterm = "Catppuccin Mocha",
+		ghostty = "Catppuccin Mocha",
+		family = "catppuccin",
+		variant = "mocha",
+		description = "Catppuccin Mocha (warm, dark)",
+	},
+	["catppuccin-macchiato"] = {
+		nvim = "catppuccin-macchiato",
+		wezterm = "Catppuccin Macchiato",
+		ghostty = "Catppuccin Macchiato",
+		family = "catppuccin",
+		variant = "macchiato",
+		description = "Catppuccin Macchiato (mid-tone dark)",
+	},
+	["catppuccin-frappe"] = {
+		nvim = "catppuccin-frappe",
+		wezterm = "Catppuccin Frappe",
+		ghostty = "Catppuccin Frappe",
+		family = "catppuccin",
+		variant = "frappe",
+		description = "Catppuccin Frappe (cool, dark)",
+	},
+	["catppuccin-latte"] = {
+		nvim = "catppuccin-latte",
+		wezterm = "Catppuccin Latte",
+		ghostty = "Catppuccin Latte",
+		family = "catppuccin",
+		variant = "latte",
+		description = "Catppuccin Latte (light variant)",
+	},
+
+	-- ============================================================================
+	-- Rose Pine Family (4 variants)
+	-- ============================================================================
+	["rose-pine"] = {
+		nvim = "rose-pine",
+		wezterm = "rose-pine",
+		ghostty = "Rose Pine",
+		family = "rose-pine",
+		variant = "main",
+		description = "Rose Pine (main dark variant)",
+	},
+	["rose-pine-main"] = {
+		nvim = "rose-pine-main",
+		wezterm = "rose-pine",
+		ghostty = "Rose Pine",
+		family = "rose-pine",
+		variant = "main",
+		description = "Rose Pine (main dark variant)",
+	},
+	["rose-pine-moon"] = {
+		nvim = "rose-pine-moon",
+		wezterm = "rose-pine-moon",
+		ghostty = "Rose Pine Moon",
+		family = "rose-pine",
+		variant = "moon",
+		description = "Rose Pine Moon (darker variant)",
+	},
+	["rose-pine-dawn"] = {
+		nvim = "rose-pine-dawn",
+		wezterm = "rose-pine-dawn",
+		ghostty = "Rose Pine Dawn",
+		family = "rose-pine",
+		variant = "dawn",
+		description = "Rose Pine Dawn (light variant)",
+	},
+
+	-- ============================================================================
+	-- Nightfox Family (7 variants)
+	-- ============================================================================
+	["nightfox"] = {
+		nvim = "nightfox",
+		wezterm = "nightfox",
+		ghostty = "Nightfox",
+		family = "nightfox",
+		variant = "night",
+		description = "Nightfox (main dark variant)",
+	},
+	["carbonfox"] = {
+		nvim = "carbonfox",
+		wezterm = "carbonfox",
+		ghostty = "Carbonfox",
+		family = "nightfox",
+		variant = "carbon",
+		description = "Carbonfox (carbon variant)",
+	},
+	["dawnfox"] = {
+		nvim = "dawnfox",
+		wezterm = "dawnfox",
+		ghostty = "Dawnfox",
+		family = "nightfox",
+		variant = "dawn",
+		description = "Dawnfox (dawn variant)",
+	},
+	["dayfox"] = {
+		nvim = "dayfox",
+		wezterm = "dayfox",
+		ghostty = "Dayfox",
+		family = "nightfox",
+		variant = "day",
+		description = "Dayfox (light day variant)",
+	},
+	["duskfox"] = {
+		nvim = "duskfox",
+		wezterm = "duskfox",
+		ghostty = "Duskfox",
+		family = "nightfox",
+		variant = "dusk",
+		description = "Duskfox (dusk variant)",
+	},
+	["nordfox"] = {
+		nvim = "nordfox",
+		wezterm = "nordfox",
+		ghostty = "Nordfox",
+		family = "nightfox",
+		variant = "nord",
+		description = "Nordfox (nord-inspired variant)",
+	},
+	["terafox"] = {
+		nvim = "terafox",
+		wezterm = "terafox",
+		ghostty = "Terafox",
+		family = "nightfox",
+		variant = "tera",
+		description = "Terafox (tera variant)",
+	},
+
+	-- ============================================================================
+	-- Gruvbox Family (4 variants)
+	-- ============================================================================
+	["gruvbox"] = {
+		nvim = "gruvbox",
+		wezterm = "GruvboxDark",
+		ghostty = "Gruvbox Dark",
+		family = "gruvbox",
+		variant = "dark",
+		description = "Gruvbox (dark variant)",
+	},
+	["gruvbox-material"] = {
+		nvim = "gruvbox-material",
+		wezterm = "Gruvbox Material (Gogh)",
+		ghostty = "Gruvbox Material",
+		family = "gruvbox",
+		variant = "material",
+		description = "Gruvbox Material",
+	},
+
+	-- ============================================================================
+	-- Nord
+	-- ============================================================================
+	["nord"] = {
+		nvim = "nord",
+		wezterm = "Nord (base16)",
+		ghostty = "Nord",
+		family = "nord",
+		variant = "main",
+		description = "Nord (arctic, north-bluish color palette)",
+	},
+
+	-- ============================================================================
+	-- Dracula
+	-- ============================================================================
+	["dracula"] = {
+		nvim = "dracula",
+		wezterm = "Dracula (Official)",
+		ghostty = "Dracula",
+		family = "dracula",
+		variant = "main",
+		description = "Dracula (dark theme)",
+	},
+
+	-- ============================================================================
+	-- One Dark / One Light
+	-- ============================================================================
+	["onedark"] = {
+		nvim = "onedark",
+		wezterm = "OneDark (base16)",
+		ghostty = "Atom One Dark",
+		family = "onedark",
+		variant = "dark",
+		description = "One Dark (Atom-inspired dark theme)",
+	},
+	["onelight"] = {
+		nvim = "onelight",
+		wezterm = "One Light (base16)",
+		ghostty = "Atom One Light",
+		family = "onelight",
+		variant = "light",
+		description = "One Light (Atom-inspired light theme)",
+	},
+
+	-- ============================================================================
+	-- Material
+	-- ============================================================================
+	["material"] = {
+		nvim = "material",
+		wezterm = "MaterialDark",
+		ghostty = "Material",
+		family = "material",
+		variant = "dark",
+		description = "Material (dark variant)",
+	},
+	["material-darker"] = {
+		nvim = "material-darker",
+		wezterm = "MaterialDarker",
+		ghostty = "Material Darker",
+		family = "material",
+		variant = "darker",
+		description = "Material (darker variant)",
+	},
+
+	-- ============================================================================
+	-- Solarized
+	-- ============================================================================
+	["solarized-dark"] = {
+		nvim = "solarized-dark",
+		wezterm = "Builtin Solarized Dark",
+		ghostty = "Builtin Solarized Dark",
+		family = "solarized",
+		variant = "dark",
+		description = "Solarized Dark",
+	},
+	["solarized-light"] = {
+		nvim = "solarized-light",
+		wezterm = "Builtin Solarized Light",
+		ghostty = "Builtin Solarized Light",
+		family = "solarized",
+		variant = "light",
+		description = "Solarized Light",
+	},
+
+	-- ============================================================================
+	-- Monokai
+	-- ============================================================================
+	["monokai"] = {
+		nvim = "monokai",
+		wezterm = "Monokai Remastered",
+		ghostty = "Monokai Classic",
+		family = "monokai",
+		variant = "main",
+		description = "Monokai (classic variant)",
+	},
+	["monokai-pro"] = {
+		nvim = "monokai-pro",
+		wezterm = "Monokai Pro (Gogh)",
+		ghostty = "Monokai Pro",
+		family = "monokai",
+		variant = "pro",
+		description = "Monokai Pro",
+	},
+
+	-- ============================================================================
+	-- GitHub
+	-- ============================================================================
+	["github-dark"] = {
+		nvim = "github-dark",
+		wezterm = "GitHub Dark",
+		ghostty = "GitHub Dark",
+		family = "github",
+		variant = "dark",
+		description = "GitHub Dark",
+	},
+
+	-- ============================================================================
+	-- Ayu
+	-- ============================================================================
+	["ayu-dark"] = {
+		nvim = "ayu-dark",
+		wezterm = "Ayu Dark (Gogh)",
+		ghostty = "Ayu",
+		family = "ayu",
+		variant = "dark",
+		description = "Ayu (dark variant)",
+	},
+	["ayu-mirage"] = {
+		nvim = "ayu-mirage",
+		wezterm = "Ayu Mirage",
+		ghostty = "Ayu Mirage",
+		family = "ayu",
+		variant = "mirage",
+		description = "Ayu Mirage (mid-tone variant)",
+	},
+	["ayu-light"] = {
+		nvim = "ayu-light",
+		wezterm = "Ayu Light (Gogh)",
+		ghostty = "Ayu Light",
+		family = "ayu",
+		variant = "light",
+		description = "Ayu (light variant)",
+	},
+}
+
+-- ============================================================================
+-- Helper Functions
+-- ============================================================================
+
+--- Get the terminal theme name for a given Neovim colorscheme
+--- @param nvim_name string The Neovim colorscheme name
+--- @param terminal_type string The terminal type ("wezterm" or "ghostty")
+--- @return string|nil The terminal theme name, or nil if not found
+function M.get_theme(nvim_name, terminal_type)
+	local theme = M.themes[nvim_name]
+	if not theme then
+		return nil
+	end
+
+	if terminal_type == "wezterm" then
+		return theme.wezterm
+	elseif terminal_type == "ghostty" then
+		return theme.ghostty
+	end
+
+	return nil
+end
+
+--- Check if a Neovim colorscheme is supported for a given terminal
+--- @param nvim_name string The Neovim colorscheme name
+--- @param terminal_type string The terminal type ("wezterm" or "ghostty")
+--- @return boolean True if the mapping exists
+function M.is_supported(nvim_name, terminal_type)
+	return M.get_theme(nvim_name, terminal_type) ~= nil
+end
+
+--- Get all Neovim themes in the registry
+--- @return table List of Neovim colorscheme names
+function M.get_all_nvim_themes()
+	local themes = {}
+	for nvim_name, _ in pairs(M.themes) do
+		table.insert(themes, nvim_name)
+	end
+	table.sort(themes)
+	return themes
+end
+
+--- Get theme family and variant information
+--- @param nvim_name string The Neovim colorscheme name
+--- @return table|nil Theme metadata (family, variant, description)
+function M.get_theme_info(nvim_name)
+	local theme = M.themes[nvim_name]
+	if not theme then
+		return nil
+	end
+
+	return {
+		family = theme.family,
+		variant = theme.variant,
+		description = theme.description,
+		wezterm = theme.wezterm,
+		ghostty = theme.ghostty,
+	}
+end
+
+--- Get all themes in a family
+--- @param family_name string The theme family name (e.g., "tokyonight", "catppuccin")
+--- @return table List of theme entries in the family
+function M.get_family_themes(family_name)
+	local family_themes = {}
+	for nvim_name, theme in pairs(M.themes) do
+		if theme.family == family_name then
+			table.insert(family_themes, {
+				nvim = nvim_name,
+				variant = theme.variant,
+				description = theme.description,
+			})
+		end
+	end
+
+	-- Sort by variant name
+	table.sort(family_themes, function(a, b)
+		return a.variant < b.variant
+	end)
+
+	return family_themes
+end
+
+--- Get a list of all theme families
+--- @return table List of unique family names
+function M.get_all_families()
+	local families = {}
+	local seen = {}
+
+	for _, theme in pairs(M.themes) do
+		if not seen[theme.family] then
+			seen[theme.family] = true
+			table.insert(families, theme.family)
+		end
+	end
+
+	table.sort(families)
+	return families
+end
+
+--- Get statistics about the theme registry
+--- @return table Statistics (total_themes, families_count, terminal_coverage)
+function M.get_stats()
+	local total = 0
+	local wezterm_count = 0
+	local ghostty_count = 0
+	local families = {}
+
+	for _, theme in pairs(M.themes) do
+		total = total + 1
+		if theme.wezterm then
+			wezterm_count = wezterm_count + 1
+		end
+		if theme.ghostty then
+			ghostty_count = ghostty_count + 1
+		end
+		families[theme.family] = true
+	end
+
+	local families_count = 0
+	for _ in pairs(families) do
+		families_count = families_count + 1
+	end
+
+	return {
+		total_themes = total,
+		families_count = families_count,
+		wezterm_coverage = wezterm_count,
+		ghostty_coverage = ghostty_count,
+	}
+end
+
+return M
diff --git a/lua/absolute/lazy.lua b/lua/absolute/lazy.lua
index 4ff9ae2..dd9f580 100644
--- a/lua/absolute/lazy.lua
+++ b/lua/absolute/lazy.lua
@@ -27,7 +27,10 @@ require("lazy")
             change_detection = {
                 notify = false,
             },
+            ui = {
+                border = "rounded",
+            },
         })
 
 require("absolute.core.colorscheme")
-require("../current-theme");
+require("current-theme")
diff --git a/lua/absolute/plugins/codecompanion.lua b/lua/absolute/plugins/codecompanion.lua
deleted file mode 100644
index a8ebb97..0000000
--- a/lua/absolute/plugins/codecompanion.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-return {
-	"olimorris/codecompanion.nvim",
-	dependencies = {
-		"ravitemer/mcphub.nvim",
-		"nvim-lua/plenary.nvim",
-		"nvim-treesitter/nvim-treesitter",
-	},
-	config = function()
-		require("absolute.after.codecompanion")
-	end,
-}
diff --git a/lua/absolute/plugins/copilot.lua b/lua/absolute/plugins/copilot.lua
deleted file mode 100644
index 2347f29..0000000
--- a/lua/absolute/plugins/copilot.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-return {
-	"github/copilot.vim",
-}
diff --git a/lua/absolute/plugins/flash.lua b/lua/absolute/plugins/flash.lua
new file mode 100644
index 0000000..fe0ef18
--- /dev/null
+++ b/lua/absolute/plugins/flash.lua
@@ -0,0 +1,15 @@
+return {
+	enabled = false,
+	"folke/flash.nvim",
+	event = "VeryLazy",
+	---@type Flash.Config
+	opts = {},
+  -- stylua: ignore
+  keys = {
+    { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
+    { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
+    { "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" },
+    { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
+    { "", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
+  },
+}
diff --git a/lua/absolute/plugins/gen.lua b/lua/absolute/plugins/gen.lua
deleted file mode 100644
index 50f8a8f..0000000
--- a/lua/absolute/plugins/gen.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-return {
-	"David-Kunz/gen.nvim",
-	enabled = false,
-	config = function()
-		require("absolute.after.gen")
-	end,
-}
diff --git a/lua/absolute/plugins/git-blame.lua b/lua/absolute/plugins/git-blame.lua
deleted file mode 100644
index 6b3efe4..0000000
--- a/lua/absolute/plugins/git-blame.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-return {
-	"f-person/git-blame.nvim",
-	event = "VeryLazy",
-}
diff --git a/lua/absolute/plugins/llm.lua b/lua/absolute/plugins/llm.lua
deleted file mode 100644
index dea6f82..0000000
--- a/lua/absolute/plugins/llm.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-return {
-	"huggingface/llm.nvim",
-	enabled = false,
-	config = function()
-		require("absolute.after.llm")
-	end,
-}
diff --git a/lua/absolute/plugins/nvim-treesitter-playground.lua b/lua/absolute/plugins/nvim-treesitter-playground.lua
deleted file mode 100644
index 819aed7..0000000
--- a/lua/absolute/plugins/nvim-treesitter-playground.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-return {
-    "nvim-treesitter/playground",
-}
diff --git a/lua/absolute/plugins/poet-v.lua b/lua/absolute/plugins/poet-v.lua
deleted file mode 100644
index bf9c580..0000000
--- a/lua/absolute/plugins/poet-v.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-return {
-	enabled = false,
-	"petobens/poet-v",
-	config = function()
-		require("absolute.after.poet-v")
-	end,
-}
diff --git a/lua/absolute/plugins/render-markdown.lua b/lua/absolute/plugins/render-markdown.lua
deleted file mode 100644
index 87eab9d..0000000
--- a/lua/absolute/plugins/render-markdown.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-return {
-  "MeanderingProgrammer/render-markdown.nvim",
-  ft = { "markdown", "codecompanion" }
-}
diff --git a/lua/absolute/plugins/snacks.lua b/lua/absolute/plugins/snacks.lua
new file mode 100644
index 0000000..4d3d4fd
--- /dev/null
+++ b/lua/absolute/plugins/snacks.lua
@@ -0,0 +1,12 @@
+return {
+	"folke/snacks.nvim",
+	priority = 1000,
+	lazy = false,
+	---@type snacks.Config
+	opts = {
+		bigfile = { enabled = true },
+		quickfile = { enabled = true },
+		-- input, notifier added in Phase 2
+		-- picker added in Phase 3
+	},
+}
diff --git a/lua/absolute/plugins/venv-selector.lua b/lua/absolute/plugins/venv-selector.lua
index 9b02daa..35c25f6 100644
--- a/lua/absolute/plugins/venv-selector.lua
+++ b/lua/absolute/plugins/venv-selector.lua
@@ -1,11 +1,10 @@
 return {
 	"linux-cultist/venv-selector.nvim",
 	lazy = false,
-	branch = "regexp", -- This is the regexp branch, use this for the new version
+	branch = "main", -- This is the regexp branch, use this for the new version
 	dependencies = {
 		"neovim/nvim-lspconfig",
 		"nvim-telescope/telescope.nvim",
-		"mfussenegger/nvim-dap-python",
 	},
 	config = function()
 		require("absolute.after.venv-selector")
diff --git a/lua/absolute/plugins/vim-maximizer.lua b/lua/absolute/plugins/vim-maximizer.lua
deleted file mode 100644
index b38ad89..0000000
--- a/lua/absolute/plugins/vim-maximizer.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-return {
-    "szw/vim-maximizer"
-}
diff --git a/lua/absolute/remap.lua b/lua/absolute/remap.lua
index 92c9c7d..1f161d6 100644
--- a/lua/absolute/remap.lua
+++ b/lua/absolute/remap.lua
@@ -66,18 +66,18 @@ vim.keymap.set("n", "", "cnextzz", opts)
 opts.desc = "Jump down and center screen"
 vim.keymap.set("n", "", "cprevzz", opts)
 
-opts.desc = "Jump to next location and center screen"
-vim.keymap.set("n", "k", "lnextzz", opts)
+opts.desc = "Next location-list entry"
+vim.keymap.set("n", "]l", "lnextzz", opts)
 
-opts.desc = "Jump to previous location and center screen"
-vim.keymap.set("n", "j", "lprevzz", opts)
+opts.desc = "Previous location-list entry"
+vim.keymap.set("n", "[l", "lprevzz", opts)
 
 -- Search Regex Keymap
 opts.desc = "Regex Replace"
 vim.keymap.set("n", "sr", [[:%s/\<\>//gI]], opts)
 
 opts.desc = "Replace selected text"
-vim.keymap.set("v", "ss", [[:s/\<\>//gI]], opts)
+vim.keymap.set("v", "sr", [[:s/\<\>//gI]], opts)
 
 -- -- Source File Keymap
 -- opts.desc = "Source File"
diff --git a/lua/current-theme.lua b/lua/current-theme.lua
index 5bd2d98..ef25069 100644
--- a/lua/current-theme.lua
+++ b/lua/current-theme.lua
@@ -1 +1 @@
-vim.cmd("colorscheme catppuccin-macchiato")
\ No newline at end of file
+vim.cmd("colorscheme tokyonight-night")
\ No newline at end of file