LNbits' UMD/global Vue compiles the template from already-parsed DOM, and the
browser does not self-close unknown custom elements — so <q-input ... /> nested
each following field inside the previous one, overlapping the dialog inputs.
Use explicit </q-input> / </q-select>. config.json -> 0.0.2.
Promoted from the door-portal scratch repo to its own repo for install via the
aiolabs catalog. Authenticates a tapped Bolt Card via boltcards /verify,
authorizes against per-door grants, and fires the door's local Home Assistant
webhook to unlock a Z-Wave lock. Fails closed; logs every attempt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>