pmdaemon 0.1.4

PMDaemon - A high-performance, cross-platform process manager built in Rust with advanced port management and monitoring capabilities
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://entrepeneur4lyf.github.io/pmdaemon/changelog</id>
    <title>PMDaemon Changelog</title>
    <updated>2025-05-29T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://entrepeneur4lyf.github.io/pmdaemon/changelog"/>
    <subtitle>PMDaemon release notes and changelog</subtitle>
    <icon>https://entrepeneur4lyf.github.io/pmdaemon/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[PMDaemon v0.1.4 - Documentation Accuracy & Stability]]></title>
        <id>https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4</id>
        <link href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4"/>
        <updated>2025-05-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Major documentation overhaul fixing critical inaccuracies and improving production readiness]]></summary>
        <content type="html"><![CDATA[<p><em>Released on May 29, 2025</em></p>
<p>PMDaemon v0.1.4 represents a <strong>critical documentation accuracy release</strong> that fixes major discrepancies between documentation and actual implementation. This release ensures users can rely on the documentation to accurately reflect PMDaemon's capabilities.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-key-highlights">🎯 Key Highlights<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-key-highlights" class="hash-link" aria-label="Direct link to 🎯 Key Highlights" title="Direct link to 🎯 Key Highlights">​</a></h2>
<ul>
<li><strong>📚 Documentation Accuracy</strong> - Fixed major discrepancies between docs and implementation</li>
<li><strong>🔒 Security Hardening</strong> - Removed dangerous API endpoints and improved security model</li>
<li><strong>🐛 Critical Bug Fix</strong> - Fixed uptime monitoring showing 0s for all processes</li>
<li><strong>✅ Production Ready</strong> - Documentation now accurately reflects actual capabilities</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-documentation-overhaul">📚 Documentation Overhaul<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-documentation-overhaul" class="hash-link" aria-label="Direct link to 📚 Documentation Overhaul" title="Direct link to 📚 Documentation Overhaul">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed-major-inaccuracies">Fixed Major Inaccuracies<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#fixed-major-inaccuracies" class="hash-link" aria-label="Direct link to Fixed Major Inaccuracies" title="Direct link to Fixed Major Inaccuracies">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="load-balancing-documentation"><strong>Load Balancing Documentation</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#load-balancing-documentation" class="hash-link" aria-label="Direct link to load-balancing-documentation" title="Direct link to load-balancing-documentation">​</a></h4>
<ul>
<li><strong>Before</strong>: Claimed enterprise-grade load balancing with round-robin algorithms, SSL termination</li>
<li><strong>After</strong>: Accurately describes clustering capabilities with external load balancer integration</li>
<li><strong>Impact</strong>: Users now understand PMDaemon focuses on process management, not traffic routing</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="api-error-format"><strong>API Error Format</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#api-error-format" class="hash-link" aria-label="Direct link to api-error-format" title="Direct link to api-error-format">​</a></h4>
<ul>
<li><strong>Before</strong>: Complex nested error structure with codes, details, timestamps</li>
<li><strong>After</strong>: Simple <code>{"success": false, "error": "message"}</code> format matching implementation</li>
<li><strong>Impact</strong>: API integration code will work correctly</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="cli-parameters"><strong>CLI Parameters</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#cli-parameters" class="hash-link" aria-label="Direct link to cli-parameters" title="Direct link to cli-parameters">​</a></h4>
<ul>
<li><strong>Before</strong>: Extensive <code>--health-check-*</code> parameters that don't exist</li>
<li><strong>After</strong>: Removed all non-existent health check CLI parameters</li>
<li><strong>Impact</strong>: Users won't try to use parameters that cause errors</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="library-api-methods"><strong>Library API Methods</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#library-api-methods" class="hash-link" aria-label="Direct link to library-api-methods" title="Direct link to library-api-methods">​</a></h4>
<ul>
<li><strong>Before</strong>: Incorrect method names like <code>start_process()</code>, <code>wait_for_ready()</code></li>
<li><strong>After</strong>: Correct method names like <code>start()</code>, removed non-existent methods</li>
<li><strong>Impact</strong>: Rust library integration will compile and work</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="environment-variables"><strong>Environment Variables</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#environment-variables" class="hash-link" aria-label="Direct link to environment-variables" title="Direct link to environment-variables">​</a></h4>
<ul>
<li><strong>Before</strong>: 10+ fictional environment variables like <code>PMDAEMON_LOG_LEVEL</code></li>
<li><strong>After</strong>: Only <code>PMDAEMON_HOME</code> (the one that actually works)</li>
<li><strong>Impact</strong>: Environment configuration will work as documented</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="websocket-api"><strong>WebSocket API</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#websocket-api" class="hash-link" aria-label="Direct link to websocket-api" title="Direct link to websocket-api">​</a></h4>
<ul>
<li><strong>Before</strong>: Claimed bidirectional communication with command sending</li>
<li><strong>After</strong>: Clearly marked as read-only for security</li>
<li><strong>Impact</strong>: Prevents security vulnerabilities from attempted command injection</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="watch-mode"><strong>Watch Mode</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#watch-mode" class="hash-link" aria-label="Direct link to watch-mode" title="Direct link to watch-mode">​</a></h4>
<ul>
<li><strong>Before</strong>: Working file watching examples throughout documentation</li>
<li><strong>After</strong>: Marked as "not yet implemented" with current status</li>
<li><strong>Impact</strong>: Users won't expect functionality that doesn't exist</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="installation-methods"><strong>Installation Methods</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#installation-methods" class="hash-link" aria-label="Direct link to installation-methods" title="Direct link to installation-methods">​</a></h4>
<ul>
<li><strong>Before</strong>: Claimed availability through package managers (Homebrew, apt, etc.)</li>
<li><strong>After</strong>: Accurately reflects pre-1.0 status with manual installation only</li>
<li><strong>Impact</strong>: Users know the actual installation methods</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="exit-codes"><strong>Exit Codes</strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#exit-codes" class="hash-link" aria-label="Direct link to exit-codes" title="Direct link to exit-codes">​</a></h4>
<ul>
<li><strong>Before</strong>: Complex exit code system (0, 1, 2, 126, 127, etc.)</li>
<li><strong>After</strong>: Simple Unix standard (0=success, 1=error)</li>
<li><strong>Impact</strong>: Shell scripts will handle errors correctly</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-security-improvements">🔒 Security Improvements<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-security-improvements" class="hash-link" aria-label="Direct link to 🔒 Security Improvements" title="Direct link to 🔒 Security Improvements">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="removed-dangerous-api-endpoint">Removed Dangerous API Endpoint<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#removed-dangerous-api-endpoint" class="hash-link" aria-label="Direct link to Removed Dangerous API Endpoint" title="Direct link to Removed Dangerous API Endpoint">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># This dangerous endpoint has been removed for security</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># POST /api/processes - Could execute arbitrary commands</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enhanced-authentication--api-key-management">Enhanced Authentication &amp; API Key Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#enhanced-authentication--api-key-management" class="hash-link" aria-label="Direct link to Enhanced Authentication &amp; API Key Management" title="Direct link to Enhanced Authentication &amp; API Key Management">​</a></h3>
<ul>
<li><strong>Auto-generated API keys</strong> - Secure keys created and saved automatically on first web server start</li>
<li><strong>Persistent storage</strong> - Keys saved to <code>~/.pmdaemon/api-key</code> and reused automatically</li>
<li><strong>Simple management</strong> - <code>show-api-key</code> and <code>regenerate-api-key</code> commands</li>
<li><strong>Environment variable support</strong> - <code>PMDAEMON_API_KEY</code> still works if needed</li>
<li><strong>Cross-platform compatible</strong> - Works reliably on Windows, Linux, and macOS</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Auto-generates secure API key on first run</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon web</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Key management commands</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon show-api-key        </span><span class="token comment" style="color:rgb(98, 114, 164)"># Display current key</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon regenerate-api-key  </span><span class="token comment" style="color:rgb(98, 114, 164)"># Generate new key</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-critical-bug-fixes">🐛 Critical Bug Fixes<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-critical-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Critical Bug Fixes" title="Direct link to 🐛 Critical Bug Fixes">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed-uptime-monitoring">Fixed Uptime Monitoring<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#fixed-uptime-monitoring" class="hash-link" aria-label="Direct link to Fixed Uptime Monitoring" title="Direct link to Fixed Uptime Monitoring">​</a></h3>
<p><strong>Issue</strong>: All processes showed 0s for uptime values
<strong>Root Cause</strong>: Monitoring data collected but never applied to processes<br>
<strong>Fix</strong>: Added proper monitoring data application in <code>update_monitoring_data()</code></p>
<div class="language-rust codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-rust codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">// Fixed in src/manager.rs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">for</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> metrics</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> monitoring_data </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">let</span><span class="token plain"> </span><span class="token class-name">Some</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">process</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> processes</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">get_mut</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token operator">&amp;</span><span class="token plain">id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        process</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">update_monitoring</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">metrics</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">cpu_usage</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> metrics</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">memory_usage</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-documentation-statistics">📊 Documentation Statistics<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-documentation-statistics" class="hash-link" aria-label="Direct link to 📊 Documentation Statistics" title="Direct link to 📊 Documentation Statistics">​</a></h2>
<p><strong>Files Reviewed</strong>: 35+ documentation files<br>
<strong>Major Issues Fixed</strong>: 15+ critical discrepancies<br>
<strong>Lines Updated</strong>: 500+ lines of corrections<br>
<strong>Accuracy Improvement</strong>: 🚫 Fictional → ✅ Accurate</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-breaking-changes">🔄 Breaking Changes<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-breaking-changes" class="hash-link" aria-label="Direct link to 🔄 Breaking Changes" title="Direct link to 🔄 Breaking Changes">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="removed-features-that-never-existed">Removed Features (That Never Existed)<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#removed-features-that-never-existed" class="hash-link" aria-label="Direct link to Removed Features (That Never Existed)" title="Direct link to Removed Features (That Never Existed)">​</a></h3>
<ul>
<li>Health check CLI parameters (<code>--health-check-url</code>, etc.)</li>
<li>Complex API error format</li>
<li>Bidirectional WebSocket commands</li>
<li>Most environment variables (only <code>PMDAEMON_HOME</code> works)</li>
<li>Package manager installations</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="api-changes">API Changes<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#api-changes" class="hash-link" aria-label="Direct link to API Changes" title="Direct link to API Changes">​</a></h3>
<ul>
<li>Simplified error response format</li>
<li>Removed dangerous process creation endpoint</li>
<li>Enhanced authentication requirements</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="️-before-vs-after">🏗️ Before vs After<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#%EF%B8%8F-before-vs-after" class="hash-link" aria-label="Direct link to 🏗️ Before vs After" title="Direct link to 🏗️ Before vs After">​</a></h2>
<table><thead><tr><th>Feature</th><th>v0.1.3 Docs</th><th>v0.1.4 Reality</th></tr></thead><tbody><tr><td><strong>Load Balancing</strong></td><td>❌ Enterprise features</td><td>✅ Process clustering</td></tr><tr><td><strong>Health Check CLI</strong></td><td>❌ Extensive parameters</td><td>✅ Config file only</td></tr><tr><td><strong>API Errors</strong></td><td>❌ Complex nested format</td><td>✅ Simple format</td></tr><tr><td><strong>Library Methods</strong></td><td>❌ Wrong method names</td><td>✅ Correct methods</td></tr><tr><td><strong>Environment Vars</strong></td><td>❌ 10+ fictional vars</td><td>✅ Only PMDAEMON_HOME</td></tr><tr><td><strong>WebSocket API</strong></td><td>❌ Bidirectional claims</td><td>✅ Read-only security</td></tr><tr><td><strong>Watch Mode</strong></td><td>❌ Working examples</td><td>✅ Not implemented</td></tr><tr><td><strong>Installation</strong></td><td>❌ Package managers</td><td>✅ Manual/source only</td></tr><tr><td><strong>Exit Codes</strong></td><td>❌ Complex system</td><td>✅ Unix standard</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-migration-guide">📋 Migration Guide<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-migration-guide" class="hash-link" aria-label="Direct link to 📋 Migration Guide" title="Direct link to 📋 Migration Guide">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="for-cli-users">For CLI Users<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#for-cli-users" class="hash-link" aria-label="Direct link to For CLI Users" title="Direct link to For CLI Users">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Remove health check parameters (they never worked)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Before (would error):</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js --health-check-url http://localhost:3000/health</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># After (works):</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> app</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="for-api-users">For API Users<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#for-api-users" class="hash-link" aria-label="Direct link to For API Users" title="Direct link to For API Users">​</a></h3>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">// Update error handling for correct format</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// Before:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword control-flow" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">response</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">error</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">code</span><span class="token plain"> </span><span class="token operator">===</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'PROCESS_NOT_FOUND'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// After:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword control-flow" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token operator">!</span><span class="token plain">response</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">success</span><span class="token plain"> </span><span class="token operator">&amp;&amp;</span><span class="token plain"> response</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">error</span><span class="token plain"> </span><span class="token operator">===</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'Process not found'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="for-library-users">For Library Users<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#for-library-users" class="hash-link" aria-label="Direct link to For Library Users" title="Direct link to For Library Users">​</a></h3>
<div class="language-rust codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-rust codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">// Update method names</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// Before:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">let</span><span class="token plain"> id </span><span class="token operator">=</span><span class="token plain"> manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">start_process</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">await</span><span class="token operator">?</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// After:  </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">let</span><span class="token plain"> id </span><span class="token operator">=</span><span class="token plain"> manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">start</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">await</span><span class="token operator">?</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-looking-forward">🔮 Looking Forward<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-looking-forward" class="hash-link" aria-label="Direct link to 🔮 Looking Forward" title="Direct link to 🔮 Looking Forward">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="looking-forward-to-v015">Looking Forward to v0.1.5<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#looking-forward-to-v015" class="hash-link" aria-label="Direct link to Looking Forward to v0.1.5" title="Direct link to Looking Forward to v0.1.5">​</a></h3>
<ul>
<li><strong>Watch Mode Implementation</strong>: Add file watching capabilities</li>
<li><strong>Enhanced Health Checks</strong>: CLI parameter support</li>
<li><strong>Package Manager Support</strong>: Prepare for crates.io and GitHub releases</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-updated-documentation">📖 Updated Documentation<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-updated-documentation" class="hash-link" aria-label="Direct link to 📖 Updated Documentation" title="Direct link to 📖 Updated Documentation">​</a></h2>
<p>All documentation has been thoroughly reviewed and updated:</p>
<ul>
<li><strong>35+ files</strong> reviewed for accuracy</li>
<li><strong>15+ major discrepancies</strong> fixed</li>
<li><strong>Complete alignment</strong> between docs and implementation</li>
<li><strong>Production-ready</strong> documentation standards</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-performance--reliability">⚡ Performance &amp; Reliability<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-performance--reliability" class="hash-link" aria-label="Direct link to ⚡ Performance &amp; Reliability" title="Direct link to ⚡ Performance &amp; Reliability">​</a></h2>
<ul>
<li><strong>Uptime Monitoring</strong>: Now shows accurate process uptime values</li>
<li><strong>Memory Efficiency</strong>: Proper monitoring data management</li>
<li><strong>Security</strong>: Removed dangerous endpoints and improved authentication</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-upgrade-instructions">🎯 Upgrade Instructions<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-upgrade-instructions" class="hash-link" aria-label="Direct link to 🎯 Upgrade Instructions" title="Direct link to 🎯 Upgrade Instructions">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="from-v013">From v0.1.3<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#from-v013" class="hash-link" aria-label="Direct link to From v0.1.3" title="Direct link to From v0.1.3">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># 1. Download new binary or rebuild from source</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">cargo</span><span class="token plain"> build </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--release</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># 2. Update any scripts using removed CLI parameters</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># 3. Update API integration to use correct error format</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># 4. Update library code to use correct method names</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="verification">Verification<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#verification" class="hash-link" aria-label="Direct link to Verification" title="Direct link to Verification">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Test uptime monitoring fix</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start </span><span class="token string" style="color:rgb(255, 121, 198)">"sleep 60"</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> test-uptime</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon list  </span><span class="token comment" style="color:rgb(98, 114, 164)"># Should show actual uptime, not 0s</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Test API authentication</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon web --api-key </span><span class="token string" style="color:rgb(255, 121, 198)">"test-key"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-H</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Authorization: Bearer test-key"</span><span class="token plain"> http://localhost:9615/api/processes</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-community-impact">🤝 Community Impact<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-community-impact" class="hash-link" aria-label="Direct link to 🤝 Community Impact" title="Direct link to 🤝 Community Impact">​</a></h2>
<p>This release represents a commitment to <strong>documentation accuracy</strong> and <strong>production reliability</strong>. Users can now trust that:</p>
<ul>
<li>✅ <strong>Documentation matches implementation</strong></li>
<li>✅ <strong>Examples actually work</strong></li>
<li>✅ <strong>Security is properly implemented</strong></li>
<li>✅ <strong>APIs behave as documented</strong></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-notes">📝 Notes<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/2025/05/29/v0.1.4#-notes" class="hash-link" aria-label="Direct link to 📝 Notes" title="Direct link to 📝 Notes">​</a></h2>
<ul>
<li><strong>No new features</strong> - Focus on accuracy and stability</li>
<li><strong>Breaking changes</strong> only affect features that never worked</li>
<li><strong>Security improvements</strong> through dangerous endpoint removal</li>
<li><strong>Foundation</strong> for reliable future development</li>
</ul>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/entrepeneur4lyf/pmdaemon/compare/v0.1.3...v0.1.4" target="_blank" rel="noopener noreferrer">v0.1.3...v0.1.4</a><br>
<strong>Download</strong>: <a href="https://github.com/entrepeneur4lyf/pmdaemon/releases/tag/v0.1.4" target="_blank" rel="noopener noreferrer">GitHub Releases</a></p>
<p>PMDaemon v0.1.4 ensures you can rely on the documentation to accurately reflect what PMDaemon actually does, making it truly production-ready.</p>]]></content>
        <category label="release" term="release"/>
        <category label="documentation" term="documentation"/>
        <category label="stability" term="stability"/>
        <category label="security" term="security"/>
        <category label="accuracy" term="accuracy"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PMDaemon v0.1.3 - Critical Bug Fixes & Enhanced State Persistence]]></title>
        <id>https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence</id>
        <link href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence"/>
        <updated>2025-05-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're excited to announce PMDaemon v0.1.3, a critical stability release that resolves major issues with process monitoring, state persistence, and cleanup operations. This release transforms PMDaemon from having significant operational issues to being a rock-solid, production-ready process manager.]]></summary>
        <content type="html"><![CDATA[<p>We're excited to announce PMDaemon v0.1.3, a critical stability release that resolves major issues with process monitoring, state persistence, and cleanup operations. This release transforms PMDaemon from having significant operational issues to being a rock-solid, production-ready process manager.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-whats-new-in-v013">🎉 What's New in v0.1.3<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-whats-new-in-v013" class="hash-link" aria-label="Direct link to 🎉 What's New in v0.1.3" title="Direct link to 🎉 What's New in v0.1.3">​</a></h2>
<p>This release focuses entirely on <strong>stability and reliability</strong>, addressing critical bugs that affected core functionality. PMDaemon now properly tracks process PIDs, maintains consistent UUIDs across restarts, detects ports from application logs, and performs complete cleanup operations without leaving zombie processes.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-critical-bug-fixes">🐛 Critical Bug Fixes<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-critical-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Critical Bug Fixes" title="Direct link to 🐛 Critical Bug Fixes">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-process-monitoring--state-tracking">🔍 Process Monitoring &amp; State Tracking<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-process-monitoring--state-tracking" class="hash-link" aria-label="Direct link to 🔍 Process Monitoring &amp; State Tracking" title="Direct link to 🔍 Process Monitoring &amp; State Tracking">​</a></h3>
<ul>
<li><strong>Fixed PID Detection</strong> - Process PIDs now display correctly instead of showing "-"</li>
<li><strong>Fixed Port Detection</strong> - Ports are now properly detected and displayed in the process list</li>
<li><strong>Fixed UUID Persistence</strong> - Process IDs remain consistent across PMDaemon restarts</li>
<li><strong>Enhanced State Restoration</strong> - Processes are properly restored with all metadata after daemon restarts</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-process-lifecycle-management">🧹 Process Lifecycle Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-process-lifecycle-management" class="hash-link" aria-label="Direct link to 🧹 Process Lifecycle Management" title="Direct link to 🧹 Process Lifecycle Management">​</a></h3>
<ul>
<li><strong>Fixed Zombie Process Bug</strong> - <code>delete all</code> command now properly removes all processes and configuration files</li>
<li><strong>Enhanced Cleanup Operations</strong> - Metadata files are properly created and removed during process lifecycle</li>
<li><strong>Improved Error Handling</strong> - Better error reporting during cleanup operations</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-monitoring--logging">📊 Monitoring &amp; Logging<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-monitoring--logging" class="hash-link" aria-label="Direct link to 📊 Monitoring &amp; Logging" title="Direct link to ���📊 Monitoring &amp; Logging">​</a></h3>
<ul>
<li><strong>Enhanced Log Reading</strong> - Improved debugging and error reporting for log operations</li>
<li><strong>Port Detection from Logs</strong> - Automatically detects ports from application output (e.g., "Server bound to 127.0.0.1:3000")</li>
<li><strong>Real-time Monitoring</strong> - Fixed issues with the <code>monit</code> command displaying accurate process information</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-technical-improvements">✨ Technical Improvements<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-technical-improvements" class="hash-link" aria-label="Direct link to ✨ Technical Improvements" title="Direct link to ✨ Technical Improvements">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="️-metadata-persistence-system">🗄️ Metadata Persistence System<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#%EF%B8%8F-metadata-persistence-system" class="hash-link" aria-label="Direct link to 🗄️ Metadata Persistence System" title="Direct link to 🗄️ Metadata Persistence System">​</a></h3>
<ul>
<li><strong>New Metadata Files</strong> - Process runtime state is now saved to <code>.meta.json</code> files</li>
<li><strong>Comprehensive State Tracking</strong> - Stores process IDs, assigned ports, PIDs, and instance numbers</li>
<li><strong>Automatic Restoration</strong> - All metadata is automatically restored when PMDaemon restarts</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-enhanced-process-management">🔧 Enhanced Process Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-enhanced-process-management" class="hash-link" aria-label="Direct link to 🔧 Enhanced Process Management" title="Direct link to 🔧 Enhanced Process Management">​</a></h3>
<ul>
<li><strong>Stored PID Field</strong> - New field to track PIDs when process handles are unavailable</li>
<li><strong>Improved Loading Logic</strong> - Fixed issue where metadata files were incorrectly loaded as process configurations</li>
<li><strong>Better Port Management</strong> - Enhanced port allocation and persistence across restarts</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-before-vs-after">🚀 Before vs After<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-before-vs-after" class="hash-link" aria-label="Direct link to 🚀 Before vs After" title="Direct link to 🚀 Before vs After">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="process-monitoring-display">Process Monitoring Display<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#process-monitoring-display" class="hash-link" aria-label="Direct link to Process Monitoring Display" title="Direct link to Process Monitoring Display">​</a></h3>
<p><strong>Before v0.1.3:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ID       ┆ Name        ┆ Status ┆ PID ┆ Port │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ fa007933 ┆ my-app      ┆ online ┆ -   ┆ -    │</span><br></span></code></pre></div></div>
<p><strong>After v0.1.3:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ID       ┆ Name        ┆ Status ┆ PID     ┆ Port  │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ fa007933 ┆ my-app      ┆ online ┆ 2642197 ┆ 3000  │</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="delete-all-operation">Delete All Operation<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#delete-all-operation" class="hash-link" aria-label="Direct link to Delete All Operation" title="Direct link to Delete All Operation">​</a></h3>
<p><strong>Before v0.1.3:</strong></p>
<ul>
<li>Left zombie processes in the list</li>
<li>Incomplete file cleanup</li>
<li>Phantom processes after restart</li>
</ul>
<p><strong>After v0.1.3:</strong></p>
<ul>
<li>Complete process removal</li>
<li>All configuration and metadata files cleaned up</li>
<li>Clean state after <code>delete all</code></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-what-was-fixed">🔍 What Was Fixed<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-what-was-fixed" class="hash-link" aria-label="Direct link to 🔍 What Was Fixed" title="Direct link to 🔍 What Was Fixed">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-pid-tracking-issue">1. PID Tracking Issue<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#1-pid-tracking-issue" class="hash-link" aria-label="Direct link to 1. PID Tracking Issue" title="Direct link to 1. PID Tracking Issue">​</a></h3>
<ul>
<li><strong>Problem</strong>: PIDs showed as "-" even for running processes</li>
<li><strong>Root Cause</strong>: Process handles couldn't be restored after PMDaemon restart</li>
<li><strong>Solution</strong>: Added <code>stored_pid</code> field to persist PIDs in metadata files</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-port-detection-issue">2. Port Detection Issue<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#2-port-detection-issue" class="hash-link" aria-label="Direct link to 2. Port Detection Issue" title="Direct link to 2. Port Detection Issue">​</a></h3>
<ul>
<li><strong>Problem</strong>: Ports showed as "-" even when processes were bound to specific ports</li>
<li><strong>Root Cause</strong>: Port information wasn't persisted and couldn't be detected from logs</li>
<li><strong>Solution</strong>: Added port detection from log output and metadata persistence</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-uuid-consistency-issue">3. UUID Consistency Issue<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#3-uuid-consistency-issue" class="hash-link" aria-label="Direct link to 3. UUID Consistency Issue" title="Direct link to 3. UUID Consistency Issue">​</a></h3>
<ul>
<li><strong>Problem</strong>: Process IDs changed on every PMDaemon restart</li>
<li><strong>Root Cause</strong>: New UUIDs were generated instead of restoring saved ones</li>
<li><strong>Solution</strong>: Added UUID persistence in metadata files</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-zombie-process-bug">4. Zombie Process Bug<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#4-zombie-process-bug" class="hash-link" aria-label="Direct link to 4. Zombie Process Bug" title="Direct link to 4. Zombie Process Bug">​</a></h3>
<ul>
<li><strong>Problem</strong>: <code>delete all</code> left phantom processes and incomplete cleanup</li>
<li><strong>Root Cause</strong>: Metadata files were loaded as process configurations</li>
<li><strong>Solution</strong>: Fixed loading logic to exclude <code>.meta.json</code> files from process loading</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-technical-details">📊 Technical Details<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-technical-details" class="hash-link" aria-label="Direct link to 📊 Technical Details" title="Direct link to 📊 Technical Details">​</a></h2>
<ul>
<li><strong>New Dependencies</strong>: Added <code>regex</code> crate for log parsing</li>
<li><strong>Enhanced Error Handling</strong>: Better error reporting during cleanup operations</li>
<li><strong>Improved Debugging</strong>: Added comprehensive logging for troubleshooting</li>
<li><strong>Metadata System</strong>: Complete runtime state persistence and restoration</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-reliability-improvements">🆚 Reliability Improvements<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-reliability-improvements" class="hash-link" aria-label="Direct link to 🆚 Reliability Improvements" title="Direct link to 🆚 Reliability Improvements">​</a></h2>
<table><thead><tr><th>Issue</th><th style="text-align:center">Before v0.1.3</th><th style="text-align:center">After v0.1.3</th></tr></thead><tbody><tr><td><strong>PID Display</strong></td><td style="text-align:center">❌ Shows "-"</td><td style="text-align:center">✅ Shows actual PID</td></tr><tr><td><strong>Port Display</strong></td><td style="text-align:center">❌ Shows "-"</td><td style="text-align:center">✅ Shows actual port</td></tr><tr><td><strong>UUID Consistency</strong></td><td style="text-align:center">❌ Changes each restart</td><td style="text-align:center">✅ Persistent across restarts</td></tr><tr><td><strong>Delete All Cleanup</strong></td><td style="text-align:center">❌ Leaves zombies</td><td style="text-align:center">✅ Complete cleanup</td></tr><tr><td><strong>State Restoration</strong></td><td style="text-align:center">❌ Partial</td><td style="text-align:center">✅ Complete</td></tr><tr><td><strong>Log-based Port Detection</strong></td><td style="text-align:center">❌ Not supported</td><td style="text-align:center">✅ Automatic detection</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-resources">🔗 Resources<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.3-critical-bug-fixes-state-persistence#-resources" class="hash-link" aria-label="Direct link to 🔗 Resources" title="Direct link to 🔗 Resources">​</a></h2>
<ul>
<li><strong><a href="https://github.com/entrepeneur4lyf/pmdaemon" target="_blank" rel="noopener noreferrer">GitHub Repository</a></strong> - Source code and issue tracking</li>
<li><strong><a href="https://entrepeneur4lyf.github.io/pmdaemon" target="_blank" rel="noopener noreferrer">Documentation</a></strong> - Complete usage guide</li>
</ul>
<hr>
<p>PMDaemon v0.1.3 represents a major stability milestone, resolving all critical operational issues and making PMDaemon truly production-ready. Upgrade today for a reliable process management experience!</p>
<p><strong>Download:</strong> <a href="https://github.com/entrepeneur4lyf/pmdaemon/releases" target="_blank" rel="noopener noreferrer">GitHub Releases</a>
<strong>Documentation:</strong> <a href="https://entrepeneur4lyf.github.io/pmdaemon" target="_blank" rel="noopener noreferrer">https://entrepeneur4lyf.github.io/pmdaemon</a></p>]]></content>
        <author>
            <name>Shawn McAllister</name>
            <uri>https://github.com/entrepeneur4lyf</uri>
        </author>
        <category label="release" term="release"/>
        <category label="bugfix" term="bugfix"/>
        <category label="persistence" term="persistence"/>
        <category label="monitoring" term="monitoring"/>
        <category label="stability" term="stability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PMDaemon v0.1.2 - Ecosystem Configuration Files & Cross-Platform Support]]></title>
        <id>https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform</id>
        <link href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform"/>
        <updated>2025-05-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're excited to announce PMDaemon v0.1.2, a major milestone release that introduces Ecosystem Configuration File Support and Full Cross-Platform Compatibility. PMDaemon now runs natively on Linux, Windows, and macOS while enabling seamless management of multiple applications through JSON, YAML, and TOML configuration files.]]></summary>
        <content type="html"><![CDATA[<p>We're excited to announce PMDaemon v0.1.2, a major milestone release that introduces <strong>Ecosystem Configuration File Support</strong> and <strong>Full Cross-Platform Compatibility</strong>. PMDaemon now runs natively on Linux, Windows, and macOS while enabling seamless management of multiple applications through JSON, YAML, and TOML configuration files.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-whats-new-in-v012">🎉 What's New in v0.1.2<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-whats-new-in-v012" class="hash-link" aria-label="Direct link to 🎉 What's New in v0.1.2" title="Direct link to 🎉 What's New in v0.1.2">​</a></h2>
<p>This release represents two major milestones: <strong>ecosystem configuration support</strong> for enhanced developer productivity and <strong>full cross-platform compatibility</strong> for universal deployment. PMDaemon now runs natively on all major operating systems while allowing you to define and manage complex multi-application setups through simple configuration files, making it ideal for microservices, development environments, and production deployments across any platform.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-key-features">✨ Key Features<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-key-features" class="hash-link" aria-label="Direct link to ✨ Key Features" title="Direct link to ✨ Key Features">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-ecosystem-configuration-files">📁 Ecosystem Configuration Files<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-ecosystem-configuration-files" class="hash-link" aria-label="Direct link to 📁 Ecosystem Configuration Files" title="Direct link to 📁 Ecosystem Configuration Files">​</a></h3>
<ul>
<li><strong>Multi-Format Support</strong> - JSON, YAML, and TOML configuration files</li>
<li><strong>Full Feature Parity</strong> - All CLI options available in config files</li>
<li><strong>App-Specific Targeting</strong> - Start specific applications from config files</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-advanced-configuration-management">🎯 Advanced Configuration Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-advanced-configuration-management" class="hash-link" aria-label="Direct link to 🎯 Advanced Configuration Management" title="Direct link to 🎯 Advanced Configuration Management">​</a></h3>
<ul>
<li><strong>Comprehensive Field Support</strong> - All process options configurable via files</li>
<li><strong>Environment-Specific Configs</strong> - Separate config files for different environments</li>
<li><strong>Validation &amp; Error Handling</strong> - Detailed error messages for configuration issues</li>
<li><strong>Custom Configuration Directory</strong> - <code>PMDAEMON_HOME</code> environment variable support for configuration directory override</li>
<li><strong>Multi-Instance Support</strong> - Better support for running multiple isolated PMDaemon instances</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-cross-platform-support">🌍 Cross-Platform Support<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-cross-platform-support" class="hash-link" aria-label="Direct link to 🌍 Cross-Platform Support" title="Direct link to 🌍 Cross-Platform Support">​</a></h3>
<ul>
<li><strong>Native Windows Support</strong> - Full functionality on Windows 10/11 with optimized process management</li>
<li><strong>Native macOS Support</strong> - Complete support for both Intel and Apple Silicon architectures</li>
<li><strong>Enhanced Linux Support</strong> - Continued optimization for server and development environments</li>
<li><strong>Unified API</strong> - Same commands and features work identically across all platforms</li>
<li><strong>Platform-Specific Optimizations</strong> - Tailored signal handling and process termination for each OS</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-getting-started">🚀 Getting Started<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-getting-started" class="hash-link" aria-label="Direct link to 🚀 Getting Started" title="Direct link to 🚀 Getting Started">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-your-ecosystem-file">Create Your Ecosystem File<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#create-your-ecosystem-file" class="hash-link" aria-label="Direct link to Create Your Ecosystem File" title="Direct link to Create Your Ecosystem File">​</a></h3>
<p><strong>ecosystem.json:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"apps"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"name"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"web-server"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"script"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"node"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"args"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">"server.js"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"instances"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">2</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"port"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"3000-3001"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"env"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"NODE_ENV"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"production"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-your-applications">Start Your Applications<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#start-your-applications" class="hash-link" aria-label="Direct link to Start Your Applications" title="Direct link to Start Your Applications">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Start all apps from config (works on Linux, Windows, macOS)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--config</span><span class="token plain"> ecosystem.json start</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Start specific app</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--config</span><span class="token plain"> ecosystem.json start </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> web-server</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="environment-variable-configuration">Environment Variable Configuration<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#environment-variable-configuration" class="hash-link" aria-label="Direct link to Environment Variable Configuration" title="Direct link to Environment Variable Configuration">​</a></h3>
<p><strong>Custom Configuration Directory:</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Use custom config directory</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">PMDAEMON_HOME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"/path/to/custom/config"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start </span><span class="token string" style="color:rgb(255, 121, 198)">"node server.js"</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> web-app</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Multiple isolated instances</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">PMDAEMON_HOME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"/tmp/instance1"</span><span class="token plain"> pmdaemon start app1.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> app1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">PMDAEMON_HOME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"/tmp/instance2"</span><span class="token plain"> pmdaemon start app2.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> app2</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cross-platform-installation">Cross-Platform Installation<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#cross-platform-installation" class="hash-link" aria-label="Direct link to Cross-Platform Installation" title="Direct link to Cross-Platform Installation">​</a></h3>
<p><strong>Pre-built Binaries:</strong></p>
<ul>
<li><strong>Linux</strong>: <code>pmdaemon-linux-x86_64</code></li>
<li><strong>Windows</strong>: <code>pmdaemon-windows-x86_64.exe</code></li>
<li><strong>macOS Intel</strong>: <code>pmdaemon-macos-x86_64</code></li>
<li><strong>macOS Apple Silicon</strong>: <code>pmdaemon-macos-aarch64</code></li>
</ul>
<p><strong>From Source (All Platforms):</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> clone https://github.com/entrepeneur4lyf/pmdaemon</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">cd</span><span class="token plain"> pmdaemon</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">cargo</span><span class="token plain"> build </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--release</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-technical-highlights">📊 Technical Highlights<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-technical-highlights" class="hash-link" aria-label="Direct link to 📊 Technical Highlights" title="Direct link to 📊 Technical Highlights">​</a></h2>
<ul>
<li><strong>267 total tests</strong> with comprehensive ecosystem config coverage</li>
<li><strong>9 completed development phases</strong> including ecosystem configuration</li>
<li><strong>Production-ready</strong> stability with comprehensive configuration support</li>
<li><strong>Backward compatible</strong> - existing CLI workflows unchanged</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-beyond-pm2">🆚 Beyond PM2<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-beyond-pm2" class="hash-link" aria-label="Direct link to 🆚 Beyond PM2" title="Direct link to 🆚 Beyond PM2">​</a></h2>
<p>PMDaemon v0.1.2 now matches and exceeds PM2's capabilities across all platforms:</p>
<table><thead><tr><th>Feature</th><th style="text-align:center">PMDaemon v0.1.2</th><th style="text-align:center">PM2</th></tr></thead><tbody><tr><td><strong>Native Windows support</strong></td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td><strong>Native macOS support</strong></td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td><strong>Cross-platform compatibility</strong></td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td>Ecosystem config files</td><td style="text-align:center">✅</td><td style="text-align:center">✅</td></tr><tr><td>Multiple config formats</td><td style="text-align:center">✅ (JSON/YAML/TOML)</td><td style="text-align:center">❌ (JS only)</td></tr><tr><td>Port range distribution</td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td>Auto port assignment</td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td>Built-in health checks</td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td>Configuration validation</td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr><tr><td>Custom config directory</td><td style="text-align:center">✅ (PMDAEMON_HOME)</td><td style="text-align:center">❌</td></tr><tr><td>Multi-instance isolation</td><td style="text-align:center">✅</td><td style="text-align:center">❌</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-migration-from-pm2">📚 Migration from PM2<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-migration-from-pm2" class="hash-link" aria-label="Direct link to 📚 Migration from PM2" title="Direct link to 📚 Migration from PM2">​</a></h2>
<p>Converting from PM2 is straightforward:</p>
<p><strong>PM2 ecosystem.config.js:</strong></p>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">module</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">exports</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token literal-property property">apps</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token literal-property property">name</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'my-app'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token literal-property property">script</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'server.js'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token literal-property property">instances</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre></div></div>
<p><strong>PMDaemon ecosystem.json:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"apps"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"name"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"my-app"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"script"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"node"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"args"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">"server.js"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"instances"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-resources">🔗 Resources<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.2-ecosystem-config-cross-platform#-resources" class="hash-link" aria-label="Direct link to 🔗 Resources" title="Direct link to 🔗 Resources">​</a></h2>
<ul>
<li><strong><a href="https://entrepeneur4lyf.github.io/pmdaemon/docs/configuration/ecosystem-files" target="_blank" rel="noopener noreferrer">Configuration Guide</a></strong> - Complete ecosystem config documentation</li>
<li><strong><a href="https://github.com/entrepeneur4lyf/pmdaemon" target="_blank" rel="noopener noreferrer">GitHub Repository</a></strong> - Source code and examples</li>
</ul>
<hr>
<p>PMDaemon v0.1.2 represents a significant step forward in making process management more accessible and powerful for modern development workflows. Try it today!</p>
<p><strong>Download:</strong> <a href="https://github.com/entrepeneur4lyf/pmdaemon/releases" target="_blank" rel="noopener noreferrer">GitHub Releases</a>
<strong>Documentation:</strong> <a href="https://entrepeneur4lyf.github.io/pmdaemon" target="_blank" rel="noopener noreferrer">https://entrepeneur4lyf.github.io/pmdaemon</a></p>]]></content>
        <author>
            <name>Shawn McAllister</name>
            <uri>https://github.com/entrepeneur4lyf</uri>
        </author>
        <category label="release" term="release"/>
        <category label="ecosystem" term="ecosystem"/>
        <category label="config-files" term="config-files"/>
        <category label="cross-platform" term="cross-platform"/>
        <category label="windows" term="windows"/>
        <category label="macos" term="macos"/>
        <category label="linux" term="linux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PMDaemon v0.1.1 - Enhanced Delete Operations, Health Checks & Monitoring]]></title>
        <id>https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1</id>
        <link href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1"/>
        <updated>2025-05-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're excited to announce PMDaemon v0.1.1, a significant update that brings powerful new features for production environments, enhanced safety mechanisms, and comprehensive health monitoring capabilities.]]></summary>
        <content type="html"><![CDATA[<p>We're excited to announce PMDaemon v0.1.1, a significant update that brings powerful new features for production environments, enhanced safety mechanisms, and comprehensive health monitoring capabilities.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-major-new-features">🚀 Major New Features<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#-major-new-features" class="hash-link" aria-label="Direct link to 🚀 Major New Features" title="Direct link to 🚀 Major New Features">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enhanced-delete-operations">Enhanced Delete Operations<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#enhanced-delete-operations" class="hash-link" aria-label="Direct link to Enhanced Delete Operations" title="Direct link to Enhanced Delete Operations">​</a></h3>
<p>This release introduces robust bulk deletion capabilities with safety mechanisms:</p>
<ul>
<li><strong>Bulk deletion</strong>: Added <code>delete all</code> command to stop and delete all processes at once</li>
<li><strong>Status-based deletion</strong>: Added <code>delete &lt;status&gt; --status</code> to delete processes by their current state<!-- -->
<ul>
<li>Valid statuses: <code>starting</code>, <code>online</code>, <code>stopping</code>, <code>stopped</code>, <code>errored</code>, <code>restarting</code></li>
</ul>
</li>
<li><strong>Force flag</strong>: Added <code>--force</code> / <code>-f</code> flag to skip confirmation prompts for automation</li>
<li><strong>Safety confirmations</strong>: Interactive prompts for bulk operations to prevent accidental deletions</li>
<li><strong>Process shutdown</strong>: All delete operations now properly stop running processes before deletion</li>
<li><strong>Enhanced feedback</strong>: Clear reporting of how many processes were stopped vs. deleted</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Delete all stopped processes</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon delete stopped </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--status</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--force</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Delete all processes with confirmation</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon delete all</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Force delete without prompts (for scripts)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon delete all </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--force</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="health-checks--monitoring">Health Checks &amp; Monitoring<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#health-checks--monitoring" class="hash-link" aria-label="Direct link to Health Checks &amp; Monitoring" title="Direct link to Health Checks &amp; Monitoring">​</a></h3>
<p>Advanced health monitoring capabilities that go beyond basic process tracking:</p>
<ul>
<li><strong>HTTP Health Checks</strong>: Monitor process health via HTTP endpoints (<code>--health-check-url</code>)</li>
<li><strong>Script-based Health Checks</strong>: Custom health check scripts for complex validation (<code>--health-check-script</code>)</li>
<li><strong>Configurable Health Parameters</strong>: Timeout (<code>--health-check-timeout</code>), interval, and retry settings (<code>--health-check-retries</code>)</li>
<li><strong>Health-based Auto-restart</strong>: Automatic restart when health checks fail</li>
<li><strong>Monitoring Integration</strong>: Health status visible in process listings (<code>pmdaemon monit</code>) and web API</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Start with HTTP health check</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js --health-check-url http://localhost:3000/health</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Start with custom health script</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js --health-check-script ./health-check.sh</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="blocking-start-command">Blocking Start Command<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#blocking-start-command" class="hash-link" aria-label="Direct link to Blocking Start Command" title="Direct link to Blocking Start Command">​</a></h3>
<p>Perfect for deployment scripts that need to wait for services to be ready:</p>
<ul>
<li><strong>Wait for Ready</strong>: Block start command until processes are healthy (<code>--wait-ready</code>)</li>
<li><strong>Configurable Wait Timeout</strong>: Set maximum wait time for process readiness (<code>--wait-timeout</code>)</li>
<li><strong>Progress Indicators</strong>: Real-time status updates during health check waiting</li>
<li><strong>Script-friendly</strong>: Ideal for deployment scripts that need to wait for services</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Wait for process to be healthy before continuing</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js --wait-ready --wait-timeout 30s</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configurable-monitoring-intervals">Configurable Monitoring Intervals<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#configurable-monitoring-intervals" class="hash-link" aria-label="Direct link to Configurable Monitoring Intervals" title="Direct link to Configurable Monitoring Intervals">​</a></h3>
<p>Optimize monitoring performance for your specific needs:</p>
<ul>
<li><strong>Library</strong>: Added <code>monitor_with_interval(Duration)</code> method for configurable update intervals</li>
<li><strong>CLI</strong>: Added <code>--interval</code> / <code>-i</code> flag to <code>monit</code> command for custom refresh rates</li>
<li><strong>Performance optimization</strong>: Users can now balance responsiveness vs. resource usage:<!-- -->
<ul>
<li>Fast updates (1s) for debugging and development</li>
<li>Balanced updates (2s) for general use (library default)</li>
<li>Slower updates (5s+) for reduced system load</li>
</ul>
</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Monitor with 5-second intervals</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon monit </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--interval</span><span class="token plain"> </span><span class="token number">5</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-enhanced-features">🔧 Enhanced Features<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#-enhanced-features" class="hash-link" aria-label="Direct link to 🔧 Enhanced Features" title="Direct link to 🔧 Enhanced Features">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="professional-monitoring-display">Professional Monitoring Display<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#professional-monitoring-display" class="hash-link" aria-label="Direct link to Professional Monitoring Display" title="Direct link to Professional Monitoring Display">​</a></h3>
<ul>
<li><strong>Beautiful table formatting</strong>: Integrated <code>comfy-table</code> for professional display</li>
<li><strong>Color-coded status indicators</strong>:<!-- -->
<ul>
<li>🟢 Green for Online processes</li>
<li>🔴 Red for Stopped/Errored processes</li>
<li>🟡 Yellow for Starting/Stopping processes</li>
<li>🔵 Blue for Restarting processes</li>
</ul>
</li>
<li><strong>PID column</strong>: Added Process ID display for better debugging and system integration</li>
<li><strong>Enhanced system overview</strong>: Improved system metrics display with proper formatting</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enhanced-log-management">Enhanced Log Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#enhanced-log-management" class="hash-link" aria-label="Direct link to Enhanced Log Management" title="Direct link to Enhanced Log Management">​</a></h3>
<ul>
<li><strong>Real-time log following</strong>: Implemented <code>follow_logs()</code> method with <code>tail -f</code> functionality</li>
<li><strong>Configurable log retrieval</strong>: Enhanced <code>get_logs()</code> method with proper line limiting</li>
<li><strong>Missing file handling</strong>: Graceful handling of non-existent log files</li>
<li><strong>CLI integration</strong>: <code>pmdaemon logs --follow</code> for real-time log monitoring</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-comprehensive-testing">🧪 Comprehensive Testing<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#-comprehensive-testing" class="hash-link" aria-label="Direct link to 🧪 Comprehensive Testing" title="Direct link to 🧪 Comprehensive Testing">​</a></h2>
<p>This release significantly expands our test coverage:</p>
<ul>
<li><strong>Test count</strong>: 267 total tests (up from 158 before health checks &amp; blocking start)</li>
<li><strong>New coverage</strong>: Delete operations (bulk, status-based, safe shutdown), Health Checks (HTTP, script, params), Blocking Start (<code>--wait-ready</code>, <code>--wait-timeout</code>), CLI argument parsing and utility functions, and process lifecycle management.</li>
<li><strong>Enhanced test suites</strong>: Added comprehensive tests for all new delete, health check, blocking start functionality, and complete CLI binary test coverage.</li>
<li><strong>Quality</strong>: 100% test success rate with comprehensive error path testing and 80%+ code coverage.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-bug-fixes">🐛 Bug Fixes<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes">​</a></h2>
<ul>
<li><strong>Production-ready code</strong>: Eliminated all TODO comments from production codebase</li>
<li><strong>Thread safety</strong>: Improved async/await patterns and lock management</li>
<li><strong>Memory efficiency</strong>: Optimized file reading and monitoring operations</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-technical-details">📊 Technical Details<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#-technical-details" class="hash-link" aria-label="Direct link to 📊 Technical Details" title="Direct link to 📊 Technical Details">​</a></h2>
<ul>
<li><strong>Dependencies</strong>: Added <code>comfy-table</code> for professional table formatting</li>
<li><strong>Performance</strong>: Configurable intervals allow optimization for different use cases. Health checks add minimal overhead</li>
<li><strong>Compatibility</strong>: Backward compatible - no breaking changes to existing API</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="download--install">Download &amp; Install<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#download--install" class="hash-link" aria-label="Direct link to Download &amp; Install" title="Direct link to Download &amp; Install">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Install from crates.io</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">cargo</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> pmdaemon</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Or build from source</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> clone https://github.com/entrepeneur4lyf/pmdaemon.git</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">cd</span><span class="token plain"> pmdaemon</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">cargo</span><span class="token plain"> build </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--release</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-next">What's Next<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.1#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next">​</a></h2>
<p>We're continuing to enhance PMDaemon with more advanced features. Stay tuned for upcoming releases!</p>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/entrepeneur4lyf/pmdaemon/compare/v0.1.0...v0.1.1" target="_blank" rel="noopener noreferrer">v0.1.0...v0.1.1</a></p>]]></content>
        <author>
            <name>Shawn McAllister</name>
            <uri>https://github.com/entrepeneur4lyf</uri>
        </author>
        <category label="release" term="release"/>
        <category label="health-checks" term="health-checks"/>
        <category label="monitoring" term="monitoring"/>
        <category label="delete-operations" term="delete-operations"/>
        <category label="testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PMDaemon v0.1.0 - Initial Release]]></title>
        <id>https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0</id>
        <link href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0"/>
        <updated>2025-05-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're thrilled to announce the initial release of PMDaemon, a high-performance process manager built in Rust that takes inspiration from PM2 while adding innovative features that exceed the original.]]></summary>
        <content type="html"><![CDATA[<p>We're thrilled to announce the initial release of PMDaemon, a high-performance process manager built in Rust that takes inspiration from PM2 while adding innovative features that exceed the original.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-why-pmdaemon">🎯 Why PMDaemon?<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#-why-pmdaemon" class="hash-link" aria-label="Direct link to 🎯 Why PMDaemon?" title="Direct link to 🎯 Why PMDaemon?">​</a></h2>
<p>PMDaemon was created to address the limitations of existing process managers while providing a familiar interface for PM2 users. Built with Rust, it offers memory safety, blazing performance, and advanced features not available in other process managers.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-core-features">🚀 Core Features<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#-core-features" class="hash-link" aria-label="Direct link to 🚀 Core Features" title="Direct link to 🚀 Core Features">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="complete-process-management">Complete Process Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#complete-process-management" class="hash-link" aria-label="Direct link to Complete Process Management" title="Direct link to Complete Process Management">​</a></h3>
<ul>
<li><strong>Lifecycle management</strong>: Full control over process start, stop, restart, reload, and delete operations</li>
<li><strong>Process clustering</strong>: Automatic load balancing across multiple instances</li>
<li><strong>Auto-restart on crash</strong>: Configurable limits and intelligent restart logic</li>
<li><strong>Graceful shutdown</strong>: Proper signal handling (SIGTERM/SIGINT) for clean process termination</li>
<li><strong>Configuration persistence</strong>: Multi-session support with persistent process configurations</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="advanced-port-management-beyond-pm2">Advanced Port Management (Beyond PM2)<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#advanced-port-management-beyond-pm2" class="hash-link" aria-label="Direct link to Advanced Port Management (Beyond PM2)" title="Direct link to Advanced Port Management (Beyond PM2)">​</a></h3>
<p>One of PMDaemon's standout features is its sophisticated port management system:</p>
<ul>
<li><strong>Port range distribution</strong>: Automatically distribute ports across cluster instances (<code>--port 3000-3003</code>)</li>
<li><strong>Auto-assignment from ranges</strong>: Smart port allocation (<code>--port auto:5000-5100</code>)</li>
<li><strong>Built-in conflict detection</strong>: Prevents port conflicts before they happen</li>
<li><strong>Runtime port overrides</strong>: Change ports without modifying configuration files</li>
<li><strong>Port visibility</strong>: See assigned ports in process listings</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Start a cluster with automatic port distribution</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--instances</span><span class="token plain"> </span><span class="token number">4</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--port</span><span class="token plain"> </span><span class="token number">3000</span><span class="token plain">-3003</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Auto-assign ports from a range</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start api.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--port</span><span class="token plain"> auto:8000-8100</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-monitoring">Real-time Monitoring<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#real-time-monitoring" class="hash-link" aria-label="Direct link to Real-time Monitoring" title="Direct link to Real-time Monitoring">​</a></h3>
<ul>
<li><strong>System metrics</strong>: CPU, memory, uptime tracking with system-wide statistics</li>
<li><strong>Load average monitoring</strong>: Track system load across 1, 5, and 15-minute intervals</li>
<li><strong>Memory limit enforcement</strong>: Automatic restart when processes exceed memory limits</li>
<li><strong>Process health checks</strong>: Built-in health monitoring with auto-restart capabilities</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="professional-cli-interface">Professional CLI Interface<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#professional-cli-interface" class="hash-link" aria-label="Direct link to Professional CLI Interface" title="Direct link to Professional CLI Interface">​</a></h3>
<p>PMDaemon provides a familiar yet enhanced command-line experience:</p>
<ul>
<li><strong>PM2-compatible commands</strong>: All the commands you know and love</li>
<li><strong>Enhanced display</strong>: Color-coded statuses and professional table formatting</li>
<li><strong>Rich monitoring</strong>: Real-time process monitoring with system overview</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Familiar PM2-style commands</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> my-app </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--instances</span><span class="token plain"> </span><span class="token number">2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon list</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon monit</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon logs my-app </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--follow</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="web-api--websocket-support">Web API &amp; WebSocket Support<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#web-api--websocket-support" class="hash-link" aria-label="Direct link to Web API &amp; WebSocket Support" title="Direct link to Web API &amp; WebSocket Support">​</a></h3>
<ul>
<li><strong>REST API</strong>: Complete process management via HTTP endpoints</li>
<li><strong>PM2-compatible responses</strong>: Drop-in replacement for PM2 API consumers</li>
<li><strong>Real-time updates</strong>: WebSocket support for live process monitoring</li>
<li><strong>Security</strong>: CORS support and proper security headers</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="robust-log-management">Robust Log Management<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#robust-log-management" class="hash-link" aria-label="Direct link to Robust Log Management" title="Direct link to Robust Log Management">​</a></h3>
<ul>
<li><strong>Separate streams</strong>: Individual stdout/stderr file handling</li>
<li><strong>PID file management</strong>: Proper process tracking and cleanup</li>
<li><strong>Log viewing</strong>: Built-in log viewing and following capabilities</li>
<li><strong>Graceful handling</strong>: Robust error handling for missing or corrupted log files</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="️-technical-excellence">🏗️ Technical Excellence<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#%EF%B8%8F-technical-excellence" class="hash-link" aria-label="Direct link to 🏗️ Technical Excellence" title="Direct link to 🏗️ Technical Excellence">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="built-with-rust">Built with Rust<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#built-with-rust" class="hash-link" aria-label="Direct link to Built with Rust" title="Direct link to Built with Rust">​</a></h3>
<ul>
<li><strong>Memory safety</strong>: Zero-cost abstractions without garbage collection overhead</li>
<li><strong>Performance</strong>: Native performance with minimal resource usage</li>
<li><strong>Concurrency</strong>: Async/await architecture using Tokio for efficient I/O</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="modern-architecture">Modern Architecture<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#modern-architecture" class="hash-link" aria-label="Direct link to Modern Architecture" title="Direct link to Modern Architecture">​</a></h3>
<ul>
<li><strong>Web server</strong>: Powered by Axum for high-performance HTTP handling</li>
<li><strong>System monitoring</strong>: Leverages sysinfo for cross-platform system metrics</li>
<li><strong>Cross-platform</strong>: Full support for Linux, macOS, and Windows</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="comprehensive-testing">Comprehensive Testing<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#comprehensive-testing" class="hash-link" aria-label="Direct link to Comprehensive Testing" title="Direct link to Comprehensive Testing">​</a></h3>
<ul>
<li><strong>158 comprehensive tests</strong>: Unit, integration, end-to-end, and documentation tests</li>
<li><strong>Complete documentation</strong>: Full Rust documentation with examples</li>
<li><strong>Usage guides</strong>: Comprehensive examples and migration guides</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-getting-started">🚀 Getting Started<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#-getting-started" class="hash-link" aria-label="Direct link to 🚀 Getting Started" title="Direct link to 🚀 Getting Started">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="installation">Installation<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Install from crates.io</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">cargo</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> pmdaemon</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Or build from source</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> clone https://github.com/entrepeneur4lyf/pmdaemon.git</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">cd</span><span class="token plain"> pmdaemon</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">cargo</span><span class="token plain"> build </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--release</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="quick-start">Quick Start<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#quick-start" class="hash-link" aria-label="Direct link to Quick Start" title="Direct link to Quick Start">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Start a simple application</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start app.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--name</span><span class="token plain"> my-app</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Start a cluster with port management</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon start server.js </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--instances</span><span class="token plain"> </span><span class="token number">4</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--port</span><span class="token plain"> </span><span class="token number">3000</span><span class="token plain">-3003</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Monitor processes in real-time</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon monit</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># View and follow logs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pmdaemon logs my-app </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--follow</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="migration-from-pm2">Migration from PM2<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#migration-from-pm2" class="hash-link" aria-label="Direct link to Migration from PM2" title="Direct link to Migration from PM2">​</a></h3>
<p>PMDaemon is designed to be a drop-in replacement for most PM2 use cases. Check out our <a href="https://entrepeneur4lyf.github.io/pmdaemon/docs/getting-started/migration-from-pm2">migration guide</a> for detailed instructions.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="️-whats-next">🗺️ What's Next<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#%EF%B8%8F-whats-next" class="hash-link" aria-label="Direct link to 🗺️ What's Next" title="Direct link to 🗺️ What's Next">​</a></h2>
<p>This initial release establishes PMDaemon as a robust, production-ready process manager. Future releases will continue to expand capabilities while maintaining the familiar interface that makes PMDaemon easy to adopt.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-community">🙏 Community<a href="https://entrepeneur4lyf.github.io/pmdaemon/changelog/v0.1.0#-community" class="hash-link" aria-label="Direct link to 🙏 Community" title="Direct link to 🙏 Community">​</a></h2>
<p>We're excited to see what the community builds with PMDaemon. Join us:</p>
<ul>
<li><strong>GitHub</strong>: <a href="https://github.com/entrepeneur4lyf/pmdaemon" target="_blank" rel="noopener noreferrer">entrepeneur4lyf/pmdaemon</a></li>
<li><strong>Issues</strong>: Report bugs and request features</li>
<li><strong>Discussions</strong>: Share your use cases and get help</li>
</ul>
<hr>
<p><strong>Release</strong>: <a href="https://github.com/entrepeneur4lyf/pmdaemon/releases/tag/v0.1.0" target="_blank" rel="noopener noreferrer">v0.1.0</a></p>]]></content>
        <author>
            <name>Shawn McAllister</name>
            <uri>https://github.com/entrepeneur4lyf</uri>
        </author>
        <category label="release" term="release"/>
        <category label="initial" term="initial"/>
        <category label="process-manager" term="process-manager"/>
        <category label="rust" term="rust"/>
        <category label="pm2" term="pm2"/>
    </entry>
</feed>