Skip to content

Commit e0da2af

Browse files
tjp2021claude
andcommitted
fix: production hardening step 2 — lint config, docs, and build fixes
- Migrate .golangci.yml issues.exclude-rules to linters.exclusions.rules for golangci-lint v2.4 schema compatibility - Fix CONTRIBUTING.md pattern path reference (patterns/ -> internal/patterns/) - Add vet, fmt, all to Makefile .PHONY declaration - Add CHANGELOG.md with v0.1.0 initial release notes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 0bec4fb commit e0da2af

4 files changed

Lines changed: 40 additions & 8 deletions

File tree

.golangci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ linters:
4848
- G104 # intentionally ignored errors on cleanup ops (Close, Remove, Rename)
4949
- G306 # WriteFile 0644 is intentional
5050

51-
issues:
52-
exclude-rules:
53-
- path: _test\.go
54-
linters:
55-
- errcheck
56-
- gosec
51+
exclusions:
52+
rules:
53+
- path: _test\.go
54+
linters:
55+
- errcheck
56+
- gosec

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [0.1.0] - 2026-02-28
9+
10+
### Added
11+
12+
- Multi-signal orphan scoring engine with five weighted signals: `ppid_is_init`, `parent_ide_dead`, `exceeded_duration`, `has_listener`, `no_tty`
13+
- 18 built-in YAML process patterns across four categories: MCP servers, dev servers, headless browsers, and media tools
14+
- Pattern matching via embedded YAML files with `go:embed` (zero external dependencies at runtime)
15+
- MCP config cross-referencing — reads `~/.claude.json`, `~/.cursor/mcp.json`, `~/.vscode/mcp.json` to detect expected MCP servers
16+
- IDE detection using path-based signatures for 12 IDEs (VS Code, Cursor, Claude Code CLI, Windsurf, Zed, IntelliJ family, Xcode)
17+
- Background daemon with configurable scan interval (default 30s)
18+
- macOS LaunchAgent install/uninstall (`devreap install`, `devreap uninstall`)
19+
- Graceful multi-step signal delivery with PID reuse protection (SIGTERM -> wait -> SIGKILL; SIGINT first for ffmpeg)
20+
- Safety checks: never kills PID 1, own process, parent process, other users' processes, or blocklisted system processes
21+
- macOS notifications when the daemon kills an orphan
22+
- Structured JSON logging with rotation
23+
- CLI commands: `scan`, `start`, `stop`, `status`, `install`, `uninstall`, `kill`, `kill --port`, `logs`, `doctor`, `patterns`, `version`
24+
- `--json` output for `scan` and `logs` commands
25+
- `doctor` command for full diagnostics (config, patterns, permissions, MCP configs, LaunchAgent status)
26+
- User-configurable YAML config at `~/.config/devreap/config.yaml` (signal weights, thresholds, blocklist, allowlist, extra patterns)
27+
- Dry-run mode for testing without killing
28+
- CI pipeline: golangci-lint, race-detector tests on macOS + Linux, build verification
29+
- GoReleaser-based release workflow with Homebrew tap support
30+
- MIT license
31+
32+
[0.1.0]: https://github.com/tjp2021/devreap/releases/tag/v0.1.0

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ make clean # Remove build artifacts
4444

4545
### Adding a Pattern
4646

47-
1. Add a new entry to the appropriate YAML file in `patterns/`
47+
1. Add a new entry to the appropriate YAML file in `internal/patterns/`
4848
2. Each pattern needs: `name`, `args_regex`, `max_duration`, `signal`
4949
3. Run `make test` to verify pattern loading
5050
4. Test with `go run ./cmd/devreap scan -v` to see if your pattern matches

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ LDFLAGS := -s -w \
88
-X $(MODULE)/internal/cli.Commit=$(COMMIT) \
99
-X $(MODULE)/internal/cli.BuildDate=$(DATE)
1010

11-
.PHONY: build test lint cover install clean
11+
.PHONY: build test lint cover install clean vet fmt all
1212

1313
build:
1414
go build -ldflags '$(LDFLAGS)' -o $(BINARY) ./cmd/devreap

0 commit comments

Comments
 (0)