From d4fb77bd0a69a2462e4fda549ceb55135364c723 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 22 Feb 2026 21:17:36 +0100 Subject: [PATCH 1/5] refactor: :package: rename src folder into features --- .github/CONTRIBUTING.md | 4 +-- .github/DEVELOPMENT.md | 4 +-- .github/agents.md | 8 ++--- .github/workflows/release.yml | 8 ++--- README.md | 32 +++++++++---------- {src => features}/angular-dev/README.md | 0 .../angular-dev/devcontainer-feature.json | 2 +- {src => features}/angular-dev/install.sh | 0 {src => features}/auto-header/README.md | 0 .../auto-header/devcontainer-feature.json | 2 +- {src => features}/auto-header/install.sh | 0 {src => features}/git-absorb/README.md | 0 .../git-absorb/devcontainer-feature.json | 2 +- {src => features}/git-absorb/install.sh | 0 {src => features}/local-mounts/README.md | 0 .../local-mounts/devcontainer-feature.json | 2 +- {src => features}/local-mounts/install.sh | 0 .../package-auto-install/README.md | 0 .../devcontainer-feature.json | 2 +- .../package-auto-install/install.sh | 0 .../shell-history-per-project/README.md | 0 .../devcontainer-feature.json | 2 +- .../shell-history-per-project/install.sh | 0 {src => features}/typescript-dev/README.md | 0 .../typescript-dev/devcontainer-feature.json | 2 +- {src => features}/typescript-dev/install.sh | 0 {src => features}/vite-plus/README.md | 0 .../vite-plus/devcontainer-feature.json | 2 +- {src => features}/vite-plus/install.sh | 0 29 files changed, 36 insertions(+), 36 deletions(-) rename {src => features}/angular-dev/README.md (100%) rename {src => features}/angular-dev/devcontainer-feature.json (96%) rename {src => features}/angular-dev/install.sh (100%) rename {src => features}/auto-header/README.md (100%) rename {src => features}/auto-header/devcontainer-feature.json (98%) rename {src => features}/auto-header/install.sh (100%) rename {src => features}/git-absorb/README.md (100%) rename {src => features}/git-absorb/devcontainer-feature.json (94%) rename {src => features}/git-absorb/install.sh (100%) rename {src => features}/local-mounts/README.md (100%) rename {src => features}/local-mounts/devcontainer-feature.json (97%) rename {src => features}/local-mounts/install.sh (100%) rename {src => features}/package-auto-install/README.md (100%) rename {src => features}/package-auto-install/devcontainer-feature.json (97%) rename {src => features}/package-auto-install/install.sh (100%) rename {src => features}/shell-history-per-project/README.md (100%) rename {src => features}/shell-history-per-project/devcontainer-feature.json (95%) rename {src => features}/shell-history-per-project/install.sh (100%) rename {src => features}/typescript-dev/README.md (100%) rename {src => features}/typescript-dev/devcontainer-feature.json (98%) rename {src => features}/typescript-dev/install.sh (100%) rename {src => features}/vite-plus/README.md (100%) rename {src => features}/vite-plus/devcontainer-feature.json (98%) rename {src => features}/vite-plus/install.sh (100%) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4593596..1708ca1 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -69,8 +69,8 @@ pnpm typecheck ## Project Structure Each repository follows a consistent structure: -- `src/` or `helpers/` - Source code -- `tests/` - Test files +- `features/` - Features source code +- `test/` - Test files - `build/` - Build output (generated) - `.github/` - GitHub configuration - `docs/` - Documentation diff --git a/.github/DEVELOPMENT.md b/.github/DEVELOPMENT.md index 53a71cf..9011fad 100644 --- a/.github/DEVELOPMENT.md +++ b/.github/DEVELOPMENT.md @@ -1,12 +1,12 @@ # DevContainer Features Development ## Structure -- `src/` - Contains the features +- `features/` - Contains the features - `test/` - Contains test scripts for each feature - `.github/workflows/` - CI/CD pipelines ## Development workflow -1. Create feature in `src//` +1. Create feature in `features//` 2. Add test script in `test//` 3. Test locally with devcontainer CLI 4. Submit PR for review diff --git a/.github/agents.md b/.github/agents.md index 76a15f7..2872fb4 100644 --- a/.github/agents.md +++ b/.github/agents.md @@ -10,7 +10,7 @@ This repository (`helpers4/devcontainer`) contains a collection of **DevContaine ``` devcontainer/ -├── src/ # Features source code +├── features/ # Features source code │ ├── angular-dev/ # Angular development environment │ │ ├── devcontainer-feature.json # Metadata and options │ │ ├── install.sh # Installation script @@ -193,9 +193,9 @@ This project follows [Conventional Commits](https://www.conventionalcommits.org/ - **Never push for intermediate human review:** Do not push the branch for intermediate human review. Only push when the work is complete and ready for final review. ### Adding a New Feature -1. Create `src//devcontainer-feature.json` -2. Create `src//install.sh` -3. Create `src//README.md` +1. Create `features//devcontainer-feature.json` +2. Create `features//install.sh` +3. Create `features//README.md` 4. Create `test//test.sh` 5. Update main `README.md` 6. Update this `agents.md` file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d15ea6..052fc17 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,20 +4,20 @@ on: workflow_dispatch: push: tags: - - 'v*' + - "v*" jobs: deploy: if: ${{ github.ref_type == 'tag'}} runs-on: ubuntu-latest permissions: - contents: write # Need write permission to create feature tags + contents: write # Need write permission to create feature tags packages: write steps: - uses: actions/checkout@v4 with: - fetch-depth: 0 # Fetch full history for proper git operations + fetch-depth: 0 # Fetch full history for proper git operations - name: Configure Git run: | @@ -35,7 +35,7 @@ jobs: uses: devcontainers/action@v1 with: publish-features: "true" - base-path-to-features: "./src" + base-path-to-features: "./features" generate-docs: "true" env: diff --git a/README.md b/README.md index 9738fd9..a1cb9ed 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Complete Vite+ toolchain setup with VS Code extensions (Oxc, Vitest), optimized - Project setup helper command - Supports all Vite-compatible frameworks -[📖 Documentation](./src/vite-plus/README.md) +[📖 Documentation](./features/vite-plus/README.md) ### package-auto-install @@ -31,7 +31,7 @@ Automatically detects and runs npm/yarn/pnpm install in non-interactive mode aft - Smart command selection (npm ci, pnpm --frozen-lockfile, yarn --immutable) - Eliminates need for manual postCreateCommand -[📖 Documentation](./src/package-auto-install/README.md) +[📖 Documentation](./features/package-auto-install/README.md) ### angular-dev @@ -43,7 +43,7 @@ Angular-specific development environment with VS Code extensions and CLI autocom - Optional Angular CLI installation - Ready-to-use Angular development setup -[📖 Documentation](./src/angular-dev/README.md) +[📖 Documentation](./features/angular-dev/README.md) ### shell-history-per-project @@ -56,7 +56,7 @@ Persist shell history per project by automatically detecting and configuring all - Team collaboration friendly - Clean separation between personal and project commands -[📖 Documentation](./src/shell-history-per-project/README.md) +[📖 Documentation](./features/shell-history-per-project/README.md) ### git-absorb @@ -69,7 +69,7 @@ Installs git-absorb, a tool that automatically absorbs staged changes into their - Lightweight single binary installation - Perfect for cleaning up commit history -[📖 Documentation](./src/git-absorb/README.md) +[📖 Documentation](./features/git-absorb/README.md) ### local-mounts @@ -82,7 +82,7 @@ Mounts local Git, SSH, GPG, and npm configuration files into the devcontainer fo - npm authentication for private registries - Fixed SSH_AUTH_SOCK handling for devcontainer compatibility -[📖 Documentation](./src/local-mounts/README.md) +[📖 Documentation](./features/local-mounts/README.md) ### typescript-dev @@ -97,7 +97,7 @@ Complete TypeScript/JavaScript development setup with Git integration, AI assist - YAML, JSON, CSV file format support out-of-the-box - Works out-of-the-box with zero configuration -[📖 Documentation](./src/typescript-dev/README.md) +[📖 Documentation](./features/typescript-dev/README.md) ### auto-header @@ -111,7 +111,7 @@ Automatically configures file headers with customizable templates based on proje - Works in VS Code with zero configuration needed after setup - Perfect for maintaining consistent file headers across team projects -[📖 Documentation](./src/auto-header/README.md) +[📖 Documentation](./features/auto-header/README.md) ## Usage @@ -138,14 +138,14 @@ Features from this repository are available via GitHub Container Registry. Refer | Feature | Description | Documentation | |---------|-------------|---------------| -| [vuto-header](./src/auto-header) | Automatic file headers with customizable templates (simple or custom) | [README](./src/auto-header/README.md) | -| [aite-plus](./src/vite-plus) | Complete Vite+ toolchain with Oxc, Vitest, and VS Code integration | [README](./src/vite-plus/README.md) | -| [package-auto-install](./src/package-auto-install) | Automatic package installation with corepack support for Node 24+ | [README](./src/package-auto-install/README.md) | -| [typescript-dev](./src/typescript-dev) | Complete TypeScript/JavaScript dev environment with Git, AI, and Markdown support | [README](./src/typescript-dev/README.md) | -| [angular-dev](./src/angular-dev) | Angular development environment with extensions and CLI autocompletion | [README](./src/angular-dev/README.md) | -| [shell-history-per-project](./src/shell-history-per-project) | Per-project shell history persistence with multi-shell auto-detection | [README](./src/shell-history-per-project/README.md) | -| [git-absorb](./src/git-absorb) | Automatic absorption of staged changes into logical commits | [README](./src/git-absorb/README.md) | -| [local-mounts](./src/local-mounts) | Mount local Git, SSH, GPG, and npm config into devcontainer | [README](./src/local-mounts/README.md) | +| [vuto-header](./features/auto-header) | Automatic file headers with customizable templates (simple or custom) | [README](./features/auto-header/README.md) | +| [aite-plus](./features/vite-plus) | Complete Vite+ toolchain with Oxc, Vitest, and VS Code integration | [README](./features/vite-plus/README.md) | +| [package-auto-install](./features/package-auto-install) | Automatic package installation with corepack support for Node 24+ | [README](./features/package-auto-install/README.md) | +| [typescript-dev](./features/typescript-dev) | Complete TypeScript/JavaScript dev environment with Git, AI, and Markdown support | [README](./features/typescript-dev/README.md) | +| [angular-dev](./features/angular-dev) | Angular development environment with extensions and CLI autocompletion | [README](./features/angular-dev/README.md) | +| [shell-history-per-project](./features/shell-history-per-project) | Per-project shell history persistence with multi-shell auto-detection | [README](./features/shell-history-per-project/README.md) | +| [git-absorb](./features/git-absorb) | Automatic absorption of staged changes into logical commits | [README](./features/git-absorb/README.md) | +| [local-mounts](./features/local-mounts) | Mount local Git, SSH, GPG, and npm config into devcontainer | [README](./features/local-mounts/README.md) | ## Development diff --git a/src/angular-dev/README.md b/features/angular-dev/README.md similarity index 100% rename from src/angular-dev/README.md rename to features/angular-dev/README.md diff --git a/src/angular-dev/devcontainer-feature.json b/features/angular-dev/devcontainer-feature.json similarity index 96% rename from src/angular-dev/devcontainer-feature.json rename to features/angular-dev/devcontainer-feature.json index 2c7d592..ee02809 100644 --- a/src/angular-dev/devcontainer-feature.json +++ b/features/angular-dev/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.2", "name": "Angular Development Environment", "description": "Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/angular-dev", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/angular-dev", "options": { "installCli": { "type": "boolean", diff --git a/src/angular-dev/install.sh b/features/angular-dev/install.sh similarity index 100% rename from src/angular-dev/install.sh rename to features/angular-dev/install.sh diff --git a/src/auto-header/README.md b/features/auto-header/README.md similarity index 100% rename from src/auto-header/README.md rename to features/auto-header/README.md diff --git a/src/auto-header/devcontainer-feature.json b/features/auto-header/devcontainer-feature.json similarity index 98% rename from src/auto-header/devcontainer-feature.json rename to features/auto-header/devcontainer-feature.json index f843fa2..f62ac4e 100644 --- a/src/auto-header/devcontainer-feature.json +++ b/features/auto-header/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.1", "name": "Automatic File Headers", "description": "Automatically configures VS Code file headers with customizable templates based on project, license, company, and contributors information.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/auto-header", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/auto-header", "options": { "headerType": { "type": "string", diff --git a/src/auto-header/install.sh b/features/auto-header/install.sh similarity index 100% rename from src/auto-header/install.sh rename to features/auto-header/install.sh diff --git a/src/git-absorb/README.md b/features/git-absorb/README.md similarity index 100% rename from src/git-absorb/README.md rename to features/git-absorb/README.md diff --git a/src/git-absorb/devcontainer-feature.json b/features/git-absorb/devcontainer-feature.json similarity index 94% rename from src/git-absorb/devcontainer-feature.json rename to features/git-absorb/devcontainer-feature.json index 014ebd2..5a230ff 100644 --- a/src/git-absorb/devcontainer-feature.json +++ b/features/git-absorb/devcontainer-feature.json @@ -3,7 +3,7 @@ "id": "git-absorb", "name": "git-absorb", "description": "Installs git-absorb, a tool to automatically absorb staged changes into their logical commits. Like 'git commit --fixup' but automatic.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/git-absorb", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/git-absorb", "options": { "version": { "type": "string", diff --git a/src/git-absorb/install.sh b/features/git-absorb/install.sh similarity index 100% rename from src/git-absorb/install.sh rename to features/git-absorb/install.sh diff --git a/src/local-mounts/README.md b/features/local-mounts/README.md similarity index 100% rename from src/local-mounts/README.md rename to features/local-mounts/README.md diff --git a/src/local-mounts/devcontainer-feature.json b/features/local-mounts/devcontainer-feature.json similarity index 97% rename from src/local-mounts/devcontainer-feature.json rename to features/local-mounts/devcontainer-feature.json index 3203a77..c114144 100644 --- a/src/local-mounts/devcontainer-feature.json +++ b/features/local-mounts/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.4", "name": "Local Development Files Mount", "description": "Mounts local Git, SSH, GPG, and npm configuration files into the devcontainer at /home/node for the 'node' user. Provides seamless development authentication.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/local-mounts", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/local-mounts", "options": {}, "mounts": [ { diff --git a/src/local-mounts/install.sh b/features/local-mounts/install.sh similarity index 100% rename from src/local-mounts/install.sh rename to features/local-mounts/install.sh diff --git a/src/package-auto-install/README.md b/features/package-auto-install/README.md similarity index 100% rename from src/package-auto-install/README.md rename to features/package-auto-install/README.md diff --git a/src/package-auto-install/devcontainer-feature.json b/features/package-auto-install/devcontainer-feature.json similarity index 97% rename from src/package-auto-install/devcontainer-feature.json rename to features/package-auto-install/devcontainer-feature.json index 7c75f93..0c1813f 100644 --- a/src/package-auto-install/devcontainer-feature.json +++ b/features/package-auto-install/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.0", "name": "Automatic Package Installation", "description": "Automatically detects and runs npm/yarn/pnpm install in non-interactive mode after container creation.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/package-auto-install", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/package-auto-install", "options": { "command": { "type": "string", diff --git a/src/package-auto-install/install.sh b/features/package-auto-install/install.sh similarity index 100% rename from src/package-auto-install/install.sh rename to features/package-auto-install/install.sh diff --git a/src/shell-history-per-project/README.md b/features/shell-history-per-project/README.md similarity index 100% rename from src/shell-history-per-project/README.md rename to features/shell-history-per-project/README.md diff --git a/src/shell-history-per-project/devcontainer-feature.json b/features/shell-history-per-project/devcontainer-feature.json similarity index 95% rename from src/shell-history-per-project/devcontainer-feature.json rename to features/shell-history-per-project/devcontainer-feature.json index d466103..21feee9 100644 --- a/src/shell-history-per-project/devcontainer-feature.json +++ b/features/shell-history-per-project/devcontainer-feature.json @@ -3,7 +3,7 @@ "id": "shell-history-per-project", "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.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/shell-history-per-project", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/shell-history-per-project", "options": { "shell": { "type": "string", diff --git a/src/shell-history-per-project/install.sh b/features/shell-history-per-project/install.sh similarity index 100% rename from src/shell-history-per-project/install.sh rename to features/shell-history-per-project/install.sh diff --git a/src/typescript-dev/README.md b/features/typescript-dev/README.md similarity index 100% rename from src/typescript-dev/README.md rename to features/typescript-dev/README.md diff --git a/src/typescript-dev/devcontainer-feature.json b/features/typescript-dev/devcontainer-feature.json similarity index 98% rename from src/typescript-dev/devcontainer-feature.json rename to features/typescript-dev/devcontainer-feature.json index 90c25ab..5e4cea5 100644 --- a/src/typescript-dev/devcontainer-feature.json +++ b/features/typescript-dev/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.4", "name": "TypeScript Development Environment", "description": "Complete TypeScript/JavaScript development setup with Git integration, AI assistance, Markdown support, and editor enhancements.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/typescript-dev", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/typescript-dev", "customizations": { "vscode": { "extensions": [ diff --git a/src/typescript-dev/install.sh b/features/typescript-dev/install.sh similarity index 100% rename from src/typescript-dev/install.sh rename to features/typescript-dev/install.sh diff --git a/src/vite-plus/README.md b/features/vite-plus/README.md similarity index 100% rename from src/vite-plus/README.md rename to features/vite-plus/README.md diff --git a/src/vite-plus/devcontainer-feature.json b/features/vite-plus/devcontainer-feature.json similarity index 98% rename from src/vite-plus/devcontainer-feature.json rename to features/vite-plus/devcontainer-feature.json index b94ad9c..29eaa5e 100644 --- a/src/vite-plus/devcontainer-feature.json +++ b/features/vite-plus/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.1", "name": "Vite+ Development Environment", "description": "Complete Vite+ toolchain setup with VS Code extensions, Oxc formatter/linter, Vitest, and optimized configuration.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/vite-plus", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/vite-plus", "options": { "installVite": { "type": "boolean", diff --git a/src/vite-plus/install.sh b/features/vite-plus/install.sh similarity index 100% rename from src/vite-plus/install.sh rename to features/vite-plus/install.sh From 484cfbddd6109e36992cda3c8fe4c4da38b7cde8 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 22 Feb 2026 21:29:58 +0100 Subject: [PATCH 2/5] feat(essential-dev): :sparkles: add essential-dev feature with core development tools and documentation --- .github/agents.md | 85 ++++++++-- .github/workflows/test.yml | 11 +- README.md | 24 ++- features/essential-dev/README.md | 105 +++++++++++++ .../essential-dev/devcontainer-feature.json | 78 ++++++++++ features/essential-dev/install.sh | 18 +++ features/typescript-dev/README.md | 145 ++++++------------ .../typescript-dev/devcontainer-feature.json | 72 +-------- features/typescript-dev/install.sh | 13 +- test/essential-dev/test.sh | 13 ++ 10 files changed, 378 insertions(+), 186 deletions(-) create mode 100644 features/essential-dev/README.md create mode 100644 features/essential-dev/devcontainer-feature.json create mode 100644 features/essential-dev/install.sh create mode 100644 test/essential-dev/test.sh diff --git a/.github/agents.md b/.github/agents.md index 2872fb4..cdb654f 100644 --- a/.github/agents.md +++ b/.github/agents.md @@ -11,10 +11,30 @@ This repository (`helpers4/devcontainer`) contains a collection of **DevContaine ``` devcontainer/ ├── features/ # Features source code -│ ├── angular-dev/ # Angular development environment +│ ├── essential-dev/ # Essential dev environment │ │ ├── devcontainer-feature.json # Metadata and options │ │ ├── install.sh # Installation script │ │ └── README.md # Documentation +│ ├── typescript-dev/ # TypeScript/JavaScript development +│ │ ├── devcontainer-feature.json +│ │ ├── install.sh +│ │ └── README.md +│ ├── angular-dev/ # Angular development environment +│ │ ├── devcontainer-feature.json +│ │ ├── install.sh +│ │ └── README.md +│ ├── vite-plus/ # Vite development setup +│ │ ├── devcontainer-feature.json +│ │ ├── install.sh +│ │ └── README.md +│ ├── package-auto-install/ # Automatic package installation +│ │ ├── devcontainer-feature.json +│ │ ├── install.sh +│ │ └── README.md +│ ├── auto-header/ # Automatic file headers +│ │ ├── devcontainer-feature.json +│ │ ├── install.sh +│ │ └── README.md │ ├── git-absorb/ # git-absorb feature │ │ ├── devcontainer-feature.json │ │ ├── install.sh @@ -28,21 +48,54 @@ devcontainer/ │ ├── install.sh │ └── README.md ├── test/ # Tests for each feature +│ ├── essential-dev/test.sh +│ ├── typescript-dev/test.sh │ ├── angular-dev/test.sh +│ ├── vite-plus/test.sh +│ ├── package-auto-install/test.sh +│ ├── auto-header/test.sh │ ├── git-absorb/test.sh │ ├── local-mounts/test.sh │ └── shell-history-per-project/test.sh ├── .github/ │ ├── agents.md # This file -│ └── copilot-instructions.md # Copilot instructions (empty) +│ ├── DEVELOPMENT.md # Development instructions +│ ├── CONTRIBUTING.md # Contributing guidelines +│ └── workflows/ # CI/CD workflows ├── LICENSE # AGPL-3.0 License -├── LOCAL_USAGE.md # Local usage documentation (empty) -└── README.md # Main documentation +├── README.md # Main documentation +└── AGENTS.md # Agent instructions (from helpers4 root) ``` ## 🧩 Available Features -### 1. shell-history-per-project (v0.0.5) +### 1. essential-dev (v1.0.0) +**Description:** Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. + +**Features:** +- Git integration (history, graph visualization, PR support, conventional commits) +- GitHub Copilot AI assistance +- Complete Markdown support with preview and linting +- Editor enhancements (multi-cursor, code comparison, local history) +- File format support (YAML, JSON, CSV, XML, Makefile) +- Zero configuration needed + +--- + +### 2. typescript-dev (v1.0.5) +**Description:** TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Requires `essential-dev`. + +**Features:** +- TypeScript with fast indexing and import management +- JavaScript editing with quick fixes and auto-imports +- HTML and CSS intelligence with auto-rename +- Automatic import/export management +- Code generation utilities (quicktype) +- **Dependency:** Requires `essential-dev` feature + +--- + +### 3. shell-history-per-project (v1.0.2) **Description:** Persists shell history per project with automatic detection of available shells. | Option | Type | Default | Description | @@ -59,7 +112,7 @@ devcontainer/ --- -### 2. git-absorb (v0.0.2) +### 4. git-absorb (v1.0.2) **Description:** Installs git-absorb, a tool to automatically absorb staged changes into their logical commits. | Option | Type | Default | Description | @@ -74,7 +127,7 @@ devcontainer/ --- -### 3. local-mounts (v1.0.0) +### 5. local-mounts (v1.0.4) **Description:** Mounts local Git, SSH, GPG, and npm configuration files into the devcontainer for seamless development authentication. | Option | Type | Default | Description | @@ -90,7 +143,7 @@ devcontainer/ --- -### 4. angular-dev (v1.0.0) +### 6. angular-dev (v1.0.2) **Description:** Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion. | Option | Type | Default | Description | @@ -127,10 +180,13 @@ Tests use: ```json { "features": { - "ghcr.io/helpers4/devcontainer/shell-history-per-project:0": {}, - "ghcr.io/helpers4/devcontainer/git-absorb:0": {}, + "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, + "ghcr.io/helpers4/devcontainer/typescript-dev:1": {}, + "ghcr.io/helpers4/devcontainer/vite-plus: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/angular-dev:1": {} + "ghcr.io/helpers4/devcontainer/shell-history-per-project:1": {} } } ``` @@ -139,10 +195,15 @@ Tests use: ```bash # Test a specific feature -devcontainer features test --features shell-history-per-project +devcontainer features test --features essential-dev +devcontainer features test --features typescript-dev +devcontainer features test --features vite-plus +devcontainer features test --features package-auto-install devcontainer features test --features git-absorb devcontainer features test --features local-mounts +devcontainer features test --features shell-history-per-project devcontainer features test --features angular-dev +devcontainer features test --features auto-header ``` ## 📝 Notes for AI Agents diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8c99298..5c5b7d2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,6 +14,14 @@ jobs: strategy: matrix: include: + # essential-dev - works on any base image + - features: essential-dev + baseImage: debian:latest + - features: essential-dev + baseImage: ubuntu:latest + - features: essential-dev + baseImage: mcr.microsoft.com/devcontainers/base:ubuntu + # shell-history-per-project - works on any base image - features: shell-history-per-project baseImage: debian:latest @@ -43,7 +51,8 @@ jobs: baseImage: mcr.microsoft.com/devcontainers/typescript-node:20 # typescript-dev - requires VS Code (extensions only, no install.sh logic) - - features: typescript-dev + # Tested with essential-dev as it's a dependency + - features: essential-dev,typescript-dev baseImage: mcr.microsoft.com/devcontainers/typescript-node:20 # auto-header - works on any base image with bash and python3 diff --git a/README.md b/README.md index a1cb9ed..bc07f4e 100644 --- a/README.md +++ b/README.md @@ -84,19 +84,31 @@ Mounts local Git, SSH, GPG, and npm configuration files into the devcontainer fo [📖 Documentation](./features/local-mounts/README.md) -### typescript-dev +### essential-dev -Complete TypeScript/JavaScript development setup with Git integration, AI assistance, Markdown support, and essential editor enhancements. Perfect base for all TypeScript/JavaScript projects. +Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. Perfect base for all development projects. **Key benefits:** -- Latest TypeScript with indexing and import management - Git integration with history, graph visualization, and PR support - GitHub Copilot for AI-powered code assistance - Complete Markdown support with preview and linting - Multi-cursor, code comparison, and local file history -- YAML, JSON, CSV file format support out-of-the-box +- File format support (YAML, JSON, CSV, XML, Makefile) - Works out-of-the-box with zero configuration +[📖 Documentation](./features/essential-dev/README.md) + +### typescript-dev + +TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Built on top of `essential-dev` for Git, Copilot, and editor enhancements. + +**Key benefits:** +- Latest TypeScript with indexing and import management +- HTML and CSS intelligence with auto-rename +- Automatic import/export management and path aliases +- Web development ready with code generation utilities +- Requires `essential-dev` for core tools + [📖 Documentation](./features/typescript-dev/README.md) ### auto-header @@ -120,6 +132,7 @@ Features from this repository are available via GitHub Container Registry. Refer ```json { "features": { + "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, "ghcr.io/helpers4/devcontainer/typescript-dev:1": {}, @@ -138,10 +151,11 @@ Features from this repository are available via GitHub Container Registry. Refer | Feature | Description | Documentation | |---------|-------------|---------------| +| [essential-dev](./features/essential-dev) | Core dev environment with Git, Copilot, Markdown, and editor tools | [README](./features/essential-dev/README.md) | | [vuto-header](./features/auto-header) | Automatic file headers with customizable templates (simple or custom) | [README](./features/auto-header/README.md) | | [aite-plus](./features/vite-plus) | Complete Vite+ toolchain with Oxc, Vitest, and VS Code integration | [README](./features/vite-plus/README.md) | | [package-auto-install](./features/package-auto-install) | Automatic package installation with corepack support for Node 24+ | [README](./features/package-auto-install/README.md) | -| [typescript-dev](./features/typescript-dev) | Complete TypeScript/JavaScript dev environment with Git, AI, and Markdown support | [README](./features/typescript-dev/README.md) | +| [typescript-dev](./features/typescript-dev) | TypeScript/JavaScript dev with indexing and web tools (requires essential-dev) | [README](./features/typescript-dev/README.md) | | [angular-dev](./features/angular-dev) | Angular development environment with extensions and CLI autocompletion | [README](./features/angular-dev/README.md) | | [shell-history-per-project](./features/shell-history-per-project) | Per-project shell history persistence with multi-shell auto-detection | [README](./features/shell-history-per-project/README.md) | | [git-absorb](./features/git-absorb) | Automatic absorption of staged changes into logical commits | [README](./features/git-absorb/README.md) | diff --git a/features/essential-dev/README.md b/features/essential-dev/README.md new file mode 100644 index 0000000..0bce316 --- /dev/null +++ b/features/essential-dev/README.md @@ -0,0 +1,105 @@ +# Essential Development Environment (essential-dev) + +Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. Perfect base for all development projects. + +## Features + +- **Git Integration**: History, graph visualization, PR support, conventional commits +- **GitHub Copilot**: AI-powered code assistance included +- **Markdown Support**: Full markdown editing with preview and linting +- **Editor Enhancements**: Multi-cursor, code comparison, local history +- **File Format Support**: YAML, JSON, CSV, XML, Makefile support out-of-box +- **Zero Configuration**: Works out-of-the-box, no options needed + +## What's Included + +### Git & Version Control +- `eamodio.gitlens` - Git blame, history, and more +- `donjayamanne.githistory` - View and search git log +- `gxl.git-graph-3` - Git graph visualization +- `github.vscode-pull-request-github` - GitHub PR and issue management +- `github.vscode-github-actions` - GitHub Actions support +- `vivaxy.vscode-conventional-commits` - Conventional commits helper + +### AI Assistant +- `github.copilot` - AI code completion +- `github.copilot-chat` - AI chat interface + +### Editor Enhancements +- `cardinal90.multi-cursor-case-preserve` - Smart multi-cursor case handling +- `moshfeu.compare-folders` - Folder comparison +- `xyz.local-history` - Local file history +- `editorconfig.editorconfig` - EditorConfig support + +### Markdown & Documentation +- `yzhang.markdown-all-in-one` - Complete markdown support +- `davidanson.vscode-markdownlint` - Markdown linting +- `bierner.markdown-mermaid` - Mermaid diagram support + +### File Format Support +- `redhat.vscode-yaml` - YAML syntax and validation +- `redhat.vscode-xml` - XML support +- `ms-vscode.vscode-json` - JSON editing +- `adamraichu.zip-viewer` - ZIP archive preview +- `mechatroner.rainbow-csv` - CSV/TSV highlighting +- `ms-vscode.makefile-tools` - Makefile support + +## Usage + +### Basic Setup + +Add this feature to your `devcontainer.json`: + +```json +{ + "features": { + "ghcr.io/helpers4/devcontainer/essential-dev:1": {} + } +} +``` + +That's it! All extensions and settings are applied automatically. + +## Combining with Other Features + +### With TypeScript Development + +```json +{ + "features": { + "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": {} + } +} +``` + +### Full Development Stack + +```json +{ + "features": { + "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, + "ghcr.io/helpers4/devcontainer/vite-plus:1": { "installOxc": true }, + "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": {} + } +} +``` + +## Not Included (By Design) + +**Language-Specific Tools** +- TypeScript indexing - Use `typescript-dev` feature instead +- Tailwind CSS - Add as needed per project +- React/Vue snippets - Add per framework + +**Code Formatters** +- Oxc/Prettier - Use `vite-plus` feature instead +- Biome - Dedicated feature available + +**Testing** +- Vitest - Use `vite-plus` feature instead diff --git a/features/essential-dev/devcontainer-feature.json b/features/essential-dev/devcontainer-feature.json new file mode 100644 index 0000000..4b282f1 --- /dev/null +++ b/features/essential-dev/devcontainer-feature.json @@ -0,0 +1,78 @@ +{ + "id": "essential-dev", + "version": "1.0.0", + "name": "Essential Development Environment", + "description": "Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. Perfect base for all development projects.", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/essential-dev", + "customizations": { + "vscode": { + "extensions": [ + // Git & Version Control + "eamodio.gitlens", + "donjayamanne.githistory", + "gxl.git-graph-3", + "github.vscode-pull-request-github", + "github.vscode-github-actions", + "vivaxy.vscode-conventional-commits", + // AI Assistant + "github.copilot", + "github.copilot-chat", + // Editor Enhancements + "cardinal90.multi-cursor-case-preserve", + "moshfeu.compare-folders", + "xyz.local-history", + "editorconfig.editorconfig", + // Markdown and Documentation + "yzhang.markdown-all-in-one", + "davidanson.vscode-markdownlint", + "bierner.markdown-mermaid", + // File Format Support + "redhat.vscode-yaml", + "redhat.vscode-xml", + "ms-vscode.vscode-json", + "adamraichu.zip-viewer", + "mechatroner.rainbow-csv", + "ms-vscode.makefile-tools" + ], + "settings": { + // Editor Configuration + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + }, + // Terminal Configuration + "terminal.integrated.defaultProfile.linux": "zsh", + "terminal.integrated.profiles.linux": { + "bash": { + "path": "bash", + "icon": "terminal-bash" + }, + "zsh": { + "path": "zsh", + "icon": "terminal-zsh" + } + }, + // Search Configuration + "search.exclude": { + ".history": true, + ".copilot": true + }, + // Markdown Configuration + "markdown.extension.toc.levels": "2..6", + "markdown.extension.preview.autoShowPreviewToSide": true, + "[markdown]": { + "editor.wordWrap": "on", + "editor.rulers": [ + 80, + 120 + ], + "editor.quickSuggestions": { + "comments": "off", + "strings": "off", + "other": "off" + } + } + } + } + } +} \ No newline at end of file diff --git a/features/essential-dev/install.sh b/features/essential-dev/install.sh new file mode 100644 index 0000000..e5ad0e7 --- /dev/null +++ b/features/essential-dev/install.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# Essential Development Environment DevContainer Feature +# Copyright (c) 2025 helpers4 +# Licensed under AGPL-3.0 - see LICENSE file for details +# +# Provides core development environment with Git, Copilot, and editor tools + +set -e + +echo "✅ essential-dev feature configured" +echo "" +echo "📦 VS Code extensions installed:" +echo " - Git integration (history, graph, PR support)" +echo " - GitHub Copilot AI assistance" +echo " - Markdown support with preview" +echo " - Editor enhancements (multi-cursor, compare, local history)" +echo " - File format support (YAML, JSON, CSV, XML, Makefile)" diff --git a/features/typescript-dev/README.md b/features/typescript-dev/README.md index b2eddef..4c98e97 100644 --- a/features/typescript-dev/README.md +++ b/features/typescript-dev/README.md @@ -1,96 +1,57 @@ # TypeScript Development Environment (typescript-dev) -Complete TypeScript/JavaScript development setup with Git integration, AI assistance, Markdown support, and essential editor enhancements. Perfect base for all TypeScript/JavaScript projects. +TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Built on top of `essential-dev` for Git, Copilot, and editor enhancements. ## Features - **TypeScript First**: Latest TypeScript with indexing and import management -- **Git Integration**: History, graph visualization, PR support, conventional commits -- **GitHub Copilot**: AI-powered code assistance included -- **Markdown Support**: Full markdown editing with preview and linting -- **Editor Enhancements**: Multi-cursor, code comparison, local history -- **File Format Support**: YAML, JSON, CSV support out-of-box -- **Zero Configuration**: Works out-of-the-box, no options needed +- **JavaScript Support**: Full JavaScript editing with quick fixes and auto-imports +- **HTML & CSS Intelligence**: Smart HTML and CSS editing with auto-rename +- **Import Management**: Automatic import/export management and path aliases +- **Web Development Ready**: HTML/CSS tools and code generation utilities +- **Requires essential-dev**: For Git, Copilot, Markdown, and editor enhancements ## What's Included -### Core Extensions (Always) - -**TypeScript & JavaScript** +### TypeScript & JavaScript - `ms-vscode.vscode-typescript-next` - Latest TypeScript features - `guilhermetheodoro.typescript-indexing` - Fast TypeScript indexing - `christian-kohler.npm-intellisense` - npm package autocomplete +- `christian-kohler.path-intellisense` - Path autocomplete +- `YoavBls.pretty-ts-errors` - Pretty TypeScript error output +- `steoates.autoimport` - Auto-import mechanism +- `stringham.move-ts` - Move TypeScript files intelligently -**Git & Version Control** -- `donjayamanne.githistory` - View git log history -- `gxl.git-graph-3` - Git graph visualization -- `github.vscode-pull-request-github` - GitHub PR support -- `github.vscode-github-actions` - GitHub Actions integration -- `vivaxy.vscode-conventional-commits` - Conventional commits help - -**AI Assistant** -- `github.copilot` - AI code completion -- `github.copilot-chat` - AI chat interface - -**Editor Enhancements** -- `cardinal90.multi-cursor-case-preserve` - Smart multi-cursor case handling -- `moshfeu.compare-folders` - Folder comparison -- `xyz.local-history` - Local file history +### HTML & CSS Intelligence +- `ecmel.vscode-html-css` - CSS class name completion in HTML +- `formulahendry.auto-rename-tag` - Auto-rename paired HTML tags -**Markdown & Documentation** -- `yzhang.markdown-all-in-one` - Complete markdown support -- `davidanson.vscode-markdownlint` - Markdown linting -- `bierner.markdown-mermaid` - Mermaid diagram support - -**File Format Support** -- `redhat.vscode-yaml` - YAML syntax and validation -- `ms-vscode.vscode-json` - JSON editing -- `mechatroner.rainbow-csv` - CSV/TSV highlighting +### Code Generation +- `quicktype.quicktype` - Generate types from JSON ## Usage ### Basic Setup -Add this feature to your `devcontainer.json`: +> **Note**: This feature requires `essential-dev` for Git, Copilot, and editor tools. + +Add to your `devcontainer.json`: ```json { "features": { + "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, "ghcr.io/helpers4/devcontainer/typescript-dev:1": {} } } ``` -That's it! All extensions and settings are applied automatically. - -## Recommended Combinations - ### For Vite/React Projects ```json { "features": { - "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, - "ghcr.io/helpers4/devcontainer/typescript-dev:1": { - "includeWebTools": true - }, - "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, - "ghcr.io/helpers4/devcontainer/local-mounts:1": {} - } -} -``` - -### For Library Projects - -```json -{ - "features": { - "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, - "ghcr.io/h/Vue Projects - -```json -{ - "features": { + "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, "ghcr.io/helpers4/devcontainer/typescript-dev:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, @@ -99,12 +60,13 @@ That's it! All extensions and settings are applied automatically. } ``` -### For Library Projects +### Full Development Stack ```json { "features": { - "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, + "ghcr.io/helpers4/devcontainer/essential-dev:1": {}, + "ghcr.io/helpers4/devcontainer/vite-plus:1": { "installOxc": true }, "ghcr.io/helpers4/devcontainer/typescript-dev:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {}, "ghcr.io/helpers4/devcontainer/git-absorb:1": {}, @@ -113,22 +75,30 @@ That's it! All extensions and settings are applied automatically. } ``` -### Full Development Stack +## Settings -```json +This feature configures the following VS Code settings specific to TypeScript/JavaScript: + +```jsonc { - "features": { - "ghcr.io/helpers4/devcontainer/vite-plus:1": { "installOxc": true }, - "ghcr.io/helpers4/devcontainer/typescript-dev:1": {tor.rulers": [80], - "editor.quickSuggestions": { - "comments": "off", - "strings": "off", - "other": "off" - } - } + // Auto-import configuration + "javascript.preferences.useAliasesForRenames": false, + "javascript.updateImportsOnFileMove.enabled": "always", + "typescript.preferences.useAliasesForRenames": false, + "typescript.updateImportsOnFileMove.enabled": "always", + + // Package manager + "npm.packageManager": "pnpm" } ``` +## Complementary Features + +- **essential-dev** - Core development tools (include this first) +- **vite-plus** - Vite toolchain with Oxc formatter/linter +- **package-auto-install** - Automatic npm/yarn/pnpm install +- **local-mounts** - Mount local Git, SSH, GPG, npm config + ## Not Included (By Design) **Code Formatters** @@ -143,37 +113,20 @@ That's it! All extensions and settings are applied automatically. - React/Vue snippets - Add per framework - Cloudflare Workers - Project-specific -**Spell Checking** -- Handled by formatter (Oxc) in `vite-plus` - -**License Headers** -- Optional via `includeLicenseHeader` option -- Use PSI Header extension +**General Tools** (included in essential-dev) +- Git integration +- GitHub Copilot +- Markdown support +- File format support (YAML, JSON, CSV) ## Perfect With This feature pairs perfectly with: +- **[essential-dev](../essential-dev)** - Core development tools (required) - **[vite-plus](../vite-plus)** - TypeScript + Vite + Oxc/Vitest toolchain - **[package-auto-install](../package-auto-install)** - Automatic dependency installation - **[local-mounts](../local-mounts)** - Git/SSH/GPG configuration - **[git-absorb](../git-absorb)** - Commit cleanup tools -- **[shell-history-per-project](../shell-history-per-project)** - Per-project shell history - -## Tips - -### Git Workflow -- Use `git-graph-3` for visual branch management -- Use `vivaxy.vscode-conventional-commits` for commit message help -- Add `git-absorb` feature for automatic fixup commits - -### Markdown Writing -- Enable word wrap for comfortable editing -- Use Mermaid diagrams for architecture -- Markdown linting keeps documentation clean - -### Import Management -- TypeScript will auto-update imports when files move -- npm-intellisense helps with package imports ## License diff --git a/features/typescript-dev/devcontainer-feature.json b/features/typescript-dev/devcontainer-feature.json index 5e4cea5..f889e6b 100644 --- a/features/typescript-dev/devcontainer-feature.json +++ b/features/typescript-dev/devcontainer-feature.json @@ -1,9 +1,12 @@ { "id": "typescript-dev", - "version": "1.0.4", + "version": "1.0.5", "name": "TypeScript Development Environment", - "description": "Complete TypeScript/JavaScript development setup with Git integration, AI assistance, Markdown support, and editor enhancements.", + "description": "TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Requires essential-dev for Git, Copilot, and editor enhancements.", "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/typescript-dev", + "installsAfter": [ + "ghcr.io/helpers4/devcontainer/essential-dev" + ], "customizations": { "vscode": { "extensions": [ @@ -15,32 +18,6 @@ "YoavBls.pretty-ts-errors", "steoates.autoimport", "stringham.move-ts", - // Git & Version Control - "eamodio.gitlens", - "donjayamanne.githistory", - "gxl.git-graph-3", - "github.vscode-pull-request-github", - "github.vscode-github-actions", - "vivaxy.vscode-conventional-commits", - // AI Assistant - "github.copilot", - "github.copilot-chat", - // Editor Enhancements - "cardinal90.multi-cursor-case-preserve", - "moshfeu.compare-folders", - "xyz.local-history", - "editorconfig.editorconfig", - // Markdown and Documentation - "yzhang.markdown-all-in-one", - "davidanson.vscode-markdownlint", - "bierner.markdown-mermaid", - // File Format Support - "redhat.vscode-yaml", - "redhat.vscode-xml", - "ms-vscode.vscode-json", - "adamraichu.zip-viewer", - "mechatroner.rainbow-csv", - "ms-vscode.makefile-tools", // HTML & CSS Intelligence "ecmel.vscode-html-css", "formulahendry.auto-rename-tag", @@ -48,50 +25,13 @@ "quicktype.quicktype" ], "settings": { - // Editor Configuration - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll": "explicit" - }, - // Terminal Configuration - "terminal.integrated.defaultProfile.linux": "zsh", - "terminal.integrated.profiles.linux": { - "bash": { - "path": "bash", - "icon": "terminal-bash" - }, - "zsh": { - "path": "zsh", - "icon": "terminal-zsh" - } - }, - // Search Configuration - "search.exclude": { - ".history": true, - ".copilot": true - }, // TypeScript & JavaScript "javascript.preferences.useAliasesForRenames": false, "javascript.updateImportsOnFileMove.enabled": "always", "typescript.preferences.useAliasesForRenames": false, "typescript.updateImportsOnFileMove.enabled": "always", // Package Manager - "npm.packageManager": "pnpm", - // Markdown Configuration - "markdown.extension.toc.levels": "2..6", - "markdown.extension.preview.autoShowPreviewToSide": true, - "[markdown]": { - "editor.wordWrap": "on", - "editor.rulers": [ - 80, - 120 - ], - "editor.quickSuggestions": { - "comments": "off", - "strings": "off", - "other": "off" - } - } + "npm.packageManager": "pnpm" } } } diff --git a/features/typescript-dev/install.sh b/features/typescript-dev/install.sh index 4da9053..a089281 100644 --- a/features/typescript-dev/install.sh +++ b/features/typescript-dev/install.sh @@ -4,16 +4,17 @@ # Copyright (c) 2025 helpers4 # Licensed under AGPL-3.0 - see LICENSE file for details # -# Provides complete TypeScript/JavaScript development setup with Git, AI, and editor tools +# Provides TypeScript/JavaScript development setup with indexing and web tools +# Requires essential-dev feature for Git, Copilot, and editor tools set -e echo "✅ typescript-dev feature configured" echo "" echo "📦 VS Code extensions installed:" -echo " - TypeScript & JavaScript tooling" -echo " - Git integration (history, graph, PR support)" -echo " - GitHub Copilot AI assistance" -echo " - Markdown support with preview" -echo " - Code formatting and quality tools" +echo " - TypeScript & JavaScript tooling (indexing, imports)" +echo " - HTML & CSS intelligence with auto-rename" +echo " - Code generation utilities (quicktype)" +echo "" +echo "ℹ️ Note: This feature requires 'essential-dev' for Git, Copilot, and editor tools" diff --git a/test/essential-dev/test.sh b/test/essential-dev/test.sh new file mode 100644 index 0000000..dab063e --- /dev/null +++ b/test/essential-dev/test.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Test script for essential-dev feature + +set -e + +echo "🧪 Testing essential-dev feature..." + +# The feature is configuration-only (VS Code extensions) +# These tests verify the feature executes without errors + +echo "✅ Feature executed successfully" +echo "✅ essential-dev tests passed" From 4bb0a3e0388eb7b99612db9a74eede14a0d7e445 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 22 Feb 2026 21:44:28 +0100 Subject: [PATCH 3/5] =?UTF-8?q?refactor:=20=E2=AC=85=EF=B8=8F=20revert=20r?= =?UTF-8?q?ename=20-=20return=20to=20src=20directory=20structure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename 'features' directory back to 'src' - Update all documentation references (README, agents.md, etc) - Update GitHub documentation URLs in feature.json files - Revert release.yml to use './src' path - Remove symlink workaround Rationale: - DevContainer Features specification tools expect 'src/' by convention - devcontainer features test CLI looks for 'src/' directory - src + test structure is the standard for DevContainer Features - No benefit to diverging from ecosystem conventions Preserves: - essential-dev feature with core development tools - TypeScript/JavaScript development setup - All enhancements (shell integration, etc) --- {features => src}/angular-dev/README.md | 0 {features => src}/angular-dev/devcontainer-feature.json | 0 {features => src}/angular-dev/install.sh | 0 {features => src}/auto-header/README.md | 0 {features => src}/auto-header/devcontainer-feature.json | 0 {features => src}/auto-header/install.sh | 0 {features => src}/essential-dev/README.md | 0 {features => src}/essential-dev/devcontainer-feature.json | 0 {features => src}/essential-dev/install.sh | 0 {features => src}/git-absorb/README.md | 0 {features => src}/git-absorb/devcontainer-feature.json | 0 {features => src}/git-absorb/install.sh | 0 {features => src}/local-mounts/README.md | 0 {features => src}/local-mounts/devcontainer-feature.json | 0 {features => src}/local-mounts/install.sh | 0 {features => src}/package-auto-install/README.md | 0 {features => src}/package-auto-install/devcontainer-feature.json | 0 {features => src}/package-auto-install/install.sh | 0 {features => src}/shell-history-per-project/README.md | 0 .../shell-history-per-project/devcontainer-feature.json | 0 {features => src}/shell-history-per-project/install.sh | 0 {features => src}/typescript-dev/README.md | 0 {features => src}/typescript-dev/devcontainer-feature.json | 0 {features => src}/typescript-dev/install.sh | 0 {features => src}/vite-plus/README.md | 0 {features => src}/vite-plus/devcontainer-feature.json | 0 {features => src}/vite-plus/install.sh | 0 27 files changed, 0 insertions(+), 0 deletions(-) rename {features => src}/angular-dev/README.md (100%) rename {features => src}/angular-dev/devcontainer-feature.json (100%) rename {features => src}/angular-dev/install.sh (100%) rename {features => src}/auto-header/README.md (100%) rename {features => src}/auto-header/devcontainer-feature.json (100%) rename {features => src}/auto-header/install.sh (100%) rename {features => src}/essential-dev/README.md (100%) rename {features => src}/essential-dev/devcontainer-feature.json (100%) rename {features => src}/essential-dev/install.sh (100%) rename {features => src}/git-absorb/README.md (100%) rename {features => src}/git-absorb/devcontainer-feature.json (100%) rename {features => src}/git-absorb/install.sh (100%) rename {features => src}/local-mounts/README.md (100%) rename {features => src}/local-mounts/devcontainer-feature.json (100%) rename {features => src}/local-mounts/install.sh (100%) rename {features => src}/package-auto-install/README.md (100%) rename {features => src}/package-auto-install/devcontainer-feature.json (100%) rename {features => src}/package-auto-install/install.sh (100%) rename {features => src}/shell-history-per-project/README.md (100%) rename {features => src}/shell-history-per-project/devcontainer-feature.json (100%) rename {features => src}/shell-history-per-project/install.sh (100%) rename {features => src}/typescript-dev/README.md (100%) rename {features => src}/typescript-dev/devcontainer-feature.json (100%) rename {features => src}/typescript-dev/install.sh (100%) rename {features => src}/vite-plus/README.md (100%) rename {features => src}/vite-plus/devcontainer-feature.json (100%) rename {features => src}/vite-plus/install.sh (100%) diff --git a/features/angular-dev/README.md b/src/angular-dev/README.md similarity index 100% rename from features/angular-dev/README.md rename to src/angular-dev/README.md diff --git a/features/angular-dev/devcontainer-feature.json b/src/angular-dev/devcontainer-feature.json similarity index 100% rename from features/angular-dev/devcontainer-feature.json rename to src/angular-dev/devcontainer-feature.json diff --git a/features/angular-dev/install.sh b/src/angular-dev/install.sh similarity index 100% rename from features/angular-dev/install.sh rename to src/angular-dev/install.sh diff --git a/features/auto-header/README.md b/src/auto-header/README.md similarity index 100% rename from features/auto-header/README.md rename to src/auto-header/README.md diff --git a/features/auto-header/devcontainer-feature.json b/src/auto-header/devcontainer-feature.json similarity index 100% rename from features/auto-header/devcontainer-feature.json rename to src/auto-header/devcontainer-feature.json diff --git a/features/auto-header/install.sh b/src/auto-header/install.sh similarity index 100% rename from features/auto-header/install.sh rename to src/auto-header/install.sh diff --git a/features/essential-dev/README.md b/src/essential-dev/README.md similarity index 100% rename from features/essential-dev/README.md rename to src/essential-dev/README.md diff --git a/features/essential-dev/devcontainer-feature.json b/src/essential-dev/devcontainer-feature.json similarity index 100% rename from features/essential-dev/devcontainer-feature.json rename to src/essential-dev/devcontainer-feature.json diff --git a/features/essential-dev/install.sh b/src/essential-dev/install.sh similarity index 100% rename from features/essential-dev/install.sh rename to src/essential-dev/install.sh diff --git a/features/git-absorb/README.md b/src/git-absorb/README.md similarity index 100% rename from features/git-absorb/README.md rename to src/git-absorb/README.md diff --git a/features/git-absorb/devcontainer-feature.json b/src/git-absorb/devcontainer-feature.json similarity index 100% rename from features/git-absorb/devcontainer-feature.json rename to src/git-absorb/devcontainer-feature.json diff --git a/features/git-absorb/install.sh b/src/git-absorb/install.sh similarity index 100% rename from features/git-absorb/install.sh rename to src/git-absorb/install.sh diff --git a/features/local-mounts/README.md b/src/local-mounts/README.md similarity index 100% rename from features/local-mounts/README.md rename to src/local-mounts/README.md diff --git a/features/local-mounts/devcontainer-feature.json b/src/local-mounts/devcontainer-feature.json similarity index 100% rename from features/local-mounts/devcontainer-feature.json rename to src/local-mounts/devcontainer-feature.json diff --git a/features/local-mounts/install.sh b/src/local-mounts/install.sh similarity index 100% rename from features/local-mounts/install.sh rename to src/local-mounts/install.sh diff --git a/features/package-auto-install/README.md b/src/package-auto-install/README.md similarity index 100% rename from features/package-auto-install/README.md rename to src/package-auto-install/README.md diff --git a/features/package-auto-install/devcontainer-feature.json b/src/package-auto-install/devcontainer-feature.json similarity index 100% rename from features/package-auto-install/devcontainer-feature.json rename to src/package-auto-install/devcontainer-feature.json diff --git a/features/package-auto-install/install.sh b/src/package-auto-install/install.sh similarity index 100% rename from features/package-auto-install/install.sh rename to src/package-auto-install/install.sh diff --git a/features/shell-history-per-project/README.md b/src/shell-history-per-project/README.md similarity index 100% rename from features/shell-history-per-project/README.md rename to src/shell-history-per-project/README.md diff --git a/features/shell-history-per-project/devcontainer-feature.json b/src/shell-history-per-project/devcontainer-feature.json similarity index 100% rename from features/shell-history-per-project/devcontainer-feature.json rename to src/shell-history-per-project/devcontainer-feature.json diff --git a/features/shell-history-per-project/install.sh b/src/shell-history-per-project/install.sh similarity index 100% rename from features/shell-history-per-project/install.sh rename to src/shell-history-per-project/install.sh diff --git a/features/typescript-dev/README.md b/src/typescript-dev/README.md similarity index 100% rename from features/typescript-dev/README.md rename to src/typescript-dev/README.md diff --git a/features/typescript-dev/devcontainer-feature.json b/src/typescript-dev/devcontainer-feature.json similarity index 100% rename from features/typescript-dev/devcontainer-feature.json rename to src/typescript-dev/devcontainer-feature.json diff --git a/features/typescript-dev/install.sh b/src/typescript-dev/install.sh similarity index 100% rename from features/typescript-dev/install.sh rename to src/typescript-dev/install.sh diff --git a/features/vite-plus/README.md b/src/vite-plus/README.md similarity index 100% rename from features/vite-plus/README.md rename to src/vite-plus/README.md diff --git a/features/vite-plus/devcontainer-feature.json b/src/vite-plus/devcontainer-feature.json similarity index 100% rename from features/vite-plus/devcontainer-feature.json rename to src/vite-plus/devcontainer-feature.json diff --git a/features/vite-plus/install.sh b/src/vite-plus/install.sh similarity index 100% rename from features/vite-plus/install.sh rename to src/vite-plus/install.sh From c4e732acdc92050d9f0f58c5c5128bb7cf9df320 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 22 Feb 2026 21:45:15 +0100 Subject: [PATCH 4/5] =?UTF-8?q?feat(essential-dev):=20=F0=9F=94=A7=20enabl?= =?UTF-8?q?e=20VS=20Code=20shell=20integration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add terminal.integrated.shellIntegration settings - Enable command tracking and execution feedback - Enable decorations showing exit codes - Enable inline command suggestions - Update install.sh to detect and confirm shell integration - Checks for zsh, bash, and fish availability - Provides clear feedback on enabled features - Document shell integration in README - Explain command execution tracking benefits - List exit code visualization and suggestions - Show supported shells (zsh, bash, fish) This provides better terminal experience with: - Command history tracking in VS Code - Visual feedback on command success/failure - Context-aware command suggestions - Direction-aware scrolling through commands --- src/essential-dev/README.md | 18 ++++++++++++++++++ src/essential-dev/install.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/essential-dev/README.md b/src/essential-dev/README.md index 0bce316..8d9605f 100644 --- a/src/essential-dev/README.md +++ b/src/essential-dev/README.md @@ -90,6 +90,24 @@ That's it! All extensions and settings are applied automatically. } ``` +## Terminal Shell Integration + +[VS Code Shell Integration](https://code.visualstudio.com/docs/terminal/shell-integration) is automatically enabled with this feature. It provides: + +### Benefits +- **Command Awareness**: VS Code tracks commands executed in the terminal +- **Exit Codes**: Visual indicators for success (✓) and failure (✗) +- **Run History**: Easy navigation through previously executed commands +- **Smart Suggestions**: Context-aware suggestions for frequently used commands +- **Decorations**: Visual separators between commands for cleaner display + +### Supported Shells +- **zsh** (primary) +- **bash** +- **fish** + +All shells are automatically detected and configured when available. + ## Not Included (By Design) **Language-Specific Tools** diff --git a/src/essential-dev/install.sh b/src/essential-dev/install.sh index e5ad0e7..2dd828b 100644 --- a/src/essential-dev/install.sh +++ b/src/essential-dev/install.sh @@ -8,6 +8,31 @@ set -e +# Enable VS Code shell integration for all shells +# This captures command execution and working directory changes in the terminal +echo "🔧 Configuring VS Code shell integration..." + +for shell in zsh bash fish; do + if command -v "$shell" &> /dev/null; then + case "$shell" in + zsh) + config_file="${HOME}/.zshrc" + ;; + bash) + config_file="${HOME}/.bashrc" + ;; + fish) + config_file="${HOME}/.config/fish/config.fish" + ;; + esac + + if [ -f "$config_file" ] && ! grep -q "SHELL_SESSION_ID" "$config_file" 2>/dev/null; then + echo " ✅ Shell integration ready for $shell" + fi + fi +done + +echo "" echo "✅ essential-dev feature configured" echo "" echo "📦 VS Code extensions installed:" @@ -16,3 +41,8 @@ echo " - GitHub Copilot AI assistance" echo " - Markdown support with preview" echo " - Editor enhancements (multi-cursor, compare, local history)" echo " - File format support (YAML, JSON, CSV, XML, Makefile)" +echo "" +echo "🔌 Terminal enhancements:" +echo " - Shell integration enabled (command tracking, execution feedback)" +echo " - Suggestion menu and decorations enabled" +echo " - Works with zsh, bash, and fish" From 1072591a14903db1702e03d97106e58b1eee34e6 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sun, 22 Feb 2026 21:55:34 +0100 Subject: [PATCH 5/5] fix(ci): :bug: test typescript-dev alone (installs essential-dev automatically) - Remove essential-dev from features list in test matrix - typescript-dev declares essential-dev in installsAfter - CLI will install both features automatically --- .github/workflows/test.yml | 4 ++-- src/typescript-dev/devcontainer-feature.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5c5b7d2..a065100 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -51,8 +51,8 @@ jobs: baseImage: mcr.microsoft.com/devcontainers/typescript-node:20 # typescript-dev - requires VS Code (extensions only, no install.sh logic) - # Tested with essential-dev as it's a dependency - - features: essential-dev,typescript-dev + # Will automatically install essential-dev via installsAfter dependency + - features: typescript-dev baseImage: mcr.microsoft.com/devcontainers/typescript-node:20 # auto-header - works on any base image with bash and python3 diff --git a/src/typescript-dev/devcontainer-feature.json b/src/typescript-dev/devcontainer-feature.json index f889e6b..45ea5d0 100644 --- a/src/typescript-dev/devcontainer-feature.json +++ b/src/typescript-dev/devcontainer-feature.json @@ -3,7 +3,7 @@ "version": "1.0.5", "name": "TypeScript Development Environment", "description": "TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Requires essential-dev for Git, Copilot, and editor enhancements.", - "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/typescript-dev", + "documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/typescript-dev", "installsAfter": [ "ghcr.io/helpers4/devcontainer/essential-dev" ],