Skip to content

Commit 14ddc85

Browse files
committed
0.4.x feature list:
1. Log Search & Filtering - / - Opens search prompt (type query and press Enter) - n - Jump to next match - N (Shift+p) - Jump to previous match - Esc - Clear search - Supports regex patterns - Matches are highlighted in the log view - Current match has bright yellow background, other matches have dim yellow - Shows match count and current position: /query [2/15] 2. Log Export - e - Export current service logs to file - E (Shift+e) - Export all logs - Auto-generates filename: devproc-servicename-timestamp.log - Supports plain text format (with timestamps) - Internal support for JSON format 3. Service Details Panel - i - Toggle service info panel - Shows: - Status, PID, restart count - Uptime in hours/minutes/seconds - Last exit code (if crashed) - Error message (if failed) - Command and working directory - Restart policy and group - Environment variables (sensitive values masked) 4. Improved Status Indicators - Animated spinners for starting and stopping states (⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏) - Restart count badge - Shows ↻N next to service name when restarts > 0
1 parent 3a2ec2a commit 14ddc85

5 files changed

Lines changed: 810 additions & 31 deletions

File tree

README.md

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ A terminal UI application for managing your local development environment - hot
1111
- **Dependency Ordering** - Services start in the correct order based on dependencies
1212
- **Health Checks** - Wait for services to be healthy before starting dependents
1313
- **Live Log Streaming** - View logs from all services or focus on one with scrollback
14+
- **Log Search** - Search and filter logs with regex support and match highlighting
15+
- **Log Export** - Export logs to files for debugging or sharing
16+
- **Service Details** - View detailed service info including PID, env vars, and uptime
1417
- **Hot Config Reload** - Update your config without restarting DevProc
1518
- **Keyboard-Driven** - Fast navigation with vim-style keybindings
1619

@@ -230,17 +233,29 @@ groups:
230233
| `X` (shift) | Stop all services |
231234
| `R` (shift) | Restart all services |
232235
| `Space` | Toggle group collapsed |
236+
| `i` | Show service details |
233237

234238
### Logs
235239

236-
| Key | Action |
237-
| --------------- | --------------------------- |
238-
| `Tab` | Toggle single/all logs view |
239-
| `c` | Clear logs |
240-
| `f` | Toggle follow mode |
241-
| `g` / `G` | Scroll to top / bottom |
242-
| `PgUp` / `PgDn` | Page up / down |
243-
| `Ctrl+u/d` | Half page up / down |
240+
| Key | Action |
241+
| --------------- | ---------------------------- |
242+
| `Tab` | Toggle single/all logs view |
243+
| `c` | Clear logs |
244+
| `f` | Toggle follow mode |
245+
| `g` / `G` | Scroll to top / bottom |
246+
| `PgUp` / `PgDn` | Page up / down |
247+
| `Ctrl+u/d` | Half page up / down |
248+
| `e` | Export current service logs |
249+
| `E` (shift) | Export all logs |
250+
251+
### Search
252+
253+
| Key | Action |
254+
| ----- | ------------------------------- |
255+
| `/` | Start search (supports regex) |
256+
| `n` | Jump to next match |
257+
| `N` | Jump to previous match |
258+
| `Esc` | Clear search |
244259

245260
### Config
246261

docs/ROADMAP.md

Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
# DevProc Roadmap
2+
3+
This document outlines planned features and improvements for DevProc, organized by priority and complexity.
4+
5+
## Current State (v0.4.x)
6+
7+
- [x] Service management (start, stop, restart)
8+
- [x] Dependency ordering with healthchecks
9+
- [x] Service groups with collapsible UI
10+
- [x] Live log streaming with scrollback
11+
- [x] Hot config reload (manual + file watcher)
12+
- [x] Vim-style keyboard navigation
13+
- [x] Log search with regex support and highlighting
14+
- [x] Log export (plain text and JSON)
15+
- [x] Service details panel
16+
- [x] Animated spinners for starting/stopping
17+
- [x] Restart count badges
18+
19+
---
20+
21+
## Completed (v0.4.x)
22+
23+
### Log Search & Filtering
24+
25+
- [x] `/` to open search prompt
26+
- [x] `n`/`N` to navigate matches (next/previous)
27+
- [x] Highlight matching text in log view
28+
- [x] Regex support for advanced filtering
29+
- [x] Current match highlighted differently
30+
31+
### Log Export
32+
33+
- [x] `e` to export current service logs to file
34+
- [x] `E` to export all logs
35+
- [x] Plain text format with timestamps
36+
- [x] JSON format support
37+
- [x] Auto-generate filename with timestamp
38+
39+
### Service Details Panel
40+
41+
- [x] Toggle with `i` (info) key
42+
- [x] Display: PID, uptime, restart count, exit codes
43+
- [x] Show environment variables (with sensitive value masking)
44+
- [x] Show the actual command being run
45+
- [x] Show working directory and group
46+
47+
### Improved Status Indicators
48+
49+
- [x] Animated spinner for `starting`/`stopping` states
50+
- [x] Show restart count badge if > 0
51+
52+
---
53+
54+
## Medium Term (v0.5.x)
55+
56+
### Resource Monitoring
57+
58+
**Priority: High | Complexity: High**
59+
60+
Display CPU and memory usage per service.
61+
62+
- Real-time CPU % and memory usage in service list
63+
- Optional resource graph in log panel (toggle with `m`)
64+
- Alerts when thresholds exceeded
65+
- History tracking for trends
66+
- Implementation: Use `ps` or `/proc` on Linux, `ps` on macOS
67+
68+
### Notifications
69+
70+
**Priority: High | Complexity: Medium**
71+
72+
Desktop notifications for important events.
73+
74+
- Notify on service crash
75+
- Notify when service becomes healthy
76+
- Notify on healthcheck failures
77+
- Configurable per-service notification settings
78+
- Implementation options:
79+
- macOS: `osascript` or `terminal-notifier`
80+
- Linux: `notify-send`
81+
- Cross-platform: Node `node-notifier`
82+
83+
### Profiles
84+
85+
**Priority: Medium | Complexity: Medium**
86+
87+
Run subsets of services for different scenarios.
88+
89+
```yaml
90+
profiles:
91+
backend:
92+
- api
93+
- worker
94+
- postgres
95+
frontend:
96+
- web
97+
minimal:
98+
- api
99+
- postgres
100+
# CLI: devproc up --profile backend
101+
```
102+
103+
- `devproc up --profile <name>` to start only those services
104+
- Multiple profiles: `--profile backend --profile frontend`
105+
- Default profile if none specified
106+
- UI indicator showing active profile
107+
108+
### Environment Switching
109+
110+
**Priority: Medium | Complexity: Medium**
111+
112+
Support multiple environment configurations.
113+
114+
```yaml
115+
environments:
116+
development:
117+
env:
118+
DATABASE_URL: postgres://localhost/dev
119+
staging:
120+
env:
121+
DATABASE_URL: postgres://staging.example.com/app
122+
dotenv: .env.staging
123+
```
124+
125+
- `devproc up --env staging`
126+
- Visual indicator of current environment
127+
- Environment-specific service overrides
128+
129+
### Custom Commands
130+
131+
**Priority: Medium | Complexity: Medium**
132+
133+
Define and run custom commands on services.
134+
135+
```yaml
136+
services:
137+
api:
138+
cmd: air
139+
commands:
140+
migrate: go run ./cmd/migrate
141+
seed: go run ./cmd/seed
142+
shell: go run ./cmd/repl
143+
```
144+
145+
- `:` to open command prompt
146+
- Tab completion for available commands
147+
- Run command in new pane or overlay
148+
- Capture output in logs
149+
150+
---
151+
152+
## Long Term (v1.0+)
153+
154+
### Native Docker Integration
155+
156+
**Priority: High | Complexity: High**
157+
158+
Use Docker API directly instead of shell commands.
159+
160+
- Automatic container cleanup on exit
161+
- Pull images if not present
162+
- Show container logs directly
163+
- Health status from Docker healthchecks
164+
- Volume and network management
165+
- Docker Compose file import
166+
167+
### Kubernetes Support
168+
169+
**Priority: Medium | Complexity: Very High**
170+
171+
Manage local Kubernetes services (minikube, kind, k3s).
172+
173+
- Port-forward services automatically
174+
- Show pod status and logs
175+
- Restart deployments
176+
- Scale replicas from UI
177+
178+
### Remote Services
179+
180+
**Priority: Low | Complexity: High**
181+
182+
Connect to services running on remote machines.
183+
184+
- SSH tunnel for log streaming
185+
- Remote process management
186+
- Useful for debugging staging environments
187+
188+
### Plugin System
189+
190+
**Priority: Low | Complexity: Very High**
191+
192+
Allow extending DevProc with custom functionality.
193+
194+
- Lifecycle hooks (before/after start, on crash, etc.)
195+
- Custom UI panels
196+
- Custom commands
197+
- Service type plugins (Docker, K8s, systemd)
198+
199+
### Web Dashboard
200+
201+
**Priority: Low | Complexity: High**
202+
203+
Optional web UI for remote access.
204+
205+
- View logs from browser
206+
- Start/stop services remotely
207+
- Mobile-friendly for on-the-go monitoring
208+
- Share dashboard URL with team
209+
210+
---
211+
212+
## Quality of Life Improvements
213+
214+
### Configuration
215+
216+
- [ ] JSON schema for IDE autocomplete
217+
- [ ] Config validation command: `devproc validate`
218+
- [ ] Init command: `devproc init` to generate starter config
219+
- [ ] Import from docker-compose.yml
220+
- [ ] Import from Procfile
221+
222+
### UI/UX
223+
224+
- [ ] Customizable color themes
225+
- [ ] Configurable keyboard shortcuts
226+
- [ ] Mouse support (click to select, scroll)
227+
- [ ] Resize panes with keyboard
228+
- [ ] Multiple log panes (split view)
229+
- [ ] Bookmark log lines
230+
- [ ] Copy log lines to clipboard
231+
232+
### Performance
233+
234+
- [ ] Lazy log loading (only load visible + buffer)
235+
- [ ] Log compression for long-running sessions
236+
- [ ] Reduce memory usage for many services
237+
- [ ] Faster startup time
238+
239+
### Developer Experience
240+
241+
- [ ] Debug mode with verbose logging
242+
- [ ] Dry-run mode to preview what would happen
243+
- [ ] Service templates for common stacks
244+
- [ ] Shell completions (bash, zsh, fish)
245+
246+
---
247+
248+
## Non-Goals
249+
250+
Things we explicitly won't do to keep DevProc focused:
251+
252+
- **Production deployment** - DevProc is for local development only
253+
- **Distributed systems** - No clustering or multi-node support
254+
- **Proprietary integrations** - Focus on open standards and tools
255+
- **GUI application** - Terminal-first, web dashboard is optional
256+
257+
---
258+
259+
## Contributing
260+
261+
Want to help build these features? Here's how:
262+
263+
1. Check [GitHub Issues](https://github.com/captjt/devproc/issues) for existing discussions
264+
2. Open an issue to discuss your idea before implementing
265+
3. Start with "Low Complexity" items if you're new to the codebase
266+
4. See `docs/DESIGN.md` for architecture overview
267+
268+
### Good First Issues
269+
270+
- Log export functionality
271+
- Improved status indicators
272+
- Shell completions
273+
- Config validation command
274+
275+
### Help Wanted
276+
277+
- Resource monitoring (platform-specific code)
278+
- Docker API integration
279+
- Kubernetes support
280+
281+
---
282+
283+
## Changelog
284+
285+
### v0.4.0 (Current)
286+
287+
- Added log search with regex support
288+
- Added search match highlighting
289+
- Added log export (plain text and JSON formats)
290+
- Added service details panel
291+
- Added animated spinners for starting/stopping states
292+
- Added restart count badges
293+
294+
### v0.3.0
295+
296+
- Added service groups
297+
- Added hot config reload
298+
- Added log scrolling with vim keys
299+
- Added file watcher for auto-reload
300+
301+
### v0.2.0
302+
303+
- Initial TUI implementation
304+
- Service lifecycle management
305+
- Dependency ordering
306+
- Healthcheck support
307+
308+
### v0.1.0
309+
310+
- Project inception
311+
- Basic process spawning
312+
- Config parsing

0 commit comments

Comments
 (0)