TenantAtlas/specs/396-system-panel-branding/tasks.md
ahmido e95fcf5e38 feat: improve system panel branding and auth experience (#467)
Automated PR created by Codex via Gitea API.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #467
2026-06-21 23:05:32 +00:00

11 KiB

Tasks: Spec 396 - System Panel Branding and Productization Smoke Config v1

Input: Design documents from /specs/396-system-panel-branding/ Prerequisites: spec.md, plan.md Branch: 396-system-panel-branding Runtime constraint: No migrations, models, Graph calls, jobs, queues, schedulers, new dashboards, or production smoke-login bypass.

Task Format

  • [P] means the task can run in parallel with other [P] tasks in the same phase.
  • Every runtime behavior task must have focused Pest or Pest Browser proof.
  • Do not rewrite completed Specs 376, 377, 391, or 395.

Phase 1: Inventory And Gate Setup

Purpose: Lock the exact /system scope before implementation.

  • T001 Create specs/396-system-panel-branding/implementation-report.md with sections for tests, browser proof, Livewire v4, provider registration, global search, destructive/high-impact actions, asset strategy, deployment impact, Product Surface result, no completed-spec rewrite assertion, and follow-up candidates.
  • T002 Record in specs/396-system-panel-branding/implementation-report.md that docs/product/standards/product-surface-contract.md, docs/ui/tenantpilot-enterprise-ui-standards.md, docs/filament-guidelines.md, and docs/testing-guidelines.md were reviewed before runtime UI edits.
  • T003 [P] Inventory current visible branding and title copy in apps/platform/app/Providers/Filament/SystemPanelProvider.php, apps/platform/app/Filament/System/Pages/Auth/Login.php, apps/platform/app/Filament/System/Pages/Dashboard.php, and apps/platform/lang/en/localization.php.
  • T004 [P] Inventory current German system-panel copy in apps/platform/lang/de/localization.php and record any terms that need canonical alignment.
  • T005 [P] Inventory current /system navigation labels and page titles in apps/platform/app/Filament/System/Pages/Directory/*.php, apps/platform/app/Filament/System/Pages/RepairWorkspaceOwners.php, apps/platform/app/Filament/System/Pages/Security/AccessLogs.php, and apps/platform/app/Filament/System/Pages/Ops/*.php.
  • T006 [P] Inventory current system health/status vocabulary in apps/platform/app/Filament/System/Widgets/ControlTowerHealthIndicator.php, apps/platform/app/Filament/System/Widgets/CustomerHealthKpis.php, and apps/platform/app/Support/Badges/Domains/SystemHealthBadge.php.
  • T007 [P] Inventory current smoke/debug suppression in apps/platform/routes/web.php, apps/platform/app/Http/Middleware/SuppressDebugbarForSmokeRequests.php, and apps/platform/tests/Browser/Spec376BrowserAuditFixtureCoverageSmokeTest.php.
  • T008 Confirm the implementation will reuse existing platform guard/capability paths and record any proposed local/testing-only smoke helper decision in implementation-report.md.

Phase 2: Tests First

Purpose: Establish failing or protective tests before behavior changes.

  • T009 Update or add Pest feature coverage for canonical system health labels in apps/platform/tests/Feature/Badges/SystemHealthBadgeSemanticsTest.php, covering existing ok, warn, critical, and unknown system-health values.
  • T010 Add apps/platform/tests/Feature/System/Spec396SystemPanelProductizationTest.php to cover system panel access, productized title/label expectations, and absence of primary scaffold/default branding where server-rendered assertions are reliable.
  • T011 If a local/testing-only system smoke helper is added, cover environment gating, platform guard usage, tenant-session denial, and production-like unavailability in apps/platform/tests/Feature/System/Spec396SystemPanelProductizationTest.php. N/A - no helper was added.
  • T012 Add or update action-posture tests for any touched break-glass or operational-control action so high-impact actions still require confirmation, server-side authorization, and audit logging. N/A - no high-impact actions were touched.
  • T013 Add apps/platform/tests/Browser/Spec396SystemPanelProductizationSmokeTest.php to visit /system, /system/ops/runs, and one security/repair/control page as a platform user with the required capabilities.
  • T014 In Spec396SystemPanelProductizationSmokeTest, assert no debugbar, Vite overlay, exception page, Livewire/Filament runtime errors, or console errors on the focused smoke path.
  • T015 If shared panel/provider branding can affect /admin, add a focused /admin regression test or browser assertion in the narrowest existing admin smoke test file. N/A - only the system panel provider was changed.

Phase 3: System Branding And Navigation

Purpose: Make the existing system panel visibly TenantPilot-owned without expanding IA.

  • T016 Update apps/platform/app/Providers/Filament/SystemPanelProvider.php only as needed to set explicit TenantPilot system branding while preserving id('system'), path('system'), authGuard('platform'), middleware, and provider registration location.
  • T017 Update apps/platform/lang/en/localization.php so /system dashboard/login/navigation copy reads as TenantPilot system/platform-operator copy rather than generic System dashboard or framework default copy.
  • T018 Update apps/platform/lang/de/localization.php with equivalent productized German labels where existing German system-panel labels are affected.
  • T019 Update apps/platform/app/Filament/System/Pages/Auth/Login.php only as needed to align the login page title/heading with TenantPilot system branding, without changing authentication semantics.
  • T020 Update apps/platform/app/Filament/System/Pages/Dashboard.php, affected apps/platform/app/Filament/System/Pages/Ops/*.php, apps/platform/app/Filament/System/Pages/Directory/*.php, apps/platform/app/Filament/System/Pages/Security/AccessLogs.php, and apps/platform/app/Filament/System/Pages/RepairWorkspaceOwners.php page titles/navigation labels to use the canonical system-panel vocabulary.
  • T021 Verify no new navigation groups, cards, metrics, tables, or routes were added for branding-only changes.

Phase 4: Canonical Status Vocabulary

Purpose: Replace inconsistent health labels with existing-state canonical labels.

  • T022 Update apps/platform/app/Support/Badges/Domains/SystemHealthBadge.php so existing ok, warn, critical, and unknown states render canonical labels (Ready, Needs attention, Critical, Unknown) without introducing a new status family.
  • T023 Update apps/platform/app/Filament/System/Widgets/ControlTowerHealthIndicator.php to use canonical system health labels and supporting copy.
  • T024 Update apps/platform/app/Filament/System/Widgets/CustomerHealthKpis.php to use canonical system health labels while preserving existing counts and queries.
  • T025 Search apps/platform/app/Filament/System, apps/platform/app/Support/Badges, apps/platform/lang, and affected tests for old primary labels (OK, Warn, Healthy, Warning, Degraded, All systems healthy) and either replace them in active UI or document intentional technical/test-only usage in implementation-report.md.

Phase 5: Smoke And Debug-Safe Proof

Purpose: Make focused /system proof deterministic and safe.

  • T026 Reuse the existing Pest Browser platform-guard approach from apps/platform/tests/Browser/Spec376BrowserAuditFixtureCoverageSmokeTest.php unless manual in-app sanity requires a local/testing-only helper.
  • T027 If a smoke helper is required, add it in apps/platform/routes/web.php with local/testing environment gating, platform guard/capability requirements, no product navigation entry, and no production availability. N/A - no helper was required.
  • T028 If a smoke helper is required, extend apps/platform/app/Http/Middleware/SuppressDebugbarForSmokeRequests.php only enough to suppress debugbar for that safe smoke context. N/A - no helper was required.
  • T029 Keep smoke fixture setup cheap by default; do not add expensive seeds, provider calls, queued work, or external network calls.
  • T030 Capture focused browser proof outputs and record the result in specs/396-system-panel-branding/implementation-report.md.
  • T031 Review browser screenshots, failure snapshots, logs, and debug HTML for secrets, provider tokens, raw credentials, debug pages, and unrelated artifacts; clean them or intentionally retain only spec-local evidence with a note in implementation-report.md.

Phase 6: Safety, Formatting, And Close-Out

Purpose: Verify the narrow slice and document the product-surface outcome.

  • T032 Run cd apps/platform && ./vendor/bin/sail artisan test --filter=SystemHealthBadgeSemanticsTest.
  • T033 Run cd apps/platform && ./vendor/bin/sail artisan test --filter=SystemPanelAuthTest.
  • T034 Run cd apps/platform && ./vendor/bin/sail artisan test --filter=Spec396.
  • T035 Run the focused Pest Browser Spec 396 smoke command according to the repo's browser-test setup.
  • T036 Run cd apps/platform && ./vendor/bin/sail pint --dirty.
  • T037 Complete specs/396-system-panel-branding/implementation-report.md with Product Surface Impact, UI Surface Impact, browser proof, Human Product Sanity result, visible complexity outcome, Livewire v4 compliance, provider registration location, global search posture, destructive/high-impact action posture, asset strategy, deployment impact, execution/rendered UI/smoke/auth/debug truth categories, known unrelated browser-suite failures, and no completed-spec rewrite assertion.
  • T038 Confirm no application changes added migrations, models, Graph calls, jobs, queues, schedulers, new persisted entities, new system features, or broad UI redesign.
  • T039 Confirm completed specs were not edited and list any follow-up candidates in implementation-report.md.
  • T040 Update docs/ui-ux-enterprise-audit/route-inventory.md with the Spec 396 /system surface coverage decision or append the minimal existing-surface update required by the local registry format.
  • T041 Update docs/ui-ux-enterprise-audit/design-coverage-matrix.md with the Spec 396 System Admin / Technical Annex coverage decision or append the minimal existing-surface update required by the local registry format.

Dependencies

  • T001-T008 must complete before runtime implementation.
  • T009-T015 should be written before or alongside the corresponding behavior changes.
  • T016-T021 depend on T003-T005.
  • T022-T025 depend on T006 and T009.
  • T026-T031 depend on T007-T008 and T013-T014.
  • T032-T041 depend on all implementation tasks.

Parallel Execution Examples

T003, T004, T005, T006, and T007 can run in parallel during inventory.
T009 and T010 can run in parallel once the expected label vocabulary is locked.
T022, T023, and T024 can run in parallel if the shared vocabulary is agreed.

MVP Scope

The minimum acceptable implementation is: productized /system brand/title copy, canonical top-level health labels, focused /system browser smoke, no debug/runtime leaks, preserved platform auth/capability semantics, and completed implementation report.