From 65be11cc0719952cc22395bf1c1c0074b85ddb6a Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:34:09 -0300 Subject: [PATCH 1/6] chore: add sentry --- package.json | 1 + src/renderer/src/main.tsx | 13 ++++++++++ yarn.lock | 54 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) diff --git a/package.json b/package.json index 1a083ba9..c3dd7ff5 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@primer/octicons-react": "^19.9.0", "@radix-ui/react-dropdown-menu": "^2.1.16", "@reduxjs/toolkit": "^2.2.3", + "@sentry/react": "^10.33.0", "@tiptap/extension-bold": "^3.6.2", "@tiptap/extension-italic": "^3.6.2", "@tiptap/extension-link": "^3.6.2", diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index a012cf39..eaf1b5eb 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -21,6 +21,7 @@ import resources from "@locales"; import { logger } from "./logger"; import { addCookieInterceptor } from "./cookies"; +import * as Sentry from "@sentry/react"; import { levelDBService } from "./services/leveldb.service"; import Catalogue from "./pages/catalogue/catalogue"; import Home from "./pages/home/home"; @@ -36,6 +37,18 @@ import { AchievementNotification } from "./pages/achievements/notification/achie console.log = logger.log; +Sentry.init({ + dsn: import.meta.env.RENDERER_VITE_SENTRY_DSN, + integrations: [ + Sentry.browserTracingIntegration(), + Sentry.replayIntegration(), + ], + tracesSampleRate: 0.5, + replaysSessionSampleRate: 0, + replaysOnErrorSampleRate: 0, + release: await window.electron.getVersion(), +}); + const isStaging = await window.electron.isStaging(); addCookieInterceptor(isStaging); diff --git a/yarn.lock b/yarn.lock index 27d1e902..4cc2c09e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2174,6 +2174,60 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz#5b2dd648a960b8fa00d76f2cc4eea2f03daa80f4" integrity sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w== +"@sentry-internal/browser-utils@10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-10.33.0.tgz#4a5d98352267b63fcc449efe14627c0fc082089e" + integrity sha512-nDJFHAfiFifBfJB0OF6DV6BIsIV5uah4lDsV4UBAgPBf+YAHclO10y1gi2U/JMh58c+s4lXi9p+PI1TFXZ0c6w== + dependencies: + "@sentry/core" "10.33.0" + +"@sentry-internal/feedback@10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-10.33.0.tgz#5865b4a68d607bb48d8159a100464ae640a638e7" + integrity sha512-sN/VLWtEf0BeV6w6wldIpTxUQxNVc9o9tjLRQa8je1ZV2FCgXA124Iff/zsowsz82dLqtg7qp6GA5zYXVq+JMA== + dependencies: + "@sentry/core" "10.33.0" + +"@sentry-internal/replay-canvas@10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-10.33.0.tgz#9ea15b320618ad220e5d8f7c804a0d9ca55b04af" + integrity sha512-MTmP6uoAVzw4CCPeqCgCLsRSiOfGLxgyMFjGTCW3E7t62MJ9S0H5sLsQ34sHxXUa1gFU9UNAjEvRRpZ0JvWrPw== + dependencies: + "@sentry-internal/replay" "10.33.0" + "@sentry/core" "10.33.0" + +"@sentry-internal/replay@10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-10.33.0.tgz#8cfe3a353731fcd81e7afb646b6befeb0f9feb0f" + integrity sha512-UOU9PYxuXnPop3HoQ3l4Q7SZUXJC3Vmfm0Adgad8U03UcrThWIHYc5CxECSrVzfDFNOT7w9o7HQgRAgWxBPMXg== + dependencies: + "@sentry-internal/browser-utils" "10.33.0" + "@sentry/core" "10.33.0" + +"@sentry/browser@10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-10.33.0.tgz#33284952a1cdf43cdac15ac144c85e81e7cbaa93" + integrity sha512-iWiPjik9zetM84jKfk01UveW1J0+X7w8XmJ8+IrhTyNDBVUWCRJWD8FrksiN1dRSg5mFWgfMRzKMz27hAScRwg== + dependencies: + "@sentry-internal/browser-utils" "10.33.0" + "@sentry-internal/feedback" "10.33.0" + "@sentry-internal/replay" "10.33.0" + "@sentry-internal/replay-canvas" "10.33.0" + "@sentry/core" "10.33.0" + +"@sentry/core@10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-10.33.0.tgz#ea4964fbec290503b419ccaf1a313924d30ad1c8" + integrity sha512-ehH1VSUclIHZKEZVdv+klofsFIh8FFzqA6AAV23RtLepptzA8wqQzUGraEuSN25sYcNmYJ0jti5U0Ys+WZv5Dw== + +"@sentry/react@^10.33.0": + version "10.33.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-10.33.0.tgz#89a3be88d43e49de90943ad2ac86ee1664048097" + integrity sha512-iMdC2Iw54ibAccatJ5TjoLlIy3VotFteied7JFvOudgj1/2eBBeWthRobZ5p6/nAOpj4p9vJk0DeLrc012sd2g== + dependencies: + "@sentry/browser" "10.33.0" + "@sentry/core" "10.33.0" + "@sindresorhus/is@^4.0.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" From 3344f684081d7d98c67c063060fc1af9510bf3c0 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:42:22 -0300 Subject: [PATCH 2/6] feat: add semver for sentry --- src/renderer/src/main.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index eaf1b5eb..cc614b98 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -46,7 +46,7 @@ Sentry.init({ tracesSampleRate: 0.5, replaysSessionSampleRate: 0, replaysOnErrorSampleRate: 0, - release: await window.electron.getVersion(), + release: "hydra-launcher@" + (await window.electron.getVersion()), }); const isStaging = await window.electron.isStaging(); From 1f447cc4785d55d5bb45e86b48f6be1832de6b8d Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:05:55 -0300 Subject: [PATCH 3/6] chore: add sentry var to build-renderer action --- .github/workflows/build-renderer.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-renderer.yml b/.github/workflows/build-renderer.yml index 34f7d303..5858863a 100644 --- a/.github/workflows/build-renderer.yml +++ b/.github/workflows/build-renderer.yml @@ -42,6 +42,7 @@ jobs: run: yarn build env: RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} + RENDERER_VITE_SENTRY_DSN: ${{ vars.SENTRY_DSN }} - name: Deploy to Cloudflare Pages env: From 6e92e0f79f43a6559c62bc1ca098c2b3416ef429 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:37:22 -0300 Subject: [PATCH 4/6] fix: getLibrary throwing error --- src/main/events/library/get-library.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/events/library/get-library.ts b/src/main/events/library/get-library.ts index 9fb3416b..13a21422 100644 --- a/src/main/events/library/get-library.ts +++ b/src/main/events/library/get-library.ts @@ -25,7 +25,7 @@ const getLibrary = async (): Promise => { const achievements = await gameAchievementsSublevel.get(key); unlockedAchievementCount = - achievements?.unlockedAchievements.length ?? 0; + achievements?.unlockedAchievements?.length ?? 0; } return { From 979958aca62805489492fadd2e05779e1c21f6ab Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:37:17 -0300 Subject: [PATCH 5/6] feat: update ww webRequest interceptor --- src/main/services/window-manager.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts index 26d13228..813a72fa 100644 --- a/src/main/services/window-manager.ts +++ b/src/main/services/window-manager.ts @@ -138,12 +138,21 @@ export class WindowManager { (details, callback) => { if ( details.webContentsId !== this.mainWindow?.webContents.id || - details.url.includes("chatwoot") || - details.url.includes("workwonders") + details.url.includes("chatwoot") ) { return callback(details); } + if (details.url.includes("workwonders")) { + return callback({ + ...details, + requestHeaders: { + Origin: "https://workwonders.app", + ...details.requestHeaders, + }, + }); + } + const userAgent = new UserAgent(); callback({ From 194e7918ca4267be22ef15cc8543185909c0f913 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:41:52 -0300 Subject: [PATCH 6/6] feat: dont setup ww feedback widget if user has no token --- src/renderer/src/app.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx index bc23f844..eb5f7e49 100644 --- a/src/renderer/src/app.tsx +++ b/src/renderer/src/app.tsx @@ -134,7 +134,10 @@ export function App() { await workwondersRef.current.initChangelogWidget(); workwondersRef.current.initChangelogWidgetMini(); - workwondersRef.current.initFeedbackWidget(); + + if (token) { + workwondersRef.current.initFeedbackWidget(); + } }, [workwondersRef] );