koin.js 1.0.4 → 1.0.5

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/dist/index.mjs CHANGED
@@ -7434,8 +7434,39 @@ function usePlayerPersistence(onSettingsChange) {
7434
7434
  updateSettings
7435
7435
  };
7436
7436
  }
7437
+
7438
+ // src/lib/telemetry.ts
7439
+ var sendTelemetry = (eventName, params = {}) => {
7440
+ if (typeof window === "undefined") return;
7441
+ try {
7442
+ fetch("https://koin.theretrosaga.com/api/telemetry", {
7443
+ method: "POST",
7444
+ headers: {
7445
+ "Content-Type": "application/json"
7446
+ },
7447
+ body: JSON.stringify({
7448
+ event_name: eventName,
7449
+ params: {
7450
+ ...params,
7451
+ url: window.location.href,
7452
+ referrer: document.referrer,
7453
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
7454
+ }
7455
+ })
7456
+ }).catch(() => {
7457
+ });
7458
+ } catch (e) {
7459
+ }
7460
+ };
7437
7461
  var GamePlayer = memo(function GamePlayer2(props) {
7438
7462
  const { settings, updateSettings, isLoaded: settingsLoaded } = usePlayerPersistence();
7463
+ useEffect(() => {
7464
+ sendTelemetry("game_start", {
7465
+ system: props.system,
7466
+ core: props.core,
7467
+ game: props.title || "unknown"
7468
+ });
7469
+ }, [props.system, props.core, props.title]);
7439
7470
  const [biosModalOpen, setBiosModalOpen] = useState(false);
7440
7471
  const [showShortcutsModal, setShowShortcutsModal] = useState(false);
7441
7472
  const effectiveShader = props.shader !== void 0 ? props.shader : settings.shader;
@@ -7533,6 +7564,13 @@ var GamePlayer = memo(function GamePlayer2(props) {
7533
7564
  status,
7534
7565
  isPerformanceMode
7535
7566
  } = nostalgist;
7567
+ useEffect(() => {
7568
+ if (status === "running") {
7569
+ console.log("[Koin Debug] Status:", status);
7570
+ console.log("[Koin Debug] isPerformanceMode:", isPerformanceMode);
7571
+ console.log("[Koin Debug] crossOriginIsolated:", typeof window !== "undefined" ? window.crossOriginIsolated : "N/A");
7572
+ }
7573
+ }, [status, isPerformanceMode]);
7536
7574
  useEffect(() => {
7537
7575
  if (settingsLoaded) {
7538
7576
  setVolume(settings.volume);
@@ -7726,6 +7764,18 @@ var GamePlayer = memo(function GamePlayer2(props) {
7726
7764
  ]
7727
7765
  }
7728
7766
  ),
7767
+ !isPerformanceMode && (status === "running" || status === "paused") && /* @__PURE__ */ jsx(
7768
+ "div",
7769
+ {
7770
+ className: "bg-red-900/80 backdrop-blur-md px-2 py-1 rounded border border-red-500/50 flex items-center gap-1.5",
7771
+ title: "Standard Mode (Single Threaded)",
7772
+ children: /* @__PURE__ */ jsxs("span", { className: "text-[10px] uppercase font-bold tracking-wider text-red-200", children: [
7773
+ "Standard (",
7774
+ typeof window !== "undefined" && window.crossOriginIsolated ? "Isolated" : "Not Isolated",
7775
+ ")"
7776
+ ] })
7777
+ }
7778
+ ),
7729
7779
  settings.showInputDisplay && (status === "running" || status === "paused") && /* @__PURE__ */ jsx(
7730
7780
  InputDisplay_default,
7731
7781
  {