Fix Review Pack generation UX + notifications #133

Merged
ahmido merged 13 commits from 109-review-pack-export into dev 2026-02-23 19:42:53 +00:00
Owner

Summary

  • Fixes misleading “queued / running in background” message when Review Pack generation request reuses an existing ready pack (fingerprint dedupe).
  • Improves resilience of Filament/Livewire interactions by ensuring the Livewire intercept shim applies after Livewire initializes.
  • Aligns Review Pack operation notifications with Ops-UX patterns (queued + completed notifications) and removes the old ReviewPackStatusNotification.

Key Changes

  • Review Pack generate action now:
    • Shows queued toast only when a new pack is actually created/queued.
    • Shows a “Review pack already available” success notification with a link when dedupe returns an existing pack.

Tests

  • vendor/bin/sail artisan test --compact tests/Feature/ReviewPack/ReviewPackGenerationTest.php
  • vendor/bin/sail artisan test --compact tests/Feature/ReviewPack/ReviewPackResourceTest.php
  • vendor/bin/sail artisan test --compact tests/Feature/LivewireInterceptShimTest.php

Notes

  • No global search behavior changes for ReviewPacks (still excluded).
  • Destructive actions remain confirmation-gated (->requiresConfirmation()).
## Summary - Fixes misleading “queued / running in background” message when Review Pack generation request reuses an existing ready pack (fingerprint dedupe). - Improves resilience of Filament/Livewire interactions by ensuring the Livewire intercept shim applies after Livewire initializes. - Aligns Review Pack operation notifications with Ops-UX patterns (queued + completed notifications) and removes the old ReviewPackStatusNotification. ## Key Changes - Review Pack generate action now: - Shows queued toast only when a new pack is actually created/queued. - Shows a “Review pack already available” success notification with a link when dedupe returns an existing pack. ## Tests - `vendor/bin/sail artisan test --compact tests/Feature/ReviewPack/ReviewPackGenerationTest.php` - `vendor/bin/sail artisan test --compact tests/Feature/ReviewPack/ReviewPackResourceTest.php` - `vendor/bin/sail artisan test --compact tests/Feature/LivewireInterceptShimTest.php` ## Notes - No global search behavior changes for ReviewPacks (still excluded). - Destructive actions remain confirmation-gated (`->requiresConfirmation()`).
ahmido added 12 commits 2026-02-23 17:49:10 +00:00
36 tasks across 8 phases organized by user story (US1-US5).
Phase 1-2: Setup + Foundational (migration, model, enums, config, badge).
Phase 3: US1 Generate+Download (P1 MVP) - service, job, controller, resource, widget.
Phase 4: US2 Fingerprint Dedupe (P2) - dedupe edge case tests.
Phase 5: US3 RBAC Enforcement (P2) - policy + authorization tests.
Phase 6: US4 Retention+Prune (P3) - command, schedule, AlertRule cleanup.
Phase 7: US5 Schedule Wiring (P3) - scan dispatch verification.
Phase 8: Polish - pint, test suite, e2e validation.
- ReviewPackService: generate, fingerprint dedupe, signed download URL
- GenerateReviewPackJob: 12-step pipeline, ZIP assembly, failure handling
- ReviewPackDownloadController: signed URL streaming with SHA-256 header
- ReviewPackResource: list/view pages, generate/expire/download actions
- TenantReviewPackCard: dashboard widget with 5 display states
- ReviewPackPolicy: RBAC via REVIEW_PACK_VIEW/MANAGE capabilities
- PruneReviewPacksCommand: retention automation + hard-delete option
- ReviewPackStatusNotification: database channel, ready/failed payloads
- Schedule: daily prune + entra admin roles, posture:dispatch deferred
- AlertRuleResource: hide sla_due from dropdown (backward compat kept)
- 59 passing tests across 7 test files (1 skipped: posture deferred)
- All 36 tasks completed per tasks.md
- ListRowMoreMenu: exempt (only 2 primary row actions)
- ListBulkMoreGroup: exempt (no bulk operations)
- DetailHeader: satisfied (Download + Regenerate actions)
- Move ReviewPackResource from 'Monitoring' to new 'Reporting' nav group
- Fix duplicate 'Inventory' sidebar entries: set $navigationGroup + $navigationLabel on InventoryCluster so it renders inside 'Inventory' group as 'Items'
- Change header CTA button color from warning to primary on ListInventoryItems and ListEntraGroups
Adds label 'Review pack generation' and expected duration (60s) for
the tenant.review_pack.generate operation type so it no longer shows
as 'Unknown operation' in the Operations UI.
ahmido added 1 commit 2026-02-23 19:39:23 +00:00
ahmido merged commit 9f5c99317b into dev 2026-02-23 19:42:53 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ahmido/TenantAtlas#133
No description provided.