diff --git a/package-lock.json b/package-lock.json
index 43e1251d..add7aac7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "AGPL-3.0-or-later",
"dependencies": {
"@openmouse/keyboard-protocol": "1.1.0",
- "@openmouse/protocol": "0.45.2",
+ "@openmouse/protocol": "0.46.0",
"lucide-react": "^1.43.0",
"posthog-js": "^1.438.17",
"preact": "^10.29.8"
@@ -492,9 +492,9 @@
}
},
"node_modules/@openmouse/protocol": {
- "version": "0.45.2",
- "resolved": "https://registry.npmjs.org/@openmouse/protocol/-/protocol-0.45.2.tgz",
- "integrity": "sha512-971Aihm8fJOuRHxNvhEPKYpWe5BM4v9GO8bahHKTxGa4nMrtKYd46A9gPKDqIZk0T+mnyjfBloH1T4vum5Qzag==",
+ "version": "0.46.0",
+ "resolved": "https://registry.npmjs.org/@openmouse/protocol/-/protocol-0.46.0.tgz",
+ "integrity": "sha512-7/llEdOV4tslecHd39h9ZD+YfgqvV/vJie1F012GD0+Pc82Vh+41Z461lJDeO8cHFG3VnqYP52OxPqJM4Xe6ZQ==",
"license": "AGPL-3.0-or-later",
"engines": {
"node": ">=20"
diff --git a/package.json b/package.json
index 52889f6e..b9917100 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
},
"dependencies": {
"@openmouse/keyboard-protocol": "1.1.0",
- "@openmouse/protocol": "0.45.2",
+ "@openmouse/protocol": "0.46.0",
"lucide-react": "^1.43.0",
"posthog-js": "^1.438.17",
"preact": "^10.29.8"
diff --git a/src/device/preview/preview-fixtures.ts b/src/device/preview/preview-fixtures.ts
index b0d74d87..a30d5061 100644
--- a/src/device/preview/preview-fixtures.ts
+++ b/src/device/preview/preview-fixtures.ts
@@ -343,6 +343,37 @@ const ATTACKSHARK: MouseStatus = {
firmware: ["Mouse 1.0.4", "Dongle 1.0.3"],
};
+/**
+ * The Cosmic Byte Kilonova 3335IC through its receiver (SinoWealth
+ * `258a:002f`), browser transport: identity, battery, link, and read-only DPI.
+ * The driver refuses writes until the full bank is decoded, so the shell shows
+ * DPI read-out but no settings cards.
+ */
+const KILONOVA: MouseStatus = {
+ brand: "Cosmic Byte" as MouseStatus["brand"],
+ name: "Cosmic Byte Kilonova 3335IC",
+ ui: {
+ family: "sinowealth-kilonova-3335ic",
+ settingsReady: false,
+ valuesVerified: true,
+ forceShowBattery: true,
+ hideProcessingCard: true,
+ defaultDisplayName: "Cosmic Byte Kilonova 3335IC",
+ statusNote: "OpenMouse reads this Cosmic Byte Kilonova 3335IC's DPI from its onboard memory; other settings are not decoded and changes are refused. The battery and awake check need OpenMouse Bridge.",
+ },
+ batteryPercent: null,
+ batteryState: "Unknown",
+ dpi: 1600,
+ dpiStages: [400, 800, 1600, 3200, 6400, 16000],
+ activeDpiStage: 2,
+ pollingRateHz: 0,
+ activeProfile: null,
+ connectionType: "Wireless",
+ connectionDetail: "2.4 GHz receiver",
+ liftOffDistance: null,
+ firmware: [],
+};
+
const M3K: MouseStatus = {
brand: "Zaunkoenig" as MouseStatus["brand"],
name: "Zaunkoenig M3K",
@@ -1086,6 +1117,7 @@ export const PREVIEW_FIXTURES: Record