@knowcode/doc-builder 1.8.3 → 1.8.4

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 (45) hide show
  1. package/.claude/settings.local.json +5 -1
  2. package/CHANGELOG.md +16 -0
  3. package/assets/css/notion-style.css +26 -0
  4. package/debug-login.sql +30 -0
  5. package/html/README.html +27 -3
  6. package/html/auth.js +2 -2
  7. package/html/css/notion-style.css +26 -0
  8. package/html/documentation-index.html +27 -3
  9. package/html/guides/authentication-default-change.html +27 -3
  10. package/html/guides/authentication-guide.html +27 -3
  11. package/html/guides/claude-workflow-guide.html +27 -3
  12. package/html/guides/documentation-standards.html +27 -3
  13. package/html/guides/phosphor-icons-guide.html +27 -3
  14. package/html/guides/private-directory-authentication.html +27 -3
  15. package/html/guides/public-site-deployment.html +27 -3
  16. package/html/guides/search-engine-verification-guide.html +27 -3
  17. package/html/guides/seo-guide.html +27 -3
  18. package/html/guides/seo-optimization-guide.html +27 -3
  19. package/html/guides/troubleshooting-guide.html +27 -3
  20. package/html/guides/windows-setup-guide.html +27 -3
  21. package/html/index.html +27 -3
  22. package/html/js/auth.js +2 -2
  23. package/html/login.html +2 -2
  24. package/html/private/cache-control-anti-pattern.html +5 -5
  25. package/html/private/launch/README.html +5 -5
  26. package/html/private/launch/auth-cleanup-summary.html +5 -5
  27. package/html/private/launch/bubble-plugin-specification.html +5 -5
  28. package/html/private/launch/go-to-market-strategy.html +5 -5
  29. package/html/private/launch/launch-announcements.html +5 -5
  30. package/html/private/launch/vercel-deployment-auth-setup.html +5 -5
  31. package/html/private/next-steps-walkthrough.html +5 -5
  32. package/html/private/supabase-auth-implementation-completed.html +5 -5
  33. package/html/private/supabase-auth-implementation-plan.html +5 -5
  34. package/html/private/supabase-auth-integration-plan.html +5 -5
  35. package/html/private/supabase-auth-setup-guide.html +5 -5
  36. package/html/private/test-private-doc.html +5 -5
  37. package/html/private/user-management-tooling.html +5 -5
  38. package/html/sitemap.xml +44 -44
  39. package/html/vercel-cli-setup-guide.html +27 -3
  40. package/html/vercel-first-time-setup-guide.html +27 -3
  41. package/lib/core-builder.js +6 -10
  42. package/migrate-to-domain-auth.sql +47 -0
  43. package/package.json +1 -1
  44. package/user-access-view.sql +49 -0
  45. package/user-management/add-users.sh +31 -11
package/html/sitemap.xml CHANGED
@@ -2,265 +2,265 @@
2
2
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
3
  <url>
4
4
  <loc>https://doc-builder-delta.vercel.app/404.html</loc>
5
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
5
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
6
6
  <changefreq>monthly</changefreq>
7
7
  <priority>0.6</priority>
8
8
  </url>
9
9
  <url>
10
10
  <loc>https://doc-builder-delta.vercel.app/README.html</loc>
11
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
11
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
12
12
  <changefreq>monthly</changefreq>
13
13
  <priority>0.6</priority>
14
14
  </url>
15
15
  <url>
16
16
  <loc>https://doc-builder-delta.vercel.app/claude-workflow-guide.html</loc>
17
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
17
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
18
18
  <changefreq>monthly</changefreq>
19
19
  <priority>0.8</priority>
20
20
  </url>
21
21
  <url>
22
22
  <loc>https://doc-builder-delta.vercel.app/documentation-index.html</loc>
23
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
23
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
24
24
  <changefreq>monthly</changefreq>
25
25
  <priority>0.6</priority>
26
26
  </url>
27
27
  <url>
28
28
  <loc>https://doc-builder-delta.vercel.app/guides/authentication-default-change.html</loc>
29
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
29
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
30
30
  <changefreq>monthly</changefreq>
31
31
  <priority>0.8</priority>
32
32
  </url>
33
33
  <url>
34
34
  <loc>https://doc-builder-delta.vercel.app/guides/authentication-guide.html</loc>
35
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
35
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
36
36
  <changefreq>monthly</changefreq>
37
37
  <priority>0.8</priority>
38
38
  </url>
39
39
  <url>
40
40
  <loc>https://doc-builder-delta.vercel.app/guides/cache-control-anti-pattern.html</loc>
41
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
41
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
42
42
  <changefreq>monthly</changefreq>
43
43
  <priority>0.8</priority>
44
44
  </url>
45
45
  <url>
46
46
  <loc>https://doc-builder-delta.vercel.app/guides/claude-workflow-guide.html</loc>
47
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
47
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
48
48
  <changefreq>monthly</changefreq>
49
49
  <priority>0.8</priority>
50
50
  </url>
51
51
  <url>
52
52
  <loc>https://doc-builder-delta.vercel.app/guides/document-standards.html</loc>
53
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
53
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
54
54
  <changefreq>monthly</changefreq>
55
55
  <priority>0.8</priority>
56
56
  </url>
57
57
  <url>
58
58
  <loc>https://doc-builder-delta.vercel.app/guides/documentation-standards.html</loc>
59
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
59
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
60
60
  <changefreq>monthly</changefreq>
61
61
  <priority>0.8</priority>
62
62
  </url>
63
63
  <url>
64
64
  <loc>https://doc-builder-delta.vercel.app/guides/next-steps-walkthrough.html</loc>
65
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
65
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
66
66
  <changefreq>monthly</changefreq>
67
67
  <priority>0.8</priority>
68
68
  </url>
69
69
  <url>
70
70
  <loc>https://doc-builder-delta.vercel.app/guides/phosphor-icons-guide.html</loc>
71
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
71
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
72
72
  <changefreq>monthly</changefreq>
73
73
  <priority>0.8</priority>
74
74
  </url>
75
75
  <url>
76
76
  <loc>https://doc-builder-delta.vercel.app/guides/private-directory-authentication.html</loc>
77
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
77
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
78
78
  <changefreq>monthly</changefreq>
79
79
  <priority>0.8</priority>
80
80
  </url>
81
81
  <url>
82
82
  <loc>https://doc-builder-delta.vercel.app/guides/public-site-deployment.html</loc>
83
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
83
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
84
84
  <changefreq>monthly</changefreq>
85
85
  <priority>0.8</priority>
86
86
  </url>
87
87
  <url>
88
88
  <loc>https://doc-builder-delta.vercel.app/guides/search-engine-verification-guide.html</loc>
89
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
89
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
90
90
  <changefreq>monthly</changefreq>
91
91
  <priority>0.8</priority>
92
92
  </url>
93
93
  <url>
94
94
  <loc>https://doc-builder-delta.vercel.app/guides/seo-guide.html</loc>
95
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
95
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
96
96
  <changefreq>monthly</changefreq>
97
97
  <priority>0.8</priority>
98
98
  </url>
99
99
  <url>
100
100
  <loc>https://doc-builder-delta.vercel.app/guides/seo-optimization-guide.html</loc>
101
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
101
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
102
102
  <changefreq>monthly</changefreq>
103
103
  <priority>0.8</priority>
104
104
  </url>
105
105
  <url>
106
106
  <loc>https://doc-builder-delta.vercel.app/guides/supabase-auth-implementation-plan.html</loc>
107
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
107
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
108
108
  <changefreq>monthly</changefreq>
109
109
  <priority>0.8</priority>
110
110
  </url>
111
111
  <url>
112
112
  <loc>https://doc-builder-delta.vercel.app/guides/supabase-auth-integration-plan.html</loc>
113
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
113
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
114
114
  <changefreq>monthly</changefreq>
115
115
  <priority>0.8</priority>
116
116
  </url>
117
117
  <url>
118
118
  <loc>https://doc-builder-delta.vercel.app/guides/supabase-auth-setup-guide.html</loc>
119
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
119
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
120
120
  <changefreq>monthly</changefreq>
121
121
  <priority>0.8</priority>
122
122
  </url>
123
123
  <url>
124
124
  <loc>https://doc-builder-delta.vercel.app/guides/troubleshooting-guide.html</loc>
125
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
125
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
126
126
  <changefreq>monthly</changefreq>
127
127
  <priority>0.8</priority>
128
128
  </url>
129
129
  <url>
130
130
  <loc>https://doc-builder-delta.vercel.app/guides/vercel-deployment-auth-setup.html</loc>
131
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
131
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
132
132
  <changefreq>monthly</changefreq>
133
133
  <priority>0.8</priority>
134
134
  </url>
135
135
  <url>
136
136
  <loc>https://doc-builder-delta.vercel.app/guides/windows-setup-guide.html</loc>
137
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
137
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
138
138
  <changefreq>monthly</changefreq>
139
139
  <priority>0.8</priority>
140
140
  </url>
141
141
  <url>
142
142
  <loc>https://doc-builder-delta.vercel.app/index.html</loc>
143
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
143
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
144
144
  <changefreq>weekly</changefreq>
145
145
  <priority>1.0</priority>
146
146
  </url>
147
147
  <url>
148
148
  <loc>https://doc-builder-delta.vercel.app/launch/README.html</loc>
149
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
149
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
150
150
  <changefreq>monthly</changefreq>
151
151
  <priority>0.6</priority>
152
152
  </url>
153
153
  <url>
154
154
  <loc>https://doc-builder-delta.vercel.app/launch/bubble-plugin-specification.html</loc>
155
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
155
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
156
156
  <changefreq>monthly</changefreq>
157
157
  <priority>0.6</priority>
158
158
  </url>
159
159
  <url>
160
160
  <loc>https://doc-builder-delta.vercel.app/launch/go-to-market-strategy.html</loc>
161
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
161
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
162
162
  <changefreq>monthly</changefreq>
163
163
  <priority>0.6</priority>
164
164
  </url>
165
165
  <url>
166
166
  <loc>https://doc-builder-delta.vercel.app/launch/launch-announcements.html</loc>
167
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
167
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
168
168
  <changefreq>monthly</changefreq>
169
169
  <priority>0.6</priority>
170
170
  </url>
171
171
  <url>
172
172
  <loc>https://doc-builder-delta.vercel.app/private/cache-control-anti-pattern.html</loc>
173
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
173
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
174
174
  <changefreq>monthly</changefreq>
175
175
  <priority>0.6</priority>
176
176
  </url>
177
177
  <url>
178
178
  <loc>https://doc-builder-delta.vercel.app/private/launch/README.html</loc>
179
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
179
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
180
180
  <changefreq>monthly</changefreq>
181
181
  <priority>0.6</priority>
182
182
  </url>
183
183
  <url>
184
184
  <loc>https://doc-builder-delta.vercel.app/private/launch/auth-cleanup-summary.html</loc>
185
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
185
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
186
186
  <changefreq>monthly</changefreq>
187
187
  <priority>0.6</priority>
188
188
  </url>
189
189
  <url>
190
190
  <loc>https://doc-builder-delta.vercel.app/private/launch/bubble-plugin-specification.html</loc>
191
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
191
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
192
192
  <changefreq>monthly</changefreq>
193
193
  <priority>0.6</priority>
194
194
  </url>
195
195
  <url>
196
196
  <loc>https://doc-builder-delta.vercel.app/private/launch/go-to-market-strategy.html</loc>
197
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
197
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
198
198
  <changefreq>monthly</changefreq>
199
199
  <priority>0.6</priority>
200
200
  </url>
201
201
  <url>
202
202
  <loc>https://doc-builder-delta.vercel.app/private/launch/launch-announcements.html</loc>
203
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
203
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
204
204
  <changefreq>monthly</changefreq>
205
205
  <priority>0.6</priority>
206
206
  </url>
207
207
  <url>
208
208
  <loc>https://doc-builder-delta.vercel.app/private/launch/vercel-deployment-auth-setup.html</loc>
209
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
209
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
210
210
  <changefreq>monthly</changefreq>
211
211
  <priority>0.6</priority>
212
212
  </url>
213
213
  <url>
214
214
  <loc>https://doc-builder-delta.vercel.app/private/next-steps-walkthrough.html</loc>
215
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
215
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
216
216
  <changefreq>monthly</changefreq>
217
217
  <priority>0.6</priority>
218
218
  </url>
219
219
  <url>
220
220
  <loc>https://doc-builder-delta.vercel.app/private/supabase-auth-implementation-completed.html</loc>
221
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
221
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
222
222
  <changefreq>monthly</changefreq>
223
223
  <priority>0.6</priority>
224
224
  </url>
225
225
  <url>
226
226
  <loc>https://doc-builder-delta.vercel.app/private/supabase-auth-implementation-plan.html</loc>
227
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
227
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
228
228
  <changefreq>monthly</changefreq>
229
229
  <priority>0.6</priority>
230
230
  </url>
231
231
  <url>
232
232
  <loc>https://doc-builder-delta.vercel.app/private/supabase-auth-integration-plan.html</loc>
233
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
233
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
234
234
  <changefreq>monthly</changefreq>
235
235
  <priority>0.6</priority>
236
236
  </url>
237
237
  <url>
238
238
  <loc>https://doc-builder-delta.vercel.app/private/supabase-auth-setup-guide.html</loc>
239
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
239
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
240
240
  <changefreq>monthly</changefreq>
241
241
  <priority>0.8</priority>
242
242
  </url>
243
243
  <url>
244
244
  <loc>https://doc-builder-delta.vercel.app/private/test-private-doc.html</loc>
245
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
245
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
246
246
  <changefreq>monthly</changefreq>
247
247
  <priority>0.6</priority>
248
248
  </url>
249
249
  <url>
250
250
  <loc>https://doc-builder-delta.vercel.app/private/user-management-tooling.html</loc>
251
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
251
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
252
252
  <changefreq>monthly</changefreq>
253
253
  <priority>0.6</priority>
254
254
  </url>
255
255
  <url>
256
256
  <loc>https://doc-builder-delta.vercel.app/vercel-cli-setup-guide.html</loc>
257
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
257
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
258
258
  <changefreq>monthly</changefreq>
259
259
  <priority>0.8</priority>
260
260
  </url>
261
261
  <url>
262
262
  <loc>https://doc-builder-delta.vercel.app/vercel-first-time-setup-guide.html</loc>
263
- <lastmod>2025-07-26T11:11:45.945Z</lastmod>
263
+ <lastmod>2025-07-26T11:44:31.555Z</lastmod>
264
264
  <changefreq>monthly</changefreq>
265
265
  <priority>0.8</priority>
266
266
  </url>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T11:11:45.933Z",
102
- "dateModified": "2025-07-26T11:11:45.933Z",
101
+ "datePublished": "2025-07-26T11:44:31.541Z",
102
+ "dateModified": "2025-07-26T11:44:31.541Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/vercel-cli-setup-guide.html"
@@ -132,7 +132,7 @@
132
132
 
133
133
  <div class="header-actions">
134
134
  <div class="deployment-info">
135
- <span class="deployment-date" title="Built with doc-builder v1.8.2">Last updated: Jul 26, 2025, 11:11 AM UTC</span>
135
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
136
136
  </div>
137
137
 
138
138
 
@@ -206,6 +206,30 @@
206
206
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
207
207
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
208
208
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
209
+ <div class="nav-section private-nav" data-level="1">
210
+ <a class="nav-title collapsible" href="#" data-target="nav-private-1" >
211
+ <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
212
+ </a>
213
+ <div class="nav-content collapsed" id="nav-private-1">
214
+ <a href="/private/cache-control-anti-pattern.html" class="nav-item" data-tooltip="Cache Control Anti-Pattern: Why Aggressive Cache-Busting is Bad for Documentation Sites."><i class="fas fa-file-alt"></i> Cache Control Anti Pattern</a>
215
+ <a href="/private/next-steps-walkthrough.html" class="nav-item" data-tooltip="Now that we&#039;ve implemented Supabase authentication, let&#039;s walk through testing the implementation and preparing for deployment."><i class="fas fa-file-alt"></i> Next Steps Walkthrough</a>
216
+ <a href="/private/supabase-auth-implementation-completed.html" class="nav-item" data-tooltip="This document records the successful implementation of Supabase authentication in @knowcode/doc-builder v1.7.5+."><i class="fas fa-file-alt"></i> Supabase Auth Implementation Completed</a>
217
+ <a href="/private/supabase-auth-implementation-plan.html" class="nav-item" data-tooltip="Supabase Auth Implementation Plan for @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Supabase Auth Implementation Plan</a>
218
+ <a href="/private/supabase-auth-integration-plan.html" class="nav-item" data-tooltip="Supabase Authentication Integration Plan for @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Supabase Auth Integration Plan</a>
219
+ <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
220
+ <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
221
+ <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
222
+ <div class="nav-section private-nav" data-level="2">
223
+ <a class="nav-title collapsible" href="/private/launch/README.html" data-target="nav-private-launch-2" >
224
+ <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
225
+ </a>
226
+ <div class="nav-content collapsed" id="nav-private-launch-2">
227
+ <a href="/private/launch/README.html" class="nav-item" data-tooltip="This directory contains all documentation related to the commercial launch of @knowcode/doc-builder, including go-to-market strategy, platform..."><i class="fas fa-file-alt"></i> Launch Overview</a>
228
+ <a href="/private/launch/auth-cleanup-summary.html" class="nav-item" data-tooltip="All references to the old client-side authentication system have been removed from @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Auth Cleanup Summary</a>
229
+ <a href="/private/launch/bubble-plugin-specification.html" class="nav-item" data-tooltip="This document outlines the technical specification for creating a Bubble.io plugin that integrates @knowcode/doc-builder, enabling Bubble developers..."><i class="fas fa-file-alt"></i> Bubble Plugin Specification</a>
230
+ <a href="/private/launch/go-to-market-strategy.html" class="nav-item" data-tooltip="Go-to-Market Strategy &amp; Product Launch Plan."><i class="fas fa-file-alt"></i> Go To Market Strategy</a>
231
+ <a href="/private/launch/launch-announcements.html" class="nav-item" data-tooltip="This document contains ready-to-use announcement templates for launching @knowcode/doc-builder across various platforms and channels."><i class="fas fa-file-alt"></i> Launch Announcements</a>
232
+ <a href="/private/launch/vercel-deployment-auth-setup.html" class="nav-item" data-tooltip="Vercel Deployment Authentication Setup Guide."><i class="fas fa-file-alt"></i> Vercel Deployment Auth Setup</a></div></div>
209
233
  </nav>
210
234
  <div class="resize-handle"></div>
211
235
  </aside>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T11:11:45.935Z",
102
- "dateModified": "2025-07-26T11:11:45.935Z",
101
+ "datePublished": "2025-07-26T11:44:31.543Z",
102
+ "dateModified": "2025-07-26T11:44:31.543Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/vercel-first-time-setup-guide.html"
@@ -132,7 +132,7 @@
132
132
 
133
133
  <div class="header-actions">
134
134
  <div class="deployment-info">
135
- <span class="deployment-date" title="Built with doc-builder v1.8.2">Last updated: Jul 26, 2025, 11:11 AM UTC</span>
135
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
136
136
  </div>
137
137
 
138
138
 
@@ -206,6 +206,30 @@
206
206
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
207
207
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
208
208
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
209
+ <div class="nav-section private-nav" data-level="1">
210
+ <a class="nav-title collapsible" href="#" data-target="nav-private-1" >
211
+ <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
212
+ </a>
213
+ <div class="nav-content collapsed" id="nav-private-1">
214
+ <a href="/private/cache-control-anti-pattern.html" class="nav-item" data-tooltip="Cache Control Anti-Pattern: Why Aggressive Cache-Busting is Bad for Documentation Sites."><i class="fas fa-file-alt"></i> Cache Control Anti Pattern</a>
215
+ <a href="/private/next-steps-walkthrough.html" class="nav-item" data-tooltip="Now that we&#039;ve implemented Supabase authentication, let&#039;s walk through testing the implementation and preparing for deployment."><i class="fas fa-file-alt"></i> Next Steps Walkthrough</a>
216
+ <a href="/private/supabase-auth-implementation-completed.html" class="nav-item" data-tooltip="This document records the successful implementation of Supabase authentication in @knowcode/doc-builder v1.7.5+."><i class="fas fa-file-alt"></i> Supabase Auth Implementation Completed</a>
217
+ <a href="/private/supabase-auth-implementation-plan.html" class="nav-item" data-tooltip="Supabase Auth Implementation Plan for @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Supabase Auth Implementation Plan</a>
218
+ <a href="/private/supabase-auth-integration-plan.html" class="nav-item" data-tooltip="Supabase Authentication Integration Plan for @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Supabase Auth Integration Plan</a>
219
+ <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
220
+ <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
221
+ <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
222
+ <div class="nav-section private-nav" data-level="2">
223
+ <a class="nav-title collapsible" href="/private/launch/README.html" data-target="nav-private-launch-2" >
224
+ <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
225
+ </a>
226
+ <div class="nav-content collapsed" id="nav-private-launch-2">
227
+ <a href="/private/launch/README.html" class="nav-item" data-tooltip="This directory contains all documentation related to the commercial launch of @knowcode/doc-builder, including go-to-market strategy, platform..."><i class="fas fa-file-alt"></i> Launch Overview</a>
228
+ <a href="/private/launch/auth-cleanup-summary.html" class="nav-item" data-tooltip="All references to the old client-side authentication system have been removed from @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Auth Cleanup Summary</a>
229
+ <a href="/private/launch/bubble-plugin-specification.html" class="nav-item" data-tooltip="This document outlines the technical specification for creating a Bubble.io plugin that integrates @knowcode/doc-builder, enabling Bubble developers..."><i class="fas fa-file-alt"></i> Bubble Plugin Specification</a>
230
+ <a href="/private/launch/go-to-market-strategy.html" class="nav-item" data-tooltip="Go-to-Market Strategy &amp; Product Launch Plan."><i class="fas fa-file-alt"></i> Go To Market Strategy</a>
231
+ <a href="/private/launch/launch-announcements.html" class="nav-item" data-tooltip="This document contains ready-to-use announcement templates for launching @knowcode/doc-builder across various platforms and channels."><i class="fas fa-file-alt"></i> Launch Announcements</a>
232
+ <a href="/private/launch/vercel-deployment-auth-setup.html" class="nav-item" data-tooltip="Vercel Deployment Authentication Setup Guide."><i class="fas fa-file-alt"></i> Vercel Deployment Auth Setup</a></div></div>
209
233
  </nav>
210
234
  <div class="resize-handle"></div>
211
235
  </aside>
@@ -505,16 +505,8 @@ function buildNavigationStructure(files, currentFile, config = {}) {
505
505
  // Check if authentication is enabled
506
506
  const isAuthEnabled = config.features?.authentication === 'supabase';
507
507
 
508
- // Filter files based on authentication status and whether we're building for an authenticated page
509
- // We'll pass a flag from processMarkdownFile to indicate if this is a private page
510
- const isPrivatePage = currentFile && (currentFile.startsWith('private/') || currentFile.includes('/private/'));
511
- const shouldIncludePrivate = isAuthEnabled && isPrivatePage;
512
-
508
+ // Include all files in navigation - we'll use CSS to show/hide based on auth state
513
509
  files.forEach(file => {
514
- // Skip private files if we're not on an authenticated page
515
- if (file.isPrivate && !shouldIncludePrivate) {
516
- return;
517
- }
518
510
 
519
511
  const parts = file.urlPath.split('/');
520
512
  let current = tree;
@@ -610,8 +602,12 @@ function buildNavigationStructure(files, currentFile, config = {}) {
610
602
  // Expand all folders by default on initial page load (index.html or root README)
611
603
  const shouldExpand = hasActiveChild || currentFile === 'index.html' || (currentFile === 'README.html' && level === 1);
612
604
 
605
+ // Check if this is a private folder
606
+ const isPrivateFolder = folderName === 'private' || parentPath.includes('private');
607
+ const privateClass = isPrivateFolder ? ' private-nav' : '';
608
+
613
609
  let html = `
614
- <div class="nav-section" data-level="${level}">
610
+ <div class="nav-section${privateClass}" data-level="${level}">
615
611
  <a class="nav-title${isCollapsible ? ' collapsible' : ''}${shouldExpand ? ' expanded' : ''}" ${folderLink} ${isCollapsible ? `data-target="${sectionId}"` : ''} ${tooltipAttr}>
616
612
  ${collapseIcon}<i class="${icon}"></i> ${displayName}
617
613
  </a>
@@ -0,0 +1,47 @@
1
+ -- Migration Script: From Site IDs to Domain-based Authentication
2
+ -- IMPORTANT: Backup your database before running this!
3
+
4
+ -- Step 1: Create new table structure
5
+ CREATE TABLE IF NOT EXISTS docbuilder_access_new (
6
+ user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
7
+ domain TEXT NOT NULL,
8
+ created_at TIMESTAMPTZ DEFAULT NOW(),
9
+ PRIMARY KEY (user_id, domain)
10
+ );
11
+
12
+ -- Step 2: Migrate existing data (join access with sites to get domains)
13
+ INSERT INTO docbuilder_access_new (user_id, domain, created_at)
14
+ SELECT
15
+ da.user_id,
16
+ ds.domain,
17
+ da.created_at
18
+ FROM docbuilder_access da
19
+ JOIN docbuilder_sites ds ON da.site_id = ds.id
20
+ ON CONFLICT (user_id, domain) DO NOTHING;
21
+
22
+ -- Step 3: Create index
23
+ CREATE INDEX IF NOT EXISTS idx_docbuilder_access_new_domain ON docbuilder_access_new(domain);
24
+
25
+ -- Step 4: Enable RLS
26
+ ALTER TABLE docbuilder_access_new ENABLE ROW LEVEL SECURITY;
27
+
28
+ -- Step 5: Create RLS Policy
29
+ CREATE POLICY "Users see own access" ON docbuilder_access_new
30
+ FOR SELECT USING (user_id = auth.uid());
31
+
32
+ -- Step 6: Verify migration (check counts)
33
+ SELECT 'Old access records:' as info, COUNT(*) as count FROM docbuilder_access
34
+ UNION ALL
35
+ SELECT 'New access records:' as info, COUNT(*) as count FROM docbuilder_access_new
36
+ UNION ALL
37
+ SELECT 'Sites migrated:' as info, COUNT(DISTINCT domain) as count FROM docbuilder_access_new;
38
+
39
+ -- Step 7: Once verified, swap tables (CAREFUL - This is the point of no return!)
40
+ -- DROP TABLE IF EXISTS docbuilder_access;
41
+ -- ALTER TABLE docbuilder_access_new RENAME TO docbuilder_access;
42
+ -- DROP TABLE IF EXISTS docbuilder_sites;
43
+
44
+ -- Step 8: Update index name
45
+ -- ALTER INDEX idx_docbuilder_access_new_domain RENAME TO idx_docbuilder_access_domain;
46
+
47
+ -- Note: Uncomment steps 7 and 8 only after verifying the migration worked correctly!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knowcode/doc-builder",
3
- "version": "1.8.3",
3
+ "version": "1.8.4",
4
4
  "description": "Reusable documentation builder for markdown-based sites with Vercel deployment support",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -0,0 +1,49 @@
1
+ -- Create a view to easily see user access with email addresses
2
+ -- This makes it much easier to manage user access
3
+
4
+ -- Drop the view if it exists (to recreate with latest schema)
5
+ DROP VIEW IF EXISTS user_access_view;
6
+
7
+ -- Create the view joining docbuilder_access with auth.users
8
+ CREATE VIEW user_access_view AS
9
+ SELECT
10
+ u.email,
11
+ da.domain,
12
+ da.created_at as access_granted,
13
+ u.created_at as user_created,
14
+ u.last_sign_in_at,
15
+ u.id as user_id
16
+ FROM
17
+ docbuilder_access da
18
+ JOIN auth.users u ON da.user_id = u.id
19
+ ORDER BY
20
+ da.domain,
21
+ u.email;
22
+
23
+ -- Grant permissions to authenticated users to view their own records
24
+ GRANT SELECT ON user_access_view TO authenticated;
25
+
26
+ -- Example queries using the view:
27
+
28
+ -- 1. See all users for a specific domain
29
+ -- SELECT * FROM user_access_view WHERE domain = 'docs.example.com';
30
+
31
+ -- 2. See all domains a user has access to
32
+ -- SELECT * FROM user_access_view WHERE email = 'user@example.com';
33
+
34
+ -- 3. Count users per domain
35
+ -- SELECT domain, COUNT(*) as user_count
36
+ -- FROM user_access_view
37
+ -- GROUP BY domain
38
+ -- ORDER BY user_count DESC;
39
+
40
+ -- 4. Find users who haven't logged in recently
41
+ -- SELECT email, domain, last_sign_in_at
42
+ -- FROM user_access_view
43
+ -- WHERE last_sign_in_at < NOW() - INTERVAL '30 days'
44
+ -- OR last_sign_in_at IS NULL;
45
+
46
+ -- 5. Export all access for documentation
47
+ -- SELECT email, domain, access_granted
48
+ -- FROM user_access_view
49
+ -- ORDER BY domain, email;
@@ -18,8 +18,14 @@ NC='\033[0m' # No Color
18
18
  # Configuration
19
19
  SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
20
20
  CONFIG_FILE="$SCRIPT_DIR/.supabase-config"
21
+ ENV_FILE="$SCRIPT_DIR/.env"
21
22
  PROJECT_ID="xcihhnfcitjrwbynxmka" # Default project ID
22
23
 
24
+ # Load .env file if exists
25
+ if [ -f "$ENV_FILE" ]; then
26
+ source "$ENV_FILE"
27
+ fi
28
+
23
29
  # Load configuration if exists
24
30
  if [ -f "$CONFIG_FILE" ]; then
25
31
  source "$CONFIG_FILE"
@@ -209,7 +215,7 @@ execute_sql() {
209
215
 
210
216
  # Method 1: Try using psql if DATABASE_URL is available
211
217
  if [ ! -z "$DATABASE_URL" ]; then
212
- local output=$(psql "$DATABASE_URL" -f "$temp_file" 2>&1)
218
+ local output=$(psql "$DATABASE_URL" -t -A -f "$temp_file" 2>&1)
213
219
  local status=$?
214
220
  rm "$temp_file"
215
221
 
@@ -219,15 +225,21 @@ execute_sql() {
219
225
  fi
220
226
  fi
221
227
 
222
- # Method 2: Try newer supabase db execute (for newer CLI versions)
223
- if command -v supabase &> /dev/null && supabase db execute --help &> /dev/null 2>&1; then
224
- local output=$(cat "$temp_file" | supabase db execute 2>&1)
225
- local status=$?
226
- rm "$temp_file"
228
+ # Method 2: Try using supabase db dump to get connection details
229
+ if command -v supabase &> /dev/null; then
230
+ # Get database URL from supabase status
231
+ local db_url=$(supabase status --output json 2>/dev/null | grep -o '"db_url":"[^"]*' | cut -d'"' -f4)
227
232
 
228
- if [ $status -eq 0 ]; then
229
- echo "$output"
230
- return 0
233
+ if [ ! -z "$db_url" ] && [ "$db_url" != "null" ]; then
234
+ # Try psql with the extracted URL
235
+ local output=$(psql "$db_url" -t -A -f "$temp_file" 2>&1)
236
+ local status=$?
237
+ rm "$temp_file"
238
+
239
+ if [ $status -eq 0 ]; then
240
+ echo "$output"
241
+ return 0
242
+ fi
231
243
  fi
232
244
  fi
233
245
 
@@ -257,9 +269,17 @@ create_user() {
257
269
  # Check if user exists first
258
270
  local check_sql="SELECT id, email FROM auth.users WHERE email = '$email';"
259
271
 
260
- local result=$(execute_sql "$check_sql")
272
+ echo -e "${CYAN}Checking database for user...${NC}"
273
+ local result=$(execute_sql "$check_sql" 2>&1)
274
+
275
+ # Debug output
276
+ if [ ! -z "$DEBUG" ]; then
277
+ echo -e "${BLUE}[DEBUG] SQL Result:${NC}"
278
+ echo "$result"
279
+ fi
261
280
 
262
- if echo "$result" | grep -q "$email"; then
281
+ # Check if the result contains the email (case insensitive)
282
+ if echo "$result" | grep -qi "$email"; then
263
283
  echo -e "${YELLOW}ℹ️ User already exists${NC}"
264
284
  return 0
265
285
  else