G&M Maintenance Portal - Session Notes (Session 3)
Date: February 5, 2026
What We Worked On
- Fixed admin client page not showing site-linked reports (Chandler Conway bug)
- Fixed save button staying "dirty" after saving a report
- Disabled "Pull Before" button after previous plugin versions are already populated to prevent accidental overwrites
- Attempted database backup restore (no backups existed yet — cron hasn't fired its first run)
Key Decisions Made
- Skip data restore for the accidentally overwritten plugin versions — fix the UI to prevent it going forward
- Replace
redirect()withrevalidatePath()in the report save server action sosetIsDirty(false)can execute - "Pull Before" buttons show "Pulled ✓" when disabled, manual version editing still allowed
Changes Made
3 commits pushed to main:
-
b4671f5- Fix: Admin client page now shows site-linked reports (1 file) -frontend/app/admin/clients/[id]/page.tsx— query now includessites.reports, combines with direct reports intoallReports -
43813a8- Fix: Save button dirty state not clearing after save (1 file) -frontend/app/admin/reports/[id]/page.tsx— replacedredirect()withrevalidatePath()so the handler returns normally andsetIsDirty(false)runs -
d5e15cf- Fix: Disable Pull Before button after previous versions are populated (1 file) -frontend/components/Admin/PluginSection.tsx—hasPreviousDatacheck disables both SSH "Pull Before" and API "Fetch Before" buttons
Still Pending
- Database backups haven't fired yet — cron is set for 9 AM UTC daily. First backup should appear tomorrow. Verify it works.
- Chandler Conway's plugin previousVersion data was overwritten by accidental re-pull. Eric may need to manually fix the values.
package-lock.jsonhas an unstaged change from swc patching — not committed, harmless.
Technical Notes
redirect()in a Next.js Server Action throws internally (NEXT_REDIRECT error). Any code after it in the calling client function won't execute. UserevalidatePath()instead when you need the function to return normally.- Admin client page query had
where: { siteId: null }which excluded reports linked to sites. Now fetches bothclient.reports(direct) andclient.sites[].reports(site-linked) and merges them. - No database backups exist yet in Vercel Blob. The
backups/prefix is empty. Cron schedule is daily 9 AM UTC.
Session saved Feb 5, 2026 ~5:30 PM CST