ultimate-jekyll-manager 1.9.4 → 1.9.6
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.
- package/CLAUDE.md +6 -0
- package/dist/assets/css/core/_utilities.scss +5 -2
- package/dist/assets/js/libs/form-manager.js +7 -8
- package/dist/commands/install.js +2 -2
- package/dist/commands/setup.js +2 -1
- package/dist/defaults/.github/workflows/build.yml +3 -1
- package/dist/defaults/dist/_includes/core/body.html +1 -7
- package/dist/defaults/dist/_includes/themes/classy/frontend/sections/footer.html +9 -1
- package/dist/defaults/dist/_layouts/blueprint/admin/calendar/index.html +1 -1
- package/dist/defaults/dist/_layouts/blueprint/admin/firebase/index.html +2 -2
- package/dist/defaults/dist/_layouts/blueprint/admin/studio/index.html +1 -1
- package/dist/defaults/dist/_layouts/blueprint/admin/users/index.html +2 -2
- package/dist/defaults/dist/_layouts/blueprint/admin/users/new.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +13 -13
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/reset.html +2 -2
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signin.html +3 -3
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signup.html +3 -3
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/index.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/contact.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/download.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/feedback.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/index.html +2 -6
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/payment/checkout.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/portal/email-preferences.html +2 -3
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/status.html +1 -1
- package/dist/defaults/dist/_layouts/themes/newsflash/frontend/pages/blog/index.html +1 -1
- package/dist/defaults/dist/_layouts/themes/newsflash/frontend/pages/contact.html +1 -1
- package/dist/defaults/dist/pages/test/libraries/form-manager.html +31 -31
- package/dist/lib/safe-install.js +13 -0
- package/package.json +8 -1
- package/.nvmrc +0 -1
- package/CHANGELOG.md +0 -792
- package/CLAUDE-ATTRIBUTION.md +0 -215
- package/PROGRESS.md +0 -27
- package/TODO-ATTRIBUTION2.md +0 -753
- package/TODO-AUTH-TESTING.md +0 -165
- package/TODO-BACKEND.md +0 -13
- package/TODO-CHAT1.md +0 -41
- package/TODO-CONSENT-LIVETEST.md +0 -201
- package/TODO-NEW.md +0 -21
- package/TODO-themes.md +0 -34
- package/TODO-tracking.md +0 -69
- package/TODO-tracking2.md +0 -103
- package/TODO.md +0 -415
- package/_notes/CLAUDE-pages.md +0 -19
- package/_notes/CLAUDE-pages2.md +0 -18
- package/_notes/LOGOS.md +0 -1
- package/_notes/NOTES-app.md +0 -92
- package/_notes/NOTES-sub-2.md +0 -42
- package/_notes/NOTES-sub-ai.md +0 -165
- package/_notes/NOTES-sub-endpoints.md +0 -44
- package/_notes/NOTES-sub-example.md +0 -92
- package/_notes/NOTES-sub-plan.md +0 -36
- package/_notes/NOTES-sub-status.md +0 -123
- package/_notes/TODO-Claude.rtf +0 -105
- package/_notes/TODO-FileStructure.md +0 -249
- package/_notes/TODO-checkout.md +0 -33
- package/_notes/TODO-frontend.md +0 -61
- package/_notes/TODO-legacy.md +0 -18
- package/_notes/TODO-template-system.md +0 -73
- package/_notes/TODO-theme.md +0 -17
- package/logs/test.log +0 -144
|
@@ -28,26 +28,26 @@ meta:
|
|
|
28
28
|
<small class="text-muted">Success/failure toggle, nested dot notation, change events (check console)</small>
|
|
29
29
|
</div>
|
|
30
30
|
<div class="card-body">
|
|
31
|
-
<form id="test-form-main">
|
|
31
|
+
<form id="test-form-main" data-form-state="initializing" onsubmit="return false">
|
|
32
32
|
<div class="row">
|
|
33
33
|
<div class="col-md-6">
|
|
34
34
|
<div class="mb-3">
|
|
35
35
|
<label for="main-name" class="form-label">user.name</label>
|
|
36
|
-
<input type="text" class="form-control" id="main-name" name="user.name" value="Ian"
|
|
36
|
+
<input type="text" class="form-control" id="main-name" name="user.name" value="Ian" autofocus>
|
|
37
37
|
</div>
|
|
38
38
|
<div class="mb-3">
|
|
39
39
|
<label for="main-email" class="form-label">user.email</label>
|
|
40
|
-
<input type="email" class="form-control" id="main-email" name="user.email" value="ian@example.com"
|
|
40
|
+
<input type="email" class="form-control" id="main-email" name="user.email" value="ian@example.com">
|
|
41
41
|
</div>
|
|
42
42
|
<div class="mb-3">
|
|
43
43
|
<label for="main-city" class="form-label">user.address.city</label>
|
|
44
|
-
<input type="text" class="form-control" id="main-city" name="user.address.city" value="NYC"
|
|
44
|
+
<input type="text" class="form-control" id="main-city" name="user.address.city" value="NYC">
|
|
45
45
|
</div>
|
|
46
46
|
</div>
|
|
47
47
|
<div class="col-md-6">
|
|
48
48
|
<div class="mb-3">
|
|
49
49
|
<label for="main-outcome" class="form-label">Simulate outcome</label>
|
|
50
|
-
<select class="form-select" id="main-outcome" name="settings.outcome"
|
|
50
|
+
<select class="form-select" id="main-outcome" name="settings.outcome">
|
|
51
51
|
<option value="success">Success</option>
|
|
52
52
|
<option value="error">Error (throw Error)</option>
|
|
53
53
|
</select>
|
|
@@ -55,41 +55,41 @@ meta:
|
|
|
55
55
|
<div class="mb-3">
|
|
56
56
|
<label class="form-label d-block">preferences.notifications (radio group)</label>
|
|
57
57
|
<div class="form-check form-check-inline">
|
|
58
|
-
<input type="radio" class="form-check-input" id="notif-all" name="preferences.notifications" value="all" checked
|
|
58
|
+
<input type="radio" class="form-check-input" id="notif-all" name="preferences.notifications" value="all" checked>
|
|
59
59
|
<label class="form-check-label" for="notif-all">All</label>
|
|
60
60
|
</div>
|
|
61
61
|
<div class="form-check form-check-inline">
|
|
62
|
-
<input type="radio" class="form-check-input" id="notif-important" name="preferences.notifications" value="important"
|
|
62
|
+
<input type="radio" class="form-check-input" id="notif-important" name="preferences.notifications" value="important">
|
|
63
63
|
<label class="form-check-label" for="notif-important">Important</label>
|
|
64
64
|
</div>
|
|
65
65
|
<div class="form-check form-check-inline">
|
|
66
|
-
<input type="radio" class="form-check-input" id="notif-none" name="preferences.notifications" value="none"
|
|
66
|
+
<input type="radio" class="form-check-input" id="notif-none" name="preferences.notifications" value="none">
|
|
67
67
|
<label class="form-check-label" for="notif-none">None</label>
|
|
68
68
|
</div>
|
|
69
69
|
</div>
|
|
70
70
|
<div class="mb-3">
|
|
71
71
|
<label class="form-label d-block">preferences.features (checkbox group)</label>
|
|
72
72
|
<div class="form-check">
|
|
73
|
-
<input type="checkbox" class="form-check-input" id="feat-darkmode" name="preferences.features" value="darkmode"
|
|
73
|
+
<input type="checkbox" class="form-check-input" id="feat-darkmode" name="preferences.features" value="darkmode">
|
|
74
74
|
<label class="form-check-label" for="feat-darkmode">Dark Mode</label>
|
|
75
75
|
</div>
|
|
76
76
|
<div class="form-check">
|
|
77
|
-
<input type="checkbox" class="form-check-input" id="feat-analytics" name="preferences.features" value="analytics"
|
|
77
|
+
<input type="checkbox" class="form-check-input" id="feat-analytics" name="preferences.features" value="analytics">
|
|
78
78
|
<label class="form-check-label" for="feat-analytics">Analytics</label>
|
|
79
79
|
</div>
|
|
80
80
|
<div class="form-check">
|
|
81
|
-
<input type="checkbox" class="form-check-input" id="feat-beta" name="preferences.features" value="beta"
|
|
81
|
+
<input type="checkbox" class="form-check-input" id="feat-beta" name="preferences.features" value="beta">
|
|
82
82
|
<label class="form-check-label" for="feat-beta">Beta features</label>
|
|
83
83
|
</div>
|
|
84
84
|
</div>
|
|
85
85
|
<div class="mb-3 form-check">
|
|
86
|
-
<input type="checkbox" class="form-check-input" id="main-subscribe" name="settings.subscribe"
|
|
86
|
+
<input type="checkbox" class="form-check-input" id="main-subscribe" name="settings.subscribe">
|
|
87
87
|
<label class="form-check-label" for="main-subscribe">settings.subscribe (single checkbox)</label>
|
|
88
88
|
</div>
|
|
89
89
|
<!-- Honeypot field for bot detection (fill to trigger rejection) -->
|
|
90
90
|
<div class="mb-3">
|
|
91
91
|
<label for="main-honey" class="form-label">honey <span class="badge bg-warning text-dark">Honeypot</span></label>
|
|
92
|
-
<input type="text" class="form-control" id="main-honey" name="honey" data-honey placeholder="Fill to trigger bot rejection" autocomplete="off" tabindex="-1"
|
|
92
|
+
<input type="text" class="form-control" id="main-honey" name="honey" data-honey placeholder="Fill to trigger bot rejection" autocomplete="off" tabindex="-1">
|
|
93
93
|
<small class="text-muted">Hidden in production; fill here to test rejection</small>
|
|
94
94
|
</div>
|
|
95
95
|
</div>
|
|
@@ -97,7 +97,7 @@ meta:
|
|
|
97
97
|
<div class="d-flex gap-2">
|
|
98
98
|
<button type="submit" data-action="save" class="btn btn-primary" disabled>Save</button>
|
|
99
99
|
<button type="submit" data-action="draft" class="btn btn-outline-secondary" disabled>Save as Draft</button>
|
|
100
|
-
<button type="button" id="main-set-data" class="btn btn-outline-info"
|
|
100
|
+
<button type="button" id="main-set-data" class="btn btn-outline-info">Set data</button>
|
|
101
101
|
</div>
|
|
102
102
|
</form>
|
|
103
103
|
<div class="mt-3 d-flex gap-3">
|
|
@@ -122,21 +122,21 @@ meta:
|
|
|
122
122
|
<button type="button" id="validation-set-correct" class="btn btn-sm btn-outline-success">Set correct</button>
|
|
123
123
|
</div>
|
|
124
124
|
<div class="card-body">
|
|
125
|
-
<form id="test-form-validation">
|
|
125
|
+
<form id="test-form-validation" data-form-state="initializing" onsubmit="return false">
|
|
126
126
|
<div class="mb-3">
|
|
127
127
|
<label for="validation-name" class="form-label">Name (required)</label>
|
|
128
|
-
<input type="text" class="form-control" id="validation-name" name="name" required
|
|
128
|
+
<input type="text" class="form-control" id="validation-name" name="name" required>
|
|
129
129
|
</div>
|
|
130
130
|
<div class="mb-3">
|
|
131
131
|
<label for="validation-email" class="form-label">Email (required, valid format)</label>
|
|
132
|
-
<input type="email" class="form-control" id="validation-email" name="email" required
|
|
132
|
+
<input type="email" class="form-control" id="validation-email" name="email" required>
|
|
133
133
|
</div>
|
|
134
134
|
<div class="mb-3">
|
|
135
135
|
<label for="validation-age" class="form-label">Age (required, must be 18+)</label>
|
|
136
|
-
<input type="number" class="form-control" id="validation-age" name="age" required min="1"
|
|
136
|
+
<input type="number" class="form-control" id="validation-age" name="age" required min="1">
|
|
137
137
|
</div>
|
|
138
138
|
<div class="mb-3 form-check">
|
|
139
|
-
<input type="checkbox" class="form-check-input" id="validation-terms" name="terms" required
|
|
139
|
+
<input type="checkbox" class="form-check-input" id="validation-terms" name="terms" required>
|
|
140
140
|
<label class="form-check-label" for="validation-terms">I agree to the terms (required)</label>
|
|
141
141
|
</div>
|
|
142
142
|
<button type="submit" class="btn btn-primary" disabled>Submit</button>
|
|
@@ -156,10 +156,10 @@ meta:
|
|
|
156
156
|
<small class="text-muted">allowResubmit: false, resetOnSuccess: true</small>
|
|
157
157
|
</div>
|
|
158
158
|
<div class="card-body">
|
|
159
|
-
<form id="test-form-contact">
|
|
159
|
+
<form id="test-form-contact" data-form-state="initializing" onsubmit="return false">
|
|
160
160
|
<div class="mb-3">
|
|
161
161
|
<label for="contact-message" class="form-label">Message</label>
|
|
162
|
-
<textarea class="form-control" id="contact-message" name="message" rows="2"
|
|
162
|
+
<textarea class="form-control" id="contact-message" name="message" rows="2">Hello!</textarea>
|
|
163
163
|
</div>
|
|
164
164
|
<button type="submit" class="btn btn-primary" disabled>Send message</button>
|
|
165
165
|
</form>
|
|
@@ -178,10 +178,10 @@ meta:
|
|
|
178
178
|
<small class="text-muted">autoReady: false, ready after 2 seconds</small>
|
|
179
179
|
</div>
|
|
180
180
|
<div class="card-body">
|
|
181
|
-
<form id="test-form-manual">
|
|
181
|
+
<form id="test-form-manual" data-form-state="initializing" onsubmit="return false">
|
|
182
182
|
<div class="mb-3">
|
|
183
183
|
<label for="manual-data" class="form-label">Data</label>
|
|
184
|
-
<input type="text" class="form-control" id="manual-data" name="data"
|
|
184
|
+
<input type="text" class="form-control" id="manual-data" name="data">
|
|
185
185
|
</div>
|
|
186
186
|
<button type="submit" class="btn btn-primary" disabled>Submit</button>
|
|
187
187
|
</form>
|
|
@@ -200,18 +200,18 @@ meta:
|
|
|
200
200
|
<small class="text-muted">setInputGroup() filters getData() - fields without data-input-group are global</small>
|
|
201
201
|
</div>
|
|
202
202
|
<div class="card-body">
|
|
203
|
-
<form id="test-form-groups">
|
|
203
|
+
<form id="test-form-groups" data-form-state="initializing" onsubmit="return false">
|
|
204
204
|
<div class="row">
|
|
205
205
|
<!-- Global settings (no data-input-group = always included) -->
|
|
206
206
|
<div class="col-md-4">
|
|
207
207
|
<h6 class="text-muted mb-3">Global settings <span class="badge bg-secondary">Always included</span></h6>
|
|
208
208
|
<div class="mb-3">
|
|
209
209
|
<label for="groups-name" class="form-label">settings.name</label>
|
|
210
|
-
<input type="text" class="form-control" id="groups-name" name="settings.name" value="My project"
|
|
210
|
+
<input type="text" class="form-control" id="groups-name" name="settings.name" value="My project">
|
|
211
211
|
</div>
|
|
212
212
|
<div class="mb-3">
|
|
213
213
|
<label for="groups-theme" class="form-label">settings.theme</label>
|
|
214
|
-
<select class="form-select" id="groups-theme" name="settings.theme"
|
|
214
|
+
<select class="form-select" id="groups-theme" name="settings.theme">
|
|
215
215
|
<option value="light">Light</option>
|
|
216
216
|
<option value="dark" selected>Dark</option>
|
|
217
217
|
</select>
|
|
@@ -223,11 +223,11 @@ meta:
|
|
|
223
223
|
<h6 class="text-primary mb-3">Group A <span class="badge bg-primary">data-input-group="a"</span></h6>
|
|
224
224
|
<div class="mb-3">
|
|
225
225
|
<label for="groups-a-url" class="form-label">options.url</label>
|
|
226
|
-
<input type="url" class="form-control" id="groups-a-url" name="options.url" data-input-group="a" value="https://example.com"
|
|
226
|
+
<input type="url" class="form-control" id="groups-a-url" name="options.url" data-input-group="a" value="https://example.com">
|
|
227
227
|
</div>
|
|
228
228
|
<div class="mb-3">
|
|
229
229
|
<label for="groups-a-title" class="form-label">options.title</label>
|
|
230
|
-
<input type="text" class="form-control" id="groups-a-title" name="options.title" data-input-group="a" value="My link"
|
|
230
|
+
<input type="text" class="form-control" id="groups-a-title" name="options.title" data-input-group="a" value="My link">
|
|
231
231
|
</div>
|
|
232
232
|
</div>
|
|
233
233
|
|
|
@@ -236,11 +236,11 @@ meta:
|
|
|
236
236
|
<h6 class="text-success mb-3">Group B <span class="badge bg-success">data-input-group="b"</span></h6>
|
|
237
237
|
<div class="mb-3">
|
|
238
238
|
<label for="groups-b-ssid" class="form-label">options.ssid</label>
|
|
239
|
-
<input type="text" class="form-control" id="groups-b-ssid" name="options.ssid" data-input-group="b" value="MyWiFi"
|
|
239
|
+
<input type="text" class="form-control" id="groups-b-ssid" name="options.ssid" data-input-group="b" value="MyWiFi">
|
|
240
240
|
</div>
|
|
241
241
|
<div class="mb-3">
|
|
242
242
|
<label for="groups-b-password" class="form-label">options.password</label>
|
|
243
|
-
<input type="text" class="form-control" id="groups-b-password" name="options.password" data-input-group="b" value="secret123"
|
|
243
|
+
<input type="text" class="form-control" id="groups-b-password" name="options.password" data-input-group="b" value="secret123">
|
|
244
244
|
</div>
|
|
245
245
|
</div>
|
|
246
246
|
</div>
|
|
@@ -273,7 +273,7 @@ meta:
|
|
|
273
273
|
<small class="text-muted">data-file-drop (local) and data-file-drop="page"</small>
|
|
274
274
|
</div>
|
|
275
275
|
<div class="card-body">
|
|
276
|
-
<form id="test-form-file-drop">
|
|
276
|
+
<form id="test-form-file-drop" data-form-state="initializing" onsubmit="return false">
|
|
277
277
|
<h6 class="text-muted mb-2">Local mode <span class="badge bg-secondary">default</span></h6>
|
|
278
278
|
<div class="p-4 text-center mb-3" data-file-drop>
|
|
279
279
|
<p class="mb-2">Drag & drop or click to browse</p>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const { execute } = require('node-powertools');
|
|
2
|
+
|
|
3
|
+
let _hasSfw;
|
|
4
|
+
async function safeInstall(command, options) {
|
|
5
|
+
if (_hasSfw === undefined) {
|
|
6
|
+
_hasSfw = await execute('sfw --version', { log: false }).then(() => true).catch(() => false);
|
|
7
|
+
}
|
|
8
|
+
const isInstall = /^npm\s+(install|i)\b/.test(command);
|
|
9
|
+
const prefix = (_hasSfw && isInstall) ? 'sfw ' : '';
|
|
10
|
+
return execute(`${prefix}${command}`, options || { log: true });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
module.exports = { safeInstall };
|
package/package.json
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ultimate-jekyll-manager",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.6",
|
|
4
4
|
"description": "Ultimate Jekyll dependency manager",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist/",
|
|
8
|
+
"bin/",
|
|
9
|
+
"docs/",
|
|
10
|
+
"assets/",
|
|
11
|
+
"CLAUDE.md"
|
|
12
|
+
],
|
|
6
13
|
"exports": {
|
|
7
14
|
".": "./dist/index.js",
|
|
8
15
|
"./build": "./dist/build.js",
|
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
v22/*
|