ultimate-jekyll-manager 1.3.1 → 1.3.3
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/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
14
14
|
- `Fixed` for any bug fixes.
|
|
15
15
|
- `Security` in case of vulnerabilities.
|
|
16
16
|
|
|
17
|
+
---
|
|
18
|
+
## [1.3.3] - 2026-05-21
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- **Reordered account page sections** in `src/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html`. Sidebar nav and section blocks now run Profile → Security → Subscription → Billing → Referrals → Team → Notifications → API Keys, pushing the less-frequently-used Team and Notifications sections below Referrals. Section content unchanged.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
## [1.3.2] - 2026-05-22
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- **Consent guard was running before `sendUserSignupMetadata`, killing every fresh signup.** `src/assets/js/core/auth.js`: on a brand-new signup the user doc exists with `consent.legal.status: 'revoked'` (the schema default written by BEM's `on-create` event); `sendUserSignupMetadata` is what flips it to `'granted'`. Previously the guard ran first and signed the user out before the metadata POST could fire — orphaned every new account. Reordered to run `sendUserSignupMetadata` first, and the guard now skips accounts younger than `SIGNUP_MAX_AGE` (5min) so a transient network error during the POST doesn't lock a user out forever — they can retry. After the grace window, the guard fires normally.
|
|
30
|
+
|
|
17
31
|
---
|
|
18
32
|
## [1.3.1] - 2026-05-21
|
|
19
33
|
|
|
@@ -65,15 +65,30 @@ export default function () {
|
|
|
65
65
|
if (user) {
|
|
66
66
|
// User is authenticated
|
|
67
67
|
|
|
68
|
+
// Send user signup metadata if account is new.
|
|
69
|
+
// MUST run BEFORE the consent guard — on a brand-new signup the user doc
|
|
70
|
+
// exists with consent.legal.status: 'revoked' (the schema default written
|
|
71
|
+
// by the on-create auth event). sendUserSignupMetadata is what flips it
|
|
72
|
+
// to 'granted' with the captured consent payload. If we gate first, every
|
|
73
|
+
// fresh signup would be signed out before consent ever lands.
|
|
74
|
+
await sendUserSignupMetadata(user);
|
|
75
|
+
|
|
68
76
|
// Consent guard: if the user is authenticated but their account doc shows
|
|
69
77
|
// no legal consent on record, they're an orphan from a reversed Google signup
|
|
70
78
|
// that failed to delete cleanly. Sign them out and surface a toast so the
|
|
71
|
-
// user knows what happened
|
|
72
|
-
//
|
|
79
|
+
// user knows what happened.
|
|
80
|
+
//
|
|
73
81
|
// Gated by ENFORCE_CONSENT_GUARD (off until the legacy-user migration runs).
|
|
82
|
+
// Also skipped for accounts younger than SIGNUP_MAX_AGE — sendUserSignupMetadata
|
|
83
|
+
// above is responsible for the consent write on that path, but if it failed
|
|
84
|
+
// (network error, server 500, etc.) the guard would otherwise lock the user
|
|
85
|
+
// out forever. The 5min grace window lets a retry / refresh recover; after
|
|
86
|
+
// that, the doc legitimately has no legal consent and the guard fires.
|
|
74
87
|
if (ENFORCE_CONSENT_GUARD) {
|
|
88
|
+
const accountAge = Date.now() - new Date(user.metadata.creationTime).getTime();
|
|
89
|
+
const isFreshAccount = accountAge < SIGNUP_MAX_AGE;
|
|
75
90
|
const legalStatus = state.account?.consent?.legal?.status;
|
|
76
|
-
if (legalStatus && legalStatus !== 'granted') {
|
|
91
|
+
if (!isFreshAccount && legalStatus && legalStatus !== 'granted') {
|
|
77
92
|
console.warn('[Auth] Signing out user with no legal consent on record');
|
|
78
93
|
await webManager.auth().signOut();
|
|
79
94
|
webManager.utilities().showNotification(
|
|
@@ -84,9 +99,6 @@ export default function () {
|
|
|
84
99
|
}
|
|
85
100
|
}
|
|
86
101
|
|
|
87
|
-
// Send user signup metadata if account is new
|
|
88
|
-
await sendUserSignupMetadata(user);
|
|
89
|
-
|
|
90
102
|
// Check if page requires user to be unauthenticated (e.g., signin page)
|
|
91
103
|
if (policy === 'unauthenticated') {
|
|
92
104
|
// Check for authReturnUrl first (takes precedence)
|
|
@@ -36,9 +36,6 @@ sections:
|
|
|
36
36
|
- id: "profile"
|
|
37
37
|
name: "Profile"
|
|
38
38
|
icon: "user-circle"
|
|
39
|
-
- id: "notifications"
|
|
40
|
-
name: "Notifications"
|
|
41
|
-
icon: "bell"
|
|
42
39
|
- id: "security"
|
|
43
40
|
name: "Security"
|
|
44
41
|
icon: "shield-halved"
|
|
@@ -48,12 +45,15 @@ sections:
|
|
|
48
45
|
- id: "billing"
|
|
49
46
|
name: "Billing"
|
|
50
47
|
icon: "credit-card"
|
|
51
|
-
- id: "team"
|
|
52
|
-
name: "Team"
|
|
53
|
-
icon: "users"
|
|
54
48
|
- id: "referrals"
|
|
55
49
|
name: "Referrals"
|
|
56
50
|
icon: "user-plus"
|
|
51
|
+
- id: "team"
|
|
52
|
+
name: "Team"
|
|
53
|
+
icon: "users"
|
|
54
|
+
- id: "notifications"
|
|
55
|
+
name: "Notifications"
|
|
56
|
+
icon: "bell"
|
|
57
57
|
- id: "api-keys"
|
|
58
58
|
name: "API Keys"
|
|
59
59
|
icon: "key"
|
|
@@ -771,26 +771,6 @@ badges:
|
|
|
771
771
|
</form>
|
|
772
772
|
</section>
|
|
773
773
|
|
|
774
|
-
<!-- Notifications Section -->
|
|
775
|
-
<section id="notifications-section" class="account-section d-none">
|
|
776
|
-
<h2 class="h3 mb-4" >Notifications</h2>
|
|
777
|
-
|
|
778
|
-
<div class="card">
|
|
779
|
-
<div class="card-body">
|
|
780
|
-
<h5 class="card-title">Email preferences</h5>
|
|
781
|
-
|
|
782
|
-
<div class="form-check form-switch">
|
|
783
|
-
<input class="form-check-input" type="checkbox" id="marketing-emails">
|
|
784
|
-
<label class="form-check-label" for="marketing-emails">
|
|
785
|
-
Product updates, newsletters, and marketing communications
|
|
786
|
-
<small class="d-block text-muted">You can withdraw consent at any time.</small>
|
|
787
|
-
<small id="marketing-emails-grant-date" class="d-block text-muted d-none"></small>
|
|
788
|
-
</label>
|
|
789
|
-
</div>
|
|
790
|
-
</div>
|
|
791
|
-
</div>
|
|
792
|
-
</section>
|
|
793
|
-
|
|
794
774
|
<!-- Security Section -->
|
|
795
775
|
<section id="security-section" class="account-section d-none">
|
|
796
776
|
<h2 class="h3 mb-4" >Security and data</h2>
|
|
@@ -1110,37 +1090,6 @@ badges:
|
|
|
1110
1090
|
</div>
|
|
1111
1091
|
</section>
|
|
1112
1092
|
|
|
1113
|
-
<!-- Team Section -->
|
|
1114
|
-
<section id="team-section" class="account-section d-none">
|
|
1115
|
-
<h2 class="h3 mb-4" >Team</h2>
|
|
1116
|
-
|
|
1117
|
-
<div class="card">
|
|
1118
|
-
<div class="card-body">
|
|
1119
|
-
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
1120
|
-
<h5 class="card-title mb-0">Team members</h5>
|
|
1121
|
-
<button class="btn btn-primary btn-sm" id="invite-team-member-btn">
|
|
1122
|
-
{% uj_icon "user-plus", "me-2" %}
|
|
1123
|
-
<span class="button-text">
|
|
1124
|
-
Invite<span class="d-none d-md-inline"> Team Member</span>
|
|
1125
|
-
</span>
|
|
1126
|
-
</button>
|
|
1127
|
-
</div>
|
|
1128
|
-
|
|
1129
|
-
<div class="list-group" id="team-list">
|
|
1130
|
-
<div class="list-group-item">
|
|
1131
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
1132
|
-
<div>
|
|
1133
|
-
<strong>You</strong>
|
|
1134
|
-
<small class="text-muted d-block">Owner</small>
|
|
1135
|
-
</div>
|
|
1136
|
-
<span class="badge bg-primary">Owner</span>
|
|
1137
|
-
</div>
|
|
1138
|
-
</div>
|
|
1139
|
-
</div>
|
|
1140
|
-
</div>
|
|
1141
|
-
</div>
|
|
1142
|
-
</section>
|
|
1143
|
-
|
|
1144
1093
|
<!-- Referrals Section -->
|
|
1145
1094
|
<section id="referrals-section" class="account-section d-none">
|
|
1146
1095
|
<h2 class="h3 mb-4" >Referrals</h2>
|
|
@@ -1207,6 +1156,57 @@ badges:
|
|
|
1207
1156
|
</div>
|
|
1208
1157
|
</section>
|
|
1209
1158
|
|
|
1159
|
+
<!-- Team Section -->
|
|
1160
|
+
<section id="team-section" class="account-section d-none">
|
|
1161
|
+
<h2 class="h3 mb-4" >Team</h2>
|
|
1162
|
+
|
|
1163
|
+
<div class="card">
|
|
1164
|
+
<div class="card-body">
|
|
1165
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
1166
|
+
<h5 class="card-title mb-0">Team members</h5>
|
|
1167
|
+
<button class="btn btn-primary btn-sm" id="invite-team-member-btn">
|
|
1168
|
+
{% uj_icon "user-plus", "me-2" %}
|
|
1169
|
+
<span class="button-text">
|
|
1170
|
+
Invite<span class="d-none d-md-inline"> Team Member</span>
|
|
1171
|
+
</span>
|
|
1172
|
+
</button>
|
|
1173
|
+
</div>
|
|
1174
|
+
|
|
1175
|
+
<div class="list-group" id="team-list">
|
|
1176
|
+
<div class="list-group-item">
|
|
1177
|
+
<div class="d-flex justify-content-between align-items-center">
|
|
1178
|
+
<div>
|
|
1179
|
+
<strong>You</strong>
|
|
1180
|
+
<small class="text-muted d-block">Owner</small>
|
|
1181
|
+
</div>
|
|
1182
|
+
<span class="badge bg-primary">Owner</span>
|
|
1183
|
+
</div>
|
|
1184
|
+
</div>
|
|
1185
|
+
</div>
|
|
1186
|
+
</div>
|
|
1187
|
+
</div>
|
|
1188
|
+
</section>
|
|
1189
|
+
|
|
1190
|
+
<!-- Notifications Section -->
|
|
1191
|
+
<section id="notifications-section" class="account-section d-none">
|
|
1192
|
+
<h2 class="h3 mb-4" >Notifications</h2>
|
|
1193
|
+
|
|
1194
|
+
<div class="card">
|
|
1195
|
+
<div class="card-body">
|
|
1196
|
+
<h5 class="card-title">Email preferences</h5>
|
|
1197
|
+
|
|
1198
|
+
<div class="form-check form-switch">
|
|
1199
|
+
<input class="form-check-input" type="checkbox" id="marketing-emails">
|
|
1200
|
+
<label class="form-check-label" for="marketing-emails">
|
|
1201
|
+
Product updates, newsletters, and marketing communications
|
|
1202
|
+
<small class="d-block text-muted">You can withdraw consent at any time.</small>
|
|
1203
|
+
<small id="marketing-emails-grant-date" class="d-block text-muted d-none"></small>
|
|
1204
|
+
</label>
|
|
1205
|
+
</div>
|
|
1206
|
+
</div>
|
|
1207
|
+
</div>
|
|
1208
|
+
</section>
|
|
1209
|
+
|
|
1210
1210
|
<!-- API Keys Section -->
|
|
1211
1211
|
<section id="api-keys-section" class="account-section d-none">
|
|
1212
1212
|
<h2 class="h3 mb-4" >API keys</h2>
|