pms_md 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,303 @@
1
+ # 🔧 Filter Buttons - Complete Fix
2
+
3
+ ## ✅ **Issue Fixed:**
4
+ All filter buttons now start in **simple state** (white background with purple left border). No button has gradient background by default.
5
+
6
+ ---
7
+
8
+ ## 🎨 **What Was Changed:**
9
+
10
+ ### **1. Removed Default Active Class from HTML** ✅
11
+ **File:** `node-monitor/examples/views/error-logs.ejs` (Line 757)
12
+
13
+ **Before:**
14
+ ```html
15
+ <button class="filter-btn filter-all active" onclick="filterErrors('ALL')" id="filter-all">
16
+ ```
17
+
18
+ **After:**
19
+ ```html
20
+ <button class="filter-btn filter-all" onclick="filterErrors('ALL')" id="filter-all">
21
+ ```
22
+
23
+ ---
24
+
25
+ ### **2. Updated CSS - Unified Default Border** ✅
26
+ **File:** `node-monitor/examples/views/error-logs.ejs` (Line 182-192)
27
+
28
+ **Before:**
29
+ ```css
30
+ .filter-btn::before {
31
+ background: #e5e7eb; /* Gray border */
32
+ }
33
+ ```
34
+
35
+ **After:**
36
+ ```css
37
+ .filter-btn::before {
38
+ background: #667eea; /* Purple border for all */
39
+ }
40
+ ```
41
+
42
+ ---
43
+
44
+ ### **3. Gradient Only on Active State** ✅
45
+ **File:** `node-monitor/examples/views/error-logs.ejs` (Line 225-240)
46
+
47
+ **Before:**
48
+ ```css
49
+ .filter-all::before {
50
+ background: linear-gradient(135deg, #667eea, #764ba2);
51
+ }
52
+ ```
53
+
54
+ **After:**
55
+ ```css
56
+ .filter-all.active::before {
57
+ background: linear-gradient(135deg, #667eea, #764ba2);
58
+ }
59
+ ```
60
+
61
+ Now gradients only apply when button has `.active` class!
62
+
63
+ ---
64
+
65
+ ### **4. Fixed JavaScript to Use CSS Classes** ✅
66
+ **File:** `node-monitor/examples/views/error-logs.ejs` (Line 953-972)
67
+
68
+ **Before:**
69
+ ```javascript
70
+ function filterErrors(type) {
71
+ // Used inline styles
72
+ activeBtn.style.background = color;
73
+ activeBtn.style.color = 'white';
74
+ }
75
+ ```
76
+
77
+ **After:**
78
+ ```javascript
79
+ function filterErrors(type) {
80
+ // Remove active class from all buttons
81
+ document.querySelectorAll('.filter-btn').forEach(btn => {
82
+ btn.classList.remove('active');
83
+ btn.style.background = '';
84
+ btn.style.color = '';
85
+ });
86
+
87
+ // Add active class to clicked button
88
+ const activeBtn = document.getElementById(`filter-${type.toLowerCase().replace('_error', '')}`);
89
+ if (activeBtn) {
90
+ activeBtn.classList.add('active');
91
+ }
92
+ }
93
+ ```
94
+
95
+ ---
96
+
97
+ ### **5. Ensure Clean State on Page Load** ✅
98
+ **File:** `node-monitor/examples/views/error-logs.ejs` (Line 1006-1015)
99
+
100
+ **Added:**
101
+ ```javascript
102
+ window.addEventListener('load', () => {
103
+ // Ensure all filter buttons start in simple state
104
+ document.querySelectorAll('.filter-btn').forEach(btn => {
105
+ btn.classList.remove('active');
106
+ btn.style.background = '';
107
+ btn.style.color = '';
108
+ });
109
+ loadLogFile();
110
+ });
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 📋 **How Buttons Work Now:**
116
+
117
+ ### **Default State (All Buttons Look Identical):**
118
+ ```
119
+ ┌─────────────────────┐
120
+ │ 📊 All Errors │ ← White background
121
+ │ 10 │ ← Purple left border (4px)
122
+ └─────────────────────┘
123
+
124
+ ┌─────────────────────┐
125
+ │ 🔗 API Errors │ ← White background
126
+ │ 2 │ ← Purple left border (4px)
127
+ └─────────────────────┘
128
+
129
+ ┌─────────────────────┐
130
+ │ ⚙️ Server Errors │ ← White background
131
+ │ 0 │ ← Purple left border (4px)
132
+ └─────────────────────┘
133
+
134
+ ┌─────────────────────┐
135
+ │ 🗄️ Database Errors │ ← White background
136
+ │ 0 │ ← Purple left border (4px)
137
+ └─────────────────────┘
138
+ ```
139
+
140
+ ### **Active State (When Clicked):**
141
+
142
+ **All Errors (clicked):**
143
+ ```
144
+ ┌─────────────────────┐
145
+ │ 📊 All Errors │ ← Purple gradient background
146
+ │ 10 │ ← White text
147
+ └─────────────────────┘
148
+ ```
149
+
150
+ **API Errors (clicked):**
151
+ ```
152
+ ┌─────────────────────┐
153
+ │ 🔗 API Errors │ ← Red gradient background
154
+ │ 2 │ ← White text
155
+ └─────────────────────┘
156
+ ```
157
+
158
+ **Server Errors (clicked):**
159
+ ```
160
+ ┌─────────────────────┐
161
+ │ ⚙️ Server Errors │ ← Orange gradient background
162
+ │ 0 │ ← White text
163
+ └─────────────────────┘
164
+ ```
165
+
166
+ **Database Errors (clicked):**
167
+ ```
168
+ ┌─────────────────────┐
169
+ │ 🗄️ Database Errors │ ← Purple gradient background
170
+ │ 0 │ ← White text
171
+ └─────────────────────┘
172
+ ```
173
+
174
+ ---
175
+
176
+ ## 🎨 **Visual States:**
177
+
178
+ ### **Simple State:**
179
+ - ✅ White background
180
+ - ✅ Purple left border (4px, same for all)
181
+ - ✅ Gray label text (#6b7280)
182
+ - ✅ Dark count text (#1f2937)
183
+ - ✅ Original icon colors
184
+ - ✅ Light border (#e5e7eb)
185
+
186
+ ### **Hover State:**
187
+ - ✅ Lifts up 2px
188
+ - ✅ Border expands to 6px
189
+ - ✅ Icon scales to 1.1x
190
+ - ✅ Shadow appears
191
+
192
+ ### **Active State:**
193
+ - ✅ Full gradient background (100% width)
194
+ - ✅ White text (label + count)
195
+ - ✅ White icon (inverted)
196
+ - ✅ Lifted appearance
197
+ - ✅ Stronger shadow
198
+ - ✅ No border
199
+
200
+ ---
201
+
202
+ ## 🔄 **User Interaction Flow:**
203
+
204
+ 1. **Page Loads:**
205
+ - All buttons in simple state
206
+ - No button is active
207
+ - All have purple left border
208
+
209
+ 2. **User Clicks "All Errors":**
210
+ - "All Errors" button gets purple gradient background
211
+ - Text turns white
212
+ - Other buttons remain in simple state
213
+
214
+ 3. **User Clicks "API Errors":**
215
+ - "All Errors" returns to simple state
216
+ - "API Errors" gets red gradient background
217
+ - Text turns white
218
+
219
+ 4. **User Clicks Another Button:**
220
+ - Previous active button returns to simple state
221
+ - New button gets its gradient background
222
+ - Only one button active at a time
223
+
224
+ ---
225
+
226
+ ## 🎨 **Color Scheme:**
227
+
228
+ ### **Default State:**
229
+ - Border: `#667eea` (Purple)
230
+ - Background: `white`
231
+ - Label: `#6b7280` (Gray)
232
+ - Count: `#1f2937` (Dark Gray)
233
+
234
+ ### **Active Gradients:**
235
+ - **All Errors:** `#667eea` → `#764ba2` (Purple)
236
+ - **API Errors:** `#ef4444` → `#dc2626` (Red)
237
+ - **Server Errors:** `#f59e0b` → `#d97706` (Orange)
238
+ - **Database Errors:** `#8b5cf6` → `#7c3aed` (Purple)
239
+
240
+ ### **Active Text:**
241
+ - Label: `#ffffff` (White)
242
+ - Count: `#ffffff` (White)
243
+ - Icon: White (inverted)
244
+
245
+ ---
246
+
247
+ ## ✅ **Testing Checklist:**
248
+
249
+ - [x] All buttons start in simple state
250
+ - [x] No button has gradient by default
251
+ - [x] All buttons have same purple left border
252
+ - [x] Clicking button applies gradient
253
+ - [x] Only one button active at a time
254
+ - [x] Active button shows white text
255
+ - [x] Inactive buttons return to simple state
256
+ - [x] Hover effects work correctly
257
+ - [x] Page load clears any cached states
258
+ - [x] JavaScript uses CSS classes (not inline styles)
259
+
260
+ ---
261
+
262
+ ## 🚀 **How to Test:**
263
+
264
+ 1. **Open the page:**
265
+ ```
266
+ http://localhost:3001/monitor/error-logs
267
+ ```
268
+
269
+ 2. **Do a hard refresh:**
270
+ - Windows: `Ctrl + Shift + R` or `Ctrl + F5`
271
+ - Mac: `Cmd + Shift + R`
272
+
273
+ 3. **Verify:**
274
+ - All 4 filter buttons look identical
275
+ - All have white background
276
+ - All have purple left border
277
+ - No button has gradient background
278
+
279
+ 4. **Click each button:**
280
+ - Verify gradient appears
281
+ - Verify text turns white
282
+ - Verify other buttons return to simple state
283
+
284
+ ---
285
+
286
+ ## 📝 **Summary:**
287
+
288
+ ✅ **All filter buttons now start in simple state**
289
+ ✅ **Unified purple left border for all buttons**
290
+ ✅ **Gradient backgrounds only appear when clicked**
291
+ ✅ **White text only appears when active**
292
+ ✅ **Clean state on page load**
293
+ ✅ **No inline styles**
294
+ ✅ **CSS classes control all states**
295
+
296
+ **The filter buttons are now working perfectly!** 🎉
297
+
298
+ ---
299
+
300
+ **Last Updated:** 2025-11-12
301
+ **Version:** 3.0
302
+ **Status:** ✅ FIXED
303
+
@@ -0,0 +1,331 @@
1
+ # 📦 Publishing Guide for Node Monitor
2
+
3
+ This guide will help you publish the `@projectmd/node-monitor` package to npm.
4
+
5
+ ## 🎯 Pre-Publishing Checklist
6
+
7
+ Before publishing, make sure:
8
+
9
+ - [x] ✅ `.npmignore` file is created
10
+ - [x] ✅ `package.json` has repository information
11
+ - [x] ✅ `LICENSE` file exists (MIT)
12
+ - [x] ✅ `README.md` is complete
13
+ - [ ] 📝 All documentation is up to date
14
+ - [ ] 🧪 All tests pass (if applicable)
15
+ - [ ] 🔍 No sensitive data in code (API keys, passwords)
16
+ - [ ] 📊 Version number is correct
17
+
18
+ ---
19
+
20
+ ## 🚀 Step-by-Step Publishing Process
21
+
22
+ ### Step 1: Create npm Account (If You Don't Have One)
23
+
24
+ 1. Go to: https://www.npmjs.com/signup
25
+ 2. Create an account
26
+ 3. Verify your email
27
+
28
+ ### Step 2: Login to npm
29
+
30
+ ```bash
31
+ # Login to npm
32
+ npm login
33
+
34
+ # Verify you're logged in
35
+ npm whoami
36
+ ```
37
+
38
+ You'll be prompted for:
39
+ - Username
40
+ - Password
41
+ - Email
42
+ - One-time password (if 2FA is enabled)
43
+
44
+ ### Step 3: Test Your Package Locally
45
+
46
+ ```bash
47
+ # Navigate to the package directory
48
+ cd node-monitor
49
+
50
+ # Create a test package (doesn't publish, just creates a .tgz file)
51
+ npm pack
52
+
53
+ # This creates: projectmd-node-monitor-1.0.0.tgz
54
+ ```
55
+
56
+ **Test the package in another project:**
57
+
58
+ ```bash
59
+ # In a test project
60
+ cd ../test-project
61
+ npm install ../node-monitor/projectmd-node-monitor-1.0.0.tgz
62
+
63
+ # Test if it works
64
+ node -e "const monitor = require('@projectmd/node-monitor'); console.log('✅ Package works!');"
65
+ ```
66
+
67
+ ### Step 4: Dry Run (See What Will Be Published)
68
+
69
+ ```bash
70
+ cd node-monitor
71
+
72
+ # Dry run - shows what will be published without actually publishing
73
+ npm publish --dry-run --access public
74
+ ```
75
+
76
+ This will show:
77
+ - Files that will be included
78
+ - Package size
79
+ - Any warnings or errors
80
+
81
+ ### Step 5: Publish to npm
82
+
83
+ ```bash
84
+ # Publish the package
85
+ npm publish --access public
86
+ ```
87
+
88
+ **Note:** The `--access public` flag is required for scoped packages (@projectmd/...) to make them publicly available.
89
+
90
+ ### Step 6: Verify Publication
91
+
92
+ ```bash
93
+ # Check if the package is published
94
+ npm view @projectmd/node-monitor
95
+
96
+ # Try installing it
97
+ npm install @projectmd/node-monitor
98
+ ```
99
+
100
+ Visit your package page:
101
+ ```
102
+ https://www.npmjs.com/package/@projectmd/node-monitor
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 🔄 Updating the Package (Future Versions)
108
+
109
+ ### Update Version Number
110
+
111
+ Use semantic versioning:
112
+
113
+ ```bash
114
+ # Patch release (1.0.0 → 1.0.1) - Bug fixes
115
+ npm version patch
116
+
117
+ # Minor release (1.0.0 → 1.1.0) - New features, backward compatible
118
+ npm version minor
119
+
120
+ # Major release (1.0.0 → 2.0.0) - Breaking changes
121
+ npm version major
122
+ ```
123
+
124
+ This will:
125
+ 1. Update `package.json` version
126
+ 2. Create a git commit
127
+ 3. Create a git tag
128
+
129
+ ### Publish the New Version
130
+
131
+ ```bash
132
+ # After updating version
133
+ npm publish --access public
134
+
135
+ # Push changes to git
136
+ git push
137
+ git push --tags
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 📋 What Gets Published?
143
+
144
+ ### ✅ Included Files:
145
+ - `src/` - All source code
146
+ - `package.json`
147
+ - `package-lock.json`
148
+ - `README.md`
149
+ - `LICENSE`
150
+ - `GETTING_STARTED.md`
151
+ - `INSTALLATION.md`
152
+ - `SETUP_GUIDE.md`
153
+ - `QUICK_REFERENCE.md`
154
+ - `ARCHITECTURE.md`
155
+ - `CHANGELOG.md`
156
+ - `CONTRIBUTING.md`
157
+
158
+ ### ❌ Excluded Files (via .npmignore):
159
+ - `node_modules/`
160
+ - `examples/node_modules/`
161
+ - `examples/logs/`
162
+ - `.env` files
163
+ - `logs/`
164
+ - Test files
165
+ - IDE configuration
166
+ - Development documentation
167
+
168
+ ---
169
+
170
+ ## 🔍 Verify Package Contents
171
+
172
+ Before publishing, check what will be included:
173
+
174
+ ```bash
175
+ # List all files that will be published
176
+ npm pack --dry-run
177
+
178
+ # Or create the package and inspect it
179
+ npm pack
180
+ tar -tzf projectmd-node-monitor-1.0.0.tgz
181
+ ```
182
+
183
+ ---
184
+
185
+ ## 🛠️ Troubleshooting
186
+
187
+ ### Issue: "You must be logged in to publish packages"
188
+ **Solution:**
189
+ ```bash
190
+ npm login
191
+ npm whoami # Verify login
192
+ ```
193
+
194
+ ### Issue: "Package name already exists"
195
+ **Solution:**
196
+ - Choose a different package name
197
+ - Or use a scope: `@yourusername/node-monitor`
198
+
199
+ ### Issue: "You do not have permission to publish"
200
+ **Solution:**
201
+ - Make sure you're logged in as the correct user
202
+ - For scoped packages, use `--access public`
203
+
204
+ ### Issue: "Package version already exists"
205
+ **Solution:**
206
+ ```bash
207
+ # Update version first
208
+ npm version patch
209
+ npm publish --access public
210
+ ```
211
+
212
+ ### Issue: "Package size too large"
213
+ **Solution:**
214
+ - Check `.npmignore` is working
215
+ - Remove unnecessary files
216
+ - Check with: `npm pack --dry-run`
217
+
218
+ ---
219
+
220
+ ## 🔐 Security Best Practices
221
+
222
+ ### Enable 2FA (Two-Factor Authentication)
223
+
224
+ ```bash
225
+ # Enable 2FA for your npm account
226
+ npm profile enable-2fa auth-and-writes
227
+ ```
228
+
229
+ ### Use npm Tokens for CI/CD
230
+
231
+ ```bash
232
+ # Create an automation token
233
+ npm token create --read-only
234
+ ```
235
+
236
+ ---
237
+
238
+ ## 📊 After Publishing
239
+
240
+ ### Monitor Your Package
241
+
242
+ 1. **npm Package Page:**
243
+ - https://www.npmjs.com/package/@projectmd/node-monitor
244
+ - View downloads, versions, dependencies
245
+
246
+ 2. **Check Package Health:**
247
+ ```bash
248
+ npm view @projectmd/node-monitor
249
+ ```
250
+
251
+ 3. **Track Downloads:**
252
+ - https://npm-stat.com/charts.html?package=@projectmd/node-monitor
253
+
254
+ ### Respond to Issues
255
+
256
+ - Monitor GitHub issues
257
+ - Respond to user questions
258
+ - Fix bugs and release patches
259
+
260
+ ### Keep Documentation Updated
261
+
262
+ - Update README.md with new features
263
+ - Maintain CHANGELOG.md
264
+ - Update version in documentation
265
+
266
+ ---
267
+
268
+ ## 🎉 Success!
269
+
270
+ Once published, users can install your package with:
271
+
272
+ ```bash
273
+ npm install @projectmd/node-monitor
274
+ ```
275
+
276
+ And use it in their projects:
277
+
278
+ ```javascript
279
+ const NodeMonitor = require('@projectmd/node-monitor');
280
+ const monitor = new NodeMonitor();
281
+ ```
282
+
283
+ ---
284
+
285
+ ## 📝 Quick Reference Commands
286
+
287
+ ```bash
288
+ # Login
289
+ npm login
290
+
291
+ # Test package
292
+ npm pack
293
+
294
+ # Dry run
295
+ npm publish --dry-run --access public
296
+
297
+ # Publish
298
+ npm publish --access public
299
+
300
+ # Update version
301
+ npm version patch|minor|major
302
+
303
+ # View package info
304
+ npm view @projectmd/node-monitor
305
+
306
+ # Unpublish (within 72 hours only)
307
+ npm unpublish @projectmd/node-monitor@1.0.0
308
+ ```
309
+
310
+ ---
311
+
312
+ ## 🔗 Useful Links
313
+
314
+ - **npm Documentation:** https://docs.npmjs.com/
315
+ - **Semantic Versioning:** https://semver.org/
316
+ - **npm Package Best Practices:** https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry
317
+ - **npm CLI Commands:** https://docs.npmjs.com/cli/v9/commands
318
+
319
+ ---
320
+
321
+ ## ⚠️ Important Notes
322
+
323
+ 1. **You cannot unpublish after 72 hours** - Be sure before publishing!
324
+ 2. **You cannot reuse a version number** - Once published, it's permanent
325
+ 3. **Breaking changes require major version bump** - Follow semantic versioning
326
+ 4. **Test thoroughly before publishing** - Your users depend on it!
327
+
328
+ ---
329
+
330
+ **Good luck with your npm package! 🚀**
331
+