Skip to content

Commit dd3727d

Browse files
authored
Merge pull request #56 from gabros20/dev
release: v2.0.0 - Universal Commands, Health Checks, and Improved Interactive Mode
2 parents 65a305a + 91b3154 commit dd3727d

File tree

108 files changed

+19525
-4925
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+19525
-4925
lines changed

.github/pull_request_template.md

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,31 @@
11
## PR
22

3-
- What: <!-- 1–2 sentences -->
4-
- Why: <!-- purpose/goal -->
5-
- How: <!-- key changes, ≤3 bullets -->
6-
- Test: <!-- commands/steps -->
7-
- Impact: none | minor | breaking <!-- if breaking, add migration note -->
8-
- Issue: #\_\_\_
9-
- Notes/Screenshots: <!-- optional -->
3+
<!-- PRs should target `dev` branch. Only release PRs from `dev` go to `main`. -->
4+
5+
## What
6+
7+
<!-- 1–2 sentences -->
8+
9+
## Why
10+
11+
<!-- purpose/goal -->
12+
13+
## How
14+
15+
<!-- key changes, ≤3 bullets -->
16+
17+
## Test
18+
19+
<!-- commands/steps -->
20+
21+
## Impact
22+
23+
<!-- if breaking, add migration note -->
24+
25+
## Issue
26+
27+
<!-- issue number -->
28+
29+
## Notes/Screenshots
30+
31+
<!-- optional -->

.github/workflows/ci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ name: CI
22

33
on:
44
pull_request:
5-
branches: [main]
5+
branches: [dev, main]
6+
push:
7+
branches: [dev]
68

79
jobs:
810
test:

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,4 @@ test-downloads/
6767
tmp/
6868
temp/
6969
downloads/
70-
TODO.md
70+
TODO.md.cursor/

CHANGELOG.md

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,170 @@
1+
# Changelog
2+
3+
## [Unreleased]
4+
5+
### Fixed
6+
7+
- **Boolean flag handling:** Fixed critical bug where boolean flags with `defaultValue: "false"` were incorrectly evaluated as `true` due to `Boolean("false")` coercion. Removed all string boolean defaults from command options (add, remove, update, list, info)
8+
- **Disk space check:** Fixed health check to show actual disk space instead of free RAM. Now uses platform-specific commands (`df` on macOS/Linux, `wmic` on Windows) for accurate reporting
9+
- **Network connectivity:** Improved marketplace/OpenVSX connectivity checks to use GET requests with redirect support and proper User-Agent headers instead of HEAD requests that often failed
10+
- **Local VSIX installation:** Fixed path resolution for local VSIX files to use absolute paths, preventing installation failures
11+
- **EventEmitter warning:** Increased max listeners limit to 20 to prevent warnings during parallel operations (remove, update)
12+
- **Remove flow UX:** Removed redundant confirmation prompt - now only asks once when removing extensions
13+
14+
### Added
15+
16+
- **YAML import/export support:** Full support for YAML format in extension lists alongside JSON and TXT
17+
- Import: Accepts `.yaml` and `.yml` files with auto-detection
18+
- Export: `list --format yaml` outputs human-readable YAML
19+
- Supports both simple array format and VS Code-compatible object with `recommendations` key
20+
- **Interactive mode improvements:**
21+
- Reorganized Extension Info menu with two options: "Single extension details" and "All installed extensions" (table view)
22+
- Moved table viewing from Export to Extension Info menu for better logical organization
23+
- Updated help text to be more relevant to interactive mode with menu navigation tips
24+
- Improved menu labels for clarity ("Export extensions list" instead of "List installed extensions")
25+
26+
### Changed
27+
28+
- **JSON export format:** `list` command now exports proper VS Code `extensions.json` format with `recommendations` key instead of plain arrays for better compatibility
29+
- **Extension list parsing:** Added YAML format auto-detection based on content patterns (starts with `-` or contains `: `)
30+
- **Input detection:** Updated to accept `.yaml` and `.yml` files as valid extension list formats
31+
- **Interactive help:** Tailored help screen for interactive mode showing menu options and keyboard shortcuts instead of CLI commands
32+
33+
# [2.0.0](https://github.com/gabros20/vsix-extension-manager/compare/v1.16.0...v2.0.0) (2024-12-19)
34+
35+
## 🚀 BREAKING CHANGES
36+
37+
This is a **complete refactor** of the CLI interface. While all functionality is preserved, the command structure and flag names have changed significantly.
38+
39+
### Command Structure Changes
40+
41+
**Old (v1.x) → New (v2.0):**
42+
43+
- `download`, `quick-install`, `from-list`, `install`, `install-direct`**`add`** (universal entry point)
44+
- `uninstall`**`remove`**
45+
- `update-installed`**`update`**
46+
- `export-installed`**`list`**
47+
- `versions`**`info`**
48+
- New: **`doctor`** (health check and diagnostics)
49+
- New: **`setup`** (first-run configuration wizard)
50+
51+
### Flag Changes
52+
53+
**Simplified and standardized:**
54+
55+
- `--verbose``--debug`
56+
- `--reinstall``--force`
57+
- `--check-compatibility``--check-compat`
58+
- `--allow-mismatched-binary``--allow-mismatch`
59+
- `--install-parallel``--parallel`
60+
- `--no-install``--download-only`
61+
- `--out-dir``--output`
62+
63+
**Removed (use positional arguments):**
64+
65+
- `--url`, `--vsix`, `--file`, `--dir`, `--id` → Use: `vsix add <input>`
66+
67+
### Configuration Changes
68+
69+
- **New:** YAML-based configuration (`.vsix/config.yml`)
70+
- **New:** Profile support for different environments
71+
- **Automatic migration** from v1.x config files
72+
- Enhanced configuration with more options and better organization
73+
74+
### Features
75+
76+
#### Universal `add` Command
77+
78+
- **Smart input detection** - automatically determines input type (URL, file, directory, list, extension ID)
79+
- **Unified workflow** - one command for all installation scenarios
80+
- **Plan preview** - shows what will happen before executing
81+
- **Automatic retry** - intelligent retry with escalating strategies
82+
- **Enhanced error handling** - contextual suggestions and recovery options
83+
84+
#### Configuration System v2.0
85+
86+
- **YAML configuration** - human-readable, easy to edit
87+
- **Profile support** - switch between different configurations (production, development, CI)
88+
- **Automatic migration** - seamlessly upgrades v1.x configs to v2.0
89+
- **Enhanced precedence** - CLI > ENV > File > Defaults (clearly documented)
90+
- **First-run wizard** - interactive setup on first use
91+
92+
#### Background Update Checker
93+
94+
- **Non-blocking checks** - doesn't interrupt workflow
95+
- **Smart caching** - respects configured frequency (never, daily, weekly, always)
96+
- **Minimal notifications** - subtle hints about available updates
97+
- **Zero telemetry** - completely local checking
98+
99+
#### Health Check & Diagnostics
100+
101+
- **`doctor` command** - comprehensive health checks
102+
- **Auto-fix** - automatically repair common issues
103+
- **Proactive detection** - find problems before they cause failures
104+
- **Clear reports** - easy-to-understand diagnostic output
105+
106+
#### Standardized Output
107+
108+
- **Consistent JSON API** - machine-readable across all commands
109+
- **Multiple formats** - table, JSON, YAML, CSV, plain text
110+
- **Proper exit codes** - reliable for CI/CD integration
111+
- **Rich details** - comprehensive information in all modes
112+
113+
#### Intelligent Retry System
114+
115+
- **Automatic retry** - handles transient failures
116+
- **Escalating strategies** - timeout increase, direct install, download-only fallback
117+
- **User intervention** - prompts for decisions when automated recovery fails
118+
- **Batch context** - shared retry state across multiple operations
119+
120+
### Improvements
121+
122+
- **Code quality:** ~777 lines of boilerplate removed
123+
- **Build:** 0 TypeScript errors
124+
- **Architecture:** Clean separation of command layer and business logic
125+
- **Error handling:** Contextual suggestions and automated recovery
126+
- **User experience:** Progressive disclosure, smart defaults, fail-forward design
127+
- **Performance:** Optimized startup, efficient caching, parallel operations
128+
- **Testing:** 61 integration tests covering core workflows
129+
130+
### Deprecated/Removed
131+
132+
**Removed commands** (functionality moved to unified commands):
133+
134+
- `download` - Use `add <input> --download-only`
135+
- `quick-install` - Use `add <url>`
136+
- `from-list` - Use `add <list-file>`
137+
- `install` - Use `add <file|directory>`
138+
- `install-direct` - Use `add` (auto-detects method)
139+
- `export-installed` - Use `list --output <file>`
140+
- `update-installed` - Use `update`
141+
- `uninstall` - Use `remove <id>`
142+
143+
**Interactive mode temporarily disabled:**
144+
145+
- Will be redesigned with v2.0 command structure
146+
- Use direct commands: `vsix add`, `vsix remove`, `vsix update`, `vsix list`, `vsix info`
147+
148+
### Migration Guide
149+
150+
See [MIGRATION.md](./MIGRATION.md) for complete migration documentation.
151+
152+
**Quick Reference:**
153+
154+
```bash
155+
# v1.x → v2.0 command mapping
156+
vsix-extension-manager download --url <url> → vsix-extension-manager add <url>
157+
vsix-extension-manager quick-install --url <url> → vsix-extension-manager add <url>
158+
vsix-extension-manager install --vsix <file> → vsix-extension-manager add <file>
159+
vsix-extension-manager from-list --file <list> → vsix-extension-manager add <list>
160+
vsix-extension-manager export-installed -o list.txt → vsix-extension-manager list --output list.txt
161+
vsix-extension-manager update-installed → vsix-extension-manager update
162+
vsix-extension-manager uninstall <id> → vsix-extension-manager remove <id>
163+
vsix-extension-manager versions <id> → vsix-extension-manager info <id>
164+
```
165+
166+
---
167+
1168
# [1.16.0](https://github.com/gabros20/vsix-extension-manager/compare/v1.15.0...v1.16.0) (2025-10-01)
2169

3170
### Bug Fixes

CONTRIBUTING.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,11 @@ vsix-extension-manager --help
145145

146146
## 🔄 Pull Request Process
147147

148-
1. **Create a feature branch** from `main`:
148+
1. **Create a feature branch** from `dev`:
149149

150150
```bash
151+
git checkout dev
152+
git pull origin dev
151153
git checkout -b feature/your-feature-name
152154
```
153155

@@ -196,8 +198,9 @@ When creating an issue, include:
196198
This project uses [semantic-release](https://semantic-release.gitbook.io/) for automated versioning and publishing.
197199

198200
- **No manual version bumps** - versions are determined automatically
199-
- **Push to main** with conventional commits to trigger releases
200-
- **Releases are automatic** when commits are pushed to main
201+
- **Development on `dev` branch** - all feature branches merge into `dev`
202+
- **Releases from `dev` to `main`** - only release PRs from `dev` merge into `main`
203+
- **Releases are automatic** when commits are pushed to `main`
201204

202205
## 📚 Documentation
203206

0 commit comments

Comments
 (0)