- Fix setRole type error (cast to admin-accepted role type) - Fix OG image edge runtime → nodejs (Drizzle needs Node.js) - Fix eslint set-state-in-effect warnings - Fix img → next/image in admin users client - Remove unused eslint-disable directives
- Device list fetched from /api/hardware/stats - Create/edit devices via modal form - Delete with confirmation dialog - Uses existing hardware CRUD API endpoints