Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions public/devices/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 0 additions & 12 deletions src/ui/device-images.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
1 change: 0 additions & 1 deletion src/ui/device-images.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
Expand Down
Loading