Skip to content

v2.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 06:11

SilkCircuit v2.0.0

Released: 2026-09-02

SilkCircuit stopped being a Neovim colorscheme with a few extras attached. It is now one palette, five variants, and thirty-one generated target formats that cannot drift, because every file under extras/ is rendered from lua/silkcircuit/variants.lua and CI fails if the checked-in output disagrees. Neon, vibrant, soft, and glow got a contrast retune, dawn arrives as the first light variant, and there is a documentation site plus a universal installer for Unix and Windows.

Breaking changes

Read this section before you upgrade. Each line has its migration.

  • The repo and plugin are now hyperb1iss/silkcircuit, not silkcircuit-nvim. Change the plugin spec string in your lazy.nvim, packer, or vim-plug config.
  • Neovim 0.10 is the floor, up from 0.8. Upgrade Neovim, then run :checkhealth silkcircuit.
  • The compiled cache is gone. :SilkCircuitCompile no longer exists and require("silkcircuit").compile() is a warning stub. Delete the call; load is fast without it.
  • Extras moved into per-tool directories with per-variant filenames. extras/kitty.conf, extras/alacritty.yml, extras/gitconfig, extras/fzf.sh, extras/warp.yaml, extras/windows-terminal.json, and extras/slack-theme.txt are deleted. Repoint your include or source line at extras/<tool>/silkcircuit-<variant>.<ext>, or rerun ./install.sh.
  • btop themes use dashes now. silkcircuit_neon.theme became silkcircuit-neon.theme. Reselect the theme in btop under Options, Color theme.
  • VS Code themes moved to extras/vscode/themes/. Reinstall the extension; nothing changes if you use the Marketplace build.
  • The Chrome theme is five themes. The single root manifest is replaced by extras/chrome-theme/silkcircuit-<variant>/. Load unpacked from the variant directory you want.
  • The palette was retuned for contrast. Dawn, vibrant coral, glow's purple and bright cyan, neon's bright green, and the terminal reds all moved. If you hardcoded hex values anywhere, re-read them from palette/silkcircuit-<variant>.json.
  • Integrations are no longer gated on plugin detection. Every integration's highlights load up front and detection only feeds :SilkCircuitIntegrations and health output. Turn one off with integrations.<name> = false.

๐Ÿ”ฎ Highlights

One palette, every tool

lua/silkcircuit/extra/init.lua holds a registry of thirty-one target formats, rendered by make build and matching the count in docs/extras/index.md. Most targets render once per variant across neon, vibrant, soft, glow, and dawn. Two of them, windows-terminal-all and zellij-all, are marked is_full and render a single combined file carrying every scheme.

The registry covers Alacritty, Atuin, bat, btop, COSMIC Desktop, GNU dircolors, dmesg, fastfetch, foot, fzf, fzf (PowerShell), Ghostty, Ghostty GTK chrome, Git, Helix, iTerm2, k9s, Kitty, lazygit, lsd, procs, Slack, Starship, tmux, VS Code, Warp, WezTerm, Windows Terminal, Windows Terminal (every scheme), Zellij, and Zellij (every theme). Adding a target is one registry entry plus one module that returns a string.

๐ŸŒ™ Dawn, the light variant

Dawn is the fifth variant and the first light one. It went through its own readability pass: hovers and the sidebar title clear 4.5:1, the roles that washed out got retuned, and the Chrome generator stopped hardcoding dawn colors that no longer exist. Neon, vibrant, soft, and glow stay dark.

โšก Contrast you can check

Line numbers clear WCAG AA on every variant, the terminal contract carries true reds, glow gets a purple distinct from its cyan, and neon's bright green separates from its normal green. tests/spec/contrast_spec.lua gates the ratios, snapshot specs pin the highlight output for all five variants, and :checkhealth silkcircuit reports what it measured instead of asserting compliance.

๐Ÿ’œ Ten new Neovim integrations

blink.cmp, fzf-lua, oil, trouble, grug-far, neotest, lazy, dropbar, fidget, and treesitter-context are themed. which-key moved to the v3 API, snacks coverage expanded across pickers, notifier, indent, status column, and zen mode, and the statusline is driven by one palette-aware theme in lua/lualine/themes/silkcircuit.lua that clears its cache on colorscheme change.

๐Ÿฆ‹ An installer that respects your dotfiles

install.sh and install.ps1 detect what you have, write each theme where its tool looks for it, and print the line that turns it on. Anything replaced is copied to *.silkcircuit.bak first. Neither installer adds an untracked file to a git repo it does not own, and the k9s path merges the skin into your existing config rather than appending a second mapping.

๐Ÿ’œ Neovim

  • Highlights are applied through nvim_set_hl, with attributes passed through and explicit style overrides honored.
  • New surface roles separate float, cursorline, and statusline backgrounds, plus bg_darker, divider, accent_border, accent_hover, and accent_warm. The theme adopts them, so popups no longer share the cursorline's background and window separators stop fighting the editor background.
  • Core groups modern Neovim exposes are defined, including the matched-text Pmenu groups.
  • Functions and keyword subtypes are plain by default and follow styles.keywords and styles.functions.
  • Saved preferences apply before the theme loads, and an explicit setup() option always wins, so there is no flash to the default variant.
  • Glow repaints on variant switch, and cmp no longer clobbers PmenuSel.
  • Unresolved LSP references link to DiagnosticError, a group that exists.
  • config.get() stops handing out the live defaults table.
  • A self-contained headless runner (scripts/test, tests/minimal_init.lua, tests/run.lua) sandboxes every XDG directory, refuses to run outside the sandbox, and covers palettes, highlights, config, preferences, commands, contrast, plugin isolation, and snapshots.

โšก Terminals and multiplexers

  • Kitty, Alacritty, Ghostty, WezTerm, Warp, foot, iTerm2, and Windows Terminal are all generated per variant from the same ANSI contract, documented in one table on the terminal guide.
  • Ghostty ships both the theme and GTK chrome CSS, with the pure whites replaced by purple-tinted tones.
  • Windows Terminal also gets extras/windows-terminal/silkcircuit.json with every scheme in one file; Zellij gets the same treatment in extras/zellij/silkcircuit.kdl.
  • foot themes carry both color sections, tmux states its real version floor with correct dim pairs, and Zellij's emphasis colors are readable.
  • palette/ exports each variant as JSON with hex, RGB, HSL, and the sixteen ANSI slots, plus base16 and base24 schemes for tinted-theming builders such as tinty and stylix.

๐Ÿช„ CLI and shell

  • Generated from the palette: bat, lsd, procs, Starship, fastfetch, GNU dircolors, fzf (shell and PowerShell), Git color plus delta, lazygit, Atuin, btop, k9s, and dmesg.
  • Starship reflects command status in the prompt, drops the docker context segment, and skips submodule scanning in git_status for faster prompts in large repos.
  • Git log styling distinguishes subjects from bodies.
  • k9s clears WCAG AA on the table header, btop keeps its gradient stops distinct in every variant, bat gets a gutter, and the fastfetch icons are back.
  • The x256 quantizer takes decoded channels, so 256-color fallbacks land on the intended shade.

๐Ÿ’Ž Editors, browsers, and apps

  • VS Code: five themes in one extension, now rendered from the palette roles instead of a hand-maintained JSON per variant. Screenshots no longer ship inside the vsix.
  • Helix: syntax, markup, diffs, diagnostics, and interface, with the deprecated modifier dropped.
  • Chrome 2.0: all five variants with full API coverage, DevTools CSS, deterministic new-tab backgrounds, reworked tab and toolbar contrast, and Web Store assets. make chrome reads the exported palette JSON rather than a mirrored dictionary; make chrome-package zips the set.
  • Slack: a generated theme string per variant, with the registry pointing at a help article that exists.
  • COSMIC Desktop: ron themes per variant, with frosted surfaces kept on for glow.
  • AstroNvim: theming centralized into lua/silkcircuit/contrib/astronvim.lua, bundled plugin specs repaired for current Neovim, and two statusline bugs fixed in the lualine extra.

๐ŸŒˆ Toolchain and docs

  • A VitePress site at hyperb1iss.github.io/silkcircuit with guide, variants, design, extras, and reference sections, one page per generated target, and a per-target file table written by make docs.
  • mise.toml pins the toolchain (selene, stylua, ruff, prettier, uv, Node, pre-commit) so local make check and CI agree. Pre-commit hooks run through the same pins.
  • Make targets: setup, check, lint, fmt, test, build, docs, shots, chrome, chrome-package, vscode-package, preview.
  • CI regenerates every extra and doc table, then fails if the working tree moves, so a hand-edited generated file or an unrebuilt palette cannot land.
  • Releases run on release-please with VS Code Marketplace and Open VSX publishing, Chrome zips attached to the release, and release notes styled by git-iris.
  • make shots scripts the screenshot pipeline; every asset was recaptured on the retuned palette.

Install and upgrade

Neovim, with lazy.nvim:

{
  "hyperb1iss/silkcircuit",
  lazy = false,
  priority = 1000,
  config = function()
    require("silkcircuit").setup({})
    vim.cmd.colorscheme("silkcircuit")
  end,
}

Everything else, from a clone:

git clone https://github.com/hyperb1iss/silkcircuit.git
cd silkcircuit
./install.sh --dry-run      # see what it would touch
./install.sh                # all five variants, side by side
./install.sh --variant dawn
.\install.ps1 -Variant glow

Upgrading from 1.x: bump Neovim to 0.10 or newer, rename the plugin spec to hyperb1iss/silkcircuit, drop any :SilkCircuitCompile call, then rerun the installer to replace the old flat extras/ files. Verify with :checkhealth silkcircuit and :SilkCircuitContrast. Full docs live at hyperb1iss.github.io/silkcircuit.