mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
fix: .gitignore
This commit is contained in:
@@ -60,3 +60,4 @@ certificates
|
|||||||
.codex
|
.codex
|
||||||
/docs
|
/docs
|
||||||
.worktrees
|
.worktrees
|
||||||
|
.superpowers
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
# Task 4 Report — StepDbSettings Rewrite
|
|
||||||
|
|
||||||
## Status: DONE_WITH_CONCERNS
|
|
||||||
|
|
||||||
## Commit: d309faf
|
|
||||||
|
|
||||||
## TSC Summary
|
|
||||||
Zero new errors introduced in `step-db-settings.tsx`. All pre-existing errors in the repo are unrelated (in `form.tsx`, `toaster.tsx`, `channel-form.tsx`, `database-form.action.ts`, etc.).
|
|
||||||
|
|
||||||
## What Was Done
|
|
||||||
Replaced the placeholder implementation of `StepDbSettings` (~91 lines, only retention days + apply-to-all switch) with the full three-level phase navigation component (~1050 lines):
|
|
||||||
|
|
||||||
- **Phase: grid** — lists all project databases with "Configured" badge when any section is set
|
|
||||||
- **Phase: db** — shows 4 section cards (Retention, Scheduling, Notifications, Storage) with per-section ✓ indicators and "Apply to all" button
|
|
||||||
- **Phase: section** — renders the appropriate inline section form
|
|
||||||
|
|
||||||
All 4 sections implemented inline (no dashboard component imports):
|
|
||||||
- `RetentionSection`: count / days / GFS with storage impact estimate
|
|
||||||
- `SchedulingSection`: delegates to `BackupScheduleSelector`
|
|
||||||
- `NotificationsSection`: multi-policy, `MultiSelect` for events, empty-state when no notifiers
|
|
||||||
- `StorageSection`: multi-policy, empty-state when no storages
|
|
||||||
|
|
||||||
Save flow: calls `applyOnboardingDbSettingsAction` → on success calls `updateDbSettings(dbId, patch)` → toast → phase back to db.
|
|
||||||
|
|
||||||
"Apply to all": loops over other DB IDs, calls action with `section: "all"` for each, batch-updates context, shows toast, navigates to grid.
|
|
||||||
|
|
||||||
## Concerns
|
|
||||||
1. **Type cast on `notificationPolicies`**: `OnboardingNotificationPolicy.eventKinds` is typed as `string[]` but the action's Zod schema uses a specific enum union. Two `as any` casts were added at action call sites to bridge the mismatch. The runtime is safe (Zod validates and rejects invalid values), but the type inconsistency between `types/index.ts` and `apply-db-settings.action.ts` should be resolved by tightening `OnboardingNotificationPolicy.eventKinds` to the same enum type as the action's `EventKindSchema`.
|
|
||||||
|
|
||||||
2. **No browser test performed**: manual verification steps from the brief (Steps 3–5) were not executed as they require a running dev server and live DB. The component logic follows the brief exactly.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Hotfix Follow-up Commit: a6e528d
|
|
||||||
|
|
||||||
Fixed two critical issues:
|
|
||||||
|
|
||||||
1. **Wire `applyMutation.mutateAsync` everywhere** (5 sites):
|
|
||||||
- Replaced all direct `applyOnboardingDbSettingsAction(...)` calls with `await applyMutation.mutateAsync(...)`
|
|
||||||
- Removed `if (result?.data?.success)` guards since mutateAsync throws on error
|
|
||||||
- Mutation's `onError: () => toast.error(...)` handles failures
|
|
||||||
|
|
||||||
2. **Stabilize list keys**:
|
|
||||||
- NotificationsSection: changed `key={index}` to `key={policy.channelId || index}`
|
|
||||||
- StorageSection: changed `key={index}` to `key={policy.channelId || index}`
|
|
||||||
|
|
||||||
TypeScript: Zero new errors in target file. Pre-existing errors in form.tsx, toaster.tsx, channel-form.tsx (unrelated).
|
|
||||||
Reference in New Issue
Block a user