# 02 Project Notification Settings UI Implementation guide: [Ticket Implementation Guide](../ticket-implementation-guide.md) ## Branch `codex/v0.5-webhook-notification/02-project-notification-settings-ui` Start this branch from `codex/v0.5-webhook-notification/01-notification-action-foundation`. ## Goal Add project settings UI for managing notification actions. ## Requirements - Add a project settings page at `projects/{project}/settings/notifications`. - Add a settings navigation link alongside general, board, ticket, and repository settings. - Project admins can list, create, update, enable, disable, and delete project notification actions. - The create and update forms support: - name - event type - channel - enabled flag - delivery URL - message template for Discord - Existing secret URLs stay hidden after save. - Updating an action only replaces the secret URL when a new URL is submitted. - Show the fixed template variables in the UI: `$url`, `$ticket_key`, `$ticket_title`, `$project_name`, `$status_from`, `$status_to`, and `$actor_name`. - Add frontend types under `resources/js/types`. - Generate Wayfinder output for the new routes and controller methods. ## Acceptance Criteria - Project admins can manage notification actions from project settings. - Non-admin project users cannot access the notification settings page or mutate notification actions. - Validation errors are shown next to the relevant form fields. - Saved notification actions show their name, event type, channel, enabled state, and created or updated date without exposing the secret URL. - Existing project settings pages continue to work. ## Tests - Feature tests for page access, create, update, enable/disable, delete, validation, and authorization. - Inertia prop assertions for the notification action list and template variable metadata. - Regression test that secret URLs are not rendered back in page props. ## Verification - `php artisan wayfinder:generate --with-form --no-interaction` - `vendor/bin/pint --dirty --format agent` - `php artisan test --compact tests/Feature/Projects` - `npm run types:check` - `git diff --check` ## Commit And Push - Commit only this ticket's changes. - Push with `git push origin codex/v0.5-webhook-notification/02-project-notification-settings-ui`. ## Out of Scope - Ticket status changed event dispatch - Actual webhook or Discord HTTP delivery - Delivery attempt screens - User bell notifications - Unread counters - Slack, Teams, email, or other channels - Incoming webhooks - API or MCP management endpoints