Skip to content

feat(web): ProjectDetail soft-delete banner for staff (#113)#140

Merged
themightychris merged 1 commit into
developfrom
feat/project-detail-banner-more
Jun 27, 2026
Merged

feat(web): ProjectDetail soft-delete banner for staff (#113)#140
themightychris merged 1 commit into
developfrom
feat/project-detail-banner-more

Conversation

@themightychris

Copy link
Copy Markdown
Member

Part of #113. The ProjectDetail spec declares a staff-only soft-delete banner with a Restore action, but the SPA couldn't render it — the project response didn't expose deletedAt.

What

  • API: expose deletedAt on the project detail response (serializers/project.ts) + spec (api/projects.md). null for active projects; non-null only when staff fetch a soft-deleted one (non-staff get 404).
  • Web: yellow banner across the top with a Restore button (reuses the existing action runner + project refetch), gated on deletedAt + staff accountLevel.
  • Tests: banner shows for staff+deleted, absent for active (ProjectDetail 10/10). API 45/45, type-check + lint clean.

Scope note

The "More ▼" header dropdown (the other ProjectDetail item in #113) is a separate follow-up — pure UI refactor, no API dependency, and it has a small design call (which actions to consolidate + Delete confirm). Kept out of this PR to keep it focused.

🤖 Generated with Claude Code

project-detail.md declares a staff-only banner across the top of a soft-deleted
project with a Restore action; the SPA never rendered it because the project
response didn't carry deletedAt.

- Expose `deletedAt` on the project detail response (serializer + spec
  api/projects.md). Null for active projects; non-null only when staff fetch a
  soft-deleted one (non-staff get 404).
- Render the yellow banner with a Restore button (reuses the existing action
  runner + project refetch). Gated on deletedAt + staff accountLevel.
- Tests: banner shows for staff + deleted, absent for active.

The "More ▼" header dropdown (the other half of this ProjectDetail pairing in
#113) is a separate follow-up — it's a pure UI refactor with no API dependency.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@themightychris themightychris merged commit 8566982 into develop Jun 27, 2026
1 check passed
@themightychris themightychris deleted the feat/project-detail-banner-more branch June 27, 2026 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant