From e818f79c424e44125aea96705f67b5f6470512be Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 01/32] =?UTF-8?q?docs(claude-dev):=20=F0=9F=93=9D=20mentio?= =?UTF-8?q?n=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/claude-dev/README.md | 7 +++++++ src/claude-dev/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/claude-dev/README.md b/src/claude-dev/README.md index e08d77d..2dbd041 100644 --- a/src/claude-dev/README.md +++ b/src/claude-dev/README.md @@ -5,6 +5,11 @@ across supported editors and persists `~/.claude` (credentials, config, memory) across every devcontainer rebuild — including GitHub Codespaces — via a Docker named volume. Optionally installs the `claude` CLI too. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Example Usage ```jsonc @@ -87,6 +92,8 @@ without depending on that user's shell profile already including ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/claude-dev/devcontainer-feature.json b/src/claude-dev/devcontainer-feature.json index 0d14730..77ece88 100644 --- a/src/claude-dev/devcontainer-feature.json +++ b/src/claude-dev/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "claude-dev", - "version": "1.1.0", + "version": "1.2.0", "name": "Claude Code Development Environment", - "description": "Installs the Claude Code IDE extension (anthropic.claude-code) for VS Code and Cursor, and optionally the claude CLI. Persists ~/.claude (credentials, config, memory) across rebuilds and Codespaces via a Docker named volume, shared per host OS user.", + "description": "Installs the Claude Code IDE extension (anthropic.claude-code) for VS Code and Cursor, and optionally the claude CLI. Persists ~/.claude (credentials, config, memory) across rebuilds and Codespaces via a Docker named volume, shared per host OS user. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/claude-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": [ From 7726a0c423b088b55e16a883042edb7c574c5fec Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 02/32] =?UTF-8?q?docs(mistral-dev):=20=F0=9F=93=9D=20menti?= =?UTF-8?q?on=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/mistral-dev/README.md | 7 +++++++ src/mistral-dev/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mistral-dev/README.md b/src/mistral-dev/README.md index 6865066..fff7943 100644 --- a/src/mistral-dev/README.md +++ b/src/mistral-dev/README.md @@ -6,6 +6,11 @@ by Mistral out of the box. Credentials and configuration persist in a Docker named volume linked into the container — they survive all rebuilds, including `--no-cache`, and GitHub Codespaces. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Example Usage ```jsonc @@ -94,6 +99,8 @@ When `installCli: true`, the `vibe` command is installed at build time via `uv` ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/mistral-dev/devcontainer-feature.json b/src/mistral-dev/devcontainer-feature.json index 11c957e..223470e 100644 --- a/src/mistral-dev/devcontainer-feature.json +++ b/src/mistral-dev/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "mistral-dev", - "version": "1.1.0", + "version": "1.2.0", "name": "Mistral Vibe Development Environment", - "description": "Installs the Mistral Vibe IDE extension (mistralai.mistral-vibe-code) for VS Code and Cursor. Persists ~/.vibe (credentials, config) across rebuilds and Codespaces via a Docker named volume, shared per host OS user.", + "description": "Installs the Mistral Vibe IDE extension (mistralai.mistral-vibe-code) for VS Code and Cursor. Persists ~/.vibe (credentials, config) across rebuilds and Codespaces via a Docker named volume, shared per host OS user. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/mistral-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": [ From 67d2da9a40322266591f16867f9e157f9e4b1ec5 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 03/32] =?UTF-8?q?docs(git-absorb):=20=F0=9F=93=9D=20mentio?= =?UTF-8?q?n=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/git-absorb/README.md | 7 +++++++ src/git-absorb/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/git-absorb/README.md b/src/git-absorb/README.md index e03f6d4..c50aa91 100644 --- a/src/git-absorb/README.md +++ b/src/git-absorb/README.md @@ -2,6 +2,11 @@ This DevContainer feature installs [git-absorb](https://github.com/tummychow/git-absorb), a tool that automatically absorbs staged changes into their logical commits. It's like `git commit --fixup` but automatic. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **Automatic fixup commits**: Absorbs staged changes into existing commits automatically @@ -149,6 +154,8 @@ This feature is part of the `helpers4/devcontainer-features` repository. Contrib ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/git-absorb/devcontainer-feature.json b/src/git-absorb/devcontainer-feature.json index 261fb6d..63c98b8 100644 --- a/src/git-absorb/devcontainer-feature.json +++ b/src/git-absorb/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "git-absorb", - "version": "1.1.0", + "version": "1.2.0", "name": "git absorb — Automatic Fixup Commits", - "description": "Installs git-absorb, a tool to automatically absorb staged changes into their logical commits. Like 'git commit --fixup' but automatic.", + "description": "Installs git-absorb, a tool to automatically absorb staged changes into their logical commits. Like 'git commit --fixup' but automatic. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/git-absorb", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "git", "absorb", "commits"], From 827dd19464559da97ed235b2118945018cc18a50 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 04/32] =?UTF-8?q?docs(auto-header):=20=F0=9F=93=9D=20menti?= =?UTF-8?q?on=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/auto-header/README.md | 7 +++++++ src/auto-header/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/auto-header/README.md b/src/auto-header/README.md index 45a3713..ca50178 100644 --- a/src/auto-header/README.md +++ b/src/auto-header/README.md @@ -2,6 +2,11 @@ Automatically configures VS Code with customizable file headers based on your project's license, company, and team information. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features ✨ **Two header styles**: @@ -267,6 +272,8 @@ Licensed under LGPL-3.0 - see LICENSE file for details ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/auto-header/devcontainer-feature.json b/src/auto-header/devcontainer-feature.json index 18cdc12..a26cde1 100644 --- a/src/auto-header/devcontainer-feature.json +++ b/src/auto-header/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "auto-header", - "version": "1.1.0", + "version": "1.2.0", "name": "Automatic File Headers", - "description": "Automatically configures VS Code file headers with customizable templates based on project, license, company, and contributors information.", + "description": "Automatically configures VS Code file headers with customizable templates based on project, license, company, and contributors information. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/auto-header", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "license", "header", "lgpl", "copyright"], From 62b5df7c14370b22d90d87ff0ccc21a517dfb0dc Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 05/32] =?UTF-8?q?docs(vite-plus):=20=F0=9F=93=9D=20mention?= =?UTF-8?q?=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/vite-plus/README.md | 7 +++++++ src/vite-plus/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vite-plus/README.md b/src/vite-plus/README.md index c84229f..fa72d04 100644 --- a/src/vite-plus/README.md +++ b/src/vite-plus/README.md @@ -2,6 +2,11 @@ Complete Vite+ unified toolchain setup with the `vp` CLI, integrating Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and Vite Task into a single development experience with VS Code extensions pre-configured. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **Vite+ CLI (`vp`)**: Unified toolchain installed via the official installer @@ -268,6 +273,8 @@ Run `vp migrate` in your project root or see the [migration guide](https://vitep ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/vite-plus/devcontainer-feature.json b/src/vite-plus/devcontainer-feature.json index 7979763..7b09bd1 100644 --- a/src/vite-plus/devcontainer-feature.json +++ b/src/vite-plus/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "vite-plus", - "version": "1.1.0", + "version": "1.2.0", "name": "Vite+ Development Environment", - "description": "Complete Vite+ unified toolchain setup (vp) with Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and VS Code integration.", + "description": "Complete Vite+ unified toolchain setup (vp) with Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and VS Code integration. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/vite-plus", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "vite", "vitest", "oxc", "typescript"], From 9d71581ada64c65d0f2b959b4d86c85f27c2d035 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 06/32] =?UTF-8?q?docs(peon-ping):=20=F0=9F=93=9D=20mention?= =?UTF-8?q?=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/peon-ping/README.md | 7 +++++++ src/peon-ping/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/peon-ping/README.md b/src/peon-ping/README.md index 14c9cb3..a0207e2 100644 --- a/src/peon-ping/README.md +++ b/src/peon-ping/README.md @@ -4,6 +4,11 @@ Installs [peon-ping](https://peonping.com/) and the [Peon Pet](https://marketpla Supports **Claude Code**, **GitHub Copilot**, **Cursor**, **OpenAI Codex**, and [many more IDEs](https://github.com/PeonPing/peon-ping#multi-ide-support). +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **Sound notifications**: Warcraft, StarCraft, Portal, Zelda and 165+ sound packs @@ -199,6 +204,8 @@ peon packs list # List installed packs ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/peon-ping/devcontainer-feature.json b/src/peon-ping/devcontainer-feature.json index 5f06daf..04b49e2 100644 --- a/src/peon-ping/devcontainer-feature.json +++ b/src/peon-ping/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "peon-ping", - "version": "1.1.0", + "version": "1.2.0", "name": "Peon Ping — AI Agent Sound Notifications", - "description": "Installs peon-ping and the Peon Pet VS Code extension for game character voice notifications when your AI coding agent finishes or needs permission. Supports VS Code/Copilot, Cursor, and Codex with audio relay for devcontainers.", + "description": "Installs peon-ping and the Peon Pet VS Code extension for game character voice notifications when your AI coding agent finishes or needs permission. Supports VS Code/Copilot, Cursor, and Codex with audio relay for devcontainers. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/peon-ping", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "peon", "audio", "notifications", "ai"], From 671acb23fb531dc4c55c67f949cbde0de2d28305 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 07/32] =?UTF-8?q?docs(angular-dev):=20=F0=9F=93=9D=20menti?= =?UTF-8?q?on=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/angular-dev/README.md | 7 +++++++ src/angular-dev/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/angular-dev/README.md b/src/angular-dev/README.md index e9b13ba..d609cee 100644 --- a/src/angular-dev/README.md +++ b/src/angular-dev/README.md @@ -2,6 +2,11 @@ Angular-specific development environment with VS Code extensions and CLI autocompletion. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **VS Code extensions**: Essential Angular development extensions pre-installed @@ -166,6 +171,8 @@ If `ng` command is not available: ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/angular-dev/devcontainer-feature.json b/src/angular-dev/devcontainer-feature.json index 995b4d0..973edef 100644 --- a/src/angular-dev/devcontainer-feature.json +++ b/src/angular-dev/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "angular-dev", - "version": "1.1.0", + "version": "1.2.0", "name": "Angular Development Environment", - "description": "Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion.", + "description": "Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/angular-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "angular", "typescript", "cli"], From 14624daaa42d50050cf81f665ef421a5f32a09a7 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 08/32] =?UTF-8?q?docs(pnpm-store):=20=F0=9F=93=9D=20mentio?= =?UTF-8?q?n=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/pnpm-store/README.md | 7 +++++++ src/pnpm-store/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/pnpm-store/README.md b/src/pnpm-store/README.md index f19b208..9938e20 100644 --- a/src/pnpm-store/README.md +++ b/src/pnpm-store/README.md @@ -4,6 +4,11 @@ Shares a single [pnpm](https://pnpm.io) content-addressable store across **every repo and across rebuilds** via a Docker **named volume**, so no stray `.pnpm-store` folders pollute your repos. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Why a named volume? A named volume is created automatically by Docker, so the feature is fully @@ -68,6 +73,8 @@ to ensure it runs before `pnpm-store`. ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/pnpm-store/devcontainer-feature.json b/src/pnpm-store/devcontainer-feature.json index e1f5b96..39d6d43 100644 --- a/src/pnpm-store/devcontainer-feature.json +++ b/src/pnpm-store/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "pnpm-store", - "version": "1.1.0", + "version": "1.2.0", "name": "pnpm Store (shared)", - "description": "Shares a single pnpm content-addressable store across every repo and across rebuilds via a Docker named volume, so no stray .pnpm-store folders pollute your repos. Zero-config and autonomous: the volume is created automatically, with no host directory to pre-create.", + "description": "Shares a single pnpm content-addressable store across every repo and across rebuilds via a Docker named volume, so no stray .pnpm-store folders pollute your repos. Zero-config and autonomous: the volume is created automatically, with no host directory to pre-create. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/pnpm-store", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "pnpm", "store", "cache"], From 1e29c3612963f38f32844c985cb1f3e1e9846769 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 09/32] =?UTF-8?q?docs(playwright-dev):=20=F0=9F=93=9D=20me?= =?UTF-8?q?ntion=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/playwright-dev/README.md | 7 +++++++ src/playwright-dev/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/playwright-dev/README.md b/src/playwright-dev/README.md index 923dca5..3e9b7ef 100644 --- a/src/playwright-dev/README.md +++ b/src/playwright-dev/README.md @@ -2,6 +2,11 @@ OS-level dependencies for headless Chromium, Firefox, and WebKit, a browser-binary cache shared across rebuilds via a Docker named volume, and the official Playwright Test VS Code extension — pre-configured so `npx playwright test` and `npx playwright install` just work, without re-downloading browsers on every rebuild. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Why this feature exists Headless browser automation (Playwright, and anything built on Chromium's DevTools Protocol — including `WebAuthn.addVirtualAuthenticator`, useful for testing passkey/WebAuthn flows without physical hardware) needs a real browser binary plus a long list of OS shared libraries. `npx playwright install --with-deps` can fetch both, but: @@ -142,6 +147,8 @@ npx playwright install ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/playwright-dev/devcontainer-feature.json b/src/playwright-dev/devcontainer-feature.json index 93735b1..bf89abf 100644 --- a/src/playwright-dev/devcontainer-feature.json +++ b/src/playwright-dev/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "playwright-dev", - "version": "1.1.0", + "version": "1.2.0", "name": "Playwright Development Environment", - "description": "Playwright E2E/browser-automation toolchain: OS-level dependencies for headless Chromium, Firefox, and WebKit (via the official `playwright install-deps`), a browser-binary cache shared across rebuilds through a Docker named volume, and the official Playwright Test VS Code extension.", + "description": "Playwright E2E/browser-automation toolchain: OS-level dependencies for headless Chromium, Firefox, and WebKit (via the official `playwright install-deps`), a browser-binary cache shared across rebuilds through a Docker named volume, and the official Playwright Test VS Code extension. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/playwright-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "playwright", "e2e", "chromium", "firefox", "webkit", "testing", "webauthn"], From fc3d219efe93c5a9451258b7a840fbce2bd52289 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 10/32] =?UTF-8?q?docs(package-auto-install):=20?= =?UTF-8?q?=F0=9F=93=9D=20mention=20helpers4-common's=20automatic=20git-co?= =?UTF-8?q?nfig=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/package-auto-install/README.md | 7 +++++++ src/package-auto-install/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/package-auto-install/README.md b/src/package-auto-install/README.md index a1f8dd5..1963062 100644 --- a/src/package-auto-install/README.md +++ b/src/package-auto-install/README.md @@ -2,6 +2,11 @@ Automatically detects and runs npm/yarn/pnpm install in non-interactive mode after container creation. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **Automatic detection**: Detects package manager based on lockfile (pnpm-lock.yaml, yarn.lock, package-lock.json) @@ -240,6 +245,8 @@ You can manually run the installation script: ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/package-auto-install/devcontainer-feature.json b/src/package-auto-install/devcontainer-feature.json index 1faca8a..36f6b3a 100644 --- a/src/package-auto-install/devcontainer-feature.json +++ b/src/package-auto-install/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "package-auto-install", - "version": "1.1.0", + "version": "1.2.0", "name": "Automatic Package Installation", - "description": "Automatically detects and runs npm/yarn/pnpm/nub install in non-interactive mode after container creation.", + "description": "Automatically detects and runs npm/yarn/pnpm/nub install in non-interactive mode after container creation. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/package-auto-install", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "pnpm", "npm", "yarn", "nub", "install"], From e96d4d0b3399bee61a876be09c3d2b2f5af7a095 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 11/32] =?UTF-8?q?docs(shell-history-per-project):=20?= =?UTF-8?q?=F0=9F=93=9D=20mention=20helpers4-common's=20automatic=20git-co?= =?UTF-8?q?nfig=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/shell-history-per-project/README.md | 7 +++++++ src/shell-history-per-project/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/shell-history-per-project/README.md b/src/shell-history-per-project/README.md index 0b2cca9..af3dfe2 100644 --- a/src/shell-history-per-project/README.md +++ b/src/shell-history-per-project/README.md @@ -2,6 +2,11 @@ This DevContainer feature provides shell history persistence per project by mounting a shell directory and creating symbolic links internally. This ensures that your shell history is preserved across container rebuilds and is isolated per project. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **Per-project history isolation**: Each project maintains its own shell history @@ -136,6 +141,8 @@ This feature is part of the `helpers4/devcontainer-features` repository. Contrib ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/shell-history-per-project/devcontainer-feature.json b/src/shell-history-per-project/devcontainer-feature.json index 827cd7e..ed8bf88 100644 --- a/src/shell-history-per-project/devcontainer-feature.json +++ b/src/shell-history-per-project/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "shell-history-per-project", - "version": "1.1.0", + "version": "1.2.0", "name": "Shell History Per Project", - "description": "Persist shell history per project by automatically detecting and configuring all available shells (zsh, bash, fish). Supports auto-detection or manual shell selection.", + "description": "Persist shell history per project by automatically detecting and configuring all available shells (zsh, bash, fish). Supports auto-detection or manual shell selection. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/shell-history-per-project", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "shell", "history", "zsh", "bash"], From 4f8789907d38be1fd0dd15388629872f4c62afba Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:09 +0000 Subject: [PATCH 12/32] =?UTF-8?q?docs(nub):=20=F0=9F=93=9D=20mention=20hel?= =?UTF-8?q?pers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This was previously only documented on helpers4-common's own README, undiscoverable for anyone using this feature without also knowing to look there. Version bumped to 1.2.0 to mark that this feature's users now know about a capability that was already silently included. Co-Authored-By: Claude Sonnet 5 --- src/nub/README.md | 7 +++++++ src/nub/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/nub/README.md b/src/nub/README.md index 64a0ba0..46311e2 100644 --- a/src/nub/README.md +++ b/src/nub/README.md @@ -2,6 +2,11 @@ Installs [nub](https://nubjs.com/): a single Rust binary that runs TypeScript/JavaScript files, `package.json` scripts, and local CLIs directly on top of the Node.js and package manager already in the container — no new runtime, no lock-in. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Why this feature exists nub is explicitly **not a replacement runtime**: "runs on the node and package manager you already have." It accelerates three things that are normally slow because of Node's own CLI-wrapper overhead: @@ -61,6 +66,8 @@ No VS Code extension — nub doesn't have one. This feature is CLI tooling only. ## Version History +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) now comes along with this feature. - **v1.1.0**: Switched from an inline copy of `helpers4-common`'s bootstrap (user detection, apt helpers) to a direct `dependsOn` on the `helpers4-common` feature — no behavior change, just a single source of truth for that logic instead of a copy every feature had to keep in sync. diff --git a/src/nub/devcontainer-feature.json b/src/nub/devcontainer-feature.json index e3290a7..bcd2046 100644 --- a/src/nub/devcontainer-feature.json +++ b/src/nub/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "nub", - "version": "1.1.0", + "version": "1.2.0", "name": "Nub — Fast TypeScript/Node Toolchain", - "description": "Installs nub (nubjs.com): a Rust binary that runs TypeScript/JavaScript files, package.json scripts, and local CLIs directly on the Node.js and package manager already in the container — no new runtime, no lock-in. Does not manage Node versions itself (dependsOn the official node feature), so it never competes with this container's own version-selection mechanism.", + "description": "Installs nub (nubjs.com): a Rust binary that runs TypeScript/JavaScript files, package.json scripts, and local CLIs directly on the Node.js and package manager already in the container — no new runtime, no lock-in. Does not manage Node versions itself (dependsOn the official node feature), so it never competes with this container's own version-selection mechanism. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/nub", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "nub", "node", "typescript", "package-manager", "cli"], From 4e8469b2e90007127b136bbc3020c7b4f3277220 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:17 +0000 Subject: [PATCH 13/32] =?UTF-8?q?docs(essential-dev):=20=F0=9F=93=9D=20men?= =?UTF-8?q?tion=20helpers4-common's=20automatic=20git-config=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. essential-dev already depended on helpers4-common directly (it predates the repo-wide dependsOn migration, so it never got a bump for that), but never mentioned this capability in its own README. Also adds a Version History section — this feature never had one. Co-Authored-By: Claude Sonnet 5 --- src/essential-dev/README.md | 10 ++++++++++ src/essential-dev/devcontainer-feature.json | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/essential-dev/README.md b/src/essential-dev/README.md index 9bd5385..29f7653 100644 --- a/src/essential-dev/README.md +++ b/src/essential-dev/README.md @@ -2,6 +2,11 @@ Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. Perfect base for all development projects. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Features - **Git Integration**: History, graph visualization, PR support, conventional commits @@ -118,3 +123,8 @@ All shells are automatically detected and configured when available. **Testing** - Vitest - Use `vite-plus` feature instead + +## Version History + +- **v1.1.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) comes along with this feature. diff --git a/src/essential-dev/devcontainer-feature.json b/src/essential-dev/devcontainer-feature.json index df6cc08..4a59d9d 100644 --- a/src/essential-dev/devcontainer-feature.json +++ b/src/essential-dev/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "essential-dev", - "version": "1.0.9", + "version": "1.1.0", "name": "Essential Development Environment", - "description": "Core development environment with Git visualization, Markdown support, and essential editor enhancements.", + "description": "Core development environment with Git visualization, Markdown support, and essential editor enhancements. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/essential-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "git", "editor", "markdown", "essential"], From bc484710e46f76230ba6aee9f61a12a3432d430c Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:28 +0000 Subject: [PATCH 14/32] =?UTF-8?q?docs(bitwarden-secrets-manager):=20?= =?UTF-8?q?=F0=9F=93=9D=20mention=20helpers4-common's=20automatic=20git-co?= =?UTF-8?q?nfig=20self-heal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change — every helpers4 feature depends on helpers4-common, which repairs a stale credential.helper or a missing SSH commit-signing key in ~/.gitconfig on every attach. This feature already depended on helpers4-common from its own first release, but never mentioned this capability in its own README. Also adds this feature's first Version History entry. Co-Authored-By: Claude Sonnet 5 --- src/bitwarden-secrets-manager/README.md | 11 +++++++++++ .../devcontainer-feature.json | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/bitwarden-secrets-manager/README.md b/src/bitwarden-secrets-manager/README.md index f8c0e1c..eb5cb5e 100644 --- a/src/bitwarden-secrets-manager/README.md +++ b/src/bitwarden-secrets-manager/README.md @@ -4,6 +4,11 @@ This DevContainer feature installs [`bws`](https://github.com/bitwarden/sdk-sm), This is deliberately **not** a general Bitwarden feature: it installs `bws` (Secrets Manager) only, not `bw` (the password-vault CLI, which needs an interactive login/session model this feature doesn't address). If you need the vault CLI, look for a dedicated `bw` feature instead. +> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale +> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container +> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature +> pulls it in. + ## Usage Add this feature to your `devcontainer.json`, and pass your Secrets Manager machine account access token through as an environment variable: @@ -46,3 +51,9 @@ Set `BWS_ACCESS_TOKEN` via `containerEnv`/`remoteEnv` (sourced from a host env v The binary is downloaded straight from the matching `bws--unknown-linux-musl-.zip` GitHub release asset, its SHA-256 checksum verified against Bitwarden's own published checksums file, then extracted to `/usr/local/bin/bws`. The musl build is used (statically linked) so it runs regardless of the base image's libc. Supported architectures: `x86_64` and `aarch64`/`arm64` (e.g. Oracle Cloud Ampere A1). This feature only ever runs inside the Linux container being built — never on the host — so unlike `bws`'s own multi-OS releases, there's no Darwin/Windows case to detect here. + +## Version History + +- **v1.1.0**: Documentation only, no functional change — mentions that `helpers4-common`'s + automatic git-config self-heal (see above) comes along with this feature. +- **v1.0.0**: Initial release. diff --git a/src/bitwarden-secrets-manager/devcontainer-feature.json b/src/bitwarden-secrets-manager/devcontainer-feature.json index 0bc14d6..c447240 100644 --- a/src/bitwarden-secrets-manager/devcontainer-feature.json +++ b/src/bitwarden-secrets-manager/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "bitwarden-secrets-manager", - "version": "1.0.0", + "version": "1.1.0", "name": "Bitwarden Secrets Manager CLI", - "description": "Installs bws, the official Bitwarden Secrets Manager CLI, from bitwarden/sdk-sm GitHub releases. Non-interactive, machine-account-token auth only (BWS_ACCESS_TOKEN) — no vault login, no persisted state, no bind mounts.", + "description": "Installs bws, the official Bitwarden Secrets Manager CLI, from bitwarden/sdk-sm GitHub releases. Non-interactive, machine-account-token auth only (BWS_ACCESS_TOKEN) — no vault login, no persisted state, no bind mounts. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/bitwarden-secrets-manager", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "bitwarden", "bws", "secrets", "secrets-manager"], From 82d56478ffc6efb6f38046fbcf9511e3d970ef75 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:36 +0000 Subject: [PATCH 15/32] =?UTF-8?q?docs(dotfiles-sync):=20=F0=9F=93=9D=20men?= =?UTF-8?q?tion=20helpers4-common's=20automatic=20git-config=20self-heal?= =?UTF-8?q?=20in=20the=20description?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation only, no functional change. This feature's README already documented the self-heal relationship in detail (the "Recommended" note on copyGitConfig, added alongside the v1.1.0 functional change) — this just adds the same short mention to the compact JSON description, for consistency with every other helpers4-common consumer's description. Co-Authored-By: Claude Sonnet 5 --- src/dotfiles-sync/README.md | 3 +++ src/dotfiles-sync/devcontainer-feature.json | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dotfiles-sync/README.md b/src/dotfiles-sync/README.md index f70a814..165ca45 100644 --- a/src/dotfiles-sync/README.md +++ b/src/dotfiles-sync/README.md @@ -303,6 +303,9 @@ ssh-add -l ## Version History +- **v1.2.0**: Documentation only, no functional change — description now mentions + `helpers4-common`'s automatic git-config self-heal alongside the existing "Recommended" note + above. - **v1.1.0**: SSH private/public key file copying is now opt-in (`syncSshKeys`, default `false`) — `~/.ssh/config` and `known_hosts` still always sync (agent forwarding doesn't provide either), but actual key files no longer land on the container's filesystem unless explicitly diff --git a/src/dotfiles-sync/devcontainer-feature.json b/src/dotfiles-sync/devcontainer-feature.json index e0f312e..a2321df 100644 --- a/src/dotfiles-sync/devcontainer-feature.json +++ b/src/dotfiles-sync/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "dotfiles-sync", - "version": "1.1.0", + "version": "1.2.0", "name": "Dotfiles Sync", - "description": "Syncs local Git, SSH, GPG, npm, yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) and SSH private key files — opt-in only. Works on macOS, Linux, Windows (WSL), Codespaces, Gitpod, DevPod. Merges instead of overwriting.", + "description": "Syncs local Git, SSH, GPG, npm, yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) and SSH private key files — opt-in only. Works on macOS, Linux, Windows (WSL), Codespaces, Gitpod, DevPod. Merges instead of overwriting. Also includes helpers4's automatic git-config self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/dotfiles-sync", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "dotfiles", "git", "ssh", "sync"], From 88fc6b277f3e0636f3b1099e66160c3eb9d5c62e Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 6 Sep 2026 22:17:47 +0000 Subject: [PATCH 16/32] =?UTF-8?q?docs(CI-CD):=20=F0=9F=93=9D=20update=20fe?= =?UTF-8?q?ature=20table=20versions=20for=20the=20self-heal=20mention=20re?= =?UTF-8?q?lease?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 15 features that dependsOn helpers4-common bumped and documented in the same pass — see each feature's own commit for its specific version bump. Co-Authored-By: Claude Sonnet 5 --- AGENTS.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 531d2f1..d998fb5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -28,25 +28,25 @@ devcontainer features test . | Feature | Ver | Description | | ------- | --- | ----------- | | `helpers4-common` | 1.1.0 | Bootstrap: `common.sh` (user detection, apt helpers, cloud-env detection) + automatic git-config self-heal on every attach — all features depend on this | -| `essential-dev` | 1.0.9 | Git visualization, editor enhancements, Markdown | +| `essential-dev` | 1.1.0 | Git visualization, editor enhancements, Markdown | | `github-dev` | 1.0.5 | gh CLI, Copilot Chat, PR/Issues/Actions extensions | | `copilot-dev` | 1.0.3 | Copilot Chat + AI instructions (commits, PRs, code review) | -| `claude-dev` | 1.1.0 | Claude Code extension + CLI + `~/.claude` named-volume persistence (credentials + memory) | -| `mistral-dev` | 1.1.0 | Mistral Vibe extension + `~/.vibe` named-volume persistence | +| `claude-dev` | 1.2.0 | Claude Code extension + CLI + `~/.claude` named-volume persistence (credentials + memory) | +| `mistral-dev` | 1.2.0 | Mistral Vibe extension + `~/.vibe` named-volume persistence | | `cline-dev` | 1.0.0 | Cline extension (`saoudrizwan.claude-dev`) + optional CLI, no credential persistence | -| `nub` | 1.1.0 | Fast TS/JS/script runner on top of existing node+package-manager (dependsOn node) | +| `nub` | 1.2.0 | Fast TS/JS/script runner on top of existing node+package-manager (dependsOn node) | | `typescript-dev` | 1.0.7 | TS/JS dev, import management (dependsOn essential-dev) | -| `angular-dev` | 1.1.0 | Angular dev, port 4200 | -| `vite-plus` | 1.1.0 | vp CLI, Oxlint/Oxfmt, Vitest | -| `package-auto-install` | 1.1.0 | Auto-detect and install packages (npm/yarn/pnpm/nub) | -| `playwright-dev` | 1.1.0 | Playwright OS deps (Chromium/Firefox/WebKit) + shared browser-binary volume + VS Code extension | -| `pnpm-store` | 1.1.0 | Shared pnpm store via Docker named volume (dependsOn helpers4-common) | -| `auto-header` | 1.1.0 | LGPL-3.0 license headers | -| `git-absorb` | 1.1.0 | git-absorb from GitHub releases | -| `bitwarden-secrets-manager` | 1.0.0 | `bws` CLI from bitwarden/sdk-sm GitHub releases, token-only auth, no persisted state | -| `dotfiles-sync` | 1.1.0 | Sync Git/SSH/GPG/npm/gh config from host; SSH key files opt-in (dependsOn helpers4-common) | -| `peon-ping` | 1.1.0 | AI agent sound notifications | -| `shell-history-per-project` | 1.1.0 | Persistent shell history (zsh/bash/fish) | +| `angular-dev` | 1.2.0 | Angular dev, port 4200 | +| `vite-plus` | 1.2.0 | vp CLI, Oxlint/Oxfmt, Vitest | +| `package-auto-install` | 1.2.0 | Auto-detect and install packages (npm/yarn/pnpm/nub) | +| `playwright-dev` | 1.2.0 | Playwright OS deps (Chromium/Firefox/WebKit) + shared browser-binary volume + VS Code extension | +| `pnpm-store` | 1.2.0 | Shared pnpm store via Docker named volume (dependsOn helpers4-common) | +| `auto-header` | 1.2.0 | LGPL-3.0 license headers | +| `git-absorb` | 1.2.0 | git-absorb from GitHub releases | +| `bitwarden-secrets-manager` | 1.1.0 | `bws` CLI from bitwarden/sdk-sm GitHub releases, token-only auth, no persisted state | +| `dotfiles-sync` | 1.2.0 | Sync Git/SSH/GPG/npm/gh config from host; SSH key files opt-in (dependsOn helpers4-common) | +| `peon-ping` | 1.2.0 | AI agent sound notifications | +| `shell-history-per-project` | 1.2.0 | Persistent shell history (zsh/bash/fish) | **Adding a new feature — checklist:** From 27910e60e73f58e6055c70c1d6f248e7a55b5ad6 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 17/32] =?UTF-8?q?docs(angular-dev):=20=F0=9F=93=9D=20refin?= =?UTF-8?q?e=20self-heal=20wording=20to=20stay=20vague=20and=20read=20more?= =?UTF-8?q?=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/angular-dev/README.md | 8 ++++---- src/angular-dev/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/angular-dev/README.md b/src/angular-dev/README.md index d609cee..0a8cece 100644 --- a/src/angular-dev/README.md +++ b/src/angular-dev/README.md @@ -2,10 +2,10 @@ Angular-specific development environment with VS Code extensions and CLI autocompletion. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features diff --git a/src/angular-dev/devcontainer-feature.json b/src/angular-dev/devcontainer-feature.json index 973edef..b7a5375 100644 --- a/src/angular-dev/devcontainer-feature.json +++ b/src/angular-dev/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "angular-dev", "version": "1.2.0", "name": "Angular Development Environment", - "description": "Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion. Also includes helpers4's automatic git-config self-heal.", + "description": "Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/angular-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "angular", "typescript", "cli"], From a680b7ec273eab261ce9ec8c85f09aec1ba2218b Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 18/32] =?UTF-8?q?docs(claude-dev):=20=F0=9F=93=9D=20refine?= =?UTF-8?q?=20self-heal=20wording=20to=20stay=20vague=20and=20read=20more?= =?UTF-8?q?=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/claude-dev/README.md | 8 ++++---- src/claude-dev/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/claude-dev/README.md b/src/claude-dev/README.md index 2dbd041..5812f0a 100644 --- a/src/claude-dev/README.md +++ b/src/claude-dev/README.md @@ -5,10 +5,10 @@ across supported editors and persists `~/.claude` (credentials, config, memory) across every devcontainer rebuild — including GitHub Codespaces — via a Docker named volume. Optionally installs the `claude` CLI too. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Example Usage diff --git a/src/claude-dev/devcontainer-feature.json b/src/claude-dev/devcontainer-feature.json index 77ece88..8d24f71 100644 --- a/src/claude-dev/devcontainer-feature.json +++ b/src/claude-dev/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "claude-dev", "version": "1.2.0", "name": "Claude Code Development Environment", - "description": "Installs the Claude Code IDE extension (anthropic.claude-code) for VS Code and Cursor, and optionally the claude CLI. Persists ~/.claude (credentials, config, memory) across rebuilds and Codespaces via a Docker named volume, shared per host OS user. Also includes helpers4's automatic git-config self-heal.", + "description": "Installs the Claude Code IDE extension (anthropic.claude-code) for VS Code and Cursor, and optionally the claude CLI. Persists ~/.claude (credentials, config, memory) across rebuilds and Codespaces via a Docker named volume, shared per host OS user. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/claude-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": [ From 3d2bd894c434f48cc512ffdd8b119273374f9d97 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 19/32] =?UTF-8?q?docs(dotfiles-sync):=20=F0=9F=93=9D=20ref?= =?UTF-8?q?ine=20self-heal=20wording=20to=20stay=20vague=20and=20read=20mo?= =?UTF-8?q?re=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/dotfiles-sync/README.md | 2 +- src/dotfiles-sync/devcontainer-feature.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dotfiles-sync/README.md b/src/dotfiles-sync/README.md index 165ca45..9c27f35 100644 --- a/src/dotfiles-sync/README.md +++ b/src/dotfiles-sync/README.md @@ -2,7 +2,7 @@ Syncs local Git, SSH, GPG, npm, and yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) and SSH private key files — opt-in only. Works on macOS, Linux, Windows (WSL and native), GitHub Codespaces, Gitpod, and DevPod. Uses a **merge strategy** for established files and a **copy-if-absent** strategy for new ones — never overwrites existing values, safe alongside cloud platform native auth and GPG signing. -> **Recommended**: if you use this feature, disable VS Code's own automatic `.gitconfig` copy (`"dev.containers.copyGitConfig": false`, a client-side VS Code setting — not something a `devcontainer.json` can control). VS Code's copy runs earlier and writes every key verbatim; this feature's merge only fills in whatever's still absent by the time it runs, so with both active, VS Code's raw copy silently wins for every key it touched and this feature's smarter merge does nothing for those. Either way, [`helpers4-common`](../helpers4-common)'s automatic git-config self-heal (every helpers4 consumer gets it, unconditionally) repairs host-specific paths left over by whichever one actually wrote them. +> **Recommended**: if you use this feature, disable VS Code's own automatic `.gitconfig` copy (`"dev.containers.copyGitConfig": false`, a client-side VS Code setting — not something a `devcontainer.json` can control). VS Code's copy runs earlier and writes every key verbatim; this feature's merge only fills in whatever's still absent by the time it runs, so with both active, VS Code's raw copy silently wins for every key it touched and this feature's smarter merge does nothing for those. Either way, this feature's dependency on [`helpers4-common`](../helpers4-common) means its self-heal mechanism is already working in the background — it does its best to fix broken paths and a missing commit-signing key left over by whichever one actually wrote them, with nothing to set up on your end. ## Usage diff --git a/src/dotfiles-sync/devcontainer-feature.json b/src/dotfiles-sync/devcontainer-feature.json index a2321df..c805d06 100644 --- a/src/dotfiles-sync/devcontainer-feature.json +++ b/src/dotfiles-sync/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "dotfiles-sync", "version": "1.2.0", "name": "Dotfiles Sync", - "description": "Syncs local Git, SSH, GPG, npm, yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) and SSH private key files — opt-in only. Works on macOS, Linux, Windows (WSL), Codespaces, Gitpod, DevPod. Merges instead of overwriting. Also includes helpers4's automatic git-config self-heal.", + "description": "Syncs local Git, SSH, GPG, npm, yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) and SSH private key files — opt-in only. Works on macOS, Linux, Windows (WSL), Codespaces, Gitpod, DevPod. Merges instead of overwriting. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/dotfiles-sync", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "dotfiles", "git", "ssh", "sync"], From 0aef5f2a3242e1971892291e64ec6fb5a31c39af Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 20/32] =?UTF-8?q?docs(git-absorb):=20=F0=9F=93=9D=20refine?= =?UTF-8?q?=20self-heal=20wording=20to=20stay=20vague=20and=20read=20more?= =?UTF-8?q?=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/git-absorb/README.md | 8 ++++---- src/git-absorb/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/git-absorb/README.md b/src/git-absorb/README.md index c50aa91..9ce32e8 100644 --- a/src/git-absorb/README.md +++ b/src/git-absorb/README.md @@ -2,10 +2,10 @@ This DevContainer feature installs [git-absorb](https://github.com/tummychow/git-absorb), a tool that automatically absorbs staged changes into their logical commits. It's like `git commit --fixup` but automatic. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features diff --git a/src/git-absorb/devcontainer-feature.json b/src/git-absorb/devcontainer-feature.json index 63c98b8..c34876b 100644 --- a/src/git-absorb/devcontainer-feature.json +++ b/src/git-absorb/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "git-absorb", "version": "1.2.0", "name": "git absorb — Automatic Fixup Commits", - "description": "Installs git-absorb, a tool to automatically absorb staged changes into their logical commits. Like 'git commit --fixup' but automatic. Also includes helpers4's automatic git-config self-heal.", + "description": "Installs git-absorb, a tool to automatically absorb staged changes into their logical commits. Like 'git commit --fixup' but automatic. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/git-absorb", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "git", "absorb", "commits"], From afbd4d2366d26bd0cf2da876f130004e8802c43a Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 21/32] =?UTF-8?q?docs(mistral-dev):=20=F0=9F=93=9D=20refin?= =?UTF-8?q?e=20self-heal=20wording=20to=20stay=20vague=20and=20read=20more?= =?UTF-8?q?=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/mistral-dev/README.md | 8 ++++---- src/mistral-dev/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mistral-dev/README.md b/src/mistral-dev/README.md index fff7943..41b19b1 100644 --- a/src/mistral-dev/README.md +++ b/src/mistral-dev/README.md @@ -6,10 +6,10 @@ by Mistral out of the box. Credentials and configuration persist in a Docker named volume linked into the container — they survive all rebuilds, including `--no-cache`, and GitHub Codespaces. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Example Usage diff --git a/src/mistral-dev/devcontainer-feature.json b/src/mistral-dev/devcontainer-feature.json index 223470e..2e17ebb 100644 --- a/src/mistral-dev/devcontainer-feature.json +++ b/src/mistral-dev/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "mistral-dev", "version": "1.2.0", "name": "Mistral Vibe Development Environment", - "description": "Installs the Mistral Vibe IDE extension (mistralai.mistral-vibe-code) for VS Code and Cursor. Persists ~/.vibe (credentials, config) across rebuilds and Codespaces via a Docker named volume, shared per host OS user. Also includes helpers4's automatic git-config self-heal.", + "description": "Installs the Mistral Vibe IDE extension (mistralai.mistral-vibe-code) for VS Code and Cursor. Persists ~/.vibe (credentials, config) across rebuilds and Codespaces via a Docker named volume, shared per host OS user. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/mistral-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": [ From 4b252203f72d822187eb6dacd4bbd94a6294794f Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 22/32] =?UTF-8?q?docs(nub):=20=F0=9F=93=9D=20refine=20self?= =?UTF-8?q?-heal=20wording=20to=20stay=20vague=20and=20read=20more=20natur?= =?UTF-8?q?ally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/nub/README.md | 8 ++++---- src/nub/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/nub/README.md b/src/nub/README.md index 46311e2..8fe2d8f 100644 --- a/src/nub/README.md +++ b/src/nub/README.md @@ -2,10 +2,10 @@ Installs [nub](https://nubjs.com/): a single Rust binary that runs TypeScript/JavaScript files, `package.json` scripts, and local CLIs directly on top of the Node.js and package manager already in the container — no new runtime, no lock-in. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Why this feature exists diff --git a/src/nub/devcontainer-feature.json b/src/nub/devcontainer-feature.json index bcd2046..9caedd9 100644 --- a/src/nub/devcontainer-feature.json +++ b/src/nub/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "nub", "version": "1.2.0", "name": "Nub — Fast TypeScript/Node Toolchain", - "description": "Installs nub (nubjs.com): a Rust binary that runs TypeScript/JavaScript files, package.json scripts, and local CLIs directly on the Node.js and package manager already in the container — no new runtime, no lock-in. Does not manage Node versions itself (dependsOn the official node feature), so it never competes with this container's own version-selection mechanism. Also includes helpers4's automatic git-config self-heal.", + "description": "Installs nub (nubjs.com): a Rust binary that runs TypeScript/JavaScript files, package.json scripts, and local CLIs directly on the Node.js and package manager already in the container — no new runtime, no lock-in. Does not manage Node versions itself (dependsOn the official node feature), so it never competes with this container's own version-selection mechanism. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/nub", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "nub", "node", "typescript", "package-manager", "cli"], From c94f3004d0d5bab04b1748c4972fdee0b34a7542 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 23/32] =?UTF-8?q?docs(peon-ping):=20=F0=9F=93=9D=20refine?= =?UTF-8?q?=20self-heal=20wording=20to=20stay=20vague=20and=20read=20more?= =?UTF-8?q?=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/peon-ping/README.md | 8 ++++---- src/peon-ping/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/peon-ping/README.md b/src/peon-ping/README.md index a0207e2..6d1e434 100644 --- a/src/peon-ping/README.md +++ b/src/peon-ping/README.md @@ -4,10 +4,10 @@ Installs [peon-ping](https://peonping.com/) and the [Peon Pet](https://marketpla Supports **Claude Code**, **GitHub Copilot**, **Cursor**, **OpenAI Codex**, and [many more IDEs](https://github.com/PeonPing/peon-ping#multi-ide-support). -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features diff --git a/src/peon-ping/devcontainer-feature.json b/src/peon-ping/devcontainer-feature.json index 04b49e2..0d73957 100644 --- a/src/peon-ping/devcontainer-feature.json +++ b/src/peon-ping/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "peon-ping", "version": "1.2.0", "name": "Peon Ping — AI Agent Sound Notifications", - "description": "Installs peon-ping and the Peon Pet VS Code extension for game character voice notifications when your AI coding agent finishes or needs permission. Supports VS Code/Copilot, Cursor, and Codex with audio relay for devcontainers. Also includes helpers4's automatic git-config self-heal.", + "description": "Installs peon-ping and the Peon Pet VS Code extension for game character voice notifications when your AI coding agent finishes or needs permission. Supports VS Code/Copilot, Cursor, and Codex with audio relay for devcontainers. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/peon-ping", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "peon", "audio", "notifications", "ai"], From b63aa78a94bfb57f9333d65038f968653a1611fa Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 24/32] =?UTF-8?q?docs(playwright-dev):=20=F0=9F=93=9D=20re?= =?UTF-8?q?fine=20self-heal=20wording=20to=20stay=20vague=20and=20read=20m?= =?UTF-8?q?ore=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/playwright-dev/README.md | 8 ++++---- src/playwright-dev/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/playwright-dev/README.md b/src/playwright-dev/README.md index 3e9b7ef..9fbd44b 100644 --- a/src/playwright-dev/README.md +++ b/src/playwright-dev/README.md @@ -2,10 +2,10 @@ OS-level dependencies for headless Chromium, Firefox, and WebKit, a browser-binary cache shared across rebuilds via a Docker named volume, and the official Playwright Test VS Code extension — pre-configured so `npx playwright test` and `npx playwright install` just work, without re-downloading browsers on every rebuild. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Why this feature exists diff --git a/src/playwright-dev/devcontainer-feature.json b/src/playwright-dev/devcontainer-feature.json index bf89abf..a52807a 100644 --- a/src/playwright-dev/devcontainer-feature.json +++ b/src/playwright-dev/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "playwright-dev", "version": "1.2.0", "name": "Playwright Development Environment", - "description": "Playwright E2E/browser-automation toolchain: OS-level dependencies for headless Chromium, Firefox, and WebKit (via the official `playwright install-deps`), a browser-binary cache shared across rebuilds through a Docker named volume, and the official Playwright Test VS Code extension. Also includes helpers4's automatic git-config self-heal.", + "description": "Playwright E2E/browser-automation toolchain: OS-level dependencies for headless Chromium, Firefox, and WebKit (via the official `playwright install-deps`), a browser-binary cache shared across rebuilds through a Docker named volume, and the official Playwright Test VS Code extension. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/playwright-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "playwright", "e2e", "chromium", "firefox", "webkit", "testing", "webauthn"], From 9d4adfb629d05e12715796a266ebac814aacb390 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:12 +0000 Subject: [PATCH 25/32] =?UTF-8?q?docs(pnpm-store):=20=F0=9F=93=9D=20refine?= =?UTF-8?q?=20self-heal=20wording=20to=20stay=20vague=20and=20read=20more?= =?UTF-8?q?=20naturally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JSON description and README callout both used to spell out "git-config self-heal", which locks the wording to today's implementation and reads like a changelog entry. Reworded to a vague, user-focused "self-heal mechanism" so future auto-heal improvements don't need another wording pass, and rewrote the callout for more natural English. Co-Authored-By: Claude Sonnet 5 --- src/pnpm-store/README.md | 8 ++++---- src/pnpm-store/devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pnpm-store/README.md b/src/pnpm-store/README.md index 9938e20..7dec09d 100644 --- a/src/pnpm-store/README.md +++ b/src/pnpm-store/README.md @@ -4,10 +4,10 @@ Shares a single [pnpm](https://pnpm.io) content-addressable store across **every repo and across rebuilds** via a Docker **named volume**, so no stray `.pnpm-store` folders pollute your repos. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Why a named volume? diff --git a/src/pnpm-store/devcontainer-feature.json b/src/pnpm-store/devcontainer-feature.json index 39d6d43..d716a33 100644 --- a/src/pnpm-store/devcontainer-feature.json +++ b/src/pnpm-store/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "pnpm-store", "version": "1.2.0", "name": "pnpm Store (shared)", - "description": "Shares a single pnpm content-addressable store across every repo and across rebuilds via a Docker named volume, so no stray .pnpm-store folders pollute your repos. Zero-config and autonomous: the volume is created automatically, with no host directory to pre-create. Also includes helpers4's automatic git-config self-heal.", + "description": "Shares a single pnpm content-addressable store across every repo and across rebuilds via a Docker named volume, so no stray .pnpm-store folders pollute your repos. Zero-config and autonomous: the volume is created automatically, with no host directory to pre-create. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/pnpm-store", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "pnpm", "store", "cache"], From 33ac492ae4c66214a246e1159a9629d0a1f1d7d2 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:18 +0000 Subject: [PATCH 26/32] =?UTF-8?q?docs(auto-header):=20=F0=9F=93=9D=20refin?= =?UTF-8?q?e=20self-heal=20wording=20and=20fix=20version-tag=20inconsisten?= =?UTF-8?q?cy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworded the JSON description and README callout the same way as the other helpers4-common dependents: vaguer, more natural phrasing instead of spelling out "git-config self-heal". Also fixed all 7 usage examples, which referenced ghcr.io/helpers4/devcontainer/auto-header:latest — every other example in this feature (and every other feature in the catalog) pins the major version tag (:1), not :latest. Co-Authored-By: Claude Sonnet 5 --- src/auto-header/README.md | 22 +++++++++++----------- src/auto-header/devcontainer-feature.json | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/auto-header/README.md b/src/auto-header/README.md index ca50178..c1b6700 100644 --- a/src/auto-header/README.md +++ b/src/auto-header/README.md @@ -2,10 +2,10 @@ Automatically configures VS Code with customizable file headers based on your project's license, company, and team information. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features @@ -33,7 +33,7 @@ If you use a minimal base image (e.g. `ubuntu:latest`), add `common-utils` first { "features": { "ghcr.io/devcontainers/features/common-utils:2": {}, - "ghcr.io/helpers4/devcontainer/auto-header:latest": { ... } + "ghcr.io/helpers4/devcontainer/auto-header:1": { ... } } } ``` @@ -47,7 +47,7 @@ Add to your `.devcontainer/devcontainer.json`: ```json { "features": { - "ghcr.io/helpers4/devcontainer/auto-header:latest": { + "ghcr.io/helpers4/devcontainer/auto-header:1": { "projectName": "my-awesome-project", "license": "MIT", "company": "Acme Corp", @@ -70,7 +70,7 @@ This generates headers like: ```json { "features": { - "ghcr.io/helpers4/devcontainer/auto-header:latest": { + "ghcr.io/helpers4/devcontainer/auto-header:1": { "headerType": "custom", "projectName": "my-awesome-project", "customHeaderLines": "/**\n * @project my-awesome-project\n * @author Team\n * @license MIT\n */" @@ -111,7 +111,7 @@ This command: ```json { "features": { - "ghcr.io/helpers4/devcontainer/auto-header:latest": { + "ghcr.io/helpers4/devcontainer/auto-header:1": { "projectName": "helpers4-typescript", "license": "LGPL-3.0", "company": "helpers4", @@ -127,7 +127,7 @@ This command: ```json { "features": { - "ghcr.io/helpers4/devcontainer/auto-header:latest": { + "ghcr.io/helpers4/devcontainer/auto-header:1": { "projectName": "enterprise-app", "license": "Apache-2.0", "company": "ACME Industries", @@ -142,7 +142,7 @@ This command: ```json { "features": { - "ghcr.io/helpers4/devcontainer/auto-header:latest": { + "ghcr.io/helpers4/devcontainer/auto-header:1": { "headerType": "custom", "projectName": "my-lib", "license": "LGPL-3.0-or-later", @@ -182,7 +182,7 @@ Add `postCreateCommand` to auto-initialize: ```json { "features": { - "ghcr.io/helpers4/devcontainer/auto-header:latest": { + "ghcr.io/helpers4/devcontainer/auto-header:1": { "projectName": "my-project", "license": "MIT" } diff --git a/src/auto-header/devcontainer-feature.json b/src/auto-header/devcontainer-feature.json index a26cde1..a23cc64 100644 --- a/src/auto-header/devcontainer-feature.json +++ b/src/auto-header/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "auto-header", "version": "1.2.0", "name": "Automatic File Headers", - "description": "Automatically configures VS Code file headers with customizable templates based on project, license, company, and contributors information. Also includes helpers4's automatic git-config self-heal.", + "description": "Automatically configures VS Code file headers with customizable templates based on project, license, company, and contributors information. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/auto-header", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "license", "header", "lgpl", "copyright"], From 866be5bc3ad5e48e41821e3dec195f6779d0576e Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:23 +0000 Subject: [PATCH 27/32] =?UTF-8?q?docs(package-auto-install):=20?= =?UTF-8?q?=F0=9F=93=9D=20refine=20self-heal=20wording=20and=20fix=20a=20b?= =?UTF-8?q?roken=20heading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworded the JSON description and README callout the same way as the other helpers4-common dependents: vaguer, more natural phrasing instead of spelling out "git-config self-heal". Also fixed the "How It Works" section: "Corepack Support (Node 24+)" was plain text with no heading prefix, and was preceded by an empty "### " line. Both are now proper "###" subheadings under "## How It Works". Co-Authored-By: Claude Sonnet 5 --- src/package-auto-install/README.md | 15 ++++++++------- .../devcontainer-feature.json | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/package-auto-install/README.md b/src/package-auto-install/README.md index 1963062..d3a6fa7 100644 --- a/src/package-auto-install/README.md +++ b/src/package-auto-install/README.md @@ -2,10 +2,10 @@ Automatically detects and runs npm/yarn/pnpm install in non-interactive mode after container creation. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features @@ -158,7 +158,8 @@ For any IDE that does not have a parseable workspace file (Zed, Neovim, etc.) or `directories` takes precedence over both `workingDirectory` and `autoDiscover`. ## How It Works -Corepack Support (Node 24+) + +### Corepack Support (Node 24+) If your `package.json` contains a `packageManager` field (e.g., `"packageManager": "pnpm@9.0.0"`): @@ -167,9 +168,9 @@ If your `package.json` contains a `packageManager` field (e.g., `"packageManager 3. Enables corepack with `corepack enable` 4. Corepack then automatically installs and uses the exact package manager version specified -This is particularly important for Node 24+ where corepack is no longer included by default. +Node 24+ dropped corepack from the default install, so this step is what makes the +`packageManager` field still work there without you installing corepack yourself. -### ### Package Manager Detection The feature detects the package manager in this order: diff --git a/src/package-auto-install/devcontainer-feature.json b/src/package-auto-install/devcontainer-feature.json index 36f6b3a..7e17dd5 100644 --- a/src/package-auto-install/devcontainer-feature.json +++ b/src/package-auto-install/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "package-auto-install", "version": "1.2.0", "name": "Automatic Package Installation", - "description": "Automatically detects and runs npm/yarn/pnpm/nub install in non-interactive mode after container creation. Also includes helpers4's automatic git-config self-heal.", + "description": "Automatically detects and runs npm/yarn/pnpm/nub install in non-interactive mode after container creation. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/package-auto-install", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "pnpm", "npm", "yarn", "nub", "install"], From 4b97ed7614f22fc1f4446a7448eb60abd701e4bc Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:27 +0000 Subject: [PATCH 28/32] =?UTF-8?q?docs(shell-history-per-project):=20?= =?UTF-8?q?=F0=9F=93=9D=20refine=20self-heal=20wording=20and=20drop=20a=20?= =?UTF-8?q?redundant=20section?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworded the JSON description and README callout the same way as the other helpers4-common dependents: vaguer, more natural phrasing instead of spelling out "git-config self-heal". Also removed the "Installation and Development" section, which duplicated "How it works"'s 4 steps almost verbatim — the latter is better formatted (bold labels) and is the section readers land on first. Co-Authored-By: Claude Sonnet 5 --- src/shell-history-per-project/README.md | 17 ++++------------- .../devcontainer-feature.json | 2 +- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/shell-history-per-project/README.md b/src/shell-history-per-project/README.md index af3dfe2..6f174f9 100644 --- a/src/shell-history-per-project/README.md +++ b/src/shell-history-per-project/README.md @@ -2,10 +2,10 @@ This DevContainer feature provides shell history persistence per project by mounting a shell directory and creating symbolic links internally. This ensures that your shell history is preserved across container rebuilds and is isolated per project. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features @@ -126,15 +126,6 @@ This feature differs from the existing shell-history feature by: - **Collaborative**: Can be shared with team members through project setup - **Configurable location**: Allows customization of where history is stored within the project -## Installation and Development - -This feature is automatically installed when referenced in a `devcontainer.json` file. The installation process: - -1. Creates the specified history directory -2. Updates shell configuration files -3. Creates symbolic links for seamless integration -4. Sets proper permissions for the remote user - ## Contributing This feature is part of the `helpers4/devcontainer-features` repository. Contributions and issues are welcome! diff --git a/src/shell-history-per-project/devcontainer-feature.json b/src/shell-history-per-project/devcontainer-feature.json index ed8bf88..2a92c6a 100644 --- a/src/shell-history-per-project/devcontainer-feature.json +++ b/src/shell-history-per-project/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "shell-history-per-project", "version": "1.2.0", "name": "Shell History Per Project", - "description": "Persist shell history per project by automatically detecting and configuring all available shells (zsh, bash, fish). Supports auto-detection or manual shell selection. Also includes helpers4's automatic git-config self-heal.", + "description": "Persist shell history per project by automatically detecting and configuring all available shells (zsh, bash, fish). Supports auto-detection or manual shell selection. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/shell-history-per-project", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "shell", "history", "zsh", "bash"], From 2e89b47e540cae80139545f79432c380e44254d5 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:38 +0000 Subject: [PATCH 29/32] =?UTF-8?q?docs(vite-plus):=20=F0=9F=93=9D=20refine?= =?UTF-8?q?=20self-heal=20wording=20and=20fix=20a=20dead=20feature=20refer?= =?UTF-8?q?ence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworded the JSON description and README callout the same way as the other helpers4-common dependents: vaguer, more natural phrasing instead of spelling out "git-config self-heal". Also fixed the "Works Great With" example, which referenced ghcr.io/helpers4/devcontainer/local-mounts:1 — that feature was replaced by dotfiles-sync and no longer exists in this catalog. Co-Authored-By: Claude Sonnet 5 --- src/vite-plus/README.md | 10 +++++----- src/vite-plus/devcontainer-feature.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vite-plus/README.md b/src/vite-plus/README.md index fa72d04..435e30c 100644 --- a/src/vite-plus/README.md +++ b/src/vite-plus/README.md @@ -2,10 +2,10 @@ Complete Vite+ unified toolchain setup with the `vp` CLI, integrating Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and Vite Task into a single development experience with VS Code extensions pre-configured. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features @@ -197,7 +197,7 @@ Combine with other features for a complete development environment: "features": { "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, - "ghcr.io/helpers4/devcontainer/local-mounts:1": {}, + "ghcr.io/helpers4/devcontainer/dotfiles-sync:1": {}, "ghcr.io/helpers4/devcontainer/shell-history-per-project:1": {}, "ghcr.io/helpers4/devcontainer/git-absorb:1": {} } diff --git a/src/vite-plus/devcontainer-feature.json b/src/vite-plus/devcontainer-feature.json index 7b09bd1..168360e 100644 --- a/src/vite-plus/devcontainer-feature.json +++ b/src/vite-plus/devcontainer-feature.json @@ -2,7 +2,7 @@ "id": "vite-plus", "version": "1.2.0", "name": "Vite+ Development Environment", - "description": "Complete Vite+ unified toolchain setup (vp) with Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and VS Code integration. Also includes helpers4's automatic git-config self-heal.", + "description": "Complete Vite+ unified toolchain setup (vp) with Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and VS Code integration. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/vite-plus", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "vite", "vitest", "oxc", "typescript"], From bfeb0cdecb40cf186ddb4d40615380f89c717977 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:45 +0000 Subject: [PATCH 30/32] =?UTF-8?q?docs(essential-dev):=20=F0=9F=93=9D=20ali?= =?UTF-8?q?gn=20version,=20refine=20wording,=20and=20fix=20stale=20referen?= =?UTF-8?q?ces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This feature was bumped to 1.1.0 for the self-heal mention, while every other helpers4-common dependent in this release lands on 1.2.0. Aligned it to 1.2.0 so the whole "pure documentation" release ships under one version number, and reworded the JSON description and README callout the same way as the others: vaguer, more natural phrasing instead of spelling out "git-config self-heal". Also fixed two stale references found during review: two examples still pointed at ghcr.io/helpers4/devcontainer/local-mounts:1, a feature that no longer exists (superseded by dotfiles-sync), and "Not Included (By Design)" claimed a dedicated Biome feature is available, which doesn't exist in this catalog. Co-Authored-By: Claude Sonnet 5 --- src/essential-dev/README.md | 15 +++++++-------- src/essential-dev/devcontainer-feature.json | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/essential-dev/README.md b/src/essential-dev/README.md index 29f7653..dbe36d5 100644 --- a/src/essential-dev/README.md +++ b/src/essential-dev/README.md @@ -2,10 +2,10 @@ Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. Perfect base for all development projects. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Features @@ -72,7 +72,7 @@ That's it! All extensions and settings are applied automatically. "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, "ghcr.io/helpers4/devcontainer/typescript-dev:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, - "ghcr.io/helpers4/devcontainer/local-mounts:1": {} + "ghcr.io/helpers4/devcontainer/dotfiles-sync:1": {} } } ``` @@ -87,7 +87,7 @@ That's it! All extensions and settings are applied automatically. "ghcr.io/helpers4/devcontainer/typescript-dev:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, "ghcr.io/helpers4/devcontainer/git-absorb:1": {}, - "ghcr.io/helpers4/devcontainer/local-mounts:1": {} + "ghcr.io/helpers4/devcontainer/dotfiles-sync:1": {} } } ``` @@ -119,12 +119,11 @@ All shells are automatically detected and configured when available. **Code Formatters** - Oxc/Prettier - Use `vite-plus` feature instead -- Biome - Dedicated feature available **Testing** - Vitest - Use `vite-plus` feature instead ## Version History -- **v1.1.0**: Documentation only, no functional change — mentions that `helpers4-common`'s +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s automatic git-config self-heal (see above) comes along with this feature. diff --git a/src/essential-dev/devcontainer-feature.json b/src/essential-dev/devcontainer-feature.json index 4a59d9d..f3313ee 100644 --- a/src/essential-dev/devcontainer-feature.json +++ b/src/essential-dev/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "essential-dev", - "version": "1.1.0", + "version": "1.2.0", "name": "Essential Development Environment", - "description": "Core development environment with Git visualization, Markdown support, and essential editor enhancements. Also includes helpers4's automatic git-config self-heal.", + "description": "Core development environment with Git visualization, Markdown support, and essential editor enhancements. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/essential-dev", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "git", "editor", "markdown", "essential"], From c7cf25a0a850bab394a1494ff2e1263c2efd83e6 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:49 +0000 Subject: [PATCH 31/32] =?UTF-8?q?docs(bitwarden-secrets-manager):=20?= =?UTF-8?q?=F0=9F=93=9D=20align=20version=20and=20refine=20self-heal=20wor?= =?UTF-8?q?ding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This feature was bumped to 1.1.0 for the self-heal mention, while every other helpers4-common dependent in this release lands on 1.2.0. Aligned it to 1.2.0 so the whole "pure documentation" release ships under one version number, and reworded the JSON description and README callout the same way as the others: vaguer, more natural phrasing instead of spelling out "git-config self-heal". Co-Authored-By: Claude Sonnet 5 --- src/bitwarden-secrets-manager/README.md | 10 +++++----- .../devcontainer-feature.json | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/bitwarden-secrets-manager/README.md b/src/bitwarden-secrets-manager/README.md index eb5cb5e..cce9bff 100644 --- a/src/bitwarden-secrets-manager/README.md +++ b/src/bitwarden-secrets-manager/README.md @@ -4,10 +4,10 @@ This DevContainer feature installs [`bws`](https://github.com/bitwarden/sdk-sm), This is deliberately **not** a general Bitwarden feature: it installs `bws` (Secrets Manager) only, not `bw` (the password-vault CLI, which needs an interactive login/session model this feature doesn't address). If you need the vault CLI, look for a dedicated `bw` feature instead. -> **Also included automatically:** `helpers4-common`'s git-config self-heal — fixes a stale -> `credential.helper` or a missing SSH commit-signing key in `~/.gitconfig` on every container -> attach, no setup required. You never add `helpers4-common` yourself; every helpers4 feature -> pulls it in. +> **Also included automatically:** helpers4's self-heal mechanism, working on both local and +> cloud containers. It does its best to fix broken paths and a missing commit-signing key, with +> nothing to set up on your end. It comes from this feature's dependency on `helpers4-common` — +> you never need to add that feature yourself. ## Usage @@ -54,6 +54,6 @@ Supported architectures: `x86_64` and `aarch64`/`arm64` (e.g. Oracle Cloud Amper ## Version History -- **v1.1.0**: Documentation only, no functional change — mentions that `helpers4-common`'s +- **v1.2.0**: Documentation only, no functional change — mentions that `helpers4-common`'s automatic git-config self-heal (see above) comes along with this feature. - **v1.0.0**: Initial release. diff --git a/src/bitwarden-secrets-manager/devcontainer-feature.json b/src/bitwarden-secrets-manager/devcontainer-feature.json index c447240..776816a 100644 --- a/src/bitwarden-secrets-manager/devcontainer-feature.json +++ b/src/bitwarden-secrets-manager/devcontainer-feature.json @@ -1,8 +1,8 @@ { "id": "bitwarden-secrets-manager", - "version": "1.1.0", + "version": "1.2.0", "name": "Bitwarden Secrets Manager CLI", - "description": "Installs bws, the official Bitwarden Secrets Manager CLI, from bitwarden/sdk-sm GitHub releases. Non-interactive, machine-account-token auth only (BWS_ACCESS_TOKEN) — no vault login, no persisted state, no bind mounts. Also includes helpers4's automatic git-config self-heal.", + "description": "Installs bws, the official Bitwarden Secrets Manager CLI, from bitwarden/sdk-sm GitHub releases. Non-interactive, machine-account-token auth only (BWS_ACCESS_TOKEN) — no vault login, no persisted state, no bind mounts. Also includes helpers4's self-heal.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/bitwarden-secrets-manager", "licenseURL": "https://github.com/helpers4/devcontainer/blob/main/LICENSE", "keywords": ["helpers4", "bitwarden", "bws", "secrets", "secrets-manager"], From 59e97970a715a547f56c6953266cf114684422c0 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 7 Sep 2026 13:55:54 +0000 Subject: [PATCH 32/32] =?UTF-8?q?docs(CI-CD):=20=F0=9F=93=9D=20fix=20featu?= =?UTF-8?q?re=20table=20versions=20for=20essential-dev=20and=20bitwarden-s?= =?UTF-8?q?ecrets-manager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both were bumped to 1.2.0 to align with the rest of the self-heal-mention release, but the feature table still listed them at 1.1.0. Co-Authored-By: Claude Sonnet 5 --- AGENTS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index d998fb5..e4f5c6b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -28,7 +28,7 @@ devcontainer features test . | Feature | Ver | Description | | ------- | --- | ----------- | | `helpers4-common` | 1.1.0 | Bootstrap: `common.sh` (user detection, apt helpers, cloud-env detection) + automatic git-config self-heal on every attach — all features depend on this | -| `essential-dev` | 1.1.0 | Git visualization, editor enhancements, Markdown | +| `essential-dev` | 1.2.0 | Git visualization, editor enhancements, Markdown | | `github-dev` | 1.0.5 | gh CLI, Copilot Chat, PR/Issues/Actions extensions | | `copilot-dev` | 1.0.3 | Copilot Chat + AI instructions (commits, PRs, code review) | | `claude-dev` | 1.2.0 | Claude Code extension + CLI + `~/.claude` named-volume persistence (credentials + memory) | @@ -43,7 +43,7 @@ devcontainer features test . | `pnpm-store` | 1.2.0 | Shared pnpm store via Docker named volume (dependsOn helpers4-common) | | `auto-header` | 1.2.0 | LGPL-3.0 license headers | | `git-absorb` | 1.2.0 | git-absorb from GitHub releases | -| `bitwarden-secrets-manager` | 1.1.0 | `bws` CLI from bitwarden/sdk-sm GitHub releases, token-only auth, no persisted state | +| `bitwarden-secrets-manager` | 1.2.0 | `bws` CLI from bitwarden/sdk-sm GitHub releases, token-only auth, no persisted state | | `dotfiles-sync` | 1.2.0 | Sync Git/SSH/GPG/npm/gh config from host; SSH key files opt-in (dependsOn helpers4-common) | | `peon-ping` | 1.2.0 | AI agent sound notifications | | `shell-history-per-project` | 1.2.0 | Persistent shell history (zsh/bash/fish) |