Files
KanbanGit/docs/releases/v0.5-webhook-notification/02-project-notification-settings-ui.md
T

70 lines
2.5 KiB
Markdown

# 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