@polishd/next 0.2.2-dev.2 → 0.2.2-dev.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.
- package/CHANGELOG.md +73 -0
- package/README.md +11 -0
- package/dist/client/design-scan.d.ts +17 -1
- package/dist/client/design-scan.d.ts.map +1 -1
- package/dist/client/design-scan.js +7 -3
- package/dist/client/design-scan.js.map +1 -1
- package/dist/dashboard/color-chip.d.ts +5 -0
- package/dist/dashboard/color-chip.d.ts.map +1 -0
- package/dist/dashboard/color-chip.js +81 -0
- package/dist/dashboard/color-chip.js.map +1 -0
- package/dist/dashboard/design-review-card.d.ts.map +1 -1
- package/dist/dashboard/design-review-card.js +6 -5
- package/dist/dashboard/design-review-card.js.map +1 -1
- package/dist/dashboard/design-tokens.d.ts +33 -0
- package/dist/dashboard/design-tokens.d.ts.map +1 -0
- package/dist/dashboard/design-tokens.js +64 -0
- package/dist/dashboard/design-tokens.js.map +1 -0
- package/dist/dashboard/design.d.ts.map +1 -1
- package/dist/dashboard/design.js +9 -9
- package/dist/dashboard/design.js.map +1 -1
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +3 -4
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/installs.d.ts.map +1 -1
- package/dist/dashboard/installs.js +2 -1
- package/dist/dashboard/installs.js.map +1 -1
- package/dist/dashboard/journeys.d.ts.map +1 -1
- package/dist/dashboard/journeys.js +3 -2
- package/dist/dashboard/journeys.js.map +1 -1
- package/dist/dashboard/overflow-row.d.ts +24 -0
- package/dist/dashboard/overflow-row.d.ts.map +1 -0
- package/dist/dashboard/overflow-row.js +85 -0
- package/dist/dashboard/overflow-row.js.map +1 -0
- package/dist/dashboard/pages.d.ts.map +1 -1
- package/dist/dashboard/pages.js +1 -1
- package/dist/dashboard/pages.js.map +1 -1
- package/dist/dashboard/settings.d.ts.map +1 -1
- package/dist/dashboard/settings.js +6 -2
- package/dist/dashboard/settings.js.map +1 -1
- package/dist/dashboard/show-more.d.ts.map +1 -1
- package/dist/dashboard/show-more.js +1 -1
- package/dist/dashboard/show-more.js.map +1 -1
- package/dist/dashboard/summary.d.ts.map +1 -1
- package/dist/dashboard/summary.js +11 -6
- package/dist/dashboard/summary.js.map +1 -1
- package/dist/dashboard/telemetry.d.ts +3 -1
- package/dist/dashboard/telemetry.d.ts.map +1 -1
- package/dist/dashboard/telemetry.js +101 -9
- package/dist/dashboard/telemetry.js.map +1 -1
- package/dist/dashboard.css +69 -12
- package/dist/server/queries.d.ts +5 -0
- package/dist/server/queries.d.ts.map +1 -1
- package/dist/server/queries.js +44 -10
- package/dist/server/queries.js.map +1 -1
- package/dist/server/telemetry.d.ts +26 -0
- package/dist/server/telemetry.d.ts.map +1 -1
- package/dist/server/telemetry.js +42 -7
- package/dist/server/telemetry.js.map +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +4 -0
- package/dist/shared/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,11 +9,37 @@ export type PolishdTelemetryStatus =
|
|
|
9
9
|
| "unset"
|
|
10
10
|
/** Env kill switch, or no writable store to keep consent in. */
|
|
11
11
|
| "disabled";
|
|
12
|
+
/**
|
|
13
|
+
* The reporting install's own state, sent once per session as an
|
|
14
|
+
* `install_state` event so the collecting side can answer "how many installs
|
|
15
|
+
* have a model connected, and which ones". Resolved server-side from the same
|
|
16
|
+
* settings the dashboard renders — never the key itself, only its presence.
|
|
17
|
+
*/
|
|
18
|
+
export interface PolishdTelemetryInstallState {
|
|
19
|
+
hasModel: boolean;
|
|
20
|
+
provider: string;
|
|
21
|
+
model: string;
|
|
22
|
+
}
|
|
12
23
|
export interface PolishdTelemetryState {
|
|
13
24
|
status: PolishdTelemetryStatus;
|
|
14
25
|
endpoint: string;
|
|
26
|
+
/** Set only when status is "granted" — nothing is resolved before consent. */
|
|
27
|
+
installState: PolishdTelemetryInstallState | null;
|
|
15
28
|
}
|
|
16
29
|
export declare function telemetryDisabledByEnv(): boolean;
|
|
30
|
+
export type PolishdAnalyticsSource = "site" | "telemetry";
|
|
31
|
+
/**
|
|
32
|
+
* Which dataset the *whole dashboard* reads: the host site's own first-party
|
|
33
|
+
* events (default), or the cross-install telemetry it collects.
|
|
34
|
+
*
|
|
35
|
+
* `POLISHD_ANALYTICS_SOURCE=telemetry` is for the collecting installation
|
|
36
|
+
* (the polishd site) when what it cares about is the dashboard-usage story:
|
|
37
|
+
* every feature — Analytics, journeys, elements, device sizes, the Design
|
|
38
|
+
* tab, the AI summary — reads through one source function, so flipping this
|
|
39
|
+
* one env var points all of them at the telemetry rows. First-party events
|
|
40
|
+
* are still captured and stored, just not shown; flipping back loses nothing.
|
|
41
|
+
*/
|
|
42
|
+
export declare function resolveAnalyticsSource(): PolishdAnalyticsSource;
|
|
17
43
|
export declare function resolveTelemetryEndpoint(): string;
|
|
18
44
|
/** Record the owner's decision. Overwrites any previous one. */
|
|
19
45
|
export declare function saveTelemetryConsent(granted: boolean): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/server/telemetry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/server/telemetry.ts"],"names":[],"mappings":"AAuBA,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,2DACmB,CAAC;AAI3D,MAAM,MAAM,sBAAsB;AAChC,wCAAwC;AACtC,SAAS;AACX,uDAAuD;GACrD,QAAQ;AACV,4DAA4D;GAC1D,OAAO;AACT,gEAAgE;GAC9D,UAAU,CAAC;AAEf;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,YAAY,EAAE,4BAA4B,GAAG,IAAI,CAAC;CACnD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAID,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,WAAW,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,sBAAsB,CAE/D;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,gEAAgE;AAChE,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1E;AAgBD,mEAAmE;AACnE,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAwBhF"}
|
package/dist/server/telemetry.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* the host site's analytics, never its visitors' events.
|
|
20
20
|
*/
|
|
21
21
|
import { getMeta, setMeta, storeReady } from "./store";
|
|
22
|
+
import { resolveSettings } from "../ai/settings";
|
|
22
23
|
/** Where telemetry lands: the polishd site's own installation. */
|
|
23
24
|
export const DEFAULT_TELEMETRY_ENDPOINT = "https://polishd.muskanvaswan.xyz/api/polishd-telemetry";
|
|
24
25
|
const CONSENT_KEY = "telemetry_consent";
|
|
@@ -26,6 +27,20 @@ export function telemetryDisabledByEnv() {
|
|
|
26
27
|
const v = process.env.POLISHD_TELEMETRY;
|
|
27
28
|
return v !== undefined && /^(0|false|off|no)$/i.test(v.trim());
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Which dataset the *whole dashboard* reads: the host site's own first-party
|
|
32
|
+
* events (default), or the cross-install telemetry it collects.
|
|
33
|
+
*
|
|
34
|
+
* `POLISHD_ANALYTICS_SOURCE=telemetry` is for the collecting installation
|
|
35
|
+
* (the polishd site) when what it cares about is the dashboard-usage story:
|
|
36
|
+
* every feature — Analytics, journeys, elements, device sizes, the Design
|
|
37
|
+
* tab, the AI summary — reads through one source function, so flipping this
|
|
38
|
+
* one env var points all of them at the telemetry rows. First-party events
|
|
39
|
+
* are still captured and stored, just not shown; flipping back loses nothing.
|
|
40
|
+
*/
|
|
41
|
+
export function resolveAnalyticsSource() {
|
|
42
|
+
return process.env.POLISHD_ANALYTICS_SOURCE === "telemetry" ? "telemetry" : "site";
|
|
43
|
+
}
|
|
29
44
|
export function resolveTelemetryEndpoint() {
|
|
30
45
|
return process.env.POLISHD_TELEMETRY_ENDPOINT || DEFAULT_TELEMETRY_ENDPOINT;
|
|
31
46
|
}
|
|
@@ -33,28 +48,48 @@ export function resolveTelemetryEndpoint() {
|
|
|
33
48
|
export async function saveTelemetryConsent(granted) {
|
|
34
49
|
await setMeta(CONSENT_KEY, JSON.stringify({ status: granted ? "granted" : "denied", at: Date.now() }));
|
|
35
50
|
}
|
|
51
|
+
/** The install-state snapshot the emitter reports. Never includes secrets. */
|
|
52
|
+
async function loadInstallState() {
|
|
53
|
+
try {
|
|
54
|
+
const { settings } = await resolveSettings();
|
|
55
|
+
return {
|
|
56
|
+
hasModel: settings.apiKey.length > 0,
|
|
57
|
+
provider: settings.provider,
|
|
58
|
+
model: settings.model,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return { hasModel: false, provider: "", model: "" };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
36
65
|
/** What the dashboard should do about telemetry on this render. */
|
|
37
66
|
export async function loadPolishdTelemetryState() {
|
|
38
67
|
const endpoint = resolveTelemetryEndpoint();
|
|
68
|
+
const off = (status) => ({
|
|
69
|
+
status,
|
|
70
|
+
endpoint,
|
|
71
|
+
installState: null,
|
|
72
|
+
});
|
|
39
73
|
if (telemetryDisabledByEnv())
|
|
40
|
-
return
|
|
74
|
+
return off("disabled");
|
|
41
75
|
// Without a writable store there is nowhere to keep the answer, so asking
|
|
42
76
|
// would mean asking on every single render. Stay quiet instead.
|
|
43
77
|
if (!(await storeReady()))
|
|
44
|
-
return
|
|
78
|
+
return off("disabled");
|
|
45
79
|
const raw = await getMeta(CONSENT_KEY);
|
|
46
80
|
if (!raw)
|
|
47
|
-
return
|
|
81
|
+
return off("unset");
|
|
48
82
|
try {
|
|
49
83
|
const parsed = JSON.parse(raw);
|
|
50
|
-
if (parsed.status === "granted")
|
|
51
|
-
return { status: "granted", endpoint };
|
|
84
|
+
if (parsed.status === "granted") {
|
|
85
|
+
return { status: "granted", endpoint, installState: await loadInstallState() };
|
|
86
|
+
}
|
|
52
87
|
if (parsed.status === "denied")
|
|
53
|
-
return
|
|
88
|
+
return off("denied");
|
|
54
89
|
}
|
|
55
90
|
catch {
|
|
56
91
|
// Unreadable record — treat as never asked rather than silently sending.
|
|
57
92
|
}
|
|
58
|
-
return
|
|
93
|
+
return off("unset");
|
|
59
94
|
}
|
|
60
95
|
//# sourceMappingURL=telemetry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/server/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/server/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* the host notes app.
|
|
11
11
|
*/
|
|
12
12
|
/** Every kind of signal we capture. Ordered roughly by synthesis value. */
|
|
13
|
-
export type PolishdEventType = "page_view" | "click" | "rage_click" | "dead_click" | "scroll_depth" | "viewport" | "js_error" | "web_vital" | "hover" | "component_view" | "mount" | "session_end" | "design_scan";
|
|
13
|
+
export type PolishdEventType = "page_view" | "click" | "rage_click" | "dead_click" | "scroll_depth" | "viewport" | "js_error" | "web_vital" | "hover" | "component_view" | "mount" | "session_end" | "design_scan" | "install_state";
|
|
14
14
|
/**
|
|
15
15
|
* A single captured event. The client sends these without a session id; the
|
|
16
16
|
* ingest layer attaches `session_id` server-side from the signed cookie, so a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,UAAU,GACV,UAAU,GACV,WAAW,GACX,OAAO,GACP,gBAAgB,GAChB,OAAO,GACP,aAAa,GACb,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,UAAU,GACV,UAAU,GACV,WAAW,GACX,OAAO,GACP,gBAAgB,GAChB,OAAO,GACP,aAAa,GACb,aAAa,GACb,eAAe,CAAC;AAEpB;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CACzD;AAED,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,gBAAgB,CAkB3D,CAAC;AASH,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/E,mBAAmB;AACnB,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChD,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,yBAAyB;AACzB,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,WAAW,wBAAwB;IACvC,8BAA8B;IAC9B,CAAC,EAAE,CAAC,CAAC;IACL,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,sDAAsD;IACtD,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,kEAAkE;IAClE,EAAE,EAAE,gBAAgB,EAAE,CAAC;IACvB,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,uDAAuD;IACvD,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,gEAAgE;IAChE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,kEAAkE;IAClE,GAAG,EAAE,cAAc,EAAE,CAAC;CACvB"}
|
package/dist/shared/types.js
CHANGED
|
@@ -24,5 +24,9 @@ export const CLIENT_EVENT_TYPES = new Set([
|
|
|
24
24
|
"mount",
|
|
25
25
|
"session_end",
|
|
26
26
|
"design_scan",
|
|
27
|
+
// Sent only by the dashboard telemetry emitter (once per session): whether
|
|
28
|
+
// the reporting install has a model connected, and which provider/model.
|
|
29
|
+
// Never carries a key or any secret — see dashboard/telemetry.tsx.
|
|
30
|
+
"install_state",
|
|
27
31
|
]);
|
|
28
32
|
//# sourceMappingURL=types.js.map
|
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiFH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAkC,IAAI,GAAG,CAAmB;IACzF,WAAW;IACX,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,UAAU;IACV,WAAW;IACX,OAAO;IACP,gBAAgB;IAChB,OAAO;IACP,aAAa;IACb,aAAa;IACb,2EAA2E;IAC3E,yEAAyE;IACzE,mEAAmE;IACnE,eAAe;CAChB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polishd/next",
|
|
3
|
-
"version": "0.2.2-dev.
|
|
3
|
+
"version": "0.2.2-dev.4",
|
|
4
4
|
"description": "Drop-in product analytics for Next.js — capture real user behavioral signals (rage/dead clicks, scroll depth, errors, web vitals) and explore them on a built-in dashboard. What gets measured gets improved.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|