From fdc19116e53a599714f41c5cd1fdc1c235c361c9 Mon Sep 17 00:00:00 2001 From: snekxs Date: Mon, 5 Oct 2026 17:52:11 -0600 Subject: [PATCH] Revert "feat: add AJAZZ AJ179 PRO artwork mapping (#599)" The mapping resolved AJAZZ AJ179 PRO to https://img.openmouse.app/ajazz-aj179-pro.png, which returns 404. Device images are not stored in this repository: they are uploaded by the maintainer to Cloudflare R2 and served from img.openmouse.app, so this PR shipped a mapping to an asset that does not exist yet. Reverting keeps main from pointing at a missing render. The mapping logic itself is sound and can be re-landed once the artwork is in R2, alongside mouse-protocol#169. --- public/devices/README.md | 12 ------------ src/ui/device-images.test.ts | 12 ------------ src/ui/device-images.ts | 1 - 3 files changed, 25 deletions(-) diff --git a/public/devices/README.md b/public/devices/README.md index 75b9ed7..8bd4cfb 100644 --- a/public/devices/README.md +++ b/public/devices/README.md @@ -160,18 +160,6 @@ trusted. 4. Keep this note as provenance. Vendor product art — treat as a request pending licensing review. -`ajazz-aj179-pro.png` comes from AJAZZ Driver(R) 2.1.94, relative path -`resources/app/company/company_AJAZZMOUSE/dev/mouse_pan1080_g182_ajazz_3395_1k_8k.png`. -Its catalog maps this resource to AJ179 PRO, device id 1851, not TITAN/APEX. -The original is a transparent 200x288 black top-down render; the local copy -adds transparent padding on a 300x400 canvas without rescaling the render. -It is selected by the resolved model name, not the shared GearHub receiver PID. -**Needs a maintainer upload** after licensing review; the vendor PNG is not -included in this PR. Original asset SHA-256: -`679d089ecc7faa11cadb210916a9ca82426e8c61f91f3c1f56b686ab06a2a463`. -Redistribution rights have not been established. The application manifest's -ISC field is not treated as permission to redistribute vendor product art. - `noir-m2-nex.png` is reserved for the name-fallback mapping for Noir Gear's M2-NEX. A local render from the vendor configurator may be used for development previews, but it is deliberately not committed here. Before publishing the diff --git a/src/ui/device-images.test.ts b/src/ui/device-images.test.ts index 6a68772..5ac37e4 100644 --- a/src/ui/device-images.test.ts +++ b/src/ui/device-images.test.ts @@ -119,18 +119,6 @@ test("Attack Shark R2 resolves by name (PID 0x402D is shared with the M5 Pro)", ); }); -test("AJ179 PRO artwork follows the resolved name, not the shared GearHub PID", () => { - for (const productId of [0x402d, 0x4026, 0x402c]) { - assert.equal(deviceImage(dev(0x3151, productId), "AJAZZ AJ179 PRO"), CDN + "ajazz-aj179-pro.png"); - } - assert.equal(deviceImage(null, "AJAZZ AJ179PRO"), CDN + "ajazz-aj179-pro.png"); - assert.equal(deviceImage(dev(0x3151, 0x402d), "Attack Shark R2"), "/devices/attackshark-r2.png"); - assert.equal(deviceImage(dev(0x3151, 0x402d), "Lingbao M5 Pro"), CDN + "unknown-device.png"); - for (const name of ["AJAZZ 2.4G 8K", "pan1080xa3", "AJAZZ AJ179", "AJAZZ AJ179 PRO MAX"]) { - assert.equal(deviceImage(dev(0x3151, 0x402d), name), CDN + "unknown-device.png"); - } -}); - test("OP1we and OP1 8K resolve to distinct renders by name", () => { assert.equal(deviceImage(null, "OP1we"), CDN + "endgame-gear-op1we.png"); assert.equal(deviceImage(null, "OP1 8K"), CDN + "endgame-gear-op1-8k.png"); diff --git a/src/ui/device-images.ts b/src/ui/device-images.ts index a99a8d7..30f00c5 100644 --- a/src/ui/device-images.ts +++ b/src/ui/device-images.ts @@ -60,7 +60,6 @@ function resolveDeviceImageFilename(_device: HIDDevice | null | undefined, displ // R2 shares PID 0x402D with the Lingbao M5 Pro, so it can only be told apart // by the name the gearhub driver reads back from the device id. if (/\battack\s*shark\s*r2\b/i.test(displayName)) return "attackshark-r2.png"; - if (/\bajazz\s+aj179\s*pro\b(?!\s*max\b)/i.test(displayName)) return "ajazz-aj179-pro.png"; if (/\bdelux\b.*\bm800/i.test(displayName) || /\bm800\s*(mini|pro)?\b/i.test(displayName)) { return "delux-m800-mini.png"; }