@polishd/next 0.2.2-dev.1 → 0.2.2-dev.2

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 (43) hide show
  1. package/CHANGELOG.md +22 -8
  2. package/DATABASE.md +3 -2
  3. package/README.md +11 -4
  4. package/dist/dashboard/chrome.d.ts +4 -2
  5. package/dist/dashboard/chrome.d.ts.map +1 -1
  6. package/dist/dashboard/chrome.js +9 -3
  7. package/dist/dashboard/chrome.js.map +1 -1
  8. package/dist/dashboard/index.d.ts +3 -1
  9. package/dist/dashboard/index.d.ts.map +1 -1
  10. package/dist/dashboard/index.js +21 -8
  11. package/dist/dashboard/index.js.map +1 -1
  12. package/dist/dashboard/installs.d.ts +6 -0
  13. package/dist/dashboard/installs.d.ts.map +1 -0
  14. package/dist/dashboard/installs.js +36 -0
  15. package/dist/dashboard/installs.js.map +1 -0
  16. package/dist/dashboard/telemetry.d.ts +1 -2
  17. package/dist/dashboard/telemetry.d.ts.map +1 -1
  18. package/dist/dashboard/telemetry.js +10 -9
  19. package/dist/dashboard/telemetry.js.map +1 -1
  20. package/dist/dashboard/ui.d.ts +1 -0
  21. package/dist/dashboard/ui.d.ts.map +1 -1
  22. package/dist/dashboard/ui.js +3 -0
  23. package/dist/dashboard/ui.js.map +1 -1
  24. package/dist/dashboard.css +4 -0
  25. package/dist/server/ingest.d.ts +21 -8
  26. package/dist/server/ingest.d.ts.map +1 -1
  27. package/dist/server/ingest.js +45 -15
  28. package/dist/server/ingest.js.map +1 -1
  29. package/dist/server/queries.d.ts +31 -0
  30. package/dist/server/queries.d.ts.map +1 -1
  31. package/dist/server/queries.js +68 -7
  32. package/dist/server/queries.js.map +1 -1
  33. package/dist/server/telemetry.d.ts +2 -8
  34. package/dist/server/telemetry.d.ts.map +1 -1
  35. package/dist/server/telemetry.js +14 -37
  36. package/dist/server/telemetry.js.map +1 -1
  37. package/dist/shared/types.d.ts +9 -7
  38. package/dist/shared/types.d.ts.map +1 -1
  39. package/dist/shared/types.js.map +1 -1
  40. package/dist/telemetry.d.ts.map +1 -1
  41. package/dist/telemetry.js +5 -2
  42. package/dist/telemetry.js.map +1 -1
  43. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,12 +7,14 @@
7
7
  A new `@polishd/next/telemetry` entry point exports a CORS-enabled ingest
8
8
  route for collecting telemetry *from other polishd installations* — the
9
9
  foundation for polishd dogfooding its own dashboards. Unlike the first-party
10
- route, it answers preflights, accepts POSTs cross-origin, and takes identity
11
- from the body (a client-minted anonymous session id plus a stable, anonymous
12
- `installId`) since the httpOnly session cookie never crosses origins. Events
13
- land tagged with an `install_id` — a new nullable column on `events`, migrated
14
- automatically on both backends — so one shared database can tell installations
15
- apart. Nothing sends to this endpoint yet; the dashboard-side emitter and its
10
+ route, it answers preflights, accepts POSTs cross-origin, and splits identity
11
+ between body and headers: the session id is client-minted (the httpOnly
12
+ session cookie never crosses origins), while the *installation* is identified
13
+ by its hostname, derived server-side from the browser-set Origin header —
14
+ which page script cannot forge. Events land tagged with that hostname in an
15
+ `install_id` column — new, nullable, migrated automatically on both backends —
16
+ so one shared database can tell installations apart and name them by domain.
17
+ Nothing sends to this endpoint yet; the dashboard-side emitter and its
16
18
  opt-in consent flow ship separately.
17
19
 
18
20
  ### The dashboard dogfoods itself — with consent
@@ -22,14 +24,26 @@ The dashboard now asks, once, whether it may share anonymous usage of
22
24
  never asks again; say yes and a small emitter records clicks (with the same
23
25
  rage/dead classification the host capture layer uses, via newly shared DOM
24
26
  helpers), tab views, and one viewport sample — namespaced under `/~polishd/…`
25
- paths, tied to a random install id, and suspended the instant the URL leaves
26
- the dashboard. Nothing from the host site is ever sent: not its analytics,
27
+ paths, reported under the site's own domain (the disclosed, Origin-derived
28
+ install identity), and suspended the instant the URL leaves the dashboard. Nothing from the host site is ever sent: not its analytics,
27
29
  not its visitors, not its URLs. `POLISHD_TELEMETRY=off` kills the feature
28
30
  (prompt included), `POLISHD_TELEMETRY_ENDPOINT` redirects it for testing, and
29
31
  `navigator.doNotTrack` is honored regardless of stored consent. Batches
30
32
  travel as `text/plain` so the cross-origin POST stays preflight-free and
31
33
  beacon-compatible.
32
34
 
35
+ ### An Installs tab, and telemetry kept out of the host's analytics
36
+
37
+ On the collecting side, telemetry is a different dataset and now reads like
38
+ one. Tagged rows are filtered out of `polishdEventsSource()` — the choke
39
+ point every first-party query goes through — so remote dashboard usage can
40
+ never count as the collector's own sessions, rank among its pages, or feed
41
+ its AI digest. Instead it gets a dedicated **Installs** tab: one row per
42
+ reporting domain with sessions, tab views, clicks, rage/dead clicks and last
43
+ seen, plus which dashboard tabs get used across the fleet. The tab only
44
+ renders on installations whose database actually holds telemetry — for the
45
+ senders, it would only ever be an empty screen.
46
+
33
47
  ## 0.2.1
34
48
 
35
49
  ### Losses can be ignored, and the model remembers why
package/DATABASE.md CHANGED
@@ -99,8 +99,9 @@ CREATE INDEX IF NOT EXISTS idx_events_install ON events(install_id);
99
99
 
100
100
  (`install_id` is null on every first-party event; it is only set on rows that
101
101
  arrived through a `@polishd/next/telemetry` endpoint, which tags each event
102
- with the anonymous id of the remote installation that sent it. Databases
103
- created before the column existed are migrated automatically at open.)
102
+ with the hostname of the remote installation that sent it — derived
103
+ server-side from the request's Origin header. Databases created before the
104
+ column existed are migrated automatically at open.)
104
105
 
105
106
  ---
106
107
 
package/README.md CHANGED
@@ -454,16 +454,23 @@ once; nothing is sent unless you say yes. What's shared when you do:
454
454
  - Clicks and tab views **inside the dashboard only** (paths are namespaced
455
455
  `/~polishd/…` and capture suspends the moment you navigate back to your
456
456
  site), plus one viewport-size sample per session.
457
- - A random install id (`crypto.randomUUID()`, minted on consent) and an
458
- anonymous per-browser-session id. No cookies, no fingerprinting, no URLs,
459
- page content, or user data from your site — your analytics never leave your
460
- database.
457
+ - Your site's **domain** — the collecting side reads it from the request's
458
+ Origin header, so installations are named by where the dashboard actually
459
+ runs — and an anonymous per-browser-session id. No cookies, no
460
+ fingerprinting, no URLs, page content, or user data from your site — your
461
+ analytics never leave your database.
461
462
 
462
463
  Say no and it never asks again. Change your mind, or disable it fleet-wide,
463
464
  with `POLISHD_TELEMETRY=off`; `navigator.doNotTrack` is honored regardless of
464
465
  consent. The receiving end is an ordinary `@polishd/next/telemetry` route on
465
466
  the polishd site's own installation — the same package, dogfooding itself.
466
467
 
468
+ On the *collecting* side, telemetry stays fully separated from the host's own
469
+ analytics: tagged rows are excluded from every first-party query (stats,
470
+ pages, features, journeys, the AI digest) and appear only in an **Installs**
471
+ dashboard tab — per-domain sessions, tab views, rage/dead clicks, last seen —
472
+ which only shows up on installations whose database actually holds telemetry.
473
+
467
474
  ## Configuration
468
475
 
469
476
  Defaults suit a low-traffic site. Override via `polishd.config.ts`:
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
- export type PolishdDashboardTab = "analytics" | "design" | "settings";
2
+ export type PolishdDashboardTab = "analytics" | "design" | "installs" | "settings";
3
3
  /**
4
4
  * A link to another dashboard tab that reports for duty immediately — the rail
5
5
  * highlights and the skeleton appears on click, not on server response.
@@ -15,8 +15,10 @@ export declare function TabLink({ tab, className, title, current, busy, "aria-la
15
15
  "aria-label"?: string;
16
16
  children: ReactNode;
17
17
  }): import("react").JSX.Element;
18
- export default function DashboardChrome({ active, children, }: {
18
+ export default function DashboardChrome({ active, showInstalls, children, }: {
19
19
  active: PolishdDashboardTab;
20
+ /** Render the Installs tab (only collectors of telemetry pass true). */
21
+ showInstalls?: boolean;
20
22
  children: ReactNode;
21
23
  }): import("react").JSX.Element;
22
24
  //# sourceMappingURL=chrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/dashboard/chrome.tsx"],"names":[],"mappings":"AA4BA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAgBtE;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,SAAS,EACT,KAAK,EACL,OAAe,EACf,IAAY,EACZ,YAAY,EAAE,SAAS,EACvB,QAAQ,GACT,EAAE;IACD,GAAG,EAAE,mBAAmB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAoBA;AAkBD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAkEA"}
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/dashboard/chrome.tsx"],"names":[],"mappings":"AA4BA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAmBnF;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,SAAS,EACT,KAAK,EACL,OAAe,EACf,IAAY,EACZ,YAAY,EAAE,SAAS,EACvB,QAAQ,GACT,EAAE;IACD,GAAG,EAAE,mBAAmB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAoBA;AAkBD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,MAAM,EACN,YAAoB,EACpB,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAsEA"}
@@ -26,10 +26,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
26
26
  import Link from "next/link";
27
27
  import { useRouter } from "next/navigation";
28
28
  import { createContext, useContext, useEffect, useRef, useState, useTransition, } from "react";
29
- import { ChartIcon, DropletIcon, GearIcon, SpinnerIcon, card, labelCls } from "./ui";
29
+ import { ChartIcon, DropletIcon, GearIcon, GlobeIcon, SpinnerIcon, card, labelCls } from "./ui";
30
30
  const TABS = [
31
31
  { id: "analytics", name: "Analytics", icon: _jsx(ChartIcon, {}) },
32
32
  { id: "design", name: "Design", icon: _jsx(DropletIcon, {}) },
33
+ // Shown only on installations that collect cross-install telemetry — for
34
+ // everyone else (the senders) it would be a permanently empty screen.
35
+ { id: "installs", name: "Installs", icon: _jsx(GlobeIcon, {}) },
33
36
  { id: "settings", name: "Settings", icon: _jsx(GearIcon, {}) },
34
37
  ];
35
38
  /** Set by the chrome; null when a tab's markup is rendered outside it. */
@@ -66,7 +69,7 @@ function scrollTopFrom(node) {
66
69
  }
67
70
  }
68
71
  }
69
- export default function DashboardChrome({ active, children, }) {
72
+ export default function DashboardChrome({ active, showInstalls = false, children, }) {
70
73
  const router = useRouter();
71
74
  const rootRef = useRef(null);
72
75
  const [pending, startNav] = useTransition();
@@ -86,7 +89,10 @@ export default function DashboardChrome({ active, children, }) {
86
89
  scrollTopFrom(rootRef.current);
87
90
  startNav(() => router.push(`?tab=${tab}`));
88
91
  };
89
- return (_jsx(TabNavContext.Provider, { value: navigate, children: _jsx("div", { ref: rootRef, className: "mx-auto max-w-6xl px-4 py-8 text-white sm:px-6 sm:py-10", children: _jsxs("div", { className: "flex flex-col gap-6 lg:flex-row lg:gap-10", children: [_jsx("aside", { className: "shrink-0 lg:w-44", children: _jsxs("div", { className: "lg:sticky lg:top-8", children: [_jsx("p", { className: labelCls, children: "Polishd" }), _jsx("p", { className: "mt-1 hidden text-[12px] leading-snug text-[#555] lg:block", children: "What gets measured gets improved" }), _jsx("nav", { "aria-label": "Dashboard sections", className: "mt-1 flex gap-1.5 lg:mt-5 lg:flex-col", children: TABS.map((tab) => {
92
+ return (_jsx(TabNavContext.Provider, { value: navigate, children: _jsx("div", { ref: rootRef, className: "mx-auto max-w-6xl px-4 py-8 text-white sm:px-6 sm:py-10", children: _jsxs("div", { className: "flex flex-col gap-6 lg:flex-row lg:gap-10", children: [_jsx("aside", { className: "shrink-0 lg:w-44", children: _jsxs("div", { className: "lg:sticky lg:top-8", children: [_jsx("p", { className: labelCls, children: "Polishd" }), _jsx("p", { className: "mt-1 hidden text-[12px] leading-snug text-[#555] lg:block", children: "What gets measured gets improved" }), _jsx("nav", { "aria-label": "Dashboard sections", className: "mt-1 flex gap-1.5 lg:mt-5 lg:flex-col", children: TABS.filter(
93
+ // Direct navigation to ?tab=installs still shows the rail
94
+ // entry, so the page never renders with no tab highlighted.
95
+ (tab) => tab.id !== "installs" || showInstalls || active === "installs").map((tab) => {
90
96
  const isSelected = selected === tab.id;
91
97
  return (_jsxs(TabLink, { tab: tab.id, current: isSelected, busy: loading && isSelected, className: `flex items-center gap-2 rounded-md border px-3 py-1.5 text-[13px] transition-colors ${isSelected
92
98
  ? "border-[#2e2e2e] bg-[#141414] font-medium text-white"
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/dashboard/chrome.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/dashboard/chrome.tsx"],"names":[],"mappings":"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"}
@@ -38,9 +38,11 @@ export interface PolishdAIBundle {
38
38
  sourceAvailable: boolean;
39
39
  }
40
40
  export type { PolishdDashboardTab } from "./chrome";
41
- export declare function PolishdDashboard({ data, ai, }: {
41
+ export declare function PolishdDashboard({ data, ai, showInstalls, }: {
42
42
  data: PolishdDashboardData;
43
43
  ai: PolishdAIBundle;
44
+ /** Forwarded to the chrome: whether this install collects telemetry. */
45
+ showInstalls?: boolean;
44
46
  }): import("react").JSX.Element;
45
47
  /**
46
48
  * Props Next passes to a page. Only `searchParams` is used — the unlock form
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAIL,KAAK,oBAAoB,EAG1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACf,MAAM,aAAa,CAAC;AAWrB,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,eAAO,MAAM,QAAQ,EAAE,QAGtB,CAAC;AAmLF,OAAO,EAAE,wBAAwB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIxF,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AAEtB,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,wEAAwE;IACxE,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,EAAE,GACH,EAAE;IACD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,EAAE,EAAE,eAAe,CAAC;CACrB,+BAyTA;AAgED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA0ID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,IA4BjC,QAAO,gBAAqB,0CAiI/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAOL,KAAK,oBAAoB,EAG1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACf,MAAM,aAAa,CAAC;AAYrB,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,eAAO,MAAM,QAAQ,EAAE,QAGtB,CAAC;AAmLF,OAAO,EAAE,wBAAwB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIxF,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AAEtB,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,wEAAwE;IACxE,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,EAAE,EACF,YAAoB,GACrB,EAAE;IACD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,EAAE,EAAE,eAAe,CAAC;IACpB,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,+BAyTA;AAgED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA0ID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,IA4BjC,QAAO,gBAAqB,0CAsJ/D"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { after } from "next/server";
3
3
  import { registerPolishdDashboardRoute } from "../config";
4
- import { getMonitoredComponents, getTopInteractions, loadPolishdDashboardData, } from "../server/queries";
4
+ import { getMonitoredComponents, getTelemetryInstalls, getTelemetryTopPaths, getTopInteractions, hasTelemetryInstalls, loadPolishdDashboardData, } from "../server/queries";
5
5
  import { polishdAuthContext, registerPolishdAuth, } from "../ai/guard";
6
6
  import { polishdDashboardToken, polishdTokenAuth, } from "./token-auth";
7
7
  import { unlockPolishdDashboard } from "./unlock";
@@ -13,6 +13,7 @@ import { generateSummary, getAISettingsPublic, loadSummaryState } from "../ai/su
13
13
  import { getDesignData } from "../server/design";
14
14
  import DashboardChrome from "./chrome";
15
15
  import { DesignPanel } from "./design";
16
+ import InstallsView from "./installs";
16
17
  import ElementsTable from "./elements";
17
18
  import TopFeaturesTable from "./features";
18
19
  import JourneyList from "./journeys";
@@ -73,7 +74,7 @@ export { loadPolishdDashboardData } from "../server/queries";
73
74
  // `createPolishdPage()` already applies it when POLISHD_DASHBOARD_TOKEN is set.
74
75
  export { polishdTokenAuth, POLISHD_DASHBOARD_COOKIE, } from "./token-auth";
75
76
  // ── Dashboard (presentational) ───────────────────────────────────────────────
76
- export function PolishdDashboard({ data, ai, }) {
77
+ export function PolishdDashboard({ data, ai, showInstalls = false, }) {
77
78
  const { overview, health, pages, elements, devices, topUsed, journeys, errors, monitored } = data;
78
79
  // Events are arriving but landing without a session cookie, which means the
79
80
  // proxy isn't running on those requests. When nothing at all has been
@@ -90,7 +91,7 @@ export function PolishdDashboard({ data, ai, }) {
90
91
  : Date.now() - health.lastNoSessionAt < 3_600_000 &&
91
92
  health.noSessionCount >= 3 &&
92
93
  health.noSessionCount > overview.totalEvents / 400);
93
- return (_jsx(DashboardChrome, { active: "analytics", children: _jsxs("main", { className: "text-white", children: [_jsxs("div", { className: `mb-8 flex items-start justify-between gap-3 border-b ${border} pb-6`, children: [_jsxs("div", { children: [_jsx("h1", { className: "text-[22px] font-semibold tracking-tight text-white", children: "Analytics" }), _jsxs("p", { className: "mt-1 text-[13px] text-[#666]", children: ["Stage 1 \u2014 Capture. Hover", " ", _jsx("span", { className: "inline-flex h-3 w-3 items-center justify-center rounded-full border border-[#444] text-[8px] font-bold text-[#666]", children: "i" }), " ", "for calculation details."] })] }), _jsx("div", { className: `shrink-0 whitespace-nowrap rounded-full px-3 py-1 text-[11px] font-medium ${overview.ready
94
+ return (_jsx(DashboardChrome, { active: "analytics", showInstalls: showInstalls, children: _jsxs("main", { className: "text-white", children: [_jsxs("div", { className: `mb-8 flex items-start justify-between gap-3 border-b ${border} pb-6`, children: [_jsxs("div", { children: [_jsx("h1", { className: "text-[22px] font-semibold tracking-tight text-white", children: "Analytics" }), _jsxs("p", { className: "mt-1 text-[13px] text-[#666]", children: ["Stage 1 \u2014 Capture. Hover", " ", _jsx("span", { className: "inline-flex h-3 w-3 items-center justify-center rounded-full border border-[#444] text-[8px] font-bold text-[#666]", children: "i" }), " ", "for calculation details."] })] }), _jsx("div", { className: `shrink-0 whitespace-nowrap rounded-full px-3 py-1 text-[11px] font-medium ${overview.ready
94
95
  ? "bg-emerald-950 text-emerald-400"
95
96
  : "bg-[#1a1a1a] text-[#666]"}`, children: overview.ready ? "● collecting" : "○ no store" })] }), !overview.ready && (_jsxs("div", { className: `mb-8 rounded-lg border border-amber-900/50 bg-amber-950/30 px-4 py-3 text-[13px] text-amber-400`, children: ["The analytics store isn't writable in this environment. Run locally or configure a database \u2014 see the ", _jsx("span", { className: "font-mono text-amber-300", children: "@polishd/next" }), " DATABASE.md guide."] })), proxyBroken && (_jsxs("div", { className: "mb-8 rounded-lg border border-red-900/50 bg-red-950/30 px-4 py-3 text-[13px] text-red-400", children: [_jsx("p", { className: "font-medium text-red-300", children: "Receiving events, but no session cookie \u2014 your proxy isn't running." }), _jsxs("p", { className: "mt-1.5", children: [health.noSessionCount.toLocaleString(), " ", health.noSessionCount === 1 ? "batch has" : "batches have", " been dropped. Polishd attributes every event to the anonymous cookie the proxy mints, so nothing is being stored. Check that you have a", " ", _jsx("span", { className: "font-mono text-red-300", children: "proxy.ts" }), " (Next 16+) or", " ", _jsx("span", { className: "font-mono text-red-300", children: "middleware.ts" }), " (Next 15) at your project root \u2014 matching your installed Next major \u2014 exporting a function of the same name, with", " ", _jsx("span", { className: "font-mono text-red-300", children: "config.matcher" }), " written as an inline literal that covers the pages you're capturing."] }), _jsxs("p", { className: "mt-1.5 text-red-500/80", children: ["Run ", _jsx("span", { className: "font-mono text-red-300", children: "npx @polishd/next doctor" }), " to check this automatically."] })] })), _jsx(SummaryCard, { initialSummary: ai.summary, initialSettings: ai.settings, initialStale: ai.stale, initialProfile: ai.profile, initialGaps: ai.gaps, sourceAvailable: ai.sourceAvailable }), _jsx(Section, { title: "Overview", children: _jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6", children: [_jsx(Stat, { label: "Sessions", value: overview.sessions, tip: "Distinct anonymous visitors, counted by the polishd_session cookie. One cookie = one session; no fingerprinting." }), _jsx(Stat, { label: "Page views", value: overview.pageViews, tip: "page_view events \u2014 initial page loads plus client-side (soft) navigations between routes." }), _jsx(Stat, { label: "Rage clicks", value: overview.rageClicks, tone: "text-red-500", tip: "3+ clicks on the same element within 500ms. A strong signal of frustration \u2014 something looks clickable or is broken." }), _jsx(Stat, { label: "Dead clicks", value: overview.deadClicks, tone: "text-[#f5a623]", tip: "Clicks on non-interactive elements (no link, button, or role within 4 ancestors). Users expected something to happen but nothing did." }), _jsx(Stat, { label: "JS errors", value: overview.jsErrors, tone: "text-red-500", tip: "Uncaught exceptions and unhandled promise rejections, with page and component context." }), _jsx(Stat, { label: "Events", value: overview.totalEvents, tip: "Total raw signals captured across all event types." })] }) }), _jsx(Section, { title: _jsxs(_Fragment, { children: ["Device sizes", _jsx(InfoTip, { anchor: "left", text: "One viewport sample per session, taken at session start, bucketed by CSS width: mobile (<640px), tablet (640\u20131023px), desktop (\u22651024px). Shows what screen size visitors actually use." })] }), children: _jsx("div", { className: card, children: devices.length === 0 ? (_jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "No viewport data yet \u2014 browse the site then refresh." })) : (devices.map((d) => _jsx(DeviceRow, { bucket: d }, d.category))) }) }), _jsx(Section, { title: _jsxs(_Fragment, { children: ["Top pages", _jsx(InfoTip, { anchor: "left", text: "The most-visited routes, ranked by distinct sessions. Click a page to open a chart of its sessions over time." })] }), children: _jsx(TopPagesTable, { pages: pages }) }), _jsx(Section, { title: _jsxs(_Fragment, { children: ["Monitored components", _jsx(InfoTip, { anchor: "left", text: "Components explicitly wrapped in <PolishdMonitor>. Shows viewport engagement (views, avg time visible, scroll depth, dimensions) alongside click activity. A high view count with low clicks often signals interest without commitment." })] }), children: _jsx("div", { className: card, children: monitored.length === 0 ? (_jsxs("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: ["No monitored components yet \u2014 wrap elements with", " ", _jsx("code", { className: "font-mono text-[#777]", children: "<PolishdMonitor name=\"…\">" }), " to track them here."] })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[700px]", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx(Th, { align: "left", tip: "The name prop passed to <PolishdMonitor>. Sessions and pages shown beneath.", children: "Component" }), _jsx(Th, { tip: "Times this region rendered (mount events). Only content-tracked monitors emit these.", children: "Mounts" }), _jsx(Th, { tip: "Times this component entered the viewport for \u2265500ms.", children: "Views" }), _jsx(Th, { tip: "Average time visible per viewport visit \u2014 a proxy for reading/engagement time.", children: "Avg time" }), _jsx(Th, { tip: "Average % of the component's height scrolled through per visit. 100% = user reached the bottom.", children: "Scroll depth" }), _jsx(Th, { tip: "Largest rendered height in px seen for this component \u2014 for an article, its full content height.", children: "Height" }), _jsx(Th, { tip: "Normal (non-rage, non-dead) clicks.", children: "Clicks" }), _jsx(Th, { tip: "Deliberate pointer hovers (\u2265200ms dwell).", children: "Hovers" }), _jsx(Th, { tip: "Rage clicks (3+ rapid clicks) \u2014 frustration signal.", children: "Rage" })] }) }), _jsx("tbody", { children: monitored.map((m) => (_jsx(MonitoredRow, { m: m }, m.name))) })] }) })) }) }), _jsx(Section, { title: _jsxs(_Fragment, { children: ["Sampled user journeys", _jsx(InfoTip, { anchor: "left", text: "Full sessions sampled and ranked by a composite score (rage\u00D73 + dead\u00D72 + errors\u00D72.5), preferring complete recordings and recent ones. Click a session to open its start-to-finish flow chart." })] }), children: _jsx(JourneyList, { journeys: journeys }) }), _jsx(Section, { title: _jsxs(_Fragment, { children: ["Most-used features", _jsx(InfoTip, { anchor: "left", text: "Interactive elements ranked by raw click volume (successful clicks only \u2014 rage and dead clicks excluded). The buttons and features visitors actually use most." })] }), children: _jsx("div", { className: card, children: topUsed.length === 0 ? (_jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "No clicks captured yet \u2014 browse the site then refresh." })) : (_jsx(TopFeaturesTable, { features: topUsed, header: _jsxs("tr", { children: [_jsx(Th, { align: "left", tip: "Component name (from data-component) or DOM selector. Sample text and selector shown beneath.", children: "Element" }), _jsx(Th, { tip: "Total successful (interactive) clicks across all pages.", children: "Clicks" }), _jsx(Th, { tip: "Distinct sessions that clicked this element.", children: "Sessions" }), _jsx(Th, { tip: "How many distinct pages this element was clicked on.", children: "Pages" })] }) })) }) }), _jsx(Section, { title: _jsxs(_Fragment, { children: ["Interactions by element", _jsx(InfoTip, { anchor: "left", text: "Click-type events grouped by DOM selector. This is which UI element the issues are on \u2014 the primary input to Stage 2 synthesis. Components wrapped in <PolishdMonitor> are listed separately under Monitored components." })] }), children: _jsx("div", { className: card, children: elements.length === 0 ? (_jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "No interactions captured yet \u2014 browse the site then refresh." })) : (_jsx(ElementsTable, { elements: elements, header: _jsxs("tr", { children: [_jsx(Th, { align: "left", tip: "DOM selector path for the interacted element. Sample text shown beneath.", children: "Element" }), _jsx(Th, { tip: "rage\u00D73 + dead\u00D72 for this element across all pages.", children: "Score" }), _jsx(Th, { tip: "Normal (non-rage, non-dead) clicks.", children: "Clicks" }), _jsx(Th, { tip: "Rage clicks on this element.", children: "Rage" }), _jsx(Th, { tip: "Dead clicks on this element.", children: "Dead" }), _jsx(Th, { tip: "How many distinct pages this element appeared on.", children: "Pages" })] }) })) }) }), errors.length > 0 && (_jsx(Section, { title: "Recent errors", children: _jsx("div", { className: card, children: errors.map((e, i) => (_jsx("div", { className: i > 0 ? divider : "", children: _jsxs("div", { className: "px-5 py-3", children: [_jsx("div", { className: "font-mono text-[13px] text-red-400", children: e.message }), _jsxs("div", { className: "mt-0.5 text-[11px] text-[#555]", children: [e.path, e.component ? ` · ${e.component}` : ""] })] }) }, i))) }) }))] }) }));
96
97
  }
@@ -246,14 +247,26 @@ export function createPolishdPage(opts = {}) {
246
247
  }
247
248
  // Dogfood telemetry — decided per render, after auth, so the consent
248
249
  // prompt and the emitter are only ever served to the dashboard's owner.
249
- const telemetry = await loadPolishdTelemetryState();
250
- const telemetryUi = (_jsxs(_Fragment, { children: [telemetry.status === "granted" && telemetry.installId && (_jsx(PolishdTelemetryEmitter, { endpoint: telemetry.endpoint, installId: telemetry.installId })), telemetry.status === "unset" && _jsx(PolishdTelemetryConsent, {})] }));
250
+ // `showInstalls` is the collector-side counterpart: whether any tagged
251
+ // telemetry has landed here, which is what earns the Installs tab.
252
+ const [telemetry, showInstalls] = await Promise.all([
253
+ loadPolishdTelemetryState(),
254
+ hasTelemetryInstalls(),
255
+ ]);
256
+ const telemetryUi = (_jsxs(_Fragment, { children: [telemetry.status === "granted" && (_jsx(PolishdTelemetryEmitter, { endpoint: telemetry.endpoint })), telemetry.status === "unset" && _jsx(PolishdTelemetryConsent, {})] }));
251
257
  // Which tab to render, from the `?tab=` query the sidebar links carry.
252
258
  const rawTab = Array.isArray(sp.tab) ? sp.tab[0] : sp.tab;
253
259
  if (rawTab === "design") {
254
260
  const [design, settings] = await Promise.all([getDesignData(), getAISettingsPublic()]);
255
261
  const reviewState = await loadDesignReviewState(design);
256
- return wrap(_jsxs(_Fragment, { children: [_jsx(DashboardChrome, { active: "design", children: _jsx(DesignPanel, { data: design, review: reviewState.review, reviewStale: reviewState.stale, settings: settings }) }), telemetryUi] }));
262
+ return wrap(_jsxs(_Fragment, { children: [_jsx(DashboardChrome, { active: "design", showInstalls: showInstalls, children: _jsx(DesignPanel, { data: design, review: reviewState.review, reviewStale: reviewState.stale, settings: settings }) }), telemetryUi] }));
263
+ }
264
+ if (rawTab === "installs") {
265
+ const [installs, topPaths] = await Promise.all([
266
+ getTelemetryInstalls(),
267
+ getTelemetryTopPaths(),
268
+ ]);
269
+ return wrap(_jsxs(_Fragment, { children: [_jsx(DashboardChrome, { active: "installs", showInstalls: showInstalls, children: _jsx(InstallsView, { installs: installs, topPaths: topPaths }) }), telemetryUi] }));
257
270
  }
258
271
  if (rawTab === "settings") {
259
272
  // `loadProfileState` only reads component identifiers out of the
@@ -265,7 +278,7 @@ export function createPolishdPage(opts = {}) {
265
278
  getTopInteractions(),
266
279
  ]);
267
280
  const profileState = await loadProfileState({ monitored, topUsed });
268
- return wrap(_jsxs(_Fragment, { children: [_jsx(DashboardChrome, { active: "settings", children: _jsx(SettingsView, { initialSettings: settings, initialProfile: profileState.profile, initialGaps: profileState.gaps, sourceAvailable: profileState.sourceAvailable }) }), telemetryUi] }));
281
+ return wrap(_jsxs(_Fragment, { children: [_jsx(DashboardChrome, { active: "settings", showInstalls: showInstalls, children: _jsx(SettingsView, { initialSettings: settings, initialProfile: profileState.profile, initialGaps: profileState.gaps, sourceAvailable: profileState.sourceAvailable }) }), telemetryUi] }));
269
282
  }
270
283
  const data = await loadPolishdDashboardData();
271
284
  const [summaryState, settings, profileState] = await Promise.all([
@@ -298,7 +311,7 @@ export function createPolishdPage(opts = {}) {
298
311
  });
299
312
  }
300
313
  }
301
- return wrap(_jsxs(_Fragment, { children: [_jsx(PolishdDashboard, { data: data, ai: {
314
+ return wrap(_jsxs(_Fragment, { children: [_jsx(PolishdDashboard, { data: data, showInstalls: showInstalls, ai: {
302
315
  summary: summaryState.summary,
303
316
  settings,
304
317
  stale: summaryState.stale,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { TelemetryInstall, TelemetryPathStat } from "../server/queries";
2
+ export default function InstallsView({ installs, topPaths, }: {
3
+ installs: TelemetryInstall[];
4
+ topPaths: TelemetryPathStat[];
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=installs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installs.d.ts","sourceRoot":"","sources":["../../src/dashboard/installs.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA8C7E,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,+BA6HA"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { border, card, divider, labelCls as label } from "./ui";
3
+ const WEEK_MS = 7 * 24 * 60 * 60 * 1000;
4
+ function timeAgo(ms) {
5
+ const delta = Date.now() - ms;
6
+ if (delta < 60_000)
7
+ return "just now";
8
+ const mins = Math.floor(delta / 60_000);
9
+ if (mins < 60)
10
+ return `${mins}m ago`;
11
+ const hours = Math.floor(mins / 60);
12
+ if (hours < 24)
13
+ return `${hours}h ago`;
14
+ const days = Math.floor(hours / 24);
15
+ if (days < 30)
16
+ return `${days}d ago`;
17
+ return new Date(ms).toISOString().slice(0, 10);
18
+ }
19
+ /** "/~polishd/analytics" → "analytics"; anything unrecognized stays whole. */
20
+ function tabName(path) {
21
+ const m = /^\/~polishd\/(.+)$/.exec(path);
22
+ return m ? m[1] : path;
23
+ }
24
+ function Th({ children, align = "right" }) {
25
+ return (_jsx("th", { className: `whitespace-nowrap py-2.5 ${align === "left" ? "pl-5 pr-6 text-left" : "px-4 text-right"} ${label}`, children: children }));
26
+ }
27
+ function Stat({ label: labelText, value }) {
28
+ return (_jsxs("div", { className: `${card} px-4 py-4`, children: [_jsx("div", { className: "text-[28px] font-semibold tabular-nums leading-none text-white", children: value.toLocaleString() }), _jsx("div", { className: `mt-2 ${label}`, children: labelText })] }));
29
+ }
30
+ export default function InstallsView({ installs, topPaths, }) {
31
+ const now = Date.now();
32
+ const activeWeek = installs.filter((i) => now - i.lastSeen < WEEK_MS).length;
33
+ const sessions = installs.reduce((sum, i) => sum + i.sessions, 0);
34
+ return (_jsxs("main", { className: "text-white", children: [_jsxs("div", { className: `mb-8 border-b ${border} pb-6`, children: [_jsx("h1", { className: "text-[22px] font-semibold tracking-tight text-white", children: "Installs" }), _jsx("p", { className: "mt-1 text-[13px] text-[#666]", children: "Polishd dashboards out in the wild \u2014 anonymous usage reported by installations whose owners opted in, named by the domain they run on. This install's own analytics are never mixed in here, and these rows never appear in its analytics." })] }), _jsx("section", { className: "mb-8", children: _jsxs("div", { className: "grid grid-cols-3 gap-3", children: [_jsx(Stat, { label: "Installs", value: installs.length }), _jsx(Stat, { label: "Active this week", value: activeWeek }), _jsx(Stat, { label: "Dashboard sessions", value: sessions })] }) }), _jsxs("section", { className: "mb-8", children: [_jsx("div", { className: `mb-3 ${label}`, children: "Installations" }), _jsx("div", { className: card, children: installs.length === 0 ? (_jsxs("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: ["No telemetry received yet. This tab fills in once a dashboard whose owner opted in reports to this installation's ", _jsx("code", { className: "font-mono", children: "/telemetry" }), " ", "endpoint."] })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[640px]", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx(Th, { align: "left", children: "Install" }), _jsx(Th, { children: "Sessions" }), _jsx(Th, { children: "Tab views" }), _jsx(Th, { children: "Clicks" }), _jsx(Th, { children: "Rage" }), _jsx(Th, { children: "Dead" }), _jsx(Th, { children: "Last seen" })] }) }), _jsx("tbody", { children: installs.map((i) => (_jsxs("tr", { className: `${divider} first:border-t-0`, children: [_jsx("td", { className: "py-2.5 pl-5 pr-4 text-[13px] font-medium text-white", children: i.install }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: i.sessions }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] font-semibold tabular-nums text-white", children: i.pageViews }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: i.clicks }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums", children: i.rageClicks > 0 ? (_jsx("span", { className: "text-red-400", children: i.rageClicks })) : (_jsx("span", { className: "text-[#444]", children: "\u2014" })) }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums", children: i.deadClicks > 0 ? (_jsx("span", { className: "text-[#f5a623]", children: i.deadClicks })) : (_jsx("span", { className: "text-[#444]", children: "\u2014" })) }), _jsx("td", { className: "py-2.5 pl-4 pr-5 text-right text-[12px] tabular-nums text-[#666]", children: timeAgo(i.lastSeen) })] }, i.install))) })] }) })) })] }), topPaths.length > 0 && (_jsxs("section", { className: "mb-8", children: [_jsx("div", { className: `mb-3 ${label}`, children: "Most-used dashboard tabs" }), _jsx("div", { className: card, children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx(Th, { align: "left", children: "Tab" }), _jsx(Th, { children: "Views" }), _jsx(Th, { children: "Sessions" }), _jsx(Th, { children: "Installs" })] }) }), _jsx("tbody", { children: topPaths.map((p) => (_jsxs("tr", { className: `${divider} first:border-t-0`, children: [_jsx("td", { className: "py-2.5 pl-5 pr-4 text-[13px] font-medium capitalize text-white", children: tabName(p.path) }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] font-semibold tabular-nums text-white", children: p.views }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: p.sessions }), _jsx("td", { className: "py-2.5 pl-4 pr-5 text-right text-[13px] tabular-nums text-[#888]", children: p.installs })] }, p.path))) })] }) })] }))] }));
35
+ }
36
+ //# sourceMappingURL=installs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installs.js","sourceRoot":"","sources":["../../src/dashboard/installs.tsx"],"names":[],"mappings":"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"}
@@ -8,9 +8,8 @@ declare global {
8
8
  * starts the capture singleton once per page load (the listeners are global
9
9
  * and deliberately never torn down — capture suspends off-dashboard instead).
10
10
  */
11
- export declare function PolishdTelemetryEmitter({ endpoint, installId, }: {
11
+ export declare function PolishdTelemetryEmitter({ endpoint }: {
12
12
  endpoint: string;
13
- installId: string;
14
13
  }): null;
15
14
  /**
16
15
  * The one-time opt-in prompt, shown while consent is "unset". Both buttons
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"AAsDA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,OAAO,CAAC;KACrC;CACF;AAuID;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,QAQA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,uCAuDtC"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"AAuDA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,OAAO,CAAC;KACrC;CACF;AAuID;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAQzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,uCAuDtC"}
@@ -13,9 +13,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  * Everything about the transport differs from the host-site capture layer
14
14
  * because the POST crosses origins:
15
15
  *
16
- * • Identity travels in the body — an anonymous session id minted here (the
17
- * httpOnly session cookie never leaves its origin) plus the stable
18
- * anonymous install id the server resolved from `polishd_meta`.
16
+ * • The session id travels in the body, minted here (the httpOnly session
17
+ * cookie never leaves its origin). The *installation* sends no id at all:
18
+ * the collecting side names it by this page's hostname, taken from the
19
+ * Origin header the browser sets on the cross-origin POST.
19
20
  * • Batches are sent as `text/plain`, which keeps the request inside CORS's
20
21
  * "simple" class — no preflight — and is the only shape `sendBeacon` can
21
22
  * deliver cross-origin anyway. The receiving route parses the body as
@@ -61,7 +62,7 @@ function sessionId() {
61
62
  return crypto.randomUUID();
62
63
  }
63
64
  }
64
- function start(endpoint, installId) {
65
+ function start(endpoint) {
65
66
  const sid = sessionId();
66
67
  // The route the dashboard is mounted at, learned from where we woke up.
67
68
  // Capture is suspended whenever the URL wanders off it — the listeners
@@ -75,7 +76,7 @@ function start(endpoint, installId) {
75
76
  if (queue.length === 0)
76
77
  return;
77
78
  const batch = queue.splice(0, queue.length);
78
- const body = JSON.stringify({ installId, sessionId: sid, events: batch });
79
+ const body = JSON.stringify({ sessionId: sid, events: batch });
79
80
  if (useBeacon && navigator.sendBeacon) {
80
81
  const ok = navigator.sendBeacon(endpoint, new Blob([body], { type: "text/plain" }));
81
82
  if (!ok)
@@ -169,15 +170,15 @@ function start(endpoint, installId) {
169
170
  * starts the capture singleton once per page load (the listeners are global
170
171
  * and deliberately never torn down — capture suspends off-dashboard instead).
171
172
  */
172
- export function PolishdTelemetryEmitter({ endpoint, installId, }) {
173
+ export function PolishdTelemetryEmitter({ endpoint }) {
173
174
  useEffect(() => {
174
175
  if (window.__polishdTelemetryStarted)
175
176
  return;
176
177
  if (navigator.doNotTrack === "1")
177
178
  return;
178
179
  window.__polishdTelemetryStarted = true;
179
- start(endpoint, installId);
180
- }, [endpoint, installId]);
180
+ start(endpoint);
181
+ }, [endpoint]);
181
182
  return null;
182
183
  }
183
184
  /**
@@ -207,6 +208,6 @@ export function PolishdTelemetryConsent() {
207
208
  }
208
209
  setDismissed(true);
209
210
  });
210
- return (_jsxs("div", { role: "dialog", "aria-label": "Polishd telemetry consent", className: "fixed bottom-4 right-4 z-50 w-[340px] max-w-[calc(100vw-2rem)] rounded-xl border border-[#2e2e2e] bg-[#111] p-4 shadow-2xl", children: [_jsx("p", { className: "text-[13px] font-medium text-white", children: "Help improve polishd?" }), _jsxs("p", { className: "mt-1.5 text-[12px] leading-relaxed text-[#888]", children: ["Share anonymous usage of ", _jsx("span", { className: "text-[#aaa]", children: "this dashboard" }), " \u2014 clicks and tab views inside it, tied to a random install id. Never your site's analytics, never your visitors' data. Opt out any time with", " ", _jsx("code", { className: "font-mono text-[11px] text-[#aaa]", children: "POLISHD_TELEMETRY=off" }), "."] }), _jsxs("div", { className: "mt-3 flex gap-2", children: [_jsx("button", { type: "button", disabled: pending, onClick: () => decide(true), className: "rounded-lg bg-white px-3 py-1.5 text-[12px] font-medium text-black transition-opacity hover:opacity-90 disabled:opacity-50", children: "Share" }), _jsx("button", { type: "button", disabled: pending, onClick: () => decide(false), className: "rounded-lg border border-[#2e2e2e] px-3 py-1.5 text-[12px] text-[#888] transition-colors hover:text-white disabled:opacity-50", children: "No thanks" })] })] }));
211
+ return (_jsxs("div", { role: "dialog", "aria-label": "Polishd telemetry consent", className: "fixed bottom-4 right-4 z-50 w-[340px] max-w-[calc(100vw-2rem)] rounded-xl border border-[#2e2e2e] bg-[#111] p-4 shadow-2xl", children: [_jsx("p", { className: "text-[13px] font-medium text-white", children: "Help improve polishd?" }), _jsxs("p", { className: "mt-1.5 text-[12px] leading-relaxed text-[#888]", children: ["Share anonymous usage of ", _jsx("span", { className: "text-[#aaa]", children: "this dashboard" }), " \u2014 clicks and tab views inside it, reported under your site's domain. Never your site's analytics, never your visitors' data. Opt out any time with", " ", _jsx("code", { className: "font-mono text-[11px] text-[#aaa]", children: "POLISHD_TELEMETRY=off" }), "."] }), _jsxs("div", { className: "mt-3 flex gap-2", children: [_jsx("button", { type: "button", disabled: pending, onClick: () => decide(true), className: "rounded-lg bg-white px-3 py-1.5 text-[12px] font-medium text-black transition-opacity hover:opacity-90 disabled:opacity-50", children: "Share" }), _jsx("button", { type: "button", disabled: pending, onClick: () => decide(false), className: "rounded-lg border border-[#2e2e2e] px-3 py-1.5 text-[12px] text-[#888] transition-colors hover:text-white disabled:opacity-50", children: "No thanks" })] })] }));
211
212
  }
212
213
  //# sourceMappingURL=telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3D,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAElF,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,cAAc,GAAG,GAAG,CAAC;AAQ3B,2DAA2D;AAC3D,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,GAAG,WAAW,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;QAC/D,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,QAAgB,EAAE,SAAiB;IAChD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACpC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC;IAE1D,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,aAAa,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,EAAE;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,EAAE;gBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,KAAK,CAAC,QAAQ,EAAE;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;YACzC,IAAI;YACJ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CACX,CAAiF,EACjF,EAAE;QACF,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,EAAkB,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;YAAE,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,6EAA6E;IAE7E,IAAI,SAAS,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAEpD,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EACP,CAAC,EAAE,EAAE,EAAE;QACL,MAAM,MAAM,GAAG,EAAE,CAAC,MAAwB,CAAC;QAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,QAAQ,KAAK,SAAS,CAAC,QAAQ,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;YAC7E,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;YACrB,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,gBAAgB,EAAE;gBAAE,OAAO;YAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CACjC,CAAC;IAEF,6EAA6E;IAE7E,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO;QACjC,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAoC,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,GAAG,UAAyB,GAAG,IAAsC;YAClF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,UAAU,EAAE,CAAC;YACb,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,WAAW,CAAC,WAAW,CAAC,CAAC;IACzB,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5B,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEzC,6EAA6E;IAE7E,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;QAChC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAEnD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,QAAQ,EACR,SAAS,GAIV;IACC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,CAAC,yBAAyB;YAAE,OAAO;QAC7C,IAAI,SAAS,CAAC,UAAU,KAAK,GAAG;YAAE,OAAO;QACzC,MAAM,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;IACnD,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,EAAE,CAClC,eAAe,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,qBAAqB,EAAE,CAAC;gBAC9B,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,oBAAoB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,oDAAoD;QACtD,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEL,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,gBACF,2BAA2B,EACtC,SAAS,EAAC,4HAA4H,aAEtI,YAAG,SAAS,EAAC,oCAAoC,sCAA0B,EAC3E,aAAG,SAAS,EAAC,gDAAgD,0CAClC,eAAM,SAAS,EAAC,aAAa,+BAAsB,wJAE5B,GAAG,EACnD,eAAM,SAAS,EAAC,mCAAmC,sCAA6B,SAC9E,EACJ,eAAK,SAAS,EAAC,iBAAiB,aAC9B,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC3B,SAAS,EAAC,4HAA4H,sBAG/H,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B,SAAS,EAAC,+HAA+H,0BAGlI,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"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"}