diff --git a/public/devices/README.md b/public/devices/README.md index 9bdf12d7..9901283e 100644 --- a/public/devices/README.md +++ b/public/devices/README.md @@ -160,6 +160,12 @@ trusted. 4. Keep this note as provenance. Vendor product art — treat as a request pending licensing review. +`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 +asset, Noir Gear must confirm redistribution rights or OpenMouse should use a +maintainer-created silhouette instead. + `delux-m800-mini.png` — the name-fallback mapping in `src/ui/device-images.ts` is in place (keyed on reported names like "Delux M800 Mini", "Delux M800 Pro", "Delux M800 Mini (Wireless)"). The render was supplied from Delux's official diff --git a/src/app/OverviewPage.tsx b/src/app/OverviewPage.tsx index 4eb74fbb..326df2f6 100644 --- a/src/app/OverviewPage.tsx +++ b/src/app/OverviewPage.tsx @@ -4,6 +4,7 @@ import { Clock, Gauge, ImageUp, + Keyboard, Layers, Lightbulb, MousePointerClick, @@ -40,17 +41,19 @@ import { ProcessingCard, RazerButtonCard, ButtonMappingCard, + KsnakeMacroCard, PowerModeCard, OnboardProfileCard, PulsarProCard, SignalCard, DongleLedCard, SleepCard, + KsnakeScrollCard, DpiLightingCard, } from "./cards/AdvancedCards"; import { cardAvailability } from "./cards/availability"; import { TeevolutionProfileCard } from "./cards/teevolution/ProfileCard"; -import { deviceImage, isUnknownDevice, showcaseDeviceImageUrls } from "../ui/device-images"; +import { deviceImage, deviceImageFilename, isUnknownDevice, showcaseDeviceImageUrls } from "../ui/device-images"; import { BatteryIcon } from "./ui"; import { availableWorkspaceTab, availableWorkspaceTabs } from "./workspace-tabs"; @@ -63,6 +66,7 @@ const TAB_ICON: Record = { performance: BarChart3, lighting: Lightbulb, buttons: MousePointerClick, + macro: Keyboard, profiles: Layers, advanced: Settings2, }; @@ -72,21 +76,27 @@ export function TabIcon({ tab }: { tab: WorkspaceTab }): ReactNode { return