3.2 KiB
3.2 KiB
rules.md — HomeOS STRICT RULES
Carried over 1:1 from the user's Clusev project. Non-negotiable. On any conflict between a rule and a request: STOP and ask. Full examples live in the Clusev
rules.md; this is the compact, authoritative list.
Core rules
- R1 Pages = full-page class-based Livewire components mapped directly in
routes/web.php. No page controllers. - R2 Livewire class + separate Blade view. Volt forbidden (never
make:volt). - R3 All colors/design tokens in
@theme(resources/css/app.css); markup uses token utilities only — no raw hex/rgb. - R4 No inline
style=— single exception: progress-barwidth. - R5 Destructive/confirm actions via wire-elements/modal — never
confirm()/ Alpine popups. - R6 Files exactly per the folder map (handoff §7).
- R7 Responsive verified at 375 / 768 / 1280; touch targets ≥ 44 px.
- R8 Every PHP / Composer / Node / artisan command inside the container — the host has only Docker.
- R9 UI copy German, terse/operational, no emoji; status via color/dots/pills; technical tokens (MAC, IP, model) stay native.
- R10 Reuse
@themetokens + the Blade component kit — no ad-hoc colors/widgets. - R11 URL-exposed records addressed by UUID, never integer PK (
getRouteKeyName(): 'uuid'). - R12 Every touched page verified in a real browser: HTTP 200, zero console errors, zero failed requests; the loaded state of lazy pages (not the skeleton); inspect the rendered DOM for leaked
@/{{ }}/group.keyliterals. A greenLivewire::test≠ done. - R13 Route paths + names English (
/devices, not/geraete); German only in visible labels. - R14 Fonts self-hosted (
resources/fonts/*.woff2, relativeurl('../fonts/…')+@font-face) — no Google Fonts / CDN link or import. - R15 Codex review (
/codex:review) after every change — no errors, no security findings, else fix and re-run. Task not done until clean. - R16 Every UI string localized in
lang/{de,en}/<group>.php, identical keys in both languages, accessed via__('group.key')— no hard-coded copy anywhere. - R17 Blade: block
@php … @endphponly (no inline@php(...)); never write the literal directive tokens in comments/text. - Secrets:
.env*, tokens, keys are never staged; checkgit statusbefore every commit. Feature branches, never commit directly tomain.
HomeOS-specific additions
- H1 UI / Livewire never publishes to protocol topics directly — every command goes through
DeviceCommandService→ driver, and every command is written to thecommandsaudit table. - H2 MQTT subscriber callbacks: parse + dispatch only. No DB aggregation, no HTTP calls in the loop.
- H3 Vendor specifics (topics, payload shapes) live only in
app/Support/Mqtt+app/Support/Drivers. Models, Livewire and views stay protocol-agnostic. - H4 Telemetry writes go through one ingest path that enforces retention/compression policies.
- H5 Automations always carry
cooldown_seconds; the engine has a dry-run mode (log instead of switch) for development — never develop automations against the live home.