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

49 lines
2.6 KiB
Markdown

# 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.