@mgks/docmd 0.1.3 → 0.2.0

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.
Files changed (56) hide show
  1. package/.github/workflows/deploy-docmd.yml +2 -2
  2. package/README.md +2 -4
  3. package/assets/css/welcome.css +62 -358
  4. package/assets/images/preview-dark-1.webp +0 -0
  5. package/assets/images/preview-dark-2.webp +0 -0
  6. package/assets/images/preview-dark-3.webp +0 -0
  7. package/assets/images/preview-light-1.webp +0 -0
  8. package/assets/images/preview-light-2.webp +0 -0
  9. package/assets/images/preview-light-3.webp +0 -0
  10. package/config.js +35 -4
  11. package/docs/cli-commands.md +1 -2
  12. package/docs/configuration.md +104 -23
  13. package/docs/content/containers/buttons.md +88 -0
  14. package/docs/content/containers/callouts.md +154 -0
  15. package/docs/content/containers/cards.md +93 -0
  16. package/docs/content/containers/index.md +35 -0
  17. package/docs/content/containers/nested-containers.md +329 -0
  18. package/docs/content/containers/steps.md +175 -0
  19. package/docs/content/containers/tabs.md +228 -0
  20. package/docs/content/frontmatter.md +4 -4
  21. package/docs/content/index.md +5 -4
  22. package/docs/content/markdown-syntax.md +4 -4
  23. package/docs/content/no-style-example.md +1 -1
  24. package/docs/contributing.md +7 -0
  25. package/docs/deployment.md +22 -31
  26. package/docs/getting-started/basic-usage.md +3 -2
  27. package/docs/getting-started/index.md +3 -3
  28. package/docs/getting-started/installation.md +1 -1
  29. package/docs/index.md +14 -20
  30. package/docs/plugins/seo.md +2 -0
  31. package/docs/plugins/sitemap.md +1 -1
  32. package/docs/theming/assets-management.md +1 -1
  33. package/docs/theming/available-themes.md +45 -52
  34. package/docs/theming/light-dark-mode.md +12 -3
  35. package/package.json +9 -3
  36. package/src/assets/css/docmd-main.css +935 -573
  37. package/src/assets/css/docmd-theme-retro.css +812 -0
  38. package/src/assets/css/docmd-theme-ruby.css +619 -0
  39. package/src/assets/css/docmd-theme-sky.css +606 -605
  40. package/src/assets/js/docmd-image-lightbox.js +1 -3
  41. package/src/assets/js/docmd-main.js +97 -0
  42. package/src/commands/build.js +1 -1
  43. package/src/commands/dev.js +5 -2
  44. package/src/commands/init.js +21 -1
  45. package/src/core/file-processor.js +626 -363
  46. package/src/core/html-generator.js +20 -30
  47. package/src/plugins/seo.js +4 -0
  48. package/src/templates/layout.ejs +34 -8
  49. package/assets/images/preview-dark-1.png +0 -0
  50. package/assets/images/preview-dark-2.png +0 -0
  51. package/assets/images/preview-dark-3.png +0 -0
  52. package/assets/images/preview-light-1.png +0 -0
  53. package/assets/images/preview-light-2.png +0 -0
  54. package/assets/images/preview-light-3.png +0 -0
  55. package/docs/content/custom-containers.md +0 -129
  56. package/src/assets/js/docmd-theme-toggle.js +0 -59
@@ -23,11 +23,11 @@ jobs:
23
23
  - name: Set up Node.js ⚙️
24
24
  uses: actions/setup-node@v4
25
25
  with:
26
- node-version: '22' # Use Node.js 22
26
+ node-version: '22'
27
27
  cache: 'npm'
28
28
 
29
29
  - name: Install Dependencies 📦
30
- run: npm ci # Use ci for cleaner installs in CI
30
+ run: npm ci
31
31
 
32
32
  - name: Build docmd's Own Docs 🛠️
33
33
  run: node ./bin/docmd.js build
package/README.md CHANGED
@@ -70,7 +70,7 @@ Contributions are welcome! Please check our [contributing guidelines](https://do
70
70
 
71
71
  ## License
72
72
 
73
- `docmd` is licensed under the [MIT License](LICENSE).
73
+ `docmd` is licensed under the [MIT License](https://github.com/mgks/docmd/blob/main/LICENSE).
74
74
 
75
75
  ## Support the Project
76
76
 
@@ -80,6 +80,4 @@ If you find `docmd` useful, please consider:
80
80
  - Sharing it with others who might benefit
81
81
  - Reporting issues or submitting pull requests
82
82
 
83
- **[GitHub Sponsors](https://github.com/sponsors/mgks): Become a monthly or one-time GitHub sponsor to support docmd & other projects developed by [me](https://mgks.dev).**
84
-
85
- <br /><img src="https://forthebadge.com/images/badges/built-with-love.svg" alt="Built with Love">
83
+ **[GitHub Sponsors](https://github.com/sponsors/mgks): Become a monthly or one-time GitHub sponsor to support docmd & other projects developed by [me](https://mgks.dev).**
@@ -1,362 +1,66 @@
1
- :root {
2
- --primary-color: #047bf1;
3
- --primary-hover: #026ed9;
4
- --text-color: #333;
5
- --text-light: #666;
6
- --bg-color: #fff;
7
- --bg-secondary: #f8f9fa;
8
- --border-color: #eaeaea;
9
- --shadow-color: rgba(0, 0, 0, 0.08);
10
- --container-padding: 5rem;
11
- }
12
-
13
- @media (prefers-color-scheme: dark) {
14
- :root {
15
- --primary-color: #047bf1;
16
- --primary-hover: #026ed9;
17
- --text-color: #e0e0e0;
18
- --text-light: #aaa;
19
- --bg-color: #121212;
20
- --bg-secondary: #1e1e1e;
21
- --border-color: #333;
22
- --shadow-color: rgba(0, 0, 0, 0.3);
23
- }
24
- }
25
-
26
- [data-theme="light"] {
27
- --primary-color: #047bf1;
28
- --primary-hover: #026ed9;
29
- --text-color: #333;
30
- --text-light: #666;
31
- --bg-color: #fff;
32
- --bg-secondary: #f8f9fa;
33
- --border-color: #eaeaea;
34
- --shadow-color: rgba(0, 0, 0, 0.35);
35
-
1
+ :root{--primary-color:#047bf1;--primary-hover:#026ed9;--text-color:#333;--text-light:#666;--bg-color:#fff;--bg-secondary:#f8f9fa;--border-color:#eaeaea;--shadow-color:#00000014;--container-padding:5rem}
2
+ @media (prefers-color-scheme: dark) {
3
+ :root{--primary-color:#047bf1;--primary-hover:#026ed9;--text-color:#e0e0e0;--text-light:#aaa;--bg-color:#121212;--bg-secondary:#1e1e1e;--border-color:#333;--shadow-color:#0000004d}
36
4
  }
37
-
38
- [data-theme="dark"] {
39
- --primary-color: #1955b6;
40
- --primary-hover: #084dbd;
41
- --text-color: #e0e0e0;
42
- --text-light: #aaa;
43
- --bg-color: #121212;
44
- --bg-secondary: #1e1e1e;
45
- --border-color: #333;
46
- --shadow-color: rgba(0, 0, 0, 0.87);
47
-
5
+ [data-theme="light"]{--primary-color:#047bf1;--primary-hover:#026ed9;--text-color:#333;--text-light:#666;--bg-color:#fff;--bg-secondary:#f8f9fa;--border-color:#eaeaea;--shadow-color:#00000059}
6
+ [data-theme="dark"]{--primary-color:#1955b6;--primary-hover:#084dbd;--text-color:#e0e0e0;--text-light:#aaa;--bg-color:#121212;--bg-secondary:#1e1e1e;--border-color:#333;--shadow-color:#000000de}
7
+ *{margin:0;padding:0;box-sizing:border-box}
8
+ body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;color:var(--text-color);background-color:var(--bg-color);height:100vh;display:flex;overflow:hidden}
9
+ .landing-container{display:flex;width:100%;height:100%;padding:0 var(--container-padding);max-width:1600px;margin:0 auto}
10
+ .content-side{flex:1;padding:3rem 2rem 3rem 0;display:flex;flex-direction:column;justify-content:center}
11
+ .preview-side{flex:1;display:flex;align-items:center;justify-content:flex-start;position:relative;overflow:visible}
12
+ .header-top{position:absolute;top:2rem;right:3rem;z-index:100}
13
+ .theme-toggle{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-color);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}
14
+ .theme-toggle:hover{background:var(--border-color)}
15
+ .logo{margin-bottom:1.5rem;display:flex;align-items:center}
16
+ .logo svg{height:48px;width:auto}
17
+ .logo-text{font-family:'PT Mono',monospace;font-weight:700;font-size:2em;margin-left:.25em}
18
+ h1{font-size:3rem;font-weight:700;margin-bottom:1rem;letter-spacing:-.02em}
19
+ .tagline{font-size:1.25rem;color:var(--text-light);margin-bottom:2rem;font-weight:400}
20
+ .features{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-bottom:2rem}
21
+ .feature{display:flex;align-items:flex-start;gap:.75rem}
22
+ .feature-icon{background-color:var(--primary-color);color:#fff;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
23
+ .feature-text{font-size:.9rem}
24
+ .feature-text strong{display:block;margin-bottom:.25rem}
25
+ .buttons{display:flex;gap:1rem;margin-bottom:2rem}
26
+ .btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;font-size:1rem;text-decoration:none;transition:all .2s ease}
27
+ .btn-primary{background-color:var(--primary-color);color:#fff;border:none}
28
+ .btn-primary:hover{background-color:var(--primary-hover)}
29
+ .btn-secondary{background-color:var(--bg-secondary);color:var(--text-color);border:1px solid var(--border-color)}
30
+ .btn-secondary:hover{background-color:var(--border-color)}
31
+ .social-links{display:flex;gap:1rem;padding:0 .25em}
32
+ .social-link{color:var(--text-light);transition:color .2s ease}
33
+ .social-link:hover{color:var(--primary-color)}
34
+ .preview-stack{position:relative;width:100%;height:400px;transform:translateX(15%);perspective:1000px}
35
+ .preview-image{position:absolute;width:100%;max-width:700px;height:400px;border-radius:20px;box-shadow:0 25px 50px -12px var(--shadow-color);transition:all .3s ease;overflow:hidden}
36
+ .preview-image img{width:100%;height:100%;object-fit:cover;object-position:left top;border-radius:8px;pointer-events:none}
37
+ .preview-image.top{z-index:3;transform:rotate(3deg) translateY(-10%) translateX(7%)}
38
+ .preview-image.middle{z-index:2;transform:rotate(-3deg) translateY(1%) translateX(-2%)}
39
+ .preview-image.bottom{z-index:1;transform:rotate(-8deg) translateY(10%) translateX(-10%)}
40
+ body[data-theme="light"] .preview-image .light-img{display:block}
41
+ body[data-theme="light"] .preview-image .dark-img{display:none}
42
+ body[data-theme="dark"] .preview-image .light-img{display:none}
43
+ body[data-theme="dark"] .preview-image .dark-img{display:block}
44
+ @media (max-width: 1400px) {
45
+ :root{--container-padding:3rem}
46
+ .preview-stack{transform:translateX(15%)}
48
47
  }
49
-
50
- * {
51
- margin: 0;
52
- padding: 0;
53
- box-sizing: border-box;
54
- }
55
-
56
- body {
57
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
58
- line-height: 1.5;
59
- color: var(--text-color);
60
- background-color: var(--bg-color);
61
- height: 100vh;
62
- display: flex;
63
- overflow: hidden;
64
- }
65
-
66
- .landing-container {
67
- display: flex;
68
- width: 100%;
69
- height: 100%;
70
- padding: 0 var(--container-padding);
71
- max-width: 1600px;
72
- margin: 0 auto;
73
- }
74
-
75
- .content-side {
76
- flex: 1;
77
- padding: 3rem 2rem 3rem 0;
78
- display: flex;
79
- flex-direction: column;
80
- justify-content: center;
81
-
48
+ @media (max-width: 1200px) {
49
+ :root{--container-padding:2rem}
50
+ .preview-side{display:none}
51
+ .content-side{max-width:100%;padding:3rem 0}
52
+ .header-top{right:2rem}
82
53
  }
83
-
84
- .preview-side {
85
- flex: 1;
86
- display: flex;
87
- align-items: center;
88
- justify-content: flex-start;
89
- position: relative;
90
- overflow: visible;
91
- }
92
-
93
- .header-top {
94
- position: absolute;
95
- top: 2rem;
96
- right: 3rem;
97
- z-index: 100;
98
-
54
+ @media (max-width: 768px) {
55
+ :root{--container-padding:1.5rem}
56
+ body{overflow:auto}
57
+ .content-side{padding:2rem 0}
58
+ h1{font-size:2.5rem}
59
+ .features{grid-template-columns:1fr}
60
+ .buttons{flex-direction:column}
61
+ .header-top{padding:1rem 0;text-align:center;right:1rem}
62
+ h1{font-size:2.5rem}
63
+ .tagline{font-size:1em;font-weight:500}
64
+ .landing-container{padding:1rem;flex-direction:column}
99
65
  }
100
-
101
- .theme-toggle {
102
- background: var(--bg-secondary);
103
- border: 1px solid var(--border-color);
104
- color: var(--text-color);
105
- width: 40px;
106
- height: 40px;
107
- border-radius: 50%;
108
- display: flex;
109
- align-items: center;
110
- justify-content: center;
111
- cursor: pointer;
112
- transition: all 0.2s ease;
113
- }
114
-
115
- .theme-toggle:hover {
116
- background: var(--border-color);
117
- }
118
-
119
- .logo {
120
- margin-bottom: 1.5rem;
121
- display: flex;
122
- align-items: center;
123
- }
124
-
125
- .logo svg {
126
- height: 48px;
127
- width: auto;
128
- }
129
-
130
- .logo-text {
131
- font-family: 'PT Mono', monospace;
132
- font-weight: 700;
133
- font-size: 2em;
134
- margin-left: .25em;
135
-
136
- }
137
-
138
- h1 {
139
- font-size: 3rem;
140
- font-weight: 700;
141
- margin-bottom: 1rem;
142
- letter-spacing: -0.02em;
143
- }
144
-
145
- .tagline {
146
- font-size: 1.25rem;
147
- color: var(--text-light);
148
- margin-bottom: 2rem;
149
- font-weight: 400;
150
- }
151
-
152
- .features {
153
- display: grid;
154
- grid-template-columns: repeat(2, 1fr);
155
- gap: 1.5rem;
156
- margin-bottom: 2rem;
157
- }
158
-
159
- .feature {
160
- display: flex;
161
- align-items: flex-start;
162
- gap: 0.75rem;
163
- }
164
-
165
- .feature-icon {
166
- background-color: var(--primary-color);
167
- color: white;
168
- width: 32px;
169
- height: 32px;
170
- border-radius: 6px;
171
- display: flex;
172
- align-items: center;
173
- justify-content: center;
174
- flex-shrink: 0;
175
- }
176
-
177
- .feature-text {
178
- font-size: 0.9rem;
179
- }
180
-
181
- .feature-text strong {
182
- display: block;
183
- margin-bottom: 0.25rem;
184
- }
185
-
186
- .buttons {
187
- display: flex;
188
- gap: 1rem;
189
- margin-bottom: 2rem;
190
- }
191
-
192
- .btn {
193
- display: inline-flex;
194
- align-items: center;
195
- gap: 0.5rem;
196
- padding: 0.75rem 1.5rem;
197
- border-radius: 8px;
198
- font-weight: 600;
199
- font-size: 1rem;
200
- text-decoration: none;
201
- transition: all 0.2s ease;
202
- }
203
-
204
- .btn-primary {
205
- background-color: var(--primary-color);
206
- color: white;
207
- border: none;
208
- }
209
-
210
- .btn-primary:hover {
211
- background-color: var(--primary-hover);
212
- }
213
-
214
- .btn-secondary {
215
- background-color: var(--bg-secondary);
216
- color: var(--text-color);
217
- border: 1px solid var(--border-color);
218
- }
219
-
220
- .btn-secondary:hover {
221
- background-color: var(--border-color);
222
- }
223
-
224
- .social-links {
225
- display: flex;
226
- gap: 1rem;
227
- padding: 0 .25em;
228
-
229
- }
230
-
231
- .social-link {
232
- color: var(--text-light);
233
- transition: color 0.2s ease;
234
- }
235
-
236
- .social-link:hover {
237
- color: var(--primary-color);
238
- }
239
-
240
- .preview-stack {
241
- position: relative;
242
- width: 100%;
243
- height: 400px;
244
- transform: translateX(15%);
245
- perspective: 1000px;
246
-
247
- }
248
-
249
- .preview-image {
250
- position: absolute;
251
- width: 100%;
252
- max-width: 700px;
253
- height: 400px;
254
- border-radius: 20px;
255
- box-shadow: 0 25px 50px -12px var(--shadow-color);
256
- transition: all 0.3s ease;
257
- overflow: hidden;
258
-
259
- }
260
-
261
- .preview-image img {
262
- width: 100%;
263
- height: 100%;
264
- object-fit: cover;
265
- object-position: left top;
266
- border-radius: 8px;
267
- pointer-events: none;
268
- }
269
-
270
- .preview-image.top {
271
- z-index: 3;
272
- transform: rotate(3deg) translateY(-10%) translateX(7%);
273
-
274
- }
275
-
276
- .preview-image.middle {
277
- z-index: 2;
278
- transform: rotate(-3deg) translateY(1%) translateX(-2%);
279
-
280
- }
281
-
282
- .preview-image.bottom {
283
- z-index: 1;
284
- transform: rotate(-8deg) translateY(10%) translateX(-10%);
285
-
286
- }
287
-
288
- body[data-theme="light"] .preview-image .light-img {
289
- display: block;
290
- }
291
-
292
- body[data-theme="light"] .preview-image .dark-img {
293
- display: none;
294
- }
295
-
296
- body[data-theme="dark"] .preview-image .light-img {
297
- display: none;
298
-
299
- }
300
-
301
- body[data-theme="dark"] .preview-image .dark-img {
302
- display: block;
303
- }
304
-
305
- @media (max-width: 1400px) {
306
- :root {
307
- --container-padding: 3rem;
308
- }
309
-
310
- .preview-stack {
311
- transform: translateX(15%);
312
- }
313
- }
314
-
315
- @media (max-width: 1200px) {
316
- :root {
317
- --container-padding: 2rem;
318
- }
319
-
320
- .preview-side {
321
- display: none;
322
- }
323
-
324
- .content-side {
325
- max-width: 100%;
326
- padding: 3rem 0;
327
- }
328
-
329
- .header-top {
330
- right: 2rem;
331
- }
332
- }
333
-
334
- @media (max-width: 768px) {
335
- :root {
336
- --container-padding: 1.5rem;
337
- }
338
-
339
- .content-side {
340
- padding: 2rem 0;
341
- }
342
-
343
- h1 {
344
- font-size: 2.5rem;
345
- }
346
-
347
- .features {
348
- grid-template-columns: 1fr;
349
- }
350
-
351
- .buttons {
352
- flex-direction: column;
353
- }
354
-
355
- .header-top {
356
- right: 1.5rem;
357
- }
358
- }
359
- .social-links .lucide-heart-handshake {
360
- color: rgb(205, 39, 39);
361
-
362
- }
66
+ .social-links .lucide-heart-handshake{color:#cd2727}
package/config.js CHANGED
@@ -18,22 +18,31 @@ module.exports = {
18
18
  srcDir: 'docs', // Source directory for Markdown files
19
19
  outputDir: 'site', // Directory for generated static site
20
20
 
21
+ // Sidebar Configuration
22
+ sidebar: {
23
+ collapsible: true, // or false to disable
24
+ defaultCollapsed: false, // or true to start collapsed
25
+ },
26
+
21
27
  // Theme Configuration
22
28
  theme: {
23
29
  name: 'sky', // Themes: 'default', 'sky'
24
30
  defaultMode: 'light', // Initial color mode: 'light' or 'dark'
25
31
  enableModeToggle: true, // Show UI button to toggle light/dark modes
32
+ positionMode: 'top', // 'top' or 'bottom' for the theme toggle
26
33
  customCss: [ // Array of paths to custom CSS files
27
34
  // '/assets/css/custom.css', // Custom TOC styles
28
35
  ],
29
- // options: { /* Future: theme-specific options */ }
30
36
  },
31
37
 
32
38
  // Custom JavaScript Files
33
39
  customJs: [ // Array of paths to custom JS files, loaded at end of body
34
- // '/assets/js/docmd-image-lightbox.js', // Image lightbox functionality (commented out)
40
+ '/assets/js/docmd-image-lightbox.js', // Image lightbox functionality
35
41
  ],
36
42
 
43
+ // Content Processing
44
+ autoTitleFromH1: true, // Set to true to automatically use the first H1 as page title
45
+
37
46
  // Plugins Configuration (Object format)
38
47
  // Plugins are configured here. docmd will look for these keys.
39
48
  plugins: {
@@ -79,6 +88,7 @@ module.exports = {
79
88
  navigation: [
80
89
  { title: 'Welcome', path: '/', icon: 'feather' },
81
90
  { title: 'Overview', path: '/overview', icon: 'home' },
91
+ // { title: 'Support the Project', path: 'https://github.com/sponsors/mgks', icon: 'heart', external: true },
82
92
  {
83
93
  title: 'Getting Started',
84
94
  icon: 'rocket',
@@ -96,7 +106,19 @@ module.exports = {
96
106
  { title: 'Frontmatter', path: '/content/frontmatter', icon: 'file-text' },
97
107
  { title: 'Markdown Syntax', path: '/content/markdown-syntax', icon: 'code-2' },
98
108
  { title: 'Images', path: '/content/images', icon: 'image' },
99
- { title: 'Custom Containers', path: '/content/custom-containers', icon: 'box' },
109
+ {
110
+ title: 'Custom Containers',
111
+ path: '/content/containers/',
112
+ icon: 'box',
113
+ children: [
114
+ { title: 'Callouts', path: '/content/containers/callouts', icon: 'megaphone' },
115
+ { title: 'Cards', path: '/content/containers/cards', icon: 'panel-top' },
116
+ { title: 'Steps', path: '/content/containers/steps', icon: 'list-ordered' },
117
+ { title: 'Tabs', path: '/content/containers/tabs', icon: 'columns-3' },
118
+ { title: 'Buttons', path: '/content/containers/buttons', icon: 'mouse-pointer-click' },
119
+ { title: 'Nested Containers', path: '/content/containers/nested-containers', icon: 'folder-tree' },
120
+ ]
121
+ },
100
122
  { title: 'No-Style Pages', path: '/content/no-style-pages', icon: 'layout' },
101
123
  { title: 'No-Style Example', path: '/content/no-style-example', icon: 'sparkles' },
102
124
  ],
@@ -127,9 +149,18 @@ module.exports = {
127
149
  { title: 'Deployment', path: '/deployment', icon: 'upload-cloud' },
128
150
  { title: 'Contributing', path: '/contributing', icon: 'users-2' },
129
151
 
130
- { title: 'GitHub', path: 'https://github.com/mgks/docmd', icon: 'github', external: true }
152
+ { title: 'GitHub', path: 'https://github.com/mgks/docmd', icon: 'github', external: true },
153
+ { title: 'Discussions', path: 'https://github.com/mgks/docmd/discussions', icon: 'message-square', external: true },
154
+ { title: 'Issues', path: 'https://github.com/mgks/docmd/issues', icon: 'badge-alert', external: true }
131
155
  ],
132
156
 
157
+ // Sponsor Ribbon Configuration
158
+ sponsor: {
159
+ enabled: true, // Enable/disable the sponsor ribbon
160
+ title: 'Support docmd', // Text to display on the ribbon
161
+ link: 'https://github.com/sponsors/mgks', // URL for the sponsor link
162
+ },
163
+
133
164
  // Footer Configuration
134
165
  // Markdown is supported here.
135
166
  footer: '© ' + new Date().getFullYear() + ' Project docmd.',
@@ -85,8 +85,7 @@ This provides a fast feedback loop, allowing you to see your changes almost inst
85
85
  * **Description:** Preserves existing asset files instead of updating them. Use this flag if you've customized any of the default assets and want to keep your modifications.
86
86
  * **Example:** `docmd dev --preserve`
87
87
 
88
- * `-p, --port <port_number>` (Future Option)
89
- * **Description:** While not yet implemented, a future version might allow specifying a custom port for the development server. Currently, it defaults to port 3000 or the next available port if 3000 is in use.
88
+ **Note:** The development server starts on port 3000 by default. If port 3000 is already in use, the server will automatically try the next available port (3001, 3002, etc.) until it finds an open port.
90
89
 
91
90
  ## Global Options (Apply to all commands)
92
91