Skip to content

Commit 97ece9a

Browse files
committed
docs: add v0.4.0 release notes and update checklist
CHANGELOG.md: - Add comprehensive v0.4.0 release notes - Document full CLI interface with all commands - Document critical settings.json fix - Document automatic backup feature - Document integration tests CLAUDE.md: - Add integration tests to pre-push checklist
1 parent 6161458 commit 97ece9a

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.4.0] - 2026-01-22
11+
12+
### Added
13+
14+
- **Full CLI Interface** - Complete command-line interface for plugin management
15+
- `plum search <query>` - Search plugins across all marketplaces
16+
- `plum info <plugin>` - Show detailed plugin information
17+
- `plum install <plugin>` - Install plugins to user/project/local scope
18+
- `plum remove <plugin>` - Remove plugins (aliases: `uninstall`, `rm`)
19+
- `plum list` - List installed plugins with filters (`--enabled`, `--disabled`, `--scope`)
20+
- `plum enable/disable <plugin>` - Toggle plugin state
21+
- `plum update [plugin]` - Update plugins to latest versions
22+
- `plum doctor` - Health check for plugin installations
23+
- `plum marketplace list` - List available marketplaces
24+
- `plum marketplace add/remove` - Manage custom marketplaces
25+
- `plum marketplace refresh` - Fetch fresh data from GitHub
26+
- All commands support `--json` output for scripting
27+
- Scope support: `--scope=user|project|local`
28+
29+
- **Automatic Settings Backup** - Safety net for user configuration
30+
- Creates `settings.json.backup-plum` before first modification
31+
- One-time backup per settings file (idempotent)
32+
- Covers user and project scopes
33+
- Easy restore: `cp ~/.claude/settings.json.backup-plum ~/.claude/settings.json`
34+
35+
- **Settings Safety Documentation** - New README section explaining field preservation
36+
- Documents what plum manages vs preserves
37+
- Shows backup locations and restore instructions
38+
- Builds user confidence in plum safety
39+
40+
- **Integration Tests** - End-to-end testing with real plum binary
41+
- Verifies settings preservation in realistic scenarios
42+
- Tests multiple operations in sequence
43+
- Run with: `go test -tags=integration ./internal/integration/... -v`
44+
45+
### Fixed
46+
47+
- **CRITICAL: Settings.json Data Loss** - Fixed bug that destroyed user configuration
48+
- **Previous behavior**: Installing/removing plugins deleted `permissions`, `hooks`, `attribution`, `model`, and other custom fields
49+
- **New behavior**: All fields are preserved - plum only modifies `enabledPlugins` and `extraKnownMarketplaces`
50+
- Implemented custom JSON marshaling to preserve unknown fields
51+
- Added 4 comprehensive unit tests for field preservation
52+
- This was a production blocker that affected all users
53+
54+
### Security
55+
56+
- Addressed code review security issues in CLI commands
57+
- Added input validation for plugin names and marketplace sources
58+
- Atomic file writes with temp file + rename pattern
59+
- Secure file permissions (0600) for settings and backups
60+
61+
### Changed
62+
63+
- Updated marketplace stats and plugin counts (2026-01-21 snapshot)
64+
1065
## [0.3.6] - 2026-01-11
1166

1267
### Changed

CLAUDE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ go test ./...
1313

1414
# 3. Verify build succeeds
1515
go build -o ./plum ./cmd/plum
16+
17+
# 4. Run integration tests (optional but recommended for settings changes)
18+
go test -tags=integration ./internal/integration/... -v
1619
```
1720

1821
**If linter is not installed:**

0 commit comments

Comments
 (0)