GET /api/device and MCP device_info returned 500Do not know how to serialize a BigInt on the live device. protobuf-es decodes proto uint64 fields as native JS bigint; deviceInfo() passed raw decoded messages through unconverted (e.g. PowerConfig.powermonEnables). Unit tests missed it — fixtures never set a uint64 field.
Fix
One recursive jsonSafe converter (bigint → string, pass-through otherwise) applied at the single return-time choke point in deviceInfo() to metadata + every localConfig/moduleConfig section — covers REST and MCP alike, any current or future uint64 field. Redaction logic untouched.
Verification
New spec: power section frame with powermonEnables: 123n → value serializes as "123", JSON.stringify(deviceInfo()) succeeds
npm run build ✓, npm test — 34/34 passed (was 33)
v0.7.1, CHANGELOG entry added
## What
`GET /api/device` and MCP `device_info` returned **500** `Do not know how to serialize a BigInt` on the live device. protobuf-es decodes proto `uint64` fields as native JS `bigint`; `deviceInfo()` passed raw decoded messages through unconverted (e.g. `PowerConfig.powermonEnables`). Unit tests missed it — fixtures never set a uint64 field.
## Fix
One recursive `jsonSafe` converter (bigint → string, pass-through otherwise) applied at the single return-time choke point in `deviceInfo()` to metadata + every localConfig/moduleConfig section — covers REST and MCP alike, any current or future uint64 field. Redaction logic untouched.
## Verification
- New spec: power section frame with `powermonEnables: 123n` → value serializes as `"123"`, `JSON.stringify(deviceInfo())` succeeds
- `npm run build` ✓, `npm test` — 34/34 passed (was 33)
- v0.7.1, CHANGELOG entry added
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
GET /api/deviceand MCPdevice_inforeturned 500Do not know how to serialize a BigInton the live device. protobuf-es decodes protouint64fields as native JSbigint;deviceInfo()passed raw decoded messages through unconverted (e.g.PowerConfig.powermonEnables). Unit tests missed it — fixtures never set a uint64 field.Fix
One recursive
jsonSafeconverter (bigint → string, pass-through otherwise) applied at the single return-time choke point indeviceInfo()to metadata + every localConfig/moduleConfig section — covers REST and MCP alike, any current or future uint64 field. Redaction logic untouched.Verification
powermonEnables: 123n→ value serializes as"123",JSON.stringify(deviceInfo())succeedsnpm run build✓,npm test— 34/34 passed (was 33)