web-manager 4.0.40 → 4.1.1
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 +13 -0
- package/dist/index.js +3 -0
- package/dist/modules/utilities.js +43 -2
- package/firebase-debug.log +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
15
15
|
- `Security` in case of vulnerabilities.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
|
+
## [4.1.0] - 2025-12-16
|
|
19
|
+
### Added
|
|
20
|
+
- Added `analytics.js` module for Google Analytics 4 Measurement Protocol support (browser extensions and Electron).
|
|
21
|
+
- Added `usage.js` module to track install date, session count, session duration, and version history.
|
|
22
|
+
- Added `tracking` config section for analytics credentials (`google-analytics`, `google-analytics-secret`, `meta-pixel`, `tiktok-pixel`).
|
|
23
|
+
- Added `runtime` config option for explicit runtime override.
|
|
24
|
+
- Added `buildTimeISO` auto-calculated from `buildTime`.
|
|
25
|
+
- Added `usage` data to bindings context for UI display.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- Refactored `utilities.js` from standalone functions to class pattern for consistency with other modules.
|
|
29
|
+
- Simplified `getApiUrl()` to always prepend `api.` subdomain instead of replacing first subdomain.
|
|
30
|
+
|
|
18
31
|
## [4.0.33] - 2025-12-12
|
|
19
32
|
### BREAKING
|
|
20
33
|
- `@text` binding action no longer auto-detects input/textarea elements. Use `@value` for inputs instead.
|
package/dist/index.js
CHANGED
|
@@ -361,6 +361,9 @@ class Manager {
|
|
|
361
361
|
// Set platform (OS) - windows, mac, linux, ios, android, chromeos, unknown
|
|
362
362
|
$html.dataset.platform = this._utilities.getPlatform();
|
|
363
363
|
|
|
364
|
+
// Set browser - chrome, firefox, safari, edge, opera, brave
|
|
365
|
+
$html.dataset.browser = this._utilities.getBrowser();
|
|
366
|
+
|
|
364
367
|
// Set runtime - web, browser-extension, electron, node
|
|
365
368
|
$html.dataset.runtime = this._utilities.getRuntime();
|
|
366
369
|
|
|
@@ -128,6 +128,40 @@ class Utilities {
|
|
|
128
128
|
return 'unknown';
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
// Get browser name
|
|
132
|
+
getBrowser() {
|
|
133
|
+
const ua = navigator.userAgent;
|
|
134
|
+
|
|
135
|
+
// Order matters - check more specific browsers first
|
|
136
|
+
// Edge before Chrome (Edge includes "Chrome" in UA)
|
|
137
|
+
if (/edg/i.test(ua)) {
|
|
138
|
+
return 'edge';
|
|
139
|
+
}
|
|
140
|
+
// Opera before Chrome (Opera includes "Chrome" in UA)
|
|
141
|
+
if (/opera|opr/i.test(ua)) {
|
|
142
|
+
return 'opera';
|
|
143
|
+
}
|
|
144
|
+
// Brave before Chrome (Brave includes "Chrome" in UA)
|
|
145
|
+
if (navigator.brave || /brave/i.test(ua)) {
|
|
146
|
+
return 'brave';
|
|
147
|
+
}
|
|
148
|
+
// Chrome (including Chromium-based browsers)
|
|
149
|
+
if (/chrome|chromium|crios/i.test(ua)) {
|
|
150
|
+
return 'chrome';
|
|
151
|
+
}
|
|
152
|
+
// Firefox
|
|
153
|
+
if (/firefox|fxios/i.test(ua)) {
|
|
154
|
+
return 'firefox';
|
|
155
|
+
}
|
|
156
|
+
// Safari last (most browsers include "Safari" in UA)
|
|
157
|
+
if (/safari/i.test(ua)) {
|
|
158
|
+
return 'safari';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Fallback
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
|
|
131
165
|
// Get runtime environment
|
|
132
166
|
getRuntime() {
|
|
133
167
|
// Use config runtime if provided
|
|
@@ -195,12 +229,19 @@ class Utilities {
|
|
|
195
229
|
mobile: this.isMobile(),
|
|
196
230
|
deviceType: this.getDeviceType(),
|
|
197
231
|
platform: this.getPlatform(),
|
|
232
|
+
browser: this.getBrowser(),
|
|
233
|
+
vendor: navigator.vendor,
|
|
198
234
|
runtime: this.getRuntime(),
|
|
199
235
|
userAgent: navigator.userAgent,
|
|
200
236
|
url: window.location.href,
|
|
201
237
|
},
|
|
202
|
-
|
|
203
|
-
|
|
238
|
+
geolocation: {
|
|
239
|
+
ip: null,
|
|
240
|
+
country: null,
|
|
241
|
+
region: null,
|
|
242
|
+
city: null,
|
|
243
|
+
latitude: null,
|
|
244
|
+
longitude: null,
|
|
204
245
|
},
|
|
205
246
|
};
|
|
206
247
|
}
|
package/firebase-debug.log
CHANGED
|
@@ -770,3 +770,31 @@
|
|
|
770
770
|
[debug] [2025-12-16T11:21:53.289Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
771
771
|
[debug] [2025-12-16T11:21:53.289Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
772
772
|
[debug] [2025-12-16T11:21:53.289Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
773
|
+
[debug] [2025-12-17T01:04:07.222Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
774
|
+
[debug] [2025-12-17T01:04:07.223Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
775
|
+
[debug] [2025-12-17T01:04:07.225Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
776
|
+
[debug] [2025-12-17T01:04:07.225Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
777
|
+
[debug] [2025-12-17T01:04:07.225Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
778
|
+
[debug] [2025-12-17T01:04:07.242Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
779
|
+
[debug] [2025-12-17T01:04:07.243Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
780
|
+
[debug] [2025-12-17T01:04:07.226Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
781
|
+
[debug] [2025-12-17T01:04:07.227Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
782
|
+
[debug] [2025-12-17T01:04:07.227Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
783
|
+
[debug] [2025-12-17T01:04:07.242Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
784
|
+
[debug] [2025-12-17T01:04:07.243Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
785
|
+
[debug] [2025-12-17T01:04:07.260Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
786
|
+
[debug] [2025-12-17T01:04:07.260Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
787
|
+
[debug] [2025-12-17T01:04:07.261Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
788
|
+
[debug] [2025-12-17T01:04:07.261Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
789
|
+
[debug] [2025-12-17T01:04:07.262Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
790
|
+
[debug] [2025-12-17T01:04:07.263Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
791
|
+
[debug] [2025-12-17T01:04:07.263Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
792
|
+
[debug] [2025-12-17T01:04:07.264Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
793
|
+
[debug] [2025-12-17T01:04:07.264Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
794
|
+
[debug] [2025-12-17T01:04:07.261Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
795
|
+
[debug] [2025-12-17T01:04:07.261Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
796
|
+
[debug] [2025-12-17T01:04:07.262Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
797
|
+
[debug] [2025-12-17T01:04:07.263Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
798
|
+
[debug] [2025-12-17T01:04:07.263Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
|
799
|
+
[debug] [2025-12-17T01:04:07.264Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
800
|
+
[debug] [2025-12-17T01:04:07.264Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
|
package/package.json
CHANGED