TenantAtlas/specs/348-choose-environment-enterprise-selector/plan.md
ahmido 12ea7f9924 feat: review pack output contract and readiness semantics (spec 347/348) (#419)
Implemented the output contract and readiness semantics for review packs. Also added spec 348.
Includes changes to ChooseEnvironment, CustomerReviewWorkspace, GenerateReviewPackJob and related blade views.
Added comprehensive tests.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #419
2026-06-02 23:17:08 +00:00

2.6 KiB

Implementation Plan: Spec 348 - Choose Environment Enterprise Selector

Branch: 348-choose-environment-enterprise-selector | Date: 2026-06-02 | Spec: specs/348-choose-environment-enterprise-selector/spec.md

Summary

Productize the existing /admin/choose-environment selector so it behaves like an enterprise context-selection surface: stable layout, immediate secondary actions, search for larger workspaces, localized search states, and no raw technical badge overflow.

Technical Context

  • Language/Version: PHP 8.4.15, Laravel 12.52.x.
  • Primary Dependencies: Filament 5.2.x, Livewire 4.1.x, Tailwind CSS 4.x, Pest 4.x.
  • Storage: PostgreSQL; no schema change.
  • Testing: Pest Feature tests.
  • Constraints: No provider calls during render, no new persistence, no new route, no destructive action.

Implementation Approach

  1. Extend ChooseEnvironment with a local search property and a filtered collection helper.
  2. Replace the dynamic card grid with a single-column selector layout that fits the Filament simple-layout container.
  3. Move Add environment and Switch workspace into the top selector header as neutral secondary actions.
  4. Add a localized search box, result count, clear action, and no-results state.
  5. Hide the default raw managed_environment kind label while preserving non-default short labels such as DEV.
  6. Add stable test IDs for selector, filter, actions, result list, no-results state, and environment cards.
  7. Extend focused Feature coverage for markup and Livewire search behavior.

UI / Surface Guardrail Plan

  • Affected surface: UI-004 /admin/choose-environment.
  • Native vs custom: existing custom Blade in a Filament Page; no new component family.
  • Action hierarchy: environment card selection remains the primary page purpose; Add/Switch remain neutral secondary actions.
  • Status semantics: lifecycle status remains a badge; status colors are not applied to buttons.
  • Dangerous actions: none.

Validation Plan

  • Run cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Workspaces/ChooseEnvironmentPageTest.php --compact.
  • Run cd apps/platform && ./vendor/bin/sail pint app/Filament/Pages/ChooseEnvironment.php tests/Feature/Workspaces/ChooseEnvironmentPageTest.php.
  • Run git diff --check.
  • Verify in the in-app browser at /admin/choose-environment for current, mobile, and desktop viewports.

Deployment Impact

  • Env vars: none.
  • Migrations: none.
  • Queues / scheduler: none.
  • Storage: none.
  • Assets: no Filament asset registration; normal Vite/Tailwind build applies. filament:assets is not newly required by this change.