diff --git a/CHANGELOG.md b/CHANGELOG.md
index fa3326b3..03b0048d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -321,6 +321,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Connecting a scrobble service could fail with only "Network error — check your connection or URL", which covers everything from a DNS failure to a blocked host, an interrupted TLS handshake or a rejected request. The underlying error is now shown alongside it, so a failing connect can be told apart from a reachability problem on your machine or network.
+### Windows — oversized Discord banner icon
+
+**By [@Psychotoxical](https://github.com/Psychotoxical), PR [#1289](https://github.com/Psychotoxical/psysonic/pull/1289)**
+
+* The Discord community banner rendered its icon at an enormous size on Windows, pushing the message out of the bar. The icon now has a fixed size on every platform.
+
## [1.49.0] - 2026-06-29
diff --git a/src/features/discordBanner/DiscordBanner.test.tsx b/src/features/discordBanner/DiscordBanner.test.tsx
new file mode 100644
index 00000000..da0b5625
--- /dev/null
+++ b/src/features/discordBanner/DiscordBanner.test.tsx
@@ -0,0 +1,40 @@
+// The banner icon shipped with a `viewBox` but no width/height and no CSS rule
+// for its class, so it had no intrinsic size at all. WebKitGTK happened to
+// render it small; Chromium (WebView2, i.e. Windows) fell back to the 300x150
+// default replaced-element size and the icon swallowed the bar. Pin the explicit
+// dimensions — CSS alone cannot be asserted here, and the attributes are what
+// make the icon correct even before the stylesheet applies.
+
+import { describe, expect, it, beforeEach, afterEach } from 'vitest';
+import { render } from '@testing-library/react';
+import DiscordBanner from './DiscordBanner';
+import { useAuthStore } from '@/store/authStore';
+import { resetAuthStore } from '@/test/helpers/storeReset';
+
+const THRESHOLD_MS = 20 * 60 * 60 * 1000;
+
+describe('DiscordBanner', () => {
+ beforeEach(() => {
+ resetAuthStore();
+ useAuthStore.setState({ discordBannerAccumulatedUsageMs: THRESHOLD_MS });
+ });
+ afterEach(resetAuthStore);
+
+ it('sizes its icon explicitly instead of leaving it intrinsic', () => {
+ const { container } = render(