Skip to content

Releases: johnpapa/vscode-peacock

Peacock 4.3.4

Choose a tag to compare

@johnpapa johnpapa released this 19 Jul 18:49
bfda381

Includes a one-time in-product notice when workbench.experimental.modernUI is enabled, docs FAQ update, changelog entry, regression tests, and packaging fix to exclude e2e screenshots so VSIX is small (~243KB). PRs: #682 (notice/docs/tests), #683/#684/#685 (.vscodeignore and packaging). Tracking issue: #652.

Peacock 4.3.3

Choose a tag to compare

@johnpapa johnpapa released this 20 Jul 16:20

4.3.3

Release update

  • Re-published the full 4.3.x feature set as a clean patch release after Marketplace validation checks.
  • Added validation-safe Marketplace badge URLs in README.md to avoid blocked SVG badge providers.
  • Confirmed Peacock color customization behavior when workbench.experimental.modernUI is disabled; this workaround applies in Insiders and can also apply in Stable when modernUI is manually enabled.
  • Added a guide FAQ entry documenting the temporary workbench.experimental.modernUI workaround and upstream tracking issue.
  • Modern UI compatibility note: VS Code's experimental workbench.experimental.modernUI overrides the workbench color customizations Peacock relies on, making Peacock's colors effectively invisible while it is enabled. Peacock now detects this and shows a one-time notice with guidance, and we are iterating compatibility as upstream fixes land.
  • Added a primary Peacock tracking issue for modernUI support updates: #652.

4.3.0

This release consolidates the previously unpublished 4.2.3-4.2.6 changelog drafts into the next Marketplace release after 4.2.2.

Features

  • Added peacock.affectWindowBorder setting — when enabled, Peacock colorizes window.activeBorder and window.inactiveBorder to match the Peacock color. Window border support is available on Windows in VS Code 1.104+ (#569)
  • Added peacock.surpriseMeInFavoritesOrder setting — when enabled (with startup surprise + favorites-only), Peacock now cycles favorite colors in deterministic list order across startups instead of choosing favorites randomly (#487)
  • Startup surprise now persists and restores the last startup-selected color per workspace via mementos, so reopening workspaces (including large worktree setups) keeps expected startup surprise behavior (#582)
  • Added peacock.affectTabActiveBackground setting — optionally colors the active tab's background with the Peacock color. Defaults to false to preserve existing behavior (#565)
  • Added peacock.excludedSettings — an array of VS Code color customization keys (e.g. statusBar.background) that Peacock will never modify or delete, protecting your own workspace color settings when applying a color or resetting (#575). Completes and supersedes community PR #574. Thanks to @josh-tepper!
  • Added Peacock: Set SideBar Darkness Level command — sets the SideBar background to a darker shade of the current Peacock color (Dark, Darker, or Darkest). Useful for maintaining color visibility when the activity bar is hidden (#560)
  • Added commandCenter.foreground and commandCenter.border coloring to title bar handling (#583)
  • Added color picker support in settings.json for all Peacock color settings (#531)

Fixes

  • Improved reset/remove-all cleanup for uninstall scenarios by correctly reading workspace-folder workbench.colorCustomizations entries before deleting Peacock-managed keys, while preserving non-Peacock customization keys (#656)
  • Fixed status bar disappearing (overridden by VS Code's default orange debugging color) during launch/debug sessions when affectDebuggingStatusBar is false (the default). Peacock now always writes statusBar.debuggingBackground and statusBar.debuggingForeground to match the regular status bar whenever the status bar is affected, preventing VS Code from overriding those tokens at debug start. The affectDebuggingStatusBar setting still works as before — enabling it produces a complementary distinctive color during debugging (#572).
  • Fixed activity bar highlight not applying when the activity bar is in the "on top" layout (VS Code 1.84+, workbench.activityBar.location: top). Peacock now sets activityBarTop.* tokens in addition to the classic activityBar.* tokens so the highlight is visible in both classic (side) and top layouts (#538).
  • Fixed Cursor IDE editor-toolbar action icons becoming invisible when Peacock colors the title bar. Cursor mis-uses var(--vscode-titleBar-activeForeground) for editor toolbar action icons (a Cursor CSS bug; VS Code is unaffected), so a dark Peacock title bar foreground made those icons disappear. Peacock now auto-detects Cursor via vscode.env.appName and uses a visible mid-gray title bar foreground only there — VS Code behavior is unchanged (#647). Thanks to @Prontsevich for the root-cause analysis.
  • Fixed remote indicator badge blending into status bar: badge now uses a contrasting accent color instead of the same color as the status bar (#473)
  • Fixed "Reset Workspace Colors" not clearing colors when peacock.color was already undefined — reset now directly removes color customizations instead of relying on a configuration change event (#554)
  • Fixed remote color fallback: peacock.color is now used when peacock.remoteColor is not set in remote contexts (devcontainers, SSH, WSL) (#522, #459)
  • Fixed Squiggly Be Gone transparency so Peacock now matches the background color with a 00 alpha channel instead of applying the incorrect transparency value

Docs & Infrastructure

  • Added copilot-setup-steps.yml for Copilot coding agent environment setup (mirrors CI: Node 20, npm ci, test-compile)
  • Added paths-ignore to CI workflow to skip builds for docs-only changes (markdown, images, issue templates)
  • Improved CHANGELOG.md pointer to reference authoritative changelog location at docs/changelog/README.md
  • Clarified Marketplace release visibility and propagation expectations in docs, including stable vs pre-release guidance and troubleshooting steps (#649)
  • Added FAQ entry explaining why Peacock commands can appear in the palette but silently do nothing — covers the Live Share conflict workaround and workspace requirement (#550). Thanks to @tjeanes, @ShrimpCryptid, @ralfaro17, and @diepes for identifying the root cause.
  • Hardened docs delivery by pinning Docsify/Prism CDN versions, extracting docs site CSS to docs/assets/docs.css, and adding link-checking to docs CI (#671)
  • Migrated documentation site from VuePress to Docsify, deployed via GitHub Pages
  • New docs URL: https://johnpapa.github.io/vscode-peacock/
  • Modern Peacock-branded design with responsive layout, client-side search, and syntax highlighting
  • Added 69 Playwright e2e tests covering pages, navigation, images, links, styling, and search
  • Added CI workflow with lint, build, and tests on all PRs
  • Added unit tests for object-library (sortSettingsIndexer, settingsIndexersAreEqual)
  • Added test requirement convention: every bug fix must include a regression test, every feature must include unit tests
  • Added AI-Ready badge, AGENTS.md, copilot-instructions.md, and copilot-setup-steps.yml
  • Upgraded issue templates from markdown to YAML issue forms
  • Added Dependabot for npm and GitHub Actions dependencies
  • Added CODEOWNERS and SECURITY.md

Contributors

  • Thanks to @Prateek-Wayne for the SideBar darkness contribution behind Peacock: Set SideBar Darkness Level (#566).
  • Thanks to @crewsd for the command center foreground contribution that shipped with the title bar command center support (#583).
  • Thanks to @dembeck for the color picker support contribution for Peacock color settings (#531).
  • Thanks to @dependabot for the automated dependency update PRs included in this release.

Dependencies

  • Bumped webpack (5.61→5.106), ts-loader (9.2→9.5), lodash (4.17→4.18), Playwright, and other dev dependencies
  • Bumped GitHub Actions (checkout v6, setup-node v6, upload-artifact v7, configure-pages v6, upload-pages-artifact v5)
  • Security patches for serialize-javascript, picomatch, minimatch, braces, js-yaml, @babel/traverse
  • Added skipLibCheck to tsconfig.json for TS 3.9 compatibility with newer dependency type definitions

Peacock 3.0.0

Choose a tag to compare

@johnpapa johnpapa released this 01 Aug 12:15

3.0.0

Migration

  • Version 2 of Peacock stored the peacock color in a memento. Version 3 of Peacock stores the color in the settings. If the v2 memento exists, Peacock gets the color, removes the memento, and writes the color to the settings. Fixes #230

Features

  • Commands
    • Copy the Current Color to the Clipboard - Shows the current color and copies it to the clipboard
      • This command can be executed from the command palette or by clicking the statusBar item for peacock's color
    • Peacock: Reset Workspace Colors - Removes any of the color settings from the .vscode/settings.json file. If colors exist in the user settings, they may be applied
      • This used be named Peacock: Reset Colors and was renamed for clarity
    • Peacock: Remove All Global and Workspace Colors - Removes all of the color settings from both the Workspace .vscode/settings.json file and the Global user settings.json file.

New Settings

  • Removed remote colors and live share colors from mementos and instead created user settings for these. Mementos are best for values the user cant see, while settings make it easier for the user to see them and modify them directly. This feels right for these colors.

  • Peacock now separates when colors will be applied (workspace color customizations) from when the peacock.color is saved. When a user applies Peacock colors, applyColor is called and we also update peacock.color. When the color just needs to be applied, but not written, we just called applyColor.

  • New settings are as follows:

    • peacock.color - The Peacock color that will be applied to workspaces

      • currently selected local color. this replaced the workspace memento for the current/recent color, which may solve reported problems with mysterious colors changing (because workspace settings are visible, get removed by peacock commands, and users can manually edit them).
    • peacock.remoteColor - The Peacock color that will be applied to remote workspaces

      • currently selected remote color. color for all types of remote environments (ssh, wsl, containers). this consolidates the 3 into 1.
    • peacock.vslsShareColor - Peacock color for Live Share Hosting

    • peacock.vslsJoinColor - Peacock color for Live Share Joining

Breaking Changes

  • Remove commands for remotes as we now just use the other commands to change the color while you are in a remote.
    • Change Remote Color (SSH) - prompts user to select a color for the SSH remote context from the Favorites
    • Change Remote Color (Containers) - prompts user to select a color for the Containers remote context from the Favorites
    • Change Remote Color (WSL) - prompts user to select a color for the WSL remote context from the Favorites
  • Remove the existing current color memento (replace with peacock.color)
  • Remove the existing remote color settings/mementos (replace with peacock.remoteColor)

DevOps

Bug Fixes

  • When trying the favorites out in the quick pick list, continually selecting a new one, but not selecting one, Peacock would start looping thru colors in a rapid fashion and never stop. This has been corrected.
  • Peacock used to copy any extra workbench.colorCustomizations in the global user settings.json to the workspace, because the get configuration API in vs code get a merged set of settings. This has been refactored to only get the colors that are in the workspace and the Peacock uses. This now uses read-configuration.ts's getColorCustomizationConfigFromWorkspace function

Peacock 3.0.0-rc.4

Peacock 3.0.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@johnpapa johnpapa released this 01 Aug 12:02

3.0.0-rc.4

Migration

  • Version 2 of Peacock stored the peacock color in a memento. Version 3 of Peacock stores the color in the settings. If the v2 memento exists, Peacock gets the color, removes the memento, and writes the color to the settings. Fixes #230

Features

  • Commands
    • Copy the Current Color to the Clipboard - Shows the current color and copies it to the clipboard
      • This command can be executed from the command palette or by clicking the statusBar item for peacock's color
    • Peacock: Reset Workspace Colors - Removes any of the color settings from the .vscode/settings.json file. If colors exist in the user settings, they may be applied
      • This used be named Peacock: Reset Colors and was renamed for clarity
    • Peacock: Remove All Global and Workspace Colors - Removes all of the color settings from both the Workspace .vscode/settings.json file and the Global user settings.json file.

New Settings

  • Removed remote colors and live share colors from mementos and instead created user settings for these. Mementos are best for values the user cant see, while settings make it easier for the user to see them and modify them directly. This feels right for these colors.

  • Peacock now separates when colors will be applied (workspace color customizations) from when the peacock.color is saved. When a user applies Peacock colors, applyColor is called and we also update peacock.color. When the color just needs to be applied, but not written, we just called applyColor.

  • New settings are as follows:

    • peacock.color - The Peacock color that will be applied to workspaces

      • currently selected local color. this replaced the workspace memento for the current/recent color, which may solve reported problems with mysterious colors changing (because workspace settings are visible, get removed by peacock commands, and users can manually edit them).
    • peacock.remoteColor - The Peacock color that will be applied to remote workspaces

      • currently selected remote color. color for all types of remote environments (ssh, wsl, containers). this consolidates the 3 into 1.
    • peacock.vslsShareColor - Peacock color for Live Share Hosting

    • peacock.vslsJoinColor - Peacock color for Live Share Joining

Breaking Changes

  • Remove commands for remotes as we now just use the other commands to change the color while you are in a remote.
    • Change Remote Color (SSH) - prompts user to select a color for the SSH remote context from the Favorites
    • Change Remote Color (Containers) - prompts user to select a color for the Containers remote context from the Favorites
    • Change Remote Color (WSL) - prompts user to select a color for the WSL remote context from the Favorites
  • Remove the existing current color memento (replace with peacock.color)
  • Remove the existing remote color settings/mementos (replace with peacock.remoteColor)

DevOps

Bug Fixes

  • When trying the favorites out in the quick pick list, continually selecting a new one, but not selecting one, Peacock would start looping thru colors in a rapid fashion and never stop. This has been corrected.
  • Peacock used to copy any extra workbench.colorCustomizations in the global user settings.json to the workspace, because the get configuration API in vs code get a merged set of settings. This has been refactored to only get the colors that are in the workspace and the Peacock uses. This now uses read-configuration.ts's getColorCustomizationConfigFromWorkspace function

Peacock 3.0.0-rc.3

Peacock 3.0.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@johnpapa johnpapa released this 30 Jul 14:43

3.0.0-rc.3

Load this by pressing F1 and choosing "Extensions: Install from VSIX" from the vs code command palette and choosing the file below

Features

  • Commands
    • Copy the Current Color to the Clipboard - Shows the current color and copies it to the clipboard
      • This command can be executed from the command palette or by clicking the statusBar item for peacock's color
    • Peacock: Reset Workspace Colors - Removes any of the color settings from the .vscode/settings.json file. If colors exist in the user settings, they may be applied
      • This used be named Peacock: Reset Colors and was renamed for clarity
    • Peacock: Remove All Global and Workspace Colors - Removes all of the color settings from both the Workspace .vscode/settings.json file and the Global user settings.json file.

New Settings

  • Removed remote colors and live share colors from mementos and instead created user settings for these. Mementos are best for values the user cant see, while settings make it easier for the user to see them and modify them directly. This feels right for these colors.

  • Peacock now separates when colors will be applied (workspace color customizations) from when the peacock.color is saved. When a user applies Peacock colors, applyColor is called and we also update peacock.color. When the color just needs to be applied, but not written, we just called applyColor.

  • New settings are as follows:

    • peacock.color - The Peacock color that will be applied to workspaces

      • currently selected local color. this replaced the workspace memento for the current/recent color, which may solve reported problems with mysterious colors changing (because workspace settings are visible, get removed by peacock commands, and users can manually edit them).
    • peacock.remoteColor - The Peacock color that will be applied to remote workspaces

      • currently selected remote color. color for all types of remote environments (ssh, wsl, containers). this consolidates the 3 into 1.
    • peacock.vslsShareColor - Peacock color for Live Share Hosting

    • peacock.vslsJoinColor - Peacock color for Live Share Joining

Breaking Changes

  • Remove commands for remotes as we now just use the other commands to change the color while you are in a remote.
    • Change Remote Color (SSH) - prompts user to select a color for the SSH remote context from the Favorites
    • Change Remote Color (Containers) - prompts user to select a color for the Containers remote context from the Favorites
    • Change Remote Color (WSL) - prompts user to select a color for the WSL remote context from the Favorites
  • Remove the existing current color memento (replace with peacock.color)
  • Remove the existing remote color settings/mementos (replace with peacock.remoteColor)

DevOps

Bug Fixes

  • When trying the favorites out in the quick pick list, continually selecting a new one, but not selecting one, Peacock would start looping thru colors in a rapid fashion and never stop. This has been corrected.
  • Peacock used to copy any extra workbench.colorCustomizations in the global user settings.json to the workspace, because the get configuration API in vs code get a merged set of settings. This has been refactored to only get the colors that are in the workspace and the Peacock uses. This now uses read-configuration.ts's getColorCustomizationConfigFromWorkspace function

Peacock 3.0.0-rc.2

Peacock 3.0.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@johnpapa johnpapa released this 29 Jul 22:04

3.0.0-rc.2

Features

  • New Commands
    • Copy the Current Color to the Clipboard - Shows the current color and copies it to the clipboard
      • This command can be executed from the command palette or by clicking the statusBar item for peacock's color

New Settings

  • Removed remote colors and live share colors from mementos and instead created user settings for these. Mementos are best for values the user cant see, while settings make it easier for the user to see them and modify them directly. This feels right for these colors.

  • Peacock now separates when colors will be applied (workspace color customizations) from when the peacock.color is saved. When a user applies Peacock colors, applyColor is called and we also update peacock.color. When the color just needs to be applied, but not written, we just called applyColor.

  • New settings are as follows:

    • peacock.color - The Peacock color that will be applied to workspaces

      • currently selected local color. this replaced the workspace memento for the current/recent color, which may solve reported problems with mysterious colors changing (because workspace settings are visible, get removed by peacock commands, and users can manually edit them).
  • peacock.remoteColor - The Peacock color that will be applied to remote workspaces

    • currently selected remote color. color for all types of remote environments (ssh, wsl, containers). this consolidates the 3 into 1.
  • peacock.vslsShareColor - Peacock color for Live Share Hosting

  • peacock.vslsJoinColor - Peacock color for Live Share Joining

Breaking Changes

  • Remove commands for remotes as we now just use the other commands to change the color while you are in a remote.
    • Change Remote Color (SSH) - prompts user to select a color for the SSH remote context from the Favorites
    • Change Remote Color (Containers) - prompts user to select a color for the Containers remote context from the Favorites
    • Change Remote Color (WSL) - prompts user to select a color for the WSL remote context from the Favorites
  • Remove the existing current color memento (replace with peacock.color)
  • Remove the existing remote color settings/mementos (replace with peacock.remoteColor)

DevOps

Bug Fixes

  • When trying the favorites out in the quick pick list, continually selecting a new one, but not selecting one, Peacock would start looping thru colors in a rapid fashion and never stop. This has been corrected.

Peacock 3.0.0-rc.1

Peacock 3.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@johnpapa johnpapa released this 29 Jul 02:54

3.0.0-rc.1

Features

  • New Commands
    • Copy the Current Color to the Clipboard - Shows the current color and copies it to the clipboard
      • This command can be executed from the command palette or by clicking the statusBar item for peacock's color

New scenario documentation

  • To help get a better handle on how Peacock behaves, a new scenarios document has been added.

New Settings

  • Removed remote colors and live share colors from mementos and instead created user settings for these. Mementos are best for values the user cant see, while settings make it easier for the user to see them and modify them directly. This feels right for these colors.

  • Peacock now separates when colors will be applied (workspace color customizations) from when the peacock.color is saved. When a user applies Peacock colors, applyColor is called and we also update peacock.color. When the color just needs to be applied, but not written, we just called applyColor.

  • New settings are as follows:

    • peacock.color - The Peacock color that will be applied to workspaces

      • currently selected local color. this replaced the workspace memento for the current/recent color, which may solve reported problems with mysterious colors changing (because workspace settings are visible, get removed by peacock commands, and users can manually edit them).
  • peacock.remoteColor - The Peacock color that will be applied to remote workspaces

    • currently selected remote color. color for all types of remote environments (ssh, wsl, containers). this consolidates the 3 into 1.
  • peacock.vslsShareColor - Peacock color for Live Share Hosting

  • peacock.vslsJoinColor - Peacock color for Live Share Joining

Breaking Changes

  • Remove commands for remotes as we now just use the other commands to change the color while you are in a remote.
    • Change Remote Color (SSH) - prompts user to select a color for the SSH remote context from the Favorites
    • Change Remote Color (Containers) - prompts user to select a color for the Containers remote context from the Favorites
    • Change Remote Color (WSL) - prompts user to select a color for the WSL remote context from the Favorites
  • Remove the existing current color memento (replace with peacock.color)
  • Remove the existing remote color settings/mementos (replace with peacock.remoteColor)

DevOps

Bug Fixes

  • When trying the favorites out in the quick pick list, continually selecting a new one, but not selecting one, Peacock would start looping thru colors in a rapid fashion and never stop. This has been corrected.

Peacock 2.5.0-rc1

Peacock 2.5.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@johnpapa johnpapa released this 11 Jul 01:48

Load this by pressing F1 and choosing "Extensions: Install from VSIX" from the vs code command palette and choosing the file below vscode-peacock-2.5.0.vsix

2.5.0

Features

  • Peacock now detects when the VS Code Remote extension is installed and adds commands that allow the user to change color depending on the remote context (container, ssh, wsl).
    • added Change Remote Color (SSH) to commands. Prompts user to select a color for the SSH remote context from the Favorites
    • added Change Remote Color (Containers) to commands. Prompts user to select a color for the Containers remote context from the Favorites
    • added Change Remote Color (WSL) to commands. Prompts user to select a color for the WSL remote context from the Favorites
  • added tests for remote features
  • Created a new setting for surpriseMeFromFavoritesOnly. Defaults to false for backwards compatibility.
    • When false, a color is chosen purely randomly.
    • When true, a favorite color is selected randomly
  • Added more logging to the output of mementos and favorites
  • Added informational message on startup if "surprise me on startup" is set. One if the color is changed. A different message if the color was not changed because one already existed.

Security

  • Bumped lodash version #195

Refactoring

  • Created a mementos.ts file with mento functions for getting and saving mementos. This consolidates some of the code Peacock has for mementos
  • Created constants for the peacock core mementos, the vsls mementos, and the remote mementos. Each are in their respective folders and modules
  • Created a npm script for test-all which compiles and tests all 3 main test groups. Note that that CI only runs the npm script for test which covers the core tests only due to remote and vsls not working under test in CI currently
    • core peacock tests (currently 86)
    • peacock vsls tests (currently 8)
    • peacock remote tests (currently 7)
  • Recent Color State vs Peacock Color Memento
    • Recent Color is the most recently used color.
    • If you want the original Peacock color, then use getPeacockColorMemento() in mementos.ts
    • Example:
      • Peacock may be using #fff and Peacock Remote is using #000.
      • When using remote, recent color may represent
      • the remote color #000 while the memento will always be the original #fff
  • Split the setup and teardown calls out to make them easier to read.
  • Fix places where async/await calls were being used incorrectly
  • Created a timeout function constant for use in tests
  • Moved the extension context state to the State static class
  • All commands now return extension context for use in tests
  • Made getRandomFavoriteColor not return same color as the current color

Peacock 1.2.1

Choose a tag to compare

@johnpapa johnpapa released this 12 Mar 03:10
v1.2.1

switched linux to try both node 8 and 10. fixed he mac job so it make…